|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
METODE DE PROIECTARE A ALGORITMILOR | ||||||
|
||||||
3.1 Elaborarea algoritmilor v1l4ls 3.2 Proiectarea ascendenta si proiectarea descendenta Fig.3.1.1. Arbore de programare 3.3 Proiectarea modulara Prin proiectare (programare) modulara intelegem metoda de proiectare
(programare) a unui algoritm pentru rezolvarea unei probleme prin folosirea
modulelor. Indiferent ca privim modulul ca un singur subalgoritm, un grup de subalgoritmi, sau un algoritm de sine statator ce apeleaza alti subalgoritmi, consideram modulele relativ independente, dar cu posibilitati de comunicare intre ele. Astfel, un modul nu trebuie sa fie influentat de maniera in care se lucreaza in interiorul altui modul. Orice modificare ulterioara in structura unui program, daca functia pe care o realizeaza un modul M inca este necesara, acest modul trebuie sa fie util si folosit in continuare fara modificari. Rezulta ca programarea modulara se bazeaza pe descompunerea problemei in subprobleme si proiectarea si programarea separata a subalgoritmilor corespunzatori. De altfel, consideram ca intr-o programare serioasa nu se poate ajunge la implementare fara a avea in prealabil algoritmii descrisi intr-un limbaj de descriere (la noi Pseudocod). Deci programarea modulara se refera in primul rand la proiectarea modulara a algoritmilor si apoi la traducerea lor in limbajul de programare ales, tinand seama de specificul acestui limbaj. Programarea modulara este strans legata de programarea ascendenta si de programarea descendenta, ambele presupunand folosirea subalgoritmilor pentru toate subproblemele intalnite. Avantajele programarii modulare sunt multiple. Mentionam in cele ce urmeaza cateva dintre ele. Descompunerea unei probleme complexe in subprobleme este un mijloc convenabil si eficient de a reduce complexitatea (Principiul Divide et impera actioneaza si in programare). Este evident ca probabilitatea aparitiei erorilor in conceperea unui program creste cu marimea programului, lucru confirmat si de experienta practica. De asemenea, rezolvand o problema mai simpla, testarea unui modul se poate face mult mai usor decat testarea intregului algoritm. Apoi, faptul ca trebuiesc proiectate mai multe subprograme pentru subproblemele intalnite, permite munca mai multor programatori. S-a ajuns astfel la munca in echipa, modalitate prin care se ajunge la scurtarea termenului de realizare a produsului program. Modulele se pot refolosi ori de cate ori avem nevoie de ele. Astfel, s-a ajuns la compilarea separata a subprogramelor si la pastrarea subprogramelor obtinute in biblioteci de subprograme, de unde ele se pot refolosi la nevoie. Sunt cunoscute astazi multe astfel de biblioteci de subprograme. Reutilizabilitatea acestor subprograme este o proprietate foarte importanta in activitatea de programare. Ea duce la marirea productivitatii in programare, dar si la cresterea sigurantei in realizarea unui produs corect. Uneori, in timpul proiectarii algoritmului sau a implementarii lui, se ajunge la concluzia ca proiectarea a fost incompleta sau ca unele module sunt ineficiente. si in aceasta situatie programarea modulara este avantajoasa, ea permitand inlocuirea modulului in cauza cu altul mai performant. Una din activitatile importante in realizarea unui program este verificarea corectitudinii acestuia. Experienta a aratat ca modulele se pot verifica cu atat mai usor cu cat sunt mai mici. Abilitatea omului de a intelege si analiza corectitudinea unui subalgoritm este mult mai mare pentru texte scurte. In unele carti chiar se recomanda a nu se folosi subalgoritmi mai mari decat 50 de propozitii. Sigur ca o astfel de limita nu exista, dar se recomanda descompunerea unui subalgoritm in alti subalgoritmi oricand acest lucru este posibil in mod natural, deci acesti noi subalgoritmi rezolva subprobleme de sine statatoare, sau realizeaza functii bine definite. 3.4 Programarea structurata Programarea structurata este un stil de programare aparut in urma experientei
primilor ani de activitate. Ea cere respectarea unei discipline de programare
si folosirea riguroasa a catorva structuri de calcul. Ca rezultat se va
ajunge la un algoritm usor de urmarit, clar si corect. Bohm si Jacopini au demonstrat ca orice algoritm poate fi compus din numai trei structuri de calcul: - structura secventiala; - structura alternativa; - structura repetitiva. Fiecare din aceste structuri, ca parte dintr-o schema logica, are o singura intrare si o singura iesire si sunt prezentate in figura 1.3.1. Knuth considera programarea structurata ca fiind un mijloc de a face produsele program mai usor de citit. De asemenea, programarea structurata este definita ca fiind programarea in care abordarea este top-down, organizarea muncii este facuta pe principiul echipei programatorului sef, iar in proiectarea algoritmilor se folosesc cele trei structuri de calcul definite de Bohm-Jacopini. Alti autori considera programarea structurata nu ca o simpla metoda de programare ci ansamblul tuturor metodelor de programare cunoscute. Dar programarea modulara, programarea top-down, sau bottom-up (ascendenta sau descendenta) au aparut inaintea programarii structurate. Important este faptul ca programarea structurata presupune o disciplina in activitatea de programare. Consideram ca programarea structurata se poate intalni: - la nivel micro, privind elaborarea unui subalgoritm; - la nivel macro, privind dezvoltarea intregului produs informatic (algoritm). La nivel micro programarea structurata este cea in care autorul este atent la structura fiecarui modul in parte, cerand claritate si ordine in scriere si respectarea structurilor de calcul definite mai sus. La nivel macro programarea structurata presupune practicarea proiectarii top-down, a programarii modulare si a celorlalte metode de programare, cerand ordine in intreaga activitate si existenta unei structuri clare a intregii aplicatii, precizata prin diagrama de structura a aplicatiei. In acest scop am definit limbajul Pseudocod, care are structurile de calcul mentionate. Schemele logice obtinute dintr-o descriere in Pseudocod a unui algoritm, conform semanticii propozitiilor Pseudocod, se numesc D-scheme (de la Dijkstra) sau scheme logice structurate. Referitor la faza de codificare intr-un limbaj de programare a unui algoritm obtinut in urma unei proiectari structurate se cere respectarea structurii acestui algoritm, ceea ce este posibil si usor de realizat daca limbajul de programare are structurile de calcul respective. In acest caz programul va fi o copie fidela a algoritmului proiectat. |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|