Dezvoltarea funcțiilor și procedurilor
Practic, toate limbile algoritmice pot fi programate pentru functii si proceduri - unități de operator, decorate în formă de subrutine. Dezvoltarea funcțiilor și procedurilor necesare pentru utilizări multiple în diferite locuri în program sau în mai multe programe bloc de declarații care efectuează același tip de acțiune, de exemplu, calcularea valorii funcțiilor complexe pentru diferite valori ale argumentului. Turbo - Pascal, este de asemenea posibil de a crea biblioteci (module) constând în proceduri speciale și funcții, altele decât cele furnizate în pachetul (module de sistem, Crt, grafic).
Proceduri (subrutine) și funcții definite de programator, sunt prezentate în secțiunea de descriere a programului principal. Procedurile și funcțiile au o secțiune antet și o secțiune care descrie operatorii (a se vedea. Structura programului la p.).
Titlul procedurii este rezervată procedură cuvânt. numele procedurii și lista de parametri, de exemplu:
Procedura Name_P (p1, p2 "tip" ;. p3 Var, "tip" p4; ..);
Antetul Funcția constă în servicii de cuvinte funcționale. numele funcției și lista de parametri, în plus, indică tipul de valoare funcție de înapoiere, de exemplu:
Name_F Funcția ( „lista oficială parametru“): „tip de rezultat“;
Aici Funcția și Procedură - cuvinte ale funcției,
Name_F, Name_P - numele și procedurile de funcții în consecință,
p1, p2 - numele de parametrii formali - valori
P3, P4 - numele parametrii formali - variabile,
. - puncte înseamnă că puteți transfera un număr mai mare de parametri.
În cele ce urmează, dacă nu se specifică altfel, toate spus procedura se aplică funcției.
Tip de valoare returnată funcției poate fi simplu sau de tip șir de caractere - indicatorul. parametrii formali pot fi orice tip, ci doar ar trebui să indice un identificator (nume de tip). Astfel, denumirea tipului parametrului oficial - matrice trebuie să fie stabilită în prealabil operatorul de tip, de exemplu: Type M = array [1..100] real; Apoi, tipul de matrice poate fi indicat în procedurile de titlu, de exemplu: Procedura Name_P (p: M); Parametrii tip de formă este descrisă numai în antet procedură. Listă de parametrii formali pot fi omise, de exemplu. Procedura Randomizează; Ea nu are parametri.
În cazul în care, ca urmare a mai multor operatori obține o singură variabilă de valoare, acești operatori pot fi incluse în descrierea funcției. De exemplu, funcția Sin (x); returnează o valoare care este atribuit variabilei y: = sin (x); (Aceasta și alte caracteristici standard sunt descrise în unitatea de sistem, care este conectat la programul automat.)
În cazul în care, ca urmare a mai multor operatori efectuat anumite acțiuni sau calcularea mai multor variabile, acești operatori sunt mai bine plasate în descrierea procedură. De exemplu, procedura ClrScr; modulului CRT șterge ecranul.
Apelarea procedurii se efectuează în cadrul programului principal sau alte proceduri (proceduri nested). Programul (procedura), în care solicită o altă procedură numită externă la procedura numită.
Atunci când procedura este invocată în loc de parametrii formali sunt parametrii actuali ale căror valori sunt utilizate în cadrul procedurii substituite. De exemplu:
Name_P (p11, p22 p33, p44 ..); - apelarea procedurilor Name_P
Y: = Name_F ( "lista reale ale parametrului"): - apelarea funcției Name_F.
Aici, P11, P22. - numele sau valorile variabilelor,
P33, p44. - numele de variabile ale căror valori sunt returnate la program.
Y - variabila, care i se atribuie valoarea returnată de funcția.
Tipuri de parametrii formali și cele reale relevante trebuie să se potrivească, iar numele pot fi identice sau fi diferite. În loc de parametri - valori pot substitui numele de variabile, variabile sau expresii în locul parametrilor - variabile sunt nume de variabile substituite. Funcția și parametri - variabile returnează valori într-o aplicație externă primită după încheierea funcției sau a procedurii. parametri modificați - valorile din procedura are un caracter local, într-un program extern parametrii actuali corespunzător nu sunt modificate. valori, mai degrabă decât opțiuni - - În cazul în care variabilele nu sunt necesare pentru a trece noile valori la un program extern, ar trebui să fie utilizați parametrii.
În cadrul procedurii, puteți utiliza etichete locale, constante și variabile, descriind-le în secțiunea care descrie procedura. Nume locale nu ar trebui să coincidă cu numele parametrii formali, iar valorile acestora nu sunt transmise programului extern. Etichete, constante și variabile declarate într-un program extern înainte de procedura în sine, numit la nivel mondial la procedura numita. Dacă nume locale și globale sunt aceleași, atunci procedura utilizează valorile locale, și într-un program extern - .. valori globale, adică identificatorii locale și globale sunt independente. Dacă numele variabilei globale este unic (nu este descrisă în procedura unei variabile cu același nume) și semnificația acesteia în procedura este schimbată, este schimbat în programul extern. Cauzarea programator program utilizează numele ei și parametrii nu analizează procedura, și de multe ori fără a cunoaște conținutul procedurii. Prin urmare, pentru procedurile de universalitate trebuie toate valorile în procesul de transfer printr-o listă de parametri și variabile în procedura descrisă, r. E. Pentru a le face locale.
Aici este un exemplu de ieșire la procedurile de programator ecran carte de vizită.
Writeln ( '| dezvoltatori:', Fam: 14, '|');
writeln ( '_': 6, sec, 'sec'); readln
Începe DATE_TIME final.
În probleme practice sunt adesea scrise proceduri care returnează valorile de matrice. Aici este un exemplu al procedurii de calcul "N", valorile funcției, de exemplu, Y = 4 * Sin (x) +7 * Cos (x); într-un interval predeterminat x1<=x<=x2, при N<=100 и равномерной разбивке диапазона.
var Z: r_1000; x1, x2: reală; n: cuvânt;
Procedura Mas_Y (var Y: r_1000; x1, x2: real; n: word);
Dacă (n> 1000) sau (n<2) then begin
writeln ( 'lungime Array> 1 și nu trebuie să depășească 1000');
writeln ( 'x2 trebuie să fie mai mare decât x1'); readln; Halt final;
In timp ce x începe writeln ( 'Introduceți valori x 1, x 2, (x2> x1)'); Readln (x1, x2); Writeln ( „Tip 1 Aici, tipul parametrului oficial „Y“ este dată în secțiunea care descrie tipurile de programul extern și coincide cu „Z“ real parametru de tip, valorile elementelor care sunt returnate la programul extern. Halt operatorul intrerupe programul, chiar dacă acesta este utilizat în interiorul unei proceduri. Aplicație declarație de ieșire din interiorul procedurii determină o întrerupere a procedurii, dar nu un program extern. Aici este un exemplu de ieșire procedură matrice de numere într-un fișier: var x: x M_30 30_r; i, j, n, m: byte; Procedura Wr_M (a: M_30 x 30_r; name_f: string; n, m: byte); începe assign (f, name_f); rescrie (f); Pentru i: = 1 la n do începe writeln (f); Pentru j: = 1 la m scrii (f, a [i, j]: 6: 2) final; pentru i: = 1 la N face pentru j: = i de a face N pentru i: = 1 la N face pentru j: = i de a face N Pentru o citire corectă a datelor înregistrate în spațiul neformatata de ieșire fișier necesar pentru numere de intrare separate. Practica N 1. 28 Scrierea și programe de depanare utilizând procedurile: 1. Afișează cartea de vizită a programatorului, cu indicarea datei curente. 2. Afișează programator carte de vizită cu timpul. Notă revendicării 1, 2: .. Dezvoltatorului ia în considerare cazuri numele de locuri de muncă ca parametru global, local și formale. 3. Se calculează o matrice de valori N din Y = ex + Cos (x) atunci când schimbă argumentul la un pas constant în intervalul x1. x2, și scrierea matrice într-un fișier. Valorile N, x1, x2, iar numele fișierului specificat de intrare operatorul 4. Se calculează o matrice de valori N ale funcției Y = ln (x) - x 3 atunci când schimbă argumentul la un pas constant în intervalul x1. x2, și scrierea matrice într-un fișier. Valorile N, x1, x2, și numele de fișier specificat de intrarea operatorului. 5. Crearea unei NxN matrice de identitate (N<=50). Элементы матрицы на главной диагонали равны единице, остальные - нулю. Вывести на экран массив 20х20. 6. Înlocuiți elementele de matrice N x N (N<=30), расположенных в строках на элементы, расположенные в столбцах, т. е. a[i, j] на a[j, i]. Вывести на экран исходный и транспонированный массивы размером 10х10. Aici este un exemplu de funcție pentru a calcula înălțimea triunghiului din valorile date ale laturile sale. În cazul în care (a<0) or (b<0) or (c<0) Then begin Writeln ( „Părțile Triunghi> 0„?); readln; Halt final; Writeln ( 'Introduceți laturile triunghiului a, b, c'); Readln (a, b, c); Writeln ( „înălțimile triunghiului:“); Funcția de program este numit de trei ori pentru a calcula înălțimea triunghiului pentru diferite combinații de parametrii actuali, care vă permite să calculeze înălțimea tuturor triunghi. Practica N 1. 29 Scrierea și programe de depanare folosind funcții: 1. Se calculează aria nodurilor triunghi la coordonate cunoscute utilizând formula S = 0,5 * abs (y1 * (x3-x2) + y2 * (x1-x3) + y3 * (x2-x1)). precum și de a dezvolta o funcție pentru calcularea suprafeței unei formule triunghi Heron (valorile calculate în funcție de părți). Afișarea valorii triunghiului, calculată prin cele două formule (funcții). 2. Afișarea mesajelor pe ecranul unui tip triunghi: acut în unghi, dreptunghiulare, obtuze (coordonatele nodurilor). Pentru a calcula teorema unghiului cosinus utilizat, de exemplu: c_a: = (b * b + c * c - a * a) / (2 * b * c); unde c_a - cosinusul unghiului, partea opusă a „a“. 3. Se determină găsirea punctului „A“ în interiorul dreptunghiului care include regiunea de „N“ puncte cu coordonatele Xi, Yi, i = 1. N<21. Стороны прямоугольника параллельны осям координат. Координаты точек задаются в основной программе функцией Random(1000). Функция возвращает значение логического типа. 4. Simetria determinarea matricei (NxN). Funcția returnează o valoare booleană. 59 Aici este un exemplu de utilizare funcții pentru a calcula suma termenilor din seria de putere a funcției trigonometrice Y = Sin (x). Sin_r de funcții (x: real): real; Var a, k, y: real; I: longint; în timp ce abs (a)> 0,0000001 do începe i: = i + 1; k: = - x * x / (2 * i * (2 * i + 1)); a scrie ( 'Introduceți valoarea argument: x1 ='); Readln (x1); writeln ( 'valoare argument: x1 =', x1); writeln ( 'Valoarea estimată a funcției: Sin_r (x1) =', y: -11: 8); writeln ( 'rezultat de control: Sin (x1) =', y1: -11: 8); writeln ( 'Apăsați Enter'); readln; În descrierea funcției este necesară operatorului atribuită valoarea funcției. Schimbarea parametrului - valori „x“ în corpul funcției nu se reflectă în valoarea sa într-un program extern. Funcția returnează o valoare care este într-un program extern este atribuit variabilei „y“.