Sunteți pe pagina 1din 17

Java, un limbaj de programare orientat pe obiect, puternic tipizat, este printre cele mai solicitate limbaje in cerintele job-urilor

din Romania, dar si din Eur opa. Limbajul imprumuta o mare parte din sintaxa de la C si C++, dar are un mode l al obiectelor mai simplu. Cele mai multe aplicatii distribuite sunt scrise in Java, fiind utilizat si pe dispozitive mobile gen telefon, agenda electronica, p almtop. In urma clasificarilor realizate, Java isi mentine primul loc in topul c elor mai utilizate limbaje de programare, la fel cum se intampla si acum 5 ani. Job-urile care cer cunoasterea limbajului de programare Java sunt printre cele m ai ofertante, atat din punct de vedere al numarului de locuri de munca disponibi le, dar si al pachetului salarial oferit. C, un limbaj de programare standardizat, compilat, de nivel mediu, este apreciat pentru eficienta codului obiect pe care il poate genera si pentru portabilitate a sa. Sintaxa limbajului C sta la baza multor limbaje de programare populare, pr ecum: C++, Java, JavaScript, C#. Ca si in cazul limbajului Java, acesta se situe aza pe locul doi, la fel ca in 2006. C++este un limbaj de programare general, un limbaj multi-paradigma, cu verificare statica a tipului variabilelor, care suporta programare procedurala, abstractiz are a datelor si programare orientata pe obiective. A devenit un limbaj foarte p opular in anii '90, ramanand la fel pana in prezent, conform statisticilor. PHP, unul dintre cele mai importante limbaje de programare web open-source si se rver-side, este folosit pe scara larga in dezvoltarea paginilor si aplicatiilor web. Popularitatea sa se datoreaza simplitatii sale, eficientei, securitatii, fl exibilitatii si, nu in ultimul rand, gratuitatii sale. C#este un limbaj de programare orientat pe obiect, derivat din C++. Avantajele sa le sunt: dezvoltarea rapida de aplicatii, functionare inter-platforme, acces la resursele caracteristice platformei si suport pentru platformele COM si .Net. Ac est limbaj se bucura de o popularitate ridicata datorita simplificarii scrierii de programe, fiind o cerinta obligatorie cunoasterea sa pentru numeroase job-uri disponibile pe piata muncii in acest moment. Objective Ceste o extensie a limbajului de programare C, utilizat pentru dezvolta rea aplicatiilor pentru Apple OS X si iOS. Piata muncii din Romania tine pasul c u evolutia tehnologiei, existand job-uri ofertante pentru programatori si specia listi care sa dezvolte tehnologii pentru iPhone si iPad. Visual Basiceste un alt limbaj de programare prezent in cerintele job-urilor, fii nd axat pe componenta de interfata a programului, programatorul realizand cu usu rinta interfete standardizate de tip Windows, fara a fi necesara scrierea unui c od. Poate fi utilizat la crearea de programe simple, educationale, dar si la cre area de aplicatii complexe, precum diverse jocuri. Pythoneste un limbaj de programare dinamic multi-paradigma, folosit de companii p recum Google si Yahoo. Este un limbaj popular datorita faptului ca permite crear ea rapida a aplicatiilor care nu cer viteze inalte de procesare a datelor, dar s i pentru ca este utilizat ca limbaj de criptare folosit in cadrul aplicatiilor s crise in alte limbaje. Folosit pentru o gama larga de aplicatii precum administrarea de sisteme, dezvol tarea web, aplicatii de retea, interfete grafice,Perleste un limbaj de programare general, ale carui caracteristici sunt: simplitatea utilizarii, suportul pentru programarea procedurala si obiectuala, precum si suportul integrat pentru proces area de text. Java Scripteste un limbaj de programare orientat pe obiect, fiind bazat pe concep tul prototipurilor. Este utilizat atat pentru construirea paginilor web, cat si pentru scriptarea acestora. Programatorii pot utiliza Java Script pentru a verif ica datele introduse de utilizatori sau pentru a crea meniuri si efecte animate. In ordinea clasificarii lor in topul celor mai populare limbaje de programare, p e urmatoarele pozitii se situeaza: Ruby, Delphi, Lisp, Transact-SQL, PL/SQL, Lua , RPG, Pascal, Assembly si Ada. Comparand clasificarea realizata in 2006 de Tiobe Software (companie specializat a in monitorizarea modificarilor aparute in acest domeniu) cu cea din 2011, se p

oate remarca o constanta in timp a popularitatii limbajelor de programare clasat e pe primele pozitii, ceea ce poate reprezenta un indicator al viitoarelor tendi nte din aceasta arie a domeniului IT. Unlimbaj de programareeste un set bine definit de expresii ?i reguli (sau tehnici) valide de formulare a instruc?iunilor pentru uncomputer. Un limbaj de programare are definite un set de reguli sintactice ?i semantice. El d? posibilitatea prog ramatorului s? specifice ?n mod exact ?i am?nun?it ac?iunile pe care trebuie s? le execute calculatorul, ?n ce ordine ?i cu ce date. Specificarea const? practic ?n ?ntocmirea/scrierea programelor necesare ("programare"). Pentru executarea unui program scris ?ntr-un limbaj oarecare, exist?, ?n princip iu, dou? abord?ri:compilaresauinterpretare. La compilare, compilatorul transform? p rogramul-surs? ?n totalitatea sa ?ntr-un program echivalent scris ?n limbaj ma?i n?, care apoi este executat. La interpretare, interpretorul ia prima instruc?iun e din programul-surs?, o transform? ?n limbaj ma?in? ?i o execut?; apoi trece la instruc?iunea doua ?i repet? acelea?i ac?iuni ?.a.m.d. Unele limbaje se preteaz? bine la compilare; de exemplu limbajele clasice:Pascal,F ortran,C. Altele sunt cu predilec?ie interpretate, de ex.BASIC,PHP,SQL. Multe limbaj e moderne combin? compilarea cu interpretarea: codul surs? estecompilat?ntr-un lim baj binar numitbytecode, care la rulare esteinterpretatde c?tre oma?in? virtual?. De remarcat faptul c? unele interpretoare de limbaje pot folosi compilatoare a?a-n umitejust-in-time, care transform? codul ?n limbaj ma?in? chiar ?naintea execut?r ii. Limbaje generale Limbaje care pot fi folosite (cel pu?in teoretic) la rezolvarea oric?rui tip de probleme: * TEO (Basic) * Alen (variant? modificat? a limbajului TEO) * BASIC(QuickBasic,GW-BASIC,Visual Basic) * C * C++ * C# * Clips * Cobol * Fortran * Haskell * Java * JavaScript * LISP * Pascal(?iObjectPascal, folosit deBorland Delphi) * Perl * PHP * Prolog * Python * Ruby * Seed7 * Scriptol * Tcl/TK * XHTML * MATLAB * SmallTalk * D * Borland Delphi * Algol * Simula Cum in ziua de astazi peste tot auzim de limbaje de programare, mai jos este pre zentat un mic traseu al drumului parcurs de codul scris de voi pana la procesor, unde se fac calculele si o clasificare a limbajelor de programare. Limbajul cu care lucreaza procesorul este limbajul masina ce consta dintr-o seri e de instructiuni reprezentate prin coduri numerice, pe care procesorul le execu ta secvential in memoria interna.

Deoarece scrierea programelor in acest limbaj este foarte dificila, au aparut li mbajele de nivel inalt care sunt mult mai apropiate de limbajul natural. Insa in structiunile limbajelor de nivel inalt nu pot fii executate de catre procesor, a stfel fiind nevoia unui translator pentru traducerea instructiunilor din limbaju l inalt in limbajul masina. Clasificarea limbajelor de programare 1. Dupa nivelul de apropiere al acestora de limbajul natural Limbaje de nivel scazut: limbajul de asamblare; Limbaje de nivel mediu: C, C++; Limbaje de nivel inalt: Java, PHP, Prolog, Pascal, Matlab, Python etc; Limbajul de asamblare este cel mai apropiat de limbajul masina al procesorului. Codurile numerice din acesta sunt inlocuite cu mnemonice(prescurtari de 3-4 lite re care indica o operatie). De exemplu ADD, insemnand operatia de adunare, cores punde codului 3 din limbajul masina. Asamblor se numeste translatorul utilizator pentru traducerea mnemonicilor din limbaj de asamblare in limbaj masina. 2. Dupa modul de traducere Limbaje compilate: C, C++, Pascal, Java; Limbaje interpretate: PHP, Javascript, Prolog, Matlab La limbajele compilate translatorul se numeste compilator, iar avantajele folosi rii unui astfel de limbaj sunt urmatoarele: programul sursa este tradus integral in limbajul masina, iar rezultatul este un fisier care se poate distribui pe oricate calculatoare nu este nevoie de codul sursa pentru al executa, astfel se face si protejarea dr epturile de autor. viteza de executie ridicata, intrucat programul este deja transpus in intregime Dezavantajul este ca un program sa fie compilat trebuie sa fie destul de rigid s i restrictiv. La limbajele interpretate translatorul poarta denumirea de interpretor si functi oneaza in felul urmator: preia prima comanda din codul sursa, o traduce in limba jul masina si o executa, apoi a doua comanda si tot asa. Principalele avantajele sunt: flexibilitatea sporita, de exemplu in majoritatea limbajelor variabilele numai t rebuie declarate intretinerea este simplificata, deoarece numai trebuiesc compilate, iar orice mo difcare se reflecta imediat in program. Dezavantaje: viteza de executie scazuta, datorita interpretarii pas cu pas a programului impreuna cu programul trebuie distribuit si un translator pentru acest limbaj, c are sa asigure traducerea in limbajul masina. 3. Dupa scopul pentru care au fost proiectate Limbaje de uz general: C, C++, Pascal; Limbaje specializate: Prolog, SQL Limbajele de uz general in majoritatea cazurilor sunt limbaje compilate. Acestea sunt folosite pentru rezolvarea majoritatii problemelor de programare. Limbajele specializate in majoritatea cazurilor sunt interpretate; iar acestea s unt folosite pneutr rezolvarea problemelor dintr-un domeniu restrans. De exemplu Prolog pentru aplicatiile de inteligenta artificiala, SQL pentru bazele de date . 4. Dupa modul de restrictionare Limbaje tipizate: C, C++, Pascal, Java; Limbaje netipizate: PHP; Limbajele tipizate sunt cele care impun anumite restrictii asupra opreatiilor ca re se aplica anumitor date. Tipul datelor trebuie declarat si respectat pe tot p arcursul programului. Majoritatea limbajelor tipizate sunt si limbaje compilate Limbajele tipizate sunt cele care nu impun restrctii si ofera o flexibilitate sp orita. Variabilele nu sunt restrictionate la un anumit tip de data. In majoritat ea cazurilor aceste limbaje sunt si interpretate. Programarea este o abilitate foarte complexa ce necesita multi ani de studiu pen tru a fi stapanita. Acest articol incepe prin a prezenta calea spre cunoastere e xplicand cateva alegeri ce trebuiesc luate de un incepator si o orientare spre i

nstrumente si resurse. Pasii 1. Sa te decizi in ceea ce vrei sa faci Programarea este un subiect destul de amplu: puteti face fie jocuri, fie site-ur i si aplicatii web, procesare de texte, automatizari de task-uri (scripting), in terfete grafice etc. Daca vi se pare cool sa invatati programare si nu aveti nic io aplicatie specifica in minte, este ok, dar gandirea in avans la ceea ce dorit i sa programati,va va ajuta sa luati decizii in cunostiinta de cauza in timpul s tudiului. 2. Alegerea unui limbaj de programare In primul rand invatati un limbaj simplu, cum ar fiPython, dupa ce ati invatat de stul de mult se trece la invatarea C/C++ pentru a intelege exact cum functioneaz a si cum interactioneaza programele.PERLsiJAVAsunt alte doua limbaje cunoscute pent ru incepatori. Trebuie sa-ti cercetezi domeniul tinta pentru a sti care sunt lim bajele ce trebuiesc cunoscute (ex. SQL pentru baza de date) sau care ,dupa caz, trebuiesc evitate. Nu trebuie sa va lasati pacalati de jargoane precum: orientat pe obiecte , concurent , sau dinamic . Toate acestea inseamna ceva, dar vor fi intelese dupa capatarea unei anumite experiente in programare. 3. Gasirea resurselor de invatare Cautati site-uri Web bune pentru a incepe studierea limbajelor mentionate mai su s si vizitati pagina oficiala (daca exista) a limbajului pentru a gasi un tutori al sau manual pentru incepatori. De asemenea cautati o persoana care stie deja s a programeze. Tutorialele online sunt bunicele, dar pot fi frustrante cateodata daca nu ofera raspunsurile dorite. Uneoricursurile de programaresivideotutorialelev a ajuta mult. 4. Se incepe usor Nu va puteti astepta sa scrieti cea mai bine vanduta capodopera de 700 de pagini daca nu aveti nicio experienta practica in scris. Cam acelasi lucru se intampla si cu programarea. Incepeti cu constructii de baza si scrieti programe scurte ( de la 10 la 30 de linii) pentru a va testa intelegerea conceptului. Intinde-te daca e nevoie, dar nu incerca sa alergi inainte sa stii sa mergi! 5. Calcularea timpului Inainte sa va puteti numi un expert este nevoie de multe ore de practica pentru rezolvarea diferitelor probleme.Project Eulerare multe sarcini mici, clasificate i n functie de dificultate care sunt utile tocmai pentru finisarea abilitatilor si retinerea in practica, de asemenea ajuta la realizarea shemelor logice. 6. Perseverenta Programarea poate fi foarte frustranta, dar finalizarea cu succes a unui program este un sentiment profund de satisfactie si multumire. Nu renuntati daca nu int elegeti un concept, programarea poate deveni un lucru foarte abstract de invatat . Atunci cand lucrati pe o problema deosebit de complexa luati pauze periodice p entru a permite creierului sa se relaxeze. Asigurati-va un bun program pentru a lucra. 7. Continua sa inveti Sa stiti un limbaj de programare este bine, dar sa stiti patru sau cinci este si

