duminică, 4 decembrie 2011

etapele de programare

1. ETAPELE PROCESULUI DE PROGRAMARE

Programarea reprezintă un şir de acţiuni, executarea cărora duce la rezolvarea unei probleme la calculator. Crearea unui program poate fi asemănată cu alcătuirea unei reţete culinare. În ambele cazuri se cere răspunsul la întrebarea: “Cum de pregătit?”. Răspunsul trebuie să fie complet,exact şi clar.

Până nu demult programarea se considera o artă. Dar programele create în aşa mod erau foarte greu de întreţinut şi modificat. De aceea a apărut necesitatea elaborării programelor conform unor tehnologii.

Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea următoarelor etape:

- precizarea completă a problemei de rezolvat ( specificarea problemei);

- proiectarea algoritmului de rezolvare a problemei;

- codificarea algoritmului (programarea propriu-zisă);

- exploatarea şi întreţinerea programului.

Aceste etape constituie ciclul de viaţă a programului.

1.1 Specificarea problemei

Reprezintă una din cele mai importante faze ale procesului de programare. Specificarea problemei reprezintă un “contract” între beneficiar şi programator. De foarte multe ori, atunci când beneficiarul discută cu programatorul despre problema care trebuie rezolvată, acesta dă un enunţ vag, incomplet, dacă nu chiar inexact sau contradictoriu al problemei care trebuie rezolvată. Urmează mai multe discuţii, în urma cărora se ajunge la un enunţ relativ complet şi exact al problemei.

O specificare bună a problemei este:

- exactă;

- completă;

- clară.

Specificarea problemei are funcţia de contract dintre beneficiar şi programator. Cele trei caracteristici sunt contradictorii. Se recomandă ca specificarea problemei să se prezinte în forma standard, care cuprinde următoarele compartimente:

- denumirea problemei;

- descrierea problemei;

- întroducerea datelor iniţiale;

- afişarea rezultatelor;

- descrierea erorilor;

- exemplu.

Să analizăm următoarea specificare a problemei: “Întroducerea a trei numere şi afişarea lor ordonată”. Această specificare nu este nici exactă, nici completă şi nici clară. În formă standard această specificare se prezintă în felul următor:

Denumirea problemei

Sortarea a trei numere întregi

Descrierea problemei

De la tastatură se întroduc trei numere întregi care apoi se afişează în ordine crescătoare.

Întroducerea datelor iniţiale

Se întroduc trei numere întregi, fiecare din rând nou.

Afişarea rezultatelor

Se afişează numerele întroduse într-un rând în ordine crescătoare.

Erori

a) dacă nu au fost întroduse toate cele trei numere, programul va aştepta următoarea întroducere;

b) dacă au fost întroduse mai mult de trei numere, atunci celelalte numere se vor ignora;

c) dacă într-un rând au fost întroduse mai multe numere,atunci programul afişează un mesaj de eroare şi se termină.

Exemplu

Întroduceţi 3 numere întregi, fiecare din rând nou:

3

-2

1

Numerele ordonate:

-2 1 3

1.2. Proiectarea algoritmului

Este etapa cea mai dificilă. Aici specificarea problemei se transformă în algoritm.

Prin algoritm se înţelege o succesiune determinată de operaţii precise, care permite rezolvarea problemelor dintr-o clasă dată într-un număr finit de paşi. Algoritmul trebuie să cuprindă descrierea tuturor situaţiilor posibile, nelăsând nimic nedeterminat. Orice algoritm trebuie să îndeplinească următoarele cerinţe:

- Generalitate. Prin aceasta se înţelege că algoritmul trebuie conceput nu pentru a rezolva o problemă partuculară, ci pentru o clasă de probleme căreia îi aparţine problema respectivă. Algoritmul trebuie creat astfel încât la schimbarea valorilor care reprezintă datele iniţiale, algoritmul să-şi păstreze valabilitatea. De exemplu,nu vom concepe un algoritm pentru înmulţirea a două matrice particulare, ci pentru înmulţirea oricăror două matrice reale A(n,m) şi B(p,q). Această cerinţă răspunde necesităţii de a asigura eficienţa muncii de programare, de eliminare a efortului de regândire a algoritmului pentru fiecare caz particular.

- Finititudine. Operaţiile algoritmului trebuie astfel concepute încât să se termine într-un număr finit de paşi. Această cerinţă apare mai clară în cazul algoritmilor la care un grup de operaţii este aplicat în mod repetat, de fiecare dată cu alte valori ale variabilelor şi care cere prezenţa unei condiţii, la îndeplinirea căreia procesul încetează.

