Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика метод указания.pdf
Скачиваний:
80
Добавлен:
26.07.2016
Размер:
951.4 Кб
Скачать

процедура ввода элементов массива; процедура поиска максимального элемента и определение его номера.

Для передачи массива в процедуру введем пользовательский тип mas.

program PP; type

mas=array[1..100] of integer; {пользовательский тип} var { глобальные переменные }

a:mas;

max:real;

n,max,kmax:integer;

procedure input_mas(n:integer ; var a:mas ); var i:integer; {локальная переменная} begin

for i:=1 to n do readln(a[ i ]); end;

procedure max_m(n:integer; a:mas; var max,kmax:integer ); var i:integer;

begin max:=a[1];kmax:=1; for i:=1 to n do

if a[i]>max then

begin max:=a[i]; kmax:=i; end; end;

begin

writeln(‘ Введите n<=100’) ; readln( n ); writeln (‘ Введите элементы массива ‘); input_mas(n,a);

max_m(n,a,max,kmax ); writeln(‘max=’,max,‘kmax=’,kmax); readln;

end.

14.4. Функции

Если результатом подпрограммы является только одно значение, то имеет смысл оформить такую подпрограмму в виде функции.

Первая строка любой функции:

function <имя >(<список формальных параметров> ):<тип>;

<список формальных параметров> - список имен переменных с указанием их типа, передающих информацию в функцию;

92

<имя> - возвращает результат в основную программу; <тип> - тип возвращаемого результата.

Обращение из основной программы к функции возможно в структуре какого либо оператора, например оператора присваивания:

<переменная>:= <имя> (список фактических параметров);

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

Задача.

Составить программу вычисления n! с использованием функции. n! = 1* 2 * 3 * …* n

program factorial;

{описательная часть основной программы} var

n,k:integer;

function fun(k:integer):integer; {описательная часть подпрограммы} var

p,i:integer; begin

{исполнительная часть подпрограммы} p:=1;

for i:=1 to k do p:=p*i; fun:=p;

end;

{ исполнительная часть основной программы } begin

writeln('введите n'); readln(n);

for k: = 1 to n do writeln(fun(k)); end.

n, k - глобальные переменные. p, i - локальные переменные.

fun - имя функции, возвращает результат в основную программу.

Имя функции в теле функции в операторах присваивания может стоять только слева от знака «:=» , поэтому использована дополнительная переменная p для подсчета произведения.

93

Самоконтроль

1.В каких случаях прибегают к построению подпрограмм?

2.В каком месте программы располагаются функции или процедуры?

3.Что такое процедура?

4.Какова структура процедуры?

5.Как передается информация в процедуру?

6.Каким образом возвращаются результаты работы процедуры в основную программу?

7.Какое соответствие должно быть между формальными и фактическими параметрами?

8.Какие переменные называются глобальными? Время существования глобальных переменных?

9.Какие переменные называются локальными? Время существования локальных переменных?

10.Когда используют директиву forward?

11.В каких случаях целесообразно прибегать к построению функций?

12.Как передается информация в функцию?

13.Каким образом возвращается результат работы функции в основную программу?

Задание

ответить на вопросы самоконтроля;

выполнить практическое задание №8, используя пример программы с использованием подпрограмм. Задание выбрать из таблицы по номеру варианта (Приложение1).

Пример программы с использованием подпрограмм

Задача.

1. Формулировка задачи:

Задан двумерный массив целых чисел. Определить количество четных чисел в массиве. Составим: процедуру ввода элементов массива; функцию подсчета количества четных чисел; процедуру вывода двумерного массива в виде матрицы.

2.

Таблица идентификаторов

 

 

 

 

 

 

 

 

Наименование переменной

Обозначения в программе

 

 

1

Имя массива

a

 

 

2

Количество строк

n

 

 

3

Количество столбцов

m

 

 

4

Индексы массива

I,j

3.

Листинг программы.

 

program pp_1; type

mas=array[1..10,1..10] of integer; var

94

Соседние файлы в предмете Информатика