Prezentare pe tema „subrutine în Pascal”. Proceduri și funcții Prezentarea procedurilor și funcțiilor în recursiunea Pascal

Subrutine Adesea, o sarcină vă cere să repetați o anumită secvență de instrucțiuni în diferite părți ale programului. Pentru a descrie această secvență o dată și a o aplica de mai multe ori, limbajele de programare folosesc subrutine. Un subprogram este un bloc special conceput al unui program pentru utilizarea repetată ulterioară în programul principal. Utilizarea subrutinelor vă permite să implementați una dintre cele mai moderne metode de programare -. programare structurată


Subrutinele rezolvă trei probleme importante care facilitează foarte mult programarea: 1. elimină necesitatea de a repeta în mod repetat fragmente similare în textul programului, adică. reduce dimensiunea programului; 2. va îmbunătăți structura programului, făcându-l mai ușor de înțeles la parsare; 3.reduceți probabilitatea erorilor, creșteți rezistența la erori de programare și consecințe neprevăzute în timpul modificării.


Proceduri și funcții Există două tipuri de subrutine în Pascal: procedură (PROCEDURE) și funcție (FUNCȚIE). Procedurile și funcțiile în Pascal sunt declarate în secțiunea de declarații din spatele secțiunii variabile. ProgramProgramName; VAR ... // secțiune pentru descrierea variabilelor programului principal; procedura ProcedureName; var ... begin ...//Procedure body end; start //corpul programului principal final.


Funcțiile și procedurile au parametri (variabile care trec o valoare). Sunt de două tipuri: 1) Formale - cele care sunt în descrierea subrutinei 2) Actuale - cele care sunt transferate din programul principal într-o funcție sau procedură. Parametrii efectivi trebuie sa corespunda celor formali ca cantitate, ordine si tip.




Proceduri Procedurile sunt utilizate atunci când o subrutină trebuie să obțină mai multe rezultate. Există două tipuri de proceduri în Pascal: proceduri cu parametri și fără parametri. O procedură este accesată de numele procedurii, care poate fi urmată de parametrii actuali. Când este apelată o procedură, se stabilește o corespondență unu-la-unu între parametrii actuali și formali, apoi controlul este transferat procedurii. După ce procedura este executată, controlul este transferat următorului operator al programului apelant după apelarea procedurii.


Exemplul 1: O procedură fără parametri care imprimă un șir de 60 de stele. procedura pr; var i: întreg ; începe pentru i:=1 până la 60 scrie (* "); scrieln; sfârșit; începe pr; sfârșit.


Exemplul 2. Creați un program pentru schimbarea a două numere c=5 și d=7 program obmenDan; var c,d:intger; schimb de proceduri (a,b:întreg); var m:întreg; începe m:=a; a:=b; b:=m; scrieln(a,b); Sfârşit; begin writeln("Introduceți 2 numere: "); readln(c,d); schimb (c,d); writeln(c," ",d); Sfârşit. c5 d 7 a 5 b 7 1) la apelarea procedurii obmen cu doi parametri 5 și 7, aceleași numere 5 și 7 sunt plasate în variabilele a și respectiv b: 2) apoi în procedură valorile memoriei celulele a și b sunt rearanjate: c5 d 7 a 7 b 5 3) dar în variabilele c și d datele nu s-au schimbat, deoarece sunt în alte celule de memorie


Pentru ca variabilele c și d, a și b să se refere la aceleași celule de memorie (dacă se schimbă valorile lui a și b, atunci și valorile lui c, d se vor schimba), atunci când se descriu parametrii formali, este necesar să adăugați cuvântul VAR înaintea variabilelor cerute: schimb de procedură (var a,b:întreger); с5 d 7 a b


Exemplul 3. Având în vedere 3 matrice diferite de numere întregi (dimensiunea fiecăruia nu depășește 15). În fiecare tablou, găsiți suma elementelor și media aritmetică. program proc; var i, n, sumă: întreg; sr: real; procedura de lucru (r:integer; var s:integer; var s1:real); var mas: matrice de intregi ; j:întreg; începe s:=0; pentru j:=1 la r începe să citească (mas[j]); s:=s+mas[j]; Sfârşit; s1:=s/r; Sfârşit;


