Documente Academic
Documente Profesional
Documente Cultură
e x . 6 : a)y d), i) e x . 7 r> : : = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ven cifre> : : =<Cifr> { <Cifr> } nrfracionar> : : = <Secven cifre> . [<Secven cifre>] 3 , e x . 1 : a), d), e), h),j), l), n), o) mere ntregi care reprezint aceeai valoare: 18=-00418 21 = -00621 .3, ex. 2 > : : = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 egfr semn> : : =<Cifr> {<Cifr> } nr ntreg> : : = [ + | - ] <ntregfr semn> 3,ex. 3: a), b), c), e)} g), h),j), k), l), m), n), q), r), s), t), u) nere reale care reprezint aceeai valoare: 1=0.000314E4 4e+5=2514e+2=2514E+2=251400 .3=28130e-2=28130E-2 328e-3=591.328 ierea n form uzual este evideniat) .3, ex. 4 > : : = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 gfr semn> : : =<Cifr> { <Cifr> } lr ntreg> : : = [ + | - ] < ntreg fr semn> orscal> : : = <Numrntreg> irreal> ::= <Numrntreg> e<Factorscal> \ <Numrntreg> .<ntregfrA e < Factor scal>] 4 , e x . 2 : a), b), c), e),f), g), i) e x . 6 a , b , c : i n t e g e r ; p , q:text;
2.1, ex. 7: a), c), h) - ntregi; b), d), e),f), g), i) - reale 2.2, ex. 4 n P6 eroarea va fi semnalat la compilare, n P7 - la execuie. 2.6, ex. 5: a); c); g); h) 2.7, ex. 2
Numele tipului subdomeniu Tipul de baz
T2 T3 T4 T5 T6
2.7, ex. 3
Numele variabilei
i j k m
q
p r s t
Numele tipului subdomeniu Tipul de baz
-32768..32767 1. . 9 6. . 15 -100..100 Caracterele din tabelul ' A'ASCII . . ' Z' ' 0' . . ' 9' A,B,C,D,E,F,G,H C, D, E, F,G,H
Operaii
T2 T3 T4 T5 T6 T7
integer
integer
enumerare
2.7, ex. 4: b) Indice, Deviere; c) TI, T2; d) Luni 2.7, ex. 5: b) {k=ll, 11>10} c) {m=4-7=-3, - 3<1} e) {2-2=0, 0<1} f) eroare de compilare g) {8 + 4=12, 12> 10}
2.7, ex. 6:
a) z:=x-y; z:=x*y; z:=x mod y; b) z:=x-y; z:=x*y; z : =x div y; c) z: =x*y; d) z:=x+y; z:=x-y; z:=x*y; z : =x mod y; ejz:=x-y; z : =x div y; f)z:=x mod y; z:=x*y; g)toate greite /ij toate greite 2.8, ex. 3 1 0 2 TRUE FALSE TRUE 2.8, ex. 4 Linia cu eroare: Writeln (succ (i) ) Dup execuia programului modificat va fi afiat 32766. 2.8, ex. 5 Fiindc x nu este de tip ordinal, pentru astfel de date nu exist funciile predefinite ord(x), succ(x), pred(x). Dup eliminarea liniilor: writeln(ord(x)); writeln(pred(x)); writeln(succ (x)); n urma execuiei programului se va afia 1 0 2 2.9, ex. 1 Tipuri compatibile: TI i T5; T3 i T4; T2 i T7. 2.9, ex. 3: tipul subdomeniu 1...5 i tipul enumerare (Unu, Doi, Trei, Patru, Cinci) 2.9, ex. 4 Variabila x poate lua valorile TRUE i FALSE. Operaiile tipului: <, >, =, <=, >=, <>, and, or, not 2.9, ex. 7 Tipuri identice: TI i T2; T3 i T4; tipuri compatibile: TI, T2, T3, T4, T5, T6,
T7 i T8; T9 i TIO.
V
Mulimea de valori
Operaiile tipului
x'
+> -> *, /, <, >> =, <=, M u l i m e a n u m e r e l o r r e a l e 2. 9* 10- 3 9 , > = , <> . . . 1. 7* 1038 -3 2 7 6 8 . . 3 2 7 6 7 + , -, * , div, mod, <, >/ =, <=, >=, <>
y'
p c s
false, true
not
Galben, Verde, Albastru, Violet Elementare, Medii, Superioare Galben, Verde, Albastru 1 ,2 , 3 ... 9 <, >, =, <=, >, o <, >, =, <=, >=, <> <, >, =, <=/ >=, o </ >, <=/ >=/ <>
q
r
2.10, ex. 3 Nu este cunoscut identificatorul k. 2.11, ex. 1: a) a-real, b-boolean, c-integer; b) d-real, f - real, i - integer; c) f - char, q - boolean, m -ir de caractere; d) x - integer, y - integer, z - integer. 2.11, ex. 4 Constanta nmax nu poate fi modificat. 2.11, ex. 5 Tipul operandului nu permite operaia respectiv. 2.11, ex. 6
2
3 4 2.11, ex. 7 Mesajul de eroare apare din cauz c numele de constant apare n partea sting a instruciunii de atribuire. 2.11, ex. 8 Eroarea apare la ncercarea de a citi de la tastatur valoarea unei constante: readln(a).
? 3.1, ex. 1
c) sqr(a+b) d) vO*t+a*sqr(t)/2 e) (-b+sqrt(sqr(b)-4*a*c))/(2*a) l) abs (x) <3 f) cos (alfa)+cos (beta) m) (z<6) and (abs(q)>13.4) n) (x>0) and (y>8) and (R<15) a) sqr(a)+sqr(b) 3.1, ex. 3: a) a2+b2; b) 2a(b+c); , la + b d) e(x+y); e) cos (a-(3);
g)x >0vq< p; h)xAy. 3.1, ex. 4: e) {}; i) {+ -} 3.3, ex. 1: a) 9 b) 15 c) 8 d) 12 e) 12 f) 8 g) true h) true i) false j) false 3.3, ex. 3 vezi Tabelul
Tipul expresiei
writeln('Introduc eti 3 numere reale='); readln(x,y,z);wri teln(x*y+y*z); writeln(x*y<y*z); end. 3.4, ex. 2: intege a) r b) real c ) boolea n d) real e ) boolea n f) real g) real h) boolea n i) intege r i) real k) intege D r char m) intege n) r boolea n o) enumerar P) e real 3.4, ex. 3 program Ex3p7 6; var x,y:real; begin writeln('Introduceti 2 numere reale='); readln(x,y); writeln(1+1.0); writeln(1/1+1); writeln(9*3 mod 4); writeln(4*x>9*y); writeln(chr(65)); writeln(not(x>y)); writeln(pred(9)>succ(7) ) ; writeln(15 div ord(3)); writeln(trunc(x) +round(6*y) ) ; writeln(sqr(3)sqrt(16)) ; end.
Rezultatul afiat pe ecran (x=3, y~4) a)2. OOOOOOOOOOE+OO b) 2 .-OOOOOOOOOOE+OO c) 3 d) false
intego r real
a1 / 5.OOOOOOOOOOE+OO 34,ex. 4: ) integer ) integer i real ) real i boolean boolean 1 boolean ) char integer integer i boolean integer ) enumerare T4 Ienumerare T4 integer boolean boolean boolean 35,ex. 3: a); b); c);f); g)
35,ex. 4 ogramul va derula fr erori pentru valorile variabilei; din intervalul -2 5. . -5. 3.6, ex. 2
iele procedurii apelate Numrul de parametri actuali 4 2
Fr parametri
4 4
.7, ex. 3 U
2 2
3 3 -
4 4 1 2 3 4
P42 -1.2345678900E+03 -1. 2345678900E + 03 -1234.6 -1234.57 -1234.5679 -1.234 567 8 90 0E+03-1.234567 8900E+03-1. 234 567 8 900E + 03 -1.2345678900E + 03 -1. 2345678900KMJt -1.2345678900E+03 -1234.5679 -1234.5679 -1234.!J6'/'J P43
F F A A L L S S E E F F F A A A L L L S S S E E E
I ,
P44
a
a b
b c
c a a b c a b c a b i b c
3.7, ex. 4
os(alfa)+cos(beta) r(a+ b)
os(alfa+beta) 0 * t + a*sqr(t)/2
l) a b s ( x ) < 3
?/ f' * "H' > 1 > writeln(1234567890); writeln(123); writeln(123.0:5:1); writeln(' true'); writeln(1234567890); writeln(123:13); writeln(123.0:17:3); writeln('true':14); end.j) x l a n d x 2 o r x 3 a n d x4 k) n o t ( x l o r x 2 )
-b+sqrt(sqr(b)-4*a*c))/(2*a) m) (z<6) a n d (abs(q)>13.4)
cos (a-(3);
( a + b ) 2 a -
x > 0 v q < p ;
XA
y.
true true false false 3, ex. 3 vezi Tabelul 3.2 3, ex. 5 > g r a m E x 5 p 7 3
Tipul expresiei
3.4, ex. 2: a) integer b) real c) boolean d) real e) boolean f) real g) real h) boolean i) integer j) real k) integer l) char m) integer n) boolean o) enumerare p) real 3.4, ex. 3 program Ex3p7 6; var x,y:real; begin writeln (' Introduceti 2 numere reale=/') ; readln(x,y); writeln(1+1.0); writeln(1/1+1); writeln(9*3 mod 4); writeln(4*x>9*y); writeln(chr(65)); writeln(not(x>y)); writeln(pred(9)>succ(7)); writeln(15 div ord(3)); writeln(trunc(x)+round(6*y)); writeln(sqr(3)-sqrt(16)); end.
J) true
g ) false h) 5
O 27 , j) 5. OOOOOOOOOOE+OO
3.4, ex. intege r intege r real real boolea n /) boolea g) n boolea h) n char i) intege r j) intege k) r boolea n 0 intege m) r enumerare T4 n) enumerare T4 o) integer p) boolean q) boolean r) boolean
4: a ) b) c) d) e)
Programul
Numele procedurii apelate t eadln ( i t i r e D a t e
va
derula
far
erori
pentru
Parametrii
valorile
ll,i 1 1
w r i t. o .1. n w r i-1. e 1 n 1
-
1 2
P42
-1.2345678900E+03 -1.2345678900E+03 -1234.6 -1234.57 -1234.5679 -1.234 567 8 900E+03-1.234 5678 900E+03-1.234 5678 900E+03 -1.2345678900E+03 -1. 2345678900K -1.2345678900E+03 -1234.5679 -1234.5679 -1234.!
P43
F F A A L L S S E E F F F A A A L L L S S S E E E
P44
3.7, ex. 4
program Ex4p83; begin writeln(1234567890); writeln(123); writeln(123.0:5:1); writeln('true'); writeln (1234567890); writeln(123:13); writeln(123.0:17:3); writeln('true':14); end.i=l c=5 x=8.OOOOOOOOOOE+OO b) i-123 c=4 x=7.8900000000E+02 c) i=123 c=a x=8.9000000000E+02 3.10, ex. 2: flj x=l ^ x--21 c) x=32 x=l ej x=l e) x=-6 ) x=-2 fO ^ = 8 9 3.10, ex. 3
a)
program p50 a; var x,y:real; begin write('x='); if x>=0 then else writeln('y=', end.
b)
begin
program p50 b; var x,y real; write ( 'x='); readln(x); if x>5 then y:=x+3 else y:=x-3; writeln('y=',y) ;
begin end.
program p50_d; var x,y:real; begin write('x='); readln(x); if abs(x)>5 then y:=x else y:=2*x; writeln('y=' ,y) ; end.
3.10, ex. 4 n urma execuiei programului P51, pe ecran seva afia aceeai valoare care a fost dac aceasta este pozitiv, i valoarea dublat, n caz contrar. 3.10, ex. 5 Eroarea const n faptul c nainte de else s-a pus ; i mesajul respectiv indic e n structura instruciunii. 3.10, ex. 6 program Ex6p90; var i:integer; c:char; begin
writeln('Introduceti unul din numere: 1,5,10,50,100,500,1000 '); readln (i); c : = ' F ' ; if i=l then c:='I'; if i=5 then c:='V'; if i=10 then c:='X'; if i=50 then c:-'L'; if i=100 then c:='C'; if i=500 then c:='D'; if i=1000 then c:='M'; if c='F' then writeln('Numrul introdus nu se transforma in cifra roman else writeln(c); end.
3.11, ex. 4 |program p54; begin
write('a='); readln(a) write('b='); readln(b) write('Cod operaie ') if c='+' then writeln if c='-' then writeln if c='*' then writeln if c='/' then writeln writeln('Cod operaie end.
3.11, ex. 5
r r
program Ex5p92; var i:integer; c:char ; begin writeln('Introduceti unul din numere: 1,5,10,50,100,500,1000 '); readln(i); c: =' F' ; case i of 1 : : = ' c : I 5 : c : =' 10 : : c : =' 50 : : c : =' 100 : c :=' ='C 500 : c : D 100 : 0 c ='M end; if c='F' then writeln(' Numrul introdus nu se
P--/7 & - 0
n
end.3 4 5
6
5 4 3 2 1 3.12, ex. 4: a); c); d); f); g); i); j) 3.12, ex. 5: a) de 5 ori b) de 3 ori c) o dat d) niciodat 3.12, ex. 6 <-/' program Ex 6p 9 7; var c:char; begin for c:='A' to ' Z' do writeln(c,' ' ,ord(c)); readln; end.
3.12, ex. 7 a) program Ex7p97_a; vari,n,k,s,p:integer; begin
, y^write {' n=' ) ; readln (n) J f f l ; r s:=0;p:=l; - - for i:=l to n do begin k : = 2 * i - 1 ; s:=s+k; p : = p * k ; end; ^writeln (' suma=' , s, ' produs = ' , p) ; j end- LsasjP Le>ej)4^^ ; i l'Zuua b) program Ex7p97_b;
s- 2. fi
(AH
begin write('n=');readln(n)p ; r Ui v a b for i:=l to n do begin w , k:=2*i; f s:=s+k; o i p:=p * k; end; writeln(' suma=',s,' a p produs=' end. i c) w w program Ex7p97 c; w var i,n,k,s,p:integer; s begin u e write(' n=');readln (n); i s:=0;p:=1; f for i:=l to n do begin k:=3*i; s:=s+k; p : =p * k; end; writeln('suma=',s, ' produs=' end.
d)
r
b
i
,P) ;
rP) ;
numaru
program Ex7p97 d; var i,n,k,s,p:integer; begin 1 de valori pozitivewrite('n=/);readln(n); s:=0;p:=1; for i:=l to n do begin k:=4*i; s:=s+k; p:=p * k; end; writeln('suma=',s,' produs=' end. 3.12, ex. 8 program Ex8p97; var i,n,k:integer;s:real; begin write('n=');readln(n) ; media: =suma/ n; writel n (' suma=' , suma, ,media =/' ,media ) ; end e l s e w r i t e l n ( ' m e d i a * * * * ) ,
,p);
program Ex3pl00_c; var x,suma,media:real; i,n,k:integer;{k - numrul de valori negative} begin write(' n=');readln(n) ; suma:=0;k:=0; writeln('Dati r , n , ' numere'); for i:=l to n do begin write ('x = ' );readln(x); if x<0 then begin suma:=suma+x ; k:=k+l; end; end; if k>0 then begin media:=suma/k; writeln( suma=',suma,'media numerelor negative=', media); end else writeln('media numerelor negative=** * *'); readln; end.
3.13, ex. 4 (a-f )
begin write (' n=' ) ; reacJ 1 n (1 1 ) ; cifre:=0; cifre_pare:=0 ; ci fre_impare:=0; litere:=0; vocale:=0; consoane:=0; writeln (' Dati ',n,' caractere (litere mari sau cifr(') for i:=1 to n do begin write( ' c = r ) ;readln(c); case c of '0'..'9':begin cifre:=cifre+1; case c of '1','3','5','7','9':cifre_impare:=cifre_imparet else cifre_pare:=cifre_pare+l; end; end; ' A ' . . ' Z ' : begin litere:=litere+l; case c of ' A' , ' E' , ' I' , ' 0' , ' U' : vocale : =voc:,i I else consoane:=consoane+l; end; end; end; end; {for} writeln('Au fost date ' , cifre,' cifre'); writeln('Au fost date ',cifre_pare,' cifre p. 1 1 < ' ) writeln ('Au fost date ' , cifre_impare, ' cifre imp.ii writeln('Au fost date ' , litere,' litere'); writeln('Au fost date ',vocale,' vocale'); writeln('Au fost date ',consoane,' consoane'); end.
3.14, ex. 3 a)
write('xl = ');readln(xl);
write('x2=');readln(x2);
write('deltaX=');readln(deltaX) writeln('x=':10,'y=':20); writeln; x:=xl; while x<=x2 do begin y:=x/2; writeln(x:20,y:20); x:=x+deltaX; end; readln; end.
c)
d) program Ex3pl02_d; var x,y,xl,x2,deltaX:real; begin write('xl=');readln(xl); write('x2=');readln(x2) ; write('deltaX=');readln(deltaX) ; writeln('x=': 10, y=' :20) ; writeln; x : =x1 ; while x<=x2 do begin y:=4*x-13; writeln(x:20,y:20); x:=x+deltaX; end; readln; end.________________________________ 3.14, ex. 4 program Ex4pl02_a; var x,n, suma: integer; {r? - numrul de valori pozitive pare] media:real; begin suma:=0;n:=0; writeln('Tastati numere intregi pozitive.'); writeln('Sfirsitul secvenei e indicat prin introducerea numrului 0 r ) ; write('x=');readln(x); while x>0 do begin if x mod 2=0 then begin suma:=suma+x;
n:=n+l; end; write ('x=');readln(x) ; end; if n>0 then begin media:=suma/n; writeln('media numerelor pozitive pare=',media); end else writeln('media numerelor pozitive pare=****') readln; end. program Ex4pl02_b; var x,n,suma:integer; { n - numrul de valori
pozitive impare}
media:real; begin suma:=0 ;n:=0 ; writeln('Tastati numere intregi pozitive.'); writeln(' Sfirsitul secvenei e indicat prin introducerea numrului 0') ; write ('x=');readln(x) ; while x>0 do begin if odd(x) then begin suma:=suma+x; n:=n+l; end; write(' x=');readln(x); end; if n>0 then begin media:=suma/n; writeln('media numerelor pozitive impare=',media); end else writeln('media numerelor pozitive impare=1'); readln; end. _______ _____________
b)
3.14, ex. 5
program Ex5pl02_a; var x,y, xl,x2,deltaX:real; begin write('xl = ') ;readln(xl) ; write(' x2 = ');readln(x2) ; write(' deltaX=');readln(deltaX) ; writeln (' x=' : 10,' y=' : 20) ; writeln; x : =x 1 ; while x<=x2 do begin if x>3 then y:=x else y:=2*x; writeln (x:20,y:20); x:=x+deltaX; nd;
li-..
xl,x2,deltaX:real; begin write('xl=');readln(xl); write('x2=');readln(x2); write(' deltaX=');readln(deltaX); writeln('x=':10,'y=':20); writeln; x: =x 1 ; while x<=x2 do begin if x>=0 then y:=6*x else y:=4*x; writeln(x:20,y:20); x:=x+deltaX; end; readln; end.
c) program Ex5pl02_c; var x,y, xl,x2,deltaX:real; begin write('xl=');readln(xl); write(' x2=');readln(x2); write('deltaX=');readln(deltaX); writeln( x = r : 10,'y=':20); writeln; x:=xl; while x<=x2 do begin if x>5 then y:=x+6 else y:=x-6; writeln(x:20,y:20) ; x:=x+deltaX; end; readln; end.
d)_________________________________
progreuu Ex5pl02_d; var x,y, xl,x2,deltaX:real; n write('x 2 = ' );readln(x2) ; write('deltaX=');readln(deltaX); writeln('x = ' : 10,'y=' :20) ; writeln; x:=xl; while x<=x2 do begin if x>4 then begin y:=3-x; writeln(x:20,y:20); end else if x<=0 then begin y:=3+x; writeln(x:20,y:20); end else writeln(x:20, 'valoarea lui y nedeterminata'); x:=x+deltaX;
3.14, ex. 6 i:=il; while i>=i2 do begin writeln(ord(i)); i:=pred(i); end; 3.14, ex. 7 Echivalente snt a) i b), deoarece intervalul de Ia xl la x2 cu pasul AX conine exact n valori, unde n se calculeaz conform expresiei din b). 3.15, ex. 3 Nu snt echivalente, deoarece instruciunea compus din b) poate s nu fie executat ii niciodat, dar n cazul a) secvena <Instruciune 1>; ...<Instruciune n> cel puin o dat se execut. 3.15, ex. 4 program Ex4pl06; var c:char; cifre, cifre_pare,cifre_impare:integer; begin ci fre:=0; ci fre_pare:=0; c i f re^ impare:=0; writo1n('Tastati cifre zecimale ( sau *)' ); ropeat case c of ' 0 ' . 9 ':begin cifre:=cifre+1; case c of ' 1' ,' 3' ,' 5' , ' 7' ,' 9' : cifre_impare : =--ci f re impare f else cifre_pare:=cifre_pare+l; end; end; end; until c='*'; writeln('Au fost date cifre,' cifre'); writeln('Au fost date ',cifre_pare,' cifre pare'); writeln('Au fost date ',cifre_impare,' cifre impare'); end.
3.15, ex. 5___________________________________________________________
program Ex5pl06; var x:real; begin repeat write ('Tastati un numr real x, diferit de zero:'); readln(x); until x<>0; writeln('valoarea expresiei l/x este ' ,1/x); readln end.
3.15, ex. 6 Nu, deoarece n cazul instruciunii for exist o situaie (i 1 > i 2), n care instruciun w r i t e l n ( o r d ( i ) ) nu se execut niciodat, dar n cazul instruciunii r e p e a t acea instruciune se va executa cel puin o dat. 3.15, ex. 7 a)
program E x 7 p l 0 7 _ a ; var x , y , x l , x 2 , d e l t a X :r e a l ; begin write('xl=');readln(xl) ; write('x2=');readln(x2) ; write('deltaX=');readln(deltaX); writeln('x=':10,'y=' : 2 0 ) ; writeln; x : = x 1 ; repeat v : = 2 * x ; x:=x+deltaX; until x>x2; readln; end.
____________________________________________________________ ____
program Ex7pl07_b; var x, y, xl,x2,deltaX:real; begin write('xl=');readln(xl) ; write('x2 = ');readln(x2); write('deltaX=');readln(deltaX) ; writeln('x=':10,'y=':20); writeln; x:=x1; repeat y: =x/3+9; if x<=x2 then writeln(x:20, y:20) ; x:=x+deltaX; until x>x2; readln; end.
c)
program Ex7pl07_c; var x,y,xl,x2,deltaX:real; begin write('xl=');readln(xl); write('x2=');readln(x2); write('deltaX=');readln(deltaX); writeln('x=':10, ' y=' :20) ; writeln; x:=x1 ; repeat y:=x-4; if x<=x2 then writeln(x:20,y:20); x:=x+deltaX; until x>x2; readln; end.
________________________________________
program Ex7pl07_d; var x,y,xl,x2,deltaX:real; beain write( ' x2=');readln(x2); write('deltaX=');readln(deltaX); writeln('x=':10,'y=':20); writeln; x:=xl; repeat y:=x/8-6;
if x<=x2 then writeln (x:20,y:20); x:=x+deltaX; until x>x2; readln; end.
3.15, e x . 8 program Ex8pl07; var c:char; Litere,LitereMari,LitereMici:integer; begin Litere:=0; LitereMari:=0; LitereMici:=0; writeln ('Tastati literele alfabetului latin repeat write('c=');readln(c); case c of 'A'..'Z' :LitereMari:=LitereMari + l ; 'a' . .'z ' :LitereMici:=LitereMici + l; end; until c='*'; Litere:=LitereMari+LitereMici ; writeln('Au fost date Litere,' litere'); writeln('Au fost date ',LitereMari,' litere writeln('Au fost date ',LitereMici,' litere end. 3.16, ex. 3 program p72 modificat; var i:6..23; begin write('Cit e ora?');readln(i); if i>12 then if i>17 then writeln('Buna seara!') else writeln('Buna ziua!') else writeln('Buna dimineaa!');
sau *)'
mari'); mici');
integer integer
3.16, ex. 4integer intege r Eroarea n program se va produce n momentul depirii mulimii de valori d c l i m i r integer de tipul variabilei i. = array [ C u l o a r e ] of r e a 3.16, l ; Indicii Galben ex. 5 Verde Albastru Violet onente Cu ajutorul instruciunii g o t o se formeaz o repetare necondiionat, ceea ce cau/.c.i/a real formarea unui ciclu infinit alctuit din 2 instruciuni: afiarea valorii x pe ecran i c a l c u l u l noii valori a lui x. 3.16, ex. 6 Se formeaz un ciclu infinit, deoarece, n pofida faptului c valoarea variabilei i clc|.i nu mai satisface condiia de repetare w h i l e , instruciunea g o t o impune necondiion.ii o nou modificare a acesteia. 3.17, ex. 3 program p7 6 _ m o d i f i c a t ; type g r a d e = 0 . . 3 6 0 ; var alfa:grade; raza, lungimea, aria:real; begin w r i t e ( ' r a z a = ' ) ; r e a d l n ( r a z a ) ; if r a z a < 0 then w r i t e l n ( ' E r o a r e : r a z a < 0 ' ) else begin write(' alfa=');readln (alfa); lungimea:=pi*raza*alfa/180; writeln('lungimea=',lungimea); aria:=pi*sqr(raza)*alfa/360; writeln('aria=',aria); end; readln; end. ex. 1 Identificatorul tipului Tipul indicilor Tipul componentelor P = array [1..5] of
integer; Indicii Componente
4.1,
P 1. . 5 integer
R Culoare real
T boolean Culoare
real True
real
T = array [ b o o l e a n ] of C u l o a r e ;
4.1, ex. 3 <Tip tablou unidimensionabw- [packedj array ( . <7'//> >. ) of Not: Simbolurile terminale [ i ] din formul snt redate prin simb olurile echiv alente
ies|
4.1, ex. 5 type Zi = (L, Ma, Mi, J, Vi, S, D) ; Venit = array [Zi] of real; var v : Venit; {Componentele variabilei v reprezint venitul zilnic unei intreprinderi.} i: Zi; Vs , Vmed , Vmax, Vmin : real; begin writeln('Tastati venitul zilnic:'); for i:=L to D do begin write('venitul in ziua ',ord(i)+1,'='); readln(v[i]); end; { aj Se calculeaza venitul saptaminal al intreprinderi Vs:=0; for i: =L to D do Vs:=Vs+v[i]; Writeln(' Venitul saptaminal= ' , Vs:6:2); { b ) Se calculeaza media venitului zilnic.} Vmed := Vs/7; Writeln(' Media venitului zilnic=',Vmed:6:2) ; { Se determina venitul maxim si venitul minim.} Vmax := v[L] ; Vmin := v[L]; for i :=Ma to D do begin if v[i] > Vmax then Vmax := v[i]; if v[i] < Vmin then Vmin := v[i]; end; { c) Se indica zilele in care s-a obtinut cel mai mare venit.} writeln('Zile cu cel mai mare venit:'); ; .= . D (JQ { d ) Se indica zilele cu venitul cel mai mic.} writeln('Zile cu cel mai mic venit:'); for i := L to D do
if v[i] = Vmin then writeln(ord(i)+1); end. 4.1,ex. 6 type Ora = 0..23; Grade = -4 0..40; Temperatura = array [Ora] of Grade; var t : Temperatura; {Componentele variabilei t reprezint temperaturile masurate din ora in ora pe parcursul a 24 de ore. } i: ora; tmin , tmax : Grade; tmed : integer; begin writeln( ' Tastati temperaturile masurate'); for i := 0 to 23 do begin write('la ora ',i,' : '); readln(t[i]); end; { aj Se calculeaza temperatura medie.} tmed := 0; for i:= 0 to 23 do tmed := tmed+t[i]; tmed := round(tmed/24); writeln(' temperatura medie=', tmed); { b) Se determina maximul si minimul temperaturii.} tmax:=t[0]; tmin:=t[0]; for i := 1 to 2 3 do if t[i]<tmin then tmin := t[i] else if t[i]>tmax then tmax := t[i]; writeln('temperatura minima=', tmin,' temperatura maxima=',tmax); { c) Se indica ora (orele) la care s-a inregistrat temperatura maxima.} write('Ora (orele) la care s-a inregistrat temperatura minima:'); for i := 0 to 23 do if t[i] = tmin then write(i:3); writeln; { d) Se indica ora (orele) la care s-a inregistrat temperatura minima.} r i t n / M r i (r\ >-/~i 7 n I 7 -> -> for i := 0 to 23 do if t[i] = tmax then write(i:3); writeln; readln; end. 4.1, ex. 8. Corecte snt: a), d), e), i),j), m), r), u)
4.1, ex. 9 program Eratostene; type tablou=array[2..200] of boolean; var prim:tablou; i,k,n:integer; begin write('n='); readln(n); {In sita se depun toate numerele de la 2 la n } for
i:-2 to n do prim[i]:=true; for i:=2 to n do if prim[i] then begin k:=i; {Din sita se extrage cel mai mic numr while k+i<=n do begin k:=k+i; prim[k]:=false; {Din sita se elimin toti multiplii numrului i.} end; end; for i:=2 to n do if prim[i] then write(i,' ' ) ; readln; end.
4.2, ex. 1 n limbajul-standard tipul de date ir de caractere se definete printr-o constru forma <Nume tip> ::= packed array [ 1. . n ] of char . n Turbo PASCAI de date ir de caractere de lungime variabil se declar printr-o construcie de fo type <Nume tip> = string sau type <Nume tip> = string [nmax] ;und> este lungimea maxim pe care o pot avea irurile respective. 4.2, ex. 2 Asupra irurilor de tip string se poate efectua operaia de concatenare (juxt re), notat prin +. Lungimea curent a unei valori v de tip string poate fi a] ajutorul funciei predefinite length (v) care returneaz o valoare de tip integ asemenea, asupra irurilor de caractere snt admise operaiile relaionale <, <= > . >. o. 4.2, ex. 3 Mulimea de valori ale tipului de date packed array [ 1. . 5 ] of char este format din toate irurile ce conin exact 5 caractere, prin urmare, atribuirea S : =' S f a t este greit. , 4.2, ex. 4 g)____________________________ program Ex4a; var s:string; i,k:integ er; begin write( ' s = ' ) ;readln(s); k: =0 ; for i:=l to length(s) do if s[i]='A' then k:=k+l; writeln( ' i r u l conine ' , k , ' litere ' ' A ' ' ' ) ; end.
b)
Iprogram Ex4b; var s:string; i: integer; begin write(' s = ' ) ;readln(s) ; for i:=l to length(s) do if s[i]='A' then S[I] writeln ( ' i r u l modificat e s t e : ',s); end.
c)
program Ex4c; var srstring; i:inte ger; begin write(' s = ' ) ;readln(s) ; for i:=1 to length(s) do if s[i]='A' then S[I] writeln ( 'irul modificat este: ',s ); end.
d ) ___________________________________________________________
program Ex4d; var s:string; i,K:integ er; begin k: =0; for i : = 1 to l e n g t h ( s ) - l do if ( s [ i ] = ' M ' ) and ( s [ i + 1 ] = ' A ' ) then k : k t 1 ; w r i t e l n ('irul conine ',k,' silabe ''MA'''); end.
e)
program Ex4E; var s:string; i:integer; begin write(' s =');readln( s ) ; for i:= 1 to length(s)l do if (s[i]='M') and (s[i+l]='A') then begin s[i] :='T' ; s[i+1] :='A' end; writeln ( 'irul modificat este: ',s); end. _______________________________ _
fi_________________________________________
program E x 4 F ; var s:string; i:integer; begin write( ' s=');readln(s); for i:= length(s)-! downto 1 do if (s[i]='T') and (s[i+l]='0') then Delete (s,i,2) writeln ( 'irul modificat este: 'rs); end.
4.2, ex. 5
a) b) c) d) e)
'B' < 'A'; 'BB' > 'AA'; 'BAAAA' < 'AAAAA'; ' CCCCD' > 'CCCCA' ; 'A A' = ' AA' ;
f)
g) h) i) j)
4.2, ex. 6
begin
for i: =1 length(s) to do case s [i] 'A' . Y' s [i] :=succ (s [i] ) ; {fiecare litera de la 'A' pina la 'Y' se inlocuieste prin urmatoarea litera din alfabet;} 'Z' s[i]:='A'; {fiecare litera ' Z' se
/
inlocuieste prin litera s[i]:=' ' {fiecare spaiu se inlocuieste prin '.}
end; writeln('irul cifrat: ',s); end. 4.2, ex. 7 program var s : i: begin write ( for i: case 'B' Ex7; strin g integer;
's = ' ) (s); readln length(s) =1 to do s [i] . .' : s [i] : =pred (s [i] ) ; {fiecare Z' litera de la 'B' pina la ' Z ' se inlocuieste prin precedenta litera din alfabet;} 'A' s[i]:='A'; {fiecare litera 'A' se
f 1
prin spaiu.} end; writeln ( 'irul decodificat: ' , s) ; end. 4.2, ex. 8 program Ex8; type siruri=array[1..100] of string; var s:iruri; i,j,m:integer; c:string; gata:boolean; begin Writeln('Tasta ti numrul de iruri m='); readln(m) ; writeln (' Tasta ti irurile, formate din literali' mici ale alfabetului l.ilinM :
j:=j+l; until gata; writeln('irurile in ordine alfabetica:'); for i:=l to m do ); writeln(s[i] end. 4.2, ex. 9 program Ex9; var s:string; i, k: integer; begin write('Tastati irul compus din citeva p r o p o z i i i : readln (s); k: =0; for i:=l to length(s) do if (s[i]='.') or or (s[i]=f ?') then k : (s[i]=,!/) l writeln('irul conine ' propoziii') ; ' r k r end.
3.8, ex. 3 a) i=l c=2 x=3.0000000000E+00 3.7, ex. 3
P41
3.8, ex. 3 a) i = l c-2 3.11, ex. 6 Se va afia ATENIE 3.11, ex. 7 P56. Tipul real nu este ordinal, prin urmare, variabila x de tip real nu poate fi
folosit n calitate de selector n instruciunea case. P57. Constanta 5 nu aparine subdomeniului 1. . 4 , tipul anonim al variabilei i. P58. Constanta Albastru i selectorul s snt de tipuri incompatibile. 3.12, ex. 3 0 1