mai bine. Indiferent ce limbaj folosesti cel mai des, sa ai cunostinta si de al tele pe care sa le proiectezi te face un mai bun programator si mai capabil sa i ntelegi concepte comune si probleme in abstract. Deci invatati mai multe limbaje de programare, in special 2-3 cu diferite filozofii de difertie de proiectare c um ar fiLisp, Java si Perl. 3 limbaje de programare pe care e bine s? le ?nv??a?i Dori?i s? deveni?i programator? V? ?ntreba?i ce limbaj de programare s? ?nv??a?i ? Aceasta este cea mai des pus? ?ntrebare de c?tre oamenii care intr? ?n lumea lim bajelor de programare. ?ntrebarea este important? deoarece o tehnologie bine ale as? ofer? ?anse mai mari c?nd alege?i locul de munc?, ?anse mai mari pentru un s alariu ?i un c?stig superior ?i prin aceasta un viitor mai sigur. Criteriul dup? care noi recomand?m cele mai bune limbaje de programare pe care s ? le ?nv??a?i, este simplu. Recomand?m acele limbaje care sunt cele mai folosite , care asigur? cele mai bune salarii. Dar care sunt u?or de asimilat? De aceea, v? facem cuno?tin?? cu trei dintre cele mai utile limbaje de programar e de ?nv??at. 1. PHP PHP este un limbaj de programare puternic ?i simplu pentru elaborarea programelo r pe Internet. Este cel mai popular limbaj de programare pentru site-urile de pe Internet. Ast? zi peste 20 de miloane de site-uri Web func?ioneaz? pe servere cu PHP instalat. Programatorilor din toat? lumea le convine flexibilitatea lui, viteza ?i u?urin? a cu care se utilizeaz?. ?n plus, instrumentele de lucru ?n PHP sunt gratuite. P ute?i s? le prelua?i de pe Internet ?i s? ?ncepe?i cu programarea ?n zece minute . PHP este util pentru elaborarea a tot felul de func?ionalit??i Internet, de la a plica?ii mici, simple p?n? la Web magazine, portaluri, ?i sisteme de content man agement. ?nainte, paginile simple HTML, cu interactivitate limitat? au dominat Internetul . Ast?zi Internetul este mai complex. ?ntreprinderile a?teapt? mai mult de la pr ezentarea lor online, iar aceasta cere aplica?ii mai dinamice ?i mai interactive . Limbajul PHP este ideal pentru scrierea acestui tip de programe ?i ?n acest scop este ?i dezvoltat. Posibilit??ile largi pe care le are, sintaxa u?or de ?n?eles ?i compatibilitatea cu diferite sisteme de operare ?i servere Web, l-au f?cut s? fie un limbaj idea l pentru dezvoltarea rapid? a aplica?iilor Web ?i crearea sistemelor de Internet complexe. Se poate g?si tot timpul de lucru ?n PHP. Limbajul de programare PHP se ?nva?? r elativ repede, a?a c? ?n scurt timp pute?i ajunge la nivelul a?teptat de profesi onalism ?i de lucru. Exist? ?nc? un avantaj important privind asimilarea PHP-lui: chiar ?i pentru cei f?r? nicio experien??, deschiderea platformei Web ?i accesarea lucr?rilor, perm it ?ncep?torilor s? lucreze la dezvoltarea num?rului mare de site-uri ?i a?a s? c??tige ?n scurt timp referin?e ?i experien?a care se caut? la angajarea program atorilor de calitate.

2. C# C# este cel mai popular limbaj de programare pentru scrierea celui mai larg spec tru de programe, drivere, software de sistem, jocuri, aplica?ii utilizate ?n cad rul bazelor de date, etc... Programele scrise ?n C# sunt formate din mai multe p?r?i de baz? (componente) ca re se pot combina ?n diferite forme, ca ?i cuburile lego. Acest limbaj ofer? posibilitatea dezvolt?rii sistemelor de programe mari, astfel c? programatorul poate face fa?? f?r? greut??i programelor cu cantit??i enorme de coduri. Mediul deprogramare C#este puternic, flexibil ?i lejer. Milioanele de profesioni?t i din toat? lumea utilizeaz? acest limbaj de programare. Este un instrument extr aordinar prin care o idee se poate pune u?or?n practic?. Cunoa?terea acestui limba j de programare v? va asigura condi?ii excelente de lucru. Pe l?ng? aceasta, chiar dac? este foarte robust, este destul de simplu, cu numai 80 de cuvinte rezervate (memora?i doar 80 de cuvinte ?i a?i ?nv??at un limbaj n ou ?n ?ntregime). C?nd ?nv??a?i s? utiliza?i C# ?i s? lucra?i ?n trei medii de dezvoltare cheie:ASP .NET, .NET Windows Forms ?i ADO.NET, ve?i putea elabora o gam? larg? de programe pentru Windows ?i Web. ?n urma parcurgerii acestui program vi se vor oferi posibilit??i profesionale fo arte bune. Profesioni?tii ?n C# pot g?si de lucru u?or. 3. Java Java este un limbaj de programare dezvoltat de companiaSun Microsystems ?n anul 1 991, ca o parte din proiectul de dezvoltare a software-lor pentru televizoare, a parate video ?i alte aparate electronice asem?n?toare. Din aceast? cauz?, Java a trebuit s? fie simplu, rapid, eficient, de ?ncredere ? i u?or transportabil de pe un dispozitiv pe altul. Aceste caracteristici l-au f?cut s? devin? ideal ?i popular pentru crearea progr amelor, serviciilor, jocurilor pentru telefoanele mobile ?i crearea func?ionalit ??ilor ale serviciului Web. Java, chiar dac? este unlimbaj nou, este foarte popular. Unul din motivele princip ale pentru aceast? popularitate este faptul c? programele Java se pot executa pe aproape orice tip de calculator. Din acest? cauz?, Java este orientat pe obiect ca ?i C#. Acest lucru pentru un p rogramator ?nseamn?c? poate s? fac? sau s? schimbe programe mari far? prea multe c omplica?ii. Limbajul ?n sine este simplu, ?n compara?ie cu majoritatea limbajelo r de programare, motiv pentru care se ?nva?? relativ u?or. Cu toate acestea, lim bajul este robust ?i puternic. Locurile de munc? pentru programatorii Java nu sunt at?t de accesibile ca cele p entru programatorii PHP ?i C#, dar exist? oferte ?i sunt pl?tite excelent. Care dintre aceste trei programe v? atrage cel mai mult? Cunoa?terea unuia dintre aceste trei limbaje de programare se consider?ca fiind o abilitate cheie pentru un programator. Care limbaj v? atrage cel mai mult?

