Sunteți pe pagina 1din 66

Capitolul Unu: Introducere

Obiectivele capitolului

• Pentru a afla mai multe despre arhitectura


calculatoarelor
• Pentru a afla mai multe despre limbajele mașină și
limbajele de programare de nivel înalt
• Pentru a vă familiariza cu compilatorul dvs.
• Pentru a compila și a rula primul dvs. program C++
• Pentru a recunoaște erorile de compilare și de execuție
• Pentru a descrie un algoritm în pseudocod
• Pentru a înțelege activitatea de programare
Ce este programarea?

Probabil ați folosit un calculator pentru muncă sau


distracție.

Mulți oameni folosesc calculatoarele pentru activitățile de zi


cu zi, cum ar fi servicii bancare electronice sau redactarea
unei lucrări la termen.

Calculatoarele sunt bune pentru astfel de sarcini.

Ele se pot ocupă de treburile repetitive, cum ar fi adunarea


numerelor sau plasarea cuvintelor pe o pagină, fără
să se plictisească sau să se epuizeze.
Ce este programarea?

Calculatoarele pot efectua o gamă largă de sarcini


deoarece acestea execută diferite programe,
fiecare dintre acestea direcționează calculatorul să
lucreze o sarcină specifică.

Computerul în sine este o mașină care stochează


date (numere, cuvinte, imagini) interacționează cu
dispositive (monitorul, sistemul de sunet,
imprimanta) și execută programe.
Ce este programarea?

Un program de calculator spune unui computer, în


detaliu, secvența de pași necesari pentru
a îndeplini o sarcină.

Hardware

Calculatorul fizic și dispozitivele periferice sunt


în mod colectiv denumite hardware.

Software

Programele pe care le execută calculatorul sunt


denumite software.
Ce este programarea?

Programarea
este actul de proiectare și
de implementare a programelor de calculator.
Anatomia unui calculator - CPU

• CPU-ul (unitatea de procesare centrală)


– inima calculatorului
– execută o operație la un moment dat
– efectuează controlul programelor și prelucrarea
datelor
Anatomia unui calculator - CPU

• CPU-ul
– efectuează operații aritmetice cum ar fi adunarea,
scăderea, înmulțirea și împărțirea
– preia date din memoria externă sau de la dispozitive
și stochează datele înapoi.
• Toate datele trebuie să circule prin CPU ori de câte ori
sunt mutate dintr-o locație în alta.
Anatomia unui calculator - CPU

• Calculatorul stochează datele și programele în memorie

– Memorie primară - cipuri de memorie


• Memorie cu acces aleatoriu RAM (memorie de citire-scriere)
• Memorie numai pentru citire (ROM)
– Dispozitive de stocare secundară
• unități de disc
• DVD-uri
Anatomia unui calculator - Dispozitive periferice

• Utilizatorul este persoana care folosește un program


scris de un programator.
• Calculatorul transmite utilizatorului informații (numite
ieșiri) printr-un ecran de afișare, difuzoare și imprimantă.
• Utilizatorul poate introduce informații (numite intrări) în
calculator utilizând o tastatură sau un dispozitiv de
indicare, cum ar fi un mouse.
Anatomia unui calculator - Schemă de principiu
Ce este un calculator?

Da, TOTUL reprezintă UN calculator!


(cu excepția oamenilor)
Ce este un calculator?

Integratorul numeric electronic și calculator (ENIAC)


Cod mașină și limbaje de programare

• Programele de calculator sunt stocate ca instrucțiuni


mașină într-un cod care depinde de tipul de procesor.
• O secvență tipică de instrucțiuni mașină este
– 1. Mutați conținutul locației de memorie 40000 în
procesor.
– 2. Dacă această valoare este > 100, continuați cu
instrucțiunea care este stocată în locația de memorie
11280.
Cod mașină și limbaje de programare

• Instrucțiunile pentru mașină sunt codificate ca numere,


astfel încât acestea să poată fi stocate în memorie.
• Pe un procesor Intel Atom, această secvență de
instrucțiuni din diapozitivul anterior este codificată ca
secvența de numere

