Sunteți pe pagina 1din 27

CURS 1

PROGRAMAREA
CALCULATOARELOR SI
LIMBAJE DE PROGRAMARE
Obiectivele cursului

 Disciplina studiază în prima parte principiile generale ale programării


structurate, pornind de la cunoaşterea şi înţelegerea funcţionării unui sistem
de calcul, iar în a doua parte problemele fundamentale ale programării în C+
+.
 Cunoașterea structurii unui program în C++, a tipurilor de date și a
domeniilor în care pot fi definite, declararea și utilizarea datelor în programe.
 Cunoașterea setului de instructiuni (sintaxa, efectul lor în program, exemple
de utilizare corectă în programe).
 Cunoașterea funcțiilor predefinite, de bibliotecă, pentru operațiile
fundamentale ca: scriere pe ecran/la imprimantă, citire date de la
tastatură/din fișier, funcții matematice elementare, funcții pentru prelucrarea
șirurilor de caractere, funcții pentru implementarea operațiilor cu fișiere
(definirea unui fișier, deschiderea, operarea, închiderea).
Bibliografie

 Negrescu, L. - Limbajele C si C++ pentru începători, vol.I, II, Editura


Albastră, Cluj
 Badescu, I.,Surugiu Maria Claudia, Panzaru Camelia - Limbaje si tehnici
de programare, Ed. Printech 2003, ISBN 973-652-789-1
 D. Burileanu, C. Dan, M. Pădure, “Programare în C. Culegere de
probleme”, Editura Printech, Bucureşti, 2004
 Herbert Schildt, C#: A Beginner’s Guide, 2001
 Herbert Schildt, C#, Ed.Teora (traducere, 2002)
 Karli Watson, Beginning C# 2005 Databases, Wiley Publishing, Inc.
(2006)
 Philip Syme si Peter Aitken, SAMS Teach Yourself the C# Web
Programming in 21 Days,2002
 Kris Jamsa si Lars Klander, Totul despre C si C++ Manualul fundamental
de programare in C si C++, Ed. Teora, (traducere 2007);
Organizarea generala

PC-urile sunt realizate pe baza microprocesoarelor, care au evoluat


din anii '70 pana astazi:

Nr. biti Procesor Aplicatii

4 biti 4004 Calcule aritmetice

8 biti 8080 Microcalculatoare CP/M


16 biti 8086, 80286 PC-uri IBM cu MS-DOS

32 biti 80386, Pentium 4 Windows 32

64 biti Athlon 64, Pentium Servere cu Windows, Linux


4 Itanium, Intel 64biti
Core i7
 Generatia I (1946-1956)  Generatia a II-a (1957-1963)
caracterizata prin : marcata de aparitia tranzistorului

1." Hardware: relee, tuburi 1." Hardware: tranzistoare, memorii


electronice ; cu ferite, cablaj imprimat ;
2." Software: programe cablate, 2." Software : limbaj de nivel înalt
cod masina, limbaj de asamblare ; ( Algol, Fortan)

3." Capacitate de memorie : 2 3." Memorie : 32 Kocteti ;


Kocteti ; 4." Viteza : 200.000 de
instructiuni/sec
4." Viteza de operare:10.000 de
operatii/sec. ; 5." Calculatoare : IBM 7040,
NCR501 ;
5." Calulatoare : ENIAC, UNIVAC,
IBM ;
 Generatia a IV-a (1982-1989) caracterizata prin :
 Generatia a III-a (1964- 1981) caracterizata
prin :

1. " Hardware: circuite integrate pe scara


1." Hardware : circuite integrate ,cablaje foarte mare, apar microprocesoarele de 16/32
imprimate multistrat , discuri magnetice,
biti, primele elemente optice (discurile
apararitia primelor microprocesoare ;
optice ) ;

2." Software : limbaje de nivel foarte înalt,


2. " Software : Pachete de programe de larga
programare orientata pe obiecte B.Pascal,
utilizare, sisteme expert , sisteme de operare,
programare structurata LISP, primele programe
se perfectioneaza limbajele de programare
pentru grafica si baze de date .
orientate pe obiect, baze de date relationale ;

3." Memorie : 1÷2 Mocteti ;


3. " Memorie : 8÷10 Mocteti ;

4." Viteza : 5.000.000 de operatii/sec ;


4. " Viteza : 30 de milioane de
5." Calculatoare : IBM 370 , FELIX instructiuni/sec ;

6." Comunicatii : Primele comunicatii prin 5. " Caculatoare : INDEPENDENT, CORAL,


satelit, transmisia de date prin fibra optica. IBM (apar mai multe versiuni)
Generatia a V-a ( 1991- 2002 ) în curs de dezvolatare

1. " Hardware : circuite integrate pe scara ultralarga ULSI arhitecturi


paralele, alte solutii arhitecturale noi ( retele neurale etc. ), proiectele galiu-
arsen .

2. " Software : limbaje concurente,programare functionala, prelucrare


simbolica , baze de cunostiinte, sisteme expert evoluate,programe de
realitate virtuala, acum apar si sistemele de operare windows.
3. " Memorie : de la zeci,sute de Mocteti pâna la Gocteti ;

4. " Viteza : 1G de instructiuni /sec - 3 G de instructiuni/sec

5. " Comunicatiile: au atins un nivel nemaiintâlnit.. emisiile radio de ordinul


GHz, retele globale pe fibra optica , retele de comunicare prin satelit.

6. " Calculatoare : o gama foarte larga de calculatoare .


Calcuatorul TI-99/4 din anul
1979
Primele Calculatoare

Concurenta se duce intre 2 tipuri de


calculatoare: Laptop Vs Desktop

Laptop Desktop
NOTIUNI INTRODUCTIVE
STRUCTURA GENERALĂ A UNUI SISTEM DE CALCUL

 Calculatorul - sistem electronic (ansamblu de dispozitive şi circuite diverse) complex care


prelucrează datele introduse într-o formă prestabilită, efectuează diverse operaţii asupra
acestora şi furnizează rezultatele obţinute (figura 1.1.)

Principalele avantaje ale folosirii calculatorului constau în:


 viteza mare de efectuare a operaţiilor;
 capacitatea extinsă de prelucrare şi memorare a informaţiei.
În orice sistem de calcul vom găsi două părţi distincte şi la fel de importante: hardware-ul şi
software-ul.
Hardware-ul este reprezentat de totalitatea echipamentelor şi dispozitivelor fizice;
Software-ul este reprezentat prin totalitatea programelor care ajută utilizatorul în
rezolvarea problemelor sale (figura 1.2.).

Software-ul are două componente principale:


Sistemul de operare (de exploatare) care coordonează întreaga activitate a
echipamentului de calcul. Sistemul de operare intră în funcţiune la pornirea
calculatorului şi asigură, în principal, trei funcţii:
• Gestiunea echitabilă şi eficientă a resurselor din cadrul sistemului de calcul;
• Realizarea interfeţei cu utilizatorul;
• Furnizarea suportului pentru dezvoltarea şi execuţia aplicaţiilor.
Sistemul de aplicaţii (de programare): medii de programare, editoare de texte,
compilatoare, programe aplicative din diverse domenii (economic, ştiinţific, financiar,
divertisment).
Unitatea de intrare (cu funcţia de citire) realizează conversia informaţiei din format
extern în cel intern. Din punct de vedere logic, fluxul (informaţia) de intrare este un
şir de caractere, din exterior către memoria calculatorului.
Unitatea de ieşire (cu funcţia de scriere, afişare) realizează conversia inversă, din
formatul intern în cel extern, accesibil omului.
Informaţia este înregistrată în memorie.
Memoria internă (memoria RAM - Random Acces Memory) se prezintă ca o
succesiune de octeţi (octet sau byte sau locaţie de memorie), (Se pierde la oprirea
calculatorului, poate fi atât citită cât şi modificată)
Un octet are 8 biţi. Bit-ul reprezintă unitatea elementară de informaţie şi poate
avea una din valorile: 0 sau 1.
Capacitatea unei memorii este dată de numărul de locaţii pe care aceasta
le conţine şi se măsoară în multiplii de 1024.
De exemplu, 1 Mbyte=1024Kbytes (210 Kbytes)
1Kbyte=1024bytes.
Numărul de ordine al unui octet în memorie se poate specifica printr-un
cod, numit adresă. Ordinea în care sunt adresate locaţiile de memorie nu
este impusă, memoria fiind un dispozitiv cu acces aleator la informaţie.

În memorie se înregistrează două categorii de informaţii:


Date - informaţii de prelucrat;
Programe - conţin descrierea (implementarea într-un limbaj de
programare) a acţiunilor care vor fi executate asupra datelor, în vederea
prelucrării acestora.

