P. 1
Algoritmi

Algoritmi

|Views: 1|Likes:
Published by clausire
info
info

More info:

Categories:Types, School Work
Published by: clausire on Jul 09, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

06/15/2014

pdf

text

original

Sections

  • CAPITOLUL 1
  • CAPITOLUL 2
  • CAPITOLUL 3
  • CAPITOLUL 4
  • CAPITOLUL 5
  • CAPITOLUL 6
  • CAPITOLUL 7
  • CAPITOLUL 8
  • CAPITOLUL 9
  • CAPITOLUL 10
  • CAPITOLUL 11
  • CAPITOLUL 12

Universitatea Româno-Americanǎ Facultatea de Informaticǎ Managerialǎ

Algoritmi
Şi structuri de date
-conspect -

Student: Ciurescu Raul-Cristian Grupa: 602

Anul: I

CUPRINS
1. Sistem Informaţional – Sistem Informatic 2. Structuri de date 3. Grafuri 4. Algoritmi definire 5. Descrierea algoritmilor 6. Structuri fundamentale ale algoritmilor 7. Evaluarea corectitudinii algoritmilor 8. Limbaje de programare 9. Algoritmi speciali 10. 11. 12. Tehnici de programare Tehnici de programare structuratã Probleme Bibliografie

2

Introducere: Semiotica se ocupã cu studiul semnelor în natura şi în societate. Semnul nu este o calitate în sine a unui obiect, ci o funcţie pe care acest obiect o poate dobandi. Studiind combinatorica rezultantã, rezultã ca din punct de vedere teoretic sunt posibile mii de clase de semne; dar imensa varietate de semne poate fi raportata la o anumita tipologie conform careia semnele se repartizeazã în 3 categorii: semne iconice, semne indiciale, semne simbolice. Aceasta clasificare se referã la tipul de legatura al semnului cu referentul. Sunt de remarcat 3 specii de semne iconice: imagini, grafuri, metafore. Ştiinţa este bogatã în semne indiciale, inevitabile, atât în procesele de generalizare cat şi în cele de demonstrare, dar metoda modelarii promoveazã cu deosebita putere în cercetarea stiintifica, semnele iconice. Se poate afirma totodata, ca semnele simbolice prezinta caracterul cel mai pronuntat social; ele sunt generate exclusiv prin puterea unei conventii pe care o comunitate de indivizi, istoriceste constituita o poate instaura. Un loc special il ocupã aici codurile utilizate în telegrafie, sistemele de semne utilizate de diferite ştiinte ( formule algebriece, formule din chimia organica, etc. ) dar mai cu seama, limbajele de comunicare om – masina, de o deosebita importanta astãzi datorita dezvoltarii calculatoarelor electronice. O alta triada care a jucat un rol important în dezvoltarea semioticii este constituita de distinctiile dintre:  Sintaxa – studiul relatiilor dintre semnele unui sistem semiotic;  Semantica – studiul relatiilor dintre semne şi obiectele pe care ele le desemneaza;  Pragmatica – studiul relatiilor dintre semne şi cei care le interpreteaza şi le folosesc. Statutul pragmaticii este inca foarte controversat, mai ales în legatura cu limbajele de programare a calculatoarelor electronice, şi cu evolutia acestora. Cele 6 functii ale procesului de comunicare codificata sunt:  Emotivã;  Conativã;  Referenţialã;  Faticã ( de centrare asupra canalului );  Metalingvisticã ( de centrare asupra codului );
3

Activitatea desfasurata intr-un sistem organizat. indruma şi coordona activitatea în vederea realizarii abiectivelor fixate.Sistem informational. contra neputinei” a spus Gerard Mendel în cartea sa „La chasse structurale”. intre ele şi nu mediul extern sistemului. Sistemul Informational este un instrument indispensabil conducerii.O. sistemului de conducere ii sunt necesare permanent informatii despre starea şi evolutia sistemului de executie. de executie sau operational ( S.Sistemul de conducere sau decizional ( S. sau în curs de executie. „Magia” cuvintelor tine de valoarea cognitiva şi pragmatica a notiunilor pe care le vehiculeaza. ) . în vederea realizarii unui obiectiv poate fi definita ca fiind rezultatul actiunii conjugate. Sistemul condus are rolul de a executa practic deciziile luate şi de a furniza date privind actiunile realizate. financiare stiintifice şi umane existente. cu eficienta maxima. Superioritatea calitativã a vorbelor fata de semnale provine din generalitatea semnificatiilor pe care le produce. a 3 subsisteme ce actioneaza intr-o stransa interdependenta şi care la randul lor pot fi considerate sisteme: . folosind pt aceasta resursele materiale. având ca parti componente mijloacele şi procedeele ce asigura legaturile intre 4 .Sistemul condus. ) . „Fiecare cuvant era şi ramane o victorie contra absentei. Poeticã. despre legaturile acestuia cu exteriorul. contra lipsei. CAPITOLUL 1 Sistem informaţional – Sistem informatic Sistem informaţional Un sistem poate fi privit ca un ansamblu de elemente interconectate şi interconditionate prin relaţii fizice. repartizate pe obiective dinainte stabilite.D. urmarire. De la sistemul de conducere. Acest circuit de informatii şi decizii reprezintã un proces permanent care se realizeaza prin existenta Sistemului Informational. spre sistemul condus vor circula decizii. Pentru executarea activitatiilor de bazã ale procesului decizional: planificare. Sistemul de conducere are rolul de a dispune. control şi decizie. care functioneaza în vederea realizarii unui scop sau a finalizarii unui obiect. sociale şi de alta natura.

stocarea şi/sau transmiterea datelor şi a informatiilor sunt cu preponderenta automatizate. el utilizeaza modele. inregistrarea. reprezintã un ansamblu de elemente intercorelate. Un sistem informatic. mijloacele şi metodele necesare în vederea prelucrarii şi transmiterii informatiilor. Deci. el cuprinzand fondul de informatii. prelucrarea. Intrarile şi iesirile unui sistem informational. sistemul informational devine un sistem informatic. proceduri. procedurile şi mijloacele utilizate pentru colectarea. inregistrarea. prelucrarea. prin intermediul carora asigura interconexiunile informationale dintre sistemul de conducere şi sistemul condus. în principal din urmatoarele elemente: 5 . tehnicile de colectare şi stocare. functional în scopul automatizarii obtinerii informatiilor necesare conducerii în procesul de elaborare a deciziilor. informatii şi decizii. Sistemul informational primeste intrari. stocarea şi/sau transmiterea datelor şi a informatiilor. resurse umane şi materiale pentru colectarea. Sistemul informatic.elementele de executie şi elementele decizionale pentru conducere şi organizare. este compus. transmitere. Ansamblul operatiilor la care sunt supuse intrarile pentru a furniza iesirile se constituie în proceduri. sunt date. prin sistemul informational se pot cunoaste la timp şi în cantitati necesare toate elementele de caracterizare a activitatilor desfasurate. În felul acesta. se spune ca avem de a face cu informatizarea sistemului informational şi implicit cu aparitia conceptului de sistem informatic. le prelucreaza şi furnizeaza iesiri. În cazul cand metodele. sistemul informational este un ansamblu de fluxuri şi circuite informationale organizate intr-o conceptie unitara. stocare şi prelucrare automata a datelor. Sistemul informatic – intrument al conducerii stiintifice a societatilor comerciale Conceptul de sistem informatic În masura în care activitatiile din cadrul sistemului informational sunt realizate cu ajutorul echipamentelor electronice de culegere.

cresterea gradului de incarcare a capacitatilor de productie existente şi reducerea duratei ciclului de fabricatie. stocare şi prelucrare a datelor. care este constituita din totalitatea mijloacelor tehnice de culegere. obiectivele ce afecteaza functionarea sistemului informational cum ar fi: . Sistemul de program sau software-ul sistemului. Bazã stiintifico-metodologica.a.sporirea volumului incasarilor din cativitati de prestari servicii. care este constituita din modele matematice ale proceselor şi fenomenelor economice. . .cresterea vitezei de raspuns a sistemului la solicitarile beneficiarilor. c. Din punct de vedere al domeniului de activitati asupra carora se rasfrang efectele utilizarii calculatoarelor electronice. Resursele umane şi cadrul organizatoric. metodologii. e. în care locul central revine calculatorului electronic. obiectivele pot fi clasificate astfel: a. Obiectivele sistemului informatic Obiectivele sistemului informatic pot fi clasificate dupa mai multe criterii astfel: A. Obiective ce afecteaza activitatiile de bazã din cadrul unitatilor economice ( comerciala. ) cum ar fi: . În functie de sfera de cuprindere pot fi: principale ( generale ) şi secundare ( derivate ). fluxurile informationale. care cuprinde personalul de specialitate şi cadrul necesar functionarii sistemului informatic. d. metode şi tehnici de realizare a sistemelor informatice.cresterea volumului productiei. b. transmitere.reducerea consumurilor specifice de materii prime şi materiale . . în concordanta cu functiunile şi obiectivele ce au fost stabilite. productia. b. ce cuprinde totalitatea programelor pentru functionarea sistemului informatic.cresterea gradului de utilizare a capacitatii de cazare. B. Bazã tehnica sau hardware-ul sistemului informatic. . 6 .cresterea profitului şi a rentabilitatii etc. Bazã informationala cuprinde datele suspuse prelucrarii. sistemele şi nomenclatoarele de coduri.reducerea personalului administrativ – functionaresc. etc. .

sporirea completitudinii situatiilor de informare – raportare . iar datele de iesire se transmit de asemenea sub forma de semnale unor organe de executie. pentru perceperea acestora de catre om. care influenteaza în mod direct indicatorii cuantificabili. 7 .rationalizarea formularisticii de evidenta. iar la iesire sunt furnizate de catre sistem tot sub forma de documente.rationalizarea circuitelor informationale.. regulatoare. prin inlaturarea imobilizarilor de mijloace circulante. . În functie de domeniul de utilizare. sistemele informatice pentru activitatea de cercetare stiintifica. cum ar fi: . sistemele informatice speciale. obiective cuantificabile. C.accelerarea vitezei de rotatie a mijloacelor circulante. care asigura atutomatizarea calculelor tehnico-ingineresti. etc. de regula sunt furnizate prin documente intocmite de om. sisteme informatice pentru conducerea activitatiilor unitatiilor economico sociale.reducerea costului informatiei. . care modifica automat parametrii procesului tehnologic. sisteme informatice pentru conducerea sistemelor tehnologice care se caracterizeaza prin aceea ca datele de intrare sunt asigurate prin intermediul unor dispozitive automate care transmit sub forma de semnale informatii despre diversi parametrii ai procesului tehnologic. b.reducerea cheltuielilor indirecte. ca de exemplu: informare şi documentare tehnicostiintifica.cresterea exactitatii şi preciziei în procesul de prelucrare a datelor şi informarea conducerii. . c. Clasificarea sistemelor informatice Sistemele informatice se clasifica dupa mai multe criterii: A. astfel: a. etc. Din punct de vedere al posibilitatiilor de cuantificare a efectelor acestora: a. acestea se clasifica în 4 grupe.reducerea cheltuielilor de transport. . care sunt destinate unor domenii specifice de activitate. b.rationalizarea fluxurilor informationale. şi proiectare. etc.cresterea volumului productiei. medicina. . . d. . obiective necuantificabile. . care se caracterizeaza prin aceea ca datele de intrare.

Sisteme informatice cu organizarea datelor în baze de date. În functie de modul de organizare a datelor în cadrul sistemelor informatice acestea pot fi: a. De la baze de date cu structuri arborescente şi retea. sisteme informatice pentru conducerea activitatii la nivelul organizatiilor economico-sociale cu structura de grup. Un alt criteriu de clasificare al sistemelor informatice economice este nivelul ierarhic ocupat de sistemul economic în structura organizatorica a societatii. subramurilor şi activitatilor la nivelul economiei nationale. sistemele informatice pentru conducerea ramurilor. Sistemul informatic – instrument al conducerii moderne Obtinerea de catre agentii economici şi societatiile comerciale a unei eficiente economice sporite. s-a trecut la baze de date rationale. furnizand informatiile necesare coordonarii de ansamblu şi sincronizarilor în procesul reproductiei din cadrul economiei de piata. Se constituie la nivelul ramurilor. d. Sunt constituite la nivelul unitatilor administrativ-teritoriale şi servesc la fundamentarea deciziilor adoptate de catre organele locale de conducere. Principala lor functiune consta în fundamentarea şi reglarea echilibrului dezvoltarii economico-sociale în profil de ramura. b. b. Acest mod de organizare a datelor are tendinta de rasfrangere sub aspectul aplicabilitatii. Aceasta categorie de sisteme prezinta o tendinta de extindere şi dezvoltare. 8 . este conditionata de existenta unei conduceri stiintifice bazate pe o buna cunoastere a legilor economice. sistemele informatice functionale generale au ca atribut principal faptul ca intersecteaza toate ramurile şi activitatiile ce au loc în spatiul economiei nationale. c. C. conform caruia avem urmatoarea clasificare: a. sistemele informatice teritoriale. Acestea pot fi descompuse în subsisteme informatice asociate functiunilor economico-sociale sau chiar unor activitati. subramurilor şi activitatilor individualizate în virtutea diviziunii sociale a muncii şi specificate în clasificarea ramurilor economiei nationale. datorita neajunsurilor pe care le prezinta. sisteme informatice cu organizarea datelor în fisiere clasice. sisteme informatice pentru conducerea activitatii la nivelul unitatilor economie.B. e.

pe de o partea. Proiectarea la nivel micro şi macroeconomic a unor sisteme informatice care sa utilizeze tehnica bazelor de date şi care sa contina o serie de modele matematice. iar pe de alta parte. Cresterea complexitatii. substrat care este uzual denumit tehnologia informatiei. iar situatiile de informare – raportare sa aiba un caracter de semnalare preventiva a abaterilor fata de starea normala. reprezintã o forma superioara de organizare şi prelucrare a datelor. şi comunicatiile moderne. Masina şi energia vor juca un rol important. în care accentul se pune pe masina şi energie. b. În prezent se manifesta o tendinta clara în dezvoltarea sistemelor informatice bazate tot mai mult pe platformele software la nivel inalt. informatica. pentru noile industrii.Plecand de la faptul. pe de o parte. trecerea de la orientarea industriala. Se manifesta în mod clar o tendinta spre divizarea costurilor software-ului sistemelor informatice. dar pentru noile masini. iar pe de alta parte. În acest nou substrat se evidentiaza în mod decisiv informatica. reducerii costurilor hardware-ului. Aceasta schimbare consta defapt în adaugarea unui nou substrat în infrastructura tehnologica. ca modelele matematice reprezintã componenta stiintifica a unui sistem informatic. Informatizarea activitatilor economico-sociale a cunoscut profunde transformari precum: a. Aceasta extindere este pe cale de a produce o schimbare majora în societatea noastra şi anume. Se manifesta o intensa tendinta spre tehnologia sistemelor informatice bazate pe retele de calculatoare. O platforma software corespunde unei platforme de aplicatii şi contine functii software de bazã şi functii specifice aplicatiei companiei. se poate aprecia ca sistemul informatic constituie un adevarat instrument în conducerea stiintifica a activitatii economice. 9 . ca şi pentru celelalte activitati ale omului devin esentiale tehnologiile informatice care au la bazã electronica. Reducerea costurilor sistemelor informatice se datoreaza. la o noua orientare informationala în care accentul este pus pe robot şi informatie. fundamental în societatea informationala. Stadiul actual şi tendintele dezvoltarii sistemelor informatice În ultimii ani asistam la una dintre cele mai importante transformari din istorie ale infrastructurii tehnologice a societatii. tinand seama de facilitatile oferite de utilizarea calculatorului electronic. reducerii costului software-ului.

Apreciem ca în prezent domeniul informaticii se caracterizeaza prin cel mai pronuntat dinamism. separate. Unele aplicatii informatice solicita monitorizarea unor desene formate din grupuri de elemente complexe ce trebuie sa fie combinate. Structurile clasice de date bazate pe text şi valori numerice fie se dovedesc insuficiente. tehnologie sau mijloc de interconectare. atât a datelor cat şi a produselor software. precum 10 . se manifesta tendinta spre baze de date orientate obiect. având în vedere larga circulatie a acestor standarde. suprapuse şi modificate astfel incat sa permita elaborarea unor variante de proiect. c. presupun stocarea unor cantitati mari de informatii cu o structura complexa.  Asigura o crestere a gradului de portabilitate de pe o platforma de sistem pe alta. Faptul ca un sistem este deschis. produsele lor informatice vor fi mult mai vandabile decat daca nu le utilizeaza. Aplicatiile asociate cu disciplinele tehnologice cum ar fi : proiectarea asistata pe calculator. termenul de sistem deschis se referã doar la recunoasterea reciproca şi aplicabilitatea acelorasi standarde. În domeniul organizarii datelor.varietatii aplicatiilor şi aparitia de noi produse informatice cu un raport pret / performanta din ce în ce mai avantajos au facut necesara şi rentabila conectarea intre ele a calculatoarelor în cadrul unor retele care constituie la ora actuala suportul cel mai adecvat pentru teleinformatica. Au luat o amploare deosebita preocuparile privind realizarea unor retele eterogene de calculatoare. Astfel de standarde au cel putin urmatoarele efecte mai importante:  Producatorii se simt incurajati sa le implementeze deoarece. fie complexitatea lor depaseste posibilitatiile de stocare şi prelucrare oferite de tehnologiile clasice. Se asista la o proliferare de produse hardware şi software. nu implica şi nu impune nici o implementare practica de sistem. d. apar de la o zi la alta noi versiuni şi noi produse. sistemele informatice geografice şi sistemele bazate pe cunostinte. Se manifesta tendinta catre sisteme deschise.  Faciliteaza insusirea teoretica şi practica a hardware-ului şi softwareului de catre utilizatori Standardizarea se regaseste intr-o multitudine de domenii de activitati  Standardizarea retelelor de calculatoare. Bazele de date clasice sau relationale ofera prea putin suport teoretic şi practic pentru tipurile neconventionale de date.

În acest sens amintim arhitectura propusa de CODASYL şi ANSI. datorita faptului ca s-au impus prin performantele şi facilitatiile ce le ofera. care au elaborat limbajul de programare COBOL. prin elaborarea de catre ISO ( International Standard Organization ) a unui model arhitectural stratificat de referinta pentru interconectarea sistemelor deschise. Conceptul de sistem „deschis” în viziunea ISO denota capabilitatea oricaror 2 sisteme. pe langa activitatiile legate de formularea problemei.U. Basic.şi interconectarea retelelor a.identificarea datelor. sa se obtina sisteme teleinformatice de dimensiuni mari. 11 . CAPITOLUL 2 Structuri de date Prelucrarea automata a datelor necesita. Unele limbaje cum sunt: C.clasificarea şi descrierea propietatiilor. de analiza acesteia în vederea gasirii algoritmului de rezolvare şi o alta activitate deosebit de importanta. Aceste preocupari s-au materializat atât în plan practic. C++. ( Departament of Defence – DoD )  Standardizarea arhitecturii Sistemelor de Gestiune a Bazelor de Date. permitand în acelasi timp evaluarea standardelor existente.i. Scopul fundamental al acestui standard international este asigurarea unei baze comune pentru coordonarea de noi standarde privind interconectarea sistemelor.A. Modelul a fost adoptat în 1983 şi reprezintã un cadru conceptual de lucru pentru definirea de standarde referitoare la interconectarea calculatoarelor eterogene. au devenit standarde de facto. prin realizarea unor sisteme mari cat şi în plan teoretic. De asemenea a fost adoptat teoretic şi practic şi un model arhitectural ierarhizat. elaborat de catre Departamentul Apararii din S. . legata de organizarea datelor.  Standardizarea limbajelor de programare s-a materializat prin propunerile grupului de lucru CODASYL. SQL. a caracteristicilor datelor. omogene sau neomogene care „respecta” modelul de referinta şi standardele corespunzatoare de a putea fi interconectate. Organizarea datelor este un proces care cuprinde urmatoarele activitati: .

