Sunteți pe pagina 1din 7

Universitatea Politehnica din Bucureti

Facultatea de Electronic, Telecomunicaii i


Tehnologia Informaiei

Bibliografie
[1] Curs,

Programarea Calculatoarelor
(limbajul C)

[2] C. Dan, D. Burileanu, Introducere n programarea


calculatoarelor. Limbajul C, Editura Printech, Bucureti, 2001.
[3] D. Burileanu, C. Dan, M. Pdure, Programare n C.
Culegere de probleme, Editura Printech, Bucureti, 2004.

Curs 1 Introducere

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


Prof. Bogdan IONESCU

[5] Orice alt carte de C/C++, Internet !

2016-2017

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

Cuprins
1.1. Sisteme de calcul
(modul de funcionare)

1.1. Sisteme de calcul (modul de funcionare)


1.2. Hardware i Software
1.3. Limbaje de programare (generaliti)

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

1/35

UP

UP = unitatea de prelucrare, efectueaz operaii simple


(aritmetice i logice) asupra unor operanzi (date) preluate
din memorie; rezultatele
n memorie.

Procesor
(UCP CPU)

Magistrala de
date (BUS)

Memorie

Memorie
extern

2/35

Procesorul: UC + UP
CPU Central Processing Unit

Sistem de calcul = echipament electronic destinat


prelucrrilor complexe ale informaiei.

UC

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

UC = unitatea de control, coordoneaz funcionarea


celorlalte blocuri pe baza unor comenzi (instruciuni din mem.)

Memorie
intern

Dispozitive Dispozitive
IN
OUT

Dispozitive
I/O

parte integrant a informaiei transmise


calculatorului de ctre utilizator.
microprocesor = o singur capsul de
circuit integrat.

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

3/35

Ex. Intel 80486


6

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

4/35

Memoria: intern + extern.

Memoria.

Memoria intern = o colecie de


celule de memorare organizat ca o
secven de cuvinte (word) binare (numere).

> Organizarea datelor:


n general cuvinte pe 8 bii = octet sau byte.

Un bit = 0 sau 1, un cuvnt = 8 bii, ex.: 00000001, 10101010

> Prefixele folosite pentru a desemna capacitatea memoriei:


1 byte = 8 bii
1 kilo-byte (kB) = 1024 bytes = 210 bytes
1 mega-byte (MB) = 1024 kB = 220 bytes
1 giga-byte (GB) = 1024 MB = 230 bytes
1 terra-byte (TB) = 1024 GB = 240 bytes etc.

> Memoria este organizat matriceal, fiecare locaie este


identificat cu un numr de ordine numit i adres.
> Din punct de vedere funcional (nu fizic) memoria este de
dou tipuri:
- memorie de date: conine operanzi, rezultate i rezultate pariale,
- memorie de program: conine instruciunile (comenzile)
care asigur prelucrarea corespunztoare a datelor.

> Atenie: 1Mb 1MB. De regul capacitatea de transfer a


reelelor este exprimat n Mb (mega-bii):
1Mb = 220 bii, 1MB = 220 bytes = 220x8 bii

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

5/35

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

6/35

Memoria.

Memoria.

> Din punct de vedere fizic, memoria


intern este de dou tipuri:

Memoria extern = un suport


extern de stocare a informaiei. De
regul este folosit pentru a pstra cantiti mari de informaie.

- ROM Read Only Memory: este o memorie permanent.


Coninutul acesteia rmne intact chiar n lipsa alimentrii
cu curent. Nu poate fi scris de programe.
- RAM Random Access Memory: este o memorie volatil al
crei coninut se pierde n momentul n care se oprete
alimentarea acesteia cu curent. Este o memorie de lucru.

Ex. EPROM Intel 1702

Exemple:
- FD (floppy disk drive): 3-inch, 1.44MB
- CD-ROM (compact disk - read only memory): <700MB
- HD (hard disk drive): 500GB, etc.
- FD (flash drive): 256GB, etc.

Ex. Kingmax DDR 512MB


9

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

7/35

Dispozitivele I/O (In/Out).

10

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

Dispozitivele I/O (In/Out).


Dispozitivele de ieire = dispozitive
ce permit transmiterea ctre operator a
informaiei (rezultate, date, etc.).

Dispozitivele de intrare = dispozitive electronice ce permit


