+ All Categories
Home > Documents > Subprogram

Subprogram

Date post: 23-Oct-2015
Category:
Upload: sklifoz
View: 974 times
Download: 4 times
Share this document with a friend
52
Tema Tema : : Subprograme Subprograme
Transcript
Page 1: Subprogram

TemaTema:: SubprogrameSubprograme

Page 2: Subprogram

Definiţia funcţieiDefiniţia funcţiei

FuncFuncţţiiiile –sunt subprograme care le –sunt subprograme care calculeazcalculeazăă şşi returneazi returneazăă o singur o singurăă valoare . Rezultatul funcvaloare . Rezultatul funcţţiei se iei se returneazreturneazăă prin numele func prin numele funcţţieiiei..

Page 3: Subprogram

ProprietăţiProprietăţi

1* Variabilele declarate în programul 1* Variabilele declarate în programul principal se numesc principal se numesc variabile globalevariabile globale şi pot şi pot fi utilizate şi în cadrul subprogramelor .fi utilizate şi în cadrul subprogramelor .

2* Subprogramele pot avea propria 2* Subprogramele pot avea propria secţiunea declarativă unde se pot defini secţiunea declarativă unde se pot defini constante ,tipuri , constante ,tipuri , variabilevariabile care pot fi care pot fi utilizate doar utilizate doar locallocal . .

Page 4: Subprogram

3* 3* Parametri formaliParametri formali sunt parametrii sunt parametrii declaraţi în antetul subprogramelor , ei sunt declaraţi în antetul subprogramelor , ei sunt disponibili numai în cadrul subprogramului disponibili numai în cadrul subprogramului dat .dat .

4*4*Parametrii actualiParametrii actuali sunt parametrii ce sunt parametrii ce participă la apelul subprogramului .participă la apelul subprogramului .

5* In calitate de 5* In calitate de parametrul actualparametrul actual poate fi o poate fi o variabilă , o expresie , un indentificator de variabilă , o expresie , un indentificator de subprogram .subprogram .

Page 5: Subprogram

6* Apelarea unei funcţii nu este o 6* Apelarea unei funcţii nu este o instrucţiune de sine stătătoare , ea trebuie instrucţiune de sine stătătoare , ea trebuie inclusă ca operant în cadrul unei expresii .inclusă ca operant în cadrul unei expresii .

7* 7* Parametri formaliParametri formali sunt disponibili numai sunt disponibili numai în cadrul funcţiei, numărul parametrilor în cadrul funcţiei, numărul parametrilor actuali trebuie să fie egali cu numărul actuali trebuie să fie egali cu numărul parametrilor formaliparametrilor formali din declaraţia din declaraţia funcţiei . Fiecare funcţiei . Fiecare parametru actualparametru actual trebuie trebuie să aibă tipul compatibil cu parametrul să aibă tipul compatibil cu parametrul formal corespunzator lui. formal corespunzator lui.

Page 6: Subprogram

8* Rezultatatul funcţiei este o unică 8* Rezultatatul funcţiei este o unică valoare de orice tip simplu sau string .valoare de orice tip simplu sau string .

9* Secţiunea instrucţiunelor din corpul 9* Secţiunea instrucţiunelor din corpul funcţiilor contine obligator ultima funcţiilor contine obligator ultima instrucţiune care atribuie rezultantul instrucţiune care atribuie rezultantul numelui funcţiei .numelui funcţiei .

10* Lista parametrilor formali poate 10* Lista parametrilor formali poate lipsi. lipsi.

Page 7: Subprogram

Antete corecte:Antete corecte:

function prima (a,b:integer):integer; function ThisOne:real; type cifre=0..9; function AB (z:char):cifre; Function AC (x,y:integer;z:char):integer; function AE(s:string):string; type nume = array[1..5] of real ; function AR (x:nume):real;

Page 8: Subprogram

Problema rezolvatăProblema rezolvată

1. Se dă un poligon cu 1. Se dă un poligon cu 8 laturi.8 laturi. Calculaţi aria Calculaţi aria acestui poligon,acestui poligon, utilizînd o formula utilizînd o formula deja cunoscuta.deja cunoscuta. Se Se presupune ca presupune ca distantele necesare distantele necesare sunt cunoscute sau le sunt cunoscute sau le putem masura.putem masura.

Page 9: Subprogram

Program P1;Program P1;Var Var GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF:real;GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF:real; S1,S2,S3,S4,S5,S6,ST:real;S1,S2,S3,S4,S5,S6,ST:real;Function arie (a,b,c:real):real;Function arie (a,b,c:real):real;Var p:real;Var p:real;BeginBeginP:=(a+b+c)/2;P:=(a+b+c)/2;Arie := sqrt(pArie := sqrt(p**(p-a)(p-a)**(p-b)(p-b)**(p-c));(p-c));End;End; BeginBeginWriteln(‘dati lungimea lat: Writeln(‘dati lungimea lat:

GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF’);GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF’);Readln(GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF);Readln(GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF);S1:=arie(GF,GH,HF);S1:=arie(GF,GH,HF);Writeln(‘arie primului triunghi =’,s1:8:2);Writeln(‘arie primului triunghi =’,s1:8:2);S2:=arie(HF,AF,HA);S2:=arie(HF,AF,HA);Writeln(‘arie AL II -lea triunghi =’,s2:8:2);Writeln(‘arie AL II -lea triunghi =’,s2:8:2);S3:=arie(AF,AB,BF);S3:=arie(AF,AB,BF);Writeln(‘arie AL III -lea triunghi =’,s3:8:2); Writeln(‘arie AL III -lea triunghi =’,s3:8:2);

Page 10: Subprogram

BeginBeginWriteln(‘dati lungimea lat: Writeln(‘dati lungimea lat:

GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF);GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF);Readln(GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF);Readln(GF,GH,HA,AB,BC,CD,DE,EF,HF,AF,BF,CF,DF);S1:=arie(GF,GH,HF);S1:=arie(GF,GH,HF);Writeln(‘arie primului triunghi =’,s1:8:2);Writeln(‘arie primului triunghi =’,s1:8:2);S2:=arie(HF,AF,HA);S2:=arie(HF,AF,HA);Writeln(‘arie AL II -lea triunghi =’,s2:8:2);Writeln(‘arie AL II -lea triunghi =’,s2:8:2);S3:=arie(AF,AB,BF);S3:=arie(AF,AB,BF);Writeln(‘arie AL III -lea triunghi =’,s3:8:2);Writeln(‘arie AL III -lea triunghi =’,s3:8:2);S4:=arie(BC,CF,BF);S4:=arie(BC,CF,BF);Writeln(‘arie AL IV -lea triunghi =’,s4:8:2);Writeln(‘arie AL IV -lea triunghi =’,s4:8:2);S5:=arie(CF,CD,DF);S5:=arie(CF,CD,DF);Writeln(‘arie AL V -lea triunghi =’,s5:8:2);Writeln(‘arie AL V -lea triunghi =’,s5:8:2);S6:=arie(DF,EF,DE);S6:=arie(DF,EF,DE);Writeln(‘arie AL VI -lea triunghi =’,s6:8:2);Writeln(‘arie AL VI -lea triunghi =’,s6:8:2);ST:=s1+s2+s3+S4+S5+S6;ST:=s1+s2+s3+S4+S5+S6;Writeln(‘arie totala =’,st:8:2);Writeln(‘arie totala =’,st:8:2);Readln;Readln;End.End.

Page 11: Subprogram

