Sunteți pe pagina 1din 12

Notiuni introductive 5

1. Notiuni introductive

1.1 Structura fizica a unui calculator secvential

Calculatorul numeric (CN) este un sistem fizic care prelucreaza


automat informatia codificata sub forma de valori discrete, conform unui
program ce indica o succesiune determinata de operatii aritmetice si logice.
Sistemul de calcul este alcatuit din doua subsisteme principale:
- subsistemul hardware ( echipamente fizice)
- subsistemul software ( programele si structurile de date)
Structura de baza a calculatorului secvential, cu program memorat,
stabilita de von Newman în 1945, este reprezentata în fig.1.1 si cuprinde cinci
unitati functionale;
- unitatea de intrare (UI);
- unitatea de memorare (M);
- unitatea de iesire (UE);
- unitatea aritmetica si logica (UAL);
- unitatea de comanda (UC).
- prin linie continua s-a reprezentat fluxul de date si instructiuni;
- prin linie întrerupta s-a reprezentat fluxul de comenzi si stari.
6 Programarea calculatoarelor

UI-(unitatea de intrare) permite introducerea informatiei în calculator, realizând


conversia reprezentari informatiei de la forma externa, accesibila omului
(numere, texte, imagini, sunet) în format intern binar.
Formatul intern binar este rezultatul utilizari în constructia calculatoarelor a
circuitelor electrice care prezinta la iesire numai doua stari stabile, nivele de
tensiune 0-5 V.
Conventional cele doua stari se reprezinta prin cifrele binare ("biti") "0"si"1".
Ex. de UI : tastatura, mouse, creion optic, etc.

M-(unitatea de memorie) reprezinta unitatea functionala a unui CN în care se


stocheaza informatia (date si programe). Capacitatea memoriei este
reprezentata prin numarul de biti de informatie pe care îi poate stoca.
Se utilizeaza ca unitate de masura a capacitati memoriei octetul (engl . byte)-
cuvântul de 8 biti, împreuna multipli sai Ko, Mo, Go.
M unui CN este formata din: - memoria interna (MI), principala;
- memoria externa (ME), secundara.
În memoria interna se pastreaza programele si datele ce se utilizeaza la un
moment dat si este realizata cu circuite electronice de memorie.
În memoria externa se pastreaza toate programele si datele ce trebuie sa se
afle la dispozitia CN. Implementarea ME se face prin echipamente ( periferice
) de memorare: discuri, benzi, casete.

UAL-(unitatea aritmetica si logica) realizeaza prelucrarea informatiei


preluata din memorie, iar rezultatele se depun din nou în memorie sau sunt
furnizate mediului extern. UAL realizeaza doua categorii de operatii:
- aritmetice (+, -, *, \);
- logice(AND,OR,YOR,NOT).

UE-(unitatea de iesire) realizeaza trimiterea în exteriorul sistemului de calcul a


rezultatelor prelucrarilor. Daca acestea sunt destinate utilizatorului uman, UE
executa conversia din format intern (binar ) în format direct accesibil omului
(cifre ,texte, grafice , imagini, sunet).
Daca rezultatele sunt destinate actionarii unor echipamente ,UE prin
intermediul unor circuite speciale numite CNA (convertoare numeric-
analogice),genereaza semnalele necesare actionarii unor echipamente.
Notiuni introductive 7

UC-(unitatea de control) controleaza activitatea tuturor


echipamentelor din sistem pe baza unei secvente de instructiuni reprezentând
programul memorat. Caracterul secvential al calculatorului rezulta din modul de
executie al programului. Sunt necesare urmatoarele etape :
- citirea instructiunii curente;
- decodificarea instructiunii (identificarea operatiilor ce trebuie realizate) si
aducerea din memorie a operanzilor;
- executia operatiilor cerute de instructiune, dupa care se trece la urmatoarea
instructiune. Astfel programul este executat instructiune cu instructiune.
Datele si codul programelor sunt introduse în calculator prin intermediul unitatii
de intrare apoi fiind depuse în memorie .
UC trimite catre M semnale de control reprezentând adrese si obtine de la
aceasta instructiunile programului executat.
Pe baza instructiunilor, UC furnizeaza semnalele de control necesare pentru
citirea din M a datelor de prelucrat si executarea operatiilor necesare în cadrul
UAL. Rezultatele sunt depuse din nou în M sau sunt trimise catre mediul extern
prin intermediul UE.
De remarcat faptul ca UC poate testa direct rezultatele obtinute în UAL iar
pe baza unor instructiuni speciale ale programului poate lua decizii de executie
a unei secvente de instructiuni din doua sau mai multe secvente (realizarea de
ramificatii în program).

