Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Алгоритмы-процедуры и алгоритмы-функции




Вспомогательные алгоритмы. Процедуры и функции.

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

Любые подпрограммы до их использования в разделе операторов основной программы обязательно должны быть описаны в разделе описания процедур и функций. Этот раздел занимает определенное место между разделом описания переменных и разделом операторов. В Т.Р. и О.Р. раздел описания процедур и функций может размещаться между любыми описательными разделами, однако должно выполняться правило:

«Любое имя до его использования должно быть описано или определено.»

 

Процедуры и функции бывают стандартными или составленными пользователем. Стандартные процедуры и функции описаны в специальных файлах, называемых модулями и входящих в систему модулей среды.

Примеры стандартных процедур: Insert, Delete, Val, Str, Read, Readln, Write, Writeln…

Примеры стандартных функций: Sin, Cos, Ord, Chr, Pos, Length…

 

 

Формальные и фактические параметры.

 

При описании алгоритма-процедуры или функции за именем в скобках следуют формальные параметры. Они указывают место в подпрограмме, куда при ее выполнении должны быть подставлены фактические параметры. Формальные параметры, по отношению к которым описана процедура, можно разделить на две группы:

1. Параметры, играющие роль исходных данных

2. Параметры, играющие роль результата

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

1) Те из них, которые играют роль исходных данных, могут заменяться переменными, константами или математическими выражениями. Перед вызовом подпрограммы математическое выражение вначале вычисляется, полученный результат копируется во временную память, а затем передается подпрограмме. При этом параметры помещаются в стек один за другим, а затем выбираются из стека в обратной последовательности.

Стеком является структура данных типа LIFO(Last In First Out-последним вошел, первым вышел).

Если параметром является переменная или константа, то значение параметра сразу копируется из данных в стек. Таким образом, в этом случае значения фактического параметра находятся одновременно в двух местах:

· В сегменте данных (оригинал)

· В сегменте стека (копия)

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

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

Задача:

Вычислить функцию

 

max(a,b) + x, x<0

y= max(a+b,a-b)

max(a2,b2)

 

Решение:

Как видно из задания необходимо оформить подпрограмму для нахождения мaксимума, т.e. алгоритм-процедуру. Введем переменную М=max(z,p) и тогда дадим название алгоритму-процедуре max(z,p,М), где z,p и М – формальные параметры, но их роли разные: z,p – исходные, т.е. параметры-значения, а М - играет роль результата, т.е. параметр-переменная.

 

Алгоритм-процедура

 

 

 
 

 


- +

 

Используем этот алгоритм при описании основного алгоритма.

 


 
 

 


 

 

Ответы: max(a+b,a-b)=c

max(a2,b2)= d

max(a,b)=c

 
 


При описании основного алгоритма

обращение к процедуре записывают в блоке:

 

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

 

1) 2) 3)
z

p M
a+b a-b c
a2 b2 d
a b c

 


Таким образом, при записи алгоритма-процедуры в качестве параметров используются как параметры-значения (исходные данные), так и параметры-переменные (результаты).

 

 




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


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


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



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




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