CATEGORII DOCUMENTE |
Universitatea Romano-Americana
Facultatea Informatica Manageriala
Algoritmi de calcul
-Introducere-
Un mare om afirma: " Semnul nu este o calitate in sine a unui obiect, ci o functie pe care acest obiect o poate dobandi."
Functia de semn a unui obiect este capacitatea sa de a reprezenta ceva intr-un anumit context natural sau social. Semnul este perceptibil, el admite un referend si un interpretant sau sens care este imaginea mentala sau semnul echivalent pe care primul semn il creeaza in mintea interpretului sau.
Care credeti ca este motivul pentru care dialogul om-claculator nu se desfasoara in limbaj natural ?
Nu ne indoim ca stiti raspunsul la intrebare. Dar sa vedem daca argumentarea noastra in gluma coincide cu a dumneavoastra, pornind de la un mic episod:
Profesorul de informatica intra in clasa si constata ca tabla este plina de figuri geometrice si formule (ora anterioara fusese cea de matematica), situatie in care roaga un elev sa stearga tabla, dupa care incepe ora.
Dupa cateva repetari ale acestui episod, profesorul le spune elevilor:
Daca data viitoare gasesc tabla nestearsa, atunci sa stiti ca eu o sterg.
Care credeti ca ar putea fi efectul acestei afirmatii? Pusi in situatia de a interpreta mesajul (precum calculatorul care interpreteaza un program), elevii ar trebui sa ajunga la o concluzie unica, ceea ce nu este sigur ca se va intampla.Unii elevi pot gandi ca:
Profesorul va sterge tabla si va trece la desfasurarea orei,
In timp ce altii pot crede ca:
Profesorul se va supara si va pleca de la ora (o sterge, cum se spune).
Numai din citirea mesajului nu se poate sti exact ce a vrut sa spuna profesorul. Lipseste ceva. De aceea, pentru a ne lamuri:
Sa il intrebam pe profesor care este sensul lui eu o sterg
Sau trebuie sa fi fost de fata cand a lansat afirmatia, pentru ca se poate sa fi facut un gest cu mana, in sensul ca va pleca de la ora.
Pentru ca tot a venit vorba de limbajul natural si de dialogul om-calculator, precizam ca inteaga evolutie a limbajelor de programare dovedeste ca s-a urmarit o cat mai mare apropiere de limbajul natural, find vorba, de fapt, de restrictii ale limbajului natural, care sa se alinieze conceptual si structural la principiile programarii structurate.
Ca sa fim in ton cu structurile selective ale programarii structurate, va rugam sa acceptati ca :
If va vom fi pe plac
Then ne vom bucura
Else ne vom intrista
End
sperand ca cele patru cuvinte in limba engleza nu constituie o piedica in a intelege ceea ce am vrut sa spunem.
-Sistemul informational-
Un sistem poate fi privit ca un ansamblu de elemente interconectate si interconditionate prin relatii fizice, sociale si de alta natura, intre ele si cu mediul extern sistemului, care functioneaza in vederea realizarii unui scop sau a finalizarii unui obiect.
Activitatea desfasurata intr-un sistem organizat, in vederea realizarii unui obiectiv poate fi definita ca fiind rezultatul actiunii conjugate, a trei subsisteme ce actioneaza intr-o stransa interdependenta si care la randul lor pot fi considerate sisteme:
-Sistemul de conducere sau decizional(S.D.)
-Sistemul condus, de executie sau operational(S.O.)
-Sistemul informational
Sistemul de conducere are rolul de a dispune, indruma si coordona activitatea in vederea realizarii obiectivelor fixate, cu eficienta maxima.
Sistemul condus are rolul de a executa practic deciziile luate si de a furniza date privind actiunile realizate sau in curs de executie, folosind pentru aceasta resursele materiale, financiare, stiintifice si umane existente, repartizate pe obiective dinainte stabilite.
De la sistemul de conducere spre sistemul de condus vor circula decizii. Acest circuit de informatii si decizii reprezinta un proces permanent care se realizeaza prin existenta sistemului informational.
Sistemul informational este un instrument indispensabil conducerii avand ca parti componente mijloacele si procedeele ce asigura legaturile intre elementele de executie si elementele decizionale pentru conducere si organizare.
Deci sistemul informational este un ansamblu de fluxuri si circuite informationale organizate intr-o conceptie unitara. Scopul final al sistemului informational (SI) este realizarea obiectivelor proprii organismului social-economic in concordanta cu obiectivele generale ale societatii si in conditii de maxima eficienta.
Ansamblul operatiilor la care sunt supuse intrarile pentru a furniza iesirile se constituie in proceduri.
In cazul cand metodele, procedurile si mijloacele utilizate pentru colectarea, inregistrarea, prelucrarea, stocarea si/sau transmiterea datelor si a informatiilor sunt cu preponderenta automatizate, sistemul informational devine un sistem informatic.
Conceptul de Sistem informatic
Sistemul informatic reprezinta un ansamblu de elemente intercorelate functional in scopul automatizarii obtinerii informatiilor necesare conducerii in procesul de elaborare a deciziilor.
Sistemul informatic este compus din:
a) baza tehnica sau HARDWARE
b) sistemul de programe sau SOFTWARE
c) baza stiintifico-metodologica
d) baza informationala
e) resursele umane si cadrul organizatoric
Obiectivele Sistemului informatic
Obiectivele sistemului informatic pot fi clasificate dupa mai multe criterii, astfel:
a) in functie de sfera de cuprindere pot fi:
-principale
-secundare
b) din punct de vedere al domeniului de activitati:
-obiective ce afecteaza activitatile de baza:
-cresterea gradului de incarcare a capacitatilor de productie existente si reducerea duratei ciclului de fabricatie
-cresterea profitului si a rentabilitatii etc.
-obiectivele ce afecteaza functionarea sistemului informational:
-reducerea costului informatiei
-rationalizarea circuitelor informationale etc.
c) din punct de vedere al posibilitatilor de cuantificare a efectelor acestora:
-obiectivele cuantificabile:
-reducerea cheltuielilor de transport
-cresterea volumului productiei etc.
-obiectivele necuantificabile, care influenteaza in mod direct indicatorii cuantificabili.
Clasificarea Sistemelor informatice
Sistemele informatice se clasifica dupa mai multe criterii:
a) in functie de domeniul de utilizare:
-sisteme informatice pentru conducerea activitatilor economico-sociale
-sisteme informatice pentru conducerea sistemelor tehnologice
-sisteme informatice pentru activitatea de cercetare stiintifica si proiectare
-sisteme informatice speciale
b) Un alt criteriu de clasificare este nivelul ierarhic
ocupat de sistemul economic in structura organizatorica
a societatii.
c) In functie de modul de organizare a datelor
Proiectarea la nivel micro si macroeconomic a unor sisteme informatice care sa utilizeze tehnica bazelor de date si care sa contina o serie de modele matematice, iar situatiile de informare-raportare sa aiba un caracter de semnalare preventiva a abaterilor fata de starea normala, reprezinta o forma superioara de organizare si prelucrare a datelor.
-Structuri de date-
Prelucrarea automata a datelor necesita, pe langa activitatile legate de formularea problemei, de analiza acesteia in vederea gasirii algoritmului de rezolvare si o alta activitate deosebit de importanta, legata de organizarea datelor, in concordanta atat cu caracteristicile tehnice ale echipamentelor de calcul cat si cu cerintele e prelucrare.
Organizarea datelor este un proces care cuprinde urmatoarele activitati:
-identificarea datelor
-clasificarea si descrierea proprietatilor, a caracteristicilor
datelor
-gruparea datelor in colectii de date destinate prelucrarii automate
-reprezentarea externa pe suporturi tehnice
-identificarea, definirea si descrierea procedurilor de prelucrare automata
Notiunea de data
In informatica prin data se intelege un model de reprezentare a informatiilor despre obiecte supuse prelucrarii automate, accesibil atat utilizatorului cat si componentelor calculatorului.
In functie de obiectele pe care le reprezinta, datele se pot clasifica in:
datele elementare sau scalare, care se prezinta sub forma unor entitati indivizibile
colectii de date, care se reprezinta sub forma unor multimi de date elementare, in care se definesc si se descriu sau nu anumite relatii.
Datele elementare pot fi tratate sub doua aspecte:
nivelul fizic - corespunde modului de organizare si reprezentare intern a datelor.
Nivelul logic - corespunde modului de organizare si prelucrare a datelor de catre utilizator
Se numeste structura de date o colectie de date pentru care s-a definit un mecanism de selectare si identificare a componentelor.
Observatie: Daca o structura se poate descompune in structuri de acelasi tip, atunci structura aceea este recursiva.
Asemenea datelor elementare, structurile de date pot fi create pentru reprezentarea lor in memoria interna sau pentru reprezentarea pe un suport extern de date. In mod corespunzator, structurile de date vor putea fi:
Structuri de date interne, cu caracter temporar, deoarece sunt realizate in memoria interna de tip RAM
Structuri de date externe, care nu au un caracter relativ permanent, deoarece sunt memorate pe suporti externi. Aceste structuri pot cuprinde:
-fisiere de date
-baze de date
-banci de date
Din punct de vedere al modului de alocare a zonelor de memorie, structurile de date mai pot fi grupate astfel:
Structuri de date statice, la care alocarea zonelor de memorie necesara pastrarii temporare a datelor este facuta in momentul compilarii programului si ramane aceeasi pe toata durata de executie a programului respectiv
Structuri de date dinamice, la care alocarea zonelor de memorie necesare pastrarii temporare a datelor se face numai in momentul executiei programului.
Dupa nivelul de structurare a datelor, se poate face gruparea:
Structura logica, cea care se refera la modul de ordonare al datelor, la operatorii de prelucrare a datelor
Structura fizica, reprezentand modul de implementare, de reprezentare a datelor pe suportii magnetici de date.
Tipuri de structuri de date
O structura de date reprezinta practic o colectie de date intre care s-au definit o serie de relatii care duc la un anumit mecanism de selectie si identificare a datelor.
Aceste relatii pot fi:
De echivalenta
De ordine
De ordine totala
De preordine
Se numeste tip de structura de date o multime ordonata de date, intre care s-au stabilit anumite relatii si care folosesc, pentru realizarea operatiilor, un grup de operatori de baza cu o anumita semantica.
Principalele tipuri de structuri de date(logice) sunt:
Structura punctuala, reprezentata de o entitate grup izolata
Structura liniara, definita atunci cand intre elementele unei colectii de date exista o relatie de ordine totala
a1 a2 a3 a4
fig. 1 structura liniara simpla
Structura arborescenta, sau descendenta sau ierarhica este definita atunci cand intre elementele colectiei de date exista o relatie de ordine.
Observatie: Intr-o structura arborescenta, elementele de grad 0 sunt denumite si elemente terminale ale structurii respective. Un arbore ordonat de gradul doi se numeste arbore binar. Un arbore care are ordinul mai mare decat doi se numeste arbore de multicai. Drumul de lungime maxima se numeste inaltimea arborelui.
Structura retea, definita atunci cand intre elementele colectiei de date exista o relatie de preordine.
Structura relationala, este formata din mai multe tabele de date elementare, numite tablouri sau relatii, obtinute prin metoda normalizarii, pentru a asigura conditiile de integritate si unicitate a datelor si a elimina astfel anomaliile la actualizari.
Observatie: Datele prelucrate in cadrul unui sistem informatic sunt practic liste la care, in afara relatiei de ordonare, exista si relatia intre elementele lor.
Fisierul se defineste ca o multime de date omogene din punct de vedere al semnificatiei lor si a cerintelor de prelucrare.
Baza de date se defineste ca o colectie de date aflate in interdependenta, memorata pe suport impreuna cu descrierea datelor si a relatiilor dintre ele.
Banca de date reprezinta un sistem de organizare si prelucrare, respectiv teleprelucrare a datelor.
-Grafuri-
Se numeste graf neorientat o pereche ordonata G=(X,U), unde X este o multime finita si nevida de elemente numite noduri (varfuri), iar U este o multime de perechi (neordonate) de elemente distincte ale lu X, numite muchii.
Un subgraf al lui G este un graf H=(Y,V) unde Y X, iar V este format din toate muchiile lui U care unesc varfuri din Y.
Un graf partial al lui G este un graf (X,V) cu VU.
Se numeste lant intr-un graf G=(X,U) o succesiune de muchii de forma [i1,i2], [i2,i3],.,[in-1,in] notata prescurtat prin [i1,i2,.,in].
Un lant [i1,i2,.,in] unde i1,i2,.,in sunt distincte se numeste lant elementar.
Se numeste ciclu elementar un lant [i1,i2,.,in,i1] cu [i1,i2,.,in] lant elemetar si n≥3.
Un lant in care muchiile sunt diferite doua cate doua se numeste ciclu.
Un varf care este extremitatea unei singure muchii se numeste varf terminal.
Doua varfuri unite printr-o muchie se numesc varfuri adiacente.
Un graf neorientat se numeste conex daca oricare doua varfuri diferite ale sale sunt unite prin cel putin un lant.
Un graf orientat este o pereche orientata G=(X,U), deosebirea fata de graful neorientat canstand in faptul ca elementele lui U sunt perechi ordonate de varfuri numite arce. In cazul grafurilor orientate, notiunile de lant si ciclu isi au corespondent in notiunile de drum si circuit.
Arbori
Se numeste arbore un graf conex si fara cicluri.
Intr-un arbore cu n≥2 varfuri, exista cel putin doua varfuri terminale.
Un arbore cu proprietatea ca fiecare nod, cu exceptia frunzelor, are cel mult doi succesori se numeste arbore binar.
Un arbore cu proprietatea ca fiecare nod, cu exceptia frunzelor, are exact doi succesori se numeste arbore binar complet.
Prin parcurgerea unui arbore binar, se intelege vizitarea tuturor nodurilor, pe rand, intr-o anumita ordine.
Exista trei tipuri de parcurgere a uni arbore binar:
In preordine, se viziteaza mai intai radacina, apoi subarborele stang al radacinii, si in final subarborele drept al radacinii.
In inordine, se viziteaza mai intai subarborele stang al radacinii, apoi radacina, si in final subarborele drept al radacinii.
In postordine, se viziteaza mai intai subarborele stang al radacinii, apoi subarborele drept, si in final radacina.
-Algoritmi. Definire si descriere-
Prin algoritm se intelege o metoda de rezolvare a unei categorii de probleme, care consta intr-o multime finita si bine ordonata de operatii, caracterizata prin faptul ca este generala, finita si realizabila.
Etapele rezolvarii unei probleme:
Formularea problemei
Elaborarea, identificarea si descrierea algoritmului de rezolvare
Scrierea programului
Testarea programului
Realizarea, completarea si definitivarea documentatiei programului
Exploatarea curenta, utilizarea si intretinerea programului
Proprietatile algoritmilor
Observatie: Un procedeu de calcul care are toate caracteristicile algoritmilor, dar nu se termina intr-un numar finit de pasi se numeste metoda de calcul.
Structura unui algoritm
Din punct de vedere structural un algoritm cuprinde urmatoarele etape:
Initializarea algoritmului
Prelucrarea algoritului
Prezentarea solutiei finale
-Scheme logice-
Schema logica este o forma de prezentare a algoritmului si a modului de lucru al acestuia sub forma grafica, folosind diferite simboluri grafice:
Blocul de inceput Blocul de sfarsit
Blocul de intrare (citire) Blocul de iesire(scriere)
Blocul de prelucrare(de calcul sau atribuire)
Blocul de decizie, de ramificatie sau de selectie
Observatie: Pentru a da o reprezentare intuitiva algoritmului si pentru a indica precis ordinea de executare a operatiilor de prelucrare, blocurile sunt unite prin sageti. Atunci cand sensul de parcurgere este evident, sagetile pot fi inlocuite prin linii simple.
De aceea, s-a adoptat prin conventie, ca blocurile sa fie scrise pe verticala, unele sub altele, sensul de parcurgere normal fiind de sus in jos, in ordinea in care sunt scrise.
Intr-o schema logica liniile de legatura nu trebuie sa fie lungi sau sa se intersecteze.
Bloc de conexiune pe aceeasi pagina(conector)
Conector de pagina sau bloc de conexiune pe o alta pagina
Observatie: Pentru descrierea algoritmilor se pot utiliza si alte simboluri, cu conditia ca ele sa fie explicate, sa fie clar sensul si intelesul lor.
Observatie: In schema logica ordinea blocurilor nu este indiferenta, ci este determinata de algoritmul de rezolvare al problemei formulate. De aceea dupa cum algoritmul este descris mai detaliat sau mai putin detaliat, tot astfel, schema logica va fi mai rafinata sau mai putin detaliata.
-Limbaje de programare-
Limbajul de programare este un ansamblu de simboluri, cuvinte, instructiuni si semnificatii atribuite acestora, utilizat pentru descrierea algoritmilor.
Un program reprezinta o alta modalitate de descriere a unui algoritm de rezolvare a unei probleme date.
Dintre limbajele de programare utilizate mentionam:
Basic
Algol
Fortran
Cobol
Pascal
C
Pl/1, etc
Cuvinte cheie si rezervate
Cuvintele cheie sunt toate cuvintele care fac parte din sintaxa limbajului pascal, precum si numele tuturor functiilor recunoscute de compilatorul pascal.
Cuvintele rezervate sunt cele care fac parte strict din sintaxa limbajului.
Observatie: Este interzis sa dam nume diverselor obiecte care sa coincida cu cuvintele rezervate.
In partea declarativa, orice declaratie careia nu i se asociaza obiecte legate de programul in cauza se poate omite.
Observatie: Atat functiile cat si procedurile au o structura asemanatoare cu cea a programului, in sensul ca in interiorul oricarei functii sau proceduri se pot face declaratii si au si parte executabila.
O instructiune compusa este o secventa de instructiuni (simple structurate sau compuse) delimitate de cuvintele rezervate begin si end.
O instructiune compusa e tratata de compilatorul pascal ca o instructiune simpla, efectul executiei ei fiind insa rezultatul inlantuirii executiei instructiunilor componente.
In pascal este interzis ca un identificator aflat in declaratia unui tip enumerat sa se intalneasca si in declaratia altui tip enumerat.
Daca o variabila se declara ca apartinand unui anumit tip, in cursul executiei programului, la orice incercare de modificare a valorii ei, compilatorul verifica apartenenta noii valori atribuite la tipul variabilei.
O conditie este o expresie cu valoare logica:
IF conditie THEN
Instructiune 1
ELSE
Instructiune 2;
Instructiunea poate fi orice intructiune pascal, simpla sau compusa. Observatie: Inainte de ELSE nu se pune " ; ". Daca dorim sa efectuam mai multe operatii pe fiecare ramura a instructiunii IF, vom folosi in locul " instructiune 1" sau " instructiune 2" instructiuni compuse.
Instructiunea WHILE se mai numeste instructiune cu test initial. Instructiunea componenta a blocului WHILE poate fi executata de un numar oarecare de ori sau niciodata. In mod normal, instructiunea componenta a blocului WHILE trebuie sa fie in masura sa modifice valoarea conditiei pentru a evita ciclarea, adica repetarea la infinit a unei secvente de comenzi.
Instructiunea REPEAT se numeste instructiune cu test final.
Conditia pentru acest tip de instructiune se pune la final. Ca si la ELSE, inainte de UNTIL nu se pune " ; ".
Un ciclu FOR executa instructiunea pe care o inglobeaza o data, de mai multe ori sau niciodata. O tehnica obligatorie in utilizarea instructiunii FOR se refera la interdictia formala de a modifica prin instructiunea care intra in corpul instructiunii FOR valoarea contorului.
Observatie: Compilatorul genereaza o eroare in timpul executiei daca la citirea unui numar intreg, real intalneste un alt caracter decat,e, E, semn, cifra. EOLN este asociat, in cazul citirii de la tastatura, apasarii tastei < ENTER> sau < CR >.
In turbopascal exista un modul de programare CRT care permit lucrul cu ecranul in mod caracter. Exista subrutina GO TO (x,y) care permite pozitionarea in orice punct al ecranului (dar nu cu WRITE).
In turbopascal exista si instructiunea de selectie multipla cu alternativa. Sintaxa acesteia este:
CASE expresie OF
Lista - etichete - CASE: instructiune
ELSE
Instructiune
END;
EFECTUL:
Este identic cu cel al instructiunii CASE fara alternativa, in cazul in care valoarea expresiei e regasita printre selectori (etichetele) specificate. Deosebirea consta in faptul ca daca valoarea expresiei nu e descoperita printre selectorii specificati, se executa instructiunea care urmeaza dupa clauza ELSE.
Observatie:
In Pascal nu exista, cain alte limbaje specializate (Fortran), proceduri speciale de citire/scriere de matrici. Aceste operatii trebuie facute prin instructiuni program.
Observatie:
Basic nu face diferenta intre literele mari si mici folosite in cuvintele cheie sau in formarea identificatorilor.
Observatie:
Facem urmatoarele conventii privind formatul comenzilor (instructiunilor) Basic:
Cuvintele scrise ingrosat (Bold) sunt cuvinte cheie, care trebuie folosite ca atare, iar cele scrise cu caractere normale reprezinta cerinte, deci elemente care se vor inlocui cu ceea ce se cere efectiv prin ele.
Cuvintele scrise intre paranteze drepte [ ] semnifica ceva optional, care poate fi scris sau poate lipsi.
Caracterul / intre doua cuvinte semnifica faptul ca se poate folosi oricare dintre acele cuvinte in sintaxa comenzii.
Observatie:
Daca se specifica direct valoarea constantei, atunci trebuie sa retinem urmatoarele:
o constanta de tip numeric sau logic se precizeaza prin valoarea ei scrisa ca atare;
o constanta de tip sir de caractere trebuie scrisa intre delimitatori " " (ghilimele);
o constanta de tip data calendaristica se precizeaza intre delimitatori # #.
Observatie:
Operatiile ce se efectueaza in cadrul expresiilor trebuie sa aiba sens din punct de vedere matematic. Exemplu, la impartirea numitorului sa nu fie 0 (zero).
-ALGORITMI SPECIALI-
Sortarea prin interschimbare
Se compara doua cate doua elemente consecutive ale vectorului, interschimbandu-le in cazul neindeplinirii criteriului de ordonare.
Dupa o parcurgere integrala a vectorului, procesul se reia, incepand cu primul element astfel, elementele cu valoare mica sunt "impinse" catre inceputul vectorului.
Procesul se opreste cand, la o parcurgere a vectorului, nu s-a produs nici o schimbare,situatie indicata de valoarea de adevar a unei variabile-semafor, controlata de programator.
Sortarea prin selectie
Metoda presupune determinarea elementului minim din vector si aducerea lui pe prima pozitie, dupa care se determina minimul din vectorul ramas si aducerea lui pe a doua pozitie.
Minimul se poate determina comparand un element al vectorului cu toate care il succed, interschimbandu-le in cazul neindeplinirii criteriului de ordonare.
Sortarea prin insertie
Pornind de la ipoteza ca la pasul i elementele predecesoare lui x(i) sunt ordonate, se determina pozitia (POZ.) in care valoarea lui x(i) se incadreaza conform criteriului de ordonare.
Elementul x(i) va fi inserat in acea pozitie, dupa ce toate elementele vectorului, incepand cu POZ si pana la sfarsit, gliseaza cu o pozitie la dreapta. Se reduce astfel numarul de interschimbari, deoarece, in cazul in care un element x(i) este mai mare decat precedentul, acesta se considera ordonat.
Interclasarea a doi vectori de dimensiuni variabile
Prin interclasare se intelege procesul de obtinere din doua sau mai multe multimi ordonate, o noua multime, ordonata dupa acelasi criteriu.
-TEHNICI DE PROGRAMARE-
Programarea modulara
Programarea modulara are ca obiectiv reducerea empirismului artizanal folosit in elaborarea programelor si instaurarea principiilor ingineriei programarii, vizand obtinerea unor programe corecte si fiabile, reducerea costului elaborarii, documentarii, testarii, intretinerii si dezvoltarii produselor software.
Modularizarea programelor
Algoritmii de rezolvare a problemelor complexe se intocmesc si/sau pot fi descompusi in maniera sistemica, dupa criteriul functional, in mod ierarhic, pana la nivelul de subalgoritm/functie elementara, ca element terminal in structura unitatii functionale.
Un modul functional se caracterizeaza prin:
Nume extern si/sau intern;
Functie logica perfect definita;
Punct de intrare si punct de iesire unice;
Relatia cu modulele din aval si amonte - interfata;
Posibilitarea elaborarii si testarii independente.
Daca programarea modulara stabileste o ierarhie de module din ce in ce mai detaliate, imbricate (incluse succesiv unele in altele), ultimul nivel apartinand modulelor functionale, programarea structurata este mai mult o strategie de scriere a programelor, care detaliaza analiza si procedeul descompunerii succesive pana la nivel de blocuri si instructiuni elementare. Programarea structurata este astfel un ansamblu coerent, complet si unitar de construire, documentare si intretinere a programelor-pas important pe linia formalizarii programarii.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 3202
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved