Развитие на функции и процедури

На практика всички алгоритмични езици може да се програмира за функции и процедури - единици на оператора, декорирани във формата на подпрограми. Развитие на функции и процедури, необходими за многократна употреба на различни места в програмата или в няколко програми блокира на изрази, които изпълняват един и същи вид на действие, например, при изчисляването на стойността на сложни функции за различни стойности на аргумента. Най-Turbo - Паскал също така е възможно да се създаде библиотеки (модули), състоящи се от специални процедури и функции, различни от приложените в пакета (Системни модули, CRT, графиката).







Процедури (подпрограми) и функции, определени от програмист, са дадени в раздела за описание на основната програма. Процедурите и функциите имат челната част и част, описваща оператори (вж. Структурата на програмата на стр.).

Наименование на процедурата е запазена дума дейността. име процедура и параметър списъка, например:

Процедура Name_P (Р1, Р2 "тип" ;. Var p3, p4 "тип"; ..);

Заглавието на функция се състои от услуги Функционални думи. име функция и списък параметър, в допълнение показва вида на стойност функция връщане, например:

Функция Name_F ( "формален списък параметър"): "тип резултат";

Тук Функция и дейността - функционални думи,

Name_F, Name_P - функционални имена и процедури съответно,

P1, P2 - официални имена на параметри - стойностите

P3, P4 - имената на формалните параметри - променливи,

. - точки означава, че можете да прехвърляте по-голям брой параметри.

В това, което следва, освен ако не е указано друго, всички каза, че процедурата се отнася и за функцията.

Вид на стойност връщане от функция може да бъде проста, или тип низ - показалеца. формални параметри могат да бъдат всякакъв вид, но само трябва да посочат идентификатор (име тип) на. По този начин, на името на вида на формалния параметър - масива трябва да се зададе предварително в Type оператор, например: Type M = масив [1..100] на недвижими; След това, тип масив може да бъде посочен в процедурите от заглавието, например: Процедура Name_P (р: М +); параметри Формални тип е описана само в заглавната част на процедура. Списък на формалните параметри могат да бъдат пропуснати, например. процедура Случаен; Тя не е включена лампа.

Ако в резултат на няколко оператора да получи променлив една стойност, тези оператори могат да бъдат включени в описанието на функцията. Например, функция Sin (х); връща стойност, която се определя на променливата Y: = грях (х); (Този и други стандартни функции са описани в единицата за система, която е свързана с програмата автоматично.)

Ако в резултат на няколко оператора извършва някакво действие или изчисляване на няколко променливи, тези оператори са по-добре поставени в описанието на процедура. Например, метод ClrScr; на модул CRT изчиства екрана.

Обаждане на процедурата се извършва по основната програма или други процедури (вложени процедури). програма (процедурата) В рамките на който призовава друга процедура, наречена външни за нарича процедура.

Когато процедурата се извиква вместо формалните параметри са заместени действителните параметри, чиито стойности се използват в процедурата. Например:

Name_P (P11, P22 P33, р44 ..); - извикване на процедури Name_P

Y: = Name_F ( "действителния списък параметър"): - обажда функция Name_F.

Тук, P11, P22. - имената или стойностите на променливите,

P33, p44. - имената на променливите, чиито стойности са върнати на програмата.

Y - променлива, която се дава стойността върната от функция.

Видове съответните формални и действителните параметри трябва да съвпадат, както и имената могат да бъдат същите или да бъдат различни. Вместо параметри - стойности могат да заменят имената на променливите, променливи или изрази, вместо на параметрите - променливи са заместени имена на променливи. Функцията и параметри - променливи стойности се връщат във външно приложение, получени след края на функция или процедура. за промяна на параметри - стойностите в процедурата има локален характер, във външна програма, съответстваща действителните параметри, които не са се променили. ценности, а не на възможности - - Ако променливите не се изисква да преминат на новите стойности на външна програма, трябва да се използва на параметрите.

В процедурата, можете да използвате местните етикети, константи и променливи, описвайки ги в раздела, описващ процедурата. Местните имена не трябва да съвпадат с имената на формалните параметри и техните стойности не са преминали към външния програмата. Етикети, константи и променливи, декларирани във външна програма, преди самата процедура, наречени глобалното към наречената процедура. Ако местни и глобални имена са едни и същи, а след това процедурата да използва местните ценности, и по външна програма - .. Глобалните ценности, т.е. местни и глобални идентификатори са независими. Ако глобалното името на променливата е уникална (не е описано в процедурата на променлива със същото име) и неговото значение в процедурата се промени, ако се е променило във външната програма. Причиняване на програмиста програма използва името й и параметри не се анализира процедурата, а често и без да знае съдържанието на процедурата. Ето защо, за да универсалност процедури трябва всички стойности в процеса на прехвърляне чрез списък от параметри и променливи в рамките на процедурата, описана, R. Д., за да ги местни.







Ето един пример изходни процедури за програмист екран визитка.

Writeln ( '| Програма за разработчици:', Fam: 14 '|');

writeln ( '_': 6, сек, "секунди"); readln

Започнете DATE_TIME край.

В практически проблеми често са написани процедури, които връщат стойности на масиви. Ето един пример на метода за оценка "N" стойностите на функцията, например Y = 4 * Sin (х) 7 * Cos (х); в рамките на предварително определен обхват x1<=x<=x2, при N<=100 и равномерной разбивке диапазона.

