Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М.

advertisement
Лекция 5
Языки и методы
программирования
Преподаватель – доцент каф. ИТиМПИ
Кузнецова Е.М.
Содержание
 Особенности процедуры
 Особенности функции
 Пример использования подпрограммы
 Процедура - это поименованное сложное действие,
которое представляет собой совокупность операторов,
вычисляющих некоторое число результатов в
зависимости от некоторого числа аргументов.
 Процедура или функция определяется в разделе
описаний основной программы или другой
процедуры(функции). Процедура(функция) имеет ту
же структуру, что и основная программа, т.е. состоит
из заголовка, описательной части и выполняемой
части.

PROCEDURE < имя процедуры > ( <список
формальных параметров >);

PROCEDURE PR1 ( A,B,C : INTEGER; VAR
S: REAL);
 Оператор процедуры служит для вызова
процедуры из основной программы или из
другой процедуры(функции).
<имя процедуры > (<список выражений>);
 PR1 (A,B,C,S);
Особенности процедуры:
 заголовок процедуры включает служебное
слово procedure;
 описание процедуры заканчивается точкой с
запятой. Все имена, описанные в программе до
процедуры, действуют во всей программе и в
любой ее подпрограмме (если они там не
описаны заново). Они называются
глобальными, в отличие от локальных имен,
описанных в процедуре и действующих лишь в
ней.
 Данные для обработки могут передаваться
процедуре через глобальные имена или через
аргументы процедуры. В процедуре каждый
аргумент имеет свое имя -формальный
параметр, описываемый в заголовке процедуры
по схеме


procedure <имя> (<список описаний
формальных параметров>)
<список имен>: <тип> или var <список имен>:
<тип>
Функция
 Функция - это подпрограмма, определяющая
единственное скалярное, вещественное или строковое
значение.
 Функция предназначена для вычисления какого-либо
одного значения и используется в выражениях
аналогично стандартным функциям.


FUNCTION < имя функции >(<список формальных
параметров>): <тип результата>;
FUNCTION PRF (A,B,C: INTEGER) : REAL;
Отличия функции от процедуры:
 заголовок функции начинается со служебного слова
function и заканчивается указанием типа значения
функции:

function <имя> (список описаний формальных
параметров): <тип>;
 •раздел операторов функции должен содержать хотя бы
один оператор присваивания имени функции;
 • обращение к функции - не оператор, а выражение
вида

<имя функции> (<список фактических параметров>).
Отличия функции от процедуры:
 результатом обращения к функции может быть
одно единственное значение;
 после обращения к функции управление
передается на выполнение следующей
операции данного выражения (в соответствии с
приоритетом).

S:=PRF ( A,B,C);
Writeln ( PRF ( A,B,C));
If PRF ( A,B,C)>20 then K=K+1;
 . Формальные и фактические параметры.
 При описании процедуры (функции) в ее
заголовке могут быть указаны параметры
следующих видов:
 параметры-значения;
 параметры-переменные;
 параметры-константы;
 параметры-процедуры;
 параметры-функции.
При записи параметров необходимо
помнить:
 число формальных и фактических параметров должно




быть одинаково;
порядок следования и тип фактических параметров
должен совпадать с порядком и типом
соответствующих формальных параметров;
идентификаторы формальных и фактических
параметров могут совпадать;
формальные параметры в языке Турбо Паскаль в
заголовке находятся вместе с описаниями и объявлять
их в разделе описаний процедуры(функции) не
требуется;
формальные параметры должны иметь простые или
ранее определенные типы.
 Рекурсией называется способ задания
функции, при котором значение функции при
определенном значении аргументов
выражается через уже заданные значения
функции при других значениях аргументов.
составить программу, которая для заданных четырех
натуральных чисел а, b, с, d напечатает наибольшие
общие делители первой и второй пар чисел и сравнит
их по величине.
В программе определим рекурсивную функцию nod(x,y)
по формулам
x, если у = 0
nod(x,y) = nod(y.x). если х < у
nod(x mod у,у), если х > у
21 и 15,
nod(21,15) = nod(6,15) = nod(15,6) = nod(3,6) = nod(6,3) =
nod(0,3) = nod(3,0) = 3.
program four;



var a,b,c,d,m,n:integer;
function nod(x,у:integer): integer;
var h:integer;
begin



if y=0 then h:=x
 else if x<y then h:=nod(y,x)
 else h:=nod(x mod у, у);
nod: =h
end;
begin
writeln('введите 4 натуральных числа');
 read(а,b,с,d); writeln;
 m:=nod(a,b); n:=nod(c,d);
 writeln('нод(',а,',',b,')=',m);
 writeln('нод(',c,',',d,')=',n);
 if m>n then writeln('первый > второго')
 else if m<n then writeln ('первый < второго')
 else writeln('нод пар равны')
end.

Download