5 Programare structurata - scheme logice, notiuni generale

21
Programarea structurată - noțiuni generale -

Transcript of 5 Programare structurata - scheme logice, notiuni generale

Programarea structurată

- noțiuni generale -

Noțiunea de algoritm

Algoritm - sistem de reguli aplicat unei clase de probleme de același tip, pornind de la datele inițiale, conduce la obținerea soluției prin intermediul unor operații succesiv ordonate și unic determinate.Proprietăţile algoritmului:- Generalitatea –un algoritm nu rezolvă o singură problemă, ci o clasă

de probleme de acelaşi tip;- Finititudinea – număr finit de operații ce trebuie aplicat datelor de

intrare pentru a obţine datele de ieșire;- Unicitatea – toate transformările prin care trece informaţia finală

sunt univoc determinate de regulile algoritmului.- Determinism – cuprinderea tuturor cazurilor posibile ce pot să apară

în rezolvarea clasei respective de probleme, înlăturând ambiguitățile.- Claritate, precizie – algoritmul trebuie să specifice clar și precis,

în orice moment, care este etapa imediat următoare în rezolvarea problemei.Mărimi cu care operează un algoritm:- Variabile. O variabilă este o mărime care poate lua o mulțime de

valori posibile în cursul prelucrării.- Constante. O constantă este o mărime ce are atribuită o valoare care

nu se modifică în timpul execuției.Mărimile pot fi succesiuni de caractere alfabetice, numerice şi chiar

speciale. Este indicat ca aceste nume atribuite mărimilor să fie sugestive.

Structura unui algoritm

1.Iniţializarea – furnizarea (citirea) datelor inițiale ce se vor prelucra și eventualelor valori inițiale ale unor variabile ce își modifică valoarea pe parcursul execuției prelucrărilor.

2.Prelucrarea – transformările (prelucrările) efective ale datelor inițiale (operații, decizii, etc.) cu scopul obținerii soluției finale.

3.Prezentarea soluţiei finale – prezentarea, afișarea în formatul dorit a rezultatelor finale obținute în urma prelucrărilor specifice.

Operații utilizate în algoritmi

1.Operaţii de calcul: operații aritmetice (+, -, *, / ), operații logice (AND, OR, XOR, NOT), operații cu șiruri de caractere (rezultatul este întotdeauna un șir de caractere), operații cu mulțimi (reuniune, intersecție, diferența), etc.Acestea intervin în cadrul expresiilor care sunt o succesiune de

variabile şi constante legate între ele prin operatori ( semne de operaţii ) şi eventual paranteze, după reguli bine definite.În cadrul expresiilor operaţiile se execută conform priorităţilor.

Într-un algoritm o expresie apare întotdeauna în cadrul unei operaţii de atribuire.2.Operaţii de atribuire: printr-o asemenea operaţie se atribuie unei

variabilie o valoare a unei - constante, variabile, expresii.Operaţia de atribuire se notează cu: „ := „ sau „←”Ex: NUME : = ‘IOAN‘ (constantă) NUME ← ‘IOAN‘ NUME : = NUMEP (variabilă) NUME ← NUMEP A:= 1, A←1, A:= X-1, A:= A+13.Operaţii de test (decizie). În urma executării unei operaţii de test

rezultatul obţinut este una din valorile logice de adevăr: „ adevărat” sau „fals”.4.Operaţii de intrare/ieşire (citire/scriere): se referă la

introducerea datelor de intrare (citire) respectiv furnizarea datelor de ieșire (scriere).

Descrierea unui algoritm

1.În limbaj natural

2.Cu ajutorul tabelelor de decizie (pentru problemele de decizii multiple)

3.Grafic (schemă logică)

4.Limbaj pseudocod (limbaj algoritmic) – foarte asemănător cu limbajul de programare

5.Limbaj de programare (program)

Schema logicăSchema logică – forma de reprezentare a unui algoritm și a modului

de lucru al acestuia sub formă grafică, folosind diferite figuri geometrice (se mai numesc simboluri sau blocuri)

Principiile realizării schemelor logice:

1.Orice schemă logică începe cu blocul START.2.După START, dacă este necesar și dacă sunt date

de intrare, se citesc datele de intrare.3.După terminarea activității unui bloc de

prelucrare, începe activitatea blocului imediat următor.

