Gândirea algoritmică - o filosofie modernă a matematicii şi informaticii

Similar documents
Aplicatii ale programarii grafice in experimentele de FIZICĂ

GRAFURI NEORIENTATE. 1. Notiunea de graf neorientat

VISUAL FOX PRO VIDEOFORMATE ŞI RAPOARTE. Se deschide proiectul Documents->Forms->Form Wizard->One-to-many Form Wizard

Parcurgerea arborilor binari şi aplicaţii

Limbaje şi Cunoaştere versus Modelare şi Procesare

Ghid de instalare pentru program NPD RO

Pasul 2. Desaturaţi imaginea. image>adjustments>desaturate sau Ctrl+Shift+I

Conferinţa Naţională de Învăţământ Virtual, ediţia a IV-a, Graph Magics. Dumitru Ciubatîi Universitatea din Bucureşti,

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Teoreme de Analiză Matematică - II (teorema Borel - Lebesgue) 1

CERCETARE ŞTIINŢIFICĂ,

Un tip de data este caracterizat de: o O mulţime de date (valori є domeniului) o O mulţime de operaţii o Un identificator.

Marketing politic. CURS (tematică & bibliografie) Specializarea Ştiinţe Politice, anul III

Press review. Monitorizare presa. Programul de responsabilitate sociala. Lumea ta? Curata! TIMISOARA Page1

OPTIMIZAREA GRADULUI DE ÎNCĂRCARE AL UTILAJELOR DE FABRICAŢIE OPTIMIZING THE MANUFACTURING EQUIPMENTS LOAD FACTOR

riptografie şi Securitate

Paradoxuri matematice 1

Circuite Basculante Bistabile

FIŞA DISCIPLINEI Anul universitar

FIŞA DISCIPLINEI. 2.7 Regimul disciplinei. Examen. Obligatoriu

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

O abordare orientată pe componente generice pentru crearea dinamică a interfeţelor cu utilizatorul

Modalităţi de redare a conţinutului 3D prin intermediul unui proiector BenQ:

Click pe More options sub simbolul telefon (în centru spre stânga) dacă sistemul nu a fost deja configurat.

Application form for the 2015/2016 auditions for THE EUROPEAN UNION YOUTH ORCHESTRA (EUYO)

22METS. 2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

Tehnici de programare

PROCESOARE NUMERICE DE SEMNAL DIGITAL SIGNAL PROCESSORS

Capitolul 1. Noţiuni de bază

Organismul naţional de standardizare. Standardizarea competenţelor digitale

DIRECTIVA HABITATE Prezentare generală. Directiva 92/43 a CE din 21 Mai 1992

SUBIECTE CONCURS ADMITERE TEST GRILĂ DE VERIFICARE A CUNOŞTINŢELOR FILIERA DIRECTĂ VARIANTA 1

FIŞA DISCIPLINEI. - Examinări 4 Alte activităţi. 3.7 Total ore studiu individual Total ore pe semestru Număr de credite 5

FIŞA DISCIPLINEI. îndrumar de laborator

FIŞA DISCIPLINEI. Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei 1.3 Departamentul Bazele Electronicii 1.4 Domeniul de studii

TTX260 investiţie cu cost redus, performanţă bună

TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢIILOR (Tehnici de prelucrare audio-vizuală)

PREZENTARE INTERFAŢĂ MICROSOFT EXCEL 2007

Curriculum vitae Europass

LESSON FOURTEEN

Laboratorul 1. Primii paşi în Visual Basic.NET

Exerciţii Capitolul 4

Mail Moldtelecom. Microsoft Outlook Google Android Thunderbird Microsoft Outlook

FISA DE EVIDENTA Nr 1/

Curriculum vitae Europass

Defuzzificarea într-un sistem cu logică fuzzy. Aplicaţie: maşina de spălat cu reguli fuzzy. A. Obiective. B. Concepte teoretice ilustrate

FIŞA DISCIPLINEI. 3.7 Total ore studiu individual Total ore pe semestru Număr de credite 4

ENVIRONMENTAL MANAGEMENT SYSTEMS AND ENVIRONMENTAL PERFORMANCE ASSESSMENT SISTEME DE MANAGEMENT AL MEDIULUI ŞI DE EVALUARE A PERFORMANŢEI DE MEDIU

Sisteme informatice

Split Screen Specifications

Tema 4. Tipurile şi elementele de conţinut ale metodologiilor de realizare a sistemelor informatice

Criterii pentru validarea tezelor de doctorat începute în anul universitar 2011/2012

4 Caracteristici numerice ale variabilelor aleatoare: media şi dispersia

FIŞA PROGRAMULUI POSTUNIVERSITAR DE FORMARE ŞI DEZVOLTARE PROFESIONALĂ CONTINUĂ MANAGEMENT FINANCIAR

FIŞA DISCIPLINEI Semestrul Tipul de evaluare. Obligatorie. 2.7 Regimul disciplinei

FIŞA DISCIPLINEI. 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai

ARHITECTURI SOFTWARE PENTRU ÎNTREPRINDERI

conţinut ale metodologiilor de realizare a sistemelor informatice

Gheorghe I. RADU. 4 martie prezent Ministerul Apărării Naţionale / Academia Forţelor Aeriene Henri

Cur s 2 - Metodologii de realizare a sistemelor informatice

Material de sinteză privind conceptul de intreprindere virtuală şi modul de implementare a mecanismelor care susţin funcţionarea acesteia

Cursul LEONARD ALEXANDRU POP. Suport de curs. Instruire asistată de calculator (IAC)

Executive Information Systems

Referat II. Arhitectura unei interfeţe avansate pentru un Sistem Suport pentru Decizii. Coordonator ştiinţific: Acad. prof. dr. ing. Florin G.

2 MEDIUL BAZELOR DE DATE

SORIN CERIN STAREA DE CONCEPŢIUNE ÎN COAXIOLOGIA FENOMENOLOGICĂ

FIŞA DISCIPLINEI1 1. Date despre program 2. Date despre disciplină 3. Timpul total estimat 3.7 Total ore studiu individual

CE LIMBAJ DE PROGRAMARE SĂ ÎNVĂŢ? PHP vs. C# vs. Java vs. JavaScript


Precizări metodologice cu privire la evaluarea inińială/ predictivă la disciplina limba engleză, din anul şcolar

Voi face acest lucru în următoarele feluri. Examinând. modul în care muncesc consultanţii. pieţele pe care lucrează

LABORATORUL DE SOCIOLOGIA DEVIANŢEI Şi a PROBLEMELOR SOCIALE (INSTITUTUL DE SOCIOLOGIE AL ACADEMIEI ROMÂNE)

Soft-ul de evaluare Teste computerizate pentru educaţie tehnologică

CALITATEA FORMĂRII ASISTENTULUI SOCIAL, CERINŢĂ A SERVICIILOR SOCIALE SPECIALIZATE

MANUAL DE METODOLOGIE I*TEACH. PARTEA 1: Sumar. Introduction ICT-Enhanced skills Active learning... Error! Bookmark not defined.

Veaceslav BULAT. Ghid de reguli şi principii de bază în scrierea unui proiect

Maria plays basketball. We live in Australia.

Precizări privind elaborarea lucrării de licenţă

Referinţe în era digitală: marketing şi servicii în lumi virtuale

Geographical data management in GIS systems

Sistemul de operare Windows (95, 98) Componenta My Computer

Material suport pentru stagii de practică Dezvoltarea cunoştinţelor în domeniul managementului calităţii. - Volum I -

Folosirea tehnologiei informaţiei şi comunicării în procesul de învăţare a copiilor cu cerinţe educaţionale speciale

ONTOLOGIILE ŞI MODELAREA INFORMAŢIONALĂ A ÎNTREPRINDERII. Ontologies and Enterprise s Information Modelling

TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢIILOR (Tehnoredactare asistată de calculator)

6. MPEG2. Prezentare. Cerinţe principale:

2. PORŢI LOGICE ( )

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE ŞTIINŢE ECONOMICE ŞI GESTIUNEA AFACERILOR TEZĂ DE DOCTORAT. rezumat

INFORMATICA ŞI ÎNVĂŢAREA LOGICĂ ÎN MEDICINĂ METODOLOGIA CERCETĂRII ŞTIINŢIFICE CLINICE

TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢIILOR

S L P S L P IV/2 Beton Precomprimat

CALCULATOARE NUMERICE

M ANAGEMENTUL INOVARII

Utilizarea eficientă a factorilor de producţie

Consideraţii generale

Introducere De ce această carte?... 8 Eficienţă maximă... 8 Scurt Istoric... 9 De ce C#? Capitolul I : Să ne pregătim...

Informatică. Programa pentru. examenul de definitivare în învăţământ obţinerea gradului didactic II. Tematica pentru

ABORDĂRI ŞI SOLUŢII SPECIFICE ÎN MANAGEMENTUL, GUVERNANŢA ŞI ANALIZA DATELOR DE MARI DIMENSIUNI (BIG DATA)

Referat I. Sisteme Suport pentru Decizii. Utilizare. Tehnologie. Construire.

CAPITOLUL 2. FACILITATILE SI ARHITECTURA SISTEMULUI ORACLE

Transcription:

Gândirea algoritmică - o filosofie modernă a matematicii şi informaticii Marin Vlada Universitatea din Bucuresti, vlada@fmi.unibuc.ro Abstract Dezvoltarea informaticii actuale se datorează cercetărilor, rezultatelor şi experienţelor din domeniile SISTEMELOR DE CALCUL, ALGORITMICII şi PROGRAMĂRII, dar mai ales a interdependenţei acestor domenii prin aşa-numita triadă "SISTEM DE CALCUL - ALGORITMICĂ - PROGRAMARE". La baza acestei interdependenţe se află conceptul de ALGORITM, concept ce a construit pentru om o nouă filosofie: GĂNDIREA ALGORITMICĂ. Conceptul a fost introdus în matematica veche, utilizat de matematica modernă şi perfecţionat de informatică în utilizarea calculatoarelor moderne. Această gândire algoritmică a făcut posibilă apariţia şi dezvoltarea Tehnologiei Informaţiei (IT) ce reprezintă de fapt implementarea filosofiei procesării, gestionării şi comunicării informaţiilor şi cunoştinţelor. 1. Introducere Întâmplător sau nu, deceniul 7 al secolului al XX-lea a fost unul al marilor schimbări în domeniul informaticii şi al sistemelor de calcul: inventarea microprocesorului ( bijuteria de bază a actualelor sisteme de calcul) ca urmare a rezultatelor din trei domenii fundamentale : sisteme, circuite integrate şi microprogramare; a urmat construirea şi răspândirea pe scară largă a sistemelor de calcul de tip PC(Personal Computer), impulsionarea dezvoltării reţelelor de calculatoare, apariţia şi dezvoltarea de noi sisteme de operare; performanţe sporite ale dispozitivelor I/O; supremaţia şi răspândirea structurilor de control în algoritmică şi programare; apariţia limbajului pseudocod în reprezentarea şi elaborarea algoritmilor; conceperea şi scrierea primelor limbaje de programare care implementează structurile de control (Limbajele Pascal şi C), adaptarea continuă a limbajelor de programare prin implementarea structurilor de control, a structurilor de date, a facilităţilor programării orientate spre obiecte (OOP- Object Oriented Programming); succese spectaculoase în domeniul Inteligenţei Artificiale prin construirea primelor sisteme expert; conceperea şi scrierea primului limbaj de programare logică (Limbajul Prolog) ce oferă suportul programării declarative; dezvoltarea şi utilizarea largă a metodelor şi tehnicilor Inteligenţei Artificiale în rezolvarea câtorva dintre cele mai dificile probleme; delimitarea problemelor rezolvate cu calculatorul(probleme decidabile) în două clase distincte: clasa problemelor rezolvate prin metode imperative(procedurale) şi clasa problemelor rezolvate prin metode declarative; delimitarea clasei problemelor nedecidabile; apariţia şi dezvoltarea tehnicilor pentru comunicarea, căutarea şi vizualizarea la distanţă a informaţiilor.

Toate aceste aspecte au fost şi sunt într-o interdependenţa continuă ţinând seama de particularitatea informaticii care oferă sisteme de calcul performante şi produseprogram competitive în rezolvarea problemelor. Utilizarea eficientă a sistemelor de calcul şi a produselor-program reclamă o instruire continuă, atât pentru informaticieniprogramatori, cât şi pentru utilizatori. Dezvoltarea gândirii algoritmice trebuie luată în considerare ca obiectiv în instruire, atunci când se învaţă algoritmică (metode şi tehnici), dar şi când se învaţă programarea (limbaje de programare). Practica instruirii elevilor şi studenţilor a demonstrat că invăţarea unui limbaj de programare este în general mai uşoară decât invăţarea elaborării algoritmilor (algoritmică). Acest lucru se poate justifica prin faptul că elaborarea unui algoritm este echivalentă cu implementarea(reprezentarea) raţionamentelor(procese demonstrative) deduse din metode şi tehnici utilizate în rezolvarea unei probleme. Rezolvarea problemelor necesită nu numai cunoştinţe clare şi precise, dar şi capacitate de sinteză şi control şi mai ales capacitate de creaţie. Dacă vrem să facem o analogie, un programator poate fi compozitorul ce realizează o lucrare muzicală. În toate etapele instruirii se va avea în vedere interdependenţa: SISTEM DE CALCUL ALGORITMICĂ PROGRAMARE Succesele unui concurent la Olimpiadele de Informatică depind de cunoaşterea utilizării unui limbaj de programare modern, dar mai ales depind de «bogăţia» şi stapânirea cunoştinţelor în elaborarea algoritmilor. Şi mai există încă ceva: experinţa acumulată în activitatea de rezolvare a problemelor prin formarea unei gândiri algoritmice solide şi consistente. Acelaşi lucru se poate afirma şi despre succesele unui programator ce lucrează într-o firmă de produse software. 2. Conceptul de algoritm şi algoritmizarea Complexitatea problemelor care necesită descrierea mai multor procese de calcul complexe a determinat folosirea noţiunii de algoritm în activitatea de rezolvare a problemelor. Multe procese naturale, multe activităţi umane, pot fi descrise într-o formă algoritmică prin definirea unor informaţii şi acţiuni clare şi precise, eliminându-se ambiguităţile în interpretare şi în operaţii. Algoritmizarea este o cerinţă fundamentală în rezolvarea oricărei probleme cu ajutorul calculatorului. Experienţa a demonstrat că nu orice problemă poate fi rezolvată prin algoritmizarea rezolvării, adică prin descrierea unui algoritm de rezolvare. Aşa s-a delimitat clasa problemelor decidabile (o problemă este decidabilă dacă există un algoritm pentru rezolvarea ei) de clasa problemelor nedecidabile (o problemă este nedecidabilă dacă nu există un algoritm pentru rezolvarea ei). Un algoritm implementează diverse metode şi tehnici de rezolvare care au fost descoperite sau definitivate într-un anumit moment în evoluţia ştiinţifică a domeniului respectiv. Există algoritmi ce urmează metode dezvoltate înainte de apariţia calculatoarelor, dar cele mai multe probleme cer abordări noi. Chiar dacă ne gândim numai la problema celor 4 culori, care a fost rezolvată (în anul 1977) doar prin utilizarea calculatorului şi prin utilizarea unei metode noi (metoda Backtracking), facem dovada acestei afirmaţii.