(programul principal) begin for i:=1 to 3 do begin write ("Vvedite razmer",i, "masiva: "); readln(n); munca(n, suma, sr); (apel procedura de lucru) writeln ("Summa elementov = ",sum); writeln("Srednearifmecheskoe = ",sr:4:1); Sfârşit; Sfârşit.


Rezultatul programului: Programul apelează de trei ori procedura de lucru, în care variabilele formale r, s, s1 sunt înlocuite cu n, sum, sr real. Procedura introduce elemente de matrice, calculează suma și media. Variabilele s și s1 sunt returnate programului principal, astfel încât cuvântul de serviciu var este plasat înaintea descrierii lor. Parametrii locali mas, j sunt validi numai în procedură. Global - i, n, sum, sr sunt disponibile pe tot parcursul programului.


Funcții în Pascal Setul de funcții încorporate în limbajul Pascal este destul de larg (ABS, SQR, TRUNC etc.). Dacă în program este inclusă o funcție nouă, non-standard, atunci aceasta trebuie descrisă în textul programului, după care poate fi accesată din program. O funcție este accesată în partea dreaptă a operatorului de atribuire, indicând numele funcției și parametrii actuali. O funcție poate avea propriile sale constante locale, tipuri, variabile, proceduri și funcții. Descrierea funcțiilor în Pascal este similară cu descrierea procedurilor.




Exemplul 4. Scrieți o funcție de subrutină de gradul a x, unde a, x sunt orice numere. Să folosim formula: a x = e x ln un program p2; var f, b, s, t, c, d: real; (variabile globale) function stp (a, x: real): real; var y: real; ( variabile locale) begin y:= exp (x * ln (a)) ; stp:= y;(atribuirea unui nume de funcție rezultatului calculelor subrutinei) end; (descrierea funcției completă) begin d:= stp (2.4, 5); (calcularea puterilor diferitelor numere și variabile) writeln (d, stp (5,3.5)); citiți (f, b, s, t); c:= stp (f, s)+stp (b, t); scrieln(c); Sfârşit.


Funcții O subrutină este o parte a unui program, concepută ca o structură sintactică separată și prevăzută cu un nume (un bloc de program independent), pentru rezolvarea problemelor individuale. Descrierea procedurii: procedura () (secțiunea pentru executarea numelor locale) Început (secțiunea pentru executarea operatorilor) Sfârșit; Descrierea funcției: funcția (): tip; (secțiune pentru descrierea numelor locale) Begin (secțiune pentru instrucțiunile executabile) := ; (parametru obligatoriu) Sfârșit; Apel de procedură: (); Apel de funcție: := (); 1. În partea dreaptă a operatorului de atribuire. 2. În expresia în starea operatorului de ramificare. 3. În procedura de ieșire, ca rezultat al funcției. Descrierea subrutinelor Proceduri


Procedurile și funcțiile de recursivitate din Pascal se pot numi singure, de exemplu. au proprietatea recursivității. O funcție recursivă trebuie să conțină în mod necesar o condiție pentru terminarea recursivității, astfel încât să nu provoace bucla programului. La fiecare apel recursiv este creat un nou set de variabile locale. Adică, variabilele situate în afara funcției apelate nu sunt modificate.