4.După terminarea activității unui bloc de decizie își începe activitatea blocul conectat la ieșirea corespunzătoare condiției adevărate. În cazul unui bloc simplu, cu două ieșiri, se execută blocul conectat la DA dacă este adevărată condiția specificată sau blocul conectat la NU, în caz contrar.

5.Schema logică își încetează activitatea la blocul STOP.

Limbaj de programareLimbajul de programare este un sistem de cuvinte

(cheie), semne, construcţii cu cuvinte şi semne care ne asigură de faptul că transmitem calculatorului ceea ce dorim să realizeze. Deci, prin limbajul de programare se constituie comunicarea între om şi calculator, iar descrierea succesiunii de operaţii pe care trebuie să le efectueze calculatorul se numeşte program.Etapele de execuţie ale unui program:a) scrierea programului (într-un anumit limbaj de

programare);b) compilarea programului;c) editarea de legături (link-editarea);d) execuţia programului;e) eventuala depanare a sa, reluând procedeul de la

etapa a);f) îmbunătăţirea performanţelor programului;

Programarea structuratăProgramarea structurată – o modalitate de ordonare a

activității mentale desfășurate în scopul realizării de programe, constituită din structuri fundamentale impuse (secvențială, alternativă, repetitivă) în condițiile minimizării efortului de programare si obținerii unui program eficient.Programarea structurată are la bază un algoritm

structurat, reprezentat printr-o schemă logică structurată.Teorema de structură Bohm și Jacopini:- orice schemă logică este echivalentă cu o schemă

logică structurată.- orice algoritm (program, schemă logică) poate fi pus

sub formă structurată, adică să conțină numai structuri fundamentale (secvențială, alternativă și repetitivă) și/sau variantele acceptate ale acestora, prin utilizarea unor variabile boolene asociate unor funcții (proceduri) suplimentare.

Schema logică structuratăO schemă logică este structurată,

dacă îndeplinește următoarele condiții:1. Conține un singur bloc de intrare2. Conține un singur bloc de ieșire3. Conține numai structuri de

control, denumite și structuri fundamentale:- structura secvențială- structura alternativă- structura repetitivă.

Structura secvențială (liniară)Desemnează una sau mai multe

operații ce se execută una după cealaltă, în mod liniar (secvențial).Pseudocod:Instrucțiune 1;Instrucțiune 2;…Instrucțiune n;

Limbajul FoxPro:Instrucțiune 1Instrucțiune 2…Instrucțiune n

Structura alternativă (selecția) (1)

Structura alternativă permite execuția unei secvențe de operații în funcție de îndeplinirea sau nu a unei condiții.Structura alternativă este de

mai multe tipuri:- IF-THEN-ELSE - IF-THEN- IF-ELSE- CASE-OF

• IF-THEN-ELSE – se execută o instrucțiune (S1 sau S2), în funcție de valoarea de adevăr a condiției (cond).

Pseudocod: Limbajul FoxPro:

IF cond THEN IF cond S1 S1ELSE ELSE S2 S2ENDIF ENDIF

• IF-THEN (selecția simplă) – blocul de pe ramura ”Nu” este vid.– Pseudocod: IF cond THEN S1 ENDIF– Limbajul FoxPro: IF cond S1 ENDIF

Structura alternativă (selecția) (2)

• IF-ELSE – blocul de pe ramura ”Da” este vid. Pseudocod: IF NOT cond THEN S2 ENDIF

Structura alternativă (selecția) (3)

• În limbajul FoxPro, un efect asemănător, de selecție dintre două variante, se obţine prin funcţia IIF () având sintaxa: IIF ( cond, S1, S2)Funcția evaluează cond şi în funcţie de rezultatul

obţinut, returnează :– valoarea obţinută prin evaluarea expresiei S1 dacă cond este evaluată la .T. (este adevărată)

– valoarea obţinută prin evaluarea expresiei S2 dacă cond este evaluată la .F. (este falsă).

CASE-OF (selecția multiplă) – se selectează una dintre mai multe ramuri, în funcție de valoarea unui selector.

Structura alternativă (selecția) (4)

• Pseudocod:CASE v OF v1 S1 v2 S2 … vn SnELSE Sn+1ENDCASE

• Limbajul FoxPro:DO CASECASE v1 S1[CASE v2 S2 ...CASE vn Sn][ OTHERWISE Sn+1]ENDCASE

Structura repetitivă (iterația) (1)Structura repetitivă poate fi analizată