1.2.Limbaje de programare (LP).

Calculatorul "stie" sa execute un set de operatii simple ca de exemplu operatii


aritmetice elementare (+,-,*,/) Prin combinarea acestor operatii simple se pot
obtine prelucrari complexe. Combinarea operatiilor se supune unor reguli bine
precizate. Procedeul (metoda) de rezolvare a unei probleme formeaza un
algoritm. Acest concept are un rol fundamental si se poate defini ca un set de
reguli ce defineste secventa de operatii ce trebuie executate de calculator
pentru solutionarea unui tip specific de probleme.
Algoritmii au urmatoarele proprietati:
- generalitate (algoritmul determina modul de rezolvare a unui tip de probleme
si nu a unei probleme particulare).
8 Programarea calculatoarelor

- finitudine( executia algoritmului trebuie sa se termine într-un numar finit de


pasi - operatii).
- rigurozitate (fiecare pas al algoritmului trebuie sa fie precis definit)
- executabilitate (fiecare pas al algoritmului trebuie sa fie executat de
calculator)
- eficienta ( se determina din punct de vedere al timpului de executie si al
memoriei ocupate).
Rigurozitatea si executabilitatea algoritmului sunt asigurate prin
reprezentarea acestora în limbaj de programare (LP).
Un LP este un limbaj artificial folosit pentru a comunica cu calculatorul .
Programul (P) este o reprezentare - codificare - al unui algoritm în limbaj de
programare.
Pentru a rezolva o problema cu calculatorul trebuie parcurse urmatoarele
etape:
1 ) Specificarea problemei, cuprinde:
- formularea problemei
-specificarea datelor de intrare si iesire .
Ex. : Sa se rezolve un sistem liniar de n ecuatii cu n necunoscute
sistem - compatibil - determinat
- nedeterminat
- incompatibil

Se dau coeficientii A si B. Se cere solutia sistemului daca exista, daca nu


mesaj.
2 ) Proiectarea algoritmului: pentru descriere se folosesc scheme logice
(organigrame) pentru limbaje de asamblare sau pseudocod pentru limbaje de
nivel înalt.
3 ) Codificarea algoritmului într-un limbaj de programare sub forma de
program.
Alegerea limbajului de programare se face în functie de natura aplicatiei si
cunostintele programatorului. Pentru rezolvarea unei probleme utilizatorul
trebuie sa-i furnizeze sistemului de calcul datele initiale si etapele de parcurs
prin intermediul unui limbaj de programare. De asemenea rezultatele
prelucrarilor vor fi furnizate în mediul extern într-o forma specificata tot prin
intermediul limbajului de programare.
Notiuni introductive 9

Astfel limbajul de programare realizeaza conexiunea în ambele sensuri între


universul problemei si universul sistemului de calcul.
Un limbaj de programare opereaza cu doua categorii de date:
- date elementare
- date structurate
Datele elementare sunt acele date ale caror structura interna nu este
accesibila programatorului. Acestea pot fi de mai multe tipuri:
- date numerice, având valori în multimi cunoscute in matematica ( N,Z,R,C );
- date alfanumerice, având valori de tip caracter sau sir de caractere, pentru
gestiunea de texte;
- date logice, au valorile True sau False.
Datele structurate sunt alcatuite din mai multe componente toate accesibile
programatorului .
Exemplu:
- tabloul : cuprinde mai multe date de acelasi tip .
- înregistrarea :cuprinde date elementare de tipuri diferite .
Din punct de vedere al valorilor ,un program opereaza cu doua categorii de
valori :
- constante - valoarea acestora nu se modifica în timpul executiei programului .
- variabile - valoarea acestora se modifica în timpul executiei programului.
Pentru pastrarea valorii variabilelor se utilizeaza locatii de memorie.
Un limbaj de programare este format din :
---vocabular - contine multimea semnelor si cuvintelor din care se pot forma
propozitii.
--- sintaxa - se refera la multimea regulilor ce descriu modul de alcatuire a
propozitiilor.
--- semantica - specifica reguli ce definesc întelesul ( semnificatia) propozitiilor.
Operatiile simple pe care stie sa le execute un calculator numeric se
reprezinta prin coduri( valori) numerice. Acest set de operatii (instructiuni)
formeaza un limbaj prin intermediul caruia se poate comunica direct cu
calculatorul si se numeste limbaj masina ( LM) ( cod masina).
Exemplu: - adunarea la IBM -PC, codul este 1111011.
Limbajul masina este specific fiecarui calculator în parte. Un program
în cod masina este o secventa de coduri binare ce poate fi executata de un
CN. Un astfel de program se numeste program executabil.
10 Programarea calculatoarelor

Programarea în limbaj masina este extrem de anevoioasa. De aceea


au aparut noi limbaje, care au simplificat operatia de scriere a programelor si
comunicare cu calculatorul.
Limbajele de programare se împart în :
- limbaje de asamblare (LA);
- limbaje de nivel înalt (LNI).
Un LA se caracterizeaza prin aceea ca unei intructiuni din set îi
corespunde o instructiune în limbaj masina. Deosebirea între un limbaj de
asamblare si un limbaj masina este ca o instructiune in LA se specifica într-un
cod simbolic (mnemonica) si nu printr-un cod numeric.
Exemplu: - adunarea în LA la IMB-PC : ADD
LA permite de regula definirea si utilizarea de proceduri si
macroinstructiuni, oferind astfel programatorului o serie de facilitati în scrierea
programelor.
Programarea în limbaj de asamblare necesita însa cunoasterea detaliata a :
- arhitecturii unui CN;
- structurii si modului de lucru a S.O.
Programarea în limbaj de asamblare se utilizeaza în:
- aplicatii ce necesita acces direct la resursele hardware;
- aplicatii ce necesita viteza mare de executie.
Programele scrise în LA, nu sunt portabile. Conversia unui program
din LA în LM se realizeaza cu ajutorul unui asamblor .
Un LNI contine instructiuni care sunt mai apropiate de utilizator, de
rationamentul uman decât de masina. Unei instructiuni în LNI îi corespunde o
secventa de instructiuni în cod masina.
Exemplu: 1960 - calcule stiintifice: Fortrand
- aplicatii de gestiune: Cobol
1970 - limbaje universale: Pascal, C, Modula, Ada
Din punct de vedere al modului de specificare a problemei LNI-urile
se împart în:
- limbaje imperative: programatorul descrie secventa de operatie ce trebuie
executata pentru rezolvarea problemei;
Exemplu: Pascal, C, Ada, Basic.
- limbaje declarative : programatorul descrie problema si nu modul de
rezolvare a ei;
Notiuni introductive 11

Exemplu: Prolog( operatia de baza este evaluarea de predicate).


LNI-urile suporta programarea structurata si permit de regula
definirea unor tipuri de date structurate specifice aplicatiei.
Diversificarea tipurilor de aplicatie a determinat aparitia de noi
tehnologii de programare. O tehnica noua este programarea pe obiecte. Un
obiect este o entitate de sine statatoare care se compune din date si proceduri
asociate pentru accesarea si preluarea lor. Un obiect poate deriva din alt
obiect mostenind de la acesta componentele si proprietatile sale.
Exemplu: Simula, Small talk -80, C++.
Pentru a executa un program scris într-un LNI pe un anumit CN,
instructiunile acestuia trebuie transformate în instructiuni din LM. Aceste
operatii se realizeaza cu ajutorul unui program special numit translator.
Translatoarele sunt de doua categorii:
- compilatoare - translateaza un program din LNI în LM. Acesta poate fi
executat oricând este necesar. Compilatorul înlocuieste fiecare instructiune din
limbajul sursa cu o secventa echivalenta de instructiuni în LM.

