КАТЕГОРИИ: Архитектура-(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) |
Процедуры и функции
End. Begin Begin <тело процедуры> <имя>:=<значения>; end; Пример: Составить программу, подсчитывающую число сочетаний без повторения из N элементов по К элементов. Число сочетаний без повторения считается по формуле: Cnk=n! /k!(n-k)! Обозначим: n,k-переменные для хранения введенных чисел; C- переменная для хранения результата. Чтобы подсчитать количество сочетаний без повторения, необходимо вычислить n!, (n-k)!, k!. Опишем функцию, вычисляющую факториал числа n (n!=1*2*…*n). function factorial(m:Integer):Longint;{заголовок функции} Var i: Integer; {описанная часть} rez: Longint; Begin { тело функции } rez:=1; For i: I to m Do rez:= rez*i; factorial: = rez;{присвоение значения имени функции} End; Первая строчка в описании функции - это заголовок функции. Служебное слово Function(функция) указывает на то, что именем factorial названа функция. В скобках перечислен список формальных параметров функции, указаны их имена и задан их тип. Функция factorial имеет один параметр n (число, факториал которого мы будем находить), который является целым числом. Далее в заголовке указывается тип значения функции, ее результата. В данном примере результат функции factorial-целое число. За заголовком функции следует описательная часть функции, которая, как и у программы, может состоять из раздела описаний переменных, констант, типов и т.д. В данном примере нам понадобится только раздел переменных. Опишем переменные i (переменная для управления циклом) и rez, (для накопления значения факториала). Далее идет раздел операторов (тело функций), в котором подсчитывается значение факториала числа. Результат этого вычисления присваивается имени функции, таким образом она и получает свое значение. В тексте программы описание функции всегда следует за описанием переменных и до начала основной части, как и описание процедур. После того как функция описана, ее можно использовать в программе. Вся программа для нашей задачи может иметь следующий вид: Program Ex_2; Var n,k: Integer; C, facn, fack, facnk: Longint; function factorial(m:Integer):Longint;{заголовок функции} Var i: Integer; {описанная часть} rez: Longint; Begin { тело функции } rez:=1; For i: I to m Do rez:= rez*i; factorial:= rez;{присвоение значения имени функции} End; Writeln (′введите два числа n.k′); Readln (n, k);{ ввод с клавиатуры значений переменных n, k} facn:= factorial(n); fack:= factorial(k){обращение к функции}; facnk:= factorial(n-k); C: = facn/ fack*facnk; Writeln (′Число сочетаний =′, С); {вывод значения С} Readln; Три основных правила: à если надо что-то вычислить и получить в точке вызова результат - используйте для этого функцию; à если надо что-то сделать: данные с диска, очистить часть экрана, à закрасить экран в другой цвет и т.п., используйте процедуру; à при вызове процедуры или функции тип фактических параметров должен совпадать с типом формальных параметров. Пример 1. Программа вычисления суммы 2-х чисел с помощью функции. PROGRAM Demo Param_1; VAR A, B, Sum: integer; FUNCTION Work(X, Y: integer): integer);{ описание функции} VAR S: integer; BEGIN S: =X+Y; Work: =S; END; BEGIN {начало основной программы} WRITE (‘Введите А=’); READLN (A); WRITE (‘Введите B=’); READLN (B); Sum: = Work (A, B):{ вызов функции Work, A, B-передаются} WRITELN (′Сумма=′, Sum R); END. 2.Программа вычисления суммы и разности 2-х чисел с помощью процедуры. PROGRAM Demo Param; VAR A, B, Sum, Razn: integer; PROCEDURE Work(X, Y: byte; VAR S, R: integer);{ описание функции} BEGIN S: =X+Y; R: =X-Y; END; BEGIN WRITE (‘Введите А=’); READLN (A); WRITE (‘Введите B=’); READLN (B); Work (A, B, Sum, Razn);{ вызов процедуры Work, A, B-передаются, Sum и Razn-принимаются} WRITELN (′Сумма =′, Sum); WRITELN (′Разность =′, Razn); Цикл – это повторение группы операторов на данном этапе обработки информации. Если же какую-то группу одних и тех же команд требуется посторенние в разных местах программы, меняя лишь параметры, то вводят понятия подпрограммы. Обычно подпрограммы оформляют в виде отдельной программной единицы и обращайтесь к ней из основной программы по мере надобности. Графически работу с подпрограммой можно изобразить так.
В языке Паскаль подпрограммы реализуются в виде процедур и функций и описываются в разделе описаний процедур и функций.
Процедура. Описание процедуры состоит из заголовка, раздела описаний и определений и раздела операторов. Заголовок начинается со служебного слова PROCEDUR, после которого пишут имя процедуры, затем в скобках список параметров с их типами, после всего этого ставится точка с запятой. Список параметров – это имена переменных исходных и выходных данных. Перед выходными данными пишут слово VAR. Например: PROCEDURA PRIM (I, N: INTEGER; X,Y: REAL VAR Z,T: BOOLEAN)/ Параметры в заголовке называются формальными. Заголовок процедуры может быть без параметров. Например: PROCEDURA имя. В этом случае параметры описываются в основной программе в разделе описания переменных и называются глобальными. Раздел описаний и определений состоит из тех же разделов, что и у основной программы. Переменные, которые здесь описываются, называются локальными. Локальные переменные недоступны основной программе. Раздел операторов начинается словом BEGIN? Кончается словом END с точкой запятой. Функция. Функция – частный случай процедуры. Если в процедуре выходных значений может быть несколько, то у функций одно. Кроме того процедура «выносит» в основную программу значения присвоенные переменным, функция – присвоенные имени функции. Описание функции состоит из заголовка, раздела описаний и определений и раздела операторов. Заголовок начинается ключевым словом FUNCTION (фанкшен), затем имя, затем в скобках список параметров с типами, затем после двоеточия указывается тип функции, после чего ставится точка с запятой. В список параметров входят лишь входные переменные. Заголовок может быть без списков параметров, т.е. иметь вид: FUNCTION имя: тип;
Обращение к процедуре и функциям. Описание процедур и функций в разделе описаний не влечет за собой каких либо действий. Чтобы исполнить процедуру или функцию нужно в соответствующем месте программы к ним обратиться. Обращение к процедуре осуществляется оператором процедуры, который имеет следующий вид.
Список параметров – это перечень параметров, которые реально участвуют в вычислениях. Эти параметры называются фактическими. Порядок, тип и число фактических параметров должно соответствовать списку параметров в заголовке подпрограммы (процедура, функция). Если вызывается процедура без параметров, называется ее имя. Функции вызываются аналогично вызову элементарных функций. Примеры: 1. Вычислитьв точке b=1,7, если f(x)=, где q(x)= Исходные данные: x, h=0,01 Процедуры. Program zd1; var в, f1, q1: real; procedure fan (x:real; var f: real; var q:real); begin f:=sqr(x) q:=sqrt(x) end; begin write (‘b=”); readln(b); fan(b,f1,q1); writeln(‘f=’; f1:5:3); writeln(‘q=’; q1:5:3); writeln(‘f/q=’; f1/q1); end. 2. Вычислить y=, где f(x) = Исходные данные: x, h=0,01 Процедуры. Program zd2; var x, y, f: real; function fan (x1:real; f1: real); begin if (x1<0.4) then fan:=cos(x1)-x1 else if (x1>=0.49) then fan:=sqrt(x1) else fan:=0.14*x1; end; begin x:=0.3 while x<=0.5 do begin y:=sqr(x)+fan(x,f);writeln(‘y=’,y:6:3); x:=x+0.01 end; end.
Контрольные вопросы. 1. Определите понятие «подпрограммы». 2. Когда используются подпрограммы? 3. Каковы правила использования процедур и функций? 4. Определите понятия «функции», «процедуры».
Дата добавления: 2014-01-06; Просмотров: 346; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |