Sunteți pe pagina 1din 41

FUNDAMENTELE

PROGRAMĂRII, C++
Conf. univ. dr. Crina Anina Bejan
Lect. univ.dr. Mihaela Daciana Crăciun
Asist. Univ. drd. Antonio Marius Flavius Lupuți
UZ INTERN
Cuprinsul cursului
1. Sisteme de calcul – noțiuni introductive
2. Noțiunea de PROGRAM - ALGORITM
3. Elemente introductive ale limbajului C++
4. Instrucțiunile limbajului C++
5. Tablouri de memorie
6. Șiruri de caractere
7. Funcții

Laborator 8. Operații cu fișiere

Integrated Development Environment – IDE


Code::Blocks – open source
http://www.codeblocks.org/downloads
Evaluare

Examen •Hibrid

Laborator •Evaluări pe parcurs


Condiție prezentare
la examen •Portofoliu teme
Curs: Fundamentele Programării, c++
■ Scop ■ Ipoteze / Presupuneri /Recomandări
– Introducere în gândirea – Nu ati mai folosit c++
computațională – Nu aveți o experiență bogată în programare
– Asimilarea cunștințelor algoritmice – Dacă totuși ați folosit alte limbaje de programare (sau
și de limbaje de programare c++) este SUPER, totuși acest curs vi se adresează
– Înțelegerea codului sursă (altor deoarece aveți posibilitatea de a vă perfecționa
coduri, reutilizare, plagiarism OK – – Dacă nu ați mai avut contact cu programarea s-ar putea
cu limite) la un moment dat să va simțiți frustrați; este normal;
– Înțelegerea scopului și limitelor programarea este o abilitate care se învăță și se
limbajelor de programare (codarea exersează; exersând puteți depăși aceste momente; când
problemelor științifice) vă simțiți frustrați luați o pauză și reîncercați mai târziu
■ Locație – Dacă ați rezolvat problemele propuse în curs și
– Cursuri: ZOOM laborator, nu vă opriți aici, găsiți probleme similare și
– Laboratoare: Sala 103
rezolvași-le. RELUAȚI, RELUAȚI, RELUAȚI!
– Consultații: Sala 119
– Contact: Make it fun! Totul constă în a exersa!!!
■ ratiu_anina@yahoo.com
■ mihaeladacianacraciun@yahoo.com
■ antonio.luputi@gmail.com
RECOMANDĂRI

■ Acordați maximă atenţie enunţurilor problemelor.


■ Analizaţi în detaliu problema de rezolvat.
■ Identificaţi toate situațiile posibile și tratați corespunzător toate cazurile speciale
care pot să apară.
■ Folosiți scrierile imbricate.
■ NU EZITAȚI SĂ PUNEȚI ÎNTREBARI
Bibliografie selectivă
■ T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction to Algorithms. 2nd ed. Cambridge,
MA: MIT Press, 2001. ISBN: 9780262032933 2.
■ D. Knuth, Arta Programarii Calculatoarelor, Vol.1: Algoritmi Fundamentali, Teora, 2000
■ M. Sipser, Introduction to the Theory of Computation. 2nd ed. Boston, MA: Course Technology,
2005. ISBN: 9780534950972.
■ K.Jamsa, L. Klander, Totul despre C și C++, Manual fundamental de programare în C și C++,
Ed. Teora, 2004
■ V. Iordan, Algoritmi si programare in C, Ed.Eurostampa, 2007
■ Siddhartha Rao, C++ in One Hour a Day, Sams Teach Yourself, Pearson Education (US), 2016
■ Subrata Saha, Subhodip Mukherjee, Basic Computation and Programming with C, Cambridge
University Press, 2017
ÎNTREBĂRI?
C++ ????
■ Popularitate
• Foarte mult cod scris in c++
• Un limbaj de programare popular
• Prezent in comunități de programatori (GitHub, stack overflow)