2. 2. Să se definească o funcţie pentru calcularea Să se definească o funcţie pentru calcularea factorialului şi să se calculeze cu ajutorul ei factorialului şi să se calculeze cu ajutorul ei combinări din n elemente luate cîte m. combinări din n elemente luate cîte m. Numerele m şi n sunt date. Numerele m şi n sunt date.

)!(!

!

mnm

nCmn

Formula de calcul:Formula de calcul:

Page 12: Subprogram

Formula de calcul: Formula de calcul: program p2;program p2;var n,m,d:integer;var n,m,d:integer; c:real;c:real;function Factorial(x:integer):longint;function Factorial(x:integer):longint;var i:integer; p:longint;var i:integer; p:longint;beginbeginp:=1;p:=1;for i:=1 to x dofor i:=1 to x dop:=p*i;p:=p*i;factorial:=p;factorial:=p;end;end;

Page 13: Subprogram

beginbegin

writeln ('dati n si m');writeln ('dati n si m');

readln (n,m);readln (n,m);

d:=n-m;d:=n-m;

c:=factorial(n)/(factorial(m)*factorial(d));c:=factorial(n)/(factorial(m)*factorial(d));

writeln ('combinari din ',n,' cite ',m,':',c:6:2);writeln ('combinari din ',n,' cite ',m,':',c:6:2);

readln;readln;

end.end.

Page 14: Subprogram

Subprogram cu proceduriSubprogram cu proceduri Procedurile sunt subprograme care pot returna unu, mai Procedurile sunt subprograme care pot returna unu, mai

multe sau nici un rezultatmulte sau nici un rezultat Lista parametrilor formali e formata din parametriLista parametrilor formali e formata din parametri

valoarevaloare si parametrisi parametri variabila.variabila.

Parametri valoare servesc pentru transmiterea de valori Parametri valoare servesc pentru transmiterea de valori din programul principal in procedura.din programul principal in procedura.

Parametri variabila servesc pentru intoarcerea Parametri variabila servesc pentru intoarcerea rezultatelor din procedura in programul principal.rezultatelor din procedura in programul principal.

Lista parametrilor formali poate fi vida.Lista parametrilor formali poate fi vida.

Page 15: Subprogram

Parametrii formali sunt tratati ca variabile Parametrii formali sunt tratati ca variabile locale.locale.

In cazul unui parametru valoare drept In cazul unui parametru valoare drept parametru local poate servi orice expresie de parametru local poate servi orice expresie de tipul respectiv, o constanta sau o variabila.tipul respectiv, o constanta sau o variabila.

In cazul unui parametru variabila drept In cazul unui parametru variabila drept parametri actuali pot fi utilizate numai variabile.parametri actuali pot fi utilizate numai variabile.

Page 16: Subprogram

Probleme cu mai multe proceduriProbleme cu mai multe proceduri:: Fie date 2 tablouri liniare din n elemente.Fie date 2 tablouri liniare din n elemente. Calculati elemenetele tabloului c,suma dintre Calculati elemenetele tabloului c,suma dintre

elemenetele corespunzatoare.elemenetele corespunzatoare.

N=6N=6 A 1 2 3 4 5 6A 1 2 3 4 5 6 B 7 8 9 10 11 12B 7 8 9 10 11 12 C 8 10 12 14 16 18C 8 10 12 14 16 18 (suma A+B=C) (suma A+B=C)

Page 17: Subprogram

{Bloc de rezolvare}{Bloc de rezolvare}

For i=1 to n doFor i=1 to n do

S=aS=a[i]+B[i][i]+B[i]

Page 18: Subprogram

Algoritmul de lucru:Algoritmul de lucru:

Introdu nIntrodu n Introdu el. Tab A (procedura citire) Introdu el. Tab A (procedura citire) Introdu el. Tab.B (procedura citire)Introdu el. Tab.B (procedura citire) Verificarea tab.A (procedura afisare)Verificarea tab.A (procedura afisare) Verificare tab.B (procedura afisare)Verificare tab.B (procedura afisare) Calcularea elementelor tab C (procedura Calcularea elementelor tab C (procedura

suma corespunzatoare)suma corespunzatoare) Afisarea tabloului C (procedura afisare)Afisarea tabloului C (procedura afisare)

Page 19: Subprogram

Program P1 ;Program P1 ; Const nmax=100 ;Const nmax=100 ; Type vector=array[1..nmax] of integer;Type vector=array[1..nmax] of integer; Var A,B,C :vactor; I,n:byte;Var A,B,C :vactor; I,n:byte; Procedure citire (var x : vector);Procedure citire (var x : vector); BeginBegin For i:=1 to n doFor i:=1 to n do Readln(x[i]) end; {citire}Readln(x[i]) end; {citire} Procedure afisare (x: vector);Procedure afisare (x: vector); BeginBegin For i:=1 to n doFor i:=1 to n do Write(x[i]:3)Write(x[i]:3) Writeln; end; {afisare}Writeln; end; {afisare} Procedure sumacorespunz (A,B: vector, var C:vector);Procedure sumacorespunz (A,B: vector, var C:vector); BeginBegin For i:=1 to n doFor i:=1 to n do C[i]:=a[i]+B[i];C[i]:=a[i]+B[i]; End; {suma}End; {suma} BeginBegin Write(‘n=’); readln(n);Write(‘n=’); readln(n); Writeln(‘dati’,n,’elem.a tabloului A’);Writeln(‘dati’,n,’elem.a tabloului A’); Citire(A);Citire(A); Writeln(‘dati’,n,’elem. A tab. B’)’Writeln(‘dati’,n,’elem. A tab. B’)’ Citire(B);Citire(B); Writeln(‘elementele tabloului A’);Writeln(‘elementele tabloului A’); Afisare(A);Afisare(A); Writeln(‘elementele tabloului B’);Writeln(‘elementele tabloului B’); Afisare (B);Afisare (B); Sumacorespunz(A,B,C);Sumacorespunz(A,B,C); Writeln(‘elementele tabloului C’);Writeln(‘elementele tabloului C’); Afisare(C);Afisare(C); Readln;Readln; End.End.

Page 20: Subprogram

Efecte colaterale

Prin efect colateral se intelege o atribuire (in Prin efect colateral se intelege o atribuire (in corpul functiei) a unei valori la o corpul functiei) a unei valori la o variabilitate variabilitate globala sau la un parametru globala sau la un parametru formal variabil.formal variabil.

Page 21: Subprogram

Program Program p110;p110; {Efect colateral – atribuire la variabila globala}{Efect colateral – atribuire la variabila globala} varvar a:integer;{variabila globala} a:integer;{variabila globala} functionfunction F(x:integer):integer; F(x:integer):integer; beginbegin F:= a*x;F:= a*x; A:=a+1; {atribuire defectuasa}A:=a+1; {atribuire defectuasa} EndEnd;; beginbegin A:=1;A:=1; Writeln(F(1)); {se afisheaza 1 }Writeln(F(1)); {se afisheaza 1 } Writeln(F(1)); {se afisheaza 2 }Writeln(F(1)); {se afisheaza 2 } Writeln(F(1)); {se afisheaza 3 }Writeln(F(1)); {se afisheaza 3 } Radln;Radln; End.End.

Page 22: Subprogram

Program p111;Program p111; {Efect colateral-atribuire la un parametru formal}{Efect colateral-atribuire la un parametru formal} var a:integer;var a:integer; function F (var x:integer): integer;function F (var x:integer): integer; beginbegin F:=2*x;F:=2*x; x:=x+1; {atribuire defectuasa}x:=x+1; {atribuire defectuasa} end; {F}end; {F} beginbegin a:=2;a:=2; Writeln(F(1)); {se afisheaza 4}Writeln(F(1)); {se afisheaza 4} Writeln(F(1)); {se afisheaza 5}Writeln(F(1)); {se afisheaza 5} Writeln(F(1)); {se afisheaza 6}Writeln(F(1)); {se afisheaza 6} Readln;Readln; End.End.

Page 23: Subprogram

ÎntrebăriÎntrebări::1.1.Care din antetele de functii sunt corecteCare din antetele de functii sunt corecte??a)a) function prima ( a, b integer):integer;function prima ( a, b integer):integer;b)b) function treia:1..10;function treia:1..10;c)c) function cincea ( a, b: char) ;function cincea ( a, b: char) ;d)d) function sasea ( s: real ) : array[1..10] of integer;function sasea ( s: real ) : array[1..10] of integer;e) function a treia;f) function ThisOne:real;g) function Another(s:char):0..10;h) type cifre=0..9; function AB (z:char):cifre;g) function AC(x,y:integer;z:char):integer;h) function AD(x:array[1..100] of integer ):integer;i) function AE(s:string):string;j) type nume = array[1..5] of real ; function AR (x:nume):real;

