Лабораторная работа № 4
Массивы.
Процедуры и функции.
Цель работы: научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научится решать задачи на использование массивов и подпрограмм.
Общие сведения.
Массив - это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс.
В практике программирования часто складываются ситуации, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких местах программы. Для избавления от столь нерациональной траты времени была предложена концепция подпрограммы.
Подпрограмма – именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке Free Pascal существуют два вида подпрограмм: процедуры и функции. Главное отличие процедуры от функции заключается в том, что результатом исполнения операторов, составляющих тело функции, всегда является некоторое значение, поэтому функцию можно использовать непосредственно в выражениях, наряду с переменными и константами.
Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, правила описания подпрограм [см. Приложения].
Пример Найти сумму положительных элементов в массиве.
Этапы решения задачи:
1. Алгоритм решения довольно прост - в цикле будем "пробегать" массив, сравнивая его ячейки с 0 и суммировать, если они >0.
2. Составим блок-схему программы
Уточним из каких блоков состоит блок"Суммирование положительных ячеек"
Содержание этих блоков простое, поэтому не стоит их уточнять.
3. Напишем программу на языке Паскаль
program example;
type
Tarray = array[1..100] of integer;
Var v: Tarray;
N,i,s:integer;
Procedure vvod_data(var m:Tarray;n:integer);
Var i:integer;
Begin
Writeln('Введите ',n,' чисел через пробел');
For i:= 1 to n do read(m[i]);
End;
Function summ(m:TArray):integer;
Var s:integer;
Begin
S:=0;
For i:= 1 to n do if m[i]>0 then s:= s+m[i];
Summ:=s;
End;
begin
write('Введите размерность массива N= '); readln(n);
vvod_Data(v,n);
s:= summ(v);
writeln('Сумма= ',s);
end.
Задания
Вариант 1
1. Вводится массив из N целых чисел. Определить, содержит ли последовательность хотя бы одно число, сумма цифр в котором равна их количеству. Создать подпрограмму, которая возвращает сумму и количество цифр в числе.
Вариант 2
1. Вводится массив из N целых положительных чисел. Определить, в каком из чисел наибольшая сумма всех его цифр. Для подсчета суммы цифр числа использовать подпрограмму.
Вариант 3
1. Вводится матрица из NхМ целых положительных чисел. Найти число с наибольшим количеством нулей. Составить подпрограмму для подсчета нулей в числе.
Вариант 4
1. Вводится массив из N целых положительных чисел. Определить наименьшую цифру у каждого числа. Написать подпрограмму, которая для заданного числа возвращает в нем наименьшую цифру.
Вариант 5
1. Вводится матрица из NхМ целых положительных чисел. Заменить все простые числа матрицы на 0. Определение простых чисел выполнить в подпрограмме.
Контрольные вопросы
1. Каким образом определяются переменные типа массив (одномерный и двумерный)?
2. Как осуществляется доступ к отдельному элементу одномерного и двумерного массива?
3. Каким образом выводятся элементы массива на экран?
4. Для чего нужны в программе процедуры и функции?
5. В чем отличие между процедурой и функцией?
6. Чем отличаются формальные и фактические параметры?
7. Чем отличаются параметры-значения и параметры-переменные?
8. Как объявляются глобальные и локальные переменные? Каково правило видимости этих переменных?
Приложение 1.
Подпрограммы
Общие сведения о подпрограммах.