În etapa actuală de dezvoltare ştiinţifică şi tehnică, rezolvarea unei probleme dintr-un domeniu (matematică, informatică, fizică, chimie, etc. ) reprezintă o activitate de creaţie, un raţionament prin construirea, generarea, descrierea unui: proces demonstrativ(demonstraţia) care să arate existenţa unei soluţii sau a mai multor soluţii şi/sau să determine efectiv soluţiile exacte; proces computaţional(algoritmul) care să codifice un proces demonstrativ, o metodă sau o tehnică de rezolvare în scopul determinării (eventual aproximative) a soluţiilor exacte. În general, în procesul (activitatea) de rezolvare a unei probleme dintr-un anumit domeniu (ştiinţific, economic, social, etc.), este necesară evidenţierea ipotezei (condiţiile, stările iniţiale, parametrii iniţiali) şi a concluziei (cerinţele, obiectivele, scopurile) din analiza şi studiul enunţului problemei. Procesul de rezolvare (raţionamentul) constă în utilizarea selectivă a legilor, teoremelor, propoziţiilor, etc. din domeniul problemei, pentru ca pornind de la ipoteză(i), prin aplicarea succesivă a legilor, teoremelor, etc. să se obţină concluzia(c) problemei. Legătura dintre ipoteză, concluzie şi procesul de rezolvare (raţionamentul - R) determină o structură asemănătoare conceptului de program, şi anume ( Ipoteză - Date de intrare; Concluzia - Date de ieşire) : Figura 1. Rezolvarea unei probleme De exemplu, procesul de rezolvare a unei probleme poate fi descris astfel: există un număr de teoreme T 1,, T n determinate de ipotezele I 1,, I n şi de concluziile C 1,, C n ; acestea sunt selectate şi apoi aplicate astfel încât să se poată realiza identificările: I I 1, C 1 I 2,, C n C, adică: Figura 2. Precesul de rezolvare a unei probleme Această prezentare poate fi înţeleasă dacă, de exemplu, facem analogia cu rezolvarea problemelor de geometrie care necesită delimitarea ipotezei şi a concluziei, ca apoi să se utilizeze numai acele teoreme, propoziţii, proprietăţi care, pornind de la ipoteză, prin aplicarea succesivă, să se obţină concluzia cerută. Evident, din experinţa

căpătată în rezolvarea problemelor, se poate afirma faptul că selectarea teoremelor şi aplicarea lor se poate realiza doar prin stăpânirea domeniului respectiv la nivel de specialist sau de expert. Este cunoscut faptul că omul poate rezolva o problemă în trei moduri (metode evidenţiate de Inteligenţa Artificială): pornind de la ipoteză şi obţinând concluzia ( metoda înlănţuirii înainte ); pornind de la concluzie şi obţinând ipoteza ( metoda înlănţuirii înapoi ); pornind simultan, de la ipoteză şi concluzie ( metoda mixtă ). În toate ştiintele(matematică,fizică, chimie, etc.) există multe probleme care, chiar dacă au fost studiate într-o anumită etapă, abordarea lor cu metode şi tehnici moderne poate să trezească oricând interesul tinerilor, al cercetătorilor în general. Aceasta cu atât mai mult cu cât astăzi, prin utilizarea unor metode specifice tehnologiei informatiei şi prin utilizarea calculatorului, se pot concepe tehnici care altădată erau imposibil de imaginat. Din punct de vedere metodologic, trebuie să ne obişnuim să reformulăm problemele în mod explicit şi adecvat rezolvării lor matematice sau- când este posibil cu ajutorul calculatorului. Pentru acest lucru trebuie să cunoaştem limitele gândirii demonstrative şi în acelaşi timp limitele gândirii algoritmice, apoi să cunoaştem performanţele calculatoarelor. Să amintim aici istoria problemei celor 4 culori care începe în anul 1852, când studentul englez Francis Guthrie a enunţat urmatoarea problemă pentru colorarea unei hărţi: Sunt suficiente 4 culori pentru a colora o hartă ce reprezintă diverse ţări, cu condiţia ca oricare două ţări vecine (ce au frontiera comună) să fie colorate cu culori diferite. Mulţi matematicieni cu renume au studiat această problemă (A. de Morgan, A. Cayley, A. B. Kempe, H. Heesch, K. Appel, W. Hakel), dar rezolvarea ei completă nu a fost posibilă decât în anul 1977, (K. Appel, W. Hakel, The four color problem în Mathematics Today, L. A. Steen(ed.), Springer Verlag, 1978) şi acest lucru numai după ce s-a utilizat calculatorul, deoarece fiind o problemă combinatorială cu spaţiul soluţiilor de ordin foarte mare, a fost necesară conceperea unei metode algoritmice pentru căutarea eficientă cu ajutorul calculatorului. Teoretic, problema a fost rezolvată în cazul a 5 culori. De altfel, rezolvarea acestei probleme a impus în Informatică o metodă devenită clasică în domeniul elaborării algoritmilor: metoda backtracking. În zilele noastre apar tot mai des probleme a căror rezolvare (proces demonstrativ) este rezultatul îmbinării metodelor pur matematice cu metodele algoritmice (computaţionale). Uneori, rezultate computaţionale pot oferi surse de inspiraţie pentru metodele matematice. Informaticienii au şi venit în întâmpinarea matematicienilor şi specialiştilor prin elaborarea diverselor sisteme de programe care realizează calcule numerice, logice, simbolice, reprezentări spaţiale, etc. cu ajutorul cărora pot fi dobândite cunoştinte matematice sau se pot rezolva probleme din diverse domenii. Totuşi, aceste aspecte nu trebuie să conducă la neglijarea procesului demonstrativ. Cele mai utilizate astfel de sisteme de programe sunt: MATHEMATICA, STATISTICA, MATLAB, MATHCAD, DERIVE, MAPLE, ORIGIN, SLIDEWRITE, WORKPLACE, EUREKA, etc. Este cunoscut faptul că în ştiinţele naturii se obţin rezultate deosebite prin îmbinarea metodelor teoretice cu metodele experimentale. Pentru matematică(şi alte ştiinţe),