În memoria internă este păstrată doar informaţia prelucrată la un moment


dat. Memoria internă are capacitate redusă; accesul la informaţia pastrată
în aceasta este extrem de rapid, iar datele nu sunt păstrate după
terminarea prelucrării (au un caracter temporar).
Unitatea centrală prelucrează datele din memoria internă şi coordonează
activitatea tuturor componentelor fizice ale unui sistem de calcul. Ea înglobează:

Microprocesorul- circuit integrat complex cu următoarele componente de bază:


Unitatea de execuţie (realizează operaţii logice şi matematice);
Unitatea de interfaţă a magistralei (transferă datele la/de la microprocesor).
Coprocesorul matematic – circuit integrat destinat realizării cu viteză sporită a
operaţiilor cu numere reale.
În funcţie de numărul de biţi transferaţi simultan pe magistrala de date,
microprocesoarele pot fi clasificate astfel: microprocesoare pe 8 biţi (Z80, 8080);
microprocesoare pe 16 biţi (8086, 8088, 80286) cu coprocesoarele
corespunzătoare (8087, 80287); familii de procesoare pe 32 biţi (80386DX,
80486, PENTIUM) cu coprocesoarele corespunzătoare (începând de la 486,
coprocesoare sunt încorporate microprocesoarelor).

Memoria externă este reprezentată, fizic, prin unităţile de discuri.


Spre deosebire de memoria internă, memoria externă are capacitate mult mai
mare, datele înregistrate au caracter permanent, în dezavantajul timpului de
acces la informaţie.
Etapele rezolvării unei probleme cu ajutorul
calculatorului
 După analiza problemei şi stabilirea algoritmului, acesta trebuie tradus (implementat) într-
un limbaj de programare.

Srierea (editarea) programului sursă.


Programele sursă sunt fişiere text care conţin instrucţiuni (cu sintactica şi semantica proprii
limbajului utilizat). Programul (fişierul) sursă este creat cu ajutorul unui editor de texte şi va fi
salvat pe disc (programele sursă C primesc, de obicei, extensia .c, iar cele C++,
extensia .cpp).
Pentru a putea fi executat, programul sursă trebuie compilat şi linkeditat.
 Compilarea

Procesul de compilare este realizat cu ajutorul compilatorului, care translatează codul sursă în
cod obiect (cod maşină), pentru ca programul să poată fi înţeles de calculator.
În cazul limbajului C, în prima fază a compilării este invocat preprocesorul. Codul binar este
numit cod obiect şi de obicei este memorat într-un alt fişier, numit fişier obiect.
Fişierul obiect va avea, de obicei, acelaşi nume cu fişierul sursă şi extensia .obj.
Linkeditarea
Dupa ce programul sursă a fost translatat în program obiect,
el este va fi supus operaţiei de linkeditare. Scopul fazei de
linkeditare este acela de a obţine o formă finală a
programului, în vederea execuţiei acestuia. Linkeditorul
“leagă” modulele obiect, rezolvă referinţele către funcţiile
externe şi rutinele din biblioteci şi produce cod executabil,
memorat într-un alt fisier, numit fişier executabil (acelaşi
nume, extensia .exe)
 Execuţia
Lansarea în execuţie constă în încărcarea programului
executabil în memorie şi startarea execuţiei sale.
 Limbajul de programare este un mijloc de comunicare
intre utilizator/programator si calculator.

 Unprogram este o succesiune de instructiuni aranjate logic


ce vor fi executate de un calculator.

 Pentru
a putea fi rulate programe scrise in diverse limbaje de
programare, calculatorul va avea nevoie de cate un
compilator pentru fiecare limbaj de programare.
 Generatii de limbaje de programare:
◦ Limbaje cod masina (instructiunile erau transmise ca secvente binare
de 0 si 1)

Exemplu

8020 78
8021 A9 80
8023 8D 15 03
8026 A9 2D
8028 8D 14 03
802B 58
802C 60
802D EE 20 D0
8030 4C 31 EA
 Generatii de limbaje de programare:
◦ Limbaje de asamblare (folosesc un set de coduri – reprezentari
simbolice ale instructiunilor, ce ulterior sunt convertite in sistem
binar)

Exemplu:

.model tiny
.code org 100h main proc
mov ah,9
mov dx,offset hello_message
int 21h
retn
hello_message db 'Hello, world!$‘ main endp
end main
 Generatii de limbaje de programare:
◦ Limbaje de nivel inalt (folosesc cuvinte cheie din
vocabularul limbii engleze)

Exemplu C++:

#include <iostream>

using namespace std; int main()


{
cout << "Hello World!" << endl; return 0;
}
Stiluri de programare

◦ Programare nestructurata – stil liber, grele de urmarit si


depanat (Ex. Basic, Fortran);

◦ Programare structurata – urmaresc principiul ca “orice


program poate fi implementat doar prin structuri de control
secventiale, alternative sau repetitive” (Ex. Pascal, C/C+
+);

◦ Programare orientata obiect – implica utilizarea


programarii structurate unde datele sunt descrise ca
obiecte ce au definite seturi proprii de caracteristici si
functii. (Pascal, C++, C#, Java, etc.)
 Structura unui program C++
directive de preprocesare
includere de fisiere biblioteca
#include<iostream>
using namespace std;
definitii de constante; const n=10;
definitii de tipuri de date;
typedef float Real;
declaratii de variabile; int a,b;
declaratii de functii(subprograme)
int prim(int n){…} Int prim1(int n);
int main()
{
declaratii variabile;
instructiuni
apeluri de subprograme
}
implementari ale functiilor declarate
Structura unui program C++
Observatii
◦ Un program C++ este format din instructiuni grupate in
functii.
◦ Orice program C++ contine functia main, functia
principala.
◦ Orice program poate avea una sau mai multe functii
definite de programator.
◦ Un bloc de instructiuni este cuprins de { }
◦ Fiecare instructiune se termina cu ;
 Vocabularul limbajului de programare contine:
◦ Setul de caractere
 a-z,A-Z(caractere alfabetice),
 0-9 (caractere numerice)
 +,-,*,/,=,&,[,],{,},#,|, spatiu, _,~,@, virgula, punct si
virgula, doua puncte (caractere speciale)
◦ Identificatori – sunt succesiuni de litere, cifre sau special
‘_’,; trebuie sa inceapa cu o litera sau caracterul ‘_’
◦Separatori – spatiu, tab, sfarsit de linie, caracterele
‘,’ si ‘;’
◦ Comentarii
 pentru o linie //
 Pentru un bloc de linii /* …. */
Tipuri standard de date Tipuri de date simple
(elementare), Tipuri de date structurate: vectori, siruri de
caractere, fisiere text, structuri, clase
Tipuri de date simple (elementare)
Tip de date Numar de octeti Multime de valori
intregi int 4 [-2147483648 , 2147483647]
unsigned int 4 [0 , 4294967295]
short 2 [-32768 , 32767]
unsigned short 2 [0 , 65535]
long 4 [-2147483648 , 2147483647]
unsigned long 4 [0 , 4294967295]
reale float 4 +/- 3.4e +/- 38 (~7 digits)
double 8 +/- 1.7e +/- 308 (~15 digits)
long double 10 +/- 3.4e +/- 4932 (~15 digits)
caracter char 1 [-128 , 127]
unsigned char 1 [0 , 255]
logic bool 1 0 sau 1 (true sau false)
Constante
◦ nu pot fi modificate de operatii sau instructiuni
◦ Tipuri de constante
 Intregi – zecimale cu valori in intervalul [0, 4294967295]
sau [-2147483648 , 2147483647]
Ex. -23 , 67, 98888
 Intregi – octale (reprezentate in baza 8) Ex. 2310=0278
 Intregi hexazecimale (reprezentate in baza 16)
precedate de un 0x sau 0X.
Ex. 2310=0x1716
 Reale – ex. 0.5, 12.98
 Caracter – caracterele sunt cuprinse intre apostrofuri ‘ ’
ex.‘a’,‘B’,‘ab’
 Siruri de caractere – succesiune de caractere cuprinse
intre ghilimele Ex.“Popescu”
 Constante definite prin cuvinte cheie: ex. Null, true,
false
Variabile – sunt zone de memorie ce permite modificarea
datelor continute in timpul rularii programului.
◦ Declararea variabilelor are urmatoarea sintaxa:

tip_standard nume_variabila;

Sau

tip_standard nume_variabila=valoare;

◦ O variabila poate fi declarata ca fiind constanta, valoarea


memorata nu mai poate fi modificata in timptul rularii programului.

Const [tip_standard] nume_variabila = valoare;

Ex. Int n, m=10; float


medie;
const int pi=3.14; char ch=‘a’;

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