Sunteți pe pagina 1din 7

Universitatea “Politehnica” din Bucuresti

Facultatea de Electronica, Telecomunicatii si


Tehnologia Informatiei
Bibliografie
[1] Curs,
Programarea Calculatoarelor
[2] C. Dan, D. Burileanu, “Introducere în programarea
(limbajul C) calculatoarelor. Limbajul C”, Editura Printech, Bucureşti, 2001.

[3] D. Burileanu, C. Dan, M. Pădure, “Programare în C.


Curs 1 – Introducere Culegere de probleme”, Editura Printech, Bucureşti, 2004.

[4] Îndrumarul de laborator (disponibil la laborator),


Ş.l. Bogdan IONESCU
[5] Orice altă carte de C/C++, Internet !
Prof. Dragoş BURILEANU
Prof. Claudius DAN

2
2010-2011 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011

Cuprins

1.1. Sisteme de calcul (modul de funcŃionare) 1.1. Sisteme de calcul


(modul de funcŃionare)
1.2. Hardware şi Software

1.3. Limbaje de programare (generalităŃi)

3 4
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 1/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 2/35

Procesorul: UC + UP
Sistem de calcul = echipament electronic destinat
CPU – Central Processing Unit
prelucrărilor complexe ale informaŃiei.

• UP = unitatea de prelucrare, efectuează operaŃii simple


Procesor (aritmetice şi logice) asupra unor operanzi (date) preluate
UC UP (UCP – CPU)
Magistrala de din memorie; rezultatele  în memorie.
date (BUS)
• UC = unitatea de control, coordonează funcŃionarea
celorlalte blocuri pe baza unor comenzi (instrucŃiuni din mem.)

parte integrantă a informaŃiei transmise


Memorie Memorie Memorie Dispozitive Dispozitive
Dispozitive calculatorului de către utilizator.
I/O
externă internă IN OUT
microprocesor = o singură capsulă de
circuit integrat. Ex. Intel 80486
5 6
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 3/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 4/35

1
Memoria: internă + externă. Memoria.
• Memoria internă = o colecŃie de
celule de memorare organizată ca o > Organizarea datelor:
secvenŃă de cuvinte (word) binare (numere). în general cuvinte pe 8 biŃi = octet sau byte.

Un bit = 0 sau 1, un cuvânt = 8 biŃi, ex.: 00000001, 10101010 > Prefixele folosite pentru a desemna capacitatea memoriei:
1 byte = 8 biŃi
> Memoria este organizată matricial, fiecare locaŃie este 1 kilo-byte (kB) = 1024 bytes = 210 bytes
identificată cu un număr de ordine numit şi adresă. 1 mega-byte (MB) = 1024 kB = 220 bytes
1 giga-byte (GB) = 1024 MB = 230 bytes
> Din punct de vedere funcŃional (nu fizic) memoria este de
1 terra-byte (TB) = 1024 GB = 240 bytes etc.
două tipuri:
- memorie de date: conŃine operanzi, rezultate şi rezultate parŃiale, > AtenŃie: 1Mb ≠ 1MB. De regulă capacitatea de transfer a
- memorie de program: conŃine instrucŃiunile (comenzile) reŃelelor este exprimată în Mb (mega-biŃi):
care asigură prelucrarea corespunzătoare a datelor. 1Mb = 220 biŃi, 1MB = 220 bytes = 220x8 biŃi
7 8
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 5/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 6/35

Memoria. Memoria.
> Din punct de vedere fizic, memoria • Memoria externă = un suport
internă este de două tipuri: extern de stocare a informaŃiei. De
- ROM – Read Only Memory: este o memorie permanentă. regulă este folosită pentru a păstra cantităŃi mari de informaŃie.
ConŃinutul acesteia rămâne intact chiar în lipsa alimentării Exemple:
cu curent. Nu poate fi scrisă de programe. - FD (floppy disk drive): 3½-inch, 1.44MB
- RAM – Random Access Memory: este o memorie volatilă al - CD-ROM (compact disk - read only memory): <700MB
cărei conŃinut se pierde în momentul în care se opreşte - HD (hard disk drive): ~500GB
alimentarea acesteia cu curent. Este o memorie de lucru. - FD (flash drive): <256GB, etc.

Ex. EPROM Intel 1702 Ex. Kingmax DDR 512MB


9 10
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 7/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 8/35

Dispozitivele I/O (In/Out). Dispozitivele I/O (In/Out).

• Dispozitivele de ieşire = dispozitive


