Лабораторная работа №4. Обработка массивов
Цель работы
- изучение разделов “Операторы цикла”, “Структурированные типы данных. Массивы”;
- получение навыков в использовании операторов цикла;
- знакомство с основными типовыми алгоритмами обработки данных массива.
Краткие теоретические сведения
В программах наPascal допускается использование структурированных типов данных. В языке Pascal существуют следующие структурированные типы:
- тип-массив;
- тип-запись;
- тип-множество;
- тип-файл.
В частности, при решении задач обработки данных удобно использовать тип-массив.
Массив – это упорядоченный набор переменных одного типа. Массив содержит заданное число компонент, которое определяется при описании переменных типа массив в разделе описаний программы.
В Turbo-Pascal 7.0 допускается описывать переменные типа массив в разделе описания переменных:
Формат
Var
<идентификатор переменной>: array[тип индексов] of <тип компонент>;
Чтобы задать тип-массив, используется зарезервированное слово array, после которого следует в квадратных скобках указать тип индекса(индексов) компонент и далее после слова of - тип самих компонент.
Формат
Type
<имя типа>=array[тип индексов] of <тип компонент>;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Var
<идентификатор переменной>:<имя типа>;
Например, одномерный массив размерности c компонентами целого типа описывается в программе следующим образом.
. . . . . . . . . . . . . . . . . . . . . . . . . .
Type
Mas=array[1 . . 10] of integer;
. . . . . . . . . . . . . . . . . . . . . . . . . . .
Var
X:mas;
Двумерный массив размерности с компонентами вещественного типа описывается в программе следующим образом.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
Type
Mas2=array[1 . . 2, 1 . . 5] of real;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Var
Y:mas2;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Оператор цикла for …to …do организует выполнение оператора заранее известное число раз.
Формат
for <переменная цикла>:=s1 to s2 do <оператор>;
Оператор действует следующим образом. Первоначально вычисляются и запоминаются начальное s1 и конечное s2 значения переменной цикла. После чего <переменной цикла> присваивается начальное значение s1. Затем значение переменной цикла сравнивается с конечным значением s2. Пока переменная цикла меньше или равна конечному значению, выполняется оператор цикла, а в противном случае происходит выход из цикла.
Значение переменной цикла изменяется с постоянным шагом равным единице.
Если в теле цикла используется более одного оператора, то все операторы тела цикла ограничиваются операторными скобками begin . . . end;.
Использование переменных типа массив и операторов циклической структуры позволяет программно реализовать некоторые типовые процедуры данных. Например, поиск элементов массива, имеющих некоторое заданное свойство. В частности, к указанным процедурам относятся: поиск наименьшего или наибольшего значения элемента массива, определение числа положительных или отрицательных элементов в массиве, формирование массива из элементов исходного массива, имеющих требуемое свойство[1, 2, 3].
Пример программы на Pascal
Задача 5.
Задан одномерный массив размерности . Найти сумму значений элементов массива .
Program st5;
Var
n,i,s:integer;
x:array[1..6] of integer;
Begin
read(n);
for i:=1 to n do read(x[i]);
s:=0;
for i:=1 to n do s:=s+x[i];
writeln(‘ s=’,s);
End.
Задача 6.
Задан одномерный массив размерности . Найти число положительных значений элементов массива .
Program st6;
Var
n,i,k:integer;
x:array[1..4] of integer;
Begin
read(n);
for i:=1 to n do read(x[i]);
k:=0;
for i:=1 to n do
if x[i]>0 then k:=k+1;
writeln(‘ k=’,k);
End.
Задача 7.
Задан одномерный массив размерности . Найти число нулевых значений элементов массива и вывести номера их на печать.
Program st7;
Var
n,i,m:integer;
x:array[1..7] of integer;
Begin
read(n);
for i:=1 to n do read(x[i]);
m:=0;
for i:=1 to n do
if x[i]=0 then
Begin
m:=m+1;
writeln(‘номер нулевого элемента i=’,i);
end;
if m<>0 then writeln(‘ m=’,m)
else writeln(‘нулевых элементов в массиве нет’);
End.
4.3. Содержание задания
Задание 4
- разработать блок-схему алгоритма решения задачи в соответствии с вариантом задания (см. приложение Г, таб. Г.1);
- написать и отладить программу в соответствии с блок-схемой;
- поставить программу на выполнение, отладить и протестировать ее;
- сравнить результаты ручного и машинного счета;
- задачи для самостоятельного решения представлены в приложении Д.
Содержание отчета
- цель работы;
- задание;
- блок-схема алгоритма решения задачи;
- текст программы;
- результаты ручного и машинного счета;
- выводы.
4.5. Контрольные вопросы
- Какие структурированные типы данных Вы знаете.
- Дайте определение массива.
- При решении, каких задач удобно использовать тип-массив.
- Расскажите, как можно описать в программе массив.
- Объясните работу оператора for …to …do. В каких ситуациях его рекомендуется использовать.