informatica(tehnologia informaţiei) este cea care oferă rezultate experimentale prin utilizarea calculatorului în rezolvarea problemelor. Metoda algoritmică va fi un experiment pentru justificarea rezultatelor procesului demonstrativ de la metoda matematică, dar în acelaşi timp poate să fie o metodă de rezolvare independentă. Metoda algoritmică trebuie să substituie rezultatele obţinute pe cale teoretică cu metode computaţionale eficiente ţinând seama de limitele proceselor algoritmice şi de performanţele calculatoarelor. Este adevărat că uneori metodele matematice pot conduce la simplificarea metodelor algoritmice şi invers. Elevii care participă la olimpiadele şcolare de informatică au constatat că, de multe ori, o analiză profundă a abordării matematice, poate să conducă la obţinerea unei metode algoritmice eficiente. Participanţii la olimpiadele de matematică pot constata acelaşi lucru la o analiză profundă a abordării algoritmice. De aici, importanţa atât a proceselor demonstrative (metode matematice), cât şi a proceselor computaţionale (metode algoritmice). În funcţie de natura metodelor/tehnicilor implementate în procesele computaţionale, algoritmii pot fi: numerici, seminumerici, formali, combinatoriali, neuronali, de căutare, de sortare, recursivi, de rescriere, secvenţiali, paraleli, determinişti, nedeterminişti, probabilişti, aleatori, euristici, de tip Monte Carlo, genetici, de simulare, computational geometry, etc. Întreaga activitate de cercetare şi elaborare de software din domeniul Tehnologiei Informaţiei este determinată de inventarea, conceperea, elaborarea, testarea, şi implementarea de algoritmi performanţi şi utili. Marea diversitate a algoritmilor şi marea aplicabilitate a acestora în toate domeniile, face ca această temă sa fie mereu actuală şi într-o continuă schimbare şi perfecţionare. 3. Gândirea algoritmică şi gândirea obiectuală Practica rezolvării problemelor folosind un limbaj de programare a determinat de-a lungul timpului diverse abordări în funcţie de performanţa limbajului de programare, performanţa calculatorului şi nu în ultimul rând, în funcţie de metodele şi tehnicile avansate privind implementarea raţionamentelor pentru demonstraţiile corespunzătoare problemelor. Rezolvarea teoretică a unei probleme nu garantează şi rezolvarea ei practică cu calculatorul. În general, un limbaj de programare este menit să faciliteze rezolvarea unor clase de probleme şi se pretează mai bine anumitor tipuri de algoritmi. Este nevoie de experienţă în utilizarea şi cunoaşterea calculatorului, de competenţă şi intuiţie, este nevoie de inspiraţie şi creaţie. În astfel de situatii este nevoie de cunoaşterea mai multor limbaje de programare pentru a alege limbajul de programare adecvat pentru clasa de probleme din care face parte problema de rezolvat. Experienţa a arătat că, atunci când nu este ales limbajul de programare corespunzător, dacă totusi se ajunge să se rezolve problema, s-a făcut risipă de resurse (timp / memorie / finanţe, etc.) şi, prin urmare, eficienţa şi performanţa au avut de suferit. Astăzi, perfomanţa unui informatician-programator este determinată de experienţa şi competenţa obţinută în desfaşurarea celor două etape ( ANALIZĂ, PROGRAMARE) :