ce permit transmiterea către operator a
• Dispozitivele de intrare = dispozitive electronice ce permit
informaŃiei (rezultate, date, etc.).
introducerea informaŃiei într-un sistem de calcul (date şi/sau
Exemple: monitorul (informaŃie vizuală), imprimanta (informaŃie
programe). Permit interacŃia om-maşină.
pe suport fizic), placa de sunet (informaŃie audio), etc.
Exemple: tastatura, mouse-ul, microfonul (sunet), camera WEB
> Există bineînŃeles şi dispozitive mixte, In/Out, de exemplu:
(sunet-imagine), tableta grafică (mişcări ale mâinii), scanner-ul
placa de reŃea (primeşte şi transmite informaŃii), Fax Modemul,
(documente fizice), scanner de amprentă (fingerprint), etc.
memoria externă poate fi văzută ca un astfel de dispozitiv.

11 12
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 9/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 10/35

2
Magistrala de date (BUS). Unitatea de prelucrare (UP):
conŃine circuite logico-aritmetice
şi registre de memorie.

> Circuitele de legătură dintre unitatea centrală de prelucrare, > Registrele sunt tot locaŃii de memorie ce sunt interconectate
memoria internă şi dispozitivele periferice formează “strâns” cu circuitele logico-aritmetice (de regulă pe acelaşi
magistrala de date (BUS). integrat pentru a fi accesate rapid).

> OperaŃiile ce pot fi efectuate sunt:


> BUS-ul este astfel un sub-sistem ce transferă informaŃia - operaŃii aritmetice: +, -, x, /,
în interiorul sistemului de calcul, între componentele acestuia. - operaŃii logice: conjuncŃie (ŞI), disjuncŃie (SAU), negaŃie:
(13>10) ŞI (5<3) = 0 (Fals)
(13>10) SAU (5<3)= 1 (Adevărat)
NOT (10>5)= 0 (Fals)
13 14
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 11/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 12/35

OperaŃiile ce pot fi efectuate Unitatea de control (UC): corelează


(continuare): operaŃiile elementare ale fiecărui
- comparaŃii: =, ≠, <, >, ≤, ≥, bloc în cadrul executării unei operaŃii
- deplasări ale biŃilor de pe o poziŃie pe alta în cadrul aceluiaşi mai complexe.
cuvânt binar: - fiecare operaŃie de executat înseamnă o secvenŃă unică de
27 26 25 24 23 22 21 20 semnale de control generate de UC.
9 (baza 10)=23+20  0 0 0 0 1 0 0 1 (binar)
- fiecare operaŃie se execută secvenŃial.
128 = ??? dar 255 = ??? ~ x2nr.biŃi shift
UC determină care operaŃie elementară trebuie executată
9 18
shift left (0 0 0 0 1 0 0 1 ) = 0 0 0 1 0 0 1 0 pe baza unui cod binar citit din memorie.
~ /2nr.biŃi shift  acesta este decodificat (recunoscut) de UC iar apoi este
9 4 declanşată secvenŃa tipică de semnale de control ce conduc
shift right (0 0 0 0 1 0 0 1 ) = 0 0 0 0 0 1 0 0 ulterior la execuŃia operaŃiei dorite.
15 16
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 13/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 14/35

OperaŃiile se înlănŃuie astfel:

operaŃie de executat 
1.2. Hardware - Software
cod binar (instrucŃiune) 
decodificare de către UC (recunoaştere) 
declanşare secvenŃă tipică de semnale de control 
se execută operaŃia dorită

17 18
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 15/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 16/35

3
hardware = ansamblul structurii fizice a sistemului de calcul.
După cum am menŃionat, pentru execuŃia unei anumite sarcini
(job) sistemul de calcul are nevoie de o succesiune de
instrucŃiuni (coduri binare)
 declanşează o secvenŃă de operaŃii elementare efectuate
de blocurile constituente.
program = secvenŃă de instrucŃiuni ce sunt recunoscute Ex. PC clasic Ex. DSP – Digital Signal Processor

de sistemul de calcul şi pot fi executate de acesta. software = mulŃimea programelor necesare sistemului de
 sunt organizate logic şi coerent după un anumit algoritm. calcul pentru a îndeplini o serie de sarcini.

algoritm = un procedeu (inteligent) de combinare a unor operaŃii Exemple: sisteme de operare (Windows, Linux), procesoare
standard în scopul realizării unei anumite prelucrări mai de text (Word, WinEdt), medii de dezvoltare (Borland Builder,
complexe a informaŃiei. Matlab), antiviruşi, prelucrare de imagini, etc.

19 20
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 17/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 18/35

O primă abordare a soluŃionării unei probleme de calcul