Page 24: Subprogram

2.2.Se consideră antetulSe consideră antetul:: function F (x function F (x : real; y : integer; z : char) :boolean;: real; y : integer; z : char) :boolean; Care din apelurile ce urmează sunt corecte?Care din apelurile ce urmează sunt corecte? a) a) F (3. 18, 4, ,a’) ;F (3. 18, 4, ,a’) ; b) b) F (4, 4, ,4’ );F (4, 4, ,4’ ); c) c) F (4, 4, 4)F (4, 4, 4);; d) d) F (4, 3.18, ,4’);F (4, 3.18, ,4’); e) e) F (3 . 18, 4, 4);F (3 . 18, 4, 4); f) f) F (‚3 . 18’, 4, ‚4’)F (‚3 . 18’, 4, ‚4’);; g) g) F (15, 21,’3’)F (15, 21,’3’);; h) h) F (15,21,3).F (15,21,3).

Page 25: Subprogram

Probleme propuseProbleme propuse

1.1. Elaborati o funcElaborati o funcţie care returnează valoarea logică true,ţie care returnează valoarea logică true, dacă dacă numerele reale a,b,c pot fi interpretate ca lungimile de laturi ale numerele reale a,b,c pot fi interpretate ca lungimile de laturi ale unui triunghi si false-in caz contrar.unui triunghi si false-in caz contrar.

2.2. Elaborati o funcElaborati o funcţie care returnează media aritmetică a patru ţie care returnează media aritmetică a patru numere întreginumere întregi..

3.3. Elaborati o funcElaborati o funcţie care returnează aria unui dreptunghi cu ţie care returnează aria unui dreptunghi cu lungimile laturilor a şi b, a,b € Rlungimile laturilor a şi b, a,b € R. Elaborati o func. Elaborati o funcţie care ţie care returnează lungimea cercului cu raza r,r € R.returnează lungimea cercului cu raza r,r € R.

4.4. Elaborati o funcElaborati o funcţie care calculează distanţa dintre două puncte ce ţie care calculează distanţa dintre două puncte ce au coordonatele carteziene(x1,y1),(x2,y2), x1,y2,x2,y2 € R.au coordonatele carteziene(x1,y1),(x2,y2), x1,y2,x2,y2 € R.

5.5. Elaboraţi o funcţie care cunoscînd temperatura in grade Elaboraţi o funcţie care cunoscînd temperatura in grade Kelvin,retunează temperatura exprimată in grade Celsius.Amintim Kelvin,retunează temperatura exprimată in grade Celsius.Amintim iem,că relatia dintre temperatura Celsius şi temperatura Kelvin este iem,că relatia dintre temperatura Celsius şi temperatura Kelvin este dată de formula:dată de formula:

tt00 celsiuscelsius = toKelvin +273,16= toKelvin +273,16

Page 26: Subprogram

6.6. Se consideră 5 numere întregi. Să se determine Se consideră 5 numere întregi. Să se determine numărul mai mare utilizînd funcţia care determină numărul mai mare utilizînd funcţia care determină numărul mai mare din două numere date. Alcătuiţi numărul mai mare din două numere date. Alcătuiţi programul.programul.

7.7.Elaboraţi un program cu funcţie care calculeaElaboraţi un program cu funcţie care calculeazza a perimetrul triunghiului fiind date coordonatele perimetrul triunghiului fiind date coordonatele carteziene a trei puncte din plan ce formeaza triunghi: carteziene a trei puncte din plan ce formeaza triunghi: (X1, Z1); (X2, Y2); (X3, Y3). În functie se calculeaza (X1, Z1); (X2, Y2); (X3, Y3). În functie se calculeaza distanţa dintre doua puncte.distanţa dintre doua puncte.

Page 27: Subprogram

8. 8. Elaboraţi un program cu funcţie care calculeaza lungimea Elaboraţi un program cu funcţie care calculeaza lungimea cercurilor cercurilor ccu razele r1, r2, r3, r1, r2, r3 € R. În funcţie se u razele r1, r2, r3, r1, r2, r3 € R. În funcţie se calculeaza lungimea unui cerc.calculeaza lungimea unui cerc.