■ Relevant
• Windows, Linux, Mac OSX, Photoshop, Illustrator, MySQL, MongoDB,
Game Engines, etc…
• Amazon, Apple, Microsoft, PayPall, Google, Facebook, MySQL, Oracle,
HP, IBM, etc…
• VR, Unreal Engine, Machine Learning, Networking and Telecom, etc…

■ Performanță ridicată
• Viteză de procesare, flexibilitate, scalabilitate, portabilitate
• Programare procedurala
• Programare orientate pe obiecte

■ Oportunități mari de angajare


• C++ = SALARY++
• Programatorii în c++ sunt căutați continuu
C++ ????
https://www.tiobe.com/tiobe-index/
C++ ????
http://pypl.github.io/PYPL.html

https://spectrum.ieee.org/static/interactive-the-top-
programming-languages-2020
CAPITOLUL 1.
SISTEME DE CALCUL
NOȚIUNI INTRODUCTIVE
Sistem de calcul / calculator / ordinator / computer
■ Un ansamblu de componente electronice (mașină)care permite prelucrarea de date
si informații cu ajutorul unei liste de instrucțiuni (program).

■ CPU = ALU+CU C
P
ALU
CU
Central Processing Unit U
Intrări Ieșiri
Unitatea Centrală de Procesare
– Arthimatic and Logical View MEMORIA
Unitatea Aritmetică și Logică PRINCIPALA
- Procesează operații aritmetice și logice

– Control Unit
Unitatea de Control HDD
- Gestionează resursele sistemului Fișiere
Sistem de calcul / calculator / ordinator / computer

■ HDD (memoria permanentă) – Fișiere

– Fișiere de date C ALU


P
U CU
Intrări Ieșiri
– Fișiere program
MEMORIA
■ Fișierele program salvate pe HDD sunt transferate PRINCIPALA
în memoria de lucru astfel încât instrucțiunile pe de lucru
care le conțin să poată fi executate de CPU working space

HDD
Fișiere
Sistem de calcul / calculator / ordinator / computer

■ Intrări / Ieșiri Output Buffer


Input Buffer

– Input Buffer C ALU


P
U CU
Intrări Ieșiri
– Output Buffer
MEMORIA
PRINCIPALA
de lucru
working space

HDD
Fișiere
Sisteme de operare

1. Windows
2. Linux
3. Mac OS
4. Android
5. iOS

■ Au rolul de a
gestiona resursele
sistemului de calcul
(hard si soft) și de a
furniza utilizatorului
diverse servicii
Sistemul Binar - modul de lucru pentru CPU

■ Sistemul de calcul este un


dispozitiv electronic care
lucrează utilizând curent
electric a cărui tensiune se
măsoară în VOLȚI
Sistemul Binar – cum devine instrucțiune
Sistemul Binar – cum devine instrucțiune
Sistemul Binar – cum devine instrucțiune

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 1
0 0 0 1 0 0 0 1
0 0 1 0 0 1 0 0
1 1 1 1 1 1 1 1
Sistemul Binar – cum devine instrucțiune

215 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20

32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1


a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
b 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0
c 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
d 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1
e 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0
f 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
g 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0
■ 25:2 = 12 rest 1 24 23 22 21 20
■ 12:2 = 6 rest 0 24x1+23x1+22x0+21x0+20x1
■ 25(10)=?(2) ■ 6:2 = 3 rest 0 16 8 4 2 1
=16+8+0+0+1=25
■ 3:2 = 1 rest 1 1 1 0 0 1
■ 1:2 = 0 rest 1
Sisteme de numerație Octal (8) Binar (2) 0, 1,
0, 1, 2, 3, 4, 5, 6, 7
Zecimal (10) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
HexaZecimal (16) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

ZECIMAL BINAR OCTAL HEX ZECIMAL BINAR OCTAL HEX