1 functie f (n: intreg): intreg; începe dacă n = 1 atunci f:= 1 altfel f:= n * f (n -1); (funcția f se numește singură" title="Exemplu 5. Creați o funcție recursivă care calculează factorialul numărului n după cum urmează:n! = 1 dacă n= 1 n!= (n -1)! · n dacă n > 1 funcţie f (n: întreg): întreg; începe dacă n = 1 atunci f:= 1 altfel f:= n * f (n -1); (funcția f se numește singură" class="link_thumb"> 19 Exemplul 5. Creați o funcție recursivă care calculează factorialul numărului n astfel: n! = 1 dacă n= 1 n!= (n -1)! · n dacă n > 1 funcţie f (n: întreg): întreg; începe dacă n = 1 atunci f:= 1 altfel f:= n * f (n -1); (funcția f se numește) sfârșit; 1 functie f (n: intreg): intreg; începe dacă n = 1 atunci f:= 1 altfel f:= n * f (n -1); (funcția f se numește pe sine"> 1 funcția f (n: întreg): întreg; începe dacă n = 1 atunci f:= 1 altfel f:= n * f (n -1); (funcția f se numește pe sine) sfârșit; " > 1 funcția f (n: întreg): întreg începe dacă n = 1 atunci f:= 1 else f:= n * f (n -1 (funcția f se numește" title="Exemplu 5). . Creați o funcție recursivă care calculează factorialul numărului n după cum urmează: n = 1 n! 1 atunci f:= 1 altfel f:= n * f (n -1);"> title="Exemplul 5. Creați o funcție recursivă care calculează factorialul numărului n astfel: n! = 1 dacă n= 1 n!= (n -1)! · n dacă n > 1 funcţie f (n: întreg): întreg; începe dacă n = 1 atunci f:= 1 altfel f:= n * f (n -1); (funcția f se numește singură"> !}




Subrutine V Turbo Pascal


  • Subrutină Acesta este un grup de comenzi numit, complet logic, care poate fi apelat pentru execuție de orice număr de ori din diferite locuri din program.

Motive pentru utilizarea rutinelor

  • simplificarea dezvoltării de programe mari prin descompunerea (împărțirea) unei sarcini în mai multe subsarcini;
  • o mai mare vizibilitate a programului;
  • salvarea memoriei.

Tipuri de subrutine

proceduri

funcții

  • Procedură este o parte independentă numită a unui program conceput pentru a efectua acțiuni specifice.

Proceduri fără parametri

  • Format de înregistrare :

procedură ;

Sfârşit ;

  • Toate variabilele care sunt utilizate în procedurile fără parametri sunt descrise în programul principal (în modulul Var).

Exemplu . Scrieți un program pentru a afla volumul unui cilindru.

Cilindru de program;

Var R, H, V: real;

Intrare procedura ; (procedura de introducere a datelor)

Writeln('introduceți valoarea razei');

writeln('introduceți valoarea înălțimii');

Formula procedurii; { procedură calculele volum }

V: =PI*sqr(R)*H;

Ieșirea procedurii; (procedura de ieșire a rezultatului)

writeln('V=',V);


Proceduri c parametrii

  • Procedurile pot descrie constante, variabile și alte proceduri.
  • Secțiunea de descriere din proceduri are aceeași structură ca în programul principal.
  • Variabile locale– acestea sunt variabilele descrise în cadrul procedurii.
  • Variabilele locale nu sunt accesibile în afara procedurii.
  • Modificările care apar variabilelor locale în interiorul unei proceduri nu afectează valorile variabilelor cu aceleași nume, dar descrise în afara acestei proceduri.

Proceduri c parametrii

  • Variabile globale

Exemplu .

Program zadacha;

Var a, b: întreg;

Procedura locala;

Var a, x: char; Pentru proceduri local:

ÎNCEPE variabilă x – variabilă locală

a:=’! '; (programul nu își poate schimba valoarea)

b:= b +1; variabilă b – variabilă globală

Sfârşit ; (toate modificările aduse valorii acestei variabile în procedură

BEGIN sunt salvate chiar și după părăsirea procedurii)

b:=100; variabilă o în programul principal un întreg tip

local ; iar într-o procedură – de tip simbolic. Variabila a

writeln('a =', a); tipul întreg nu este disponibil în procedura lokală.

writeln('b=',b);

Rezultatul executiei programului: a=0; b =101.


); ÎNCEPE ; Sfârşit ; "width="640"

Transmiterea parametrilor către Turbo Pascal

  • 1. Transmiterea parametrilor după valoare
  • Parametri-valori variabilele descrise după numele procedurii din paranteze. Nu există niciun cuvânt funcție Var în fața lor.
  • Format de înregistrare :

procedură (:

variabilă);

Sfârşit ;


  • parametri formali .
  • parametrii efectivi .

Exemplu .

Parametrii programului;

Var m, n: întreg;

Procedura suma (a, b: întreg);

writeln('S=',S);

suma(m,n); sau summa(100,10);