din punct de vedere al numărului de reluări. Astfel, această structură poate fi:- cu numărător – când se cunoaște numărul

de reluări (DO-FOR);- fără numărător – când nu se cunoaște

numărul de reluări. Poate fi de două tipuri:- WHILE-DO – condiția este testată

anterior execuției setului de comenzi;- DO-UNTIL – condiția este testată

posterior execuției setului de instrucțiuni.

Structura de tipul DO-FOR are următorul algoritm:

– Se inițializează pasul de numărare, i, cu o valoare;

– Se verifică dacă s-a ajuns la final (i<=sfârșit). •Dacă nu, atunci se execută instrucțiunea S1 și se trece la următoarea iterație, cu pasul de numărare,pas (i=i+pas).

•Daca da, atunci se iese din ciclul repetitiv.

Structura repetitivă (iterația) (2)

Limbajul FoxPro:FOR i= început TO sfârșit [ STEP pas ] S1

[EXIT][LOOP]

ENDFOR

EXIT – ieșire forțată din FORLOOP – salt la următoarea instrucțiune din FOR (se ignoră ce este între LOOP și ENDFOR) , se verifică din nou condiția.

• WHILE-DO – se execută S numai dacă ”condiție” este adevărată.

• DO-UNTIL – se execută S cel puțin o dată, apoi se verifică ”condiție”.

• Limbajul FoxPro:DO WHILE condițieS[ LOOP ][ EXIT ]ENDDOComenzile LOOP și EXIT au

aceeași semnificație ca și la comanda FOR, prima determinând ignorarea restului de comenzi și reevaluarea lui ”condiție”, iar cea de-a doua determinând ieșirea forțată din buclă, indiferent de valoarea expresiei logice ”condiție”.

Structura repetitivă (iterația) (3)

Exerciții1. Suma a două numere citite de la tastatură.SET TALK OFFCLEARSTORE 0 TO a,b@2,3 SAY "a=" GET a PICT "999"@3,3 SAY "b=" GET b PICT "999" READ

v = a + b @5,3 SAY "Suma = " + STR(v,6)

2. Să se determine volumul unei forme geometrice.SET TALK OFFCLEARSTORE 0 TO a,b,c@2,3 SAY "a=" GET a PICT "999"@3,3 SAY "b=" GET b PICT "999" @4,3 SAY "c=" GET c PICT "999" READ

v = a * b * c @5,3 SAY "Volumul = " + STR(v,6,2) + "

mc"

3. Media aritmetică a 4 numere citite de la tastatură.SET TALK OFFCLEARSTORE 0 TO a,b,c,d@2,1 SAY "a= " GET a @3,1 SAY "b= " GET b @4,1 SAY "c= " GET c @5,1 SAY "d= " GET d READM=(a+b+c+d)/4@8,3 SAY "Media- " + STR(m,6,2)

4. Maximul (minimul) dintre două numere, a și b.SET TALK OFFCLEARSTORE 0 TO a,b@2,3 SAY "a=" GET a PICT "999"@3,3 SAY "b=" GET b PICT "999" READ @4,3 SAY "maximul dintre cele doua numere este"+STR(MAX(a,b)) • Pentru a determina minimul -> functia MIN(a,b)

5. Rezolvarea ecuației de gradul 1: ax+b=0SET TALK OFFCLEARSTORE 0 TO a,b@2,3 SAY "a=" GET a PICT "999"@3,3 SAY "b=" GET b PICT "999" READ @4,3 say "x="+STR((-b/a))

6. Rezolvarea ecuației de gradul 2: ax2+bx+c=0SET TALK OFFCLEARSTORE 0 TO a,b,c@2,3 SAY "a= " GET a PICT "999"@3,3 SAY "b= " GET b PICT "999" @4,3 SAY "c= " GET c PICT "999"READ IF a=0 THEN @5,3 say "Ecuatie de gradul 1"@6,3 say "x="+STR((-c/b))ELSEIF b=0 THEN @7,3 say "x1= "+STR(-SQRT(-c/a))@8,3 say "x2="+STR(SQRT(-c/a))ELSESTORE (b*b-4*a*c) TO delta@9,3 say "delta= "+STR(delta)IF delta>=0 then@10,3 say "x1= "+STR((-b+SQRT(delta))/2*a)@11,3 say "x2= "+STR((-b-SQRT(delta))/2*a)else@12,3 say "Radacinile sunt complexe"ENDIFENDIFENDIF