190 likes | 360 Views
C1 /3.10.2013. Programare dirijata de evenimente PYTHON (VISUAL BASIC) A ctivităţi: 2 ore curs, sala 43, V ineri 14-16 2 ore laborator , ( prez. obl. ) Sala 37 Vineri 12-14/16-18/18-20 Mail: vcioban@cs.ubbcluj.ro , Web: www.cs.ubbcluj.ro/~vcioban
E N D
C1 /3.10.2013 Programare dirijata de evenimente PYTHON (VISUAL BASIC) Activităţi: • 2 ore curs, sala 43, Vineri 14-16 • 2 ore laborator, (prez. obl.) Sala 37 Vineri 12-14/16-18/18-20 • Mail: vcioban@cs.ubbcluj.ro, • Web: www.cs.ubbcluj.ro/~vcioban • 0740230190
Programare dirijata de evenimente PYTHON (VISUAL BASIC) • Notarea finală • Seminar (S): S=((n1+n2)/2)*0.9 + Prezenţa • Proiect (P): Catalog=[0.3*S+0.7*P]
Fundamentele programării • Algoritmi şi descrierea lor • Subalgoritmi (Pseudocod)
Fazele rezolvării unei probleme cu calculatorul (ciclul de viaţă al programului) : Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea următoarelor faze: - precizarea cerinţelor beneficiarului (definirea problemei) ; - specificarea problemei (ce se dăşi ce trebuie făcut/ce se cere); - proiectarea algoritmului de rezolvare a problemei(cum se rezolvă): (ansamblu-Specif., detaliu-Subalg.); - programarea propriu-zisă, numită şi implementare (sau codificare); - testarea produsului obţinut (verificarea-executor,validare-beneficiar); - exploatarea şi întreţinerea programului (corectivă, perfectivă, adaptivă); - redactarea documentaţiei fiecăreia din fazele enumerate.
Descrierea algoritmilor: Prin algoritm putem înţelege o succesiune finită de operaţii. Acesta presupune executarea unor calcule într-o anumită ordine. Un algoritm este un text finit, o secvenţă finită de propoziţii ale unui limbaj de descriere a algoritmilor. O propoziţie a limbajului precizează o anumită regulă de calcul sau de decizie. Are următoarele trei caracteristici: generalitate, finitudine şi (unicitate şi exactitate). Algoritmul A defineşte o funcţie: A : D R Descrierea algoritmilor se realizează prin mai multe limbaje de descriere, dintre care cele mai des folosite sunt: - schemele logice; - limbajul Pseudocod; - limbaje de programare. Variabila (nume, tip, valoare, semnificaţie, …)
Start Citeste a, b, c Da Mesaj a=0 a=0 Nu 1 :=b2-4ac -b+ Da Nu <0 x1:= Re:=-b / 2a 2a -b- Im:=-/2a x2:= 2a Tipăreste Re,Im Tipăreste x1,x2 1 Stop Schemele logice: Utilizează: - blocurile pentru calcule; - săgeţile pentru ordinea lor.
Limbajul Pseudocod: • Limbajul Pseudocod are două tipuri de propoziţii (pentru calcule): • standard (care au o structură fixă şi este formată cu ajutorul unor cuvinte • cheie), • nestandard (care descriu părţi ale algoritmului încă incomplet elaborate, • nefinisate, asupra cărora urmează să se revină) • comentarii (texte scrise între acolade utilizate pentru documentarea • algoritmului). • Ordinea execuţiei este naturală. • Descrierea algoritmilor se poate realiza (structurat)utilizand doar următoarele structuri: • secvenţială (formată dintr-o succesiune de propoziţii simple), • alternativă (permite executarea anumitor ramuri în funcţie de anumite condiţii) • repetitivă (prin care se poate executa aceleaşi propoziţii de mai multe ori).
Date de intrare Prelucrare Date de iesire Structura generală a unui algoritm descris în Pseudocod : AlgoritmulNumeEste: { Antetul algoritmului } . . . { Corpul “ } SfarşitAlgoritm. { Sfarşitul “ } Un algoritm (în general) se desfăşoară în trei etape : - citirea datelor de intrare (iniţializarea datelor), - efectuarea de calcule (prelucrarea datelor), - tipărirea rezultatelor (extragerea datelor de ieşire).
Operaţii (propoziţii): -Ortogonalitatea propozitiilor (structurilor) Citirea datelor Date Listă_variabile_de_intrare; Tipărirea rezultatelor Rezultate Listă_expresii_de_ieşire; Atribuirea de valori unei var. [Fie] Variabilă :=Expresie; Structuri alternative: - cu o ramură Dacă Condiţie Atunci Secvenţă SfDacă ; - cu două ramuri Dacă Condiţie Atunci Secvenţă1 Altfel Secvenţă2 SfDacă ; - cu mai multe ramuri Selectează Expresie Dintre ListăValori1 : Secvenţă1; ListăValori2 : Secvenţă2; . . . ListăValorin : Secvenţăn [ Altfel Secvenţăn+1 ] SfSelectează;
Secvenţă Da Nu Secvenţă Condiţie Condiţie Nu Da Structurile repetitive: Cu număr cunoscut de pasi: Pentru VarC := Li , Lf [ , Pas ] Execută Secvenţă SfPentru; Cu test iniţial: CâtTimp Condiţie Execută Secvenţă SfCâtTimp; Cu test final: Repetă Secvenţă PânăCând Condiţie;
Exemplu:calculează produsul a două polinoame P şi Q , date prin vect. coef. Algoritmul Produs Este : { R:=PQ } Date m,(Pi , i=0,m), n,(Qj , j=0,n); { m=gradul lui P, n=gradul lui Q } Pentru k:=0,m+n Execută { m+n=gradul lui R } Rk:=0 SfPentru; Pentru i:=0,m Execută Pentru j:=0,n Execută Ri+j:=Ri+j+Pi*Qj SfPentru; SfPentru; Rezultate (Rk, k=0,m+n) SfAlgoritm.
Exemplu:determină primele n (n dat) numere prime Algoritmul Prime Este :{ Primele n numere Prime } Date n; { primele n numere prime p =2,3,5, ... } p:=2; i:=0; CâtTimp i<n Execută { i reprezintă al câtelea număr prim a fost găsit } d:=2; { p este prim ? ( nu se divide cu 2,3, ... )} CâtTimp (d*d<=p) şi (p Mod d > 0) Execută d:=d+1{se caută divizori d =2,3,... Radical(p) } SfCâtTimp; Dacă d*d>p Atunci {dacă am trecut cu d de Radical(p) atunci p este prim ! } Rezultate p; i:=i+1 SfDacă; Dacă p=2 Atunci p:=p+1{ Se verifică doar pentru numerele impare de la 3,... } Altfel p:=p+2 SfDacă; SfCâtTimp SfAlgoritm.
Exemplu:determinăoglinditulunuinumar n natural (cititi de la dreapta la stanga) (Oglinditullui 173 este 371). Algoritmul Oglindit Este : Date n; Ogl 0 CatTimp (n>0) UCif n Mod 10; {Se determina ultima cifra a lui n } Ogl Ogl*10+Ucif; { Se adauga cifra la Ogl } n [n/ 10] { Sterg Ultima cifră din n } SfCatTimp; Rezultate “oglinditul=“, Ogl SfAlgoritm. 4104 + 9 = 4014 + 99
Parametri de Intrare Parametri de iesire Subalgoritm Subalgoritmi: rezolvă o anumită subproblemă Apel: Cheamă NumeSubalgoritm (ListaParametriActuali); Def.: Subalgoritmul NumeSubalgoritm (ListaParametriFormali) Este : {Antet} . . . { Corp subalgoritm } SfSubalgoritm. {sau SfNumeSubalgoritm. } Parametri de Intrare Expresii Parametri de iesire Variabile
X , Y R R:=XY Exemplu:pentru trei mulţimi date A, B şi C calculăm AB, AC şi BC Algoritmul Reuniuni Este : Date A,B,C; Cheamă Reuniune (A,B,R1); Cheamă Reuniune (A,C,R2); Cheamă Reuniune (B,C,R3); Rezultate R1; Rezultate R2; Rezultate R3; SfAlgoritm. Subalgoritmul Reuniune ( X,Y, R ) Este : R:=X; Pentru fiecare yY Execută Dacă yX Atunci R:=R{y} SfDacă SfPentru SfReuniune. Subalgoritmul Reuninune determină mulţimea R = X Y astfel : R := X (Y \ X), adică depune în reuniune mai întâi elementele din mulţimea X, la care apoi mai adaugă acele elemente din Y care nu aparţin lui X.
Funcţii: ~ Subalgoritm + Val. funcţiei Apelul unei funcţii: se face scriind într‑o expresie numele funcţiei urmat de lista parametrilor actuali. … NumeFuncţie (ListăParametriActuali)…{ expr.instr.} Def.: Funcţia NumeFuncţie (ListăParametriFormali) Este : { Antetul funcţiei } . . . NumeFuncţie := Expresie; { Corpul funcţiei } . . . SfFuncţie. {sau SfNumefuncţie.} Parametri de Intrare Expresii Parametri de iesire Variabile
Exemple: Funcţia Există ( b, A, n, p ) Este : {se determina daca b apartine lui A} p:=1; CâtTimp (p<=n) şi (b<>ap) Execută p:=p+1 SfCâtTimp; Există := (p<=n) SfExistă. Funcţia Apart (b,A) Este : {analog ca mai sus} p:=1; {Card(A)=|A|} CâtTimp (p<=Card(A)) şi (b<>A[p]) Execută p:=p+1 SfCâtTimp; Apart := (p<=Card(A)) SfApart. Funcţia Card (A) Este : Card := a0 SfCard. Dacă yX Atunci R:=R{y} Sf_Dacă; Dacă Not Apart (y,X) Atunci R:=R{y} Sf_Dacă;
Exemplu:determină maximul dintr-un şir X cu n componente. Funcţia Max (X,k) Este : Dacă k=1 Atunci Max:=x1 {Consistenţa} Altfel Dacă Max(X,k-1) < xk Atunci Max:= xk Altfel Max:= Max(X,k-1) SfDacă SfDacă SfMax. Apelul: Max(X,n) Exemplu:decide dacă b aparţine primelor k elemente din şirul A. Funcţia Apart (b,A,k) Este : Apart := (k>0) şi ( Apart(b,A,k-1) Sau (b=ak) ) SfApart. Apelul: Apart(b,A,Card(A))
Spor(t) la studiu… şi la practică . . . C1 / 3.10.2013