Sunteți pe pagina 1din 19

Capitolul II.

Structura sistemelor de calcul (continuare)


Structura unui sistem de calcul
 echipamente – hardware
 programe – software

Structura software

Limbaj de programare - mijloc de comunicare între un operator uman şi un sistem de calcul

Program - descrierea operaţiilor necesare rezolvării de către sistemul de calcul a unei aplicaţii într-un limbaj de
programare

Instrucţiune - comandă transmisă calculatorului, ce descrie prelucrările efectuate asupra datelor.

Limbaj de programare - set bine definit de expresii şi reguli (sau tehnici) valide de formulare a instrucţiunilor pentru un
calculator.
Orice limbaj de progamare este caracterizat prin :
- sintaxă
- semantică
- pragmatică.

Clasificarea limbajelor de programare


- limbaje de nivel coborât :
- limbaje maşină
- limbaje de asamblare
- limbaje de macroasamblare
- limbaje de nivel înalt
Exemple de limbaje de asamblare : pentru microprocesoarele Intel (8086, 80284, 80386), pentru microprocesorul Z80,
pentru familia de uP Motorola 6800

Exemple de limbaje de nivel înalt : FORTRAN, BASIC, Pascal, C, C++, C#, Java, Ada, Prolog, Lisp, Python.

Scurt istoric
 1940 –limbaje maşină
 1950 – limbaje de asamblare
– prima versiune de Fortran (Formula Translator)
 1960 – diversificarea limbajelor de nivel înalt
- Cobol (1960) Common Bussines Oriented Language
- Lisp (1960) List Processing
- Algol (1963) Algorithmic Language
- Basic (1963) Beginners All-purpose Symbolic Instruction Code
 1970 – apar concepte noi : portabilitate, programare structurată, programare modulară
- Pascal (1971 ) - Niklaus Wirth, ETH Zurich
- C (1972) - Dennis Ritchie, Bell Labs
 1980 – apar conceptele de programare orientată obiect, programare funcţională
- Ada (1980 ) - Jean Ichbiah of CII Honeywell Bull
- C ++(1980) -Bjarne Stroustrup, Bell Labs
 1990 – apare conceptul de programare distribuită
- Java (1996 ) -James Gosling, Sun Microsystems
- C# (1999) - Anders Hejlsberg, Microsoft.
 2000 – apar conceptele de programare genetică precum şi cel de bio-computing
Programe sursă - programe scrise în limbaje de programare simbolice .

Asambloare - programele care realizeaza translarea (traducerea) programelor sursă scrise în limbaje de asamblare

Compilatoare - programele care realizeaza translarea (traducerea) programelor sursă scrise în limbaje de nivel înalt

În urma translatării se obţine un program obiect ce urmează a fi prelucrat în continuare.

Editoare de legaturi - Modulele obiect rezultate fie în urma asamblării, fie în urma compilării sunt reunite (legate) într-
un singur modul în aşa-numita fază de editare de legături (link editare), rezultând astfel programul executabil,
care odată încărcat în memorie, poate fi executat de către unitatea centrală.

În cazul în care compilatorul sau editorul de legături semnalează erori, programul sursă trebuie modificat şi procesul de
compilare/editare de legături reluat.

În concluzie :
• Un program executabil este reprezentat de un set de instrucţiuni maşină, care, la rândul lor, sunt reprezentate prin
secvenţe de biţi
• Pentru a putea fi rulat, un program executabil trebuie încărcat în memoria internă
• La orice moment de timp se spune că un calculator se află într-o anumită stare. Starea este caracterizată de un aşa
numit pointer de instrucţiune care indică (pointează) spre instrucţiunea care se execută. Practic este vorba despre
adresa instrucţiunii care se execută şi care este memorată în registrul Program Counter.
• Modalitatea de execuţie a unui grup de instrucţiuni este descrisă de o aşa-numită structură de control
Biblioteci si/sau
alte module
obiect

Compilator Editor de
Editor
legaturi
(creaza si modifica (creaza cod
obiect) (creaza programul
programul sursa)
executabil) Fisier executabil

Figura 1. Etapele prelucrării unui program sursă


Software-ul unui sistem de calcul se poate clasifica în :
- software de sistem (de bază)
- software de aplicaţie

Software de sistem se poate clasifica în :


- sistemul de operare (de exploatare)
- sistemul de programare

Sistemul de operare are următoarele funcţii :


- realizează controlul operaţiilor de intrare-ieşire
- realizează comunicarea om-maşina într-un limbaj convenabil materializat prin comenzi ale sistemului de
operare
- realizează gestiunea resurselor hardware şi software:
- permite executarea programelor existente şi dezvoltarea altora noi
- controlul încărcărilor în memorie
- controlul lansării în execuţie şi al încetării activităţii pentru programele utilizator
- alocă programelor resursele sistemului (memorie, dispozitive periferice)
- asigură tratarea erorilor de funcţionare a sistemului
Figura 2. Sistemul de operare ca interfaţă între utilizator şi sistemul de calcul

