Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

12
Ciclul de viata al unui program cuprinde fazele de: Analiza Proiectare Codificare Testare Intretinere. In faza de proiectare se stabileste algoritmul, adica pasii succesivi de rezolvare a problemei. Denumirea de algoritm vine de la numele matematicianului si astrologului arab Al- Khowarizmi ( secolul IX ). Algoritmii poate fi specificati: In limbaj natural In pseudocod Ca scheme logice. 1. Scheme logice In proiectare se stabilesc datele si prelucrarile ce se realizeaza asupra lor. Datele pot fi: variabile - isi modifica valoarea; se caracterizeaza printr-un nume ( format din litere, cifre si/sau _, putand incepe cu o litera sau _ ; se face distinctie intre literele mici si mari) constante - pot fi explicite sau simbolice ( ultimele au nume ). Prelucrarile se reprezinta prin blocuri, iar ordinea de executie e indicata de sageti. 1.1. Operatii ( blocuri de baza )

description

Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocodocod

Transcript of Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

Page 1: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

Ciclul de viata al unui program cuprinde fazele de: Analiza Proiectare Codificare Testare Intretinere.

In faza de proiectare se stabileste algoritmul, adica pasii succesivi de rezolvare a problemei. Denumirea de algoritm vine de la numele matematicianului si astrologului arab Al-Khowarizmi ( secolul IX ). 

Algoritmii poate fi specificati:

In limbaj natural In pseudocod Ca scheme logice.

1. Scheme logice

In proiectare se stabilesc datele si prelucrarile ce se realizeaza asupra lor.

Datele pot fi:

variabile - isi modifica valoarea; se caracterizeaza printr-un nume ( format din litere, cifre si/sau _, putand incepe cu o litera sau _ ; se face distinctie intre literele mici si mari)

constante - pot fi explicite sau simbolice ( ultimele au nume ).

Prelucrarile se reprezinta prin blocuri, iar ordinea de executie e indicata de sageti.

1.1. Operatii ( blocuri de baza )    

Blocul de inceput/sfarsit - orice schema logica incepe cu un bloc de inceput si se termina cu blocul de stop

Page 2: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

Blocul de citire ( doua variante ) - se citesc de la dispozitivul de intrare valorile variabilelor specificate in lista_variabile ( separate prin virgula )

Blocul de scriere ( doua variante ) - se scriu la dispozitivul de iesire valorile obtinute in urma evaluarii expresiilor din lista( separate prin virgula  )

Blocul de atribuire - se evalueaza expresia, iar valoarea obtinuta este memorata in variabila, vechea valoare pierzandu-se; expresia contine operatori ( + - * / ), operanzi ( variabile, constante ) si ( ); variabila poate apare si in expresie ( ex: x=x+1 )

Blocul de decizie - se evalueaza conditia: daca e adevarata se continua cu prelucrarea indicata de ramura da, altfel cu ramura nu;  conditia poate contine operatori relationali: <   >    <=    >=    ==    != operatori logici: si   sau

Page 3: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

1.2. Structuri de control - operatiile de baza se inlantuie conform unor structuri de control; fiecarei structuri ii corespunde o instructiune in C.

1.2.1. Structuri de control de baza - Teorem de structura Bohm-Jacopini justifica matematic faptul ca orice prelucrare se poate specifica folosind structurile de control de baza:  

Secventa - indica executia succesiva a operatiilor de baza si a structurilor de control in ordinea in care apar in schema logica; in general, orice schema logica cuprinde secventele:

de initializare a variabilelor

prelucrari

tiparirea rezultatelor

Selectia - functie de valoarea de adevar a conditiei, se executa una din secvente, dupa care se trece la prelucrarea urmatoare; cele doua ramuri se exclud mutual; este posibil ca una din ramuri sa fie vida

Page 4: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

Ciclul cu test initial - secventa se executa ciclic, cat timp conditia este adevarata; secventa se numeste corpul ciclului, la fel ca si la urmatoarele doua structuri, derivate; daca la prima evaluare a conditiei, aceasta este falsa, corpul nu se executa niciodata

1.2.2. Structuri de control derivate - deriva din cele de baza:  

Ciclul cu test final - conditia se evalueaza dupa executia secventei ( deci se executa cel putin o data ); se revine la executia secventei, daca este adevarata; 

Ciclul cu contor - o variabila numita generic contor, controleaza ciclarea; se initializeaza cu o valoare initiala, vali, iar ciclarea se realizeaza cat timp contor<=valf, o valoare finala; la sfarsitul corpului ciclului, variabila contor este actualizata, fiind marita cu o valoare pas; pentru a nu se cicla la infinit, trebuie ca pas>0.

 

2. Pseudocod

Page 5: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