Variabile o Şi b sunt parametri formali și variabile m Şi n - faptice. Valorile reale ale parametrilor m =100 și n =10 sunt transmise parametrilor formali o Şi b .

Modificările parametrilor reali apar numai în cadrul procedurii și nu le afectează în afara procedurii.


; Variabila Var:); ÎNCEPE ; Sfârşit ; "width="640"

Transmiterea parametrilor către Turbo Pascal

  • 2. Transmiterea parametrilor după nume
  • Parametri variabili variabile descrise după numele procedurii din paranteze și precedate de cuvântul de serviciu Var.
  • Format de înregistrare :

procedură (:

variabilă; Var

variabila:);

Sfârşit ;



b apoi min:= b; dacă min c atunci min:= c; Sfârşit ; BEGIN writeln('introduceți trei numere'); readln(a1, b1, c1); writeln('introduceți trei numere'); readln(a2,b2,c2); minim(a1,b1,c1, min1); minim(a2,b2,c2, min2); S:= min1 + min2; writeln('S=', S); SFÂRŞIT. Exemplu. Având în vedere două triple de numere: a 1, b 1, c 1 și a 2, b 2, c 2. Aflați valoarea sumei: S=min (a1, b1, c1) + min (a2, b2, c2) " width=" 640"

Var a1,b1,c1,a2,b2,c2, min1, min2, S: real;

Procedura minim (a,b,c: real; Var min: real);

dacă min b atunci min:= b;

dacă min c atunci min:= c;

writeln('introduceți trei numere');

readln(a1, b1, c1);

writeln('introduceți trei numere');

readln(a2,b2,c2);

minim(a1,b1,c1, min1);

minim(a2,b2,c2, min2);

S:= min1 + min2;

writeln('S=', S);

Exemplu. Având în vedere două triple de numere: a 1, b 1, c 1 și a 2, b 2, c 2. Aflați valoarea sumei: S=min (a1, b1, c1) + min (a2, b2, c2)


Funcţie este o subrutină al cărei rezultat este o anumită valoare.

  • Format de înregistrare :