0 0 0 0 8 1000 10 8
1 1 1 1 9 1001 11 9
2 10 2 2 10 1010 12 A
3 11 3 3 11 1011 13 B
4 100 4 4 12 1100 14 C
5 101 5 5 13 1101 15 D
6 110 6 6 14 1110 16 E
7 111 7 7 15 1111 17 F
16 10000 20 10
CAPITOLUL 2.
NOȚIUNEA DE
PROGRAM - ALGORITM
Program - Algoritm
Program - Algoritm

LN

CPU
LM

LIMBAJ MAȘINA
LIMBAJ NATURAL
Program - Algoritm
Compilator // Interpretor

LIMBAJE DE
LN PROGRAMARE
C++, C#, JAVA,
LM CPU
Python, etc

LIMBAJ MAȘINĂ
LIMBAJ NATURAL Binar (0,1)
Low level language
Program - Algoritm

C++, C#, JAVA,


Python, Visual
Human friendly
Easy to learn Basic, Visual
c++,etc
ASSEMBLY CPU

LIMBAJ
NATURAL ENGLISH LIGHT LIMBAJ DE LIMBAJ MAȘINĂ
LANGUAGES ASAMBLARE Binar (0,1)

High level languages Low level languages


Compiler based languages vs. Interpreter based languages

■ Rolul compilatorului / interpretorului