introducerea informaiei ntr-un sistem de calcul (date i/sau
programe). Permit interacia om-main.

Exemple: monitorul (informaie vizual), imprimanta (informaie


pe suport fizic), placa de sunet (informaie audio), etc.

Exemple: tastatura, mouse-ul, microfonul (sunet), camera WEB


(sunet-imagine), tableta grafic (micri ale minii), scanner-ul
(documente fizice), scanner de amprent (fingerprint), etc.

> Exist bineneles i dispozitive mixte, In/Out, de exemplu:


placa de reea (primete i transmite informaii), Fax Modemul,
memoria extern poate fi vzut ca un astfel de dispozitiv.

11

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

8/35

9/35

12

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

10/35

Unitatea de prelucrare (UP):


conine circuite logico-aritmetice
i registre de memorie.

Magistrala de date (BUS).

> Registrele sunt tot locaii de memorie ce sunt interconectate


strns cu circuitele logico-aritmetice (de regul pe acelai
integrat pentru a fi accesate rapid).

> Circuitele de legtur dintre unitatea central de prelucrare,


memoria intern i dispozitivele periferice formeaz
magistrala de date (BUS).

> Operaiile ce pot fi efectuate sunt:


- operaii aritmetice: +, -, x, /,

> BUS-ul este astfel un sub-sistem ce transfer informaia


n interiorul sistemului de calcul, ntre componentele acestuia.

- operaii logice: conjuncie (I), disjuncie (SAU), negaie:


(13>10) I (5<3) = 0 (Fals)
(13>10) SAU (5<3)= 1 (Adevrat)
NOT (10>5)= 0 (Fals)

13

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

11/35

Operaiile ce pot fi efectuate


(continuare):
- comparaii: =, , <, >, , ,
- deplasri ale biilor de pe o poziie pe alta n cadrul aceluiai
cuvnt binar:
27 26 25 24 23 22 21 20
9 (baza 10)=23+20
0 0 0 0 1 0 0 1 (binar)
128 = ??? dar 255 = ???
~ x2nr.bii shift
9
18
shift left (0 0 0 0 1 0 0 1 ) = 0 0 0 1 0 0 1 0

14

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

Unitatea de control (UC): coreleaz


operaiile elementare ale fiecrui
bloc n cadrul executrii unei operaii
mai complexe.
- fiecare operaie de executat nseamn o secven unic de
semnale de control generate de UC.
- fiecare operaie se execut secvenial.
UC determin care operaie elementar trebuie executat
pe baza unui cod binar citit din memorie.
acesta este decodificat (recunoscut) de UC iar apoi este
declanat secvena tipic de semnale de control ce conduc
ulterior la execuia operaiei dorite.

~ /2nr.bii shift

9
4
shift right (0 0 0 0 1 0 0 1 ) = 0 0 0 0 0 1 0 0
15

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

12/35

13/35

16

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

14/35

Operaiile se nlnuie astfel:

1.2. Hardware - Software

operaie de executat
cod binar (instruciune)
decodificare de ctre UC (recunoatere)
declanare secven tipic de semnale de control
se execut operaia dorit

17

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

15/35

18

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

16/35

hardware = ansamblul structurii fizice a sistemului de calcul.


Dup cum am menionat, pentru execuia unei anumite sarcini
(job) sistemul de calcul are nevoie de o succesiune de
instruciuni (coduri binare)
declaneaz o secven de operaii elementare efectuate
de blocurile constituente.
Ex. PC clasic

program = secven de instruciuni ce sunt recunoscute


de sistemul de calcul i pot fi executate de acesta.
sunt organizate logic i coerent dup un anumit algoritm.
algoritm = un procedeu (inteligent) de combinare a unor operaii
standard n scopul realizrii unei anumite prelucrri mai
complexe a informaiei.

Ex. DSP Digital Signal Processor

software = mulimea programelor necesare sistemului de


calcul pentru a ndeplini o serie de sarcini.
Exemple: sisteme de operare (Windows, Linux), procesoare
de text (Word, WinEdt), medii de dezvoltare (Borland Builder,
Matlab), antivirui, prelucrare de imagini, etc.

19

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

17/35

> Funcionarea calculatorului trebuie privit prin prisma dualitii


hardware software.

20

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

18/35

O prim abordare a soluionrii unei probleme de calcul


folosind un sistem de calcul

Enun: s se scrie un algoritm care citete dou numere de la


tastatur, le adun i afieaz rezultatul pe monitor.

> Acestea nu i au rostul considerate separat:

algoritm

- un sistem hardware fr sistem de operare nu are nici o


valoare fiind inutilizabil. De asemenea un sistem hardware
fr software adecvat este nerentabil.

citirea
informaiei

prelucrarea
informaiei

scrierea
informaiei

-citete primul nr.


-stocheaz valoarea
-citete al doilea nr.
-stocheaz valoare

- preia cele dou nr.


din registrele UP
-efectueaz + n UP
-stocheaz rezultatul

- preia rezultatul din


memorie
-afieaz valoare pe
ecran

STOP

Exemplu: degeaba procesorul prelucreaz date pe 64 bii


dac programele lucreaz pe 32 bii,
- un pachet de programe nu-i are sensul fr sistemul fizic
hardware (este mai folositor n bibliotec).
21

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

19/35

22

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

20/35

Programul este intermediarul dintre problema ce trebuie


rezolvat, formulat n limbaj natural, i activitatea concret a
sistemului de calcul, formulat n limbaj main.
Limbajul de programare = limbaj formal n care se scrie
programul. Ideal, ct mai intuitiv pentru utilizator dar i ct mai
rapid.

1.3. Limbaje de programare


(generaliti)

date: obiectele programelor, valori numerice,


valori textuale, date complexe, etc.
instruciuni: codific operaiile ce trebuiesc
executate de sistem, ex.: printf (scriere pe
dispozitivul de ieire) etc.
23

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

21/35

24

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

22/35

Datele obiectele programelor

Datele obiectele programelor (continuare)

- date elementare: a cror structur nu poate fi modificat de


ctre utilizator.

> Datele sunt desemnate n cadrul programelor prin intermediul


variabilelor i a constantelor (caz particular de variabil).

> Acestea sunt de mai multe tipuri: numerice (ntregi, reale),


logice (booleene 0 sau 1), alfanumerice (caractere, text).

variabila = fizic reprezint o zon de memorie ce gzduiete


anumite date.

- date structurate: date complexe (grupuri de date elementare),


ce poart informaie att prin valoare ct i prin structur.

- variabilele sunt desemnate prin nume simbolice denumite


i identificatori.

> Acestea sunt de mai multe tipuri: tablouri, structuri, clase.

- variabilele sunt de un anumit tip ce indic tipul valorilor


coninute de aceastea precum i structura acestora (simpl,
tablou, structur de date, etc.)

1 / 9 1 / 9 1 / 9
1 / 9 1 / 9 1 / 9

1 / 9 1 / 9 1 / 9

structur
persoana

Nume (alfanumeric)
Vrst (ntreg)
Greutate (real)

Exemplu: int x;
identificator=x, tip de date=ntregi (int);
la o anumit adres se va aloca spaiu pentru valorile lui x.
25

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

23/35

26

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

24/35

Instructiunile componenta funcional

Limbaje de programare

Pot fi:

> Exist o mare varietate de limbaje de programare. Acestea


difer unele de altele n funcie de urmtoarele aspecte:

- declaraii: prin care se definesc identificatorii i atributele


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 stabilete asocierea nume
simbolic variabil,

- comenzi: prin care se realizeaz prelucrarea efectiv a


datelor coninute n variabile i constante.
1. comenzi elementare: atribuirea de valori, citirea, scrierea,
apelarea de funcii, etc.

- facilitile oferite utilizatorului,


- modul n care sunt apelate prelucrrile

2. comenzi structurate: decizia, execuia n bucl, etc.


27

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

25/35

28

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

Limbaje de programare scurt istoric

Limbaje de programare scurt istoric (continuare)

~1947 primele limbaje de programare sunt limbajele main;


gam de instruciuni minim, apropiat de hardware
dificultatea de scriere a programelor complexe

1954 FORTRAN

cod binar
10001011
01000101
00001010
00000011
01000101
00010100

Revizuit n 1978 i 1990, nc folosit de comunitatea tiinific


datorit eficienei acestuia i a bibliotecilor de funcii de
prelucrare disponibile (cel mai longeviv limbaj).

cod hexazecimal
8B
citire numr ntreg n registrul AX
45
0A
03
citire numr ntreg i adiionare
45
n registrul AX
14

READ INPUT TAPE 5, 501, IA, IB, IC