161 40000 45 100 127 11280

• Pe un procesor de la un alt producător, codificarea ar fi


diferită.
Limbaje de nivel înalt și Compilatorul

• Limbajele de nivel înalt, cum ar fi C++, sunt independente


de tipul procesorului și de hardware. Ele vor lucra la fel de
bine:
– pe un procesor Intel Atom și pe un procesor
– dintr-un telefon mobil
• Compilatorul
– un program special de calculator, care traduce descrierea de nivel
înalt (un program) în instrucțiuni mașină pentru un anumit
procesor.
• Limbaj de nivel scăzut: codul mașină pentru un anumit
CPU
– instrucțiunile în limbaj mașină generate de compilatoare sunt
diferite, dar programatorul care utilizează compilatorul nu trebuie
să se îngrijoreze de aceste diferențe.
Evolutia limbajului C++
• Istoria veche (înainte de 1972)
• C (1972)
• Standardul ANSI C (1989)
• Între timp, Bjarne Stroustrup de la AT&T adaugă
caracteristici ale limbajului Simula (un limbaj orientat pe
obiecte conceput pentru a efectua simulări) la C
rezultând:
• C ++(1985)
Evolutia limbajului C++
• Istoria veche (înainte de 1972)
• C (1972)
• Standard ANSI C (1989)
• Între timp, Bjarne Stroustrup de la AT&T adaugă
caracteristici ale limbajului Simula (un limbaj orientat pe
obiecte conceput pentru a efectua simulări) la C
rezultând:
• C ++(1985)
• Standard ANSI C ++(1998) revizuit 2003
• Standard ANSI C ++(2011, 2014, 2017)
• Prezentul C ++
– un limbaj cu scop general care este utilizat pe scară largă
pentru sisteme și încorporat
– limbajul cel mai frecvent utilizat pentru dezvoltarea de
software de sistem, cum ar fi bazele de date și sistemele
de operare

... viitorul: un alt standard (2020?)


Familiarizarea cu mediul dvs. de programare

• Veți avea nevoie să știți cum să vă conectați (dacă este


necesar),
• și, cum să porniți mediul de dezvoltare C++.
Un IDE (mediu integrat de dezvoltare) este locul unde
veți lucra cel mai probabil.
Familiarizarea cu mediul dvs. de programare

• Veți deveni un dactilograf pentru că veți folosi un editor


pentru a tasta programele dvs. C++ în IDE.
Programul dvs. se numește fișier sursă.
Familiarizarea cu mediul dvs. de programare

• Va trebui să învățați cum să compilați și să rulați


programul dumneavoastră în IDE.
Familiarizarea cu mediul dvs. de programare

• În spatele scenei, în IDE se întâmplă multe lucruri pe


care nu le vedeți, în mod normal:
Familiarizarea cu mediul dvs. de programare

• Compilatorul traduce programele C++ în cod mașină.


• Editorul de legături combină codul mașină cu codul


bibliotecilor într-un program executabil.
Bucla de editare-compilare-rulare

Acest proces
reflectă modul de
lucru al
programatorilor

(prezentat ca o
diagramă)
Familiarizarea cu mediul dvs. de programare
• Veți avea nevoie să cunoașteți sistemul de fișiere al
computerului dvs.: fișiere, dosare și extensii.
Fișierele programelor C ++ au de obicei extensia:
.cpp (sau .cc sau .cxx sau chiar .C).
• Ar trebui să fiți organizat prin crearea de dosare pentru
gruparea fișierelor.
Familiarizarea cu mediul dvs. de programare

și
TREBUIE să știți:

1. CUM SĂ FACEȚI COPIE DE REZERVĂ LA CE


LUCRAȚI

2. CUM SĂ VĂ SALVAȚI MUNCA


(același lucru cu realizarea unei copii de rezervă).

3. CUM SĂ VĂ SALVAȚI MUNCA PRIN REALIZAREA


UNEI COPII DE REZERVĂ
(des astfel încât veți ști că acest lucru este foarte
important).
Familiarizarea cu mediul dvs. de programare

Și, în cele din urmă…


Familiarizarea cu mediul dvs. de programare