Exemple de sisteme de operare: DOS, PC-DOS, MS-DOS, Linux, Mac OS , Solaris, UNIX ,Windows, Android

Sistemul de operare conţine :


- interfaţa
- nucleu (kernel)
Nucleul unui sistem de operare conţine următoarele componente :
- administratorul de fişiere (file manager)
- driverele de dispozitiv (device drivers)
- administratorul de memorie (memory manager)
- secvenţiatorul (sheduler)
- supervizorul (dispatcher)
Clasificarea sistemelor de operare
 SO bazate pe interfaţă grafică GUI - Graphical User Interface
- Windows XP
- Windows 98
- Windows CE

 SO multi-utilizator – permit mai multor utilizatori să utilizeze acelaşi computer în acelaşi timp sau la momente
de timp diferite
- Linux
- Unix
- Windows 2000

 SO multiprocesor - capabile să utilizeze mai multe procesoare


- Linux
- Unix
- Windows 2000

 SO multitasking – capabile să execute mai multe procese software în acelaşi timp


- Unix
- Windows 2000

 SO multithreading - permit ca diferite părţi ale unui program să ruleze concurent (în acelaşi timp)
- Linux
- Unix
- Windows 2000
Sistemul de operare
DOS

Procesor
BIOS
de comenzi DOS de baza
(SO)
consola

BIOS
(ROM)

Periferice

Figura 3. Sistemul de operare DOS


Sistemul de programare conţine :

- (macro) asambloare
- procesoare de limbaj (compilatoare, interpretoare)
- biblioteci de programe sau proceduri (biblioteci matematice, grafice)
- editoare de legături
- încărcătoare
- depanatoare
- programe pentru gestiunea fişierelor
- medii de programare

Un mediu de programare - IDE ( Integrated Development Environment) este un ansamblu unitar de programe, de sine
stătător, ce asistă utilizatorul în toate etapele necesare scrierii şi execuţiei unui program (editare, compilare, editare de
legături, încărcare, plus programe de manipulare a fişierelor şi depanatoare.
Sumarul Capitolului II

 Proprietăţile calculatoarelor electronice


 Structura unui sistem de calcul conform arhitecturii von Neumann
 Caracteristicile de bază ale unităţilor funcţionale
 Definiţia unui limbaj de programare
 Definiţia unui program
 Definiţia unei instrucţiuni
 Clasificarea limbajelor de programare
 Caracteristicile limbajelor de nivel coborât (exemple)
 Caracteristicile limbajelor de nivel înalt (exemple)
 Definiţia unui limbaj simbolic
 Definiţia unui program sursă
 Etapele prelucrării unui program sursă în vederea execuţiei sale
 Funcţiile de bază ale unui sistem de operare
 Structura sistemului de programare
Capitolul III. Proiectarea algoritmilor
Algoritm – descrie clar, concis şi fără ambiguităţi, printr-o secvenţă finită de operaţii elementare, rezolvarea unei
categorii de probleme în cadrul căreia o anumită problemă este inclusă prin setul de date iniţiale care o specifică .
Observaţie - cuvântul algoritm are la origine numele matematicianului persan Al-Khwarizmi

Proprietăţile algoritmilor
- precizie
- claritate
- conciziune
- interpretabilitate
- generalitate
- eficacitate (finitudine)

Procesul de abstractizare implică


- abstractizarea datelor
- abstractizarea procedurală

Clasificarea datelor (după tip)


- numerice
- logice
- alfanumerice

Clasificarea datelor (după poziţia în lanţul informatic)


- de intrare
- de ieşire

Clasificarea datelor (după posibilităţile de modificare pe parcursul execuţiei sau de la o execuţie la alta)
- constante
- variabile
Soluţionarea unei probleme folosind un sistem de calcul

Formularea problemei
Problemă • foloseşte "limbaje naturale"
• poate fi ambigă, imprecisă
Proiectarea software-ului :
alegerea algoritmului şi a
structurii de date Algoritm
Algoritm • set ordonat, finit, de paşi
executabili, descrişi fără echivoc
• precis, interpretabil, general
Programarea:
Utilizarea unui limbaj de
programare pentru Program
Program implementarea solutiei
• exprImă un algoritm folosind un
limbaj de programare (de nivle
înalt sau de nivel coborât)
Compilare (Asamblare)
/Link editare:
conversia la cod masina Arhitectura Setului de instrucţiuni
Arhitectura (format executabil) Instruction Set Architecture (ISA)
• specifică setul de instrucţiuni
Setului de (maşină) pe care le poate executa o
unitate centrală
instrucţiuni • specifică tipurile de date şi modurile
de adresare

Figura 4. Secvenţă sistematică de transformări între diferite nivele de abstractizare


Principalele etape necesare pentru rezolvarea unei aplicaţii cu ajutorul unui sistem de calcul sunt :
- analiza amănunţită a problemei
- alegerea metodei numerice
- algoritmizarea problemei
- descrierea algoritmului
- editarea programului sursă
- compliarea
- editarea de legături
- încărcarea
- execuţia
- testarea

Descrierea algoritmilor se face utilizând


- scheme logice (metodă ce foloseşte simboluri grafice) numite şi organigrame
- limbajul pseudocod (metodă informală ce foloseşte aşa-numite cuvinte cheie)

Limbajul pseudocod foloseşte cuvinte cu înţeles prestabilit, numite şi enunţuri standard, care sunt asociate structurilor
simple şi respectiv celor de control.

Se pot folosi, în faze intermediare ale descrierii algoritmului, şi alte cuvinte, care se constituie însă în aşa-numite enunţuri
nestandard, prefixate cu simbolul asterisc (*).
III.1. Noţiuni de programare structurată
Programarea structurată - este o paradigmă a programării informatice apărută ca un model nou în scopul de a crea noi
tehnici capabile să dezvolte în mod eficient programe. Conceptele de bază au fost enunţate în 1966 prin aşa-numita
Teoremă de structură, publicată într-o lucrare de Böhm and Jacopini.

Modelul simplificat al unui sistem ce calcul presupune operarea cu o maşină capabilă să execute doar 5 operaţii elementare:
- pornirea
- citirea
- atribuirea
- scrierea
- oprirea
Descrierea acestor operaţii într-un algoritm se face folosind corespunzător 5 structuri simple (elementare).

Ordinea în care se execută acţiunile (operaţiile) într-un sistem de calcul este descrisă cu ajutorul aşa-numitelor structuri
de control.

Principiul programării structurate : orice algoritm având o singură intrare şi o singură ieşire poate fi reprezentat ca o
combinaţie de structuri simple şi de trei structuri de control :
- secvenţa
- decizia
- ciclul cu test iniţial

Fără a contraveni principiilor programării structurate, se tolerează si următoarele structuri de control (ce asigură o
descriere mai compactă a algoritmilor)
- ciclul cu test final
- ciclul cu contor
- selecţia
Avantajele stilului structurat în programare sunt :
 reducerea erorilor de programare;
 lizibilitate sporită a programelor;
 facilităţi suplimentare de depanare a programelor;
 facilităţi suplimentare de mentenanţă a programelor;
 costuri reduse.
Salut Salut
camp curent camp curent camp curent
-1.234 -1.234
A

1000 #

Electronica

cap de citire cap de scriere cap de citire/scriere

banda de intrare banda de iesire banda de intrare/iesire

a) b) c)
nume variabila
date de intrare

