curs programarea calculatoareor bogdan ionescu
TRANSCRIPT
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 1/7
Programarea Calculatoarelor (limbajul C)
Curs 1 – Introducere
Universitatea “Politehnica” din BucurestiFacultatea de Electronica, Telecomunicatii si
Tehnologia Informatiei
Ş.l. Bogdan IONESCUProf. Dragoş BURILEANUProf. Claudius DAN
2010-2011
[1] Curs,
[2] C. Dan, D. Burileanu, “Introducere în programareacalculatoarelor. Limbajul C”, Editura Printech, Bucureşti, 2001.
[3] D. Burileanu, C. Dan, M. Pădure, “Programare în C.Culegere de probleme”, Editura Printech, Bucureşti, 2004.
[4] Îndrumarul de laborator (disponibil la laborator),
[5] Orice altă carte de C/C++, Internet !
2Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011
Bibliografie
3
Cuprins
1.1. Sisteme de calcul (modul de funcŃionare)
1.2. Hardware şi Software
1.3. Limbaje de programare (generalităŃi)
Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 1/354
1.1. Sisteme de calcul(modul de funcŃionare)
Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 2/35
5
Sistem de calcul = echipament electronic destinat prelucrărilor complexe ale informaŃiei.
Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 3/35
Procesor (UCP – CPU)UC UP
Memorieexternă
Memorieinternă
MemorieDispozitiveI/O
DispozitiveIN
DispozitiveOUT
Magistrala dedate (BUS)
6Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 4/35
Procesorul: UC + UPCPU – Central Processing Unit
• UP = unitatea de prelucrare, efectuează operaŃii simple
(aritmetice şi logice) asupra unor operanzi (date) preluatedin memorie; rezultatele în memorie.
• UC = unitatea de control, coordonează funcŃionareacelorlalte blocuri pe baza unor comenzi (instrucŃiuni din mem.)
Ex. Intel 80486
microprocesor = o singură capsulă decircuit integrat.
parte integrantă a informaŃiei transmise
calculatorului de către utilizator.
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 2/7
7Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 5/35
Memoria: internă + externă.
• Memoria internă = o colecŃie decelule de memorare organizată ca o
secvenŃă de cuvinte (word) binare (numere).
> Memoria este organizată matricial, fiecare locaŃie esteidentificată cu un număr de ordine numit şi adresă.
- memorie de date: conŃine operanzi, rezultate şi rezultate parŃiale,
- memorie de program: conŃine instrucŃiunile (comenzile)care asigură prelucrarea corespunzătoare a datelor.
> Din punct de vedere funcŃional (nu fizic) memoria este dedouă tipuri:
Un bit = 0 sau 1, un cuvânt = 8 biŃi, ex.: 00000001, 10101010
8Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 6/35
Memoria.
> Organizarea datelor: în general cuvinte pe 8 biŃi = octet sau byte.
> Prefixele folosite pentru a desemna capacitatea memoriei:1 byte = 8 biŃi
1 kilo-byte (kB) = 1024 bytes = 210 bytes
1 mega-byte (MB) = 1024 kB = 220 bytes1 giga-byte (GB) = 1024 MB = 230 bytes
1 terra-byte (TB) = 1024 GB = 240 bytes etc.
> AtenŃie: 1Mb ≠ 1MB. De regulă capacitatea de transfer areŃelelor este exprimată în Mb (mega-biŃi):
1Mb = 220 biŃi, 1MB = 220 bytes = 220x8 biŃi
9Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 7/35
Memoria.
> Din punct de vedere fizic, memoriainternă este de două tipuri:
Ex. EPROM Intel 1702 Ex. Kingmax DDR 512MB
- ROM – Read Only Memory: este o memorie permanentă.ConŃinutul acesteia rămâne intact chiar în lipsa alimentăriicu curent. Nu poate fi scrisă de programe.
- RAM – Random Access Memory: este o memorie volatilă alcărei conŃinut se pierde în momentul în care se opreşte
alimentarea acesteia cu curent. Este o memorie de lucru.
10Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 8/35
Memoria.
• Memoria externă = un suportextern de stocare a informaŃiei. De
regulă este folosită pentru a păstra cantităŃi mari de informaŃie.
Exemple:- FD (floppy disk drive): 3½-inch, 1.44MB- CD-ROM (compact disk - read only memory): <700MB- HD (hard disk drive): ~500GB
- FD (flash drive): <256GB, etc.
11Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 9/35
Dispozitivele I/O (In/Out).
• Dispozitivele de intrare = dispozitive electronice ce permit
introducerea informaŃiei într-un sistem de calcul (date şi/sauprograme). Permit interacŃia om-maşină.
Exemple: tastatura, mouse-ul, microfonul (sunet), camera WEB(sunet-imagine), tableta grafică (mişcări ale mâinii), scanner-ul(documente fizice), scanner de amprentă (fingerprint), etc.
12Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 10/35
Dispozitivele I/O (In/Out).
• Dispozitivele de ieşire = dispozitivece permit transmiterea către operator a
informaŃiei (rezultate, date, etc.).
> Există bineînŃeles şi dispozitive mixte, In/Out, de exemplu:placa de reŃea (primeşte şi transmite informaŃii), Fax Modemul,memoria externă poate fi văzută ca un astfel de dispozitiv.
Exemple: monitorul (informaŃie vizuală), imprimanta (informaŃiepe suport fizic), placa de sunet (informaŃie audio), etc.
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 3/7
13Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 11/35
Magistrala de date (BUS).
> Circuitele de legătură dintre unitatea centrală de prelucrare,memoria internă şi dispozitivele periferice formează
magistrala de date (BUS).
> BUS-ul este astfel un sub-sistem ce transferă informaŃia în interiorul sistemului de calcul, între componentele acestuia.
14Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 12/35
Unitatea de prelucrare (UP):conŃine circuite logico-aritmeticeşi registre de memorie.
> Registrele sunt tot locaŃii de memorie ce sunt interconectate
“strâns” cu circuitele logico-aritmetice (de regulă pe acelaşiintegrat pentru a fi accesate rapid).
> OperaŃiile ce pot fi efectuate sunt:- operaŃii aritmetice: +, -, x, /,
(13>10) ŞI (5<3) =(13>10) SAU (5<3)=
NOT (10>5)=
0 (Fals)1 (Adevărat)0 (Fals)
- operaŃii logice: conjuncŃie (ŞI), disjuncŃie (SAU), negaŃie:
15Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 13/35
OperaŃiile ce pot fi efectuate
(continuare):
9 (baza 10)=23+20 0 0 0 0 1 0 0 1 (binar)
27 26 25 24 23 22 21 20
128 = ??? dar 255 = ???
shift left (0 0 0 0 1 0 0 1 ) = 0 0 0 1 0 0 1 09 18
~ x2nr.biŃi shift
shift right (0 0 0 0 1 0 0 1 ) = 0 0 0 0 0 1 0 09 4
~ /2nr.biŃi shift
- comparaŃii: =, ≠, <, >, ≤, ≥,
- deplasări ale biŃilor de pe o poziŃie pe alta în cadrul aceluiaşicuvânt binar:
16Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 14/35
Unitatea de control (UC): coreleazăoperaŃiile elementare ale fiecăruibloc în cadrul executării unei operaŃiimai complexe.
- fiecare operaŃie de executat înseamnă o secvenŃă unică desemnale de control generate de UC.
- fiecare operaŃie se execută secvenŃial.
UC determină care operaŃie elementară trebuie executată
pe baza unui cod binar citit din memorie.
acesta este decodificat (recunoscut) de UC iar apoi estedeclanşată secvenŃa tipică de semnale de control ce conduculterior la execuŃia operaŃiei dorite.
17Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 15/35
OperaŃiile se înlănŃuie astfel:
operaŃie de executatcod binar (instrucŃiune)decodificare de către UC (recunoaştere)declanşare secvenŃă tipică de semnale de control
se execută operaŃia dorită
18
1.2. Hardware - Software
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 16/35
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 4/7
19Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 17/35
După cum am menŃionat, pentru execuŃia unei anumite sarcini(job) sistemul de calcul are nevoie de o succesiune deinstrucŃiuni (coduri binare)
program = secvenŃă de instrucŃiuni ce sunt recunoscute
de sistemul de calcul şi pot fi executate de acesta.
algoritm = un procedeu (inteligent) de combinare a unor operaŃiistandard în scopul realizării unei anumite prelucrări maicomplexe a informaŃiei.
declanşează o secvenŃă de operaŃii elementare efectuatede blocurile constituente.
sunt organizate logic şi coerent după un anumit algoritm.
20Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 18/35
hardware = ansamblul structurii fizice a sistemului de calcul.
software = mulŃimea programelor necesare sistemului decalcul pentru a îndeplini o serie de sarcini.
Ex. PC clasic Ex. DSP – D igital Signal Processor
Exemple: sisteme de operare (Windows, Linux), procesoarede text (Word, WinEdt), medii de dezvoltare (Borland Builder,Matlab), antiviruşi, prelucrare de imagini, etc.
21Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 19/35
> FuncŃionarea calculatorului trebuie privită prin prisma dualităŃii
hardware – software.
> Acestea nu îşi au rostul considerate separat:
- un sistem hardware fără sistem de operare nu are nici ovaloare fiind inutilizabil. De asemenea un sistem hardwarefără software adecvat este nerentabil.
Exemplu: degeaba procesorul prelucrează date pe 64 biŃi
dacă programele lucrează pe 32 biŃi),
- un pachet de programe nu-şi are sensul fără sistemul fizichardware (este mai folositor în bibliotecă).
22Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 20/35
O primă abordare a soluŃionării unei probleme de calculfolosind un sistem de calcul!
EnunŃ : să se scrie un algoritm care citeşte două numere de latastatură, le adună şi afişează rezultatul pe monitor.
citireainformaŃiei
prelucrareainformaŃiei
scriereainformaŃiei
STOP
algoritm
-citeşte primul nr.-stochează valoarea-citeşte al doilea nr.-stochează valoare
- preia cele două nr.din registrele UP-efectuează + în UP-stochează rezultatul
- preia rezultatul dinmemorie-afişează valoare peecran
23
1.3. Limbaje de programare(generalităŃi)
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 21/3524
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 22/35
Programul este “intermediarul” dintre problema ce trebuie
rezolvată, formulată în limbaj natural, şi activitatea concretă asistemului de calcul, formulată în limbaj maşină.
Limbajul de programare = limbaj formal în care se scrieprogramul. Ideal, cât mai intuitiv pentru utilizator dar şi cât mairapid.
date: obiectele programelor, valori numerice,valori textuale, date complexe, etc.
instrucŃiuni : codifică operaŃiile ce trebuiescexecutate de sistem, ex.: printf (scriere pedispozitivul de ieşire) etc.
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 5/7
25Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 23/35
Datele – obiectele programelor
- date elementare: a căror structură nu poate fi modificată decătre utilizator.
> Acestea sunt de mai multe tipuri: numerice (întregi, reale),logice (booleene 0 sau 1), alfanumerice (caractere, text).
- date structurate: date complexe (grupuri de date elementare),ce poartă informaŃie atât prin valoare cât şi prin structură.
> Acestea sunt de mai multe tipuri: tablouri , structuri , clase.
9/19/19/1
9/19/19/1
9/19/19/1 Nume (alfanumeric)Vârstă (întreg)Greutate (real)…
structură“persoana”
26Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 24/35
Datele – obiectele programelor (continuare)
> Datele sunt desemnate în cadrul programelor prin intermediulvariabilelor şi a constantelor (caz particular de variabilă).
variabila = fizic reprezintă o zonă de memorie ce găzduieşteanumite date.
- variabilele sunt desemnate prin nume simbolice denumiteşi identificatori.
- variabilele sunt de un anumit tip ce indică tipul valorilor conŃinute de aceastea precum şi structura acestora (simplă,tablou, structură de date, etc.)
Exemplu: int x; identificator=“x”, tip de date=întregi (int);la o anumită adresă se va aloca spaŃiu pentru valorile lui x.
27Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 25/35
Instructiunile – componenta funcŃională
Pot fi:
- declaraŃii: prin care se definesc identificatorii şi atributele
variabilelor.
- comenzi: prin care se realizează prelucrarea efectivă a
datelor conŃinute în variabile şi constante.1. comenzi elementare: atribuirea de valori, citirea, scrierea,apelarea de funcŃii, etc.
2. comenzi structurate: decizia, execuŃia în buclă, etc.
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)
28Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 26/35
Limbaje de programare
> Există o mare varietate de limbaje de programare. Acesteadiferă unele de altele în funcŃie de următoarele aspecte:
- apropierea de limbajul masină,
- problemele care le rezolvă,
- modul în care se stabileşte asocierea numesimbolic – variabilă,
- facilităŃile oferite utilizatorului,
- modul în care sunt apelate prelucrările
29Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 27/35
Limbaje de programare – scurt istoric
~1947 primele limbaje de programare sunt limbajele maşină;gamă de instrucŃiuni minimă, apropiată de hardware dificultatea de scriere a programelor complexe
1954 FORTRAN (John Backus IBM), programare de nivel înalt , permitea folosirea numelor de variabile, expresii complexeşi proceduri (sub-programe). ştiinŃific (FORmula TRANslating)
cod binar cod hexazecimal
10001011 8B01000101 4500001010 0A00000011 0301000101 4500010100 14
citire număr întreg în registrul AX
citire număr întreg şi adiŃionare în registrul AX
30Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 28/35
Limbaje de programare – scurt istoric (continuare)
1954 FORTRAN
Revizuit în 1978 şi 1990, încă folosit de comunitatea ştiinŃificădatorită eficienŃei acestuia şi a bibliotecilor de funcŃii deprelucrare disponibile (cel mai longeviv limbaj).
READ INPUT TAPE 5, 501, IA, IB, IC501 FORMAT (3I5)
IF (IA) 777, 777, 701701 IF (IB) 777, 777, 702702 IF (IC) 777, 777, 703703 IF (IA+IB-IC) 777,777,704704 IF (IA+IC-IB) 777,777,705705 IF (IB+IC-IA) 777,777,799777 STOP 1
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 6/7
31Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 29/35
Limbaje de programare – scurt istoric (continuare)
1958 ALGOL: folosire restricŃionată (limbaj sub licenŃa),concurenŃă FORTRAN.
1960 COBOL destinat aplicaŃiilor de gestiune, sintaxa cât maiapropiată de limba engleză.
1963 BASIC (Beginner's All-purpose Symbolic Instruction Code), în principal cu scop educativ.
> În ciuda diversităŃii reduse de instrucŃiuni devine foarte popular datorită uşurinŃei utilizării acestuia.
> Programe nestructurate mentenanŃă dificilă.
ADD YEARS TO AGE age = age + years
32Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 30/35
Limbaje de programare – scurt istoric (continuare)
1970 Pascal (Niklaus Wirth) dezvoltat în scopul predăriiprogramării structurate şi modulare.
program Hello(output);
var a:string;
beginwrite(‘introduceti numele: ');readln(a);writeln('salut ', a);
end.
Preia punctele forte ale limbajelor COBOL, FORTRAN şi ALGOL limbaj “elegant”, simplu, înlocuieşte BASIC ca limbajde iniŃiere.
33Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 31/35
Limbaje de programare – scurt istoric (continuare)
1970 C (Dennis Ritchie, laboratoarele Bell) dezvoltat în scopulprogramării sistemului de operare UNIX.
> Limbaj de programare “ puternic ”. Datorită folosirii pointerilor permite apropierea de limbajul maşină precum şi accesul ladispozitivele hardware ale sistemului, rămânând totuşi unlimbaj de programare de nivel înalt.
1980 Smalltalk-80 (iniŃial Alan Kay 1969, ulterior Xerox) motivat
de necesitatea de programe tot mai complexe; propune o nouădirecŃie de programare = programarea orientată pe obiecte.
1985 C++ (laboratoarele Bell) extensie obiect orientată alimbajului C, instrucŃiuni noi, programare mai eficientă, viteză delucru crescută.
34Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 32/35
Limbaje de programare – scurt istoric (continuare)
1980-1990 limbaje interpretate sau semi-interpretate motivatede dezvoltarea Web (dezvoltare de pagini Web dinamice,aplicaŃii client-server, etc.)
Exemple: Perl (Larry Wall, 1987), Tcl (John Ousterhout, 1988),Python (Guido van Rossum, 1990), PHP şi Java (SunMicrosystems, 1996) …
1995 Common-LISP: primul limbaj orientat obiect standardizatde ANSI - American National Standards Institute.
2000 C# (Microsoft): permite folosirea simultană a mai multetipuri de programare (multi-paradigm).
…
35Curs Programarea C alculatoarelor, Ş.l. Bogdan I ONESCU, 2010-2011 33/35
Paradigme de programare (moduri de programare)
• Programare imperativă: în care calcul înseamnă o secvenŃăde comenzi (FORTRAN, C, Pascal).
Exemplu: citeşte X, citeşte Y, calculează X*Y, pune rezultatul în variabila Z.
• Programare funcŃională: în care calcul înseamnă evaluareaunor funcŃii în sensul matematic (Lisp, Phyton). Programele suntgrupuri de funcŃii (sub-programe).
• Programare obiect orientată: definirea de obiecte careinteracŃionează între acestea prin intermediul mesajelor (C++, Java).
36Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 34/35
Paradigme de programare (continuare)
• Programare logică: în care calcul înseamnă o serie dedeclaraŃii logice (Prolog).
Exemplu: Cezar este om, ToŃi oamenii sunt muritori. Cezar este muritor.
• Programare concurentă: în care calculul este divizat în maimulte sarcini ce apoi sunt executate în paralel.
Notă: Un anumit limbaj de programare poate oferi mai multemoduri de programare, acestea nu sunt exclusive.
Exemplu: C ++, programare functională, obiect orientată,concurentă, etc.
7/29/2019 Curs Programarea calculatoareor Bogdan Ionescu
http://slidepdf.com/reader/full/curs-programarea-calculatoareor-bogdan-ionescu 7/7
37Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 35/35
Sfârşitul Cursului 1