Previous | Table of Contents | Next |
Cartea noastra isi propune in primul rand sa fie un curs si nu o "enciclopedie"
de algoritmi. Pornind de la structurile de date cele mai uzuale si de la analiza
eficientei algoritmilor, cartea se concentreaza pe principiile fundamentale
de elaborare a algoritmilor: greedy, divide et impera, programare dinamica,
backtracking. Interesul nostru pentru inteligenta artificiala a facut ca penultimul
capitol sa fie, de fapt, o introducere - din punct de vedere al algoritmilor
- in acest domeniu.
Majoritatea algoritmilor selectati au o conotatie estetica. Efortul necesar
pentru intelegerea elementelor mai subtile este uneori considerabil. Ce este
insa un algoritm "estetic"? Putem raspunde foarte simplu: un algoritm
este estetic daca exprima mult in cuvinte putine. Un algoritm estetic este oare
in mod necesar si eficient? Cartea raspunde si acestor intrebari.
In al doilea rand, cartea prezinta mecanismele interne esentiale ale limbajului
C++ (mosteniri, legaturi dinamice, clase parametrice, exceptii) si trateaza
implementarea algoritmilor in conceptul programarii orientate pe obiect. Totusi,
aceasta carte nu este un curs complet de C++.
Algoritmii nu sunt pur si simplu "transcrisi" din pseudo-cod in limbajul
C++, ci sunt reganditi din punct de vedere al programarii orientate pe obiect.
Speram ca, dupa citirea cartii, veti dezvolta aplicatii de programare orientata
pe obiect si veti elabora implementari ale altor structuri de date. Programele
au fost scrise pentru limbajul C++ descris de Ellis si Stroustrup in "The
Annotated C++ Reference Manual". Acest limbaj se caracterizeaza, in principal,
prin introducerea claselor parametrice si a unui mecanism de tratare a exceptiilor
foarte avansat, facilitati deosebit de importante pentru dezvoltarea de biblioteci
C++. Compilatoarele GNU C++ 2.5.8 (UNIX/Linux) si Borland C++ 3.1 (DOS) suporta
destul de bine clasele parametrice. Pentru tratarea exceptiilor se pot utiliza
compilatoarele Borland C++ 4.0 si, in viitorul apropiat, GNU C++ 2.7.1.
Fara a face concesii rigorii matematice, prezentarea este intuitiva, cu numeroase
exemple. Am evitat, pe cat posibil, situatia in care o carte de informatica
incepe - spre disperarea ne-matematicienilor - cu celebrul "Fie ... ",
sau cu o definitie. Am incercat, pe de alta parte, sa evitam situatia cand totul
"este evident", sau "se poate demonstra". Fiecare capitol
este conceput fluid, ca o mica poveste, cu putine referinte si note. Multe rezultate
mai tehnice sunt obtinute ca exercitii. Algoritmii sunt prezentati intr-un limbaj
pseudo-cod compact, fara detalii inutile. Am adaugat la sfarsitul fiecarui capitol
numeroase exercitii, multe din ele cu solutii.
Presupunem ca cititorul are la baza cel putin un curs introductiv in programare,
nefiindu-i straini termeni precum algoritm, recursivitate, functie, procedura
si pseudo-cod. Exista mai multe modalitati de parcurgere a cartii. In functie
de interesul si pregatirea cititorului, acesta poate alege oricare din partile
referitoare la elaborarea, analiza, sau implementarea algoritmilor. Cu exceptia
partilor de analiza a eficientei algoritmilor (unde sunt necesare elemente de
matematici superioare), cartea poate fi parcursa si de catre un elev de liceu.
Pentru parcurgerea sectiunilor de implementare, este recomandabila cunoasterea
limbajului C.
Cartea noastra se bazeaza pe cursurile pe care le tinem, incepand cu 1991, la
Sectia de electronica si calculatoare a Universitatii Transilvania din Brasov.
S-a dovedit utila si experienta noastra de peste zece ani in dezvoltarea produselor
software. Colectivul de procesare a imaginilor din ITC Brasov a fost un excelent
mediu in care am putut sa ne dezvoltam profesional. Le multumim pentru aceasta
celor care au facut parte, alaturi de noi, din acest grup: Sorin Cismas, Stefan
Jozsa, Eugen Carai. Nu putem sa nu ne amintim cu nostalgie de compilatorul C
al firmei DEC (pentru minicalculatoarele din seria PDP-11) pe care l-am "descoperit"
impreuna, cu zece ani in urma.
Ca de obicei in astfel de situatii, numarul celor care au contribuit intr-un
fel sau altul la realizarea acestei carti este foarte mare, cuprinzand profesorii
nostri, colegii de catedra, studentii pe care am "testat" cursurile,
prietenii. Le multumim tuturor. De asemenea, apreciem rabdarea celor care ne-au
suportat in cei peste doi ani de elaborare a cartii.
Speram sa cititi aceasta carte cu aceeasi placere cu care ea a fost scrisa.
Brasov, ianuarie 1995
Razvan Andonie
Ilie Garbacea
Previous | Table of Contents | Next |