2.6 Контроль ошибок при работе с массивами
Самой распространенной ошибкой при работе с массивами является выход индексов за допустимые диапазоны. Для исключения таких ошибок в среде Turbo Pascal предусмотрена директива компилятора {R}. При указании в программе директивы {$R+} все массивы проверяются на предмет нахождения их внутри указанных границ. Если обнаруживается нарушение диапазона, программа завершает свою работу, выводя сообщение об ошибке выполнения. Если директива не используется (этот режим принят по умолчанию), выход индекса за пределы допустимого диапазона не приведет к прекращению работы программы. Но при обращении к ’’несуществующему’’ элементу массива даст неопределенный результат, что может сделать ход дальнейшего выполнения программы непредсказуемым.
Следует заметить, что применение директивы {R+} несколько замедляет выполнение программы и увеличивает ее размер. Поэтому рекомендуется использовать эту директиву при отладке, а затем ее удалить из текста программы.
3. РЕШЕНИЕ ЗАДАЧ - ПРИМЕРОВ
В качестве примера рассмотрим решение двух задач с одномерным и двухмерным массивами.
Пример 1. Создать одномерный вещественный массив из 25 элементов. Определить максимальный и минимальный элементы массива и поменять их местами. Полученный результат вывести на экран.
Текст программы на языке Turbo Pascal:
PROGRAM MAS;
VAR
M: ARRAY [1.. 25] OF REAL; { Вещественный массив }
MAX, MIN, MN: REAL;
I, K, N: INTEGER; { Вспомогательные переменные }
BEGIN
{ Ввод вещественного массива из 25 элементов }
FOR I: = 1 TO 25 DO READ ( M [I] );
{ Переменным MAX и MIN присваиваем значение первого элемента массива }
MAX: = M [1]; K: = 1;
MIN: = M [1]; N: = 1;
{ Определяем максимальный и минимальный элементы массива и их индексы}
FOR I:= 2 TO 25 DO
BEGIN
IF M [I] > MAX THEN
BEGIN
MAX: = M [I];
K: = I;
END;
IF M[I] < MIN THEN
BEGIN
MIN: = M [I];
N: = I;
END;
END;
{ Меняем местами максимальный и минимальный элементы }
MN: = M [K];
M [K]: = M [N];
M [N]: = MN;
{ Вывод полученного массива на экран }
FOR I: = 1 TO 25 DO WRITELN ( M[I] );
END.
Пример 2. Создать целочисленную матрицу А 10х8. Сформировать одномерный массив В, который содержит суммы положительных элементов каждой строки матрицы А и вывести его на экран.
Текст программы на языке Turbo Pascal:
PROGRAM PRIM;
VAR
A: ARRAY [1.. 10, 1.. 8] OF INTEGER;
B: ARRAY [1.. 10] OF INTEGER;
I, J, S: INTEGER;
BEGIN
{ Ввод целочисленной матрицы А 10х8 }
FOR I:= 1 TO 10 DO
FOR J: = 1 TO 8 DO
READ ( A[ I, J] );
{ Вычисление суммы положительных элементов каждой строки матрицы А и формирование массива В }
FOR I: = 1 TO 10 DO
BEGIN
S: = 0;
FOR J: = 1 TO 8 DO
IF A [ I, J ] > 0 THEN S: = S + A [ I, J ];
B [ I ]: = S;
END;
{ Вывод сформированного массива В на экран }
FOR I: = 1 TO 10 DO WRITELN ( B [ I ] );
END.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Для выполнения работы необходимо:
а) повторить правила техники безопасности при работе с вы-числительной техникой;
б) изучить раздел “Массивы” лекционного курса, а также тео-ретическую часть настоящих методических указаний;
в) получить у преподавателя вариант задания (образцы зада-ний приведены в приложении);
г) в соответствии с заданием написать программу на языке Turbo Pascal;
д) ввести программу в компьютер, отладить и результаты вы-полнения показать преподавателю;
е) в соответствии с требованиями, приведенными в разделе 5, оформить отчет по лабораторной работе;
ж) защитить лабораторную работу, продемонстрировав препо-давателю:
1) отчет по лабораторной работе;
2) умение решать аналогичные задачи;
3) теоретические знания из раздела “Массивы”.
При подготовке к защите для самопроверки рекомендуется ответить на контрольные вопросы, приведенные в разделе 6.
5. ТРЕБОВАНИЯ К ОТЧЕТУ
Отчет по лабораторной работе должен содержать:
а) титульный лист;
б) условие задания;
в) текст программы на языке Turbo Pascal.
6. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое массив данных?
2. Какими способами можно описать массивы?
3. Какой максимальный размер может иметь массив?
4. Как происходит доступ к отдельным элементам массива?
5. Могут ли быть многомерные массивы?
6. Какие могут быть типы элементов массивов?
7. Какие могут быть типы индексов массивов?
8. Можно ли всем элементам одного массива присвоить значения элементов другого массива?
9. Как происходит ввод-вывод одномерных и многомерных массивов?
10. Какие действия можно производить с отдельными элементами массивов?
11. Чем отличаются массивы данных от записей?
12. Чем отличаются массивы от других структурированных типов данных?
13. Как задается типизированная константа-массив?
14. Как хранятся массивы в памяти компьютера?
15. Можно ли сравнивать массивы?
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Фаронов В.В. Turbo Pascal 7.0. - М.: Нолидж, 2007. - 616 с.
2. Мануйлов В.Г. Разработка программного обеспечения на Паскале. - М.: ПРИОР, 1996. - 238 с.
3. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0. - К.: ЮНИОР, 1997. - 496 с.
4. Зуев Е.А. Практическое программирование. - М.: ПРИОР, 2005. - 336 с.
5. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. - М.: ДИАЛОГ-МИФИ, 2006. - 288 с.
ПРИЛОЖЕНИЕ
ВАРИАНТЫ ЗАДАНИЙ НА ЛАБОРАТОРНУЮ РАБОТУ
Вариант 1
1. Создать одномерный целочисленный массив. Упорядочить
массив по возрастанию элементов.
2. Сформировать вещественную матрицу 4х6. Вычислить сумму и количество положительных элементов каждого столбца матрицы.
3. Найти произведение двух целочисленных матриц 3х3.
4. Вычислить У = (М1 + М2) / 2, где
М1 - максимальный элемент одномерного целочисленного массива из 10 элементов;
М2 - минимальный элемент одномерного целочисленного массива из 15 элементов.
Вариант 2
1. Создать одномерный вещественный массив. Определить количество отрицательных элементов массива.
2. Сформировать целочисленную матрицу 3х4. Найти максимальный элемент в каждой строке матрицы и выбрать наибольший из них.
3. Найти сумму двух вещественных матриц 5х5.
4. Вычислить А = В + С, где
В - произведение отрицательных элементов главной диагонали целочисленной матрицы 3х5;
C - сумма положительных элементов главной диагонали целочисленной матрицы 4х4.
Вариант 3
1. Создать символьный массив данных. Подсчитать количество вхождений в массив буквы А.
2. Сформировать вещественную матрицу 5х5. Упорядочить по возрастанию элементов каждой строки матрицы.
3. Ввести одномерный целочисленный массив. Найти, сколько в нем пар одинаковых соседних элементов.
4. Вычислить У = (S1 + S2) / (K1 + K2), где
S1,K1 - сумма и количество положительных элементов одномерного целочисленного массива из 15 элементов;
S2,K2 - сумма и количество отрицательных элементов вещественной матрицы 4х6.
Вариант 4
1. Создать одномерный целочисленный массив, заполненный случайным образом. Найти среднее арифметическое элементов массива.
2. Сформировать вещественную матрицу 5х5. Вычислить про-изведение отрицательных элементов, находящихся над и под главной диагональю матрицы.
3. Создать целочисленную матрицу 4х5. Сформировать одно-мерный массив, который содержит отрицательные элементы созданной матрицы.
4. Ввести одномерный вещественный массив из 20 элементов. Упорядочить массив по убыванию элементов.
Вариант 5
1. Создать одномерный вещественный массив. Определить максимальный элемент массива и его порядковый номер.
2. Вычислить у = x1 - x2 + x3 -...- x(n-1) + x(n).
3. Сформировать матрицу 5х5, состоящую из латинских букв. Отсортировать каждую строку матрицы в алфавитном порядке.
4. Ввести матрицу NхM, состоящую из вещественных чисел. Упорядочить матрицу по возрастанию элементов второго столбца.
Вариант 6
1. Создать символьный массив данных. Заменить все символы А массива на символы В.
2. Вычислить y = x(1)x(n) + x(2)x(n-1) +...+ x(n)x(1).
3. Оттранспонировать целочисленную матрицу 4х4.
4. Переписать подряд в массив B положительные и в массив C отрицательные элементы массива A.
Вариант 7
1. Создать одномерный целочисленный массив. Найти сумму отрицательных элементов массива и произведение положительных.
2. Сформировать одномерный вещественный массив. Распеча-тать его в обратном порядке.
3. Создать матрицу NхN, состоящую из букв латинского алфа-вита. Подсчитать количество гласных букв.
4. Ввести матрицу NхN, состоящую из целых чисел. Зеркально отразить ее элементы относительно главной диагонали. Вывести результат на экран.
Вариант 8
1. Создать одномерный вещественный массив. Найти разность между максимальным и минимальным элементами массива.
2. Вычислить сумму квадратов нечетных элементов целочисленного массива из 20 элементов.
3. Ввести матрицу NхM, состоящую из вещественных чисел. Сформировать одномерный массив, который содержит только положительные элементы матрицы и вывести его на экран.
4. Сформировать матрицу NхN, состоящую из целых чисел. Повернуть ее на 90 градусов по часовой стрелке и вывести результат на экран.
Вариант 9
1. Сформировать одномерный целочисленный массив. Определить, есть ли в данном массиве положительные элементы, кратные k.
2. Создать одномерный вещественный массив. Определить число положительных, отрицательных и нулевых элементов массива.
3. Ввести целочисленную квадратную матрицу NхN. Найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали.
4. Ввести с клавиатуры двухмерный массив размерностью 4х6, заполненный целыми числами. Сформировать одномерный массив, каждый элемент которого равен количеству элементов соответствующей строки, больших заданного числа n.
... (160,70,'ПАВЛОДАРСКИЙ КОЛЛЕДЖ УПРАВЛЕНИЯ'); outtextxy(170,165,'КУРСОВОЙ ПРОЕКТ ПО ДИСЦИПЛИНЕ: '); outtextxy(110,180,'"ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ"'); outtextxy(150,225,'TEMA: Проектирование баз данных «Справочник покупателя»'); outtextxy(465,345,'Разработал'); outtextxy(465,365,'Запорожец А.С.'); outtextxy(465,385,'Группа П-33); outtextxy(270,410,'2010 год’); Процедура ВВОD ...
... A do эквивалентно A.Day:=5; Begin Day:=5;I:=1954 End;A.I:=1954; Заключение В процессе написания работы мы ознакомились с: организацией ввода-вывода, а именно: - процедурами ввода; - процедурами вывода; - бесформатным выводом; - форматным выводом; - описанием одномерных массивов; - вводом – выводом одномерных массивов; - описанием двумерных массивов; - вводом – выводом двумерных ...
... работе в графическом режиме предназначается для обучения студентов младших курсов Санкт-Петербургской государственной Академии аэрокосмического приборостроения навыкам программирования, а именно работе в графическом режиме языка Turbo-Pascal . Для работы с настоящей программой необходимо знание стандарта языка, интегрированной среды и элементарным навыкам работы с персональным компьютером . ...
... write ('по дисциплине информатика и программирование'); gotoxy (17,12); write ('на тему создание прикладного программного обеспечения'); gotoxy (22,13); write ('в среде программирования Turbo Pascal'); gotoxy (45,15); write ('Работу выполнила: студентка'); gotoxy (45,16); write (‘_____ курса группы ______'); gotoxy ...
0 комментариев