Faceți
copie de rezervă la ce lucrați!!!
Analizarea primului dvs. program

• În acest moment vom analiza primul program, clasic, pe


care îl scriu toți: Hello World! (Salut Lume!)
– (da, toată lumea a început cu programul acesta)
• Misiunea lui este de a scrie cuvintele
Hello World! pe ecran.
1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program
Analizarea primului dvs. program

• Prima linie spune compilatorului să includă un serviciu


pentru "intrare / ieșire de flux". Mai târziu veți afla mai
multe despre acest lucru, dar, deocamdată, trebuie să
știți doar că este necesar ca să scrieți pe ecran.

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program

• A doua linie spune compilatorului să utilizeze "spațiul de


nume standard". Din nou, mai multe, mai târziu, dar
pentru moment, acest lucru este folosit împreună cu
prima linie de ieșire - și cu siguranță dorim o ieșire
"standard" - nimic fantezist încă.

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program

• Următorul set de cod definește o funcție.


Numele acestei funcții este main (principală).

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program

• Funcția main "returnează" un "număr întreg" (adică un


număr fără parte fracționară, numit int în C ++) cu
valoarea 0. Această valoare indică faptul că programul
s-a terminat cu succes.

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program

• Pentru a afișa ieșirea pe ecran, folosim o entitate numită


cout.
• Ceea ce doriți să vedeți pe ecran este "trimis" entității
cout utilizând operatorul << (numit uneori operatorul de
inserare): << "Hello, World!"

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program

• Puteți afișa mai multe lucruri prin re-utilizarea


operatorului <<: << "Hello, World!" << endl;

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Analizarea primului dvs. program

Declarația pentru extragerea rezultatelor

cout << "Hello World!" << endl;


este o declaratie de ieșire.
Analizarea primului dvs. program

Declarația de ieșire

cout << - Hello lume!" << endl;

• Pentru a afișa valori pe ecran, le trimiteți unei entități


numită cout.
Analizarea primului dvs. program

Declarația de ieșire

cout << - Hello lume!" << endl;

• Pentru a afișa valori pe ecran, le trimiteți unei entități


numită cout.

• Operatorul << indică comanda "trimite la".


Analizarea primului dvs. program

cout << "Hello World! " << endl;

• "Hello World!" se numește string (șir de caractere).


• Trebuie să puneți acele ghilimele în jurul șirurilor.

• Simbolul endl indică un marcator sfârșit de linie care


determină cursorul să se deplaseze la rândul următor al
ecranului.
Analizarea primului dvs. program

• Fiecare declarație din C++ se termină cu punct și virgulă.

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl;
8 return 0;
9 }
Erori

AH!!!!
Eroare obișnuită - omiterea semnului punct și virgulă

Eroare obișnuită
Oh, nu!
Omiterea semnului punct și virgulă

1 #include <iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 cout << "Hello, World!" << endl
8 return 0;
9 }
Erori

Fără acest punct și virgulă ați scris:


7 cout << "Hello, World!" << endl return 0;
8 }

care încurcă complet compilatorul!

Aceasta este o eroare de compilare sau eroare de


sintaxă.

O eroare de sintaxă este o parte din program care nu


respectă regulile limbajului de programare.
Erori

Să presupunem că ai scris (accidental desigur):

cot << "Hello World!" << endl;

• Aceasta va provoca o eroare de compilare și


compilatorul se va plânge că nu are nicio idee despre ce
spui prin cot.
Formularea exactă a mesajului de eroare depinde de
compilator, dar ar putea fi ceva de forma
"cot simbol nedefinit".
Erori - Câte erori?

• Compilatorul nu va înceta compilarea și, cel mai


probabil, va lista o mulțime de erori cauzate de prima pe
care a întâlnit-o.
• Ar trebui să remediați numai acele mesaje de eroare
care au sens, începând cu prima și apoi recompilați
(după ce ați SALVAT, desigur!).
Erori

Limbajul C++

– are dispunere în formă liberă

int main(){cout<<"Hello, World!"<<endl;return 0;}

– va funcționa (dar este practic imposibil de citit)