- Determinare. Această cerinţă înseamnă că algoritmul trebuie să prevadă modul de soluţionare a tuturor situaţiilor care pot apărea în rezolvarea problemei respective, fără ambiguităţi sau neclarităţi. Cerinţa este impusă de caracterul de automat al calculatorului şi de imposibilitatea intervenţiei omului pe parcursul rezolvării problemei pentru a aduce elemente noi în structura algoritmului. Aceasta nu înseamnă că fiecare situaţie posibilă trebuie tratată separate. Situaţiile pot fi grupate după caz, în clase, indicându-se modul de tratare pentru fiecare din acestea. Orice situaţie trebuie să fie prinsă într-o calsă şi numai în una. Nerespectarea cerinţei de determinare poate conduce la obţinerea unor rezultate eronate.

Algoritmul poate fi descris în 3 moduri:

- verbal;

- grafic, cu ajutorul schemelor- bloc;

- cu ajutorul limbajului pseudocod.

1.3 Codificarea algoritmului

La acestă etapă algoritmul se transformă în program. Pentru scrierea unui program se utilizează un limbaj de programare. Limbajele de programare se împaet în două clase:

- limbaje de nivel inferior;

- limbaje de nivel superior.

Primele programe au fost scrise în limbaj-maşină şi reprezentau un şir enorm de cifre. Orice calculator e capabil să execute numai instrucţiunile maşină a unui anumit tip de calculator. Majoritatea maşinelor de calcul au limbaje maşină necompatibile. Din acestă cauză folosirea limbajului maşină la codificarea algoritmilor nu este avantajoasă. Limbajul de asamblare vine să uşureze acestă sarcină. Astfel codurile instrucţiunilor maşină se rescriu sub forma unor cuvinte simbol, numite mnemonice, suficient de sugestive pentru a indica semantica instrucţiunii respective.

Limbajul maşină şi limbajul de asamblae se bazează pe instrucţiunile elementare pe care le poate executa calculatorul. Ele se numesc limbaje de programare de nivel inferior.

Dificultăţile care apăreau la scrierea programelor în limbaje de nivel inferior au dus la apariţia limbajelor de nivel superior, care sunt mai aproape de limbajul omului. Majoritatea programelor se scriu într-un limbaj de programare de nuvel superior. Cele mai frecvent utilizate limbaje de programare de nivel superior sunt: COBOL, ALGOL-60, FORTRAN, PL/I, PASCAL, MODULA-2, BASIC, C, ADA, PROLOG ş. a.

Calculatorul execută nemijlocit numai programe scrise în limbaj-maşină. Iata de ce programele scrise în limbaj de asamblare sau într-un limbaj de nivel superior, trebuie transformate în limbaj-maşină.

Forma în care programatorul î-şi scrie programul pe hîrtie se numeşte program-sursă. Pentru a putea fi prelucrat de sistemul de calcul, programul sursă trebuie înregistrat într-un fişier-sursă, care poate fi creat cu ajutorul unui program, numirt editor de texte. Programul sursă nu poate fi înţeles şi executat direct de calculator; el trebuie tradus într-o formă executabilă numită program executabil. Analiza sintactică a programului sursă e realizată de către un program specializat, numit compilator, specific limbajului în care e scris programul sursă. Dacă programul sursă conţine erori sintactice, el le semnalează prin mesaje de eroare. Corectarea programului sursă se realizează cu ajutorul editorului de texte. După corectare programul trebuie compilat din nou. Acest proces se repetă până când dispar toate erorile sintactice. Dacă programul sursă nu conţine erori sintactice, compilatorul generează fie programul executabil corespunzător, fie o formă intermediară, numită program-obiect, pe care un alt program specializat, numit linker, o va transforma în program executabil.

În program pot fi întâlnite următoarele tipuri de erori:

- sintactice;

- erori de executare (run-time);

- erori logice.

1.4. Exploatarea şi întreţinerea programului

După ce au fost corectate toate erorile programului, el se transmite beneficiarului. Începe etapa de întreţinere a programului. Pot fi cazuri când programul nu corespunde specificării problemei şi programatorul trebuie să refacă programul. De asemenea, în program pot fi întroduse proprietăţi noi sau să fie modificate cele existente. Dificultatea întreţinerii depinde de caracterul modificărilor. În cel mai rău caz, programarea problemei trebuie începută de la specificarea problemei.

Niciun comentariu:

Trimiteți un comentariu