LNI compilator LM

- interpretoare - analizeaza fiecare instructiune din programul în LNI, o


converteste într-o secventa de instructiuni în LM si executa aceasta secventa
apoi trece la urmatoarea instructiune din programul sursa.

1.3. Modelul functional al unui calculator

Un sistem de calcul poate fi reprezentat ca o ierarhie de nivele, fiecare


nivel fiind constituit pe baza nivelelor predecesoare.
Un CN este alcatuit dintr-un ansamblu de resurse fizice ( Hardware) si
un pachet de programe (software de baza), sistem ce realizeaza prelucrarea
datelor pe baza unor algoritmi specificati de utilizator prin programe de baza
( software de aplicatii).
Compilatoarele si interpretatoarele fac parte din softul de baza.
Software-ul inclus în dispozitivele electronice în momentul fabricatiei se
numeste firmware.
Operatiile efectuate prin program pot fi implementate în hardware si
12 Programarea calculatoarelor

reciproc. Cele executate de hardware pot fi simulate prin software. Stabilirea


implementarii unei operatii prin hardware sau software se face în etapa de
proiectare a unui CN si are la baza criterii ca: viteza de executie, pretul de
cost, fiabilitatea.
Exemplu : operatii +,-,*,/ - soft
- hard
Modelul functional al unui sistem de calcul este structurat pe sapte
nivele de ierarhie.

Nivelul 6. Aplicatii
Nivelul 5. Limbaje de nivel înalt
Nivelul 4. Limbaj de asamblare
Nivelul 3. Sistem de operare
Nivelul 2. Calculator fizic
Nivelul 1. Microprograme
Nivelul 0. Circuite si dispozitive

Nivelul 0: - unitatea functionala a unui CN: procesor, memorie, subsistemul de


intrare -iesire, sunt circuite digitale
Nivelul 1: - este alcatuit ca o secventa de microinstructiuni ( microprograme)
- are rolul de a interpreta instructiunile de pe nivelul 2.
- setul de microinstructiuni este mai mic de 50 si corespunde unor operatii
elementare efectuate asupra nivelului 0.
- microprogramele sunt incluse în firmware.
Nivelul 2: - este nivelul masinii conventionale - corespunde codului masina
coduri binare .
-fiecare instructiune masina este interpretata de un microprogram de pe
nivelul1.
- asambloarele si compilatoarele genereaza instructiuni în codul masina.
Nivelul 3: - sistemul de operare este un pachet de programe care creeaza o
interfata între utilizator si calculator si care realizeaza gestiunea resurselor
hardware si software.
- sistemul de operare este alcatuit din trei nivele:
a). nucleul S.O. contine functii care realizeaza operatiile de intrare-
iesire la nivel fizic, alocarea resurse fizice din sistem, tratarea unor situatii de
Notiuni introductive 13

exceptie etc.
b). executivul S.O. contine functii care realizeaza operatii de intrare -
iesire la nivel logic, gestioneaza fisierele de pe disc, planifica activitatile din
sistem, etc. Exemplu: BDOS (Basic Disk O.S.) la MS-DOS
c). supervizorul sau interpretatorul liniei de comanda contine un limbaj
de comenzi si instructiuni care realizeaza interfata cu utilizatorul. Exemplu:
Command.com la MS-DOS
Nivelul 4. - permite scrierea de programe pentru nivelele 1- 3 folosind
nume simbolice pentru operatii si nu cod masina. Translatarea se face de catre
asamblor. Programarea în limbaj de asamblare permite un control direct
resurselor hardware, dar necesita cunoasterea detaliata a arhitecturii
calculatoarelor si a functiilor sistemului de operare.
Nivelul 5. - programele scrise în limbajele de nivel înalt sunt translatate
de compilatoare pe nivelele 3 sau 4, sau sunt interpretate.
Exemplu: Fortan, Basic, Pascal, C, Ada, Modula, Prolog, C++.
Evolutia limbajelor de programare a dus la aparitia unor limbaje care au
instructiuni si structuri de date complexe, dar care au preluat si caracteristici
ale limbajelor de asamblare. Mai mult, în implementarile mai noi ale limbajelor
Pascal si C pot fi introduse direct în program instructiuni în limbaj de
asamblare. Astfel se simplifica sarcina programatorului în implementarea unor
algoritmi complecsi, care nu pot fi implementati eficient utilizând un singur
limbaj de programare.
Nivelul 6. - în prezent exista o mare varietate de aplicatii cum ar fi:
SGBD, sisteme CAD/ CAM, simulatoare, aplicatii de grafica etc.
Pentru lansarea în executie utilizatorul foloseste interpretatorul de comenzi al
S.O.