Din fericire, aceste limbaje de programare se ?nva?? u?or, astfel c? pute?i s? l e asimila?i repede. Dou? din aceste trei limbaje, PHP ?i C#, se pot ?nsu?i la ni vel profesional la LINK Academy pentru genera?ia 2012/2013. Importanta limbajului C Creat in anul 1972 de programatorii de sistem Dennis M. Ritchiesi Brian W. Kernighan de laBell Laboratoriescu scopul de a asigura implementarea portabila a s istemului de operare UNIX, C-ul este astazi unul din cele mai cunoscute si puter nice limbaje de programare. Eficient, economic si portabil, C-ul este o alegere buna pentru realizarea oricarui tip de programe, de la editoare de texte, jocuri cu facilitati grafice, programe de gestiune si pentru calcule stiintifice, pana la programe de sistem, constituind unul dintre cele mai puternice instrumente d e programare. Adesea referit ca limbaj portabil, C-ul permite transferul programelor int re calculatoare cu diferite procesoaresi in acelasi timp faciliteaza utilizarea c aracteristicilor specifice ale masinilor particulare, programele scrise in C fii nd considerate cele mai portabile. Daca evolutia limbajelor de programare a adus in prim plan nume ca FORTRAN , LISP, COBOL, ALGOL-60 sau PASCAL, unele cu raspandire mai mult academica fiind f olosite pentru a prezenta conceptele de baza sau conceptele avansate de programa re ca de pilda ALGOL-60 sau PASCAL, altele cu raspandire industriala masiva ca d e pilda FORTRAN si COBOL limbajul C a patruns mai lent, dar foarte sigur. Realit atea arata clar ca, in momentul de fata, piata producatorilor de programe este d ominata net de C si de variantele evoluate ale acestuia. Elementele principale care au contribuit la succesul C-ului sunt urmatoare le: 1modularizarea programelor ce da posibilitatea unui singur programator sa sta a relativ usor programe de zeci de mii de linii de sursa; 2capacitatea de programare atat la nivel inalt catsi la nivel scazut ceea ce ilitatea utilizatorului de a programa fie fara a simti sistemul de operare si masi na de calcul, fie la un nivel apropiat de sistemul de operare ceea ce permite un control foarte bun al eficientei programului din punct de vedere viteza/memorie ; 3portabilitatea programelor ce permite utilizarea programelor scrise in C pe varietate de calculatoaresi sisteme de operare; 4facilitatile de reprezentare si prelucrare a datelor materializate printr-un mare de operatori si functii de biblioteca ce fac programarea mult mai usoara. Prin anii 80 interesul pentru programarea orientata pe obiecte a crescut, c eea ce a condus la aparitia de limbaje care sa permita utilizarea ei in scrierea programelor. Limbajul C a fost dezvoltat si el in aceasta directie si in anul 1 980 a fost dat publicitatii limbajul C++, elaborat de Bjarne Stroustrup de la AT &T. La ora actuala, majoritatea limbajelor de programare moderne au fost dezvolt ate in directia programarii orientate pe obiecte. Limbajul C++, casi limbajul C, se bucura de o portabilitate mare si este im plementat pe o gama larga de calculatoare incepand cu microcalculatoare si pana la cele mai mari supercalculatoare. Limbajul C++ a fost implementat pe microcalculatoarele compatibile IBM PC in mai multe variante. Cele mai importante implementari ale limbajelor C++ pe ac este calculatoare sunt cele realizate de firmeleMicrosoftsiBorland. Conceptele programarii orientate pe obiecte au influentat in mare masura d ezvoltarea limbajelor de programare in ultimul deceniu. De obicei, multe limbaje au fost extinse astfel incat ele sa admita conceptele mai importante ale progra marii orientate pe obiecte. Uneori s-au facut mai multe extensii ale aceluiasi l imbaj. De exemplu, limbajul C++ are ca extensiilimbajul Ece permite creareasi gesti uneaobiectelor persistente, lucru deosebit de important pentru sistemele de gesti une a bazelor de date,limbajul Oce incearca sa imbine facilitatile de nivel inalt cu cele ale programarii de sistem,limbajul Avalon/C++destinat calculului distribu it,si nuin ultimul rand binecunoscutul de acumlimbajJava, specializat in aplicatii I nternet. Interfetele utilizator au atins o mare dezvoltare datorita facilitatilor o

ferite de componentelehardwareale diferitelor calculatoare. In principiu, ele simp lifica interactiunea dintre programe si utilizatorii acestora. Astfel, diferite comenzi, date de intrare sau rezultate pot fi exprimate simplu si natural utiliz and diferite standarde care contin ferestre, bare de meniuri, cutii de dialoguri , butoane, etc. Cu ajutorulmouse-uluitoate acestea pot fi accesate extrem de rapids i usor fara a mai fi nevoie sa cunosti si sa memorezi o serie intreaga comenzi a le sistemului de operare sau ale limbajului de programare. Toate acestea conduc la interfete simple si vizuale, accesibile unui segment foarte larg de utilizato ri. Implementarea interfetelor este mult simplificata prin utilizarea limbajel or orientate spre obiecte, aceasta mai ales datorita posibilitatii de a utiliza componente standardizate aflate in biblioteci specifice. Importanta aplicarii co nceptului de reutilizare a codului rezulta din faptul ca interfetele utilizator adesea ocupa 40% din codul total al aplicatiei. FirmaBorlandcomercializeaza o biblioteca de componente standardizate care po t fi utilizate folosind limbajul C++, biblioteca cunoscuta sub numeleTurbo Vision . De obicei, interfetele utilizator gestioneaza ecranul in mod grafic. O ast fel de interfata utilizator se numeste interfata utilizator grafica. Una din cel e mai populare interfete utilizator graficepentru calculatoarele IBM PC este prod usulWindowsoferit de firmaMicrosoft. Windowseste un mediu de programare ce amplifica facilitatile oferite de sis temul de operare MS-DOS. AplicatiileWindowsse pot dezvolta folosind diferite medii de dezvoltare ca: Turbo C++ pentru Windows, Pascal pentru Windows, Microsoft C+ +, Microsoft Visual Basic, Visual Csi Visual C++. ComponenteleVisualpermit specificarea in mod grafic a interfetei utilizator, a unei aplicatii, folosindmouse-ul, iar aplicatia propriu-zisa se programeaza in tr-un limbaj de tip Basic, C sau C++. Daca in ani 70 se considera ca o persoana este rezonabil sa se poata ocupa de o aplicatie de 4-5 mii de instructiuni, in prezent, in conditiile folosirii l imbajelor de programare orientate pe obiecte, aceasta medie a ajuns la peste 25 de mii de instructiuni. Un limbaj de programare trebuie privit nu doar la suprafata sa sintaxa si mod de butonare a calculatorului pentru o implementare particulara ci mai ales i n profunzime, prin conceptele pe care se bazeaza, prin stilul de programare, pri n modul de structurare a aplicatiei si, implicit, a programului, prin filozofia de rezolvare a problemelor folosind limbajul. Din aceste puncte de vedere, C-ul nu poate lipsi din cultura unui programator, iar pentru un profesionist C-ul est e, si mai mult, o necesitate vitala, acesta fiind piatra de temelie pentru intel egerea si utilizarea eficienta a limbajelor de nivel inalt orientate pe obiecte siVisual. Evolutia limbajelor de programare cunoaste trei mari perioade distincte de timp si anume: anii 1950-1959, 1960-1969, dupa 1970. 1950-1960Anii '50 reprezinta etapa de pionierat in domeniul programarii calculato relor. ?n aceasta perioada s-a cristalizat notiunea de program. Initial, program ele erau scrise 14514g616o in cod masina (instructiunile, datele intrare - iesir eformate din succesiuni de 0 si 1, asa cum, de fapt, le prelucreaza orice calcula tor din lume). Datorita acestui fapt, scrierea programelor, introducerea datelor erau activitati deosebit de migaloase si foarte putin productive. Un pas import ant in evolutie este dat de aparitia limbajelor de asamblare. Acestea folosesc p entru fiecare instructiune in cod masina, o abreviere in limba engleza ce sintet izeaza efectul instructiunii respective. Desi mult usurata , activitatea de prog ramare ?ntr-un limbaj de programare ram?ne destul de dificila. Cu toate acestea, si astazi limbajele de asamblare sunt folosite cu succes datorita unor avantaje cum ar fi posibilitatea scrierii unor programe specifice calculatorului pe care se ruleaza un anumit program (deci cu mare viteza de executie); posibilitatea s crierii unor secvente de program care nu pot fi scrise ?ntr-un limbaj evoluat di n cauza lipsei de instructiuni specifice; etc. In aceasta perioada apar si limbajele de nivel ?nalt cum ar fi FORTRAN si COBOL. De aceasta data scrierea programelor se face cu ajutorul unei expresii din limb