99. Se considera 5 numere reale. Sa se determine numarul mic,. Se considera 5 numere reale. Sa se determine numarul mic, utilizind functia,utilizind functia, care determina numarul ma mic din trei care determina numarul ma mic din trei numere.numere. Alcatuiţi programulAlcatuiţi programul..

10. 10. Elaborati un program cu functie care calculeaza perimetrul a Elaborati un program cu functie care calculeaza perimetrul a trei triunghiuri cu lungime X1, Y1, Z1, X2, Y2, Z2 si X3, Y3, trei triunghiuri cu lungime X1, Y1, Z1, X2, Y2, Z2 si X3, Y3, Z3. In functie se calculeaza perimetrul unui triunghi cu laturile Z3. In functie se calculeaza perimetrul unui triunghi cu laturile a, b, c.a, b, c.

1111. Se considera tabloul A[..n], n<=100 de numere intregi. Alcatuiti . Se considera tabloul A[..n], n<=100 de numere intregi. Alcatuiti programul cu functii ce calculeaza numarul de elemente mai programul cu functii ce calculeaza numarul de elemente mai mare ca media aritimetica a tuturor lementelor din tabel.mare ca media aritimetica a tuturor lementelor din tabel.

In functia 1-suma elementelor.In functia 1-suma elementelor. In functia 2-numarul de elemente mai mare ca media.In functia 2-numarul de elemente mai mare ca media.

Page 28: Subprogram

77. Se considera tabloul A[1..n],n<=100 de numere intregi. . Se considera tabloul A[1..n],n<=100 de numere intregi. Alcatuiti programul care calculeaza cite elemente maxime sunt Alcatuiti programul care calculeaza cite elemente maxime sunt in tablou.in tablou. In functia 1-se calculeaza elementul maxim.In functia 1-se calculeaza elementul maxim. In functia 2- se calculeaza de cite ori se intilneste elementul In functia 2- se calculeaza de cite ori se intilneste elementul maximalmaximal..

88.. Se considera tabloul A[1..n],Se considera tabloul A[1..n], n<=100 de nn<=100 de nuumere intregimere intregi diferitediferite.. Alcatuiti programul cu functii ce efectueaza Alcatuiti programul cu functii ce efectueaza interschimbarea dintre elementul minim si primul element.interschimbarea dintre elementul minim si primul element. In functia 1-gasirea elementului minimIn functia 1-gasirea elementului minim In functia 2-se calculeaza locul elementului minim.In functia 2-se calculeaza locul elementului minim.

99. Se considera tabloul T[1..n, 1..n],. Se considera tabloul T[1..n, 1..n], n<=10 de numere intregi.n<=10 de numere intregi. Sa Sa se scrie un program cu functii care calculeaza media aritimetica se scrie un program cu functii care calculeaza media aritimetica a elementelor de pe diagonala principala si suma elementelor de a elementelor de pe diagonala principala si suma elementelor de pe diagonala sucundara.pe diagonala sucundara.

Page 29: Subprogram

1100. Se considera tabloul T[1..n, 1..n] n<=10 de numere intregi. De . Se considera tabloul T[1..n, 1..n] n<=10 de numere intregi. De alcatuit programul de aflare a diferentei dintre cea mai mare alcatuit programul de aflare a diferentei dintre cea mai mare medie aritimetica de pe fiecare coloana.medie aritimetica de pe fiecare coloana.

1111. Se considera tabloul T[1..n, 1..n],n<=10 de numere intregi.. Se considera tabloul T[1..n, 1..n],n<=10 de numere intregi. De De aflat suma maxima dupa fiecare coloana.aflat suma maxima dupa fiecare coloana.

12. Elaboraţi o procedură care afişeaza la ecran rădăcina ecuaţiei ax+b=0. Dacă există o infinitate de rădacini, se afişează mesajul INFINIT. Dacă rădăcini nu există, se afişează mesajul NU EXISTĂ.

13 Elaboraţi o funcţie care,cunoscînd lungimile a,b,c ale celor trei laturi, returnează perimetrul triunghiului. Se consideră, că a,b,c € R.

Page 30: Subprogram

14.Se consideră următoarea numerelor a zilelor saptămînii:

1→luni,2→marţi,3→miercuri,4→joi,5→vineri, 6→sîmbată,7→duminică

Elaboraţi o procedura care,cunoscînd numarul,afişaza pe ecran denumirea zilei.

15.Elaborati o functie care returneaza minimuml doua numere întregi a şi b , utilizînd urmatoare formula:

Min(a,b)=

2

// baba

Page 31: Subprogram

16.Elaboraţi o procedură care, cunoscînd numerele reale a şi b, afişaza la ecran unul din mesagele care urmează:

APROAPE AGAL-dacă /A-B/ ;

MAI MIC -dacă a-b < -0,01;

MAI MARE -dacă a-b > 0,01;

17.Elaboraţi o funcţie care returneaza numărul de rădacini reale ale ecuaţiei