> FuncŃionarea calculatorului trebuie privită prin prisma dualităŃii ! folosind un sistem de calcul
hardware – software.
EnunŃ: să se scrie un algoritm care citeşte două numere de la
> Acestea nu îşi au rostul considerate separat: tastatură, le adună şi afişează rezultatul pe monitor.
algoritm
- un sistem hardware fără sistem de operare nu are nici o
valoare fiind inutilizabil. De asemenea un sistem hardware citirea prelucrarea scrierea
STOP
fără software adecvat este nerentabil. informaŃiei informaŃiei informaŃiei

Exemplu: degeaba procesorul prelucrează date pe 64 biŃi


dacă programele lucrează pe 32 biŃi),
-citeşte primul nr. - preia cele două nr. - preia rezultatul din
-stochează valoarea din registrele UP memorie
- un pachet de programe nu-şi are sensul fără sistemul fizic -citeşte al doilea nr. -efectuează + în UP -afişează valoare pe
hardware (este mai folositor în bibliotecă). -stochează valoare -stochează rezultatul ecran

21 22
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 19/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 20/35

Programul este “intermediarul” dintre problema ce trebuie


rezolvată, formulată în limbaj natural, şi activitatea concretă a
sistemului de calcul, formulată în limbaj maşină.

1.3. Limbaje de programare Limbajul de programare = limbaj formal în care se scrie


programul. Ideal, cât mai intuitiv pentru utilizator dar şi cât mai
(generalităŃi) rapid.

date: obiectele programelor, valori numerice,


valori textuale, date complexe, etc.

instrucŃiuni: codifică operaŃiile ce trebuiesc


executate de sistem, ex.: printf (scriere pe
dispozitivul de ieşire) etc.

23 24
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 21/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 22/35

4
Datele – obiectele programelor Datele – obiectele programelor (continuare)

- date elementare: a căror structură nu poate fi modificată de > Datele sunt desemnate în cadrul programelor prin intermediul
către utilizator. variabilelor şi a constantelor (caz particular de variabilă).

> Acestea sunt de mai multe tipuri: numerice (întregi, reale), variabila = fizic reprezintă o zonă de memorie ce găzduieşte
logice (booleene 0 sau 1), alfanumerice (caractere, text). anumite date.
- date structurate: date complexe (grupuri de date elementare), - variabilele sunt desemnate prin nume simbolice denumite
ce poartă informaŃie atât prin valoare cât şi prin structură. şi identificatori.

> Acestea sunt de mai multe tipuri: tablouri, structuri, clase. - variabilele sunt de un anumit tip ce indică tipul valorilor
conŃinute de aceastea precum şi structura acestora (simplă,
1 / 9 1 / 9 1 / 9 Nume (alfanumeric) tablou, structură de date, etc.)
1 / 9 1 / 9 1 / 9 structură Vârstă (întreg)
  “persoana” Greutate (real) Exemplu: int x;  identificator=“x”, tip de date=întregi (int);
1 / 9 1 / 9 1 / 9 …
la o anumită adresă se va aloca spaŃiu pentru valorile lui x.
25 26
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 23/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 24/35

Instructiunile – componenta funcŃională Limbaje de programare


Pot fi: > Există o mare varietate de limbaje de programare. Acestea
- declaraŃii: prin care se definesc identificatorii şi atributele diferă unele de altele în funcŃie de următoarele aspecte:
variabilelor.
- apropierea de limbajul masină,
int x (de acum înainte “x” desemnează o variabilă întreagă)
float y=3.1 (de acum înainte “y” este real şi are valoarea 3.1) - problemele care le rezolvă,

- modul în care se stabileşte asocierea nume


- comenzi: prin care se realizează prelucrarea efectivă a
simbolic – variabilă,
datelor conŃinute în variabile şi constante.
1. comenzi elementare: atribuirea de valori, citirea, scrierea, - facilităŃile oferite utilizatorului,
apelarea de funcŃii, etc. - modul în care sunt apelate prelucrările
2. comenzi structurate: decizia, execuŃia în buclă, etc.
27 28
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 25/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 26/35

Limbaje de programare – scurt istoric Limbaje de programare – scurt istoric (continuare)

~1947 primele limbaje de programare sunt limbajele maşină; 1954 FORTRAN


gamă de instrucŃiuni minimă, apropiată de hardware
 dificultatea de scriere a programelor complexe Revizuit în 1978 şi 1990, încă folosit de comunitatea ştiinŃifică
