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