Var Z: r_1000; x1, x2: реален; п: дума;

Процедура Mas_Y (VAR Y: r_1000; x1, x2: недвижими п: дума);

Ако (п> 1000) или (п<2) then begin

writeln ( "Дължината на масива> 1 и не трябва да надвишава 1000 ');

writeln ( 'x2 трябва да е по-голяма от x1'); readln; Спиране край;

Докато х

започне Writeln ( "Enter стойности X 1, X 2, (х2> х1)"); Readln (х1, х2);

Writeln ( "Тип 1

Тук, от типа на формалния параметър "Y" е дадена в тази част, описваща типа на външната програма и съвпада с действителния параметър за тип "Z", стойностите на елементи, които се връщат към външния програмата.

Спиране на оператора може да се прекрати програмата дори ако то се използва вътре в процедура. декларация за кандидатстване Exit вътре в процедурата води до прекъсване на процедурата, но не и външна програма.

Ето един пример изход процедура масив от числа във файл:

Var х: M_30 х 30_r; I, J, К, М: байт;

Процедура Wr_M (А: M_30 х 30_r; name_f: низ п, т: байт);

започне възлага (е, name_f); презапис (е);

Защото: = 1 до п направи започне writeln (е);

За J: = 1 до m пишат (F, а [Ь, й]: 6: 2) край;

защото: = 1 до N направи за к: = и да направи N

защото: = 1 до N направи за к: = и да направи N

За правилното четене на данните, записани във файла изход неформатиран пространство, необходимо за отделни номера за участие.

Практика N 1. 28

Писане и проверявате програмите с помощта на процедури:

1. Посочете визитната картичка на програмист с посочване на текущата дата.

2. Посочете програмист визитка с времето.

Забележка претенция 1, 2: .. програмиста разгледат случаите, имена на работни места в световен мащаб, местни и формален параметър.

3. Изчислява масив от стойности на N Y = ех + Cos (х) при смяна на аргумента с постоянна стъпка в диапазона от x1. x2, и писане на масива във файл. Стойности на N, x1, x2, и името на файла, определени от оперативния вход

4. Изчислява масив от N стойности на функцията Y = LN (х) - х 3 при смяна на аргумента с постоянна стъпка в диапазона от x1. x2, и писане на масива във файл. Стойности на N, x1, x2, и името на файла, определен от оперативния вход.

5. Създаване на идентичност матрица NxN на (N<=50). Элементы матрицы на главной диагонали равны единице, остальные - нулю. Вывести на экран массив 20х20.

6. Поставете NxN матрични елементи (N<=30), расположенных в строках на элементы, расположенные в столбцах, т. е. a[i, j] на a[j, i]. Вывести на экран исходный и транспонированный массивы размером 10х10.

Ето един пример на функция за пресмятане на височината на триъгълника от дадените стойности на своите страни.

Ако (а<0) or (b<0) or (c<0) Then begin

Writeln ( "триъгълник страни> 0"?); readln; Спиране край;

Writeln ( "Enter триъгълника страните а, б, с '); Readln (а, б, в);

Writeln ( "Височините на триъгълника: ');

Функцията програма се нарича три пъти за изчисляване на височината на триъгълника за различни комбинации от действителните параметри, която ви позволява да се изчисли височината на всички триъгълник.

Практика N 1. 29

Писане и проверявате програмите с помощта на функции:

1. Изчислява областта на триъгълник върховете на известни координати, използващи формула S = 0,5 * абе (y1 * (x3-х2) + Y2 * (х1-x3) + Y 3 * (х2-х1)). както и да се разработи функция за изчисляване на площта на триъгълник формула чапла (стойностите, изчислени в зависимост от страните). Посочете стойността на триъгълника, изчислен от двете формули (функции).

2. Посочете съобщенията на екрана на тип триъгълник: остроъгълен, правоъгълни, тъпи (координатите на върховете). За да се изчисли ъгъл косинус теорема използва, например: c_a: = (б * б + в * в - а * а) / (2 * б * в);

където c_a - косинус на ъгъла, на противоположната страна на "а".

3. Определяне намирането на точка "А" в рамките на правоъгълник, който включва област точки "N" с координатите Xi, Yi = I 1. N<21. Стороны прямоугольника параллельны осям координат. Координаты точек задаются в основной программе функцией Random(1000). Функция возвращает значение логического типа.

4. определяне на симетрията на матрицата (NxN). Функцията връща булева стойност. 59

Ето един пример за използване на функции за изчисляване на сумата от гледна точка на серия мощност на тригонометрична функция Y = Sin (х).

Функция Sin_r (х: реален): реален;

Var а, к, г: реален; I: longint;

докато ABS (а)> 0.0000001 се започне I: = I + 1; к: = - х * х / (2 * I * (2 х I + 1));

пиша ( "Enter аргумент стойност: x1 = '); Readln (х1);

writeln (довода стойност: Х1 = "х1);

writeln ( "прогнозната стойност на функцията: Sin_r (х1) = ', Y: -11: 8);

writeln ( "резултат контрол: Sin (х1) = ', Y1: -11: 8);

writeln ( "Натиснете Enter '); readln;

В описанието на функцията се изисква операторът възлага функцията му стойност. Промяната на параметъра - стойности на "х" в тялото на функцията не е отразено в неговата стойност в външна програма. Функцията връща стойност, която е във външна програма се определя на променливата "Y".