Студопедия

КАТЕГОРИИ:


Архитектура-(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);

Цикл – это повторение группы операторов на данном этапе обработки информации. Если же какую-то группу одних и тех же команд требуется посторенние в разных местах программы, меняя лишь параметры, то вводят понятия подпрограммы. Обычно подпрограммы оформляют в виде отдельной программной единицы и обращайтесь к ней из основной программы по мере надобности.

Графически работу с подпрограммой можно изобразить так.

Т1, Т2, Т3, Т4 – участки основной программы ПП - подпрограммы

 
 
Нач.

 


В языке Паскаль подпрограммы реализуются в виде процедур и функций и описываются в разделе описаний процедур и функций.

 

Процедура.

Описание процедуры состоит из заголовка, раздела описаний и определений и раздела операторов. Заголовок начинается со служебного слова 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; Просмотров: 318; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.037 сек.