2.1. Proces de calcul: reprezintă procesul de execuţie a unei operaţii de calcul aritmetic sau logic, rezultatul atribuindu-se unei variabile aflata în membrul stâng.

Pseudocod: :=C: =

2.2. Operaţii de intrare / ieşire: reprezintă operaţia de introducere / extragere a informaţiei din memoria calculatorului. Pentru modul de realizare a intrării / ieşirii în C se va vedea secţiunea 4.3

Pseudocod: intrare: readieşire: write

C: intrare: scanfieşire: printf

2.3. Linie de flux: reprezintă direcţia şi sensul fluxului de informaţie (în schemele logice). Programele se execută în direcţia indicată de linia de flux. Atat în C cat şi în pseudocod, fluxul informaţiei e dat de succesiunea în care apar operaţiile.

2.4. Terminatori: reprezinta punctele de inceput respectiv sfarşit al unui algoritm sau a unei secvente logice separate (proceduri, funcţii).

Pseudocod: început: beginsfârşit: end

C: { }

2.5. Structură de decizie: reprezintă un test logic, al cărui rezultat poate fi adevărat sau fals, continuarea algoritmului facându-se pe ramura corespunzătoare rezultatului.

Pseudocod: if condiţie then secventa1else secventa2

endif

C: if (expresie_logica) instructiune1else instructiune2 ;

Obs. Ramura else este opţională, putând lipsi.

2.6. Selecţie cu mai multe părţi: reprezintă calculul unei expresii, şi în funcţie de rezultatul acesteia, algoritmul va continua pe una din ramurile posibile. Expresia trebuie sa fie definită într-un tip de date cu valori finite.

Pseudocod: case expresie ofc1: secventa_1;c2: secventa_2;…cn: secventa_n;rest: secventa_rest;

endcase;

C: switch (expresie) {case c1: sir_instructiuni_1

break;

Page 6: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

case c2: sir_instructiuni_2break;

…case cn: sir_instructiuni_n

break;default: sir_instructiuni

}

Obs. break poate lipsi. În cazul în care break lipseste, se vor executa toate instrucţiunile care urmează după de la o selecţie în jos. Default poate lipsi.

2.7. Ciclu cu test initial. Copul ciclului se execută doar dacă expresia logică este evaluată cu valoarea logică adevărat. Expresia logică se evaluază intotdeauna inainte de executarea corpului ciclului.

Pseudocod: while conditieloop

Secventa_instructiuniendloop;

C: while (expresie) instructiune;

2.8. Ciclu cu test final: corpul ciclului se execută atâta timp cat expresia logică se evaluează ca şi adevărată. Expresia logică se evaluază intotdeauna după execuţia corpului ciclului

Pseudocod: repeatSecventa

until conditie;

C: do instructiune while(expresie)ş

Obs. În pseudocod, înţelesul expresiei until este inversat, adică secventa se execută pana când condiţia din until se evaluează ca şi adevărată.

2.9. ciclu cu contor: Corpul ciclului se execută de un număr finit de ori.

Pseudocod: for contor:= valoare_initiala to valoare_finalaloop

secventaendloop

C: for (expresie1;expresie2;expresie3) instructiune;

În cele ce urmează vom defini şi alte elemente care ajută la scrierea algorimilor:

- constante: reprezintă identificatori care se ataşează unor entităţi a căror valoare nu se modifică, pe toată durata execuţiei algoritmului (programului)

Pseudcod: const nume = valoare;C: particula const

Page 7: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

- tipuri de date: reprezintă o mulţime omogene de date. Tipul de date se identifică printr-un nume, plajă de valori ataşată tipului. Toate datele dintr-un anume tip sunt reprezentate intern, în memoria calculatorului, în acelaşi mod. Ex. int, float, double etc.

- variabile: reprezintă o dată a cărei valoare se poate schimba în timpul execuţiei programului. Variabilele se declară, se definesc şi apoi se utilizează. La variabile, se va tine seama de domeniul lor de vizibilitate.

3. Organigrama

E un proces de conversie a specificatiilor unor procese modulare intr-un cod sursa

scris intr-un limbaj de programare destinat rularii pe o masina reala. PROIECT(se

transforma in)COD. - Este acea programare care ofera ordine produsului final. E

bazatã pe standardizarea elementelor construcþiei care vor fi SLCB (structuri logice de

control de bazã) ºi pe un nr. de combinaþii de SLCB. - Se bazeazã pe elem. unice de

program (proces, predicat, colector). – Punctul de plecare: când Dijkstra a recomandat

eliminarea expresiei “go to”.

Organigramã = graf orientat care descrie fluxul de control al execuþiei unui

program.

Organigrama corect alcatuitã = are o singura intrare, o singura iesire ºi fiecare