Ax2 + bx +c=0 cu coificienţi reali.

18. Elaboraţi o procedura care afişeaza la ecran tabelul de adevar a funcţiei lgice y=x1& x2.

Page 32: Subprogram

19.Să se definească o funcţie pentru calcularea factorialului şi să se calculeze cu ajutorul ei combinării din n elemente luate cîte m . Numerele naturale m şi n sînt date.

20. Fiind date numerele naturale a,b,c să se determine cel mai mare divizor comun al acestor numere.

21.Definind funcţia-putere, să se calculeze valoarea expresiei S=1+0,52+0,54+0,56+0,58.

22.Se dau numerele naturale a,b,c,d.Să se determine pentru fiecare 3 dintre cele patru numere ,dacă ele pot fi lungimile laturilor unui triunghi. Dacă răspunsul este afirmativ , să se calculeze :

a) perimetrul triunghiului respectiv ; b) aria triunghiului respectiv.

Page 33: Subprogram

23.Să se definească functiile max(a,b) şi min(a,b) , care returnează repectiv cel mai mare şi cel mai mic dintre numerele reale a şi b, apoi să se calculeze valoarea expresiei:

aa) S=max(min(a1,a2), max(a3,a4))+min(max(a5 ,a6), min(a7,a8)), unde a1,a2, ... a8 sînt reale date;

b) T=min(a ,a )+min (a ,a ) + ... +min(a ,a )+max (a ,a )+max(a ,a ) + ... + max(a ,a), unde a1,a2 ... ,a10 sînt numere reale date.

Page 34: Subprogram

24.Se dau numerele reale pozitive a,b,c, care sunt lungimile laturilor unui triunghi sa se calculeze lungimile medianelor triunghiului.

Indicatie Lungimea mediamei corespunzătoare laturii de lungimea a se calculează cu ajutorul formulei ma=0,5 de scris radical şi formula 2 b2+2c2-c2.

25. Se dau numerele reale pozitive a,b,c care sunt lungimile laturelui unui triunghi sâ se calculeze înăltimile unui triunghi.

IndicatieSâ se utilizeze formula A=ha*a/2,unde A este aria triunghiului,iar ha inaltimea corespunyatoare laturii a.

Page 35: Subprogram

26. Se da o multime de puncte in plan. Sa se calculeze cea mai mica distanta dintre oricare 2 puncte posibile.

27.a. Sa se descrie o functie care va returna valoarea true;daca numarul natural dat este prim,altfel-valoarea false.

b.utiliyind functia din a. Sa se afiseye toti divizorii primi ai numarului natural dat n.

28.Se consideră 5 numere întregi. Să se determine numărul mai mare utilizînd funcţia care determină numărul mai mare din două numere date. Alcătuiţi programul.

29.Elaboraţi un program cu funcţie care calculeaza perimetrul triunghiului fiind date coordonatele carteziene a trei puncte din plan ce formeaza triunghi: (X1, Z1); (X2, Y2); (X3, Y3). În functie se calculeaza distanţa dintre doua puncte.

Page 36: Subprogram

30.Elaboraţi un program cu funcţie care calculeaza lungimea cercurilor u razele r1, r2, r3, r1, r2, r3 € R. În funcţie se calculeaza lungimea unui cerc.

31.Se considera 5 numere reale.Sa se determine numarul 31.Se considera 5 numere reale.Sa se determine numarul mic,utilizind functia,care determina numarul ma mic mic,utilizind functia,care determina numarul ma mic din trei numere.Alcatuiti programul.din trei numere.Alcatuiti programul.

Page 37: Subprogram

32.Se considera tabloul A[..n],n<=100 de numere intregi.Alcatuiti 32.Se considera tabloul A[..n],n<=100 de numere intregi.Alcatuiti programul cu functii ce calculeaza numarul de elemente mai programul cu functii ce calculeaza numarul de elemente mai mare ca media aritimetica a tuturor lementelor din tabel.mare ca media aritimetica a tuturor lementelor din tabel.

In functia 1-suma elementelorIn functia 1-suma elementelor In functia 2-numarul de elemente mai mare ca media.In functia 2-numarul de elemente mai mare ca media.

33.Se considera tabloul A[1..n],n<=100 de numere 33.Se considera tabloul A[1..n],n<=100 de numere intregi.Alcatuiti programul care calculeaza cite elemente maxime intregi.Alcatuiti programul care calculeaza cite elemente maxime sunt in tablou.sunt in tablou.

In functia 1-se calculeaza elementul maxim.In functia 1-se calculeaza elementul maxim. In functia 2- se calculeaza de cite ori se intilneste elementul In functia 2- se calculeaza de cite ori se intilneste elementul

maximal.maximal.

Page 38: Subprogram

34.Se considera tabloul A[1..n],n<=100 de nemere intregi.Alcatuiti 34.Se considera tabloul A[1..n],n<=100 de nemere intregi.Alcatuiti programul cu functii ce efectueaza interschimbarea dintre programul cu functii ce efectueaza interschimbarea dintre elementul minim si primul element.elementul minim si primul element.