1.4. Istoricul tehnicii de calcul

- abacul - China 500 î.e.n.


- 1617 - John Napier - calculator mecanic asemanator riglei de
calcul;
- 1642 - Blaise Pascal - masina de adunat;
- 1671 - Gottfried Wilhelm von Leibntz - masina de înmultit;
- 1830 - Charles Babbage
14 Programarea calculatoarelor

- calculator mecanic în sensul modern;


- cartele perforate pentru memorie;
- introduce notiunile de program subprogram, memorie, unitate
aritmetica, date initiale, rezultate intermediare etc.
- 1937 - 1944 - MARK I
- primul calculator electromecanic
- echipat cu relee, selectoare mecanice si cablaje.
- 1943 - 1946 - ENIAK I
- primul calculator electronic;
- Universitatea din Pensylvania - J.P.Eckert si J.W.Mauchly consultant
John won Newman
- 3000 tuburi electronice;
- avea mai multe unitati de calcul în paralel si o singura unitate
centrala;
- noutatea consta în stocarea în aceeasi memorie a programului si
a datelor pentru o modificare mai usoara.
- 1945 - EDVAC ( Electronic Discrete Variable Automatic Computer )
- unitatea de calcul integrata;
- programele se pastreaza în memorie.
- 1945 - John von Newman a realizat " Prima schita de raport asupra
EDVAC " în care se definesc unitatile unui CN ( vezi fig.1.1 ).
- 1951 - UNIVAC I : - Primul calculator comercial.
Pe parcursul dezvoltarii CN-urile s-au remarcat câteva caracteristici care au
determinat clasificarea CN-urilor în generatii:
1. Generatia I -( 1946 - 1952 ):
- tuburi electronice plus memorie de tambur;
- structura de tip serie;
- set de 10 -20 instructiuni simple;
- performanta redusa ;
- cablaj prin fire;
- viteza de calcul ( sute de operatii / sec.);
- programe scrise în cod masina.
2. Generatia a -II- a - ( 1952 - 1963 );
- memorie de ferita ; timp de acces = 0,02 sec.
- dispozitive semiconductoare ( diode si tranzistori ) ;
Notiuni introductive 15

- timp înmultire / timp adunare = 10/s


- cablaj imprimat;
- echipamente periferice, tambur magnetic, banda magnetica, disc
magnetic.
- apar limbajele: Fortran ( 1956), Algol (1958), Cobol ( 1959).
3. Generatia a - III- a - (1962 - 1975 );
- utilizarea circuitelor integrate SSI ( 10 tranzistoare / chip)
- memorie semiconductoare timp de acces = 0,001 s;
- timp înmultire / timp adunare = 2,5 /s;
- memorie externa de mare capacitate ( > 1 Mo );
- limbaje Fortran IV, LSP, ALGOL / 68;
- noi periferice.
- generatia 3,5;
- circuite LSI, memorie cu circuite integrate, microprograme.
4. Generatia a - IV- a - ( 1971 - azi );
- circuite VSI; VLSI, timp de acces = 10 ns
timp comutatie = 1 ns
- memorie: MOS, bule magnetice;
- noi echipamente periferice;
- retele;
- interconectarea calculatorului cu telecomunicatiile.
5. Generatia a - V- a - Japonia 1980;
- interfata inteligenta - limbaje naturale, grafica;
- masina de inferenta;
- baze de cunostinte;
- circuite ULSI, 3 D;
- retele pe scara larga.
16 Programarea calculatoarelor

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