Profesorul universitar Bogdan GHILIC-MICU este născut la data de 17 iunie 1960. L-am cunoscut pe când era student în ultimul an de facultate și țineam cursul și seminarele de Programe aplicative, în anul universitar 1983 - 1984. El avea 23 de ani, iar eu aveam 36 de ani. L-am remarcat repede pe Bogdan, căci se vedea de departe că el știa programarea calculatoarelor la un nivel foarte ridicat, căci terminase Liceul de Informatică VIANU, cel mai bun liceu din București.
În intervalul 1975 - 1979, Bogdan GHILIC-MICU a fost elev al Liceului de Informatică VIANU.
În intervalul 1979 - 1980, Bogdan GHILIC-MICU a satisfăcut stagiul militar.
În intervalul 1980 - 1984, Bogdan GHILIC-MICU a fost student la Facultatea de Planificare și Cibernetică Economică, pe care a finalizat-o cu media generală 9,62.
În intervalul 1992 - 1996, Bogdan GHILIC-MICU a derulat un stagiu doctoral în specializarea Cibernetică Economică și Statistică, finalizat prin susținerea cu succes a tezei de doctorat, sub coordonarea profesorului universitar Constantin APOSTOL, teză referită prin:
Bogdan GHILIC-MICU - Informatizarea activității bursei de valori, ASE, București, 208 pag.
În intervalul 1984 - 1990, Bogdan GHILIC-MICU a fost analist gr. III la ITC.
În intervalul 1990 - 1993, Bogdan GHILIC-MICU a fost asistent universitar în Catedra de Informatică Economică.
În intervalul 1993 - 1997, Bogdan GHILIC-MICU a fost lector universitar în Catedra de Informatică Economică.
În intervalul 1997 - 2000, Bogdan GHILIC-MICU a fost conferențiar universitar în Catedra de Informatică Economică.
Din anul 2000, Bogdan GHILIC-MICU este profesor universitar.
Din anul 2005, profesorul universitar Bogdan GHILIC-MICU este conducător de doctorat.
În intervalul 2002 - 2010, Bogdan GHILIC-MICU a fost șef al Catedrei de Informatică Economică.
Bogdan GHILIC-MICU a scris cărți fie ca singur autor, fie în cadrul unor echipe de cadre didactice din Catedra de Informatică Economică, referite prin:
Bogdan GHILIC-MICU - Bursa de valori, Editura Economică, București, 1997, 164 pag., ISBN: 9739198627
Bogdan GHILIC-MICU - Strategii pe piața de capital, Editura Economică, București, 2002, 288 pag., ISBN: 9735907127
Bogdan GHILIC-MICU, Marian STOICA - Organizația virtuală, Editura Economică, București, 2004, 302 pag., ISBN: 9737090454
Bogdan GHILIC-MICU, Marian STOICA - eActivitățile în societatea informațională, Editura Economică, București, 2002, 270 pag., ISBN: 9735905892
Bogdan GHILIC-MICU, Ion Gh. ROȘCA, Constantin APOSTOL - Algoritmi în programare, Editura ASE, București, 2002, 318 pag., ISBN: 9735941686
Cristian USCATU, Bogdan GHILIC-MICU, Cătălina COCIANU - Algoritmi și tehnici de programare, Editura ASE, București 2014, 214 pag., ISBN: 9786065057746
Bogdan GHILIC-MICU, Marinela MIRCEA, Marian STOICA - Algoritmi și scheme logice cu exemplificare în C, Editura ASE, 2017, 227 pag., ISBN: 9786063402081
Bogdan GHILIC-MICU, Marian STOICA, Cătălina COCIANU - Bazele programării calculatoarelor: suport de curs, Editura ASE, București, 2013, 199 pag., ISBN: 9786065057579
Bogdan GHILIC-MICU, Marian STOICA, Marinela MIRCEA - Bazele programării calculatoarelor: suport de seminar, Editura ASE, București, 2013, 131 pag., ISBN: 9786065057586
Ion Gh. ROȘCA, Bogdan GHILIC-MICU, Cătălina COCIANU, Marian STOICA - Programarea calculatoarelor: algoritmi în programare, Editura ASE, București, 2007, 218 pag., ISBN: 9789735949235
Am în mână cartea referită prin:
Constantin APOSTOL, Bogdan GHILIC-MICU, Ion Gh. ROȘCA, Valer ROȘCA - Introducere în programare. Teorie și practică PASCAL, Casa de Editură și Presă Viața Românească, București, 1996, 315 pag., ISBN: 973-564-115-6
La pagina 315 se află bibliografia formată din 8 titluri, dintre care 5 titluri au cuvântul cheie PASCAL. Cărțile au fost publicate în intervalul 1976 - 1992. Șase cărți au fost publicate în edituri românești.
Introducerea de la paginile 1 - 2 arată că lucrarea este structurată pe trei părți, ce corespund unei abordări graduale a problematicii, urmărindu-se ca persoana care citește cartea, după ce se lămurește cum stau lucrurile cu calculatorul și cu reprezentarea datelor, să treacă la cunoașterea convențiilor definite ale limbajului PASCAL, ca în ultima parte să vadă 21 de programe scrise bine în limbajul PASCAL.
Cartea are 13 capitole.
Capitolul 01 de la paginile 3 - 21, intitulat Structura internă a calculatorului, prezintă concepte de bază, strict necesare înțelegerii de către viitorul programator PASCAL: ce înseamnă memorarea de date, ce înseamnă operații de intrare/ieșire, ce înseamnă sistem de operare și, mai ales, ce înseamnă folosirea unui automat finit pentru care există doar program corect și program incorect și lipsa oricărei îngăduințe legate de jumătățile de măsură din viața noastră de zi cu zi.
Capitolul 02 de la paginile 22 - 29, intitulat Organizarea internă a datelor, prezintă concepte precum dată, informație, structură de date, dată elementară, totul fiind pus în corespondență cu zona de memorie, organizată pe octeți și octeții pe biți. Este sugestivă liniarizarea unui masiv bidimensional și liniarizarea unei structuri arborescente dată în figura 2.3.
Capitolul 03 de la paginile 30 - 54, intitulat Algoritmi. Scheme logice structurate, prezintă structurile de program secvențiale, structura alternativă și structura repetitivă WHILE - DO și blocurile de schemă logică asociate lor. Se prezintă în detaliu structurile IF-THEN-ELSE, IF-THEN, CASE-OF, WHILE - DO, REPEAT - UNTIL, FOR. Experiența de programatori a autorilor le-a permis să abordeze în subcapitolul 3.7 problema erorilor în algoritmi, căci enunțul problemei înseamnă ceva, algoritmul e altă chestiune, iar transpunerea algoritmului în schemă logică este bântuită de erori de diferite clase și niveluri. Programatorul proiectează algoritmul și trebuie să verifice corectitudinea. Experiența de programatori a autorilor se vede de departe în această lucrare. Ei îl pun în gardă pe cititor că este pândit de numeroase pericole dacă nu face exact ceea ce trebuie.
Capitolul 04 de la paginile 55 - 63, intitulat Etapele rezolvării problemelor cu calculatorul, prezintă faptul că etapele diferă de clasa de probleme pentru care trebuie rezolvate. Sunt abordate etapele, și anume: formularea problemei, formalizarea matematică, elaborarea algoritmilor, stabilirea resurselor, scrierea programelor, testarea și definitivarea programelor, definitivarea documentației. Mie mi-a plăcut atunci, în 1996, când am citit cartea, dar îmi place și acum, în 2024, că autorii au spus că resursele se stabilesc, adică vom aloca resursele adecvate soluționării. Noi știm când folosim baze de date. Noi știm când folosim biblioteci matematice. Noi știm când folosim structuri dinamice. Nu trebuie să soluționăm orice problemă în limbajul PASCAL pentru că știm noi acest limbaj. O altă chestiune pe care o găsesc ca o abordare realistă este aceea că elaborarea documentației se face pe tot ciclul de realizare a unui program. Definim problema, imediat scriem câteva pagini de documentație pentru că avem proaspătă în memorie această chestiune. Când elaborăm schemele logice, le desenăm ca și cum le-am introduce în documentație. Când scriem programele, vom scrie comentarii în textele sursă suficient de bogate ca să putem să ne descurcăm peste ani și ani, dacă va fi nevoie să facem mentenanță. Experiența de programatori a cvartetului APOSTOL, ROȘCA V., ROȘCA I, GHILIC, arată clar care sunt pașii pentru a face muncă de programare de succes.
Capitolul 05 de la paginile 64 - 83, intitulat PASCAL - limbaj de programare sistemică a calculatoarelor, ne introduce în notația BNF, care dă precizie definirii tuturor elementelor limbajului. Se definește cifra, se definește litera. Tabelul 5.1 prezintă lista celor 47 de cuvinte rezervate ale limbajului PASCAL în implementarea TURBO PASCAL 6.0. La paginile 71 - 83 sunt prezentate construcții elementare ale limbajului PASCAL folosind notația BNF.
Capitolul 06 de la paginile 84 - 119, intitulat Tipuri statice de date în PASCAL, prezintă conceptele de variabilă și de constantă, în raport cu conținutul unei zone de memorie care se alocă și are sau nu are o dinamică a sa. Sunt date explicații asupra tipurilor BYTE, WORD, INTEGER, SHORTINT, iar tabelul 6.1 detaliază cu claritate cum se pun în corespondență aceste tipuri cu zone de memorie a căror lungime este alocată diferențiat. Tabelul 6.3 descrie în detaliu tipurile reale de date. De exemplu, tipul DOUBLE are alocate 4 cuvinte și valorile memorate acolo sunt cuprinse în intervalul închis 5.0E-324; 1.7E308. Este abordat tipul boolean, tipul caracter, tipul enumerativ, tipul subdomeniu, tipul masiv, tipul mulțime (SET) și tipul șir de caractere (STRING). Exemplele date de autori sunt edificatoare.
Capitolul 07 de la paginile 119 - 127, intitulat Expresii în PASCAL, prezintă expresii aritmetice, expresii relaționale, expresii logice, expresii pe șiruri de caractere și operații pe șiruri de biți. Tabelele incluse în acest capitol dau precedențele, iar programatorul care scrie expresii complicate, ca să știe ce rezultate va obține, va trebui să știe aceste precedențe. Precedența arată ordinea în care se execută operația. Adunarea are precedența 4, iar înmulțirea are precedența 3. Operatorul cu precedența K are prioritate în fața operatorului cu precedența K+1, K+2, ..., K+n.
Marea varietate a operatorilor crește complexitatea expresiilor și cine nu stăpânește regulile de evaluare a expresiilor este bine să folosească paranteze și precedențele se rezolvă aproape de la sine.
Capitolul 08, de la paginile 128 - 149, intitulat Realizarea structurilor de control în PASCAL, prezintă blocurile, instrucțiunea vidă, instrucțiunea de atribuire, iar tabelul 8.1 arată ce atribuiri sunt permise. Dacă în limbajul FORTRAN apelul unei proceduri se realiza cu instrucțiunea CALL, în PASCAL, simpla scriere a numelui subprogramului de tip PROCEDURE echivalează cu apelul. Structurile alternative sunt descrise la paginile 135 - 142. Structurile repetitive sunt descrise la paginile 142 - 149. Nu există diferențe mari între enunțurile exemplificărilor și cititorul își dă singur seama de diferențele de utilizare a structurilor, dar mai ales când are posibilitatea de a le agrega, spre a obține construcții despre care crede că sunt mai speciale, mai eficiente.
Capitolul 09, de la paginile 150 - 162, intitulat Operații de intrare/ieșire efectuate cu tastatura/monitorul, prezintă instrucțiunile Read(), ReadLn(), Write(), WriteLn(). Deși se creează doar aparența că limbajul PASCAL nu este un limbaj puternic în ceea ce privește operațiile de intrare/ieșire, autorii cărții reușesc să spulbere acest mit și să facă din PASCAL un limbaj care permite soluționarea unei game foarte mari de probleme, chiar și de mari dimensiuni. Să nu uităm că suntem în anul 1996, că lucrarea este una de introducere și nu i se va cere nici lucrul cu fișiere, nici lucrul cu obiecte și nici alocări dinamice și nici recursivitate. Toate acestea, la rândul lor, într-o carte de PASCAL pentru avansați.
Capitolul 10, de la paginile 163 - 185, intitulat Subprograme PASCAL, prezintă conceptul de subprogram PASCAL, transferul datelor din programul apelator și transferul controlului spre subprogram, respectiv, de la subprogram către programul apelator. Ca și în FORTRAN, și limbajul PASCAL are subprograme de tip PROCEDURE() și de tip FUNCTION(). Există mari posibilități în cazul acestui limbaj, pentru că acest limbaj lucrează cu variabile pointer, iar structurile de date omogene sunt privite și ca variabile de acest tip. Am apreciat acest capitol mai ales pentru acuratețea detaliilor, căci știam că Ion Gh. ROȘCA, Valer ROȘCA și Constantin APOSTOL au scris cărți de ASSIRIS și acolo explicațiile privind transferul de parametri erau o chestiune esențială, pe care ei o stăpâneau foarte bine. Din prezentarea contribuțiilor la carte de către autori, se vede că APOSTOL este cel care a scris capitolul 10.
Capitolul 11, de la paginile 186 - 200, intitulat Funcții și proceduri aritmetice și asupra șirurilor de caractere, prezintă în tabelul 11.1 patru funcții pentru conversia datelor numerice. În tabelul 11.2 sunt date trei funcții trigonometrice și se face referire la PI. Tabelul 11.3 prezintă funcțiile Exp(x) și Ln(x). Mai sunt și alte tabele, dar interesante sunt funcțiile Concat(), destinată concatenării a două șiruri de caractere, Copy(), destinată copierii unui șir de caractere, Length(), care returnează lungimea șirului ca număr de caractere; autorii mai prezintă și procedurile FillChar(), Insert(), Ord(), dar și procedurile de conversie Str(), Val(). Programatorii care au lucrat în alte limbaje de programare se bucură de existența acestor funcții și le crește eficiența muncii lor simultan cu creșterea complexității programelor, mai ales că există funcții care le dau acces la biții din zone de memorie descrise de ei.
Capitolul 12, de la paginile 201 - 238, intitulat Introducere în mediul de dezvoltare TURBO PASCAL 6.0, prezintă exact ceea ce trebuie unui programator ca, deschizând un calculator personal IBM compatibil, să poată să-și ruleze programele. Cele 12 capturi de ecran îl ghidează pas cu pas pe cititor cum să procedeze. Cartea de față face parte din categoria celor care au un echilibru între teorie și practică, iar cititorul are suficiente elemente încât să treacă la rezolvarea propriilor probleme după ce o termină de citit. Este o sursă de inspirație pentru programatorii care lucrează disciplinat în echipă.
Capitolul 13, de la paginile 239 - 293, intitulat Exerciții rezolvate, include 21 de enunțuri de probleme clasice, cu detalierea algoritmului într-o schemă grafică și cu textul sursă PASCAL aferent. Remarc aici grija autorilor pentru conservarea unui stil de programare curat, cu menținerea denumirilor de variabile de control i și j la structurile de control. Pentru un programator care a lucrat în limbajul FORTRAN îi va fi extrem de ușor să se acomodeze cu structura textului sursă când vede secvențe PASCAL pentru suma elementelor unui vector (paginile 239 - 240), sortarea elementelor unui vector (paginile 260 - 264) sau înmulțirea a două matrice (paginile 284 - 285), precum și a altor probleme clasice, alese cu grijă de autori și prezentate în colecția celor 21 de exerciții rezolvate. Programatorul FORTRAN va trebui să se familiarizeze cu virtuțile limbajului PASCAL, unde apare structura de tip articol, unde apare recursivitatea, unde se definesc variabile pointer și unde alocarea dinamică este ceva cotidian.
Cartea are 6 anexe, și anume:
Anexa 1 se referă la noțiuni de algebră booleană;
Anexa 2 se referă la codificarea datelor;
Anexa 3 se referă la sisteme de numerație;
Anexa 4 se referă la noțiuni de teoria grafurilor;
Anexa 5 se referă la aspecte uzuale privind testarea;
Anexa 6 se referă la editarea programelor-sursă PASCAL.
Trebuie spus aici că autorii și-au atins obiectivul stabilit, iar nivelul atins de carte este unul dintre cele mai bune, căci claritatea și concizia sunt calități dobândite prin munca de la catedră și din fața computerului.
(29 septembrie 2026)
No comments:
Post a Comment