Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции. Если одна подпрограмма использует другую, а та, в свою очередь, использует первую, возникает проблема размещения этих процедур в программе




Директива forward

Вложенные процедуры

Если одна подпрограмма использует другую, а та, в свою очередь, использует первую, возникает проблема размещения этих процедур в программе. Какую из них поместить в программе первой? В этих случаях прибегают к директиве forward.

Например:

procedure pp1(a,b:integer):forward;

procedure pp2(c: real); {Вторая процедура}

var x,y:integer;

begin

pp1(x, y);

end;

procedure pp1; {Первая процедура}

var z:real;

begin

pp2 (z);

end;

Задача.

Задан одномерный массив вещественных чисел. Найти максимальный элемент массива и определить его номер.

Составим программу с использованием двух процедур:

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

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

Для передачи массива в процедуру введем пользовательский тип 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.

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

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

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

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

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

<тип> – тип возвращаемого результата.

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

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

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

Задача.

Составить программу вычисления 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 для подсчета произведения.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 383; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.