a valoare viteza

-123 0.95

F
nume variabila

valoare
nume caracter
rezultate

Ioan @

d) e)
Figura 5. Modele pentru unităţile funcţionale ale unui sistem de calcul :
a) unitate de intrare, b) unitate de ieşire, c) unitate de memorie externă, d) unitate de memorie internă, e) unitate de calcu
Figura 6.
REPREZENTAREA STRUCTURILOR SIMPLE
SI A BLOCULUI DE EVALUARE

SCHEME LOGICE PSEUDOCOD

START start

STOP stop

<-- atribuie

citeste
CITESTE

scrie
SCRIE

(bloc de evaluare)

DA NU
corpul ciclului

* Secventa
DA expresie_conditie NU

* Secventa_1 * Secventa_2 NU DA
expresie_conditie

a) Decizia c) Ciclul cu test final

contor <-- valoare_initiala

corpul ciclului
NU expresie_conditie DA
NU contor <= corpul ciclului
valoare_finala DA

* Secventa
* Secventa

contor <-- contor + pas

b) Ciclul cu test initial d) Ciclul cu contor


Figura 7. Principalele structuri de control utilizate în programarea structurată
III.2. Principalele structuri de control ilustrate prin intermediul unor exemple sugestive

1. Secvenţa

Enunţ : Dându-se valorile a,b,c, preluate de la consolă, se cere să se calculeze şi să se afişeze valorile expresiilor :

b 2  ac
E1 
2
b 2  ac
E2   ab
2
Soluţie :

start
citeşte a,b,c
atribuie E1 ← (b*b – a*c)/2
atribuie E2 ← E1- a*b
scrie E1,E2
stop

DEFINIŢIE : Secvenţa reprezintă un şir de acţiuni care se execută una după alta, în ordinea în care au fost
scrise, efectul fiecărei acţiuni cumulându-se efectului global al acţiunilor ce o preced.

In concluzie, secvenţa poate cuprinde o înşiruire de structuri simple şi sau alte structuri de control, formând astfel ceea ce
se numeşte o structură compusă.

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