501 FORMAT (3I5)

1954 FORTRAN (John Backus IBM), programare de nivel


nalt, permitea folosirea numelor de variabile, expresii complexe
i proceduri (sub-programe).
tiinific (FORmula TRANslating)

IF (IA) 777, 777, 701


701 IF (IB) 777, 777, 702
702 IF (IC) 777, 777, 703
703 IF (IA+IB-IC) 777,777,704
704 IF (IA+IC-IB) 777,777,705
705 IF (IB+IC-IA) 777,777,799
777 STOP 1

29

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

26/35

27/35

30

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

28/35

Limbaje de programare scurt istoric (continuare)

Limbaje de programare scurt istoric (continuare)

1958 ALGOL: folosire restricionat (limbaj sub licena),


concuren FORTRAN.

1970 Pascal (Niklaus Wirth) dezvoltat n scopul predrii


programrii structurate i modulare.

1960 COBOL destinat aplicaiilor de gestiune, sintaxa ct mai


apropiat de limba englez.

Preia punctele forte ale limbajelor COBOL, FORTRAN i ALGOL


limbaj elegant, simplu, nlocuiete BASIC ca limbaj
de iniiere.

ADD YEARS TO AGE

age = age + years

program Hello(output);

1963 BASIC (Beginner's All-purpose Symbolic Instruction Code),


n principal cu scop educativ.

var
a:string;

> n ciuda diversitii reduse de instruciuni devine foarte popular


datorit uurinei utilizrii acestuia.
> Programe nestructurate

begin
write(introduceti numele: ');
readln(a);
writeln('salut ', a);
end.

mentenan dificil.
31

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

29/35

32

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

30/35

Limbaje de programare scurt istoric (continuare)

Limbaje de programare scurt istoric (continuare)

1970 C (Dennis Ritchie, laboratoarele Bell) dezvoltat n scopul


programrii sistemului de operare UNIX.

1980-1990 limbaje interpretate sau semi-interpretate motivate


de dezvoltarea Web (dezvoltare de pagini Web dinamice,
aplicaii client-server, etc.)

> Limbaj de programare puternic. Datorit folosirii pointerilor


permite apropierea de limbajul main precum i accesul la
dispozitivele hardware ale sistemului, rmnnd totui un
limbaj de programare de nivel nalt.
1980 Smalltalk-80 (iniial Alan Kay 1969, ulterior Xerox) motivat
de necesitatea de programe tot mai complexe; propune o nou
direcie de programare = programarea orientat pe obiecte.
1985 C++ (laboratoarele Bell) extensie obiect orientat a
limbajului C, instruciuni noi, programare mai eficient, vitez de
lucru crescut.

Exemple: Perl (Larry Wall, 1987), Tcl (John Ousterhout, 1988),


Python (Guido van Rossum, 1990), PHP i Java (Sun
Microsystems, 1996)
1995 Common-LISP: primul limbaj orientat obiect standardizat
de ANSI - American National Standards Institute.
2000 C# (Microsoft): permite folosirea simultan a mai multe
tipuri de programare (multi-paradigm).

33

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

31/35

34

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

32/35

Paradigme de programare (moduri de programare)

Paradigme de programare (continuare)

Programare imperativ: n care calcul nseamn o secven


de comenzi (FORTRAN, C, Pascal).

Programare logic: n care calcul nseamn o serie de


declaraii logice (Prolog).

Exemplu: citete X, citete Y, calculeaz X*Y, pune rezultatul


n variabila Z.

Exemplu: Cezar este om, Toi oamenii sunt muritori.


Cezar este muritor.

Programare funcional: n care calcul nseamn evaluarea


unor funcii n sensul matematic (Lisp, Phyton). Programele sunt
grupuri de funcii (sub-programe).

Programare concurent: n care calculul este divizat n mai


multe sarcini ce apoi sunt executate n paralel.
Not: Un anumit limbaj de programare poate oferi mai multe
moduri de programare, acestea nu sunt exclusive.

Programare obiect orientat: definirea de obiecte care


interacioneaz ntre acestea prin intermediul mesajelor
(C++, Java).

Exemplu: C++, programare functional, obiect orientat,


concurent, etc.
35

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

33/35

36

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

34/35

Sfritul Cursului 1

37

Curs Programarea Calculatoarelor, Prof. Bogdan IONESCU, 2016-2017

35/35

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