a engleza (desi extrem de restrictive). De asemenea, formulele prin care se soli cita calculul unor expresii sunt asemanatoare expresiilor matematice. Un mare av antaj al limbajelor de nivel ?nalt ?l constituie portabilitatea programelor scri se cu ajutorul lor (posibilitatea ca un program sa poata fi rulat pe diferite ti puri calculatoare). 1960-1969.In anii '60 se dezvolta cu precadere aparatul matematic necesar creari si utilizarii limbajelor de programare. Astfel, regulile de scriere a programelo r ?n limbajele respective sunt formalizate matematic. De asemenea, apare concept ul de recursivitate in programare (acest concept era utilizat de mult timp in ma tematica). Pentru prima oara apare notiunea de utilizare dinamica a memoriei (al ocarea spatiului de memorie pentru diverse variabile se face in timpul executiei programului, atunci c?nd este cazul si tot in acest timp se poate sterge un spa tiu alocat, c?nd nu mai este necesar). Toate acestea apar pentru prima data ?n l imbajul ALGOL. Acest limbaj, mai putin utilizat de practicanti, a avut un rol es ential in dezvoltarea ulterioara a informaticii. Tot in aceasta perioada au apar ut si alte limbaje evoluate care s-au rasp?ndit ?n ?ntreaga lume. Dupa 1970.La ?nceputul anilor 1970 a aparut programarea structurata (initiatorii ei fiind E.W.Dijkstra si C.A.Hoare). Pentru prima data apar metode standardizat e de elaborare a programelor, activitatea de programare depasind stadiul artizan al. Redactarea oricarui program se poate face folosind c?teva structuri simple ( secventiala, alternativa, repetitiva). O problema complexa se descompune ?n subp robleme, care apoi la r?ndul lor se descompun din nou, p?na sunt suficient de si mple pentru a fi transpuse ?n programe (programare descendenta). La sf?rsitul anilor '80 apare un nou concept, si anume programarea pe obiecte (? n care datele si rutinele pentru ele sunt unificate ?n obiecte care se pot utili za ca atare sau dezvolta ulterior fara a fi nevoie de a lua munca de la capat sa u de a le cunoaste mecanismul lor intim). Timpul va decide daca acestea vor deve ni sau nu indispensabile in activitatea de programare Limbajul Pascal- a aparut la ?nceputul anilor '70 si a fost elaborat de mate maticianul N.Wirth. Initial, limbajul a fost conceput pentru predarea sistematic a a disciplinei de programare a calculatoarelor (structurile clasice din program area structurala au fost transformate in instructiuni). Cu timpul limbajul a ?nc eput sa fie folosit si ?n programarea calculatoarelor. Un rol fundamental pentru aceasta la avut firmaamericanaBorland, care a implementat o noua varianta numita Turbo Pascal, care, pe l?nga instructiunile clasice ale limbajului contine si mu lte altele. Un mare avantaj al acestui limbaj este acela ca utilizatorul are pos ibilitatea sa-si declare propriile tipuri de date. Ultimele versiuni permit prog ramarea pe obiecte. Structura unui program Pascal Structura unui program pascl este urmatoarea: Program<nume dat de utilizator>-->antetul programului ...................-->zona de declaratii a programului begin ...................-->"corpul programului" (zona operativa) Vocabularul limbajului Pascal este format din: setul de caractere; identificatori; separatori; comentarii. Printr-un identificator intelegem un nume asociat unei constante, variabile, proceduri sau functii. Un identificator poate contine numai litere, cifre, cara cterul special"_" si trebuie sa inceapa obligatoriu cu o litera. Exemplu: A2, B, VAL_MEDIE O categorie speciala de identificatori este reprezentata de cuvintele cheie al limbajului: Exemplu: PROGRAM, BEGIN, UNTIL, TO, DOWNTO, PROCEDURE,etc. ?n cadrul unui program, o succesiune de caractere luate ?mpreuna au o semnif icatie bine definita numitaunitate lexicala. Unitatile lexicale pot fi diferentia

te ?ntre ele prinseparatori. Separatorii pot fi dupa caz:blanc (spatiu),caracterul de sf?rsit de linie(EOL),caracterul ";", etc. Constante ?n Pascal. Constantele sunt valori care nu se modifica ?n cadrul programului. Constante le ?n limbajul Pascal sunt de 6 tipuri: *constante ?ntregi; *constante reale; *constante caracter; *constante sir de caractere; *constante simbolice; *constante logice. Constantele ?ntregi sunt numere ?ntregi ce pot fi reprezentate ?n baza 10 sa u 16; Constantele reale sunt numere reale cuprinse ?ntre 3.4*10-4352si 1.1*104932; Constantele caracter: orice limbaj de programare contine un set de caractere propriu. Setul de caractere folosit de limbajul Pascal se numeste setul ASCII s i contine litere, cifre si caractere speciale; Constantele sir de caracter sunt sirurile de caractere de orice fel din setu l ASCII, care se pot scrie ?n 2 forme; Constantele simbolice sunt numele care se pot atribui unor valoriconstante d e orice tip; Constantele logice:- TRUE-->reprezinta valoarea de adevar -FALSE-->reprezinta valoarea de adevar FALS. Variabile. Declararea variabilelor. Spre deosebire de constante, o variabila este o data ale carei valori se pot modifica la fiecare noua executie a programului sau chiar ?n timpul unei execut ii. Orice variabila are asociat un anumit tip. 1.Tipuri de baza (standard): 1.1.tipuri ?ntregi -BYTE; -WORD; -SHORTINT; -INTEGER; -LONGINT. 1.2.tipuri reale-SINGLE; -REAL; -DOUBLE; -EXTENDED. 1.3.tipul carcater - CHAR; 1.4.tipul logic- BOOLEAN. 2.Tipuri ordinale definite de utilizator: 2.1.tipul enumerat; 2.2.tipul subdomeniu. 3.Tipuri structurate: 3.1.tipul tablou (ARRAY); 3.2.tipul multime (SET); 3.3.tipul sir de caractere (STRING); 3.4.tipul ?nregistrare (RECORD); Tipul unei date variabile defineste multimea variabilelor pe care le poate l ua valoarea respectiva. Operatorii limbajului Pascal. 1.operatori aritmetici: (+), (-), (*), (/), (DIV), (MOD). 2.operatori relationali: (=), (<=), (=>), (<), (>). 3.operatori logici: AND(si logic),OR(sau logic),XOR(sau exclusiv),NOT(nu logic). 4.operatorul de atribuire: :=. Expresii ?n Pascal. ?n timpul executiei unui program, la ?nt?lnirea unei expresii, calculatorul

