Академический Документы
Профессиональный Документы
Культура Документы
Comportamentul uman i gndirea sunt caracterizate de secvene logice. Un individ nva cum s execute anumite comenzi. De asemenea, nva ce tipuri de comportamente poate atepta de la ali indivizi. La o scar mai larg, matematica lucreaz cu secvene logice de pai pentru rezolvarea problemelor i demonstrarea teoremelor. La fel, producia de mas nu poate exista fr succesiunile de operaii executate ntr-o anumit ordine. Atunci cnd ordonm un proces, l programm. Acest curs se refer la programarea unui aparat: calculatorul. Calculatorul este un dispoztiv programabil care poate pstra, regsi i procesa date. Aa cum un program descrie aciunile care trebuie executate pentru a atinge un scop, un program de calculator descrie paii pe care trebuie s i execute calculatorul pentru a rezolva o problem. n contextul acestui curs, atunci cnd vom vorbi de programare ne vom referi la programarea calculatorului. Un program de calculator este o list de instruciuni care trebuie urmate de calculator. Un calculator ne permite s realizm o serie de aciuni ntr-un mod mult mai rapid i mai precis dect o putem face fr ajutorul su. Pentru a l folosi, ns, trebuie s specificm ce dorim s facem, dar i n ce ordine. Aceste lucruri le facem prin programare.
1.1
Pentru a scrie un program trebuie s parcurgem dou faze: - rezolvarea problemei - implementarea.
Faza de implementare
1. Programul reprezint translatarea algoritmului ntr-un limbaj de programare 2. Testarea este etapa n care ne asigurm c instruciunile din program sunt urmate corect de calculator. n situaia n care constatm c sunt erori, trebuie s revedem algoritmul i programul pentru a determina sursa erorilor i pentru a le corecta. Aceste dou faze de dezvoltare a programului sunt urmate de faza de utilizare a programului care nseamn folosirea acestuia pentru rezolvarea problemelor reale, cele pentru care a fost conceput. Ulterior pot interveni modificri ale programului fie pentru a rspunde noilor cerine ale utilizatorilor, fie pentru corectarea erorilor care apar n timpul utilizrii i care nu au putut fi gsite n faza de testare. Calculatorul nu este inteligent. El nu poate analiza problema i nu poate s dea o soluie. Programatorul trebuie s analizeze problema, s dea soluia i apoi s o
comunice calculatorului. Avantajul folosirii calculatorului este c el rezolv problemele rapid i fr erori, eliberndu-ne totodat de realizarea unor operaii repetitive i plictisitoare. Programatorul ncepe operaia de programare prin analiza problemei i dezvoltarea unei soluii generale numit algoritm. Algoritmul este o procedur care descrie paii ce trebuie parcuri pentru rezolvarea unei probleme ntr-un timp finit. Algoritmul este esenial pentru procesul de programare. Programul este de fapt un algoritm scris pentru calculator.
Un algoritm este o secven logic de aciuni. Folosim algoritmi n fiecare zi: reetele, instruciunile de folosire sunt exemple de algoritmi care nu sunt, ns, programe. Un exemplu de algoritm poate fi o succesiune de pai care trebuie urmai pentru a porni o main. Un alt exemplu este calculul sumei care trebuie pltit unui salariat ntr-o sptmn. 1. Verificarea sumei pltite pe or 2. Determinarea numrului de ore lucrate n timpul sptmnii 3. Dac numrul de ore este mai mic sau egal cu 40, se nmulete numrul de ore cu suma pltit pe or 4. Dac numrul de ore depete 40, atunci se scade 40 din numrul de ore lucrate, iar diferena de ore se nmulete cu 1,5 ori suma pltit pe or 5. Adun sumele de la punctele 3 i 4 i stabilete suma final. Dup dezvoltarea soluiei generale, programatorul poate testa algoritmul mental sau n scris. Dac algoritmul nu este corect, relum paii descrii mai devreme. Cnd programatorul este satisfcut de algoritm, poate s l translateze ntr-un program scris ntr-un limbaj de programare.
Limbajul de programare este un set de reguli, simboluri i cuvinte speciale folosite pentru a construi un program. Limbajul C++ este o variant simplificat a limbii engleze i care are un set strict de reguli gramaticale. Datorit numrului mic de cuvinte disponibile, suntei obligai s scriei instruciuni simple i exacte. Codarea este translatarea algoritmului ntr-un limbaj de programare. Execuia este rularea programului pe calculator (running). Depanarea este faza de determinare i corectare a erorilor (debugging). Implementarea este combinaia dintre codarea i testarea algoritmului. O parte important a programrii este scrierea documentaiei. Documentaia este reprezentat de un text scris i de comentariile necesare nelegerii de ctre alte persoane a programului scris de noi. Dup scrierea programului, trebuie s transmitem calculatorului informaiile sau datele necesare rezolvrii problemei. Informaia este orice cunotin care poate fi comunicat, inclusiv idei abstracte sau concepte. Datele sunt informaii transpuse ntr-o form care poate fi neleas de calculator.
1.2
Programatorii scriu instruciuni n diverse limbaje de programare, unele care sunt nelese n mod direct de calculator, altele care necesit mai muli pai de translatare. n prezent exist sute de limbaje de programare care pot fi mprite n trei tipuri generale: 1. Limbaje main 2. Limbaje de asamblare 3. Limbaje de nivel nalt
Singurul limbaj de programare pe care calculatorul l poate executa n mod direct este un set primitiv de instruciuni numit limbaj main sau cod main. Acesta este limbajul natural al unui calculator i este definit de alctuirea hardware a fiecrui calculator n parte. Un anumit limbaj main poate fi folosit doar pentru un anumit tip de calculator. Limbajul main este alctuit din instruciuni codate binar i poate fi folosit direct de calculator. Limbajele main sunt greu de folosit de programatori, aa cum se poate vedea din urmtoarea seciune de program scris n limbaj main care adun o sum suplimentar de bani la suma de baz pe care o primete un angajat, rezultnd suma final. Exemplu +1300042774 +1400593419 +1200274027 3
Pe msur ce calculatoarele au devenit tot mai populare, a devenit evident c limbajul main este greu de folosit, dezvoltarea aplicaiilor este foarte lent i probabilitatea de apariie a erorilor este foarte mare. n loc s se foloseasc numere pentru a programa calculatoarele, s-a trecut la folosirea unor abrevieri ale unor cuvinte din limba englez care reprezint operaii elementare pentru calculator. Aceste abreviaii formeaz baza limbajelor de asamblare. n acelai timp au fost dezvoltate programe de translatare sau asambloare pentru a converti programele scrise in limbaj de asamblare ctre programe n limbaj main. Secvena de instruciuni de mai jos realizeaz aceleai operaii ca cele din exemplul anterior, dar ntr-o manier mai clar dect echivalentul n limbaj main. Exemplu LOAD BASEPAY ADD OVERPAY STORE GROSSPAY n prezent se folosesc limbaje de nivel nalt, mult mai uor de folosit dect codul main i care accelereaz procesul de dezvoltare software. Un program numit compilator translateaz un program scris ntr-un limbaj de nivel nalt n limbaj main. Iat o variant scris ntr-un limbaj de nivel nalt a programului de mai sus. Exemplu grossPay = basePay + overTimePay Pentru a putea rula un program de nivel nalt pe un calculator, pe acesta trebuie s existe un compilator adaptat limbajului dar i calculatorului. Programul surs este un program scris ntr-un limbaj de nivel nalt. Programul obiect este versiunea n limbaj main a programului surs i se obine n urma compilrii. Compilarea i execuia sunt dou procese distincte.
Instruciunile dintr-un limbaj de programare reflect operaiile pe care le poate realiza un calculator: - transferarea datelor dintr-un loc n altul - citirea datelor de la un dispozitiv de intrare (ex. tastatura) i transmiterea lor ctre un dispozitiv de ieire (ex. ecran) - stocarea i aducerea datelor din memorie sau alte dispozitive de memorare - compararea a dou date pentru stabilirea egalitii sau a inegalitii - operaii aritmetice
Programarea structurat
Dup anii 1960, cnd aplicaiile au nceput s devin din ce n ce mai complexe i cnd costurile de dezvoltare au nceput s devin foarte mari, lumea a realizat c acest proces este mai complex dect s-a estimat iniial. Activitile de cercetare n domeniu au rezultat n evoluia ctre programarea structurat, o abordare disciplinat n scrierea programelor care au devenit mai clare, mai uor de testat, de corectat i de modificat.
Structuri de program
Limbajele de programare folosesc anumite structuri pentru a transpune algoritmii n programe.
Secvena
Secvena este o serie de declaraii executate una dup alta. Selecia (deciza)
Subprogramul poate fi o combinaie a structurilor anterioare. Ne permite scrierea separat a unor pri din program i apoi asamblarea lor ntr-o form final.
1.3
Ce este un calculator?
Un calculator (computer) este un dispozitiv capabil s realizeze calcule i s ia decizii logice cu viteze de milioane sau miliarde de ori mai mari dect oamenii. Aceasta nseamn c unei persoane i trebuie cteva milioane de secunde pentru a face calculele pe care le poate face un calculator ntr-o secund. Calculatorul proceseaz date sub controlul unor niruiri de instruciuni numite programe de calculator. Aceste programe dirijeaz calculatorul s realizeze secvene de aciuni care au fost specificate de persoane numite programatori. Un calculator este alctuit din diverse dispozitive, cum ar fi tastatura, mouse-ul, discurile, memoria, CD-ROM-ul sau microprocesorul, toate acestea fiind numite generic hardware. Programele de calculator care ruleaz pe calculator sunt numite software. Costurile hardware-ului au scazut foarte mult n ultimii ani pn la punctul n care un calculator personal a devenit foarte accesibil ca pre. Din pcate, costurile pe care le implic dezvoltarea software au crescut n tot acest timp pe msur ce aplicaiile au devenit din ce n ce mai complexe. n acest curs i n cel din semestrul urmtor vom studia metode de dezvoltare software cunoscute prin a cror utilizare se
pot reduce costurile: programarea structurat, dezvoltarea top-down, funcionalizarea, programarea orientat pe obiecte, programarea generic.
1.4
Adesea n viaa de zi cu zi suntem pui n situaia de a urma algoritmi. n faza de rezolvare a unei probleme de programare va trebui s proiectm algoritmi. Este important s ne punem ct mai multe ntrebri pn cnd nelegem exact ce avem de fcut. Folosirea soluiilor existente ntotdeauna trebuie s evitm s reinventm roata. Dac exist o soluie, atunci s o folosim. Dac am rezolvat o problem similar nainte, trebuie doar s repetm soluia pentru c n programare exist probleme care apar foarte des (ex. calculul unui minim sau al unui maxim). Dac avem la dispoziie o secven de cod care rezolv o parte a problemei noastre, putem s o folosim. Aceast metod se numete software reuse i este elementul central n programarea orientat pe obiecte. Divide et impera Adeseori este mult mai uor s rezolvm o problem dac o mprim n subprobleme mai mici. De altfel, metoda descompunerii unui program n funcii sau tehnica programrii orientate pe obiecte se bazeaz pe acest principiu. Dificultatea de a ncepe Programatorii se confrunt adesea cu o mare dificultate: se gsesc n faa unei foi albe i nu tiu cum s nceap. Privesc 8
problema i li se pare foarte complicat. Pentru a depi acest moment, rescriei problema cu propriile voastre cuvinte. ncercai s o descompunei n subprobleme individuale n loc s o analizai global. Acest lucru v va ajuta s extragei componente mai uor de rezolvat. De asemenea, acest lucru v va ajuta s sintetizai mai uor algoritmul de rezolvare a problemei.