Sunteți pe pagina 1din 4

3. Noiunile fundamentale ale programrii:algoritm, limbaje de descriere a algoritmilor, program,limbaje de programare 3.1.

Algoritmul Se tie c la baza oricrui program st un algoritm (care, uneori, este numit metod de rezolvare). Noiunea de algoritm este o noiune fundamental n informatic i nelegerea ei, alturi de nelegerea modului de funcionare a unui calculator, permite nelegerea noiunii deprogram executabil. Vom oferi n continuare o definiie unanim acceptat pentru noiunea dealgoritm: Definiie. Prin algoritm se nelege o mulime finit de operaii (instruciuni) elementare care executate ntr-o ordine bine stabilit (determinat), pornind de la un set de date de intrare dintr-un domeniu de valori posibile (valide), produce n timp finit un set de date de ieire (rezultate). Cele trei caracteristici eseniale ale unui algoritm snt: 1.Determinismul dat de faptul c ordinea de execuie a instruciunilor algoritmului este bine precizat (strict determinat). Acest fapt d una din calitile de baz a calculatorului: el va face ntotdeauna ceea ce i s-a cerut(prin program) s fac, el nu va avea iniiative sau opiuni proprii, el nu-i permite sgreeasc nici mcar odat, el nu se va plictisi ci va duce programul la acelai sfrit indiferentde cte ori i se va cere s repete acest lucru. Nu aceeai situaie se ntmpl cu fiinele umane(Errare humanum est). Oamenii pot avea n situaii determinate un comportament nondeterministic (surprinztor). Acesta este motivul pentru care numeroi utilizatori de calculatoare(de exemplu contabilii), datorit fenomenului de personificare a calculatorului (confundareaaciunilor i dialogului simulat de programul ce ruleaz pe calculator cu reaciile uneipersonaliti vii), nu recunosc perfectul determinism ce st la baza executrii oricrui program pecalculator. Exprimndu-se prin propoziii de felul: De trei ori i-am dat s fac calculele i de fiecare dat mi-a scos aceleai valori aiurea! ei i trdeaz propria viziune personificatoare asupra unui fenomen determinist. 2.Universalitatea dat de faptul c, privind algoritmul ca pe o metod automat (mecanic) derezolvare, aceast metod are un caracter general-universal. Algoritmul nu ofer o soluiepunctual, pentru un singur set de date de intrare, ci ofer soluie pentru o mulime foarte larg (decele mai multe ori infinit) de date de intrare valide. Aceasta este trstura de baz care explicdeosebita utilitate a calculatoarelor i datorit acestei trsturi sntem siguri c investiia financiarfcut prin cumprarea unui calculator i a produsului-soft necesar va putea fi cu siguranamortizat. Cheltuiala se face o singur dat n timp ce programul pe calculator va putea fiexecutat rapid i economicos de un numr orict de mare de ori, pe date diferite ! De exemplu, metoda (algoritmul) de rezolvare nvat la liceu a ecuaiilor de gradul doi: ax2+bx+c=0, se aplic cu succes pentru o mulime infinit de date de intrare: (a,b,c)\{0}xx. 3.Finitudinea pentru fiecare intrare valid orice algoritm trebuie s conduc n timp finit (dup unnumr finit de pai) la un rezultat. Aceast caracteristic este analog proprietii de convergen aunor metode din matematic: trebuie s avem garania,

