Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная_Паскаль_4.docx
Скачиваний:
3
Добавлен:
01.09.2019
Размер:
163.63 Кб
Скачать

Лабораторная работа № 4

Массивы.

Процедуры и функции.

Цель работы: научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научится решать задачи на использование массивов и подпрограмм.

Общие сведения.

Массив - это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс.

В практике программирования часто складываются ситуации, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких местах программы. Для избавления от столь нерациональной траты времени была предложена концепция подпрограммы.

Подпрограмма – именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке Free Pascal существуют два вида подпрограмм: процедуры и функции. Главное отличие процедуры от функции заключается в том, что результатом исполнения операторов, составляющих тело функции, всегда является некоторое значение, поэтому функцию можно использовать непосредственно в выражениях, наряду с переменными и константами.

Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, правила описания подпрограм [см. Приложения].

Пример Найти сумму положительных элементов в массиве. Этапы решения задачи:

  1. Алгоритм решения довольно прост - в цикле будем "пробегать" массив, сравнивая его ячейки с 0 и суммировать, если они >0.

  2. Составим блок-схему программы

Уточним из каких блоков состоит блок"Суммирование положительных ячеек"

Содержание этих блоков простое, поэтому не стоит их уточнять.

  1. Напишем программу на языке Паскаль

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.

Подпрограммы Общие сведения о подпрограммах. Локальные и глобальные переменные

Подпрограмма – это поименованный набор описаний и операторов, выполняющих определенную задачу. Информация, передаваемая в подпрограмму для обработки, называется параметрами, а результат вычислений – значениями. Обращение к подпрограмме называют вызовом. Перед вызовом подпрограмма должны быть обязательно описана в разделе описаний. Описание подпрограммы состоит из заголовка и тела. В заголовке объявляется имя подпрограммы и в круглых скобках ее параметры, если они есть (для функции необходимо сообщить тип возвращаемого ею результата). Тело подпрограммы следует за заголовком и состоит из описаний и исполняемых операторов.

Любая подпрограмма может содержать описание других подпрограмм. Константы, переменные, типы данных могут быть объявлены как в основной программе, так и в подпрограммах различной степени вложенности. Переменные, константы и типы, объявленные в основной программе до определения подпрограмм, называются глобальными, они доступны всем функциям и процедурам. Переменные, константы и типы, описанные в какой-либо подпрограмме, доступны только в ней и называются локальными.

Для правильного определения области действия идентификаторов (переменных) необходимо придерживаться следующих правил:

•каждая переменная, константа или тип должны быть описаны перед использованием;

•областью действия переменной, константы или типа является та подпрограмма, в которой они описаны;

•все имена в пределах подпрограммы, в которой они объявлены, должны быть уникальными и не должны совпадать с именем самой подпрограммы;

•одноименные локальные и глобальные переменные – это разные переменные, обращение к таким переменным в подпрограмме трактуется как обращение к локальным переменным (глобальные переменные недоступны);

•при обращении к подпрограмме доступны объекты, которые объявлены в ней и до ее описания.