Sunteți pe pagina 1din 43

?

/ f' * "H' > 1 >

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

integer integer char enumerare, TI char


Mulimea de valori posibile

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

div, mod, <, >, <=, >=f o

integer
enumerare

</ >/ =/ <=, >=/ <> <> >/ <=, >=/ o

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

< , > , = , < = , > = , < > / and, or,

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

Modificarea programului prin excluderea acestei b) sqr(a)+2*a*b+sqr(b)

h) 2*pi*r i) pi*sqr(r) j) xl and x2 or x3 and x4 k) not(xl or x2)

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

3.2 3.3, ex. 5 program Ex5p7 3; var x,y,z:real; begin

Tipul expresiei

real real integer boolean char

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

Parametrii x, y, z, q f f, tt ' x=' , x, ' y=' , y

4 4

' x+y=' , x+y, ' sin (x) = ' , sin (x)

.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

program Ex4p8 3; begin

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)

n) ( x > 0 ) a n d ( y > 8 ) a n d (R<15) 31,ex. 3: a2+b2; 2a(b+c);


a + b a b ;
e(x+y).

cos (a-(3);
( a + b ) 2 a -

?/ f' * "H' > 1 >


b

x > 0 v q < p ;
XA

y.

1.1,ex. 4: e) {}; i) {+ -} 1.3, ex. 1: 9 15 8 12


12

true true false false 3, ex. 3 vezi Tabelul 3.2 3, ex. 5 > g r a m E x 5 p 7 3

?/ f' * "H' > 1 > ;

i r x , y , z : r e a l ; f i n 'iteln ('Introduceti 3 numere reale=' :adln(x,y,z);

Rezultatul afi?at pe ecran (x=3, y-4)

2.OOOOOOOOOOE+OO 2.0000000000E+00 false a

Tipul expresiei

real real integer boolean char

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.

boolean boolean integer integer real

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)

3.5, ex. 3: a); b); c); f); g) 3.5, ex. 4

Programul
Numele procedurii apelate t eadln ( i t i r e D a t e

va

derula

far

erori

pentru
Parametrii

valorile

variabilei j din intervalul -25. . - 5. 3.6, ex. 2


Numrul de parametri actuali 4 2 Fr parametri 4 4 3 1 3 4 2 4 1 3 2 1 4 1 3 2 2 4 3 3 4 4 1 1 2 2 1 3 3 2 4 4 3 'xr , x , ' y = ' , y 'x+ y= ',x+ y, 's in(x)= ',sin(x) x, y, z, q ff, tt

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)

readln(x); y:=2*x y:=x/2; y);

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

end. program p 5 0 c ; var x,y real;

begin end.

else y:=x+4; writeln('y=' , y) ;


_________________________

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

; readln(c) 'a+b=',a+b ) 'a-b=',ab) 'a*b=',a*b ) 'a/b=',a/b ) necunoscut '

else else else else ) ;

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

transforma in cifra romana') else writeln(c);

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;

k:=-k; s:=s+k/i; end; writeln( ' suma=', s) ; end.


Sau, ?in?nd cont de indica?ie:

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

>*" ' 1 i > t' i' -' i . t i.. 1111 ii l n ) :


for i:=1 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 pozitive=',media); end else writeln('media numerelor pozitive=** * *'); readln; writeln('Da ti ' , n , '
c)

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 )

program Ex4pl00; var crchar;

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)

program Ex3pl02_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);x: =x 1 ;


while x<=x2 do begin y:=x/3+2; writeln(x:20,y:20); x:=x+deltaX; end; readln; end.
b)

program Ex3pl02_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:=xl; while x<=x2 do begin y:=x/2; writeln(x:20,y:20); x:=x+deltaX; end; readln; end.
c)

program Ex3pl02_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: =x 1 ;


while x<=x2 do begin y:=3*x~4;

writeln(x:20,y:20); x:=x+deltaX; end; readln;


nd.

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_b; var x, y,


1 ___________________________________________

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;

end; readln; end.

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 Iridi c i i K.i I

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|

( i ) 4.1, ex. 4: a) x[1]+x[2]+x[3] fr) y[1]+Y[2]+y[3]+y[4]+y[5] c ) x[l]*x[2]*x[3]*x[4]*x[5] d ) abs (y [3] )


e)x[l] +y[l]

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

FALSE TRUE FALSE TRUE FALSE

f)

BB ' < 'B B' ;

g) h) i) j)

> 'Aa' > 'aA'; '123' = '321'; '12345' > '12345'.

F/\l : FAI .NI FAI,: :/ KAI,: :I FAI,: :I

4.2, ex. 6

program E x 6 ; var s:string;


i:integer;

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

inlocuieste prin litera ' Z ' } : s[i]:=' '{fiecare '-' se inlocuieste

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 :

write('s[',i; readln(s[i]); end;


LJ-

repeat gata:=true; for i:=1 to m-j do if s[i]>s[i+l] then begin

c:=s[i] ; s[i]:=s[i+1] ; s[i+1]:=c; gata:=false; end;

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

S-ar putea să vă placă și