datorită eficienŃei acestuia şi a bibliotecilor de funcŃii de
cod binar cod hexazecimal prelucrare disponibile (cel mai longeviv limbaj).
10001011 8B
01000101 45 citire număr întreg în registrul AX
READ INPUT TAPE 5, 501, IA, IB, IC
00001010 0A 501 FORMAT (3I5)
00000011 03
citire număr întreg şi adiŃionare
01000101 45 IF (IA) 777, 777, 701
în registrul AX
00010100 14 701 IF (IB) 777, 777, 702
702 IF (IC) 777, 777, 703
1954 FORTRAN (John Backus IBM), programare de nivel 703 IF (IA+IB-IC) 777,777,704
înalt, permitea folosirea numelor de variabile, expresii complexe 704 IF (IA+IC-IB) 777,777,705
şi proceduri (sub-programe). 705 IF (IB+IC-IA) 777,777,799
 ştiinŃific (FORmula TRANslating) 777 STOP 1
29 30
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 27/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 28/35

5
Limbaje de programare – scurt istoric (continuare) Limbaje de programare – scurt istoric (continuare)

1958 ALGOL: folosire restricŃionată (limbaj sub licenŃa), 1970 Pascal (Niklaus Wirth) dezvoltat în scopul predării
concurenŃă FORTRAN. programării structurate şi modulare.

1960 COBOL destinat aplicaŃiilor de gestiune, sintaxa cât mai Preia punctele forte ale limbajelor COBOL, FORTRAN şi ALGOL
apropiată de limba engleză.  limbaj “elegant”, simplu, înlocuieşte BASIC ca limbaj
ADD YEARS TO AGE  age = age + years
de iniŃiere.
program Hello(output);
1963 BASIC (Beginner's All-purpose Symbolic Instruction Code), var
în principal cu scop educativ. a:string;
> În ciuda diversităŃii reduse de instrucŃiuni devine foarte popular begin
datorită uşurinŃei utilizării acestuia. write(‘introduceti numele: ');
readln(a);
> Programe nestructurate  mentenanŃă dificilă. writeln('salut ', a);
end.
31 32
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 29/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 30/35

Limbaje de programare – scurt istoric (continuare) Limbaje de programare – scurt istoric (continuare)

1970 C (Dennis Ritchie, laboratoarele Bell) dezvoltat în scopul 1980-1990 limbaje interpretate sau semi-interpretate motivate
programării sistemului de operare UNIX. de dezvoltarea Web (dezvoltare de pagini Web dinamice,
aplicaŃii client-server, etc.)
> Limbaj de programare “puternic”. Datorită folosirii pointerilor
permite apropierea de limbajul maşină precum şi accesul la Exemple: Perl (Larry Wall, 1987), Tcl (John Ousterhout, 1988),
dispozitivele hardware ale sistemului, rămânând totuşi un Python (Guido van Rossum, 1990), PHP şi Java (Sun
limbaj de programare de nivel înalt. Microsystems, 1996) …

1980 Smalltalk-80 (iniŃial Alan Kay 1969, ulterior Xerox) motivat 1995 Common-LISP: primul limbaj orientat obiect standardizat
de necesitatea de programe tot mai complexe; propune o nouă de ANSI - American National Standards Institute.
direcŃie de programare = programarea orientată pe obiecte.
2000 C# (Microsoft): permite folosirea simultană a mai multe
1985 C++ (laboratoarele Bell) extensie obiect orientată a tipuri de programare (multi-paradigm).
limbajului C, instrucŃiuni noi, programare mai eficientă, viteză de

lucru crescută.
33 34
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 31/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 32/35

Paradigme de programare (moduri de programare) Paradigme de programare (continuare)

• Programare imperativă: în care calcul înseamnă o secvenŃă • Programare logică: în care calcul înseamnă o serie de
de comenzi (FORTRAN, C, Pascal). declaraŃii logice (Prolog).
Exemplu: citeşte X, citeşte Y, calculează X*Y, pune rezultatul Exemplu: Cezar este om, ToŃi oamenii sunt muritori.
în variabila Z.  Cezar este muritor.

• Programare funcŃională: în care calcul înseamnă evaluarea • Programare concurentă: în care calculul este divizat în mai
unor funcŃii în sensul matematic (Lisp, Phyton). Programele sunt multe sarcini ce apoi sunt executate în paralel.
grupuri de funcŃii (sub-programe).
Notă: Un anumit limbaj de programare poate oferi mai multe
• Programare obiect orientată: definirea de obiecte care moduri de programare, acestea nu sunt exclusive.
interacŃionează între acestea prin intermediul mesajelor
(C++, Java). Exemplu: C++, programare functională, obiect orientată,
concurentă, etc.
35 36
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 33/35 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 34/35

6
Sfârşitul Cursului 1

37
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 35/35

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