funcţie (:

Sfârşit ;

  • În corpul funcției, numele funcției trebuie să fie atribuit rezultatului execuției acesteia.
  • La apelarea unei funcții, numele acesteia, împreună cu lista parametrilor actuali, trebuie incluse în expresie ca operand.

Programul vyrazenie;

function modul (a: real): real;

writeln('introduceți valoarea variabilei');

y:= modul(x-3) + modul(x+6);

writeln('y=', y);

Exemplu . Calculați valoarea expresiei: y = | x -3 | + | x +6 |

Recursiune în Pascal Profesor: Tlekhurai Yu.V. Instituția municipală de învățământ „Liceul Nr. 8” Ce vedeți în tablouri? Acest fenomen în artă se numește recursiunea „Pentru a înțelege recursiunea, trebuie mai întâi să înțelegeți recursiunea.” recursivitate - definirea parțială a unui obiect prin el însuși, definirea unui obiect folosind cele definite anterior.

Din punct de vedere științific:

Recursiune

- o metodă de definire a unei clase de obiecte sau metode prin specificarea mai întâi a unuia sau mai multor (de obicei simple) dintre cazurile sau metodele sale de bază și apoi specificarea pe baza acestora a regulilor de construcție a clasei care se definește. Peter Deutsch Peter Deutsch Iterație umană. Recursiunea este de la Dumnezeu. Recursiune în fizică Recursiune în limbă și literatură Un exemplu clasic de recursivitate infinită este două oglinzi aşezate una vizavi de cealaltă : în ele se formează două coridoare din reflexiile estompate ale oglinzilor. Un alt exemplu de recursivitate infinită este efect de autoexcitare (pozitiv feedback a construit unul asemănător ei și i-a predat sarcina). Recursiunea în programare este o modalitate de organizare a unui proces de calcul în care o procedură sau o funcție se referă la sine în timpul execuției operatorilor săi constitutivi. Pentru ca un astfel de apel să nu fie nesfârșit, textul subrutinei trebuie să conțină o condiție la atingere, la care nu mai are loc niciun apel. astfel, un apel recursiv poate fi inclus doar într-una din ramurile subrutinei.

Exemplu. Calculul factorialului unui număr natural Creați o funcție recursivă care calculează factorialul numărului n astfel: funcția f (n: întreg): longint;

începe dacă n = 1 atunci f:= 1 altfel f:= n * f(n -1);

(funcția f se numește singură) termina programul Pascal folosind recursiunea: Var n: întreg; a: longint; factorial de funcție (n: întreg): longint; începe dacă n = 1 atunci factorial:= 1 altfel factorial:= n * factorial (n -1); Sfârşit; Începeți scrierea(‘n=’); Readln(n); A:= factorial(n); Scrie(‘n!=’,a); Readln; Sfârşit. Leonardo din Pisa Fibonacci Numerele Fibonacci sunt elemente ale unei secvențe de numere 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …, în care fiecare număr următor este egal cu suma celor două precedente. Sarcină: Afișați o serie de numere Fibonacci constând din n elemente. Descrierea variabilelor: n – numărul de elemente ale seriei; a, b – valorile ultimelor două elemente ale seriei; c – variabilă buffer (“de rezervă”); i – contor. Algoritm pentru rezolvarea problemei: 1. Obțineți valoarea lui n. 2. Atribuiți a și b valorile 0 și respectiv 1 (acestea sunt primele numere ale seriei Fibonacci). Afișează-le pe ecran. 3. Începând de la al 3-lea element până la n: a) afișați suma lui a și b, b) stocați valoarea variabilei b în c, c) scrieți suma lui a și b la b, d) atribuiți lui a valoarea din c. Programul Pascal folosind iterația:<= 1 Then f:= n else f:= f(n– 1) + f(n - 2); end; Program chislaFibonacci; var n,i: integer; a: longint; function fib (n: integer): longint; begin If n <= 1 Then fib:= n else fib:= fib(n– 1) + fib(n - 2); End; begin write(‘n=’); readln(n); for i:=0 to n do begin A:= fib (n); write (‘ ’,a); end; readln; end. Домашнее задание Написать программу нахождения НОД двух натуральных чисел, используя алгоритм Евклида и рекурсию Даны два натуральных числа programul Fibonacci; var a,b,c,i,n: întreg;ÎNCEPE programul Fibonacci;= scrie ("n = "); readln(n); programul Fibonacci;,a:= 0;ÎNCEPE programul Fibonacci;>scrie ("n = "); readln(n); programul Fibonacci;,scrie(a," "); b:= 1; scrie(b," ");,pentru i:=3 până la n începeÎNCEPE programul Fibonacci;< scrie ("n = "); readln(n); programul Fibonacci;,scrie(a," "); b:= 1; programul Fibonacci;,scrie(a+b," "); Programul noddvyxchisel;

  • var a,b: longint;
  • function nod(a,b:longint): longint; begin If a = b Then nod:= a else if a>b then nod:= nod(a-b,b) else nod:= nod(a,b-a) End;
  • incepe sa scrie('a=');
  • readln(a);

scrie('b=');