Un program bun este lizibil.


Erori

Luați în considerare aceasta:

cout << "Hollo, World!" << endl;

• Erori logice sau erori de execuție sunt erori într-un


program care compilează (sintaxa este corectă), dar
execuția lui nu duce la acțiunea dorită.
nu este chiar o eroare?
Erori

cout << "Hollo, World!" << endl;

• Programatorul este responsabil pentru inspectarea și


testarea programului pentru a evita erorile logice.

într-adevăr o eroare!
Erori

Unele tipuri de erori de execuție sunt atât de grave încât


generează o excepție: un semnal de la procesor care
întrerupe programul cu un mesaj de eroare.

De exemplu, dacă programul dumneavoastră include


declarația

cout << 1/0;

programul dvs. se poate termina cu o excepție


"împărțire la zero".
Erori

• Fiecare program C ++ trebuie să aibă numai o singură


funcție main .

• Cele mai multe programe C ++ conțin și alte funcții pe


lângă funcția main (mai multe despre funcții mai târziu).
Erori

Limbajul C++
– face diferența între majuscule și minuscule.
Introducând:

int Main()

va compila dar nu se vor edita legăturile.

O eroare de timp de legătură apare aici când editorul


de legături nu poate găsi funcția main – pentru că nu
ați definit o funcție numită main. (Main este bine ca
nume, dar nu este același lucru cu main și trebuie să
existe un main undeva.)
Procesul de dezvoltare software

Pentru fiecare
problemă
programatorul trece
prin aceste etape
Descrierea unui algoritm cu pseudocod

Limbajul pseudocod

• O descriere informală
• Nu într-un limbaj pe care un calculator îl poate înțelege,
dar ușor de tradus într-un limbaj de nivel înalt (cum ar fi
C ++).
Descrierea unui algoritm cu pseudocod

Metoda descrisă în pseudocod trebuie să fie


• Precisă
– Există instrucțiuni precise pentru ce trebuie făcut la
fiecare pas
– și apoi unde să continue.
• Executabilă
– Fiecare pas poate fi realizat în practică.
• Limitată în timp
– În cele din urmă se va termina.
Descrierea unui algoritm cu pseudocod

Luați în considerare această problemă:

• Aveți posibilitatea de a alege să cumpărați două mașini.


• Una este mai eficientă la consumul de combustibil decât
cealaltă, dar și mai scumpă.
• Știți prețul și consumul de combustibil (în litri la suta de
km, l/100km) pentru ambele mașini.
• Aveți de gând să păstrați mașina timp de zece ani.
• Să presupunem că prețul combustibilului este de 1.5
Euro la litru și aveți o utilizare medie a mașinii de 15.000
de km pe an.
• Veți plăti numerar pentru mașină și nu vă faceți griji cu
privire la costurile de finanțare.

Care mașină este mai convenabilă?


Descrierea unui algoritm cu pseudocod

Pasul 1 Determină intrările și ieșirile.

În problema noastră de mai înainte, avem aceste intrări:

• prețul_de_achiziție1 și consumul_de_combustibil1
prețul și consumul de combustibil (în l/100km) al primei
mașini
• prețul_de_achiziție2 și consumul_de_combustibil2
prețul și consumul de combustibil (în l/100km) al celei
de-a doua mașini

Vrem pur și simplu să știm care este cea mai bună


variantă.
Aceasta este ceea ce ne dorim.
Descrierea unui algoritm cu pseudocod

Pasul 2 Împărțiți problema în sarcini mai mici.


Ce vom face pentru fiecare mașină?

1. Costul total al unei mașini este


prețul de achiziție + costul de funcționare
2. Presupunem o utilizare și un preț al combustibilului
constante timp de zece ani, astfel încât costul de
funcționare depinde de costul conducerii mașinii timp de
un an.
Costul de funcționare este
10 x costul anual al combustibilului
3. Costul anual al combustibilului este
prețul pe litru x cantitatea de combustibil anual
consumat
4. Combustibilul anual consumat este
nr de km parcurși anual / consumul de combustibil
Descrierea unui algoritm cu pseudocod