dinainte de a aplica metoda (algoritmul),c metoda se termin cu succes (ea converge ctre soluie). S observm i diferena: n timp ce metoda matematic este corect chiar dac ea converge ctresoluie doar la infinit (!), un algoritm trebuie s ntoarc rezultatul dup un numr finit de pai. Sobservm deasemenea c, acolo unde matematica nu ofer dovada, algoritmul nu va fi capabil s oofere nici el. De exemplu, nu este greu de scris un algoritm care s verifice corectitudinea Conjecturii lui Goldbach: Orice numr par se scrie ca sum de dou numere prime, dar, dei programul rezultat poate fi lsat s ruleze pn la valori extrem de mari, fr s apar nici un contra-exemplu, totui conjectura nu poate fi astfel infirmat (dar nici afirmat!). 3.2. Descrierea algoritmilor Dou dintre metodele clasice de descriere a algoritmilor snt denumite Schemele logice i Pseudo-Codul. Ambele metode de descriere conin doar patru operaii (instruciuni) elementare care au fiecare un corespondent att schem logic ct i n pseudo-cod. n cele ce urmeaz vom nira doar varianta oferit de pseudo-cod ntruct folosirea schemelor logice s-a redus drastic n ultimii ani. Schemele logice mai pot fi ntlnite sub numele de diagrame de proces n anumite cri de specialitate inginereti. Avantajul descrierii algoritmilor prin scheme logice este dat de libertatea total de nlnuire a operaiilor (practic, sgeata care descrie ordinea de execuie,pleac de la o operaie i poate fi trasat nspre orice alt operaie). Este demonstrat matematic rigurosc descrierea prin pseudo-cod, dei pare mult mai restrictiv (operaiile nu pot fi nlnuite oricum, citrebuie executate n ordinea citirii: de sus n jos i de la stnga la dreapta), este totui perfectechivalent. Deci, este dovedit c plusul de ordine, rigoare i simplitate pe care l ofer descrierea prinpseudo-cod nu ngrdete prin nimic libertatea programrii. Totui, programele scrise n limbajele deasamblare, care snt mult mai compacte i au dimensiunile mult reduse, nu ar putea fi descrise altfeldect prin scheme logice. 1.Atribuirea var:=expresie; 2.Intrare/Ieire Citete var1, var2, var3, ; Scrie var1, var2, var3, ; sau Scrie expresia1, expresia2, expresia3,; 3.Condiionala Dac<condiie_logic> atunciinstruciune1 [altfelinstruciune2]; 4.Ciclurile Exist (din motive de uurin a descrierii algoritmilor) trei tipuri de instruciuni deciclare. Ele snt echivalente ntre ele, oricare variant de descriere putnd fi folosit n loculcelorlalte dou, cu modificri sau adugiri minimale: Repet instruciune1, instruciune2, pn cnd< condiie_logic>; Ct timp<condiie_logi c > executinstruciune; Pentruvar_conto r:=val_iniial pn la val_final execut instruciune; n cazul ciclurilor, grupul instruciunilor ce se repet se numete corpul ciclului iar condiialogic care (asemenea semaforului de circulaie) permite sau nu reluarea

execuiei ciclului estedenumit condiia de ciclare sau condiia de scurt-circuitare (dup caz). Observm c ciclul de tipul Repet are condiia de repetare la sfrit ceea ce are ca i consecin faptul c corpul ciclului se execut cel puin odat, n mod obligatoriu, nainte de verificarea condiiei logice. Nu acelai lucru se ntmpln cazul ciclului de tipul Ct timp, cnd este posibil ca instruciunea compus din corpul ciclului s nu poat fi executat nici mcar odat. n plus, s mai observm c ciclul de tipul Pentru pn la conine (n mod ascuns) o instruciune de incrementare a variabilei contor. n limba englez, cea pe care se bazeaz toate limbajele actuale de programare acestor instruciuni, exprimate n limba romn, le corespund respectiv: 2. Read, Write; 3. If-Then-Else; 4.Repeat-Until, Do-While, For. S observm c, mai ales pentru un vorbitor de limb englez, programele scrise ntr-un limbaj de programare ce cuprinde aceste instruciuni este foarte uor de citit i de neles, el fiind foarte apropiat de scrierea natural. Limbajele de programare care snt relativapropiate de limbajele naturale snt denumite limbaje de nivel nalt (high-level), de exemplu limbajul Pascal, spre deosebire de limbajele de programare mai apropiate de codurile numerice ale instruciunilor microprocesorului. Acestea din urm se numesc limbaje de nivel sczut (low-level), de exemplu limbajul de asamblare. Limbajul de programare C are un statut mai special el putnd fi privit,datorit structurii sale, ca fcnd parte din ambele categorii. Peste tot unde n pseudo-cod apare cuvntul instruciune el poate fi nlocuit cu oricare din celepatru instruciuni elementare. Aceast substituire poart numele de imbricare (de la englezescul brick-crmid). Prin instruciune se va nelege atunci, fie o singur instruciune simpl (una din cele patru), fie o instruciune compus. Instruciunea compus este format dintr-un grup de instruciuni delimitatei grupate n mod precis (ntre acolade{ } n C sau ntrebegin i end n Pascal). Spre deosebire de pseudo-cod care permite doar structurile noi formate prin imbricarearepetat a celor patru instruciuni (crmizi) n modul precizat, schemele logice permit structurarea norice succesiune a celor patru instruciuni elementare, ordinea lor de execuie fiind dat de sensulsgeilor. Repetm c dei, aparent, pseudocodul limiteaz libertatea de descriere doar la structurileprezentate, o teorem fundamental pentru programare afirm c puterea de descriere a pseudo-limbajului este aceeai cu cea a schemelor logice. Forma de programare care se bazeaz doar pe cele patru structuri se numete p ro g r a m a re structurat (spre deosebire de programarea nestructurat bazat pe descrierea prin scheme logice).Teoremade echivalen a puterii de descriere prin pseudo-cod cu puterea de descriere prin schemlogic afirm c programarea structurat (aparent limitat de cele patru structuri) este echivalent cu programarea nestructurat (liber de structuri impuse). Evident, prin ordinea, lizibilitatea i fiabilitateaoferit de cele patru structuri elementare (i asta fr a ngrdi libertatea de exprimare) programareastructurat este net avantajoas. n fapt, limbajele de programare nestructurat (Fortran, Basic) au fostde mult scoase din uz, ele (limbajele de asamblare) snt necesare a fi folosite n continuare doar nprogramarea de sistem i n programarea industrial (n automatizri).