evalueaza expresia respectiva, adica ?n acel moment variabilele din componenta e xpresiei au niste valori, calculatorul va ?nlocui ?n expresie variabilele cu val orile lor si se va obtine valoarea expresiei. ?ntr-un program Pascal putem folos i 2 tipuri de expresii: 1.expresii aritmetice care contin operatori aritmetici si ?n urma evaluarii valoar ea lor este un numar; 2.expresii logice (BOOLEENE): -o expresie booleana contine operatori de orice fel: operatori logici, aritmetici, rel ationali si poate fi privita ca o conditie, adevarata sau falsa; valoarea unei e xpresii logice estetruedaca conditia pe care o defineste este adevarata saufalse?n c az contrar. Proceduri si functii predefinite ale limbajului. Anumite actiuni ?ntr-un program se pot realiza cu ajutorul unor proceduri si functii predefinite ale limbajului. Procedurile si functiile predefinite sunt d e fapt secvente de instructiuni care au fost scrise de autorii limbajului. O pro cedura poate avea unul sau mai multiparametri. Parametrii sunt niste valori (constante, valori ale unor variabile sau valor i ale unor expresii) de care procedura (functia) are nevoie pentru a se executa si pe care le transmitem c?nd o apelam. Cele mai folosite proceduri predefinite ale limbajului Pascal sunt: -pentru stergerea ecranului folosimCLRSCRfara nici un parametru; -pentru afisarea unor date pe ecran se folosesteWRITEsauWRITELN. Cu ajutorul procedurilorWRITEsauWRITELNse pot afisa constante de orice fel, valo ri ale unor variabile, valori ale unor expresii sau valori returnate de catre fu nctii. Subprograme. ?n anumite situatii este necesarca o secventa de instructiuni sa se execute de mai multe ori ?n cadrul unui program, eventual cu alte date. O astfel de secv enta poate fi cuprinsa ?n cadrul unui modul de program numitsubprogram. Deci un program va contine cel putin un modul numitmodulul principalpe l?nga care pot exis ta alte module. Pentru a se executa instructiunile cuprinse ?ntr-un subprogram, acesta trebuie apelat din modulul principal sau din interiorul altui subprogram. Modulul din care se face apelul se numestemodul apelant. Modulul apelant poate s a transmita subprogramului pe care il apeleaza date numiteparametrii. Subprogramu l apelat receptioneaza acesti parametrii si ?i foloseste atunci c?nd se executa. . Orice subprogram are un identificator si, eventual, un set de parametrii. Subprogramele pot fi de doua tipuri: -proceduri; -functii. Proceduri. Scriem o procedura care, primind ca parametrii din partea modulului apelant informatiile respective testeaza daca acestea sunt pozitive si: -?n caz afirmativ afiseaza; -?n caz contrar afiseaza mesajul de eroare. Modulul principal stabileste valori concrete si apoi apeleaza procedura care ia ?i transmite ca parametrii respectivele valori. C?nd se apeleaza procedura modulul apelant este abandonat temporar si se exe cuta procedura. ?n timpul executiei procedurii, parametrii formali (simboluri, i dentificatori) sunt ?nlocuiti ?n tot corpul procedurii cu parametrii actuali (va lori concrete). Dupa ?ncheierea executiei procedurii se revine automat ?n modulu l apelant, la linia imediat urmatoare celei care a facut apelul. Domeniul de vizibilitate al variabilelor (constantelor). Prin domeniul de vizibilitate al unei variabile se ?ntelege zona din program ?n care este "vazuta" declaratia acesteia; adica zona de program ?n care este c unoscuta valoarea sa. Daca o variabila a fost declarata ?ntr-un subprogram atunci valoarea sa este cunoscuta numai ?n interiorul subprogramului respectiv. O astfel de variabila s e numestelocala. Daca o variabila a fost declarata la ?nceputul programului (?n zona de decla

ratii a acestuia) atunci aceasta este "vazuta" ?n tot programul si se numesteglob ala. Declaratia anticipata a unei proceduri. O procedura trebuie plasata ?n cadrul programului inaintea modulului care o apleleaza. Pentru a putea scrie procedura dupa modulul apelant, trebui sa facem o asa numita declaratie anticipata a procedurii, cu directivFORWRARD?n zona de de claratii a programului. Rolul stivei ?n executia subprogramelor. Orice subprogram (procedura sau functie) foloseste o structura interna de da te gestionata de catre limbaj numitastiva.?n Pascal, functionarea stivei se bazeaz a pe mecanismul LIFO (ultimul intrat, primul iesit). Cu alte cuvinte, extragerea valorilor din stiva se face ?n ordine inversa introducerii lor. Consideram ca un program (subprogram)papeleaza un subprograms(pse numeste modul apelant, iarsse numeste modul apelat). La apel se salveaza automat pe stiva contex tul modului apelantpsi adresa de revenire: - contextul modulului apelantpcuprinde totalitatea variabilelor locale si a paramet rilor transmisi prin valoare; - adresa de revenire indica instructiunea (linia de program) din modulul apelantpla care se revine dupa executia subprogramului apelants. Functii. Ca si procedurile efectueaza anumite operatii, dar ?n plus o functie intoarc e (returneaza) o anumita valoare. Tipul valorii returnate se precizeaza la decla rarea functiei, dupa enumerarea parametrilor. Valoarea returnata de functie poat e fi folosita apoi ?n modulul apelant. Vectorii Notiunea de vector. Limbajul Pascal permite memorarea tuturor elementelor unui sir ?ntr-o singura va riabila indexata, ?n care fiecare element ocupa o anumita pozitie. Un sir de ele mente de acelasi tip se numeste tablou unidimensional sauvector. Vectorul astfel denumit apartine unui tip de date nou numit tipularray. Un elemen t al unui vector se mai numeste si componenta a vectorului, iar pozitia unui ele ment se mai numeste si indicele sau rangul elementului.. Declararea unui vector. Un vector trebui declarat la fel ca orice variabila, ?n sectiunea de declaratii a programului. ?n declaratia trebuie sa apara:-->identificatorul vectorului (numel e variabilei vector); -->tipul de date din care fac parte indicii (pozitiile) eleme -->tipul elementelor. Din tipul de date al indicilor trebuie sa reiasa numarul maxim de elemente, adic a cel mai mare numar de elemente care s-ar putea memora ?n vectorul respectiv. Sintaxa declararii unui vector ca o variabila este: [var]<id>:array[<ind> of <tip>; -<id>-->identificatorul (numele) variabilei vector; -<ind>-->tipul de date permis pentru indici; -<tip>-->tipul de date ?n care se incadreaza elementle vectorului. Tipul de date pentru indici trebuie sa fie un tip ordinal (enumerat, subdomeniu, etc.) cu un numar finit de valori si poate fi anonim. ?n definirea acestuia pot fi folosite constante simbolice, dar nu pot fi folosite variabile. Tipul elementelor poate fi orice tip predefinit sau definit de utilizator. Tipul de date array este anonim (nu are nume), dar el poate fi denumit ca orice tip de date, cu ajutorul cuv?ntului cheietype: Type vector=array [1..50] of integer; Var v:vector; Fisiere de date FISIERE TEXT Notiunea de fisier data. In timpul executiei unui program, datele cu care lucreaza acesta (constante sau valor le variabilelor), sunt stocate ?n memoria intrena RAM si se pierd la ?nchiderea executiei programului. Pentru a pastra permanent respectivele date, astfel ?nc?t sa le folosim la fiecare noua executie a programului, trebuie sa le memoram pe

un suport extern (hard+disk, floppy, etc.), ?ntr-un asa numitfisier de date. Din punctul de vedere al continutului, fisierele de date ?n Pascal se ?mpart ?n trei egorii: *fisiere cu tip:componentele sunt toate de acelasi tip (predefint, sau definit de util izator); *fisiere text:datele sunt memorate ca o succesiune de caractere; *fisiere fara tip:informatiile sunt stocate sub forma unor blocuri de octeti de dimens iune fixa; *cu acces secvential:pentru a accesa o anumita componenta trebuie parcurse toate compo nentele dinaintea acesteia; *cu acces direct:orice componenta poate fi accesata imediat prin intermediul numarului ei de ordine ?n fisier. Notiunea de fisier text. Caracteristici. Un fisier text contine una sau mai multe linii de caractere de lungime varia bila. Fiecare linie mai putin ultima, se ?ncheie printr-un "marcaj de sf?rsit de linie" alcatuit din caracterele CR("Carriadge Return") si LF("Line Feed"). Sf?r situl fisierului este marcat prin caracterul EOF("End Of File"). Caracterele dintr-un fisier text pot fi at?t caractere tiparibile (litere ma ri si mici, cifre, caractere speciale), c?t si caractere netiparibile. Acestea d in urma se mai numesc sicaractere albe(CR, LF, spatiu, BACKSPACE, TAB, etc.). Pentru a putea prelucra datele dintr-un fisier text acesta trebuie deschis, iar dupa ?ncheierea prelucrarii fisierul trebui ?nchis la loc. Accesul ?ntr-un f isier text se face secvential. Orice fisier text se caracterizeaza printr-o vari abila speciala numitapointer de fisiercare indica ?n orice moment primul caracter ce poate fi prelucrat. Un fisier text poate fi scris at?t cu ajutorul unui program, c?t si manual ( folosind un editor de texte, se editeaza fisierul ca si o sursa de program). Creeare, deschiderea si ?nchiderea fisierelor text. Orice fisier, deci si un fisier text se caracterizeaza printr-un nume sub ca re este identificat de catre sistemul de operare (de obicei acesta este alcatuit din trei parti: numele propriu-zis dat de utilizator, caracterul punct si exten sia care indica tipul fisierului). Pe de alta parte, ?ntr-un program un fisier t ext se declara ca o variabila de un tip predefinit numit tipul de date text: o a stfel de variabila se mai numestedescriptor de fisier. Exemplu:varf,g: text; Pentru a putea folosi efectiv un fisier text ?ntr-un program, trebuie facta legatura ?ntre descriptorul de fisier (fisierul logic) si numele sub care este r ecunoscut de catre sistemul de operare (fisierul fizic). Aceasta legatura se num esteasignarea fisieruluisi se realizeaza cu ajutorul procedurii predefinite. assign (<descriptor>, <nume_fisier>); Parametrul<nume_fisier>este un sir de caractere care reprezinta calea de acces ?mpreuna cu numele complet al fisierului. Exemple: -assign(f,'numere.txt');-->asigneaza descriptorulffisieruluinumere.txt, aflat ?n curent; -assign(g, 'C:\bp\bin\numere.text');-->asigneaza descriptorulgfisieruluinumere.txt, pe partitiaC, ?n directorulbp, ?n subdirectorulbin. Dupa asignarea fisierului, pentru a putea fi prelucrat, acesta trebuie deschis. ?n urma deschiderii, pointerul de fisier se pozitioneaza la ?nceputul fisierului , pe primul caracter. ?n functie de tipul operatiei efectuate asupra sa, un fisi er text poate fi deschis ?n trei moduri: ?pentru citire: folosim procedura Exemplu:reset(f); ?pentru scriere folosim procedura Exemplu:rewrite(f); ?pentru adaugare la sf?rsit folosim procedura Exemplu:append(f); Dupa ?ncheierea prelucrarilor asupra unui fisier, acesta trebuie ?nchis. ?nchiderea u fisier text se realizeaza cu procedura, Exemplu:close(f);

Citirea dintr-un fisier text. Dintr-un fisier text putem citi valori ale unor variabile de tip caracter, sir d e caractere si numeric. Citirea dintr-un fisier text se face cu una din procedurilereadsaureadln, ca si citirea de la tastatura, numai ca apare un parametru ?n plus: descriptorul de f isier. Sintaxa: read(<descriptor>,<v1>,<v2>,.); readln(<descriptor>,<v1>,<v2>,.); -<descriptor>-->descriptorul fisierului din care citim; -<v1>,<v2>,.-->identificatorii variabilelor care se citesc. Citirea ?ncepe de la pozitia la care se afla pointerul de fisier. Dupa citir ea tuturor parametrilor cureadln, pointerul va sari la ?nceputul r?ndului urmator ?n fisier, iar dupa citirea cureadva ram?ne acolo unde a ajuns. Similitudinea cu citirea de la tastatura are o explicatie foarte simpla: la citirea de la tastatura sa asigneaza automat un asa numit "fisier standard de in trare",INPUT. Deci, daca la apelul proceduriireadsaureadlnlipseste parametrul<descript or>, acesta se considera implicitINPUT. 1)Citirea variabilelor de tip caracter. ?n fiecare parametru de tipcharse citeste caracterul la care se afla pointerul de fisier. Dupa citirea unui caracter, pointerul avanseaza la caracterul urmato r. Exemplu: Fie fisierulf:si apelurile &$readln(f,c1,c2); #*?readln(f,c3); unde c1,c2 si c3 sunt variabile de tipulchar. Vor fi citite valorile: c1='&', c2='$', c3='#'. 2)Citirea variabilelor de tip caractere. ?ntr-o variabia de tipstringse potea citi o succesiune de caractere din fisier . Citirea ?ncepe cu caracterul la care se afla pinterul si functioneaza astfel: -daca la declararea variabilei de tipstrings-a precizat lungimea maxima, atunci ?n va bila respectiva se vor citi at?tea caractere c?t este valoarea maxima; -daca nu s-a precizat lungimea maxima, atunci ?n variabila respectiva se vor citi toat e caracterele p?na la sf?rsitul r?ndului din fisier. Exemplu: Fie fisierulf:si apelul 'Limbajul Pascal'read(f,s); undeseste o variabila de tipstring. -Daca declaram, atunci va citis='Limbajul'; -Daca declaram, atunci va citis='Limbajul Pascal'. 3)Citirea variabilelor de tip numeric. O succesiune de caractere dintr-un fisier text poate fi citita ?ntr-o variab ila de tip numeric, astfel: va citi sirul de caractere cuprins ?ntre doua caract ere albes daca sirul contine numai caractere permise pentru un numar (cifre, car acterele '+','-' si punctul zecimal), atunci va transforma sirul ?n numar si va memora ?n variabila numarul obtinut; ?n caz contrar tentativa de citire esueaza. La citirea variabilelor de tip numeric , pointerul de fisier "sare" automat pes te toate caracterele albe int?lnite. Exemplu: Fie fisierulf:si apelurile 2-3.57readln(f, x, a, b); 28.95M.6readln(f, y, z); undea, bsunt de tipulinteger, iarx, y, zde tipul real. ?n urma primului apel se vor citia=2,x=-3.5,b=7. ?n urma celui de-al doilea apel s corecty=28.9, dar citirea valorii 5M.6 ?nzesueaza, deoarece aceasta valoare contin e caractere nepermise unui numar. 4)Citirea variabilelor de tipuri diferite. Printr-un singur apel al proceduriireadsaureadlnse pot citi mai multe variabile de t ipuri diferite, cu conditia respectarii cerintelor descrise mai sus.