Pasul 3 Descrieți fiecare sub-sarcină în pseudocod.


Va trebui să aranjați pașii astfel încât orice valori intermediare
să fie calculate înainte de a fi necesare în alte calcule.

Pentru fiecare mașină, calculați costul total după cum urmează:


combustibilul anual consumat =nr de km parcurși anual / consumul de
combustibil
costul anual al combustibilului =prețul pe litru x cantitatea de
combustibil anual consumat
costul de funcționare =10 x costul anual al combustibilului
costul total = prețul de achiziție + costul de funcționare

If costul total1 < costul total2


Alegeți mașina1
Else
Alegeți mașina2
Descrierea unui algoritm cu pseudocod

Step 4 Testați pseudocodul rezolvând o problemă.


Utilizați aceste valori de probă:
• Mașina 1: 25.000 Euro, 6 litri/100
• Mașina 2: 20.000 Euro, 9 litri/100

PRIMA MAȘINĂ:
consum anual combustibil=
cost combustibil anual=
cost funcționare=
cost total=

A DOUA MAȘINĂ:
(să presupunem că ați calculat deja) costul total =

If costul total1 < costul total2…

Algoritmul spune: ALEGEȚI ___________ MAȘINĂ


Rezumatul capitolului

Definiți "program pentru calculator" și programare.


• Calculatoarele execută instrucțiuni de bază în succesiune
rapidă.
• Un program de calculator este o secvență de instrucțiuni și
decizii.
• Programarea este actul de proiectare și implementare
a programelor de calculator.

Descrieți componentele unui calculator.


• Unitatea centrală de procesare (CPU) efectuează controlul
programului și prelucrarea datelor.
• Dispozitivele de stocare includ memoria și dispozitivele de
stocare secundară.
Rezumatul capitolului
Descrieți procesul de traducere a limbajelor de nivel înalt
în codul mașinii.

• Programele de calculator sunt stocate ca instrucțiuni de


mașină într-un cod care depinde de tipul procesorului.
• C ++ este un limbaj cu scop general care este utilizat pe scară
largă pentru sisteme și programare încorporată.
• Limbajele de programare de nivel înalt sunt independente
de procesor.
Rezumatul capitolului

Familiarizați-vă cu mediul de programare C ++.


• Păstrați-vă puțin timp pentru a vă familiariza cu mediul
de programare pe care îl veți folosi pentru temele din clasă.
• Un editor este un program pentru introducerea și modificarea
textului, cum ar fi un program C ++.
• C ++ face diferența între majuscule și minuscule. Trebuie să
aveți grijă să faceți diferența între literele mari și literele mici.
• Elaborați o strategie pentru păstrarea copiilor de rezervă ale
muncii dvs. înainte să se producă un dezastru.

• Compilatorul traduce programele C++ în cod mașină.


• Editorul de legături combină codul mașină cu codul
bibliotecilor într-un program executabil.
Rezumatul capitolului
Descrieți blocurile de bază ale unui program simplu.
• Fiecare program C ++ conține o funcție numită main
(principală).
• Utilizați cout și operatorul << pentru a afișa valorile pe ecran.
• Închideți șirurile de text din ghilimele “”.
• Utilizați + pentru a aduna două numere și * pentru a înmulți
două numere.
• Trimiteți endl la cout pentru a încheia o linie de ieșire afișată.
• Terminați fiecare declarație cu punct și virgulă ;

Scrieți pseudocod pentru algoritmi simpli.


• Pseudocodul este o descriere informală a unei secvențe de
pași pentru rezolvarea unei probleme.
• Un algoritm pentru rezolvarea unei probleme este o secvență
de pași care este neechivocă, executabilă și finită.
Rezumatul capitolului
Clasificați erorile de program ca erori de compilare și
erori de execuție.

• O eroare de compilare este o încălcare a regulilor


limbajului de programare detectată de compilator.

• O eroare de execuție determină ca un program să ia o acțiune


pe care programatorul nu a intenționat-o.

• Programatorul este responsabil pentru inspectarea și testarea


programului pentru a evita erorile de execuție.
Sfârșit: Capitolul Unu

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