Лабораторная работа №4. Обработка массивов

Цель работы

- изучение разделов “Операторы цикла”, “Структурированные типы данных. Массивы”;

- получение навыков в использовании операторов цикла;

- знакомство с основными типовыми алгоритмами обработки данных массива.

Краткие теоретические сведения

В программах наPascal допускается использование структурированных типов данных. В языке Pascal существуют следующие структурированные типы:

- тип-массив;

- тип-запись;

- тип-множество;

- тип-файл.

В частности, при решении задач обработки данных удобно использовать тип-массив.

Массив – это упорядоченный набор переменных одного типа. Массив содержит заданное число компонент, которое определяется при описании переменных типа массив в разделе описаний программы.

В Turbo-Pascal 7.0 допускается описывать переменные типа массив в разделе описания переменных:

Формат

Var

<идентификатор переменной>: array[тип индексов] of <тип компонент>;

Чтобы задать тип-массив, используется зарезервированное слово array, после которого следует в квадратных скобках указать тип индекса(индексов) компонент и далее после слова of - тип самих компонент.

Формат

Type

<имя типа>=array[тип индексов] of <тип компонент>;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Var

<идентификатор переменной>:<имя типа>;

Например, одномерный массив Лабораторная работа №4. Обработка массивов - student2.ru размерности Лабораторная работа №4. Обработка массивов - student2.ru c компонентами целого типа описывается в программе следующим образом.

. . . . . . . . . . . . . . . . . . . . . . . . . .

Type

Mas=array[1 . . 10] of integer;

. . . . . . . . . . . . . . . . . . . . . . . . . . .

Var

X:mas;

Двумерный массив Лабораторная работа №4. Обработка массивов - student2.ru размерности Лабораторная работа №4. Обработка массивов - student2.ru с компонентами вещественного типа описывается в программе следующим образом.

. . . . . . . . . . . . . . . . . . . . . . . . . . .

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.

Задан одномерный массив Лабораторная работа №4. Обработка массивов - student2.ru размерности Лабораторная работа №4. Обработка массивов - student2.ru . Найти сумму значений элементов массива Лабораторная работа №4. Обработка массивов - student2.ru .

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.

Задан одномерный массив Лабораторная работа №4. Обработка массивов - student2.ru размерности Лабораторная работа №4. Обработка массивов - student2.ru . Найти число положительных значений элементов массива Лабораторная работа №4. Обработка массивов - student2.ru .

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.

Задан одномерный массив Лабораторная работа №4. Обработка массивов - student2.ru размерности Лабораторная работа №4. Обработка массивов - student2.ru . Найти число нулевых значений элементов массива Лабораторная работа №4. Обработка массивов - student2.ru и вывести номера их на печать.

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. Контрольные вопросы

  1. Какие структурированные типы данных Вы знаете.
  2. Дайте определение массива.
  3. При решении, каких задач удобно использовать тип-массив.
  4. Расскажите, как можно описать в программе массив.
  5. Объясните работу оператора for …to …do. В каких ситуациях его рекомендуется использовать.

Наши рекомендации