Informatica
Integrated developing environment - turbo pascal (idetp)INTEGRATED Developing Environment - TURBO PASCAL (IDETP) Mediu de dezvoltare de programe este un sistem integrat de elaborare a programelor in care toaecomponentele sale u o singur intefata utilizatorsi o BD proprie. Interfata utilizator este construita din totalitatea mijloacelor si regulilor care asigura interactiunea cmponentelor unui mediu de programare cu utizatorul. Componente: 1. un editor de texte (editor de programe sursa) cu extensia .PAS 2. compilator pentru limbajul Turbo Pascal Prin limbaj se intelege un sistem natural sau artificail de simboluri destinat comunicarii precum si transmiteii de informatii. Prin program se intelege o succesiune de operatii efectuate asupa unor date in vederea obtinerii unui anumit rezultat. Compilatorul traduce un program scris in limbaj sursa Pascal intr-un limbaj intermediar aropiat de limbajul micropocesorului. 3. editorul de lagaturi (LINKER) asambleaza unitati de program din limbajul intermediar intr-o forma finala in limbaj masina care se cheama program executabil. Fisierul cu programul executabil are extensia .EXE 4. depanatorul inteactiv de programe (DEBUGER) - mediul tubo Pascal este dotat cu o interfata gafica. O interfata este grafica cand are elemente grafice de genul: bara de meniuri cu meniuri, fereastra cu elementele ei, cutii de dialog, input Line, Status Line. Elementele grafice pot fi manevrate atat cu mouse-ul, cat si cu tastatura GUI - graficul utilizatorului interface Se deschide cu Turbo C:>Turbo Interfata grafica este afisata de comanda Turbo Pot fi deschise simultan 99 de ferestre, dar numai 9 pot fi vazute Cu coltul din dreapta jos se poate redimensiona o fereastra Fereatra activa are chenar dublu CTRL+Y - sterge linia pe care e cursorul, liniile de dedebubt sunt mutate mai sus Shift+o sageata - selectare text Pascal este adecvat pentru invatarea programarii ca o disciplina logica si sistematica bazata pe cateva notiuni fundamentale care sa-si gaseasca o reflectare naturaa si clara in libaj. Limbajul Pascal ae elemente prin care se pot face: descrierea datelor si a actiunilor ce se fac asupra datelor TAB+Enter - separator de simboluri Simboluri specifice: +, -, x, : Operatori de relatii: =, < >, >, >=, <, <=, ( ) [ ] . , : ; Operator de atribuire: :=, ^, ' Simbolurile pentru cuvintele rezervate: nu pot fi folosite intr-un alt context decat cel explicit in definirea limbajului Pascal 9sintaxa limbajului Pascal) Ex: Program Begin End Identifcatori - sunt simboluri ce desemneaza constante, variabile, nume de functii si proceduri etc. un identifiator incepe obligatoriu cu o litera dupa care poate continua cu o litera sau o cifra. Numerele desemneaza valori intregi sau reale in conventia zecimalei engleze Siruri de caractere (String) = o secventa de caractere incadrata intr-un apostrof. Program Pascal a) antet de programe: program, identificator b) bloc: parte de descriere si declarare a datelor (optionala) si parte de instructiuni (obligatorie) Instructiune Pascal - o activitate efectuata asupra unei date. ; separa o instructiune de alta Begin Instructiuni … end. Limbajul Pascal - 2 instructiuni citire de date de la tastatura REARLN (Variabila) scriere e date pe monitor WRITELN (expresie - sir de caractere) Orice program Pascal are o singura fereastra de editare Pogram sursa=fereatra editare=fisier sursa Program Salut; Begin Writeln ('Salut profesore!') End. Readln - citeste date de pe User Screen Cum se executa comanda REDLN - la pozitia cursorului User Screen se scie valorea expresiei dintre paranteze, apoi cursorul se muta e linia urmatoare Un program Pascal 1. se editteaza textul 2. se compileaza cu comanda Compile 3. se scot erorile de sintaxa 4. se lanseaza in executie rogramul cu comanda Run 5. cu Use Screen/Debug ne uitam la rezultate Pentru a pastra continutul unei ferestre se foloseste Save/File Partea de declaratii de date a unui bloc de program Pascal este organizata pe sectiuni. Secinea de declaratii a variabilelor unui program Pascal incepe cu un cuvant rezervat VAR O variabila este o data al carui continut poate fi modificat in timpul executiei unui program. Inainte de a utiliza orice variabila intr-un program Pascal, ea trebuie sa fie declarata in sectiunea Var. Sintaxa declaratiei unei variabile are forma: Identificator: Tip; Identificatorul este ales potrivit cu semnificatia pe care o contine. TIP= se intelege multimea valorilor pe care poate sa o ia acea data precum si operatiile care pot fi efectuate cu aceste valori. Limbajul Pascal are un bagaj de tipuri de date predefinite. Fiecare tip de data predefinit are un nume: 1. Integer (Intreg) - valori intre (-32768…+32767). Operatiile pot fi facute: *, +, - ; operatii de aflare a catului impartirii cu rest (divizibil), operatii de aflare a restului (operatii de mod). Ex: 7 div 3 =2 7 mod 3=1 2. Real - valori intre -2,9•10-39….1,7•1038. Operatii: +, -, *, / Readln (variabila); - executie: a) se deschide ecranul utilizator b) se tasteaza o valoare care se incheie obligatoriu cu tasta Enter. Valoarea tastata constituie valoarea initiala a variabilei citite c) dupa tastarea lui Enter progamul continua cu instructiunea urmatoare Ex: program care sa citeasca un numar intreg de l tastatura si sa il afiseze pe ecran Program CitScr; Var Raza: Integer; Begin Readln (Raza); Writeln (Raza); End. Executia unui program Pascal incepe cu prima instructiune de dupa Begin si se opreste cand se intalneste end. Etape pentru scrierea unui program: 1. se insuseste problema de programare 2. se schteaza solutia 3. se transcrie aceasta schita in limbajul Pascal 4. se introduce programul Pascal in editor 5. se compileaza programul; se scot erorile sintetice 6. se testeaza programul pein executia lui Run asupra unor diverse date de intrare pentru care se cunoaste rezultatul dinainte. Daca rezultatul nu coincide cu cele prevazute, programul trebuie depanat pana cand se inlatura eroarea. Comenzi ale depanatorului simbolic se gasesc in meniul Run si Debug Trace Into/Run - executa instructiune dupa instructiune de la inceput la sfarsit. Un apel al acestei comenzi coincide cu o intructiune Program Reset - opreste un program din regim de depanare Evaluate &Modify/Debug - permite afisarea sau modificarea continuului unei variabile cand un program se executa in regim de depanare Instrctiunea de atribuire - modalitate de a da o valoare pentru o variabila Variabil:=Expresie; Expresia consta dintr-o secventa alcatuita din operatori si operanzi. Operanzii pot fi variabile sau numere. In alcatuirea expresiei se pot folosi si paranteze ( ) pentru a modifica prioritatea operatorilor artimetici. Se evalueaza (se calculeaza) expresia din partea dreapta si valoarea obtinuta constituie noua valore a variabilei din partea stanga. Ex: Program care calculeaza lungimea unui cerc care are raza numar real introdus de la tastatura π L=π•D=2πR Program Lcerc Var R:Real; L:Real; Begin Readln ®; L:=2*3,14*R; Writeln(L); End. Write (Expresie:m:n); Writeln (Expresie:m:n); M,n= numer naturale cu semnificatia urmatoare: m= numarul total de pozitii pe care sa se afiseze numarul real n= numar de zecimale ale numarului real afisat Writeln (L:10:2); End. Inainte de a citi o valoare de la tastatura, utilizatorul e bine sa fie informat asupra semnificatiei valorii introduse si inainte de a afisa rezultatul. Atentionarea aceasta se face Write sau Writeln cu un text adecvat. Ex: Program care calculeaza aria unui cerc a carui raza este un numar real citi de la tastatura S=πR2 Program acerc Var R,S:Real; Begin Writeln ('Se calculeaza aria unui cerc'); Readln (R); S:3.14*R*R; Write ('Aria cercului este: '); Writeln (S:10:2); End. Ex: Sa se calculeze aria unui trapez a carui elemente se introduc de la tastatura S= Program atrap Var S,Bmare, Bmica, Inaltime: Real; Begin Writeln ('Se calculeaza ara unui trapez!'); Write ('Tastati baza mare!); Readln (Bmare); Write ('Tastati baza mica!); Readln (Bmica); Write ('Tastati inaltimea!); Readln (Inaltime); S:=(Bmare+Bmica)*Inaltime/2 Write (Aria este: '); Writeln (S:10:2); End. Ex: Sa se scrie un program pascal care calculeaza radacina unui cerc de gradul I a carui coeficieni sunt nmere reale introduse de la tastatura. Program EcGrI Var A, B, X: Ral; Writeln ('se alculeaza solutia ecuatiei de gradul I!'); Write ('A= '); Readln (A); Write (B= '); Readln (B); X: -B/A; Write ('x= '); Writeln (x:10:2); End. X:10:2 - valoarea lui x se afiseaza pe 10 pozitii, dintre care 2 sunt zecimale BOOLEAN G.BOOLE - o data de tip boolean are una din valrile de adevar desemnate prin identificatori predefiniti TRUE si FALSE. Operatiile care ot fi efectuate cu aceste valori sunt date de operatorii logici AND, OR sau NOT. AND - furnizeaza valoarea True daca ambii operanzi sunt True OR - furnizeaza valoarea False daca ambii operanzi au valoarea False Not+operand True=FALSE Not+ operand False=True Operatorii furnizeaza valoarea true daca ambii operanzi au aceeasi valoare < > - furnizeaza valoarea true daca ambii operanzi au valori diferite > - furnizeaza valoarea true daca primul operand este > decat al doilea >= - furnizeaza valoarea true daca daca primul e >= cu operatorii de relateie si operatorii logici formeaza expresii logice -*/ mod div and +- or = <> > >= < <= Algoritm - sistem de reguli conform carora o informatie initiala ste transferata intr-o informatie finala trecand prinr-un numar finit de etae intermediare Caracteristici: - generalitatea - foosirea algoritmului pentru mai multe informatii initiale - uncitate - acelasi algoritm aplicat repetat sa dea acelasi rezultat - claritate - sa poata fi usor ciit - finitate Transcrierea unui algoritm se poate face printr-un limbaj logic co-matematic, cu ajutorul schemelor logice si cu ajutorul limbajelor de programare Schema logica (bloc sau organigrama) - o reprezentare grafica a unui algiritm prin care fiecarei etape I se afiseaza un simbol: grafic numit bloc, iar modul de inlantuire al blocurilor este reprezentat pein segmente orientate (sageti)
Bloc de calcul Bloc de decizie - Bloc de continuare pe pagina veche (N=numar) - Bloc de continuare pe pagina noua Un algoritm sau un program este programat conform programarii structurate daca el foloseste numai urmatoarele structuri de control:
1. structura de control repetitiva, 4. Structura e control repetitiva,
1. intsructiune secveniala implementata de := 2. instructiune alternativa implementata de if 3. instructiune alternativa implementata de repeat 4. instructiune alternativa implementata de while IF expresie THEN insructiune 1 ELSE instructiune 2
Program Par Var N, Rest; integer; Begin Write (‘tastati un numar intreg:’) Readln (N); Rest:= N mod 2; If rest=0 then Writeln (‘Numar par’) Else Writeln (‘numar impar’) End. Sa se scrie schema logica si programul Pascal care afiseaza doua numere intregi si le afiseaza in ordine crescatoare
IF expresie THEN instructiune
Simbolurile BEGIN si END actioneaza ca delimitatori de inceput si sfarsit ai unei instructiuni compuse, instructiunea compusa va fi folosita atunci cand sunt necesare mai multe instructiuni, iar sintaxa autorizta o instructiune Program Ord; Var A, B, M: Integer; Begin Write (‘A= ‘); Readln (A); Write (‘B= ‘); Readln (B); If A>B then Begin M: A; A:=B; B:=M; End; Write(‘A= ‘); Writeln(A); Write (‘B= ‘; Writeln(B); End. AX+B=0 1. A=0 B=0 0X+0=0 2.A=0 B≠0 0X+B=0
Program Ec1Var A, B, X: Real; Begin Write (‘A= ‘); Readln (A); Write (‘B= ‘); Readln (B); If A=0 then If B=0 then Writeln (‘Ec cu infinitate solutii’) Else Writeln (‘Ec imposibila’) Else Begin X:=-B/A; Write (‘X= ‘); Writeln X); End. End. =Structura de control repetitiva conditionata posterior=
REPEAT instructiune UNTIL expresie 1. se executa instructiunea din REPEAT 2. se evalueaza expresia de dupa UNTIL, daca ea este falsa se trece la 1, daca este adevarata se trece la instructiunea urmatoare lui REPEAT Obs: Insrucitunea din Repeat se executa cel putin o data in cazul in care expresia este rue. Daca expresia din Repeat este este compusa, atunci cuvointele Begin si End pot sa lipseasca, rolul lui Begin fiind luat de Repeat, iar al lui End de Until
Program ExRepVar N:Integer; Begin Repeat Write (‘tastati un numar pozitiv’) Readln(N); Until N>0; Write (‘N= ‘); Writeln(N); End. Shorint – 128……….127 Integer – 32768……32767 Longint – 214748368……..2147483647 Byte 0……255 Word 0 ….65535 Sa se scrie schema logica si programul care insumeaza primele N numere naturale, unde N este un numar introdus de la tastatura
Program SumaRep; Var N,S:Longint; Begin Repeat Write (‘Tastati un numar>0’); Readln(N); Until N>0; S:=0; Repeat S:=S+N; N:N-1; Until N=0; Write (‘Suma este: ‘); Writeln(S); End. Sa se scrie un program care citeste un numar intreg de la tastatura si il afiseaza in ordinea inversa cifrelor sale Program OglindaVar N, Rest:Longint; Begin Repeat Write (‘tastati un numar natural: ‘); Readln (N); Until N>=0; Repeat Rest:=N mod 10; N:=N div 10; Write (Rest); Until N=0; Writeln; End. WHILE expresie DO instructiune; Expresia este una booleana sau logica Mod de executie: 1. se evalueaza expresia 2. daca expresia este adevarata, se executa instructiune ade dupa DO si se merge la 1. Daca expresia este falsa, se trece la instuciunea urmatoare lui WHILE Obs: Instructiune din WHILE poate sa nu se execute niciodata daca expresia este falsa la prima evaluare spre deosebire de REPEAT unde se executa cel putin o data. Ciclul WHILE se incheie cand expresia devine falsa, iar REPEAT-ul cand expresia este adevarata. Daca instructiunea de dupa DO este compusa, trebuie pus Begin End la While, iar la Repeat No. Sa se scrie schema logica si programul Pascal care insumeaa primele N numere naturale unde N este un numar natural introdus de la tastatura, folosind instructiune While
Program SumaWhil; Var N,S:Longint; Begin Repeat Write (‘Tastati un numar natural:’) Readln (N); Until N>0; S:=0; While N>0 do Begin S:=S+N; N:=N-1; End; Write (‘Suma este: ‘); Writeln (S); End. Instructiunea FOR implementeaza o stuctura de control repetitiva conditinata anterior cu progresarea automata a unei variabile de control a instructiunii FOR For. VC:=EI to ES do instructiune VC - variabila de control a For-ului care trebuie sa fie declarata in sectiunea var si trebuie sa fie una din tipurile intregi EI – expresie aritmetica care furnizeaza valoarea de inceput a variabilei de control. ES – valoarea de sfarsit a variabilei de control Executia instructiunii FOR indica o executie repetata a instructiuii de dupa DO in timp ce valoarea de inceput din 1 in 1 pana la valoarea de sfarsit Daca EI>ES instructiunea nu se executa Daca EI=ES instructiunea se executa o data
Sa se scrie un program Pascal care sa afiseaze pe ecran de 5 ori mesajul instructiuni FOR Program ExFor; Var I:Integer; Begin For I:1 to 5 to Writeln (‘Instructiune FOR!’); End.
Comanda DOS SHELL/FILE – permite iesirea temporara din Turbo pascal in MsDos. Odata ce sunem in Dos putem efectura comenzi Dos. Pentru a ne reintoarce in Pascal se tasteaza EXIT urmat de Enter Sa se scrie un program Pascal care afiseaza vriabila de control a instructiunii For Program ExFor1; Var I:Integer; Begin For I:=1 to 10 do Begin Write (‘I= ‘); Writeln (I); End; End. Sa se scrie un program Pascal care insumeaza primele N numere naturale unde N e un numar natural introdus de la tastatura cu instructuiunea For Program SumaFor; Var I,N,S:Longint; Begin Repeat Write (‘tastati un numar natural: ‘); Readln (N); Until N>; S:=0; For I:=1 to N do S:=S+I Write (‘Suma este: ‘); Writeln (S); End. 0!=1 1!=1 2!=1*2 3!=1*2*3 4!=1*2*3*4 n!=1*2*3…..:(n-1)*n n!=(n-1):*n Sa se acrie un program Pascal in care se calculeaza un numar factoral de la tastatura Program ForFact; Var I, N, Factorial:Longint; Begin Repeat Write (‘Tastati un numar >=0 ‘); Readln (N); Until N>=0; Factorial:=1; For I:=1 to N do Factorial:=factorial*I; Write (N);; Write (‘!= ‘); Writeln (‘!= ‘); Writeln (Factorial); End. Program WhilFact; Var I,N,F:Longint; Begin Repeat Write (‘Tastati N>=0 ‘); Readln (N); Until N>=0; I:=0; F:=1; While I<N do Begin I:N+1; F:F*I; End; Write (N); Write (‘!= ‘); Writeln (F); End. Program RepFact; Var I,N,F:Longint; Begin Repeat Write (‘Tastati va rugam un numar mai mare decat numarul zero: ‘); Readln (N); Until N>=0; I:=0; F:=1; Repeat I:=I+1; F:=F*I; Until (I=N or (N=0); Write (N); Write(‘!= ‘); Writeln (F); End.
Integer – se numesc tipuri ordinare Boolean – “ “ “ “ Real - “ “ “ “ Char – o valoare de tip char este un element al multimii ordonate si finite Operatori de relatie =, <, > , <=, >=, Tip interval (Range) – un tip poate fi definit ca fiind un ineval al unui tip Integer sau Char numit tip de baza al intervalului. Definitia unui tip interval indica valoarea constanta minima si maxima si cuprinde toate valorile intre acestea Ex: Interval; constanta 1…constanta 2 Zi: 1…..31; Luna: 1….12: Majuscule: ‘A’ ….’Z’
Definirea unei constante introduce un identificaor ca sinonim al unei constante. Sintaxa definirii unei constante: Identificator=constanta; Ex: const pi=3,14 begin L:2*pi*R; Tipurile structurate sunt combinatii de alte tipuri caracterizate prin tipuri componente si metoda de structurare Var N1:Integer N2:Integer; …. N10:Integer S: Integer; Begin Readln (N1); Readln(N2); Readln(N10); S:=N1+N2+….+N10; Writeln (S); End. Tipuri structurale: tablou si fisier Oricare din tipurile structurate trebuie sa raspunda la 2 cerinte: 1. posibilitatea de a denota un grup de variabile cu un singur identificator 2. posibilitatea de a distinge un element paricular al grupului numit componenta ARRAY – un tip tablou este un tip structura care consta dintr-un numar fixat de componente, toate de acelasi tip, numit Tip de componente Sintaxa: Var Tablou:array[T1] of [T2] T1 – tipul indicelui T2 – tipul componentei T1 – furnizeaza numarul total de componente ale tabloului, valorile pe care le pot lua indicii. Tipul indicelui trebuie sa fi ordinal Pentru a desemna o componenta oarecare a unui tablou, se scrie numele variabilei tablou urmat de paranteza patrata, un indice si paranteza patrata inchisa Tablou[indice] Ex: var Numere: array [1…10] of Longint; Numere [1] Cu variabilele de tip tablou se pot face operatii de atribuire. For I:=1 to 10 do Readln (Numere[I])
Program Suma10; Var Numere:array[1…10] of Longint; I: 1…10; Begin For I:=1 to 10 do S:Longint; Begin Write (‘Numere[ ‘); Write (I); (Write( ‘]’) Readln (Numere [I]); End; Suma:=0 For I:=1 to 10 do S:=S+Numere[I]; Write (‘S este: ‘); Writeln(S); End. Sa se modifice programul anterior astfel incat sa se adune un numar oarecare de numere naturale, N sa nu depaseasca valoarea 100 Program SumaN; Var Numere:array[1…100] of Longint; I,N:1…100; S: Longint; Begin Write (‘tastati cate numere se aduna: ‘); Readln (N); For I:=1 to N do Begin Write (‘Numere [ ‘); write (I); Write (‘ ]=’); Readln (Numere [I]; End; S:=0; For I:=1 to N do S:=S+Numere [I]; Write (‘Suma este: ‘) Writeln (S); End. Sa se citeasca un sir de N numere care sunt introduse de la tastatura. Sa se ordoneze crescator si sa se afiseze Program Bubblevar Sir: array[1…100] of Longint; I,N:1…100; Permutari: Boolean; M: Longint; Begin Write (‘Tastati lungimea sirului: ‘); Readln (N); For I:=1 to N do Begin Write (‘Sir [ ‘); write (I); Wite (‘ ]= ‘); readln (sir [I]); End; Repeat Permutari:=False; For I:=1 to N-1 do If sir [I0> sir (I+1] then Begin M:=sir [I]; Sir [I]:=sir[I+1]; Sir [I+1]:=M; Permutari:=True; End; Until not permutari; Writeln (‘sirul ordonat este: ‘); For :=1 to N do Begin Write (‘Sir I ‘); write I); Write ‘(’ ]=’)’; writeln (sir [I]); End; End. O variabila de tipul predefinit Sting este o secventa de caractere de lungime variabila cuprinsa intre 1-255 Var Sir: String [u] Sir 1: string; 1<=u<=255 Ex: Var Nume: string [15]; Prenume: string [15]; Observatii: sring; …………… Readln (nume); Nume:=’Ionescu’; Atribuirea si operatii generate de operatii de relatie Operatii de concatenre a doua siruri sau a unui sir cu un caracter. Se noteaza cu + Program Concat; Var NumePrenume: String; Nume: String [15]; Prenume: String [15]; Begin NumePrenume: ‘ ‘; Writeln (NumePrenume); Nume:=’Ionescu’; Prenume:=’Ion’ NumePrenume:=Nume+Prenume; Writeln (NumePrenume); End. Sa se modifice programul Bubble astfel incat el sa sorteze un sir de N stringuri citite de la tastatura Program BubblestVar Sir: array [1…100] of String I,N:1..100; M: String Permutare: Boolean; Begin Write( ‘Tastati numarul stringului: ‘); Readln (N); Write (‘tastati stringul: ‘); For I:=1 to N do Begin Write (‘sir [‘); write (I); Write (‘ ]=’); readln (sir [I]); End; Repeat Permutare:=false; For I=1 to N-1 do If sir [I]> sir [I+1] then Begin M:=sir [I]; Sir [I]:=Sir [I+1]; Sir [I+1]:=M; Permutare:=true End: Until not permutare Writeln (‘Stringurile ordonate sunt: ‘); For I:=1 to N do Begin Write (‘sir [ ‘); write (I); Write (‘]=’); writeln (sir [I]); End; End. Var Tablou:array [T1] of [T2], Matrice:array [T1] of array [T2] of T3; T3≠array Matrice:array [T1,T2] of T3 Matrice [1,1] Matrice [1,2]……Matrice [1,N] Matrice [2,1] Matrice [2,2]……Matrice [2,N] Matrice [M,1] Matrice [M,2]…..Matrice [M,N] Scrieti un program care citeste 2 linii si 3 coloane de numere intregi de la tastatura dupa care le afiseaza Program Mat23; Var I,J:Integer; M:array [1…2, 1….3] of Longint; Begin Writeln (‘ Se introduc elementele unei matrice: ‘); For I:=1 to 2 do For J:=1 to 3 do Begin Write (‘M[‘ ]; write (I); write (‘, ‘); Write (J); write (‘]=’); Readln (M[I,J]); End; Write (‘Matricea introdusa este: ‘); For I:=1 to 2 do For J:=1 to 3 do Begin Write (‘M [‘); wrie(I); write(‘,’); Write (J); write (‘=’); writeln (M [I,J]); End; End. Sa se scrie un program care insumeaza elementele de pe diagonala principala ale unei matrici patratice introduse de la tastatura Diagonala principala – sanga sus, dreapa jos Diagonala secundara – dreapta sus, stanga jos Program SumaDg; Var I,J,N:Integer; Suma:Longint; M:array [1…100, 1…100] of Longint; Begin Write (‘se citeste o matrice patratica: ‘); Write (‘Tastati dimensiunea ei: ‘); Readln (N); For I:=1 to N do For J:=1 to N do Begin Write (‘M[‘); write (I); write (‘,’); Write (J); write (‘]=’); readln M [I,J]); End; Suma:=0; For I:=1 to N do Suma:=suma+M [I,I]; Write (‘Suma este: ‘); Writeln (suma); End. Sa se modifice programul anterior astfel incat sa se insumeze elementele aflate deasupra diagonalei princiale a unei matrici Program SumaDg; Var I,J,N:Integer; Suma:Longint; M:array [1…100, 1…100] of Longint; Begin Write (‘se citeste o matrice patratica: ‘); Write (‘Tastati dimensiunea ei: ‘); Readln (N); For I:=1 to N do For J:=1 to N do Begin Write (‘M[‘); write (I); write (‘,’); Write (J); write (‘]=’); readln M [I,J]); End; Suma:=0; For I:=1 to N do For J:=I=1 to N do Suma:=suma+M [I,J]; Write (‘Suma este: ‘); Writeln (suma); End. Subprogram – se intelege o parte dintr-un program ale carei instrunctiuni realieaza o acivitate bine deteminata si care are un nume prin care poate fi activata. Subprogramul smplifica rocesul de proiectare a unui program si reduce dimensiune programului obiect general. Subprogram: procedura+functie 1. unde se declara si sintaxa delaratiei 2. unde se utilieaza sau apeleaza o functie sau o procedura si sintaxa apelului O procedura sau o functie se declara inainte de begin-ul unui program, adica se declara inainte de a apela o procedura sau o functie. Sintaxa declaratiei procedurii prevede: antet de procedura bloc – are o parte de declaratii de date care este optionala si o pate de instructiuni, adica un BEGIN si un END; Sintaxa antetului de procedura: Procedure: Nume; Procedure Nume (Lista-de-parametri-formali); Lista de parametri formali este formata din unul sau mai multi parametri formali; cand sunt mai multi, ei sunt separati prin ; Sintaxa unui parametru formal: Nume:Tip – parametru formal valoare Var Nume:Tip O procedura se utilizeaza in partea de instrutiuni a programului. Apelul procedurii se face prin instructiunea procedura. Sintaxa apelului de procedura: daca procedura nu are parameri formali, instructiunea procedura consta in Nume; Nume (Lista-de-parametri-formali) – este formata din unul sau mai multi parametri. Daca sunt mai muli, sunt separati cu virgula. Lista de parameri efectivi poate fi o variabila, o constanta. Ea corespunde cu lista de parametri formali pozitionali. Perechile parametru formal – parametru efectiv, trebuie sa fie de acelasi tip. Executia instructiunii procedure fara parametri formali; cand execuia programului ajuge la instructiunea procedura, incepe executia partii de instructiuni cuprinsa intre begin – end a procedurii, iar in momentul in care se intalneste end; programul se reia cu instructiunea urmatoare a instructiunii procedure. Sa se scrie un program care apeleaza o procedura care scrie 5 linii Program ExProc; Procedure ScrieLinii; Var I:Integer; Begin For I:=1 to 5 do Writeln (I); End; Begin Writeln (‘+++++’); ScrieLinii; Writeln(‘+++++’); ScrieLinii; End. Instrctiunea rocedura cu parametri formali: in situatia executiei unei asemenea instructiuni procedura, lucrurile se desfasoara cu ajutorul instrcutiunii procedure fara parametri formali, cu deosebirea ca inainte de a apela partea de instructiune a prcedurii se face operatia de transfer a listei de parametri efectivi in lista de parametri formali Sa se scrie n program care foloseste o procedura care afiseaza un numar variabil de linii pe ecran Program ExProcPF; Var I:Integer; Procedure SareLinii (*:Integr); Var J:Integer; Begin For J:=1 to X do Writeln (J); End; Begin Writeln (‘+++++’); SareLinii (2); Write (‘+++++’); I:=3; SareLinii (I); Writeln (‘+++++’); SareLinii (I+1); End. Substiturea unui parametru efectiv in parametu formal depinde de tipul parametrului formal. Daca parametrul formal este valoare, atunci valoarea parametrului efectiv corespunzator lui constituie valoarea initiala a parametrului formal. Orice operatii s-ar face cu parametru formal, nu are nici un efect asupra parametrlui efectiv corespunzator lui. Daca parametrul formal este variabila sau referinta (cel cu var), atunci substituirea se face in sensul ca parametrul formal devine sinonim cu paramerul efectiv corespunzator lui. Orice operatie asupra paametrului formal se rasfrange asupra paramerului efectiv corespunzator lui. E aceea, parametrul efectiv trebie sa fie variabila. Lista de parametrii constituie interfata intre program si procedua sau functie. Sn situatii prin care se transmit date de la programe la procedura/functie sau de la procedura la program. Aramerul efectiv programului trebuie sa fie variabila. And parametrul primeste date si returneaza rezultat, atunci aceasta e variabila. Sa se scrie un program care citeste 2 nuemre de la tastatura, apeleaza o procedura de schimbare a numerelor si le afiseaza. Progam Schimb; Var A,B:Integer; Procedure swap (X:Integer; Y:Integer); Var M:Integer; Begin M:=X; X:=Y; Y:=M; End; Begin Write (‘A=’); Readln (A); Write (‘B=’); Readln (B); Swap (A,B); Write(‘A=’); Writeln(A); Write(‘B=’); Wrieln (B); End.
O functie este o parte de program, la fel ca si procedura, dar care calculeaza o singura valoare ordinala sau reala pe care o returneaza atunci cand este apelatao functie. Declaratia unei functii are loc inainte de Begin-ul programului, ea constand intr-un antet de functie si bloc Antetul de functie are sintaxa: Function Nume:Tip; Blocul este identic cu blocul unei proceduri, cu deosebirea ca inainte de End trebuie sa figureze o instructiune de atribuire de forma Nume:=Expresie; Funcion Nume (Lista-de-parametri-formali):Tip; Apelarea une funcii se face atunci cand numele ei apare intr-o expresie. Cand evaluarea exresiei ajunge la numele functiei se face transferul sau substituirea parametrilor efctivi in parametri formali daca exista, apoi se apeleaza partea de oinstructiune a functiei si rezultatul care este calculat de insructiunea de atribuire; valoarea returnata de expresia de atribuie (Nume:=Expesie;) constitue valoarea cu care se continua evaluarea expresiei in care a aparut numele functiei. Sa se scrie un program care calculeaza valoarea expresiei T=A2+2AB+B2 unde A si B sunt doua numere reale citite de la tastatura. Sa se foloseasca in acest scop o funcie Program Trinom; Var A,B,T:real; Function Patrat (x:real):real; Begin Patrat:x*x; End; Begin Write (‘A=’); readln (A); Write (‘B=’); readln B); T:=patrat (A)+2*A*B+Patrat (B); Write (‘T=’); Writeln (T:10:2); End. Comanda Destination Disk/Memory – arata unde se depune programul obiect. Daca e Destination Memory, programul se incarca in memoria RAM a PC-uluisi poate fi executat cu comanda Run. Daca e Destination Disk, atunci programul obiect se depune in directorul cuent al mediului Turbo Pascal intr-un fisier cu numele Nume.exe unde Nume este numele programului sursa Pascal Limbajul Pascal standard prevede existanta unor proceduri si functii predeclarate (procedurile si functiile pot fi apelate din orice program Pascal fara a le declara). Procedurile predeclarate sunt utilizate pentru operatii asupra fisierelor. Functiile pedeclarate sunt cele aritmetice si trigonometrice, booleane si pentru trunchierea si rotunjirea numerelor reale. I, J: Integer P, R: Real; J:=Abs (I); J:=qr (I); J:=Trunc (R); J:=Round (R); P:=Abs (R); P:=Sqr (R) Functiile urmatoare accepta un parametru real sau intreg si furnizeaza un rezultat real: Sin(x) Cos(x) Actan9x) Αn(x) Exp(x) Sqrt(α) – Square Root Fisierul este o structura care consta dintr-o secventa de componente, oate avand acelasi tip. Secventa componentelor este ordonata in asa fel incat la un moment dat este accesibila o singura componenta. Progresarea in secenta se face incepand cu prima componnta, apoi succesiv – fisierul este secvential. Fisierul poate fi parcurs atat secvential cat si nesecvntial. Limbajul Pascal standard admite 2 tipuri de fisiere: cu tip si text. Limbajul Pascal mai admite si fisiere fara tip. Declaratia unei variabile se face in sectiunea var unde F e numar variabil, iar tip este tiul componentei Operatii cu fisiere: 1. Conectarea fisierului la aparatul suport se realizeaza cu ajutorul apelului procedurii predeclarate standard Assign (F, Expresie); F – variabila de tip fisier Expresie – furnizeaza aparatul , calea si numele fisierului Daca fisierul este in directorl curent al mediului Turbo, atunci trebuie specificat numai numele fisierului. Operatia de conectare precede oricare alta operate asupra fisierelor fiind comuna tuturor operatiilor 2. Crearea fisierului este operatia de generare secventiala a componentelor sale; este precedata de executia procedurii predeclarate lui Rewrite (F); apoi o secventa de adaugare a componentelor fisierului prin executia procedurii redeclarate Write (F,); F- variabila de tip fisier E- expresie care furnizeaza valoarea componentei ce se adauga 3. Citirea unui fisier: este precedata de executia procedurii predeclarate Reset (F); apoi de o secventa de citire a componentelor prin executia pocedurii predeclarate Read (F,V); F – variabila fisier V – variabila trebuie sa aiba acelasi tip cu comonentele fisierului Pentru a se opri citirea exista o functie predeclarata numita EOF care returneaza valoarea booleana True cand s-a citit ultima comonenta in cazul celorlalte componente valoarea returnata este False. Cea mai potrivita instructiune de citire este While Sa se realizeze un program care creeaza un fisier de numere intregi citi de la tastatura, dupa care se afiseaza Program Fisier; Var I,N,C:Longint; F: File of Longint; Begin Write (‘Cate componente are fisierul: ‘); Readln (N); Assign (F, ‘Fisint.dat’); Rewrite (F); For I:=1 to N do Begin Write (‘Tastati o componenta: ‘); Readln (C); Write (F,C); End; Writeln (‘Componentele fisierului sunt: ‘); Reset (F); While not EOF (F) do Begin Read (F,C); Writeln (C); End: End. Fisierul este destinat comunicatiilor rezile intre calculator si utilizator. Un fisier text este format din linii de text de o lungime variabila, terminate cu un marcaj de sfarsit de linie si cu un marcaj de sfarsit de fisier. Limbajul Pascal are doua tipuri de fisiere text predefinite: Input si Output. Numele Input poate lipsi din instructiunea ead, Output poate lipsi din instructiunea Write. Aceste fisiere au proceduri: Readln (F,V) si Writeln (F,Expresie) Daca se face citire de la fisierul text Input, marcajul de sfasit de fisier se obtine cu CTRL+Enter CTRL+Z Eof devine True Sa se scrie un program care citeste un fisier text de la tastatura, creeaza un fisier text pe disc si il afiseaza Program Ftext; Var F:Text; S:String; Begin Writeln (‘Tastati liniile textului: ‘); Assign (F,’Fistext.txt’); Rewrite (F); While not EOF do Begin Readln (S); Writeln (F,S); End; Writeln (‘Textul introdus este: ‘); Reset (F); While not EOF (F) do Begin Readln (F,S); Writeln (S); End; End.
|