ОРГАНИЗАЦИЯ ПОДПРОГРАММ.pptx
- Количество слайдов: 32
ОРГАНИЗАЦИЯ ПОДПРОГРАММ ПРОЦЕДУРЫ И ФУНКЦИИ
• процедуры • функции
Процедуры и их типизация процедура - это часть программы (подпрограмма), имеющая имя и предназначенная для решения некоторой частной задачи (подзадачи)
Cтандартные модули Для того чтобы использовать процедуры из модулей, необходимо вызвать нужный модуль в разделе USES. Система Turbo Pascal имеет модули PRINTER, DOS, CRT, GRAPH и др.
Встроенные процедуры CLRSCR - процедура очистки экрана. Результатом работы является стирание всей информации с экрана. Данная процедура является примером процедур без параметров; • GOTOXY(A, B) - процедура позиционирования курсора на экране дисплея в точку с координатами (A, B). A и B являются входными данными, следовательно, это пример процедуры с параметрами-значениями; •
Встроенные процедуры WRITE(A, B, . . . , Q) процедура вывода информации на экран дисплея. Данная процедура - процедура с параметрамизначениями. • READ(A, B, . . . , Q) процедуры ввода информации в ЭВМ. Процедура является примером процедур с параметрамипеременными. •
Процедуры пользователя • описание процедуры; • обращение к ней в основной программе. Вызов процедуры пользователя осуществляется так же, как и вызов встроенной процедуры - с помощью оператора вызова процедуры, имя которого совпадает с именем процедуры, с указанием списка параметров, если таковые имеются.
Процедуры без параметров Синтаксическая диаграмма заголовка процедуры без параметров
Примеры 1. Нарисовать три вертикальных квадрата 3 х3 с помощью символа "*"
program RISUNOK; procedure KVADRAT; begin writeln ('***'); writeln ('***'); end; begin clrscr; KVADRAT; writeln; KVADRAT; end.
2. Вычислить площадь четырехугольника ABCD. Зная длины сторон четырехугольника и длину одной из его диагоналей, например BD, можно найти по формуле Герона площади двух вспомогательных треугольников и сложить их. Отсюда следует, что в программе надо выделить процедуру вычисления площади треугольника:
program PLOCHAD_1; var AB, BC, CD, AD, BD, S 1, S, a, b, c, p: real; procedure GERON_1; begin p: =(a+b+c)/2; S: =sqrt(p*(p-a)*(p-b)*(p-c)); end; begin {*ОСНОВНАЯ ПРОГРАММА*} read (AB, BC, CD, AC); a: =AB; b: =AD; c: =BD; GERON_1; S 1: = S; a: =BC; b: =CD; c: =BD; GERON_1; S 1: = S 1+S; write (S 1); end. • Замечание. В данной программе все вычисления проходят с помощью переменных, объявленных в разделе VAR основной программы.
Фактические и формальные параметры • Формальные параметры – это переменные, фигурирующие в самой процедуре, а точнее в ее заголовке - после имени процедуры в скобках. Среди них имеются параметрыаргументы и параметры-результаты.
Фактические и формальные параметры • Фактические параметры задаются в вызове процедуры, т. е. они принадлежат основной части программы. В отличие от формальных параметров, которые всегда есть переменные, фактические параметры имеют вид: • параметры-аргументы - это константы, переменные, выражения; • параметры-результаты - это всегда переменные.
Локальные и глобальные переменные локальные переменные объявляются внутри блока процедуры. Два вида: • формальные параметры заголовка процедуры • вспомогательные переменные в разделе VAR процедуры. Эти переменные неизвестны основной программе и их использование в основном блоке вызовет сообщение об ошибке.
Локальные и глобальные переменные Глобальные переменные объявляются в разделе VAR основной программы. Глобальные переменные могут фигурировать не только в основной программе, но и в теле процедуры.
Процедуры с параметрамизначениями Синтаксическая диаграмма заголовка процедуры с параметрами значениями
Процедуры с параметрамипеременными Синтаксическая диаграмма заголовка процедуры с параметрами-переменными
Процедуры с параметрамипеременными параметрам-переменным должно предшествовать служебное слово VAR, пишется столько раз, сколько различных типов представлено в выходных данных. PROCEDURE PRIMER (VAR a, b, c: INTEGER; VAR m: CHAR; VAR i, j: REAL); При обращении к процедурам с параметрамипеременными фактическими параметрами должны являться имена переменных, которые описаны в основной программе.
Процедура вычисления суммы двух чисел program pr 1; Uses crt; Var a, b, s: real; a, b, s – глобальные переменные x, y, z – формальные параметры, локальные переменные procedure summa(x, y: real; var z: real); Параметры- Параметрзначения переменная begin z: =x+y; х y z end; begin clrscr; a b s writeln('введите a, b'); readln(a, b); summa(a, b, s); a, b, s – фактические параметры writeln(' сумма чисел ', a: 3: 1, ' и ', b: 3: 1, ' = ', s: 3: 1); readln; end.
Вычислить значение выражения a: =(3 n!+2 m!)/(m+n)! program pr 2; Uses crt; Var m, n, x, y, z: integer; a: real; procedure fact(d: integer; var q: integer); var i: integer; N!=1· 2· 3·…· N begin q: =1; for i: =1 to d do Для нахождения факториала какой q: =q*i; тип переменных целесообразно end; использовать? begin clrscr; writeln('введите значения n, m '); readln(n, m); fact(n, x); fact(m, y); fact(m+n, z); a: =(3*x+2*y)/z; writeln('значение выражения при m= ', m: 4, ' и n= ', n: 4, 'равно', a: 8: 3); readln; end.
Комбинированные процедуры Синтаксическая диаграмма заголовка комбинированной процедуры
Комбинированные процедуры PROCEDURE PRIMER (VAR a, b, c: INTEGER; m: CHAR; VAR i, j: REAL); – a, b, c, i, j - параметры-результаты (переменные); – m - параметр-аргумент (значение).
Пример program PLOCHAD_4; var AB, BC, CD, AC, S 1, S 2: real; procedure GERON_4 (a, b, c : real; var S: real); var P: real; begin P: = (a+b+c)/2; S: = sqrt (P*(P-a)*(P-b)*(P-c)); end; begin {*ОСНОВНАЯ ПРОГРАММА*} read (AB, BC, CD, AC); GERON_4 (AB, BC, AC, S 1); GERON_4 (AD, AC, CD, S 2); write ('S = ', S 1+S 2) end.
Обозначения глобальные переменные AB, BC, CD, AC, S 1, S 2; локальные переменные a, b, c, S, P; формальные параметры a, b, c, S; – параметры-значения (аргументы) a, b, c; – параметр-переменная (результат) S; фактические параметры AB, BC, CD, AC, S 1, S 2; – параметры-значения (аргументы) AB, BC, CD, AC; – параметры-переменные (результаты) S 1, S 2.
Функции пользователя. Рекурсивные функции Общая форма записи заголовка функции: FUNCTION имя (список параметров: тип): тип; или FUNCTION имя : тип;
Функции пользователя function POWER (FACTOR: real; EXP: integer): real; var COUNT: integer; TFACTOR: real; begin if EXP = 0 then POWER : = 1 else begin TFACTOR : = FACTOR; for COUNT : = 2 to ABS(EXP) do TFACTOR : = TFACTOR*FACTOR; if EXP<0 then POWER : = 1/TFACTOR else POWER : = TFACTOR end;
Функции пользователя • • Можно функцию вызывать следующим образом: F: =POWER(5. 25, 3); WRITELN("D = ", POWER(5. 25, -2): 5: 2); IF X > 2*POWER(6. 2, 3) THEN WRITE('ДА'); A: = POWER(X, 2) + POWER(X, 3) + POWER(X, 4).
Рекурсивные функции Функции называются рекурсивными, если в описании функции происходит вызов самой себя, а процесc обращения - рекурсией.
Рекурсивные функции function FACTORIAL(VALUE: integer): integer; begin i. F VALUE=0 then FACTORIAL: =1 else FACTORIAL: = VALUE*FACTORIAL(VALUE-1) end;
Пример program FINDFACTORIAL; var N: integer; begin writeln ('Введите число'); readln (N); if N<0 then writeln ('Нет факториала') else writeln ('Факториал ', N, ' равен ', FACTORIAL(N)) end.