1. Verificarea erorilor
2. Conversia din limbaj natural în cod mașină
3. Executarea programului (preluarea instrucțiunilor în memoria
principală si executarea acestora de către procesor)
■ Compilatorul nu este implicat în execuția programului
■ Interpretorul este răspunzător de execuția programului
Compiler based languages
Interpreter based languages
Compiler based languages vs. Interpreter based languages
Compiler based Interpreter based
• Transformă codul programului în cod • Preia codul program
mașină (de obicei generează fișiere
• Traduce codul program în cod
de tip exe) care poate fi rulat ulterior
mașină
de câte ori este nevoie
• Execută codul mașină
• Daca sunt prezente erori în program,
compilatorul nu va genera fișierul • Traducerea și execuția au loc linie
executabil cu linie
• După compilare compilatorul își • Nu creează fișiere de tip exe,
încheie sarcinile și nu va fi prezent la traducerea codului în cod mașină se
momentul execuției programului realizează la fiecare execuție
• Programele destinate compilatorului • Programele destinate
pot rula independent (fără prezența interpretoarelor pot rula doar în
compilatorului interiorul interpretorului
• Viteza mare de execuție • Viteză mică de execuție
• Dificil de scris • Ușor de scris
Hybrid programming languages

■ Necesită compilator pentru a crea un


fișier de tip byte code (cod
asemănător limbajelor de asamblare,
destinat să ruleze într-un mediu
virtual – interpretor și nu direct în
CPU)
■ Necesită interpretor pentru execuția
programului
Introducere în Algoritmi
■ Calculatoarele răspund nevoii indivizilor de a automatiza procesul de rezolvare a anumitor
probleme
■ Programarea calculatoarelor se realizează cu ajutorul limbajelor de programare
– Pentru ca un calculator sa execute un program acesta trebuie să îl înțeleagă
– Calculatoarele (deocamdată) nu înțeleg limbajul natural, înțeleg doar limbajul cod mașină
(o secvență de numere și cifre)
– Oamenii (încă) nu pot folosi direct limbajul cod mașină
– Legătura dintre calculatoare și oameni este realizată prin intermediul limbajelor de
programare care sunt traduse calculatoarelor de către compilatoare
■ Limbaj Cod Mașină - Limbaj de Programare – Instrucțiuni – Algoritm – Rezolvare Problemă
Introducere în Algoritmi
■ Există multe definiții ale noțiunii algoritm
■ Pentru fiecare problema P exista date presupuse cunoscute (date initiale pentru algoritmul corespunzator, A) si
rezultate care se cer a fi gasite (date finale). Evident, problema s-ar putea sa nu aiba sens pentru orice date
initiale. Vom spune ca datele pentru care problema P are sens fac parte din domeniul D al algoritmului A.
Rezultatele obtinute fac parte dintr-un domeniu R, astfel ca executand algoritmul A cu datele de intrare xID vom
obtine rezultatele rIR. Vom spune ca A(x)=r si astfel algoritmul A defineste o functie A : D ---> R .
■ Algoritmul
– Reprezintă o mulțime finită de operații, complet ordonată în timp, care pornind de la date de intrare
produce într-un timp finit date de ieșire.
– Redă metoda de rezolvare a unei probleme într-un număr finit de paşi.
– Este general și poate sa fie implementat in unul sau mai multe limbaje de programare. O anumită problemă
poate fi mai ușor sau mai dificil de codificat într-un anumit limbaj de programare
■ Programul este reprezentarea unui algoritm într-un limbaj de programare. Sunt cunoscute mai multe limbaje de
programare, dezvoltate odată cu evoluția calculatoarelor.
■ Programarea este activitatea de elaborare a unui produs program. Are două ramuri importante:
– descrierea algoritmilor;
– codificarea algoritmilor într-un anumit limbaj de programare. Descrierea unui algoritm pentru rezolvarea
unei probleme se poate face prin scheme logice sau într-un limbaj de descriere a algoritmilor, numit şi
pseudocod.
Introducere în Algoritmi

■ Algoritmii au urmatoarele caracteristici:


– generalitate - un algoritm este aplicabil pentru orice date inițiale xID. Deci un algoritm A nu
rezolva problema P cu niște date de intrare, ci o rezolva in general, oricare ar fi aceste date.
– finitudine - textul algoritmului este finit, compus dintr-un număr finit de propoziții. Mai mult,
numărul transformărilor ce trebuie aplicate unei informații admisibile xID pentru a obține
rezultatul final corespunzător este finit.
– unicitate - toate transformările prin care trece informația inițiala pentru a obține
rezultatul rIR sunt bine determinate de regulile algoritmului. Fiecare pas din execuția
algoritmului da rezultate bine determinate si precizează in mod unic pasul următor. Altfel
spus, ori de cate ori am executa algoritmul, pornind de la aceeași informație admisibila xID,
transformările prin care se trece si rezultatele obținute sunt aceleași.
Introducere în Algoritmi
■ În procesul de rezolvare a unei probleme din punct de vedere al programării există două etape:
1. Definirea şi analiza problemei
2. Proiectarea şi implementarea unui algoritm care rezolvă problema
■ Definirea şi analiza problemei poate fi la rândul ei descompusă în:
– specificarea datelor de intrare
– specificarea datelor de ieşire
■ Descrierea unui algoritm pentru rezolvarea unei probleme se poate face prin:
– Scheme logice – reprezentarea grafică a unui algoritm prin blocuri (figuri geometrice)
reprezentand operatiile (pasii) algoritmului, iar ordinea lor de aplicare (succesiunea
operatiilor) este indicata prin sageti. Fiecarui tip de operatie ii este consacrata o figura
geometrica (un bloc tip) in interiorul careia se va inscrie operatia din pasul respectiv.
– Limbaj pseudocod - este format din propoziții care corespund structurilor de calcul folosite
in construirea algoritmilor.
Introducere în Algoritmi
■ Imaginați-va un algoritm/program ca pe o reteta de
prăjitură
■ De avut în vedere faptul că sistemul de calcul
(calculatorul) nu cunoaște nimic altceva decât
instrucțiunile din program (orice acțiune trebuie definită
prin instrucțiuni).
Blocurile schemelor logice

Start

NU DA
Condiție
Stop Instrucțiuni

DA
Condiție

NU
Calcul expresii Condiție DA
Citire/Tipărire Instrucțiuni
Atribuire

NU Instrucțiuni
Blocurile schemelor logice
Start

Stop
Introducere în Algoritmi
// amestecă ingredientele

// adăugarea ingredientelor // adăugare oua


// sparge oua
// adăugare unt
Introducere în Algoritmi
// adăugare vanilie

// adăugare lapte

// sfârșit amestecă
//ingredientele

// sfârșit adăugarea ingredientelor


ÎNTREBĂRI?

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