etapa gândirii obiectuale (ANALIZĂ - PROIECTARE) modul de analiză şi abstactizare a problemelor prin definirea corectă a obiectelor, a tipurilor de obiecte, a relaţiilor între obiecte şi a operatorilor specifici(elaborarea UAP ; etapa de concepţie şi analiză- proiectare) ; etapa gândirii algoritmice (PROGRAMARE - EXECUŢIE) alegerea şi aplicarea corectă a unor metode de rezolvare prin precizarea exactă a operatorilor de prelucrare a obiectelor, reprezentarea corectă a strategiilor algoritmice, reprezentarea codificată a obiectelor şi a prelucrărilor conform unui limbaj de programare (elaborarea algoritmului şi programului ; etapa de programare - codificare implementare şi execuţie). În prezent este tot mai des invocată reprezentarea problemelor folosind concepte OOP (Object Oriented Programming). Conceptul de obiect (M. Minsky, The Society of Mind, Touchstone Books, New York, 1986) are un rol important în ştiinţa cunoasterii şi educaţiei. Un obiect modelează o entitate din lumea reală sau virtuală. În activitatea de rezolvare a problemelor trebuie să se identifice/definească obiectele din cadrul problemelor ce provin din diferite domenii: ştiinţifice, economice, sociale, etc. Identificarea obiectelor este echivalentă cu determinarea entităţilor şi conceptelor care reprezintă forme fizice/grafice, fapte, evenimente, procese, stări, etc. Un obiect este caracterizat în mod unic prin identificare, comportament(caracteristică dinamică), şi stare(caracteristică statică). În esenţă, rezolvarea unei probleme se va exprima printro codificare a universului problemei şi a raţionamentelor pentru procesul demonstrativ. Practica dezvoltării aplicaţiilor software(care necesită rezolvarea diverselor tipuri de probleme) a scos la iveală urmatoarele faze importante (gândirea obiectuală :fazele 1 şi 2= analiză-proiectare; gândirea algoritmică: fazele 3-6= programare-execuţie): 1. specificarea problemelor descrierea clară şi precisă a problemelor indiferent din ce domeniu provin acestea ; 2. proiectarea soluţiilor includerea problemelor în clasa de probleme corespunzătoare şi alegerea modului de reprezentare a problemelor prin formularea etapelor şi procedeelor corespunzătoare pentru procesele de rezolvare; 3. implementarea soluţiilor elaborarea algoritmilor şi codificarea acestora întrun limbaj de programare modern; 4. analiza soluţiilor eficienţa soluţiilor raportată la resursele utilizate: memorie, timp, utilizarea dispozitivelor I/O, etc.; 5. testarea şi depanarea verificarea execuţiei programului cu diverse seturi de date de intrare pentru a putea răspunde rezolvării oricărei probleme pentru care aplicaţia a fost elaborată; 6. actualizarea şi întreţinerea adaptarea soluţiilor implementate pentru eliminarea erorilor în rezolvarea unei anumite probleme şi compatibilitatea cu sistemul de calcul şi sistemul de operare folosite. Conform acestor faze iese în evidenţă interdependenţa între urmatoarele activităţi importante: REPREZENTARE ELABORARE / PROIECTARE EXECUŢIE, şi anume se poate sintetiza prin următoarea schemă(sc=sistem de calcul, SO=sistem de operare):

