Clasificarea si utilizarea tipurilor de date din programele PASCAL In cadrul programelor PASCAL variabilele au rolul de a rezerva in memoria calculatorului un spatiu in care urmeaza sa fie inscrise date primate de la utilizator sau rezultate in timpul diverselor prelucrari. Tipurile de date care pot fi luate de variabile sunt urmatoarele: Tip numeric Tip logic Tip caracter Rezervarea spatiului de memorie se face in partea de declaratii a programului PASCAl, spre eemplu avand: var k,i:integer ; r:char; produs:array[1..50] of string; pret:array[1..50]of integer; prettot:longint; In eemplul anterior, se folosesc tipuri de data numeric si c!aracter, identificatorii variabilelor fiind urmatorii: " , i , r , produs , pr#t , prettot $atele numerice in Pascal sunt de mai multe tipuri, dupa cum urmeaza: Pentru numere intregi: I%T&'&R ( permit stocarea numerelor intregiintre ( )*+,- si )*+,+ S./RTI%T ( permit stocarea numerelor intre 01*- si 1*+ L/%'I%T ( permit stocarea numerelor intre *12+2-),2- si *12+2-),2+ 34T& 0 0 permit sticarea numerelor intre 5 si *66 7/R$ ( permit stocarea numerelor intre 5 si ,66)6 Pentru numere reale: R&AL SI%'L& $/83L& &9T&%$&$ C/:P In cazul datelor reale afisarea se face folosind caracterul & urmat de o cifra, ceea ce inseamna de fapt 15 la puterea indicata de cifra respectiva. Iata un mic programel care ne afiseaza un numar introdus de la tastatura ca numar real: program afisarereal; uses crt; var num: real ; begin clrscr; * rite !"introduceti numarul pentru a fi afisat in format real n#"$; readln !num$; riteln !"formatul de data tip real este n#" , num$; readkey ; end. %od sursa: numar&re.pas Iata cum functioneaza: $aca se doreste ca utilizatorul sa poata citi numerele introduse intr0un format inteligibil se realizeaza formatarea datelor de iesire, specificandu0se numarul de caractere ce vor fi afisate I%AI%T& si $8PA virgula, astfel: %8:AR:I%AI%T&:$8PA I%AI%T& SI $8PA R&PR&;I%TA CI<R&. &9&:PL8: %8:AR:-:* este un numar cu - cifre inainte si doua cifre dupa virgula. Programul anterior care va fi transformat astfel incat sa afiseze o cifra introdusa de la tastatura folosind atat caracterul & cat si un format definit de utilizator arata asa: program afisarereal; uses crt; var num: real ; begin clrscr; rite !"introduceti numarul pentru a fi afisat in format real n#"$; readln !num$; riteln !"formatul de data tip real este n#" , num$; riteln !"formatul inteligibil n#" , num:':($; readkey ; end. ) Cod sursa: numar=re.pas Iata cum functioneaza: $atele de tip sir de caractere se declara folosind STRI%' > sir de caractere ?. Iata un programel care foloseste date de tip STRI%': program sircaractrere; uses crt; var nume , prenume : string ; begin clrscr; rite !"%are este numele tau de familie ) "$; readln !nume$; rite ! "care este prenumele tau ) "$; readln !prenume$; riteln !"*a bucur de cunostinta, ",nume," ", prenume$; readkey ; end. Cod sursa : sircarac.pas 2 Iata cum functioneaza: $atele de tip logic se declara folosind folosinf 3//L&A% Iata un programel care foloseste date de tip 3//L&A%: +,-.,/* 0-.1%2342; 5434 %,2; 6/, 2342 : 7--03/8 ; 23,*381 , 23,*38( , ,39502/21 , ,39502/2( :1823.3, ; 73.18 %0,4%,; :,12308 ! "4/ 186/2/* /;58/,3/ / ;-5/ 85*3,3 182,3.1."$; :,123 !"182,-;5%321 +,1*50 85*/, # "$; ,3/;08 !23,*381$; :,123 !"182,-;5%321 /0 ;-103/ 85*/, # "$; ,3/;08 !23,*38($; :,123 !"182,-;5%321 ,39502/250 /;58/,11 # "$; ,3/;08 !,39502/21$; ,39502/2(:#23,*381<23,*38( ; 1= ,39502/21#,39502/2( 2>38 73.18 2342 :# 2,53 ; :,12308 !"6/0-/,3/ ;3 /;36/, / %-,3%2125;1811 -+3,/2131 3423 " , 2342$; 38; 3043 73.18 2342 :# =/043 ; :,12308 !"6/0-/,3/ ;3 /;36/, / %-,3%2125;1811 -+3,/2131 3423 " , 2342$; 38; ; ,3/;?3@; 38;. %od sursa: testlogi.pas 6 Iata cum functioneaza: $aca programul PASCAL pe care intentionam sa il cream presupune operarea cu un numar mare sau foarte mare de date, acestea vor trebui declarate in cadtul unor variabile de tip tablou ( ARRA4 0 care poate avea 1 sau mai multe dimensiuni. Tabloul cu o dimensiune este de fapt un sir, tabloul cu doua dimensiuni este o matrice. $eclararea tablourilor se realizeaza astfel: Arra@ Atipindice1, tipindice*B of Tip&lementeC Tip&lemente reprezinta unul din tipurile de date despre care am vorbit in paginile anterioare. , Iata in continuare codul sursa al unui program care realizeaza un listing al produselor cumparate, pretul lor si pretul total: program calculproduse; uses crt; var k,i:integer ; r:char; produs:array[1..50] of string; pret:array[1..50]of integer; prettot:longint; begin clrscr; k:#0;Acate produse se introducB prettot:#0; riteln !"doriti sa introduceti date pe bon"$; riteln !"dCn ) "$; readln !r$; hile !upcase!r$#";"$ do begin rite !"introduceti numele produsului : "$; k:#k<1; readln !produs[k]$; rite !"introduceti pretul : "$; readln !pret[k]$; prettot:#prettot<pret[k]; riteln !"mai introduceti produse ) dCn "$ ; readln !r$; end ; riteln !"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"$; for i:#1 to k do begin riteln !produs[i],", pret: ",pret[i]$; end; riteln !"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"$; riteln !"D aveti de achitat: " , prettot:10 ," D" $ ; riteln !"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"$; rite !"apasati orice tasta pentru iesire..."$; readkey; end. %od sursa: bon.pas + 1ata cum functioneaEa programul: $ezvoltarea programului astfel incat sa permita operarea cu preturi cu virgula si sa permita si introducerea de cantitati pentru fiecare produs este prezentata in continuare: program calculproduse; uses crt; var k,i:integer ; r:char; produs: array[1..50] of string; pret: array [1..50] of real ; cantitate : array [1..50] of integer; valoare: array [1..50] of real ; prettot: real; begin clrscr; k:#0;Acate produse se introducB prettot:#0; riteln !"doriti sa introduceti date pe bon"$; riteln !"dCn ) "$; readln !r$; hile !upcase!r$#";"$ do begin rite !"introduceti numele produsului : "$; k:#k<1; readln !produs[k]$; rite !"introduceti cantitatea : "$; readln !cantitate[k]$; rite !"introduceti pretul : "$; readln !pret[k]$; valoare[k]:#cantitate[k]Dpret[k] ; prettot:#prettot<valoare[k]; riteln !"mai introduceti produse ) dCn "$ ; readln !r$; end ; riteln !"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"$; riteln !"DprodusDpretDcantitateDDDDDDDDDDDDDDDDDDDDDDDDvaloareD"$; - for i:#1 to k do begin riteln !"D",produs[i]," " ,pret[i]:':(, " ", cantitate[i] , ", valoare: ",valoare[i]:':(,"D"$; end; riteln !"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"$; riteln !"D aveti de achitat: " , prettot:10:( ," D" $ ; riteln !"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"$; rite !"apasati orice tasta pentru iesire..."$; readkey; end. %od sursa: bon&mare.pas Iata ce afiseaza la rulare pe ecran: In afara tipurilor de date prezentate, in PASCAL se mai pot folosi si tipuri de date definite de utilizator. $efiitiile de tip sunt plasate sub cuvantul c!eiei T4P&, in cadrul programului trebuint sa se gaseasca dupa definirea constantelor si inaintea declaratiilor de variabile. D Iata un program care foloseste T4P&: program inregistrari; uses crt; type elev#record nume: string; varsta: integer; end; var e:array [1..5] of elev; i:integer; cautv:integer; begin clrscr; riteln !"introduceti numele, varsta a 5 de elevi"$; for i:#1 to 5 do begin riteln !"introduceti numele"$; readln ! e[i].nume $; riteln !"introduceti varsta "$; readln ! e[i].varsta$; end ; rite !"introduceti varsta maFima cautata # "$; readln !cautv$; for i:#1 to 5 do begin if ! e[i].varsta G cautv$ then begin riteln !e[i].nume , " " , " " , e[i].varsta$; end; end; readkey; end. %od sursa: elevi.pas Iata ce afiseaza la rulare: 15 3ibliografie: 1. Suport curs *. $aniela Saru ( Algoritmi si limbaEe de programare >:anual? ( &ditura $idactica si Pedagogica, 3ucuresti , 1DD- ). '!id Pascal ( /FF/ SoftGare /radea ( SoftGare educational 11