readln(b); A:= nod(a,b); scrie(‘din cap=’,a); readln; Sfârşit. Problemă despre Turnurile din Hanoi. oÎn acest caz, următoarele reguli trebuie respectate cu strictețe: b Puteți muta doar un disc la un moment dat; c disc mai mare oÎn acest caz, următoarele reguli trebuie respectate cu strictețe: b nu poate fi plasat pe un disc mai mic; oÎn acest caz, următoarele reguli trebuie respectate cu strictețe: discul scos trebuie pus pe orice știft înainte ca celălalt disc să fie scos. Călugării budiști harnici poartă discuri de la turlă la turlă zi și noapte. Legenda susține că atunci când călugării își vor termina munca, va veni sfârșitul lumii. S-ar putea calcula că rezolvarea unei probleme cu 64 de discuri ar necesita 264-1 mișcări. Prin urmare, în ceea ce privește sfârșitul lumii, acesta va avea loc după cinci miliarde de secole, dacă ne gândim că un disc se mișcă într-o secundă. Cu toate acestea, atât problema, cât și legenda pentru ea au fost inventate în 1883 de către matematicianul Edouard Lucas de la Colegiul Saint-Louis. oÎn acest caz, următoarele reguli trebuie respectate cu strictețe: b Una dintre cele trei turle de diamant poartă 64 de discuri rotunde de aur. Discurile au raze diferite și sunt situate pe turlă în ordinea descrescătoare a razelor de la bază spre vârf. Este necesar să transferați discurile de la prima spire la a doua, folosind a treia spire dacă este necesar. c Sarcină. Creați un program recursiv care să rezolve problema pusă mai sus despre Turnurile din Hanoi cu numărul de discuri egal cu n (n = 1, 2, ...). b. Soluţie. Să introducem nume pentru turle: a, b, c . Lasă: succesiunea acțiunilor; Pasul 0:(definiți tipul variabilei); Pasul 1: (descrierea procedurii hanoi, care afișează secvența acțiunilor); Pasul 1.1:(mutați (n-1) discuri de la pilonul a la șurubul b); Pasul 1.2: (mută al n-lea disc de la a la c);

  • Pasul 1.3:(mutați (n-1) disc de la b la c);
  • (pașii 1.2-1.3 se efectuează recursiv);
  • Pasul 2:(programul principal);
  • Pasul 2.1:(introduceți numărul de discuri);
  • Pasul 2.2: (apelarea procedurii hanoi).
  • Rezolvarea problemei în programul Pascal bahnya;
  • var n: întreg; a,b,c: char; procedura hanoi(n: integer;a,b,c: char);
  • începe dacă n>0 atunci începe hanoi(n-1,a,c,b);
  • writeln ("Peremestit disc so sterzhnya ",a," na sterzhen" ",b); hanoi(n-1,c,b,a); sfârșit; sfârșit; Începe scrierea ("Vvedite naturalnoe chislo n"); readln ( n); a:="a"; b:="c";
  • X
Exponent La Dacă k=0, atunci grad(k,x)=1, Altfel grad(k,x)= x· grad(k-1,x) Program stepen;<>var y: real;

n: întreg;

pasul funcției(k:întreg, x:real): real;

începe Dacă k = 0 Atunci pas:= 1 alt pas:= x * pas(k-1,x) Sfârșit;

begin write(‘vvedite osnovanie stepeni x=’);

readln(y);

write(‘vvedite pokazatel stepeni k=’);

Subrutine: variabile globale și locale Toate subrutinele trebuie descrise în secțiunea de descriere. Fiecare subrutină trebuie să aibă un nume. Informațiile dintre programul principal și subrutine sunt transmise prin parametri globali (variabile) care operează în orice parte a programului și au un nume descris în programul principal. Subrutinele pot fi folosite în interior parametri locali(variabile) - numele și valorile lor au semnificație numai în limitele unei anumite subrutine și nu sunt disponibile pentru programul apelant

Slide 4

Parametri formali și actuali În descrierea subrutinelor, parametrii sunt indicați doar prin nume, deci sunt numiți formali. Ele nu au nicio semnificație până când nu este apelată subrutina. Ei rezervă spațiu doar pentru parametrii efectivi, fixându-le numărul și tipul de date. Tipuri de parametri actuali: Parametrii de valoare indică ce valoare ar trebui să fie atribuită unui anumit parametru de subrutină. După terminarea subrutinei, aceștia își preiau valorile anterioare, chiar dacă au fost modificate în subrutină. Parametrii variabili dintr-un subprogram iau locul celor formali, își pot modifica valoarea în timpul execuției subrutinei și pot salva modificările la ieșirea din subprogram (parametrii variabili sunt precedați de cuvânt cheie Var).

Slide 5

Slide 6

Descrierea procedurii Programul Pr1; Const...Type...Var...Procedure(); Partea descriptivă Început Corpul procedurii Sfârșit; ÎNCEPE...(); ... Sfârşit. Când este apelată o procedură, parametrii formali sunt înlocuiți cu cei reali.

Slide 7

Procedura de calcul a sumei a două numere program pr1; Useescrt; Var a,b,s:real; procedura summa(x,y:real;var z:real); începe z:=x+y; Sfârşit; începe clrscr; writeln("introduceți a,b"); readln(a,b); suma(a,b,s); writeln(" suma numerelor ",a:3:1," și ",b:3:1," = ",s:3:1); readln; Sfârşit. x,y,z – parametri formali, locali variabilele a,b,s– variabile globale a,b,s – parametri actuali x y z a b s Parametri de valoare Variabila parametru

Slide 8

Slide 9

Slide 10

Calculați valoarea expresiei a:=(3n!+2m!)/(m+n)! Pentru a găsi factorialul, ce tip de variabile este potrivit de utilizat? program pr2; Useescrt; Var m,n,x,y,z:întreg; a:real; procedura fapt (d:intger;var q:intger); var i:intger; începe q:=1; pentru i:=1 la d face q:=q*i; Sfârşit; începe clrscr; writeln("introduceți valorile n, m"); readln(n,m); fapt(n,x); fapt (m,y); fapt (m+n,z); a:=(3*x+2*y)/z; writeln("valoarea expresiei cu m= ",m:4," și n= ",n:4,"este egală cu",a:8:3); readln; Sfârşit. N!=1·2·3·…· N

Slide 11

Ieșirea de intrare a elementelor unui tablou unidimensional Funcția Random(X) generează un număr aleator de la 0 la X de tip întreg sau real (înainte de a apela funcția, acesta trebuie inițializat folosind procedura Randomize). Dacă parametrul X nu este specificat, rezultatul va fi de tip Real în intervalul de la 0,0 la 1,0. Pentru a obține o matrice de numere întregi numere aleatorii din intervalul aleatoriu(B-A+1)+A Sarcină: Proiectați intrarea elementelor unui tablou unidimensional utilizând un generator de numere aleatorii (interval de valori de la -10 la 20) și ieșirea elementelor ca procedură. Pentru A=-10 B=20 aleatoriu(20-(-10)+1)+(-10)

Slide 12

Slide 13

Slide 14

Descrierea funcției Funcțiile sunt concepute pentru a calcula o singură valoare, 1. Prin urmare, prima sa diferență este că procedura poate avea valori noi pentru mai mulți parametri, dar funcția are doar unul (va fi rezultatul). 2. A doua diferență este în titlul funcției. Constă din cuvântul FUNCȚIE, urmat de numele funcției, apoi o listă de parametri formali între paranteze, urmată de tipul rezultatului funcției, despărțiți de două puncte. 3. Corpul funcției trebuie să conțină cel puțin un operator de atribuire, unde numele funcției este în partea stângă, iar valoarea acestuia este în partea dreaptă. Funcție (): Descriptiv Început Funcție body:=; Sfârşit;

Slide 15

Calculați valoarea expresiei a:=(3n!+2m!)/(m+n)! programul fn2; Useescrt; Var m,n:intger; a:real; function fact(d:intger) :longint; var i:intger; q:longint; începe q:=1; pentru i:=1 la d face q:=q*i; fapt:=q; Sfârşit; începe clrscr; writeln("introduceți valorile n, m"); readln(n,m); a:=(3*fapt(n)+2*fapt(m))/fapt(m+n);; writeln("valoarea expresiei cu m= ",m:4," și n= ",n:4,"este egală cu",a:8:3); readln; Sfârşit.

Slide 16

Scrieți un program care va găsi ab, adică gradul bth numerele A, unde A și B sunt numere întregi și B>0, introduse de la tastatură. Compuneți un program prin înlocuirea funcției cu programul de procedură pr2; Useescrt; Var a,b:intger; c:longint; Funcția stepen(x,y:integer):longint; var i:intger; s:longint; începe s:=1; pentru i:=1 la y face s:=s*x; Pasul:=s; Sfârşit; începe clrscr; writeln("introduceți valorile a, b"); readln(a,b); C:=etapa(a,b); writeln("s=",s); readln; Sfârşit.

Slide 17

Slide 18

Mecanism de transmitere a parametrilor la funcții și proceduri Ce se va imprima prin procedură și ce prin program? Variabile globale Variabile locale a b 3 3 -3 Adresa c a b c 48 Adresa c A:=b+3 B:=3*a C:=a+b Starea C 24 5 8 Răspuns

Slide 19