Subprogram

Post on 23-Oct-2015

974 views 4 download

transcript

TemaTema:: SubprogrameSubprograme

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..

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 . .

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 .

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.

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.

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;

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.

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);

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.

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:

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;

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.

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.

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.

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)

{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]

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)

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.

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.

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.

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.

Î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;

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).

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

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.

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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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).

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.

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

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;

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.

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

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.

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.

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.

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

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

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