3.3 Programul Prin program se nelege un ir de instruciuni-main care snt rezultatul compilriialgoritmului proiectat spre rezolvarea problemei dorite ce a fost descris ntr-un limbaj de programare(ca i cod surs). Etapele realizrii unui program snt: Editarea codului surs, etap ce se realizeaz cu ajutorul unui program editor de texte rezultatul fiind un fiierPascal sauC, cu extensia.pas sau.c (.cpp) Compilarea, etapa de traducere din limbajul de programare Pascal sau C n limbajul intern al micro-procesorului, i este realizat cu ajutorul programului compilator Pascal sau C i are ca rezultat un fiier obiect, cu extensia.obj (n limbajul C) sau.exe (n limbajul Pascal) Link-editarea, etap la carese adaug modului obiect rezultat la compilare diferite module coninnd subprograme i rutine de bibliotec, rezultnd un fiier executabil (aceast etap este comasat n Turbo Pascal sau Borland Pascal cu etapa de compilare), cu extensia.exe Execuia (Run), etapa de lansare n execuie propriu-zis a programului obinut, lansare realizat de interpretorul de comenzi al sistemului de operare (command.com pentru sistemele DOS+Windows) Observm c aceste patru (sau trei, pentru Turbo Pascal) etape snt complet independente n timpunele de altele i necesit utilizarea a patru programe ajuttoare: Editor de texte, Compilator Pascal sauC, Link-editor i Interpretorul de comenzi al S.O. n cazul mediilor de programare integrate (Turbo sauBorland) comandarea acestor patru programe ajuttoare precum i depanarea erorilor de execuie estemult facilitat. Deasemenea, merit subliniat faptul c n timp ce fiierul text Pascal sau C, ce conine codul surs,poate fi transportat pe orice main (calculator) indiferent de microprocesorul acesteia urmnd a ficompilat "la faa locului", n cazul fiierului obiect acesta nu mai poate fi folosit dect pe maina(calculatorul) pentru care a fost creat (datorit instruciunilor specifice micro-procesorului din care estecompus). Deci, pe calculatoare diferite (avnd micro-procesoare diferite) vom avea nevoie decompilatoare Pascal sau C diferite. n plus, s remarcm faptul c fiierele obiect rezultate n urma compilrii pot fi linkeditate (cugrij !) mpreun chiar dac provin din limbaje de programare diferite. Astfel, un program rezultat (unfiier .exe sau.com) poate fi compus din module obiect care provin din surse diferite (fiiere Pascal, C,asamblare, etc.). http://www.scribd.com/doc/327726/Culegere-probleme-de-informatica#archive

S-ar putea să vă placă și