In functia 1-gasirea elementului minimIn functia 1-gasirea elementului minim In functia 2-se calculeaza locul elementului minim.In functia 2-se calculeaza locul elementului minim.

35. Se considera tabloul T[1..n, 1..n],n<=10 de numere intregi.Sa 35. Se considera tabloul T[1..n, 1..n],n<=10 de numere intregi.Sa se scrie un program cu functii care calculeaza media aritimetica a se scrie un program cu functii care calculeaza media aritimetica a elementelor de pe diagonala principala si suma elementelor de pe elementelor de pe diagonala principala si suma elementelor de pe diagonala sucundara.diagonala sucundara.

Page 39: Subprogram

36. Se considera tabloul T[1..n, 1..n],n<=10 de numere 36. Se considera tabloul T[1..n, 1..n],n<=10 de numere intregi.De aflat suma maxima dupa fiecare coloana.intregi.De aflat suma maxima dupa fiecare coloana.

37. Se considera tabloul T[1..n, 1..n] n<=10 de numere 37. Se considera tabloul T[1..n, 1..n] n<=10 de numere intregi. De alcatuit programul de aflare a diferentei intregi. De alcatuit programul de aflare a diferentei dintre cea mai mare medie aritimetica de pe fiecare dintre cea mai mare medie aritimetica de pe fiecare coloana.coloana.

Page 40: Subprogram

38. Elaboraţi o procedură care afişează la ecran tabelul de adevăr a funcţiei logice

y = x1 x2

39. Se consideră următoarea numerotare a lunilor anului

1 ianuarie, 2 februarie, 3 martie, 4 aprilie, 5 mai, 6 iunie, 7 iulie 8 august, 9 septembrie, 10 octombrie, 11 noiembrie, 12 decembrie Elaboraţi o procedură care, cunoscînd numărul linii,

afişaza la ecran denumirea anotimpului respectiv.

Page 41: Subprogram

22. Elaboraţi o functie PASCAL care returnează valoarea funcţiei logice

y = (x1 x2 ) & (x1 x3).

22. Elaboraţi o funcţie PASCAL care returnează valoarea funcţiei logice

y = (x1 x2 ) & (x2 x3).

Page 42: Subprogram

23. Elaboraţi o funcţie PASCAL care returnează 23. Elaboraţi o funcţie PASCAL care returnează valoarea funcţiei valoarea funcţiei

y y = sin(3x2 – 5x + 8), x, y, z = sin(3x2 – 5x + 8), x, y, z R. R.

24. Elaboraţi o funcţie PASCAL care returnează 24. Elaboraţi o funcţie PASCAL care returnează valoarea funcţieivaloarea funcţiei

z = 1n (x2 + 2y2 + 1), z = 1n (x2 + 2y2 + 1), x, y, z x, y, z R. R.

Page 43: Subprogram

1.Elaboraţi o funcţie care calculează:1.Elaboraţi o funcţie care calculează:

a) a) aria triunghiuluiaria triunghiului b) b) lungimea segmentuluilungimea segmentului c) c) Lungimea cerculuiLungimea cercului d) d) aria cerculuiaria cercului e)e)aria dreptunghiuluiaria dreptunghiului

Page 44: Subprogram

2. 2. Elaboraţi o funcţie care calculeazăElaboraţi o funcţie care calculează::

a) Suma numerelor reale a) Suma numerelor reale a, b, c, d;a, b, c, d; b) media numerelor b) media numerelor îîntregi ntregi i, j, k, mi, j, k, m;; c) minimumul c) minimumul din numerele din numerele a, b, c, da, b, c, d;; d) numărul de vocale într-un şir de caractere;d) numărul de vocale într-un şir de caractere; e) e) numărul de consoane într-un şir de caractere;numărul de consoane într-un şir de caractere; f) rădăcina ecuaţiei ax + b = 0;f) rădăcina ecuaţiei ax + b = 0;

Page 45: Subprogram

Se consideră declaraţiile: Se consideră declaraţiile:

Var k, m, n : integer ;Var k, m, n : integer ;

a, b, c : real ;a, b, c : real ;

procedure P(i: integer; var j :integer;procedure P(i: integer; var j :integer;

x : real; var y : real );x : real; var y : real );

beginbegin

{...}{...}

end.end.

Page 46: Subprogram

Care din apelurile ce unmează sînt corecte?

a) P (k, m, a, b) ; b) P (3, m, a, b) ; c) P (k, 3, a, b) ; d) P ( m, n, a, b) ; e) P ( m, k, 6. 1, b); f) P ( n , m, 6, b) ; g) P (n, m, 6, 20 ) ; h) P ( a, m, b, c ) ; i) P (i, i, i, i ) ; j) P ( a, a, a ,a ). Argumentaţi răspunsul

Page 47: Subprogram