de organizarea interna şi externa a datelor.reprezentarea externa pe suporturi tehnice. Concepte de bazã Odata cu aparitia bazelor de date. se intelege un model de reprezentare a informatiilor despre obiectele supuse prelucrarii automate.gruparea datelor în colectii de date destinate prelucrarii automate. De exemplu. Practic. ( Telefon. . Valoare ). Pe de alta parte orice proprietatea a unui obiect poate fi descrisa printr-o pereche ( Atribut. accesibil atât utilizatorului cat şi componentelor calculatorului. Informatica ).identificarea. atribut şi valoare. . şi anume: entitate. 435 34 76 ). Notiunea de atribut este cunoscuta şi sub numele de camp sau caracteristica.. ( Facultate. Eficienta prelucrarii automate a datelor. poate fi asociata mai multor studenti. Valoare ). de stabilirea unor structuri de date care sa corespunda cerintelor de prelucrare. succesul acesteia depind în mare masura. entitatea grup se poate numi STUDENTI. un student X se poate reprezenta prin perechi ( Nume. Grupa. Nume. Telefon. deci mai multe perechi de forma ( Atribut. aceasta inseamna ca un atribut nu caracterizeaza doar o entitate. Notiunea de data În informatica prin data. Ion ). reprezentat prin proprietatiile lui. în terminologia curenta au fost introduse şi utilizare 3 concepte de bazã în organizarea datelor. ci o clasa de entitati. Facultate. În exemplul nostru. ( Grupa 601 ) etc. prin urmare o entitate poate fi reprezentata prin mai multe proprietati. Entitatea reprezintã un obiect concret sau abstract. multimea atributelor. definirea şi descrierea procedurilor de prelucrare automata. numita entitate grup. În functie de obiectele pe care le reprezintã datele se pot clasifica în:  date elementare sau scalare care se prezinta sub forma de entitati indivizibile 12 .

ele putand fi modificate. sau realocate pe toata durata de executie a programului respectiv. de reprezentare a datelor. atunci structura respectiva este recursiva. Aceste structuri pot curpinde: o fisiere de date o baze de date o banci de date Din punct de vedere al modului de alocare a zonelor de memorie. potrivit relatiei de ordine stabilita. la care alocarea zonelor de memorie necesare pastrarii temporare a datelor este facuta în momentul compilarii programului şi ramane aceasi pe toata durata de executie a programului respectiv. 13 . colectii de date. reprezentand modul de implementare. care contin elemente de acelasi tip. Dupa tipul componentelor. la momentul necesar. care contin componente de tipuri diferite. pe suport magnetic de date. structurile de date se pot grupa în:  structuri de date omogene. la operatorii de prelucrare a datelor. structurile de date vor putea fi:  structuri de date interne . eliberate. deoarece sunt realizate în memoria interna de tip RAM ( volatila ). structurile de date pot fi grupate astfel:  structuri de date statice. Componentele unei structuri se pot identifica şi selecta prin numele de identificare sau prin pozitia pe care o ocupã în cadrul structurii.  structuri de date eterogene. la care alocarea zonelor de memorie se face numai în momenutl executiei programului. În mod corespunzator. Dupa nivelul de structurare a datelor se poate face gruparea:  structura logica.  structuri de date dinamice. deoarece sunt memorate pe suport extern. care se prezinta sub forma unor multimi de date elementare intre care se definesc şi se descriu anumite relaţii.  structuri de date externe. care se referã la modul de ordonare a datelor. OBSERVATIE:Daca o structura se poate descompune în structuri de acelasi tip.  structura fizica. având caracter temporar. care au un caracter relativ permanent.

orice element neterminal are un succesor imediat unic 14 . pentru realizarea operatiilor un grup de operatori de bazã cu o anumita semantica.Tipuri de structuri de date Am vazut ca o structura de date reprezintã practic o colectie de date intre care s-au definit o serie de relaţii care duc la un anumit mecanism de selectie şi identificare a datelor. Principalele tipuri de structuri de date ( logice ) sunt:  structura punctuala  structura liniara a1 a2 Structurã liniarã simplã a3 a4 Principalele caracteristici ale acestui tip de structura sunt: . intre care sau stabilit anumite relaţii şi care folosesc. Aceste relaţii pot fi de tipul:  de echivalenta  de ordine  de ordine totala  de preordine Se numeste tip de structura de date o multime ordonata de date.cardinalul multimii elementelor initiale este egal cu 1 .cardinalul multimii elementelor terminale este egal cu maxim 1 .

De aceea. Astfel pentru arborii binari s-au identificat şi s-au descris 3 modalitati de parcurgere a elementelor arborelui denumite: . sau descendenta.exista unul sau mai multe noduri initiale (cardinalul miltimii este egal sau mai mare cu 1). legaturi budirectionale. sau ierarhica este definita atunci cand intre elementele colectiei de date exista o relatie de ordine. intre doua noduri. subarborii unui element oarecare sunt denumiti subarbore stang. daca componentele ei sunt structuri de tip retea  structura arborescenta.parcurgere în finordine ( postordine )  structura retea. el putand fi predecesorul propriului predecesor. Un ciclu se defineste atunci cand nodul initial este acelasi cu nodul final. . iar u este primul element.parcurgere în preordine .intre elementele structurii de tip retea se regasesc relaţii de tip m la n. . . definita atunci cand intre elementele colectiei de date exista o relatie de preordine. . axa de simetrie trecand prin radacina arborelui. Arbori binari Datorita specificului lor. unde v este ultimul element al structurii.- primul element nu are predecesori ultimul element nu are succesori relatiile stabilite intre date sunt de tip 1 la 1 daca exista un cuplu în relatie de forma ( u.orice nod poate avea mai multi predecesori. v ).parcurgere în inordine .exista unul sau mai multe noduri finale (cardinalul mltimii nodurilor finale este egal sau mai mare cu 1). şi respectiv subarbore drept. functie de pozitia relativa a acestora fata de elementul respectiv. . 15 . Atunci apar în retea cicluri. daca componentele ei sunt structuri arborescente .este practic un graf care are.structura liniara se numeste structura liniara cu elemente structurate retea. Ea are urmatoarele caracteristici: . atunci structura se numeste structura liniara inelara sau circulara.intre date se stabilesc relaţii de tipul 1 la 1 .structura liniara se numeste structura liniara cu elemente structurate arborescent. arborii binari admit o reprezentare grafica simetrica.

iar cu doua matrice. Banca de date reprezintã un sistem de organizare şi prelucrare respectiv tele-prelucrare a datelor constituit din: .-uri.  Despre acest tip de structura vom invata mai mult la S. pentru a asigura conditiile de integritate şi unicitate a datelor şi a elimina astfel nomaliile la actualizari.un sistem de programe pentru gestiunea datelor.. . x2..bazã de date . Bazã de date se defineste ca o colectie de date aflate în interdependenta. Masivul cu o dimensiune se numeste în mod uzual vector. Aceasta multime este organizata ca o lista liniara.xn un tablou unidimensional cu n elemente componente de acelasi tip. memorata pe suport impreuna cu descrierea datelor şi a relatiilor dintre ele.  Informatii despre cantitatile de produse finite care trebuie realizate  Informatii despre structura produselor finite respective.D. numite tablori sau relaţii. 16 . Structuri de date interne Cele mai frecvent utilizate structuri statice de date sunt:  masive (tablouri )  articole ( inregistrari logice ) Limbajele de programare permit implementarea acestor structuri statice de date.B. . obtinute prin metoda normalizarii. adica la sisteme de gestiune a bazelor de date. cu elemente structurale arborescente. special realizate pentru operatii cu colectii de date memorate pe suporti externi.G. Exemplu: Fie vectorul X cu elementele x1. Fisierul se defineste ca o multime de date omogene din punct de vedere al semnificatiei lor şi al cerintelor de prelucrare. Masivul reprezintã o structura de date omogena cu una. Structura relationara este formata din mai multe tabele de date elementare. x3. doua sau n dimensiuni.

. Metodele de acces la articolele unui fisier stabilesc modalitatile prin care se localizeaza un articol în fisierul de date. Tipuri de acces:  Acces secvential  Acces direct 17 . sau nu.. Un articol este format din campuri de date care se identifica în mod unic printr-un identificator sau nume asociat.Fisiere de date Articolul sau inregistrarea logica reprezintã o structura de date interna.. Metodele de organizare a fisierelor definesc regulile care stau la bazã constituirii articolelor în fisiere şi se stabilesc la operatia de creare a fisierelor. Fisierul de date este format din articole sau inregistrari logice care descriu aceleasi entitati şi formeaza o colectie de date omogene din punct de vedere al semnificatiei şi al cerintelor de prelucrare. Adresa de bazã+2*1 n Xn Adresa Adresa de bazã+(n-1)*1 Reprezentarea elementelor unui vector în memoria interna Articole. Astfel fisierele pot avea:  Organizare secventiala care memoreaza articolele de date secvential în ordinea introducerilor iar accesul la articole poate fi doar secvential.În memoria interna el va fi memorat astfel: X 1 X1 de bazã 2 X2 Adresa de bazã+1 . dar a carei valoare se asociaza fiecarui articol în parte. eterogena de tipul „ structura arborescenta „.  Organizare secvential-indexata care presupune crearea fisierului de date cu articolele ordonate crescator dupa valoarea unui camp de date numit cheie de indexare.  Organizare directa care presupune memorarea şi apoi identificarea articolelor printr-o cheie care poate fi un camp de date.

Din evaluarea unei expresii rezultã o valoare. rezultand astfel constructii sintactice denumite expresii. CAPITOLUL 3 Grafuri Definitii. se pot aplica diferiti operatori. Date şi expresii Asupra datelor elementare sau memorate în structuri de date statice sau dinamice. operatorii aritmetici au reprezentarea: + pentru adunare .operatori logici . care reprezintã rezultatul ei. În toate limbajele de programare. în cadrul prelucrarii atutomate. ordinea de desfacere a acestora fiind dinspre interior spre exterior. Operatorii pot fi grupati în: .operatori aritmetici . Expresiile sunt deci grupuri alcatuite din operanzi şi operatori.operatori pe siruri de caractere Toate limbajele de programare permit implementarea acestor tipuri de operatori şi constructia unor tipuri de expresii corespunzatoare.pentru scadere * pentru inmultire / pentru impartire ^n pentru ridicarea la putere n ( ) pentru gruparea operatiilor şi schimbarea ordinii normale de executie a acestora.operatori de comparare . modalitati noi de structurare a datelor. care utilizeaza concepte şi constructii noi.Programare orientata spre obiecte Programare orientata spre obiecte reprezintã un stil de programare nou. 18 . La programarea orientata spre obiecte procedurile de prelucrare şi datele sunt incapsulate în obiecte. interne sau externe. tipuri Notiunile de algoritm şi schema logica pot fi definite. de tratare a colectiilor de date şi programare. explicate şi mai ales foarte des utilizate în legatura cu elemente de teoria grafurilor. asupra carora se aplica mesaje care modeleaza comportamentul sistemului. Este permisa includerea unor paranteze în altele.

este varf terminal.icjoo se mi. Se poate demonstra. Se numeste arbore de sortare un arbore binar cu proprietatile: .otatea imeo somgire .în]. Arbori Se numeste arbore un graf neorientat. [i2.. CAPITOLUL 4 Algoritmi definire 19 . U ). Un graf orientat este o pereche ordonata G = ( X.i2]. U ) o succesiune de muchii de forma [i1. deosebirea fata de graful neorientat constand în faptul ca elementele lui U sunt perechi ordonate de varfuri numite arce.INF(i) ≤ INF(j) pentru orice varf j din subarborele drept al lui i.. 3. notiunile de lant şi ciclu isi au corespondent în notiunile de drum şi circuit. G are n-1 muchii şi nu contine cicluri. Doua varfuri unite printr-o muchie se numesc varfuri adiacente.i2. în care fiecare varf are cel mult doi descendenti. OBSERVATIE: Intr-un arbore cu n ≥ varfuri.. G este un arbore. facandu-se insa distinctia intre descendetul stang şi cel drept al fiecarui varf. G are n-1 muchii şi este conex. Se numeste arbore binar un arbore orientat..în] Un lant în care muchiile sunt diferite doua cate doua se numeste ciclu. Un varf care este extre. teorema: Fie G un graf neorientat.. cu n ≥ 1 varfuri. Se numeste lant intr-un graf G = ( X. U ). numite muchii.i3].INF(i) ≥ INF(j) pentru orice varf j din subarborele stang al lui i. unde X este o multime finita şi nevida de elemente numite noduri ( varfuri ). cu privire la grafuri.[în-1.Se umeste graf neorientat o pereche ordonata G = ( X. Urmatoarele afirmatii sunt echivalente: 1. 4.. conex. iar U este o multime de perechi neordonate de elemente distincte ale lui X. . Orice doua varfuri din G sunt unite printr-un unic lant. În cazul grafurilor orientate. notata prescurtat prin [i1.. 2. exista cel putin doua varfuri terminale.

algoritmul extragerii radacinii patrate a unui numar . C.algoritmul impartirii a doua numere .H. vom identifica în cadrul acestea etapele: .c sunt numere intregi. completarea şi definitivarea documentatiei programului . Basic.formularea problemei .elaborarea.b.testarea programului .scrierea programului . simplu şi eficient. derivand din numele matematicianului Abu Ja`far Mohammed ibn Musa al-Kahowarizmi.exploatarea curenta Notiunea de algoritmi Cuvantul algoritm este de origine araba. cum ar fi: .algoritmul rezolvarii ecuatiei de gradul II S-a demonstrat apoi ca nu orice problema poate fi rezolvata alcatuind un algoritm de rezolvare a acesteia. 20 . este fundamentala în activitatea de programare a calculatoarelor electronice. este decidabila.programul trebuie sa fie bun. De exemplu. preluata din matematica.realizarea. Java ) care conduc la solutionarea problemei formulate. Programarea este practic activitatea prin care se concepe şi se realizeaza programul pentru rezolvarea unei probleme. . cu ajutorul calculatorului electronic. notiunea de algoritm a devenit una din notiunile centrale ale matematicii actuale. problema gasirii solutiilor unei ecuatii diofantice de gradul I de forma: ax+by=c a. Cunoscuta cu aproape 2000 ani I. Sunt mai multe tipuri de algoritmi. Un program reprezintã o succesiune de instructiuni şi comenzi apartinand unui/unor limbaje de programare ( Pascal. Se spune ca o problema este decidabila daca exista un algoritm pentru rezolvarea ei. identificarea şi descrierea algoritmului de rezolvare .Notiunea de algoritm. Daca ne referim la activitatea de programare..

Practica acceptata si alte metode de descriere. in care trebuie sa sustina in fata unor nespecialisti in informatica. numite si pseudocod. prima este prea detaliata pentru gustul programatorilor si de aceea nu este acceptata decat in cazuri speciale. aparand in ele atat numele unor cantitati variabile. dintre care in ultima vreme s-au impus limbajele de prezentare a algoritmilor. In pseudocod subprogramele au urmatoarea forma generala: ANTET Secventa de instructiuni END ANTET poate fi de forma: PROGRAM nume_program 21 . cat si a unor constante.CAPITOLUL 5 Limbaje de prezentare a algoritmilor ( pseudocod ) Descrierea in practica a algoritmilor in limbaj natural sau cu ajutorul schemelor logice prezinta unele dezavataje. Astfel. Unele notatii folosite la descrierea algoritmilor Formulele folosite in matematica si in tehnica sunt date pentru cazul general. solutia adoptata.

PROCEDURE nume_procedura FUNCTIE nume_functie

Apelul subprogramelor se face prin referirea de forma: Nume ( lista_parametrii ) sau prin intermediul unui cuvant cheie cum ar fi cuvantul CALL: CALL nume_procedura ( lista_parametrii )

Exista posibilitatea reluarii repetate a unui pas sau grup de mai multi pasi in interiorul unui aloritm; aceste procee repetitive pot fi definite ca iterative sau recursive. Iterativitatea este procesul prin care rezultatul este obtinut prin executia repetata a uui set de operatii, de fiecare data cu alte valori de intrare. Recursivitatea reprezinta un proces repetitiv prin care rezultatul de la un anumit pas se determina pe baza unuia sau mai multor rezultate obtinute in pasii anteriori. Scheme logice Schema logica este o forma de prezentare a algoritmului si a modului de lucru al acestuia sub forma grafica, folosind diferite simboluri grafice. Se stie ca in practica programarii se acorda o importanta deosebita realizarii schemelor logice in perioada de debut, astfel ca dupa o anumita experienta in domeniu, se incearca tot mai des renuntarea la aceasta importanta etapa a proiectarii.

Figurile geometrice folosite la realizarea schemelor logice se numesc simboluri sau blocuri.

Principiile ralizarii schemelor logice:
22

- orice schema logica incepe cu blocul START - dupa START, daca e necesar si daca sunt date de intrare, se citesc datele de intrare. - Dupa terminarea activitatii unui bloc de prelucrare, incepe activitatea blocului imediat urmator. - Dupa terminarea activitatii unui bloc de decizie isi incepe activitatea blocul conectat la iesirea corespunzatoare conditiei adevarate, in cazul unui bloc simplu, cu doua iesiri, se executa blocul conectat la DA daca este adevarata conditia specificata si blocul conectat la NU in caz contrar. - Schema logica isi inceteaza activitatea la blocul STOP.

Schemele logice pot aparea, functie de gradul lor de dificultate, fiind: - scheme logice simple - scheme logice ramificate - scheme loice cu cicluri - scheme logice cu cicluri ierarhizate CAPITOLUL 6 Structuri fundamentale ale algoritmilor Structura secvenţialã sau liniarã desemneazã una sau mai multe operaţii ce se executã una dupã cealaltã, în mod liniar (secvenţial). Structura alternativãdesemneazã execuţia unei secvenţe de operaţii S1 sau a alteia S2, în funcţie de îndeplinirea sau nu a unei condiţii. Structurile alternative sunt de mai multe tipuri: • Structura IF – THEN – ELSE, selecteazã succesiunea operaţiilor ce urmeazã a fi executate, funcţie de valoarea logicã de ,,adevãr” sau ,,fals” pe care o are în momentul respectiv condiţia specificatã. Dacã este adevãratã condiţia se urmeazã calea specificatã de ramura DA, altfel se urmeazã calea NU.

23

Blocul are deci o intrare şi douã ieşiri, corespunzãtoare celor douã valori logice posibile pentru o expresie logicã (Adevarat şi fals, Da şi Nu)

Structura IF – THEN numitã şi selecţia simplã, este practic o formã particularã a selecţiei IF – THEN – ELSE, în care blocul de pe ramura Nu este vid. • În mod asemãnãtor se poate construi şi selecţia IF – ELSE, cu precizarea cã în acest caz blocul vid va fi cel de pe ramura Da. • Practic, în ambele forme particulare, se testeazã condiţia logicã şi se specificã doar succesiunea de operaţii ce trebuie efectuate pe una dintre ramuri. Pe ramura cu bloc vid nu se executã nimic. • Structura CASE – OF selecteazãuna dintre mai multe ramuri, în funcţie de valoarea unui selector. De aceea structura de acest tip se mai numeşte selecţie multiplã. Structura repetitivã sau iteraţia indicã repetarea unei operaţii sau secvenţe de operaţii S, atâta timp cât este îndeplinitã o anumitã conditie. În funcţie de momentul în care se face testarea condiţiei specificate, structurile repetitive sunt de mai multe tipuri:

Condiţia poate fi testatã anterior execuţiei secvenţei de comenzi S şi atunci avem o structurã de tip WHILE – DO

24

indiferent de tipul ei. Aşa este cazul structurii de tip WHILE. Aşa e cazul structurii repetitive de tip DO – FOR 25 .• Condiţia se testeazã posterior execuţiei secvenţei de comenzi S şi atunci avem o structurã de tip DO – UNTIL Structura repetitivã mai poate fi analizatã şi din punct de vedere al numãrului de reluãri. cãci nu se cunoaşte de la început numãrul de reluãri. o structurã poate fi: • fãrã numãrãtor. Din acest punct de vedere. • cu numãrãtor. atunci când se ştie sau se poate calcula automat numãrul de reluãri.

. iar f şi g sunt secvenţe structuratesau funcţii ale programului. Se observã cã diferenţa esenţialã între cele douã structuri constã în faptul cã DO – UNTIL executã S cel puţin o datã.Corolarul . dacã la intrarea în structurã condiţia este deja falsã.de sus în jos”: Un program structurat este echivalent cu un program scris sub una din urmãtoarele forme: P=Secvenţial(f. Teorema de structurã Bohm şi Jacopini spune: .f) Unde p este un predicat al lui P. . Teorema de corectitudine: 26 . în timp ce WHILE – DO poate sã nu-l execute pe S deloc.Orice schemã logicã este echivalentã cu o schemã logicã structuratã .g) P=Repetitiv(p.g) P=Alternativ(p. programatorul trebuie sã aigure negarea condiţiei pentru a permite ieşirea din structurile WHILE – DO şi DO – UNTIL. Programarea structuratã beneficiazã şi de un puternic suport teoretic constând într-o construcşie de principii. termeni şi teoreme matematice specifice.Pentru a evita ciclarea la infinit a structurilor repetitive. astfel încât organigrama sã fie structuratã şi sã fie echivalentã cu cea iniţialã.Dacã o organigramã cuprinde o mulţime F de acţiuni şi o mulţime P de predicate.f.

Proeesul de detectare şi apoi de eliminare a erorilor unui algoritm/program are douã componente. CAPITOLUL 7 Evaluarea corectitudinii algoritmilor Un program realizat trebuie sã fie corect. deoarece scopul ei este de a pune în evidenţã proasta funcţionare a programului. însoţit de o documentaţie corespunzãtoare. numite: • • verificare validare 27 . adresate în general practicienilor. programatorul însuşi trebuie sã adopte în aceastã etapã 0 atitudine “duşmãnoasã” faţã de propriul program. Analizând problema mai atent. Dacã fiecare nod se verificã local. dar şi uşor accesibile unui începãtor în programare. Se ştie cã. oricât de precisä şi laborioasã ar fi metodologia de elaborare. uşor de modificat. Dintre acestea amintim: • • • • • • testarea programelor şi depanarea programelor verificarea formalizatã a programelor cea mai slabã precondiţie cea mai tare postcondiţie instrucţiuni generalizate sintaxa expresiilor logice Acţiunea de testare a programelor se deosebeşte de celelalte faze prin care trec acestea (proiectare. se spune cã programul structurat este corect. sigur în funcţionare. Astfel. în timp ce alte faze au o esenţã constructivã. Din punct de vedere psihologic.) prin caracterul ei în aparenţã “demolator”. clar. Existã numeroase tehnici de verificare şi validare a algoritmilor. de a gãsi hibele aeestuia şi nu pãrţile sale bune. pentru a putea gãsi defectele acestuia. documentaţie. este oricând posibilã prezenţa unei/unor erori. într-un algoritm de calcul şi deci. programare. acela de a pune în funcţiune un program care sã funcţioneze la parametri prevãzuţi. eficient. etc. realizãm de fapt cã scopul testãrii este în realitate tot constructiv. portabil.Corectitudinea unui program structurat poate fi verificatã prin examinarea fiecãrui nod din arborescenţa sa. într-un program. testarea are în aparenţã un caracter distructiv.

de analiza riguroasã. Dacä acestea sunt corecte. ci se întâ1neşte pretutindeni. urmàtoarele: • descoperirea defectelor programului • certificarea faptului cã programul va funcţiona corect în condiţii de exploatare curentã. în ultimul timp. Ea se bazeazã pe construirea unor eşantioane de date de intrare care sã conducã la depistarea unor erori în functionarea programului.Aceste douà aetivitãţi ar trebui sã earacterizeze practic toate etapele prin care trece un program. oferindu-i posibilitatea de a aborda sistematic activitatea de testare a programelor. activitatea de verificare şi validare a unui produs program urmãreşte în principal. acolo unde se produce sau construieşte ceva. au apãrut. anumite rezultate. dupã cum existã şi un control final. Testarea programului rãmâne metoda de bazã pentru verificarea corectitudinii unui program. care ajutã programatorul. Putem spune cã succesul testãrii depinde de “arta” programatorului de a-şi construi setul de date de test. Aceste metode pot fi denumite: • testarea funcţionalã sau metoda cutiei negre. dar mai ales de calitatea datelor alese. la identificarea şi apoi descrierea algoritmului de rezolvare a problemei. a codificãrii datelor şi validarea rezultatelor obţinute. la analiza acesteia. o serie de metode de elaborare a datelor de test. Practic. care presupune 28 . programatorul aşteaptã sã obţinã la final sau pe parcurs. pornind de la nişte date de test construite de el. cu o probabilitate crescutã de depistare a erorilor. pentru realizarea recepţiei lui finale. În acest sens. În acest sens. Trebuie sä precizãm insã faptul cã relevanţa testului depinde de numãrul eşantioane1or de date de test. Prin testarea programului se înţelege deci executarea programului respectiv cu scopul de a descoperi o anomalie sau eroare. de la formularea cerinţei de rezolvare a unei probleme. produsului finit. existã în acest sens controale efectuate la nivelul fiecärei operaţii sau grup de operaţii. succesul ei fiind condiţionat în primul rând de experienţa programatorului. Aceasta deoarece tot mai mulţi specia1işti din diferite domenii aratã cã aceastã activitate de testare şi validare nu este specificã doar activitäţii de programare. de complexitatea şi completitudinea setului de date folosite în procesul testãrii. într-un timp cât mai scurt şi cu efort cât mai mic. complete sau în formatul aşteptat avem cel putin o eroare în execuţia programuiui. atentã a rezultatelor obţinute în urma fiecãrui test.

De aceea el este în mare mãsura dependent de experienţa şi îndemânarea programatorului. Ea se poate face în mod: • sttic. o altã metodã de depanare. care permite depanarea uşoarã. în timpul execuţiei acestuia Depanarea simbolicã. modificarea valorilor unor variabile. • testarea structuralã sau rnetoda cutiei transparente. cu semnalarea erorii şi localizarea ei. care presupune construirea datelor de test astfel încât toate pãrţile programului sã poatã fi testate. cuprinzãtoare din punct de vedere al situaţiilor sau valorilor de excepţie ce pot apare în execuţia curectã a programului. este mai uşor de utilizat.construirea datelor de test astfel încât sã permita testarea fiecãrei funcţiuni a programului. un depanator simbolic integrat. erorile datorate 29 . Testarea unui program trebuie sã se finalizeze. Limbajele de programare oferã. plãcutã şi eficientã a programelor prin urmãtoarele operaţii: • executarea pas cu pas a programului (un pas inseamnã de fapt o instrucţiune executabilã). determinarea naturii sale şi corectitudinea ei. Depanarea unui program constã în localizarea erorii. Succesul activitãţii de testare constã deci în conceperea unor date de intrare prin prelucrarea cãrora defectele algoritmului şi deci şi a programului sã fie puse în evidenţã prin observarea şi analiza rezultatelor obţinute. a valorilor unor variabile sau expresii specificate de programator (care apar într-o fereasträ specialã Watch Window). În activitatea de testare şi depanare a programelor. deoarece oferã posibilitatea de a urmãri executarea programului la nivel de limbaj sursã. • • specificarea unor puncte de suspendare a execuţiei programului. • observarea. în timpul execuţiei. dupã executarea programului • dinamic. testarea programului este urmatã de depanarea lui. complexe. de abilitatea lui de a-şi construi datele de test cât mai complete. pentru a fi utilã. în ultimile lor versiuni. De aceea.

Aceasta trebuie iniţializatã cu poziţia primului element din şir care trebuie prelucrat şi apoi testatä şi comparatã valoarea ei cu cea finalã. precondiţia n>=2 poate fi inlocuitã cu n>=1 care se considerä o precondiţie mai bunã. while i <n do begin i:=i+1. Ele rãmân deosebit de utile pentru semnalarea multora dintre erori şi deasemenea pentru familiarizarea programatorului cu algoritmul. Practica a dovedit. suntem nevoiţi sã facem noi. ciclul cu testarea iniţialã a condiţiei trebuie sã fie bine analizat. aşa cum necesitã algoritmul de prelucrare descris. expresia care stabileşte dacã un ciclu se executã sau nu trebuie astfel formulatã sau initializatã încât sã asigure sau nu prima execuţie.variabilelor neinitializate sunt greu de semnalat şi de localizat. În acest sens. trebuie sã facem precizarea cä adeseori. Proprietatea P se numeşte precondiţie sau proprietate finalã. care atestã capacitatea 30 . i:=1. Practica a dovedit cä existã situaţii când pentru un algoritm A şi o postcondiţie datã. mai ales atunci când aparent totul funcţioneazã corect. verificat şi testat din punctul de vedere al expresiei care-i controleazã reluarea. nu intereseazã o precondiţie oarecare. care descrie o mulţime de date iniţiale mai cuprinzãtoare. Fie secvenţa de comenzi. O analizã mai atentã a algoritmului aratã cã precondiţia n>=1 poate fi inlocuitã cu n>0 consideratä o precondiţie mai bunã. în timpul execuţiei programului. care calculeazã factorialul unui numãr >=2: (n>=2) f:=1. iar proprietatea Q postcondiţie san proprietate finalã. Deci. Este vorba de ciclul cu testarea iniţialã a condiţiei. iniţializarea variabilei care controleazã execuţia ciclului. f:=f*i end (f=n!) Se poate observa factorialul este calculat corect şi dacã n porneşte de la valoarea 1 (n>=1). prin program. În acest sens amintim variabila cu rol de indice (numãrãtor) care asigurã parcurgerea elementelor unui vector. la care reluarea ulterioarã va fi hotãrâtã de valoarea pe care respectiva variabilã o primeşte. Deasemenea. obtinutã prin adãugarea valorii 1. cu modul sãu de lucru. cã oricât de numeroase ar fi testele efectuate asupra unor programe foarte complexe. pentru a asigura execuţia lui pentru prima datã. în timp. Deci. ci se cautã “ cea mai bunã” precondiţie care rezolvã algoritmul dat. în cadrul ciclului. ele nu pot garanta funcţionarea corectã a acestora.

instrucţiuni şi semnificaţii atribuite acestora.Algol . evolutia lor fiind nemijlocit legatã de cea a calculatoarelor electronice. mulţimea datelor initiale fiind din nou mãritã prin adãugarea valorii 0 (0!=1). CAPITOLUL 8 Limbaje de programare Un limbaj de programare este un ansamblu de simboluri.algoritmului de a calcula factorialul oricãrui numãr natural. cuvinte. Orice limbaj de programare presupune definirea urmatoarelor elemente componente:  alfabetul  vocabularul 31 .Prolog precum şi programarea pe obiecte ( Basic.Pascal . Limbajul de programare este astfel un mijloc prin care programatorul comunicã cu calculatorul. permit traducerea automatã a instrucţiunilor scrise într-un limbaj apropiat de limbajul curent de limbajul binar.Lisp .PL/1 În ultimul timp s-au impus tot mai multe limbaje de inteligenţã artificialã şi sisteme expert cum sunt: . prin care se descriu operaţiile la care sunt supuse datele şi ordinea de execuţie a acestora. utilizat pentru descrierea algoritmilor. Limbajele de programare reprezinta principalele mijloace de comunicare om-masina. Dintre limbajele de programare evoluate utilizate pe toata gama sistemelor de calcul menţionãm: . etc.Fortram .Basic . pentru rezolvarea automatã a unei probleme date. Un program reprezintã o alta modalitate de descriere a unui algoritm de rezolvare a unei probleme date.C++ . a caror era a inceput prin anii 1944. ).C . Pentru a înlãtura acest mare dezavantaj au apãrut limbajele simbolice şi apoi limbajele de programare evoluate care prin intermediul ansambloarelor şi compilatoarelor de care dispun. C.Cobol . Programul este o succesiune de intrucţiuni aparţinând unui limbaj de programare.

Instrucţiunea reprezintã exprimarea intr-o forma riguroasa a unei operatii şi precizeaza functia şi adresele operanzilor. Un astfel de program se numeşte program sursa. ierarhizate conform naturii specifice a problemei de rezolvat. Lucrul cu un anumit limbaj de programare presupune existenta compilatorului pentru acel limbaj.Limbajul Pascal a fost implementat pânã în prezent pe o mare varietate de calculatoare. În interiorul unei astfel de unitati functionale. Un program structurat este constituit din unitati functionale bine definite. Limbajul de programare pascal face parte din categoria limbajelor de programare evoluate de nivel inalt. gramatica  punctuatia  semantica Rezultatul activitãţii de programare îl constituie programul scris ca text într-un limbaj de programare. Fiind scris ca format text. El este scris printr-un editor de texte acceptat de limbajul de programare respectiv.Relaţia dintre cele 3 elemente: algoritm. programul sursã nu este înţeles de cãtre şistemul electronic de calcul. având un inalt grad de portabilitate comparativ cu implementarea altor limbaje de programare. Limbajul Pascal include conceptele programarii structurate în ambele sensuri ale efortului de abstractizare presupus de realizarea unui program: ogranizarea datelor şi conceperea succesiunii de operaţii. accesibil calculatorului. Un program reprezintã o mulţime ordonatã de instrucţiuni. rezultand aşa numitul program cod obiect. asociatã unui algoritm de rezolvare a unei probleme care comandã operaţiile de prelucrare a datelor. Ansamblul format din limbajul de programare şi programul translator asociat. structurarea se manifesta atât la nivelul operaţiilor de executat cât şi la cel al datelor de prelucrat. formeaza sistemul de programare. Aceastã operaţie se realizeazã cu un program translator numit compilator. limbaj şi program poate fi exprimatã astfel: Blocul 32 . Pentru aceasta este necesara traducerea lui intrun cod intern. Programarea structurata este o metoda independenta de limbajul de programare utilizat. Compilatorul este componenta software care realizeazã traducerea programului sursa în cod intern.

tipul REAL nefiind ordinal. Tipul Caracter ( CHAR ) O variabilã de tip caracter poate avea drept valoare un caracter. Din punct de vedere al posibilitatii de modificare a valorii în faza de executie a programului. programele. împreunã cu mulţimea operaţiilor care se aplica asupra acestora. adica 255 coduri.date variabile . procedurile. Toate obiectele manipulate în pascal poarta un nume.Byte . deci prin care se descrie algoritmul de prelucrare.Word . Tipul de date poate fi: predefinit şi construit pe baza celor predefinite. Un tip de date reprezintã setul de valori pe care le poate lua elementul respectiv.real .date constante Tipurile intregi de date sunt: . Acestea sunt cuprinse între Begin şi End. functiile.Shortint . Orice variabila utilizata în program trebuie sa apartina unui tip. În partea declarativa orice declaratie careia nu i se asociaza obiectele legate de programul în cauza se poate omite. Astfel tipurile reale pot fi: .double .executabil constituie lanţul de instructiuni prin care este codificat programul în limbajul pascal. Acest nume se numeste identificator. x:=`a` sau x:=a Existã funcţii care permit trecerea de la caracter la codul ASCII şi 33 . datele se pot clasifica în: .single .comp Funcţiile SUCC şi PRED nu functioneazã. Este interzis sa dam nume diverselor obiecte care sa coincida cu acele cuvinte rezervate.extended . O constanta de tip caracter poate fi: `a` `:` literele mari au alte valori decat cele mici x:char se reprezinta în memorie pe un octet. Identificatorii sunt denumiri prin care se desemneaza datele.Integer .Longint Tipul real reprezintã un numãr real cuprins între douã limite care diferã de la un compilator la altul şi de la un tip la altul.

se inşirã separate cu `. chiar dacã este egalã cu cea iniţialã. Char ) se regasesc în tipul subdomeniului. Tipul Boolean este un tip ordinal. care ocupã un octet memorie şi poate lua 2 valori logice: adevarat şi fals. 34 . x:=chr(64) ORD ( caracter ) este o funcţie care intoarce codul ASCII al caracterului respectiv. CHR ( cod ) este o funcţie care intoarce ca rezultat caracterul respectiv. va genera un mesaj de eroare. False ) Tipul Declarat ( Enumerativ ) este definit de utilizator ca o lista ordonatã. singura deosebire dintre ele constand în multimea valorilor pe care le poate lua. duminica ) Tipul Subdomeniu se mai numeste tip interval şi se defineste ca submultime a unui tip ordinal prin precizarea intervalului inchis de valori.. Declararea constantelor: CONST ident = valoare.` Declaraţia de funcţii şi proceduri function nume_funcţie (declaraţie de var): tip rez. function fact (n: integer):integer. Declaraţia de tip se face : Type boolean = ( True. Declaraţia de variabile Var identif var: spaţiu tip var Dacã sunt mai multe variabile de acelasi tip. Se asigurã astfel protecţia valorilor. prin enumerarea valorilor posibile astfel: TYPE identif tip = ( lista elemente ) TYPE zi-sapt= ( luni. Toate caracteristicile tipului parinte ( Integer .invers. . enumerativ.. Declaraţia de tip TYPE Identif_tip=definiţie tip. marti. Pot fi numai de tip standard ( scalar ) şi se declarã în sectiunea CONST Valoarea constantei nu poate fi modificatã în timpul rulãrii programelor. Orice încercare de a atribui constantelor o valoare. .

<> . pe multimi ) = . > .` i:=1 . Se prezintã ca o linie goala urmatã de `. fãrã a avea o mnemonica explicitã. Prioritatea operanzilor în Pascal: NOT * / DIV MOD AND + . OR. şi operatori relationali pe multimi Expresii logice sunt cele care în urma evaluarii produc un rezultat logic de TRUE sau FALSE ( Boolean ). Are formatul general: Identificator:=valoare.` Instrucţiuni pascal: Limbajul pascal este puternic orientat spre programarea structuratã. -. 35 . Instructiunea vidã descrie acţiunea vidã. < . Progamul scris într-un limbaj de programare evoluat deci în pascal. ea este definitã prin lipsa în contextul unor construcţii pascal. Ele se prezintã fie sub forma unor condiţii simple. fie sub forma unor conditii compuse. Dacã nu suntem siguri de prioritatea anumitor operatori este necesara utilizarea parantezelor.Mai multe variabile se separã prin `. >= . NOT. Instrucţiunea de atribuire evalueazã o expresie şi atribuie rezultatul obtinut unei variabile sau functii. Instrucţiuni simple: • • • • de atribuire apeluri de procedura instrucţiunea de salt necondiţionat(goto) instrucţiunea vidã Instrucţiuni simple Prin instructiuni simple se realizeazã o mare parte din operatiile de bazã a algoritmilor de prelucrare. 2 instrucţiuni vide If x>0 then x:=x+1 else.OR ( *.<= . +. fiind conceput astfel încât sa implementeze corect conceptele proiectãrii şi realizãrii structurate şi modularizate a programelor. se numeste progream sursã. formate din mai multe conditii simple legate prin operatorii logici: AND.

END. Efectul executiei instructiunii IF: Se evalueaza conditia specificata. write ( x1. Instructiunea de salt neconditionat GOTO Format : GOTO eticheta. Instructiunea WHILE se mai numeste instructiune cu test initial. x2 ). Instructiuni pentru realizarea structurilor repetitive Instructiunea WHILE realizeaza structura repetitiva conditionata anterior. La intalnirea ei se executa un salt la linia care este precedata de eticheta urmata de `:` IF delta >= 0 THEN GOTO 30 ELSE WRITE (` ecuatia nu are solutii`). se numeşte procedurã. 36 .Apelul de procedurã: Orice rutinã scrisã de noi. x2:=(-b-sqrt(delta))/(2*a). pentru a efectua anumite operaţii. Format : BEGIN lista-instr END. este echivalenta cu o constructie formata din urmatoarele instructiuni: IF conditie THEN BEGIN instructiune GOTO 1 end. dacã nu este gãsit acolo procedura e cautatã în lista de declaraţii de proceduri a programului. Procedurile întâlnite în program ca simple instrucţiuni genereazã o serie de operaţii: compilatorul cautã numele de procedurã în biblioteca sa. 30: x1:=(-b+sqrt(delta))/(2*a). dacã este gãsitã procedura e apelatâ. end. dacã nu este nici acolo se afiseazã un mesaj de eroare. Format: WHILE conditie DO instructiune. Instructiuni structurate Instructiunea compusa este o secventa de instructiuni delimitata de cuvintele rezervate BEGIN.

ci prin proceduri specializate în acest sens.Instructiunea Repeat Realizeaza „structura repetitiva conditionata posterior”.variabila}). inainte de UNTIL mi se pune `. Fisierele INPUT şi OUTPUT conţin excusiv şiruri de caractere organizate pe linii. Instructiunea FOR ( ciclu cu contor ) Realizeaza structura repetitiva cu numarator ( contor de numarare ). Aceste fişiere în Turbo Pascal sunt asociate tastaturii şi respectiv ecranului. Format: 1) FOR contor:=val initiala TO val finala DO instructiunea. REPEAT instructiune UNTIL conditie.`. Liniile sunt încheiate de caracterul special standard EOL introdus automat la apasarea tastei ENTER.variabilele pot fi doar de tip CHAR.variabila}). citirea şi scrierea nu se realizeaza prin instructiuni. Ca şi ELSE. REAL sau STRING. INTEGER. Format: REPEAT instructiune UNTIL conditie . Procedura READLN Format: READLN ( variabila{. . Citirea datelor din fişierul INPUT Existã doua proceduri standard predefinite în Pascal: -Read -Readln Procedura READ Format: READ ( variabila{. Scrierea datelor: -Write -Writeln 37 . 2) FOR contor:=val initiala DOWNTO val finala DO instructiunea Instructiuni de citire şi scriere a datelor În pascal. proceduri standard ale limbajului.

împărtirea reală. o funcţie. Matrice): structura de tablou în Pascal este mai flexibilã decât în alte limbaje de programare. o procedură.<>. Separatorii : spaţiu. integer. o contantă. restul împărţirii întregi. long.nume 38 .Instrucţiuni de selectie multiplã ( CASE ) Format: CASE expresie OF lista etichete CASE:instructiune..>=.tipul de baza al tabloului . o metodă. o proprietate.:_!@#$%&etc. Tipul variabilelor din Basic sunt : variant. *. Caractere speciale: =-/^(){}[]. fiind rezultatul compunerii a douã tipuri: .=. ridicarea la putere. boolean. o enumerare. o formă. Cifrele sistemului de numerotaţie zecimal: 0-9. Constantele : reprezintă o valoare fixă care nu se schimbă în timpul execuţiei programului sau de la o execuţie la alta. a-z. Variabilele din Basic sunt caracterizate prin : . pntru a documenta programul. -. Astfel pentru valorile unui tip întreg se pot face următoarele operaţii : +. Pot fi de 2 tipuri : intrinseci şi simbolice. date şi object. END. Comentariile sunt şiruri de caractere care au în faţă caracterul apostrof (‘) şi servesc pentru a face mai lizibil textul programului .. Un proiect Basic poate să conţină maxim 32000 identificatori. currency. un control. byte. double. Fiecare tip de dată permite o serie de operaţii. Identificatorii : Pot fi o variabilă. Variabilele : reprezintă o locaţie de memorie internă care serveşte pentru stocarea temporară a datelor şi care se identifică printr-un nume. un tip definit de utilizator. împărţirea întreagă. un modul sau chiar proiectul însuşi. single. Structura de tablou (Vector.tipul de indexare al tabloului • • • • • Setul de caractere : Acestea sunt entităţi formate din caractere : Literele mari şi mici ale alfabetului limbii române: A-Z. un obiect. tab. Caractere speciale perechi: <=. Enter.

RIGHT$. de comparare şi de concatenare. COS. End Sub. CINT . Sintaxa generală a unei proceduri este : Private/Public/Static/Sub ……………………………. Există trei tipuri de proceduri : SUB. Funcţii pentru şiruri de caractere : LCASE$. FUNCTION.. RND. ASC. Instrucţiuni de atribuire – atribuirea se poate efectua prin instrucţiunile : Let . LEN. UCASE$. LTRIM$. DATE$ . LEFT$. O funcţie este o procedură care efectuează o anumită sarcină într-un program. Dialogul standard cu utilizatorul Funcţia INPUT. SIN. 3. INT. 5. LOG. declaraţia de tip se face de către programatori în prima parte a modului de cod cu ajutorul instrucţiunii : • TYPE – definire variabilă • END TYPE Operatorii : Reprezintă comenzi speciale pentru operaţiile ce pot fi executate cu datele din program. SQR. 1.domeniu. logici. Pentru aceasta. MID$. RTRIM. 2. TAN . Basic pune la dispoziţie 4 tipuri de operatori : aritmetici. 6. Lset şi Rset – pentru atribuiri speciale de şiruri sau tipuri definite de utilizator 39 . Funcţii pentru lucrul cu date calendaristice : TIME$. Funcţii pentru conversia întregilor : INT. Tip de proprietate. EXP. CLNG. 4.pentru valori atribuite variabilelor şi proprietăţilor . O procedură este o secvenţă de instrucţiuni executate ca un tot unitar sau partajabile.tip de data .apelul funcţiei INPUT permite preluarea de date de la tastatură. Set – pentru atribuirea de obiecte la o variabilă de tip obiect . CHR. VAL. Funcţii matematice şi statistice : ABS. INSTR. deci tipuri de date predefinite. Utilizatorul poate defini în cadrul modulului său şi tipuri de date proprii. Funcţii pentru conversia tipului de dată : CDBL. ATN.

Then. 2.comenzi pentru structuri repetitive. If…Then…Else. . prin inserţie. o serie de operaţii care necesită testarea unor condiţii. Exit. deci : .secvenţială /liniară . Există mai multe variante de sortare : sortarea prin interschimbare. Comenzile pentru structurile repetitive : While…Wend.repetitivă. For…. în afara unor secvenţe de operaţii care se execută liniar. Do…. CAPITOLUL 9 Algoritmi speciali 1.alternativă/de decizie . Fişierele conţin colecţii de date omogene ca natură şi criterii de prelucrare.comenzi pentru structuri alternative . . Limbajul de programare Basic implementează aceste structuri de control ale programului prin comenzi corespunzătoare. Stop. For Each… Next. prin selecţie. funcţie de care se o succesiune de operaţii sau alta. End. Se ştie că în cadrul algoritmilor de rezolvare a problemelor se întâlnesc. Avem de a face cu cele trei tipuri de structuri fundamentale : . Sortarea unui vector Prin sortare se înţelege aranjarea elemntelor unei mulţimi .Loop.Terminarea execuţiei unui program sau oprirea temporară a acestuia sepot realiza prin instrucţiunile : DoEvents. Interclasarea a doi vectori de dimensiuni variabile. memorate pe discul magnetic . Comenzile pentru structurile alternative : If…. Select Case. în mod necondiţionat. Varianta 1 : 40 . în ordine crescătoare/descrescătoare a valorilor acestora. Există mai multe variante de interclasare : 1. sau o serie de operaţii care se execută în mod repetat.Next. ordonată după acelaşi criteriu. o nouă mulţime. Prin interclasare se înţelege procesul de obţinere din două sau mai multe mulţimi ordonate. .

Modularizarea programelor. Programarea modulară.Presupune compararea a două elemente . Un modul funcţional se caracterizează prin : • Nume extern şi/sau intern. deci elementele finale au valoarea HV. Procesul se încheie când ambii vectori iniţiali au fost parcurşi integral. câte unul din fiecare vector iniţial. 41 . ca element terminal în structura unităţii funcţionale(UF). după criteriul funcţional. • Funcţie logică perfect definită. reducerea costului elaborării. cu scrierea celui mai mic dintre ele în vectorul rezultant şi trecerea la următorul element al vectorului iniţial din care s-a preluat. Algoritmii de rezolvare a problemelor complexe se întocmesc şi/sau pot fi descompuşi în manieră sistematică.Această valoare poartă denumirea HIGH-VALUE (HV) . CAPITOLUL 10 Tehnici de programare 1. documentării. până la nivel de subalgoritm/funcţie elementară. Varianta 2 : Presupune obţinerea vectorului rezultant într-un proces unic de comparare. testării. întreţinerii şi dezvoltării produselor software. în vectorii iniţiali. Pentru a continua procesul în cazul în care se epuizează unul din vectorii iniţiali. ultimul element al acestuia va primi o valoare mai mare decât oricare din valorile regăsite. • Punct de intrare şi punct de ieşire unice. Tabele de decizie Programarea modulară are ca obiectiv reducerea empirismului artizanal folosit în elaborarea programelor şi instaurarea principiilor ingineriei programării. • Relaţia cu modulele din aval şi amonte-interfată. • Posibilitatea elaborării şi testării independente (în cadrul contextului său). 2. în mod ierarhic. de regulă. vizând obţinerea unor programe corecte şi fiabile.

• Module nefuncţionale. • Module mixte.4. în funcţie de filozofia de realizare a sistemului. În mod ideal . modulele trebuie să fie cât mai independente pentru a reduce gradul de cuplare a acestora. • Module comune. de facilităţile de utilizare puse la dispoziţia beneficiarului său şi de deciziile de proiectare adoptate. Tehnici de modularizare 42 . • Module de prelucrare sau module-funcţie.Tipuri de module funcţionale : • Module directoare sau de comandă sau monitoare. 2 Monitorizarea modulelor. Interconectarea modulelor. • Module speciale. Se disting mai multe nivele de coeziune : • Întâmplătoare • Logică • Temporală • Procedurală • Comunicaţională • Secvenţială • Functională. . Gradul de interconectare poate fi : • Minimal • Normal. 3. Tipul de monitorizare poate varia în limite relativ largi. Coeziunea modulelor. • Module monitor. astfel : • Monitoare pure • Monitoare complexe • Monitoare foarte complexe.

Condiţii compuse aplicate asupra condiţiilor elementare prin conjuncţie. 5. • Metode euristice. fiind astfel un mijloc eficient de modularizare. a listelor. Tabele de decizie (TD) Tabele de decizie reprezintă un procedeu de reprezentare a algoritmilor cu număr mare de decizii bazate pe condiţii complexe sau dinamice. • Metoda Backtracking. TD conţin două tipuri d intrări : • Condiţii elementare simple sau compuse aplicate unor variabile cu valori alternatil-exclusive de tip alfanumeric sau logic. a datelor comune. • Metoda Branch and Bound. 43 . • Metoda Divide et impera. • Separarea funcţiilor de intrare/ieşire • Evitarea reutilizării zonelor de memorare temporară intermodule • Nealterarea valorii constantelor.Construirea unor programe modularizate implică utilizarea unor tehnici şi procedee foarte diversificate : • Utilizarea tabelelor de decizie şi a diagramelor de optimizare • Utilizarea parametrilor simbolici • Asigurarea şi definirea centralizată şi standardizată a parametrilor statici. • Metoda programării dinamice. CAPITOLUL 11 Tehnici de programare structuratã Cele mai utilizate tehnici de programare structurată sunt : • Recursivitatea . • Metoda programării liniare. • Metoda Greedy. a tabelelor de decizie.

4. Produsul cartezian a N mulţimi. care este gestionată în mod implicit. la fiecare la fiecare apel de funcţieurmătoarele informaţii : • Valorile parametrilor de tip valoare. • Adresa de întoarcere la instrucţiunea aflată după instrucţiunea de apel. 44 . Generarea combinărilor. Problema plăţii unei sume S utilizând N tipuri de monede. Se cere deci o singură soluţie.1. Metoda “ Divide et Impera” Exemple de probleme rezolvate cu această metodă : căutare binără. Elementele mulţimii A se parcurg pe rând. Generarea aranjamentelor. 3. după o eventuală rearanjare a lor. în vederea testării lor pentru adăugarea acestora la B. Tehnica “Backtracking” • • • • • • • • Această tehnică se foloseşte în rezolvarea unor probleme cum ar fi : Generarea permutărilor de n elemente. • Adresele parametrilor de tip variabilă. La baza recursivităţii stă stiva. Problema celor N dame. Generarea partiţiilor unei mulţimi. • Variabilele locale ale subprogramului. Metoda Greedy Caracteristicile acestei metode sunt : • La intrare avem o mulţime A cu N elemente • Se cere selectarea unei submulţimi B a lui A sau o ordine de prelucrare a elementelor lui A care să optimizeze o funcţie obiectiv dată . în implementarea funcţiilor şi procedurilor . Problema Comis-voiajorului. Recursivitatea Este o tehnică de programare utilizată frecvent . 2. în această zonă de memorie salvându-se automat.

. minim şi locul în care acesta se aflã de pe fiecare coloanã g) elementul maxim la nivel de matrice h) elementul minim la nivel de matrice program matricea_de_la_curs.j. type matrice=array[1.20] of integer.p.min2.d.i.f.w. for i:=1 to n do 45 .y:integer.ma. readln(m). write('n=').max2.m. maxim şi locul în care acesta se aflã de pe fiecare coloanã e) valoarea elem.20.n. begin writeln('dati nr de linii şi nr de coloane').z.minn. maxim şi locul în care acesta se aflã de pe fiecare linie d) valoarea elem. var a:matrice. minim şi locul în care acesta se aflã de pe fiecare linie f) valoarea elem.min..maa.s.x. readln(n).g.1. max. write('m=').CAPITOLUL 12 Probleme Problema nr. 1 Sa se prezinte sub forma de chema logicã şi instrucţiunea unui limbaj de programare sau pseudocod un algoritm eficient care sã determine pentru o matrice de n linii şi m coloane a cãrei elemente se citesc de la tastaturã urmãtoarele: a) media aritmeticã a elementelor de pe fiecare linie b) media aritmetica a elementelor de pe fiecare coloanã c) valoarea elem.maxx.e.

c) for i:=1 to n do begin max:=-3200. for i:=1 to n do if a[i.i. read(a[i. d) for j:=1 to m do begin max2:=-3200.j].ma).'] şi este egal cu '. for j:=1 to m do if a[i.' este elementul a['.j]>max2 then 46 . end. end.for j:=1 to m do begin writeln('a['.maa).']='). readln. writeln('media aritmetica pe coloana '. for i:=1 to n do p:=p+a[i. x:=j.'='. readln. end.'.i.j]>max then begin max:=a[i.'.j]. maa:=(p div n).j.'= '. ma:=(s div m). writeln('media aritmetica pe linia '.'. a) for i:=1 to n do begin s:=0. end.i.i .max).j.'.x.j]. end. b) for j:=1 to m do begin p:=0.j]). writeln('maximul liniei '. readln. for j:=1 to m do s:=s+a[i.

w.i.'.'.min).' este elementul a['. end.'] şi este egal cu '.j. end. end.'] şi este egal cu '.i.'.j. for i:=1 to n do if a[i.'] şi este egal cu '.begin max2:=a[i. for j:=1 to m do if a[i. 47 .'. readln. end.y.j]<min then begin min:=a[i. z:=i. end.j].j]<min2 then begin min2:=a[i.'.j. readln.min2).j]>maxx then begin maxx:=a[i.z. writeln('minimul liniei '.j]. y:=i.' este elementul a['. g) maxx:=-3200.max2). w:=j.'.' este elementul a['. writeln('minimul coloanei '.j. end. readln.j]. writeln('maximul coloanei '. for i:=1 to n do for j:=1 to m do if a[i. f) for j:=1 to m do begin min2:=3200. minn:=3200. e) for i:=1 to n do begin min:=3200.j].

'.f. f:=i. g:=j. e:=j. end.j]<minn then begin minn:=a[i. end. end. h) for i:=1 to n do for j:=1 to m do if a[i.'.'.maxx). writeln('elementul maxim al matricei este a['.j].minn). readln.']='.g. SCHEMA LOGICÃ: 48 . writeln('elementul minim al matricei este a['.e.'.d.d:=i.']='.

49 .

50 .

51 .

52 .

k:integer. begin write('dati numarul de elemente').i.20] of integer. type vector=array[1. readln(n).Problema nr. program ddd. for i:=1 to n-1 do for j:=i+1 to n do if v[i]=0 then begin k:=v[i]. readln. readln(v[i]). end. v[i]:=v[j]. n.v[i]).']='. end.i.j. var v:vector. end. 53 . for i:=1 to n do writeln('v['. for i:=1 to n do begin write('v['..']='). Sã se mute la sfârşitul vectorului elementele sale nule pãstrând ordinea celorlalte elemente.i. 2 Se dã un vector cu n elemente numere întregi. v[j]:=k.

SCHEMA LOGICÃ: 54 .

b.Problema nr. 3 Să se realizeze un program pentru evaluarea expresiei: A +B. end. în funcţie de valoarea sa. program prg2_pagina_187.read(b).c:integer. begin write('Introduceti valoarea pentru a= ').read(a). e:=0.read(c). 55 . write('Introduceti valoarea pentru b= '). se observă că datele de intrare sunt A. write('Introduceti valoarea pentru c= '). dacă C<0 Analizând problema dată. va calcula pe E fie ca A+B. readln. fie ca A-B. B şi C. dacă C≥0 E= A-B. write('E:= '. if (c<0) then e:=(a*a)-b else if (c=0) then e:=sqrt((a*a)-b) else e:=(1/(a*a))-b. şi.e:8:2). Algoritmul va testa pe C. e:real. var a.

SCHEMA LOGICÃ: 56 .

write('m='). begin write('n=').n. readln(m). for i:=1 to n-1 do if n mod i=0 then s1:=s1+i. readln(n). for i:=1 to m-1 do if m mod i=0 then s2:=s2+i. readln. end.i:integer.Problema nr.s1.s2. var m. if (s1=m) and (s2=n) then writeln('aceste doua numere sunt prietene') else writeln('din pacate nu sunt prietene'). 4 Sa se verifice dacã 2 numere sunt prietene Doua numere sunt prieten dacã primul numar este = cu suma divizorilor celui de-al doilea mai putin el insusi şi cel de-al doilea este egal cu suma divizorilor primului numar mai putin el insusi n=220 1+2+4+5+10+11+20+22+44+55+110 m=284 1+2+4+71+142 s1 = suma divizorilor lui n mai putin el insusi s2 = suma divizorilor lui m mai putin el insusi n şi m prietene dacã s1=m şi s2=n program lalala. 57 .

SCHEMA LOGICÃ: 58 .

prietenul meu. tace dacă cealaltă tăcea). fantoma care râde face opusul la ceea ce cealaltă făcea în minutul precedent. altfel ea face în fiecare minut ce făcea în cel precedent.3: când fereastra este deschisă. Marius şi Radu au fost să vadă la hipodrom cursa de cai.când el cântă la pian şi fantoma nu râde. Radu a crezut astfel: 59 . Andi vrea să ştie cum să scape de fantome (să le facă să tacă)! Rezolvare: . El a moştenit şi castelul Towertia. fantoma care cântă la vioara îşi schimbă activitatea (dacă cânta-tace. . . dacã tăcea-cântă). dacã tăcea-cântă). Andi a observat anumite obiceiuri: .Probleme de logicã: Problema nr. 5: În această vară. bătrânul Trică a murit. fantoma care râde face opusul la ceea ce cealaltă făcea în minutul precedent. fantoma care cântă la vioara îşi schimbă activitatea (dacă cânta-tace. altfel ea face în fiecare minut ce făcea în cel precedent. Mai întâi s-au dus să vadă caii. lăsând proprietăţile sale ca moştenire nepotului său Andi. Începând cu ora 12 noaptea până dimineaţa se aud în tot castelul două zgomote descifrabile: un cântat duios la vioară şi un râs puternic.2: când fereastra este închisă fantoma care râde face ce făcea cealaltă fantomă în minutul precedent (râde dacă cealaltă cântă. Au făcut pariuri pe primele cinci locuri.când fereastra este închisă fantoma care râde face ce făcea cealaltă fantomă în minutul precedent (râde dacă cealaltă cântă.1: când el cântă la pian şi fantoma nu râde. .când fereastra este deschisă. tace dacă cealaltă tăcea) Problema nr. bântuit de fantome. 6 Duminică. .

1) Doodoo. 4)Candy. 7 Un batranel se duce la piaţã (mai bine statea acasa) sã vândã nişte ouã. 5) Elfy Rezultatele au arătat că nici unul nu a căştigat: 1)Marius nu a ghicit locul nici unui cal 2)Marius nu a ghicit nici măcar ordinea a câte doi cai unul după altul Radu a fost mai aproape de realitate: 3)A ghicit locurile a doi cai. 4)Doodoo. Care a fost rezultatul ? Radu Marius 1 Doodoo Azur 2 Azur Emily 3 Elfy Candy 4 Candy Doodoo 5 Emily Elfy Urmărind tabelul de mai sus putem afirma că: Pe locul I nu va fi Doodoo sau Azur Pe locul II nu va fi Emily Pe locul III nu va fi Candy Pe locul IV nu va fi Doodoo Pe locul V nu va fi Elfy Deci Doodoo poate fi pe locurile II sau V. Ordinea este: 1 Elfy 2 Doodoo 3 Azur 4 Candy 5 Emily Problema nr. 3) Elfy. 3)Candy. 2) Azur. Marius a pariat astfel: 1) Azur. vinovatul vrând sã îşi rãscumpere greşeala l-a întrebat : 60 . 4)A ghicit ordinea finala a două perechi de cai unul după altul. 5) Emily. 2) Emily. Un tânãr neatent l-a îmbrâncit şi coşul a cãzut spãrgând ouãle.

Tu poţi gãsi numãrul de ouã din coş? Rezolvare: . 61 .mai spune cã dacã le scotea câte 2..continuãm cu 91:7=13 91-1=90:2=45 :3=30 :4=25 :5=18 :6=15 Rezultã cã bãtrânelul avea în coş exact 91 de ouã. 77. în coş rãmânea mereu un singur ou de unde rezultã cã din numãrul care este multiplu de 7 dacã scadem 1 trebuie sã rãmânã un numãr care sã fie divizibil şi cu 2 şi cu 3 şi cu 4 şi cu 5 şi cu 6 .deci cãutãm un numãr care sã aibe ultima cifrã 1 sau 6 .câte 4. 84 sunt excluse . 42.. dar ştiu cã dacã le scoteam câte 2. Dupã câteva minute de gândire.câte 3.câte 3.câte 5 sau câte 6. nu rãmânea nici unul. .câte 5 sau câte 6. iar dacã le scoteam câte 7 . tânãrul a calculat câte ouã erau.incercãm 21:7=3 21-1=20:2=10 20:3 nu este divizibil .cãutãm în continuare.verificãm 56:7=8 56-1=55:2 nu este divizibil . 70. 49 sunt excluse .astfel 7.batrânelul spune cã dacã scotea ouãle câte 7 nu mai rãmânea nici un ou un coş de unde tragem concluzia cã numãrul ouãlor trebuie sã fie un multiplu de 7 . 14 sunt excluse .câte 4. în coş rãmânea mereu un singur ou.63.-Câte ouã au fost în coş? -Nu-mi aduc aminte.28. 35.

Bibliografie Manual „Algoritmi şi structuri de date: fundamente ale programãrii structurate” / Cezar Botezatu – Bucureşti : Editura Universitarã.ro/ cel mai tare site cu referate 62 . 2004 Powered by http://www.referat.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->