1 ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ. ПОДПРОГРАММЫ И МОДУЛИ ПРИ РЕШЕНИИ ЗАДАЧ ХИМИЧЕСКОЙ ТЕХНОЛОГИИ. Лекция 2. Подпрограммы План 1. Процедуры и функции. 2. Описание подпрограмм. 3. Параметры подпрограмм.
2 1. Процедуры и функции. Подпрограммы и модули представляют собой самостоятельные программные единицы, имеющие имя и параметры. Модули состоят из подпрограмм и используются для выполнений определенных действий, стандартных или нестандартных. В начале программы делается сообщение об использовании модуля служебным словом USES. Подпрограммы разделяются на процедуры и функции. Результатом функции является одно значение, которое присваивается ее имени. Процедура содержит два и более результатов.
3 В общем случае подпрограммы представляют собой описание некоторых действий, выполнение которых происходит в главной программе после указания имени подпрограммы и параметров. С использованием подпрограмм любой алгоритм может быть разбит на определенное число частей. Во-первых, это есть средство экономии памяти компьютера при решении сложных задач. Во - вторых – обеспечивает структурированность алгоритма. Третья причина использования технологии программирования, основанной на модулях и процедурах, заключается в специфике химико-технологического производства.
4 Любой химико-технологический процесс состоит из аппаратов химического превращения или реакторов, аппаратов разделения и теплообмена. Поэтому расчет химико- технологического производства заключается в определении параметров потоков в этих аппаратов с разными значениями входных переменных. 2. Описание подпрограммы заключается в указании ее заголовка и содержания. В заголовке процедуры определяются имя и параметры, а в заголовке функции дополнительно указывается тип результата, например integer. За заголовком следует содержание подпрограммы, которое подобно главной программе состоит из блока описания и блока выполняемых операторов.
5 Заголовок подпрограммы имеет вид: FUNCTION {имя} { список формальных параметров }: {тип}; PROCEDURE {имя}{список формальных параметров}; Список формальных параметров представляется через запятую по порядку следования
6
7 Program Pro1; var k,a,x:real; function lg(x:real):real; begin lg:=ln(x)/ln(10) end; function pow(a,x:real):real; begin pow:=exp(xln(a)) end;
8 BEGIN readln(a,x); k:=lg(asqr(x)sqrt(x)/(3+x))+ 2E3pow(1+2x,1-sqrt(a)); writeln(k=, k:10) END.
9 Для обращения к функции Pow мы указали ее имя и список параметров при выводе данных. Параметры функции в момент обращения к ней по имени – это фактические параметры. Они автоматически заменяют формальные параметры A и X по порядку следования. Количество и тип формальных и фактических параметров строго соответствуют друг другу.
10 Процедуры используются в том случае, если подпрограмма имеет несколько результатов вычислений или результат является многомерной величиной(массивом). Описание процедуры имеет вид: Procedure (формальные параметры); label ; const ; type ; var Begin End; Процедура помещается в основной программе в разделе описаний VAR.
11 Общая структура Программы, содержащей Процедуры и Функции Program PRO; Заголовок Главной Программы Var Procedure p1(…….); Процедуры Var Begin……. End; Function f1(……): real; Функции Var Begin……… End; Begin ………..End. Главная программа
12 3. Параметры подпрограмм. Различают глобальные и локальные параметры. Глобальные параметры являются общими на две или более программных единиц. Локальные параметры изменяют свои значения только внутри данной программной единицы.
13 PROGRAM Proc; VAR a, d, x, y:real; f1, f2:text; PROCEDURE ff( VAR x,y:real); BEGIN y:=x+1; END; BEGIN assign(f2,'agg.rez'); reset(f2); read(f2,a,d); assign(f1,'q'); rewrite(f1); write(f1,a:4:1,d:4:1); ff(a,d); write(a,d); close(f1); END.
14 Как видно из примера, описание параметров в блоке VAR означает, что данная группа параметров является глобальными для входа и выхода значений(x,y). При отсутствии в заголовке служебного слова VAR значения параметров передаются внутрь процедуры, но не передаются из нее в главную программу(a,d). Для обращения к процедуре ff мы указали ее имя. Числа в скобках - это фактические параметры. Они автоматически заменяют формальные параметры по порядку следования. Количество и тип формальных и фактических параметров строго соответствуют друг другу. При отсутствии VAR в заголовке значения a и d оказываются неопределенными.
15
16 Составить подпрограмму для решения квадратного уравнения Program Pro2; var procedure sq( a,b,c:real;var x1,x2 : real ); var d:real; begin D:=B*B - 4*A*C; x1:=(-b+SQRT(D))/(2*a); x2:=(-b-SQRT(D))/(2*a); end;
17 y1,y2:real; begin sq (5.7,-1.2,-8.3,y1,y2); write(y1,y2); end.
18 Описание параметров в блоке VAR означает, что данная группа параметров является глобальными для входных значений(x1,x2) и выходных (y1,y2). При отсутствии в заголовке служебного слова VAR значения параметров передаются внутрь процедуры, но не передаются из нее в главную программу(a,b,c). Для обращения к процедуре sq мы просто указали ее имя. Числа в скобках (5.7,-1.2,-8.3) - это фактические параметры. Они заменяют формальные параметры при указании имени процедуры по порядку следования. Количество и тип формальных и фактических параметров строго соответствуют друг другу.