operatie componenta este inclusã într-o cale de la in la out (nu va avea nici bucle

infinite).

Organigramele pot fi echivalente cand procesarile sunt echivalente: A=(A1+A2) /

2 si A=A1 / 2+A2 / 2. Extensie a unui proces initial = proces echivalent care detaliazã

subprocesãrile individuale care conducl la rezultatul dorit.

Abstractizarea este procedeul invers extinderii.

Prin extindere generăm structură folosind patternul.

Exemple: secvenţă cu >= 1 procesări, selecţie (testare iniţială), ireraţie (execuţie

condiţionată).

Program corect structurat = prog. obţinut prin rafinare pas cu pas, alcătuit din

structuri de control de bază, secvenţă, selecţie şi iteraţie şi e corect alcătuit.

Th. structurii: Orice program corect alcătuit poate fi transformat într-un program

corect structurat.

Page 8: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

Ex: se transforma in:

Componentele elementare de program = cele care nu se mai pot descompune în

elemente mai simple pe nivelul structurii:

1) nodul procesor = operaţia pe care o suportă datele de intrare pentru a fi

transformate în date de ieşire

2) nodul predicat – dirijează datele. Este element de întreptare a datelor pe căile

date de tipul lor.

3) nodul colector: combină, reuneşte fluxul de date.

Rafinarea succesivă = operaţia prin care un program se reprezintă din ce în ce mai

amănunţit printr-o organizare succesivă la care se măreşte aplicarea la fiecare pas a unei

scheme logice tip. Este o metodă constructivă de a face programe structurate.

- Trebuiesc efectuate programe independente de limbaj.

- Programarea să fie structurată

- Programarea trebuie să fie aleasă de la început (funcţională, pe obiecte)

- Tb. să se urmărească programe compatibile (independente de compilatoare)

Stilul de programare = caracteristică integratoare asupra formei de prezentare a

unui program. Avem:

- lizibilitatea; - integritarea programului; - mulţimea de subtilităţi ale lui. Avem 3

domenii: 1) Utilizarea numelui; 2) Gestiunea erorilor; 3) Prescurtarea grafică a

programului.

1) Utilizarea numelui. Trebuie legat de semnificaţia al cărui semnificant este =>

semnificaţia va fi sugestivă. Se interzic nume aleatoare, cifrate. Se recomandă a nu se

folosi abrevieri sau nume scurte. Prezentare: - linii libere în program între zone libere; -

intensificarea şi colorarea anumitor cuvinte; - să scriem cu TAB; - comentarii de header.

2) Gestiunea erorilor

Tratarea erorilor e luată mai puţin în considerare deoarece sunt evenimente rare dar

foarte diverse. Erori în program: (aşteptate, neaşteptate) X (software, hardware). Când

erorile sunt revizibile şi sunt tratate => procesoarele nu părăsesc programul. Când erorile

sunt neaşteptate, ele pot proveni din: software (de sistem) => trebuie să existe continuări

controlă....; hardware. Un program bun nu părăseşte controlul în caz de eroare. Sunt

acceptate doar erori neaşteptate de hardware. Dar aici avem prevederile de securitate. O

A

P

P

B

P1

P2

Page 9: Is Laborator 1 - Organigrama, Scheme Logice Si Pseudocod

zonă de programare este programarea preventivă în care sunt reperate şi refăcute toate

erorile. Sunt prevăzute soluţii pentru erorile neaşteptate. Avem indicatori de eroare pentru

fiecare procedură. Se stabileşte codul erorii. Accesele la indicatoare se fac înaintea

apelurilor la procedură. Procedura distribuită mecanisme de prevenire a erorilor.

3) Formă de prezentare a programelor: - organigrame = prescurtare grafică a

fluxului; - pseudocod = prescurtare a logicii unui program în format cu limbaj natural,

respectând constrângeri de structură. Există o libertate totală a liniei, dar constrângeri la

cuvinte. Aici prelucrările se specifică la oricare nivel de abstractizare. Exemplu: selecţia

în pseudocod: if (condiţie) ProcesA else ProcesC end if. Iteraţia se face aşa: iteration

(condiţie) ProcesA end iteration.

Identare = metodă de editare a programului pentru lizibilitate => ierarhia

programului. Reguli: - elementele aceleiaşi structuri ierarhice sunt aliniate începând la

aceeaşi coloană; - toate elementele dependente sunt aliniate în dreapta cu un număr de

spaţii => evidenţierea încapsulării de proceduri în proceduri. Scheme logice = ceva

propriu, nu sunt organigrame. Este un mod de reprezentare grafică a unui program

combinând pseudocodul şi organigrama. Este o formă de condensare a ierarhiei şi a

evoluţiei (istoriei).