Executii in proceduriExecutii in proceduri 1. Program P1;1. Program P1; var : a,b : integer ;var : a,b : integer ; procedure P ( x: integer , var y : integer );procedure P ( x: integer , var y : integer ); begin begin x:=x+1;x:=x+1; y:=y+x ; writeln ( ’a=’ ‚a ‚’b=’ ‚y);y:=y+x ; writeln ( ’a=’ ‚a ‚’b=’ ‚y); end;end; begin begin a:=5;a:=5; b:=0;b:=0; P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (a+2,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a+2,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (b,a); writeln (’=a’ ‚a ‚’b=’ ‚b);P (b,a); writeln (’=a’ ‚a ‚’b=’ ‚b); P (a,a) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,a) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (b‚b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (b‚b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); end.end.

Page 48: Subprogram

2.Program P2;2.Program P2; var : a,b : integer ;var : a,b : integer ; procedure P (var x: integer ;y : integer );procedure P (var x: integer ;y : integer ); begin begin x:=x+1;x:=x+1; y:=y+x ; writeln ( ’a=’ ‚a ‚’b=’ ‚y);y:=y+x ; writeln ( ’a=’ ‚a ‚’b=’ ‚y); end;end; begin begin a:=5;a:=5; b:=0;b:=0; P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (a+2,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a+2,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (b,a); writeln (’=a’ ‚a ‚’b=’ ‚b);P (b,a); writeln (’=a’ ‚a ‚’b=’ ‚b); P (a,a) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,a) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (b‚b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (b‚b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); end.end.

Page 49: Subprogram

3.Program P3;3.Program P3;

var : a,b : integer ;var : a,b : integer ; procedure P (x: integer ;y : integer );procedure P (x: integer ;y : integer ); begin begin x:=x+1;x:=x+1; y:=y+x ; writeln ( ’a=’ ‚a ‚’b=’ ‚y);y:=y+x ; writeln ( ’a=’ ‚a ‚’b=’ ‚y); end;end; begin begin a:=5;a:=5; b:=0;b:=0; P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (a+2,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a+2,b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (b,a); writeln (’=a’ ‚a ‚’b=’ ‚b);P (b,a); writeln (’=a’ ‚a ‚’b=’ ‚b); P (a,a) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (a,a) ; writeln (’=a’ ‚a ‚’b=’ ‚b); P (b‚b) ; writeln (’=a’ ‚a ‚’b=’ ‚b);P (b‚b) ; writeln (’=a’ ‚a ‚’b=’ ‚b); end.end.

Page 50: Subprogram

4.Program 4.Program PP1;1;

var x,y:integer;var x,y:integer; procedure P(a:integer; var b:integer);procedure P(a:integer; var b:integer); beginbegin a:=a+3;a:=a+3; b:=b+a;b:=b+a; end;end; beginbegin x:=0; y:=0;x:=0; y:=0; p(x,y); write(x,y);p(y,x);write(x,y);p(x,y); write(x,y);p(y,x);write(x,y); p(x,x); write(x,y);p(y,y);write(x,y);p(x,x); write(x,y);p(y,y);write(x,y); end.end. Raspunsuri posibile:Raspunsuri posibile: a)0363153159a)0363153159 b)0363036369b)0363036369 c)0303163169c)0303163169 d)0003153159d)0003153159

Page 51: Subprogram

1.Determinati ce va tipari urmatorul program:1.Determinati ce va tipari urmatorul program: Program test;Program test; Var a,b,c,d:integer;Var a,b,c,d:integer; Procedure P(var b:integer; c:integer);Procedure P(var b:integer; c:integer); Var d:integer;Var d:integer; BeginBegin A:=5; b:=6; c:=7; d:=8;A:=5; b:=6; c:=7; d:=8; Writeln(a,b,c,d);Writeln(a,b,c,d); End;End; BeginBegin a:=1; b:=2; c:=3; d:=4;a:=1; b:=2; c:=3; d:=4; P(a,b); writeln(a,b,c,d);P(a,b); writeln(a,b,c,d); End.End.

A)5 6 7 8 B)6 6 3 8 C)5 6 7 8 D)nici un raspuns corectA)5 6 7 8 B)6 6 3 8 C)5 6 7 8 D)nici un raspuns corect 1 2 3 4 6 6 3 4 6 2 3 41 2 3 4 6 6 3 4 6 2 3 4

Page 52: Subprogram

2. Program T3;2. Program T3;

var a,b,c,d:interer;var a,b,c,d:interer;

procedure P(var b:integer; c:integer);procedure P(var b:integer; c:integer);

beginbegin

a:=2*a; b:=2*b; c:=2*c; d:=2*d;a:=2*a; b:=2*b; c:=2*c; d:=2*d;

writeln (a,b,c,d);writeln (a,b,c,d);

end;end;

beginbegin

a:=1; b:=1; c:=a; d:=1;a:=1; b:=1; c:=a; d:=1;

P(a,b); writeln (a,b,c,d);P(a,b); writeln (a,b,c,d);

P(c,d); writeln (a,b,c,d);P(c,d); writeln (a,b,c,d);

End.End.

4122 b) 4422 c) 4422 d) 41224122 b) 4422 c) 4422 d) 4122

4412 4112 4112 41124412 4112 4112 4112

8244 8244 4244 82448244 8244 4244 8244

8124 8124 8128 81288124 8124 8128 8128


Recommended