x_informatica (in limba romana) (1)

Download X_Informatica (in Limba Romana) (1)

If you can't read please download the document

Upload: tania

Post on 28-Jan-2016

19 views

Category:

Documents


4 download

DESCRIPTION

exercitii la informatica, teme dein manualul clasei a9-a , probleme in turbo pascal si multe altele

TRANSCRIPT

CZU 004(075.3)G 80Elaborat conform curriculumului disciplinar n vigoare i aprobat prin Ordinul ministrului educaiei (nr. 211 din11 aprilie 2012). Editat din sursele financiare ale Fondului Special pentru Manuale.Comisia de experi: Teodora Gherman, dr. n pedagogie, confereniar, ef Catedr Tehnologii InformaionaleAplicate, Academia de Administrare Public de pe lng Preedintele Republicii Moldova;Gheorghe Chistruga,prof. c., grad did. superior, Liceul Teoretic Mihai Eminescu , Drochia; Mihai Chigai, prof. c., grad did. I,Liceul Teoretic Caplani, rn. tefan-VodRecenzeni: Gheorghe Ciocanu, dr. habilitat n informatic, profesor universitar, Universitatea de Stat din Moldova;Valeriu Cabac, dr. n fizic i matematic, confereniar universitar, Universitatea de Stat Alecu Russo , Bli;Mihai leahtichi, dr. n psihologie i pedagogie, confereniar universitar, UniversitateaLiber Internaional dinMoldova; Tatiana Cartaleanu, dr. n filologie, confereniar universitar, Universitatea Pedagogic de Stat IonCreang , Chiinu; Alexei Colbneac, Maestru n Arte, profesor universitar, Academia de Muzic, Teatru iArte Plastice, ChiinuRedactor: Vasile BahnaruCorectori: Mariana Belenciuc, Oana StoianRedactor tehnic: Nina DuduciucMachetare computerizat: Anatol AndrichiCopert: Vitaliu Pogolantreprinderea Editorial-Poligrafic tiina,str. Academiei, nr. 3; MD-2028, Chiinu, Republica Moldova;tel.: (+373 22) 73-96-16; fax: (+373 22) 73-96-27;e-mail: [email protected]:M Societatea de Distribuie a Crii PRO-NOIstr. Alba-Iulia, nr. 23/1A; MD-2051, Chiinu;tel.: (+373 22) 51-68-17, 51-57-49; fax: (+373 22) 50-15-81;e-mail: [email protected]; www.pronoi.mdToate drepturile asupra acestei ediii aparin ntreprinderii Editorial-Poligrafice tiina.Descrierea CIP a Camerei Naionale a CriiGremalschi, AnatolInformatic: Man. pentru clasa a 10-a / Anatol Gremalschi, Iurie Mocanu, Ludmila Gremalschi;Min. Educaiei al Rep. Moldova.Ch.: .E.P. tiina, 2012 (Tipogr. SEREBIA SRL).188 p.ISBN 978-9975-67-818-6004(075.3)ISBN 978-9975-67-818-6 Anatol Gremalschi, Iurie Mocanu,Ludmila Gremalschi. 2007, 2012 ntreprinderea Editorial-Poligrafictiina. 2007, 2012IntroducerePaginaRealConinuturiUmanistCUPRINS51. TIPURI DE DATE STRUCTURATE1.1. Tipuri de date tablou (array)1.2. Tipuri de date ir de caractere1.3. Tipuri de date articol (record)1.4. Instruciunea with1.5. Tipuri de date mulime (set)1.6. Generaliti despre fiiere1.7. Fiiere secveniale1.8. Fiiere textTest de autoevaluare nr. 1714182326313438442. INFORMAIA2.1. Cantitatea de informaie2.2. Codificarea i decodificarea informaiei2.3. Coduri frecvent utilizate2.4. Informaia mesajelor continue2.5. Cuantizarea imaginilor2.6. Reprezentarea i transmiterea informaieiTest de autoevaluare nr. 2464951566062666871737678798286889194963. BAZELE ARITMETICE ALE TEHNICII DE CALCUL3.1. Sisteme de numeraie3.2. Conversiunea numerelor dintr-un sistem n altul3.3. Conversiunea din binar n octal, hexazecimal i invers3.4. Operaii aritmetice n binar3.5. Reprezentarea numerelor naturale n calculator3.6. Reprezentarea numerelor ntregi3.7. Reprezentarea numerelor realeTest de autoevaluare nr. 34. ALGEBRA BOOLEAN4.1. Variabile i expresii logice4.2. Funcii logice4.3. Funcii logice frecvent utilizateTest de autoevaluare nr. 46. STRUCTURA I FUNCIONAREA CALCULATORULUI6.1. Schema funcional a calculatorului6.2. Formatul instruciunilor6.3. Tipuri de instruciuni6.4. Limbajul cod calculator i limbajul de asamblare6.5. Resursele tehnice i resursele programate ale calculatorului6.6. Memorii externe pe benzi i discuri magnetice6.7. Memorii externe pe discuri optice6.8. Vizualizatorul i tastatura6.9. Imprimantele6.10. Clasificarea calculatoarelor6.11. MicroprocesorulTest de autoevaluare nr. 67. REELE DE CALCULATOARE7.1. Introducere n reele7.2. Tehnologii de cooperare n reea7.3. Topologia i arhitectura reelelor7.4. Reeaua Internet7.5. Servicii InternetTest de autoevaluare nr. 7Pagina5. CIRCUITE LOGICE5.1. Circuite logice elementare5.2. Clasificarea circuitelor logice5.3. Sumatorul5.4. Circuite combinaionale frecvent utilizate5.5. Bistabilul RS5.6. Circuite secveniale frecvent utilizate5.7. Generatoare de impulsuriTest de autoevaluare nr. 5RealUmanistConinuturi98103103107110113116118121123126127130131135139141144145147150153155158163168Rspunsuri la testele de autoevaluare170Bibliografie1874INTRODUCEREImpresionantele realizri n domeniul informaticii, crearea supercalculatoarelor ia calculatoarelor personale, apariia ciberspaiului, a realitii virtuale i a Internetului presupun o cunoatere profund a principiilor de funcionare i a structurii calculatoarelor moderne. Din motive justificate, aceste principii au devenit o cluz demnde toat ncrederea ntr-o lume aflat mereu n schimbare.Manualul de fa are drept scop nsuirea de ctre elevi a cunotinelor necesare pentru prelcrarea automat a informaiei cu ajutorul calculatoarelor numerice.Capitolul 1 include un amplu material teoretic i practic referitor la definirea iprelucrarea datelor structurate: a tablourilor, a irurilor de caractere, a articolelor, a mulimilor i fiierelor. Snt prezentate metodele de creare i de prelucrare a fiierelor: asocierea fiierelor PASCAL cu fiiere externe, scrierea i citirea componentelor unui fiier.Capitolul 2 include expunerea unor cunotine fundamentale din teoria informaiei,i anume: cantitatea de informaie din mesajele continue i discrete, codificarea i decodificarea informaiei, prezentarea informaiei n calculator.n Capitolul 3 snt expuse cunotine fundamentale din domeniul aritmeticii sistemelor de calcul: sisteme de numeraie i operaii aritmetice n sistemul binar, reprezentareanumerelor naturale, numerelor ntregi i a numerelor reale n calculator.Capitolul 4 include unele cunotine fundamentale din domeniul algebrei booleene.Snt expuse noiunile de variabil, constant i funcii booleene, se examineaz funciilelogice frecvent utilizate.n Capitolul 5 se studiaz circuitele logice ale unui calculator numeric: sumatorul,comparatorul, codificatorul i decodificatorul, bistabilul, registrul, numrtorul, generatorul de impulsuri.Structura i funcionarea calculatorului snt descrise n Capitolul 6. Materialul esteexpus n aa mod nct structura unui calculator numeric poate fi neleas i nsuitmetodic, de la pori logice, dispozitive i uniti la sisteme de calcul. O atenie deosebit seacord interdependenei dintre conceptele matematice i realizarea fizic a echipamentelor unui sistem de calcul, interconexiunilor dintre resursele tehnice i cele programate alecalculatorului.n Capitolul 7 se studiaz reelele de calculatoare. Snt expuse tehnologiile de cooperare n reea, topologia i arhitectura reelelor locale, regionale i globale. Pentru a facilita explorarea ciberspaiului, acest capitol include cunotine fundamentale despreInternet i serviciile din reea: transferul fiierelor, pota electronic, paginile Web.Manualul este realizat n conformitate cu Curriculumul disciplinar de informatic pentrunvmntul liceal, aprobat prin Ordinul Ministerului Educaiei al Republicii Moldovaumanist i reanr. 244 din 27 aprilie 2010. Repartizarea materialului pe profilurileste reflectat n cuprinsul manualului.56Capitolul 1TIPURI DE DATE STRUCTURATE1.1. Tipuri de date tablou (array)Mulimea de valori ale unui tip de date array este constituit din tablouri (tabele). Tablourile snt formate dintr-un numr fixat de componente de acelai tip, denumit tip de baz. Referirea componentelor se face cu ajutorul unui indice.Un tip de date tablou se definete printr-o construcie de formatype = array [T1] of T2;unde T1 este tipul indicelui care trebuie s fie ordinal, iar T2 este tipul componentelor (tipul de baz) care poate fi un tip oarecare.Exemple:1)type Vector = array [1..5] of real;var x : Vector;2) type Zi = (L, Ma, Mi, J, V, S, D);Venit = array [Zi] of real;var v : Venit;z : Zi;3) type Ora = 0..23;Grade = -40..40;Temperatura = array [Ora] of Grade;var t : Temperatura;h : Ora;Structura datelor din exemplele n studiu este prezentat n figura 1.1.Fiecare component a unei variabile de tip tablou poate fi specificat explicit,prin numele variabilei urmat de indicele respectiv ncadrat de paranteze ptrate.Exemple:1) x[1], x[4];2) v[L], v[Ma], v[J];3) t[0], t[15], t[23];4) v[z], t[h].7Fig. 1.1. Structura datelor de tip Vector, Venit i TemperaturaAsupra componentelor datelor de tip tablou se pot efectua toate operaiileadmise de tipul de baz respectiv. Programul ce urmeaz afieaz pe ecran sumacomponentelor variabilei x de tip Vector. Valorile componentelor x[1], x[2], ...,x[5] se citesc de la tastatur.Program P77;{ Suma componentelor variabilei x de tip Vector }type Vector = array [1..5] of real;var x : Vector;i : integer;s : real;beginwriteln(Dati 5 numere: );for i:=1 to 5 do readln(x [i]);writeln( Ati introdus: );for i:=1 to 5 do writeln(x [i]);s:=0;for i:=1 to 5 do s:=s+x [i];writeln(Suma=, s);readln;end.Pentru a extinde aria de aplicare a unui program, se recomand ca numrulde componente ale datelor de tip array s fie specificate prin constante.De exemplu, programul P77 poate fi modificat pentru a nsuma n numerereale, n100:8Program P78;{ Extinderea domeniului de aplicare a programului P77 }const nmax = 100;type Vector = array [1..nmax] of real;var x : Vector;n : 1..nmax;i : integer;s : real;beginwrite(n=); readln(n);writeln( Dati , n, numere:);for i:=1 to n do readln(x [i]);writeln( Ati introdus: );for i:=1 to n do writeln(x [i]);s:=0;for i:=1 to n dos:=s+x[i];writeln(Suma=, s);readln;end.Tablourile bidimensionale se definesc cu ajutorul construcieitype = array [T1, T2] of T3;unde T1 i T2 specific tipul indicilor, iar T3tipul componentelor.Pentru exemplificare, n figura1.2 este prezentat structura datelor tipului:Matrice = array [1..3, 1..4] of realFig. 1.2. Structura datelor de tip MatriceComponentele unei variabile de tip tablou bidimensional se specific explicitprin numele variabilei urmat de indicii respectivi separai prin virgul i ncadrai de paranteze ptrate.De exemplu, n prezena declaraieivar m : Matrice;9notaia m[1,1] specific componenta din linia 1, coloana 1 (vezi fig.1.2); notaiam[1,2] specific componenta din linia 1, coloana 2; notaia m[i,j] specificcomponenta din linia i, coloana j.Programul ce urmeaz afieaz pe ecran suma componentelor variabilei m detip Matrice. Valorile componentelor m[1,1], m[1,2], ..., m[3,4] se citesc de latastatur.Program P79;{ Suma componentelor variabilei m de tip Matrice }type Matrice = array [1..3, 1..4] of real;var m : Matrice;i, j : integer;s : real;beginwriteln( Dati componentele m[i,j]: );for i:=1 to 3 dofor j:=1 to 4 dobeginwrite(m[, i, ,, j, ]=);readln(m[i,j]);end;writeln( Ati introdus: );for i:=1 to 3 dobeginfor j:=1 to 4 do write(m[i,j]);writeln;end;s:=0;for i:=1 to 3 dofor j:=1 to 4 dos:=s+m[i,j];writeln(Suma=, s);readln;end.n general, un tip tablou n-dimensional (n=1, 2, 3 etc.) se definete cuajutorul diagramelor sintactice din Bigura 1.3. Atributul packed (mpachetat)indic cerina de optimizare a spaiului de memorie pentru elementele tipuluiarray. Menionm c n majoritatea compilatoarelor actuale utilizarea acestuiatribut nu are niciun efect, ntruct optimizarea se efectueaz n mod automat.Fiind date dou variabile de tip tablou de acelai tip, numele variabilelor potaprea ntr-o instruciune de atribuire. Aceast atribuire nseamn copierea tuturor componentelor din membrul drept n cel stng.De exemplu, n prezena declaraiilorvar a, b : Matrice;10Fig. 1.3. Diagrama sintactic instruciuneaa:=beste corect.n exemplele de mai sus tipul de baz (tipul componentelor) a fost de fiecaredat un tip simplu. Deoarece tipul de baz poate fi, n general, un tip arbitrar,devine posibil definirea tablourilor cu componente de tip structurat. Considerm acum un exemplu n care tipul de baz este el nsui un tip array:Type Linie = array [1..4] of real;Tabel = array [1..3] of Linie;var L : Linie;T : Tabel;x : real;Variabila T este format din 3 componente: T[1], T[2] i T[3] de tipulLinie. Variabila L este format din 4 componente: L[1], L[2], L[3] i L[4] detipul real.Prin urmare, atribuirileL[1]:=x; x:=L[3]; T[2]:=L; L:=T[1]snt corecte.Elementele variabilei T pot fi specificate prin T[i][j] sau prescurtat T[i,j].Aici i indic numrul componentei de tip Linie n cadrul variabilei T, iar jnumrul componentei de tip real n cadrul componentei T[i] de tip Linie.Subliniem faptul c declaraiile de formaarray [T1, T2 ] of T3iarray [T1] of array [T2] of T311definesc tipuri distincte de date. Prima declaraie definete tablouri bidimensionale cu componente de tipul T3. A doua declaraie definete tablouri unidimensionale cucomponente de tipul array[T2] of T3.n programele PASCAL tablourile se utilizeaz pentru a grupa sub un singurnume mai multe variabile cu caracteristici identice.ntrebri i exerciii Precizai tipul indicilor i tipul componentelor din urmtoarele declaraii:type P = arrayCuloare =R = arrayS = arrayT = array[1..5] of integer;(Galben, Verde, Albastru, Violet);[Culoare] of real;[Culoare, 1..3] of boolean;[boolean] of Culoare;Reprezentai structura datelor de tipul P, R, S i T pe un desen (fig.1.1 i 1.2). Indicai pe diagrama sintactic din figura1.3 drumurile care corespund declaraiilor din exerciiul 1. Scriei formulele metalingvistice care corespund diagramei sintactice din figura1.3. Se consider declaraiile:type Vector = array [1..5] of real;var x, y : Vector;Scriei expresia aritmetic a crei valoare este:a) suma primelor trei componente ale variabilei x;b) suma tuturor componentelor variabilei y;c) produsul tuturor componentelor variabilei x;d) valoarea absolut a componentei a treia a variabilei y;e) suma primelor componente ale variabilelor x i y. Se consider declaraiiletype Zi = (L, Ma, Mi, J, V, S, D);Venit = array [Zi] of real;var v : Venit;Componentele variabilei v reprezint venitul zilnic al unei ntreprinderi. Elaborai un program care:a) calculeaz venitul sptmnal al ntreprinderii;b) calculeaz media venitului zilnic;c) indic ziua n care s-a obinut cel mai mare venit;d) indic ziua cu venitul cel mai mic. Se consider declaraiiletype Ora = 0..23;Grade = -40..40;Temperatura = array [Ora] of Grade;var t : Temperatura;12Componentele variabilei t reprezint temperaturile msurate din or n or peparcursul a 24 de ore. Elaborai un program care:a) calculeaz temperatura medie;b) indic maximul i minimul temperaturii;c) indic ora (orele) la care s-a nregistrat temperatura maxim;d) indic ora (orele) la care s-a nregistrat temperatura minim. Se consider declaraiiletype Oras = (Chisinau, Orhei, Balti, Tighina, Tiraspol);Zi = (L, Ma, Mi, J, V, S, D);Consum = array [Oras, Zi] of real;var C : Consum;r : Oras;z : Zi;Componenta C[r,z] a variabilei C reprezint consumul de energie electric aoraului r n ziua z. Elaborai un program care:a) calculeaz energia electric consumat de fiecare ora pe parcursul unei sptmni;b) calculeaz energia electric consumat zilnic de oraele n studiu;c) indic oraul cu un consum sptmnal maxim;d) indic oraul cu un consum sptmnal minim;e) indic ziua n care oraele consum cea mai mult energie electric;f) indic ziua n care oraul consum cea mai puin energie electric. Se consider declaraiiletype Vector = array [1..5] of real;Matrice = array [1..3, 1..4] of real;Linie = array [1..4] of real;Tabel = array [1..3] of Linie;var V : Vector;M : Matrice;L : Linie;T : Tabel;x : real;i : integer;Care dintre atribuirile ce urmeaz snt corecte?a) T[3]:=T[1];h)i:=M[1,2];b) M:=T;i)x:=V[4];c) L:=V;j)L[3]:=V[4];d) L[3]:=x;k)T[1]:=4;e) x:=i;l)T[2]:=V;f)m) L:=T[3];i:=x;g) L[3]:=i;n)T[1,2]:=M[1,2];13o) T[1,2]:=M[1,2];s)x:=M[1];p) M[1]:=4;t)L:=M[1];q) M[1,3]:=L[2];u)V[5]:=M[3,4];r) x:=T[1][2];v)L:=M[3,4]. Utiliznd un tip de date tablou, elaborai un program care realizeaz algoritmullui Eratostene pentru calcularea numerelor prime mai mici dect un numrnatural dat n (n200).1.2. Tipuri de date ir de caracteren limbajul-standard tipul de date ir de caractere reprezint un caz special altipului array i se definete printr-o construcie de forma ::= packed array [1..n] of char;Mulimea de valori ale tipului de date n studiu este format din toate irurilece conin exact n caractere.Exemplu:Program P80;{ Siruri de caractere de lungime constanta }type Nume = packed array [1..8] of char;Prenume = packed array [1..5] of char;var N : Nume;P : Prenume;beginN:=Munteanu;P:=Mihai;writeln(N);writeln(P);readln;end.Rezultatul afiat pe ecran:MunteanuMihaintruct irurile de lungime diferit aparin unor tipuri distincte de date, ncadrul programului P80 nu snt admise atribuiri de genul:N:= Olaru;P:= Ion.14n astfel de cazuri, programatorul va completa datele respective cu spaiul pnla numrul stabilit de caractere n, de exemplu:N:= Olaru ;P:= Ion .Valorile unei variabile v de tip packed array [1..n] of char pot fiintroduse de la tastatur numai prin citirea separat a componentelor respective:read(v[1]); read(v[2]); ...; read(v[n]).n schimb, o astfel de valoare poate fi afiat n totalitatea ei printr-un singurapel write(v) sau writeln(v).Subliniem faptul c irurile de caractere de tip packed array [1..n] ofchar conin exact n caractere, adic snt iruri de lungime constant. Evident, lungimea lor nu poate fi modificat pe parcursul derulrii programuluirespectiv. Acest fapt complic elaborarea programelor destinate prelucrrii unoriruri arbitrare de caractere.Pentru a elimina acest neajuns, versiunile actuale ale limbajului permit utilizarea irurilor de caractere de lungime variabil. n Turbo PASCAL un tip dedate ir de caractere de lungime variabil se declar printr-o construcie deforma:type = string;sautype = string [nmax];unde nmax este lungimea maxim pe care o pot avea irurile respective. n255 de clipsa parametrului nmax lungimea maxim se stabilete implicit, n mod obinuitaractere.Asupra irurilor de tip string se poate efectua operaia de concatenare (juxtapunere), notat prin semnul + . Lungimea curent a unei valori v de tip stringpoate fi aflat cu ajutorul funciei predefinite length(v) care returneaz o valoare de tip integer. Indiferent de lungime, toate irurile de caractere de tipstring snt compatibile.Exemplu:Program P81;{ Siruri de caractere de lungime variabila }type Nume = string [8];Prenume = string [5];NumePrenume = string;var N : Nume;P : Prenume;NP : NumePrenume;L : integer;15beginN:=Munteanu;P:=Mihai;NP:=N+ +P;N:=Olaru;P:=Ion;NP:=N+ +P;readln;end.L:=length(N);L:=length(P);L:=length(NP);L:=length(N);L:=length(P);L:=length(NP);writeln(N, L:4);writeln(P, L:4);writeln(NP, L:4);writeln(N, L:4);writeln(P, L:4);writeln(NP, L:4);Rezultatele afiate pe ecran:Munteanu8Mihai5Munteanu MihaiOlaru5Ion3Olaru Ion 914Se observ c pe parcursul derulrii programului n studiu lungimea irurilorde caractere N, P i NP se schimb.Asupra irurilor de caractere snt admise operaiile relaionale ,. irurile se compar component cu component de la stnga la dreapta nconformitate cu ordonarea caracterelor n tipul de date char. Ambii operanzitrebuie s fie de tip packed array [1..n] of char cu acelai numr decomponente sau de tip string. Evident, operanzii de tip string pot avea lungimiarbitrare.De exemplu, rezultatul operaieiAC < BAeste true, iar rezultatul operaieiAAAAC < AAAABeste false.O variabil de tip ir de caractere poate fi folosit fie n totalitatea ei, fie parial,prin referirea unui caracter din ir.De exemplu, pentru P=Mihai avem P[1]=M, P[2]=i, P[3]=h .a.m.d.Dup executarea secvenei de instruciuniP[1]:=P;P[2]:=e;P[3]:=t;P[4]:=r;P[5]:=uvariabila P va avea valoarea Petru.16Programul ce urmeaz citete de la tastatur iruri arbitrare de caractere iafieaz pe ecran numrul de spaii n irul respectiv. Derularea programului setermin dup introducerea irului Sfirsit .Program P82;{ Numarul de spatii intr-un sir de caractere }var S : string;i, j : integer;beginwriteln( Dati siruri de caractere: );repeatreadln(S);i:=0;for j:=1 to length(S) doif S[j]= then i:=i+1;writeln( Numarul de spatii=, i);until S= Sfirsit ;end.ntrebri i exerciii Cum se definete un tip de date ir de caractere? Ce operaii pot fi efectuate asupra irurilor de caractere? Comentai urmtorul program:Program P83;{ Eroare }var S : packed array [1..5] of char;beginS:=12345;writeln(S);S:=Sfat;writeln(S);end. Elaborai un program care:a) determin numrul de apariii ale caracterului A ntr-un ir;b) substituie caracterul A prin caracterul *;c) radiaz din ir caracterul B;d) determin numrul de apariii ale silabei MA ntr-un ir;e) substituie silabele MA prin silaba TA;f) radiaz din ir silaba TO. Precizai rezultatul operaiilor relaionale:a) B < A;c) BAAAA < AAAAA;b) BB > AA;d) CCCCD > CCCCA;17e) A A = AA;h) Aa > aA;f)i)123 = 321;j)12345 > 12345.BB < B B;g) A = a; Se consider iruri de caractere formate din literele mari ale alfabetului latin i spaii.Elaborai un program care afieaz irurile n studiu dup urmtoarele reguli:fiecare liter de la A pn la Y se nlocuiete prin urmtoarea liter din alfabet;fiecare liter Z se nlocuiete prin litera A;fiecare spaiu se nlocuiete prin -. Elaborai un program care descifreaz irurile cifrate conform regulilor din exerciiul6. Se consider m, m 100 iruri de caractere formate din literele mici ale alfabetuluilatin. Elaborai un program care afieaz pe ecran irurile n studiu nordine alfabetic. irul S este compus din cteva propoziii, fiecare terminndu-se cu punct, semnde exclamare sau semnul ntrebrii. Elaborai un program care afieaz pe ecrannumrul de propoziii din irul n studiu.1.3. Tipuri de date articol (record)Mulimea de valori ale unui tip de date record este constituit din articole(nregistrri). Articolele snt formate din componente, denumite cmpuri. Spredeosebire de componentele unui tablou, cmpurile pot fi de tipuri diferite. Fiecare cmp are un nume (identificator de cmp).Un tip de date articol se definete printr-o structur de formatype = record : T1; : T2;... : Tn;end;unde T1, T2, .., Tn specific tipul cmpurilor respective. Tipul unui nume de cmpeste arbitrar, astfel un cmp poate s fie la rndul lui tot de tip articol. Prin urmare, se pot defini tipuri imbricate.Exemple:1) type Elev = recordNume : string;Prenume : string;NotaMedie : real;end;var E1, E2 : Elev;182)type Punct = recordx : real; { coordonata x }y : real; { coordonata y }end;var P1, P2 : Punct;3) type Triunghi = recordA : Punct; { virful A }B : Punct; { virful B }C : Punct; { virful C }end;var T1, T2, T3 : Triunghi;Structura datelor din exemplele n studiu este prezentat n figura1.4.Fiind date dou variabile de tip articol de acelai tip, numele variabilelor potaprea ntr-o instruciune de atribuire. Aceast atribuire nseamn copierea tuturor cmpurilr din membrul drept n membrul stng. De exemplu, pentru tipurile de date i variabilele declarate mai sus instruciunileE1:=E2;T2:=T3;P2:=P1snt corecte.Fiecare component a unei variabile de tip record poate fi specificat explicit, prin numele variabilei i denumirile de cmpuri, separate prin puncte.Exemple:1) E1.Nume, E1.Prenume, E1.NotaMedie;2) E2.Nume, E2.Prenume, E2.NotaMedie;Fig. 1.4. Structura datelor de tip Elev, Punct i Triunghi193) P1.x, P1.y, P2.x, P2.y;4) T1.A, T1.B, T1.C, T2.A, T2.B, T2.C;5) T1.A.x, T1.A.y, T2.B.x, T2.B.y.Evident, componenta E1.Nume este de tip string; componenta P1.x este detip real; componenta T1.A este de tip Punct; componenta T1.A.x este de tipreal .a.m.d.Asupra componentelor datelor de tip articol se pot efectua toate operaiileadmise de tipul cmpului respectiv. Programul ce urmeaz compar notele mediia doi elevi i afieaz pe ecran numele i prenumele elevului cu nota medie maibun. Se consider c elevii au note medii diferite.Program P84;{ Date de tipul Elev }type Elev = recordNume : string;Prenume : string;NotaMedie : real;end;var E1, E2, E3 : Elev;beginwriteln( Dati datele primului elev: );write(Numele:);readln(E1.Nume);write(Prenumele:); readln(E1.Prenume);write(Nota medie:); readln(E1.NotaMedie);writeln( Dati datele elevului al doilea: );write(Numele:);readln(E2.Nume);write(Prenumele:); readln(E2.Prenume);write(Nota medie:); readln(E2.NotaMedie);if E1.NotaMedie > E2.NotaMedie then E3:=E1 else E3:=E2;writeln( Elevul cu media mai buna: );writeln(E3.Nume, , E3.Prenume, :, E3.NotaMedie : 5:2);readln;end.Orice tip de date record poate servi ca tip de baz pentru formarea altortipuri structurate.Exemplu:type ListaElevilor = array [1..40] of Elev;var LE : ListaElevilor;20Evident, notaia LE[i] specific elevul i din list; notaia LE[i].Nume specific numele acestui elev .a.m.d. Programul ce urmeaz citete de la tastaturdatele referitoare la n elevi i afieaz pe ecran numele, prenumele i nota mediea celui mai bun elev. Se consider c elevii au note medii diferite.Program P85;{ Tablou cu componente de tipul Elev }type Elev = recordNume : string;Prenume : string;NotaMedie : real;end;ListaElev = array [1..40] of Elev;var E : Elev;LE : ListaElev;n : 1..40;i : integer;beginwrite(n=); readln(n);for i:=1 to n dobeginwriteln( Dati datele elevului , i);write(Numele: ); readln(LE[i].Nume);write(Prenumele: );readln(LE[i].Prenume);write(Nota Medie: );readln(LE[i].NotaMedie);end;E.NotaMedie:=0;for i:=1 to n doif LE[i].NotaMedie > E.NotaMedie then E:=LE[i];writeln(Cel mai bun elev:);writeln(E.Nume, , E.Prenume, :, E.NotaMedie : 5:2);readln;end.n general, un tip de date articol se definete cu ajutorul diagramelor sintactice din figura1.5. n completare la articolele cu un numr fix de cmpuri, limbajulPASCAL permite utilizarea articolelor cu variante. Aceste tipuri de date se studiaz n cursurile avansate de informatic.ntrebri i exerciii Care este mulimea de valori ale unui tip de date articol? Indicai pe diagrama sintactic din figura 1.5 drumurile care corespund definiiilor tipurilor de date articol din programele P84 i P85.21Fig. 1.5. Diagrama sintactic Scriei formulele metalingvistice pentru diagrama sintactic din figura1.5. Se consider urmtoarele tipuri de datetype Data = recordZiua : 1..31;Luna : 1..12;Anul : integer;end;Persoana = recordNumePrenume : string;DataNasterii : Data;end;ListaPersoane = array [1..50] of Persoana;Elaborai un program care citete de pe tastatur datele referitoare la n persoane (n50) i afieaz pe ecran:a) persoanele nscute n ziua z a lunii;b) persoanele nscute n luna l a anului;c) persoanele nscute n anul a;d) persoanele nscute pe data z.l.a;e) persoana cea mai n vrst;f) persoana cea mai tnr;g) vrsta fiecrei persoane n ani, luni, zile;h) lista persoanelor care au mai mult de v ani;i) lista persoanelor n ordine alfabetic;j) lista persoanelor ordonat conform datei naterii;k) lista persoanelor de aceeai vrst (nscui n acelai an). Se consider n puncte (n30) pe un plan euclidian. Fiecare punct i este definitprin coordonatele sale. Distana dintre punctele i i j se calculeaz dup formula.Elaborai un program care afieaz pe ecran punctele distana dintre care estemaxim. Aria triunghiului este dat de formula lui Heron,22unde p este semiperimetrul, iar a, b i c snt lungimile laturilor respective.Utiliznd tipurile de date Punct i Triunghi din paragraful n studiu, elaborai un program care citete de la tastatur informaiile referitoare la n triunghiuri (n10) i afieazpe ecran:a) aria fiecrui triunghi;b) coordonatele vrfurilor triunghiului cu aria maxim;c) coordonatele vrfurilor triunghiului cu aria minim;d) informaiile referitoare la fiecare triunghi n ordinea creterii ariilor.1.4. Instruciunea withComponentele unei variabile de tip articol se specific explicit prin numelevariabilei i denumirile de cmpuri, separate prin puncte.De exemplu, n prezena declaraiilortype Angajat = recordNumePrenumeZileLucratePlataPeZiPlataPeLunaend;var A : Angajat;::::string;1..31;real;real;componentele variabilei A se specific prin A.NumePrenume, A.ZileLucrate,A.PlataPeZi i A.PlataPeLuna.ntruct numele A al variabilei de tip articol se repet de mai multe ori, acestmod de referire a componentelor este, n anumite situaii, incomod. Repetrileobositoare pot fi evitate cu ajutorul instruciunii with (cu).Sintaxa instruciunii n studiu este: ::= with {,} do Diagrama sintactic este prezentat n figura 1.6.n interiorul unei instruciuni with componentele uneia sau a mai multe variabile detip articol pot fi referite folosind numai numele cmpurilor respective.Exemplu:with A do PlataPeLuna:=PlataPeZi*ZileLucrateFig. 1.6. Diagrama sintactic a instruciunii with23Aceast instruciune este echivalent cu urmtoarea:A.PlataPeLuna:=A.PlataPeZi*A.ZileLucrateUtilizarea instruciunii with necesit o atenie sporit din partea programatorului, care este obligat s specifice univoc componentele variabilelor de tip articol. n interiorul unei instruciuni with, la ntlnirea unui identificator, primadat se testeaz dac el poate fi interpretat ca un nume de cmp al articoluluirespectiv. Dac da, identificatorul va fi interpretat ca atare, chiar dac n acelmoment este accesibil i o variabil avnd acelai nume.Exemplu:type Punct = recordx : real;y : real;end;Segment = recordA : Punct;B : Punct;end;var P : Punct;S : Segment;x : integer;n cazul nostru identificatorul x poate s reprezinte fie variabila x de tipinteger, fie cmpul P.x al articolului P.n instruciuneax:=1identificatorul x se refer la variabila x de tip integer.n instruciuneawith P do x:=1identificatorul x se refer la cmpul P.x al variabilei de tip articol P.ntruct variabila de tip articol S nu conine niciun cmp cu numele S.x, ninstruciuneawith S do x:=1identificatorul x va fi interpretat ca variabila x de tip integer.O instruciune de formawith v1, v2, ..., vn do ,unde v1, v2, ..., vn snt variabile de tip articol, este echivalent cu instruciuneawith v1 dowith v2 do24{...}with vn do .Evident, componentele variabilelor v1, v2, ..., vn trebuie specificate univoc prindenumirile cmpurilor respective.De exemplu, pentru variabilele P i S, declarate mai sus, putem scrie:with P, S dobeginx:=1.0;{ referire la P.x }y:=1.0;A.x:=0;{ referire la S.A.x }A.y:=0;B.x:=2.0; { referire la S.B.x }B.y:=2.0;end;n mod obinuit, instruciunea with se utilizeaz numai n cazurile n care seajunge la o reducere semnificativ a textului unui program.ntrebri i exerciii Indicai pe diagrama sintactic din figura 1.6 drumurile care corespund instruciunilor with din exemplele paragrafului n studiu. Care este destinaia instruciunii with? Utiliznd instruciunea with, excludei din programele P84 i P85 din paragraful precedent repetrile de genulE1.Nume, E1.Prenume, ...,LE[i].Nume, LE[i].Prenume. Se consider urmtoarele tipuri de date:type Angajat = recordNumePrenume : string;ZileLucrate : 1..31;PlataPeZi : real;PlataPeLuna : real;end;ListaDePlata = array [1..50] of Angajat;Plata pe lun a fiecrui angajat se calculeaz nmulind plata pe zi cu numrulde zile lucrate. Elaborai un program care:a) calculeaz plata pe lun a fiecrui angajat;b) calculeaz salariul mediu al angajailor inclui n list;c) afieaz pe ecran datele despre angajaii cu plata lunar maxim;d) afieaz lista angajailor ordonat alfabetic;e) afieaz lista angajailor n ordinea creterii plilor pe zi;25f) ordoneaz lista angajailor n ordinea creterii plilor pe lun;g) afieaz lista angajailor n ordinea creterii numrului de zile lucrate. Un cerc poate fi definit prin coordonatele x, y i raza r. Elaborai un program carecitete de la tastatur datele referitoare la n cercuri (n50) i afieaz pe ecran:a) coordonatele centrului i raza cercului cu aria maxim;b) numrul de cercuri incluse n cercul cu raza maxim i coordonatele centrelor respective;c) coordonatele centrului i raza cercului cu aria minim;d) numrul de cercuri n care este inclus cercul cu raza minim i coordonatelecentrelor respective.1.5. Tipuri de date mulime (set)Un tip de date mulime (set) se definete n raport cu un tip de baz caretrebuie s fie ordinal: ::= [packed] set of Valorile unui tip de date set snt mulimi formate din valorile tipului de baz.Dac tipul de baz are n valori, tipul mulime va avea 2n valori. n implementrile limbajului valoarea lui n este limitat, de regul n256.n PASCAL o mulime poate fi specificat enumerndu-i-se elementele ntreparantezele ptrate [ i ] , care in locul acoladelor din matematic.Notaia [] reprezint mulimea vid.Exemple:type Indice = 1..10;Zi = (L, Ma, Mi, J, V, S, D);MultimeIndicii = set of Indice;ZileDePrezenta = set of Zi;var MI : MultimeIndicii;ZP : ZileDePrezenta;Tipul ordinal Indice are n=10 valori: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.Tipul MultimeIndicii are 210 =1 024 de valori, i anume:[], [1], [2], ..., [1, 2], [1, 3], ...,[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].Prin urmare, variabila MI poate s aib oricare din aceste valori, de exemplu:MI:= [1, 3].Tipul ordinal Zi are n=7 valori: L, Ma, Mi, J, V, S, D. Tipul ZileDePrezenta are 27=128 de valori, i anume:[], [L], [Ma], [Mi], ..., [L, Ma], [L, Mi], ...,[L, Ma, Mi, J, V, S, D].26Variabila ZP poate s aib oricare dintre aceste valori, de exemplu,ZP:= [L, Ma, Mi, V]O valoare de tip mulime poate fi specificat printr-un constructor (generator) de mulime. Diagrama sintactic a unitii gramaticale este prezentat n fgura 1.7.Fig. 1.7. Diagrama sintactic Un constructor conine specificarea elementelor mulimii, separate prin virgule i incluse ntre paranteze ptrate. Un element poate s fie o valoare concret atipului de baz sau un interval de forma:...Valorile expresiilor n studiu precizeaz limitele inferioare i superioare aleintervalului.Exemple :1) [];2) [1, 2, 3, 8];3) [1..4, 8..10];4) [i-k..i+k];5) [L, Ma, V..D].Asupra valorilor unui tip de date mulime se pot efectua operaiile uzuale:+ reuniunea;* intersecia;- diferena,rezultatul fiind de tip mulime i operaiile relaionale:= egalitatea; inegalitatea;27= incluziunea;in apartenena,rezultatul fiind de tip boolean.Programul ce urmeaz afieaz pe ecran rezultatele operaiilor +, * i -, efectuate asupravalorilor de tip MultimeIndicii.Program P86;{ Date de tip MultimeIndicii }type Indice = 1..10;MultimeIndicii = set of Indice;var A, B, C : MultimeIndicii;i : integer;beginA:= [1..5, 8];{ A contine 1, 2, 3, 4, 5, 8 }B:= [1..3, 9, 10]; { B contine 1, 2, 3, 9, 10 }C:= [];{ C este o multime vida }C:=A+B;{ C contine 1, 2, 3, 4, 5, 8, 9, 10 }writeln(Reuniune);for i:=1 to 10 doif i in C then write(i:3);writeln;C:=A*B;{ C contine 1, 2, 3 }writeln( Intersectie );for i:=1 to 10 doif i in C then write(i:3);writeln;C:=A-B;{ C contine 4, 5, 8 }writeln( Diferenta );for i:=1 to 10 doif i in C then write(i:3);writeln;readln;end.Spre deosebire de tablouri i articole, componentele crora pot fi referite direct,respectiv prin indicii i denumiri de cmpuri, elementele unei mulimi nupot fi referite. Se admite numai verificarea apartenenei elementului la o mulime (operaia relaional in). n pofida acestui fapt, utilizarea tipurilor de datemulime mrete viteza de execuie i mbuntete lizibilitatea programelorPASCAL. De exemplu, instruciunea:if (c=A) or (c=E) or (c=I) or (c=O) or (c=U) then ...28poate fi nlocuit cu o instruciune mai simpl:if c in [A,E,I,O,U] then ...Un alt exemplu sugestiv este utilizarea tipurilor de date mulime n calculareanumerelor prime mai mici dect un numr natural dat n. Pentru aceasta se folosete algoritmul Ciurul (sita) lui Eratostene:1) n sit se depun numerele 2, 3, 4, ..., n;2) din sit se extrage cel mai mic numr i;3) numrul extras se include n mulimea numerelor prime;4) din sit se elimin toi multiplii m ai numrului i;5) procesul se ncheie cnd sita s-a golit.Program P87;{ Ciurul (sita) lui Eratostene }const n = 50;type MultimeDeNumere = set of 1..n;var Sita, NumerePrime : MultimeDeNumere;i, m : integer;begin{1} Sita:= [2..n];NumerePrime:=[];i:=2;repeat{2}while not (i in Sita) do i:=succ(i);{3}NumerePrime:=NumerePrime+[i];write(i:4);m:=i;{4}while m