Exemplu:consideram declaratiile var x:real; a,b:integer; ch:char; s:string[3] Fie fisierulf:si apelurile 2.75@#$ 8 *-3readln(f, x, s, a, ch, b); Se vor citi: x=2.75, s='@#$', a=8, ch='*', b=-3. Tehnici de programare Metoda backtracking Notiunea de stiva. ?n timpul executiei unui program, limbajul Pascal gestioneaza si foloseste o strucutra de date interna numitastiva. Aceasta este organizata dupa principiulLIF Osi are un rol bine definit: la apelul unui subprogram (procedura sau functie) se salveaza pe stivacontextul modulului apelant(alcatuit din variabile locale si par ametri transmisi prin valoare) siadresa de revenire(linia din program la care se r evine dupa executia apelului). Adr ?n cadrul unui program, utilizatorul ?si poate defini propriile stive. C el mai simplu mode de a implementa o stiva este cu ajutorul unui vectorst. pentru a simula caracterul de stiva, privim vectorulstca si cum elementele sale ar fi as ezate "pe verticala", unul peste altul. Daca la un moment dat stiva contine elem entelest[1], st[2], st[3],.,st[p], atunci pozitiapa elementului cel mai de sus, se numestev?rful stivei. ?n general, pozitia unui element ?n vectorul stiva este num itanivel al stivei. Adaugarea si extragerea de elemente ?n/din stiva, se poate fece numai pe la capatul de sus al acesteia: *adaugarea unui nou element ?n stiva?nseamnacrestereacu o unitate a v?rfului stivei ( p+1)si memorarea unui elementst[p]pe noua pozitiep; *eliminarea (extragerea) unui element din stiva?nseamna renuntarea la elementul aflat ?n v?rful stivei, adica v?rful stivei scade cu o unitate(p:=p-1). st[p] P . . . 2 1 St[1] St[2] Algoritmul backtracking, prezentare generala. Metoda backtrackingeste o tehnica de programare, aplicabila algoritmilor care ofera mai multe solutii.Fiecare solutie se memoreaza ?ntr-o structura de date de tip stiva, implementata cu ajutorul unui vector. Notamst=vectorul sitva,nr=numarul valorilor care alcatuiesco o solutie. ?n acest caz, o solutie a problemei va fi formata din elementelest[1],st[2],.,st[nr]. ?ntr-un algoritm backtracking ne intereseaza toate solutiile posibile. Pentr u a obtine fiecaresolutie finala, vom completa vectorul stiva pas cu pas, nivel c u nivel, trec?nd astfel prin nistesolutii partiale.?n plus, at?t solutiile partial e c?t si cele finale, pentru a fi luate ?n considerare trebuie sa ?ndeplineasca anumite conditii, numiteconditii de validare.O solutie care ?ndeplineste aceste co nditii devine astfelsolutie valida. De retinut ca toate configuratiile stivei (st[1], st[2],.,st[p]) ce reprezin ta solutii finale, sunt alcatuite din elementele aceleiasi multimi bine-definite pe care o vom denumi ?n continuaremultimea solutiilor. Fiecare noua solutie partiala, se obtine prin completarea solutiei partiale precedente cu ?nca un nivel pe stiva. La fiecare nivel, vom ?ncerca sa punem pe nivelul respectiv valori din multimea solutiilor care nu au fos ?ncercate ?nca, p?na c?nd obtinem o solutie valida; ?n acest moment, "urcam" cu ?nca un nivel ?n stiva, pentru a completa mai departe solutia, dupa care reluam ?ncercarile pe n oul nivel. Va aparea ?nsa si urmatoarea situatie: la un moment dat, pe un anumit nivel, nu mai exista nici o valoare ne?ncercata din multimea solutiilor. ?n acest caz, vom face un pas ?napoi, la nivelul anterior, si reluam cautarea cu valorile ram ase ne?ncercate pe acces nivel anterior. Respectivul nivel a mai fost vizitat, d ar l-am abandonat dupa ce am pus o valoare care a generat o solutie valida, deci