De asemenea, interdependenţa precizată mai sus se transmite şi între componentele de pe nivelul inferior din schema arborescentă alăturată. Competenţa şi experienţa în rezolvarea problemelor se pot obţine doar dacă permanent se are în vedere această interdependenţă şi dacă se întreprind eforturi pentru însuşirea de noi cunoştinţe şi pentru conoaşterea corespunzătoare a tuturor aspectelor privind MODELUL FIZIC, respectiv MODELUL VIRTUAL, aspecte determinate de interdependenţa SISTEM DE CALCUL ALGORITMICĂ PROGRAMARE:

Practica şi experienţa elaborării programelor pentru rezolvarea problemelor scot în evidenţă următoarele aspecte foarte importante: Modelul fizic- acest model este dat de sistemul de calcul şi sistemul de operare, model ce trebuie luat în considerare când se proiectează şi se elaborează o aplicaţie; acest aspect reclamă competenţă în domeniul sistemelor de calcul şi perfecţionare continuă pentru cel care proiectează şi elaborează aplicaţia; Modelul virtual acest model este dat de gândirea obiectuală şi algoritmică, de modul de reprezentare a algoritmilor, de maşina virtuală pe care trebuie să se execute algoritmul elaborat; în timp, acest model a suferit schimbări majore deoarece a fost tot timpul influenţat de modelul fizic şi de clasa problemelor ce urmau să fie rezolvate; Modelul program acest model este reprezentat de o îmbinare între modelul fizic(sc/so) şi modelul virtual (Algoritmul); întotdeauna un program se elaborează într-un limbaj de programare care trebuie să respecte restricţiile modelului fizic (sistemul de calcul şi sistemul de operare) şi restricţiile modelului virtual (algoritmul) 4. Bibliografie [1] Appel, K. and Haken, W. "Every Planar Map is Four-Colorable, II: Reducibility." Illinois J. Math. 21, 91-567, 1977. [2] Appel, K. and Haken, W. "The Solution of the Four-Color Map Problem." Sci. Amer. 237, 108-121, 1977. [3] Brassard, G. and Bratley, P. Fundamentals of Algorithmics. Englewood Cliffs, NJ: Prentice- Hall, 1995. [4] Cristea, V., C. Giumale, E, Kalisz, Al. Paunoiu, Limbajul C standard, Ed. Teora, Bucureşti, 1992. [5] Knuth, D. E. The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3rd ed. Reading, MA: Addison-Wesley, 1997. [6] Knuth, D. E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, 3rd ed. Reading, MA: Addison-Wesley, 1998. [7] Knuth, D. E. The Art of Computer Programming, Vol. 3: Sorting and Searching, 2nd ed. Reading, MA: Addison-Wesley, 1998. [8] Chabert, J.-L. (Ed.). A History of Algorithms: From the Pebble to the Microchip. New York: Springer-Verlag, 1999. [9] Popovici, M. D., Popovici, M. I., C++. Tehnologia orientată spre obiecte. Aplicaţii, Ed. Teora, Bucureşti, 2000. [10] Vlada, M., Informatică, Universitatea din Bucureşti, Ed. Ars Docendi, Bucureşti, 1999. [11] Vlada, M., Poligoane stelate. Problema lui Hopf şi Pannwitz, Gazeta de matematică, nr. 8/1995, pag. 339-348. [12] Vlada, M., Rezolvarea problemelor folosind Eureka, software educaţional, www.unibuc.ro/ebooks/informatica/eureka/, Universitatea din Bucuresti, 2003. [13] Vlada, M., Concepul de algoritm-abordare modernă, Gazeta de informatică, vol. 13/2 şi 3, pp. 25-30, pp. 35-39, Agora, Cluj Napoca, 2003. [14] Zaharia, M. D., Structuri de date şi algoritmi. Exemple în limbajele C şi C++, Ed. Albastră, Cluj-Napoca, 2002. [15] http://www-groups.dcs.st-and.ac.uk/~history/bigpictures/guthrie.jpeg