se poate sa fi ramas aici valori ne?ncercate. Daca nici pe acest nivel nu mai a vem valori ne?ncercate mai facem un pas ?napoi, s.a.m.d. Mecanismul revenirilor a determinat denumirea "metoda backtracking". Plec?nd de la nivelul 1 si repet?nd algoritmul p?na c?nd pe toate nivelele a u fost ?ncercate toate valorile din multimea solutiilor, vom obtine solutii fina le care evident se tiparesc. Datorita faptului ca fiecare noua configuratie a stivei se obtine pornind de la precedenta, algoritmii backtracking se pot implementa foarte elegant ?ntr-o maniera recursiva. Putem scrie si programe nerecursive, dar acestea sunt mai lab orioase, de aceea am alesvarianta recursiva a metodei backtracking. Procedura recursiva backtracking . Prezentam structura unui program backtracking, cu exemplificare pentru probl ema generarii permutarilor denelemente. Vom nota vectorul sitva cust. folosim urmatoarele subprograme: Proceduraciteste datele si initializeaza stiva. ?n problema permutarilor:vom citi numarul de elementen: Write('n='); Readln(n); Se initializeaza cu 0 toate elelmentele stivei, at?tea c?te au fost declarate: For i:=1 to 50 do st[i]:=0; Functiava returnatruedaca solutia(st[1], st[2],..., st[p])este valida, respectivf alse?n caz contrar. ?n problema permutarilor:pentru ca noul elementst[p]sa genereze solutia validast [1], st[2],..., st[p]),este necesar ca valoareast[p]sa nu se mai gaseasca pe nici unul din nivelele anterioare(1, 2,..., p-1). Folosim o vriabila booleanaposibilpe c are o va returna functia; intializam(presupunem initial ca solutia este valida, c aut?nd apoi proba contrarie). Parcurgem ?ntr-un ciclu nivelele anterioare luip, a dicai=1, 2,..., p-1:daca gasim un elementst[i]egal cust[p], ?nseamna ca valoareast[p]m i exista cel putin pe unul din nivelele anterioare, deci solutia obtinuta dupa a daugarea luist[p]nu este valida. Posibile:=true; For i:=1 to p-1 do If st[p]=st[i] then Posibil:=false; Proceduraafiseaza solutia cupnivelest[1], st[2],..., st[p]). Parcurgem nivelelei=1, 2,..., p, afis?nd fiecare elementst[i]. Algoritmul descris mai sus poate fi implemntat ?ntr-o singuraprocedura recursiva ?ncearca sa completeze nivelulpal stivei. Trecerea la nivelul urmator (c?nd am obtinut o solutie partiala valida), se realizeaza prin auto-apelul recursivbktr(p+1).?n programul principal, facem primul apebktr(1), deoarece plecam de la primul nivel al stivei. Astfel vom trece prin toate nivelele:din interiorulbktr(1)se apeleazabktr(2),dinbktr(2)se apeleazabktr(3), e c. Procedure bktr(p:integer); Var val:integer; Begin For val:=<vi> to <vn> do(*1) Begin St[p]:=val;(*2) If valid(p) then(*3) If <solutia este finala> then(*4) Tipar(p)(*5) Else Bktr(p+1);(*6) End; End; (*1):?ntr-un ciclu prin variabilavalvor trece pe r\nd toate valorile care ar pu tea fi ?ncercate pe nivelulpal stivei. Pentru fiecare din aceste valori: (*2):maemoram valoarea respectivavalpe nivelulpal stivei, obtin?nd astfel solutia( st[1], st[2],..., st[p]);

(*3):verificam daca solutia generata este valida, test?nd valoarea returnata de functiavalid(p). (*4):daca aceasta solutie este valida (functia a returnattrue),atunci trebuie sa verificam daca este si finala: -(*5):?n caz afirmativ afisam solutia, apel?nd proceduratipar(p). -(*6):?n caz contrar, fiind solutie partiala , trebuie sa trecem la nivelul urmator pentru a o completa, deci se auto-apeleaza recursivback(p+1)(astfel,p+1va d eveni noulpla executia acestui apel).

1.Elementele de baza ale limbajului Pascal 1.1Dezvoltarea limbajului pe anumite perioade: 1.1.1Dezvoltarea ?ntre anii 1950 - 1960; 1.1.2Dezvoltarea ?ntre anii 1960 - 1969; 1.1.3 Dezvoltarea dupa 1970; 1.2Limbajul Pascal; 1.2.1Structura unui limbaj Pascal: 1.2.1.1Constante ?n Pascal; 1.2.1.2Variabile. Declararea variabilelor; 1.2.1.3Operatorii limbajului Pascal; 1.2.1.4Expresii ?n Pascal; 1.2.1.5Proceduri si functii predefinite ale limbajului; 1.2.1.6Subprograme; 1.2.1.7Proceduri; 1.2.1.8Domeniul de vizibilitate al variabilelor (constantelor); 1.2.1.9Declaratia anticipata a unei proceduri; 1.2.1.10Rolul stivei ?n executia subprogramelor; 1.2.1.11Functii; 1.3.1 Vectorii; 1.3.1.1Notiunea de vector; 1.3.1.2Declararea unui vector. 2.Fisiere de date 2.1Fisiere de tip text: 2.1.1Notiunea de fisier data; 2.1.2Notiunea de fisier text. Caracteristici; 2.1.3Creeare, deschiderea si ?nchiderea fisierelor text; 2.1.4Citirea dintr-un fisier text; 2.1.4.1Citirea variabilelor de tip caracter; 2.1.4.2Citirea variabilelor de tip caractere; 2.1.4.3Citirea variabilelor de tip numeric; 2.1.4.4Citirea variabilelor de tipuri diferite; 3.Tehnici de programare 3.1Metoda backtracking 3.1.1Notiunea de stiva; 3.1.2Algoritmul backtracking, prezentare generala; 3.1.3Procedura recursiva backtracking; 4.Exemplificare a procedurii backtracking.

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