Documente Academic
Documente Profesional
Documente Cultură
CALCULATOARELOR - LIMBAJE
https://en.wikipedia.org/wiki/Ken_Thompson
https://en.wikipedia.org/wiki/Dennis_Ritchie
https://en.wikipedia.org/wiki/Brian_Kernighan
https://en.wikipedia.org/wiki/Bjarne_Stroustrup
4
5
Caracteristici:
asigură o foarte bună portabilitate a codului
7
2. ELEMENTE SINTACTICE DE BAZĂ
Cuvinte cheie
Identificatori
Date → Variabile
→ Constante
Operatori
Delimitatori
8
ELEMENTE SINTACTICE DE BAZĂ
Variabile
Permit reprezentarea în program a valorilor unor date,
valori ce pot fi modificate pe parcursul execuţiei
programului
11
ELEMENTE SINTACTICE DE BAZĂ
Constante
23.45
‘A‘
"RRRYYY"
12
ELEMENTE SINTACTICE DE BAZĂ
Operatori
// functia main
int main(void)
{
printf("Hello world");
return 0; 15
}
3. STRUCTURA UNUI PROGRAM C/C++
!!!
Un program C/C++ nu poate avea mai multe funcţii
main()
17
Structura generală a unui program C/C++:
1. comentarii inițiale
2. directive preprocesor, include, define
3, prototipuri de funcţii
4. declaraţii/definiţii globale
5. funcţia main()
6. definire funcţii
18
4. FUNCŢII C/C++
[tip_rezultat] <nume_functie>([lista_parametri_formali])
{
[declaratii_locale]
Corp → blocul
[instructiuni]
asociat
}
Tip rezultat:
specifică tipul de date returnat de funcţie
poate să fie un tip predefinit sau un tip definit de
utilizator
dacă nu este specificat se consideră implicit că este tipul
int
dacă funcţia nu returnează nici un rezultat, se specifică
acest lucru prin tipul void (vid, lipsă)
Nume funcţie:
este un identificator:
se face distincţie între litere mici şi litere mari
21
STRUCTURA UNUI PROGRAM C/C++
22
STRUCTURA UNUI PROGRAM C/C++
23
STRUCTURA UNUI PROGRAM C/C++
25
STRUCTURA UNUI PROGRAM C/C++
Observaţii:
nume_functie([lista_param_actuali]);
Forme: return;
return expresie;
29
REVENIREA DINTR-O FUNCŢIE
#include<stdio.h>
int suma(int, int); Prototipul functiei suma()
int main()
Functia principala (main)
{
int a=5, b=7;
int r=suma(a,b); Apelul functiei suma()
printf(”\nRezultatul adunarii=%d”, r);
return 0;
}
int suma(int x, int y)
{ Definirea functiei suma()
return x+y;
32
}
Cum ruleaza acest program?
Revenind la structura generală a unui program C/C++...
1. comentarii inițiale
2. directive preprocesor, include, define
3, prototipuri de functii ✓
4. declaraţii/definitii globale
5. functia main() ✓
6. definire funcţii ✓
33
5. DIRECTIVE PREPROCESOR
34
DIRECTIVE PREPROCESOR
Forme:
#include <nume_fisier>
#include "nume_fisier" //cautare director curent
Exemple:
#include <stdio.h>
#include "my_def.h“ //director current
#include “D:/users/cpp/my_def.h” //cale orice SO
#include “D:\\users\\cpp\\my_def.h” //cale conventie Windows 35
DIRECTIVE PREPROCESOR
Directiva "define":
#define identificator sir_simboluri
Permite definirea unor constante simbolice și macro
funcții
Identificatorul este înlocuit cu şirul de simboluri, din
poziţia curentă şi până la sfârşitul fişierului sau până la
întâlnirea unei directive #undef ce anulează definiţia
Exemple:
#define PI 3.1415
#define EPS 1.0E-10
#define MAX 100
#define DIM MAX*5
#undef PI
//#define CIRCUM 2*PI*7 36
Structura generală a unui program C/C++:
1. comentarii inițiale
2. directive preprocesor, include, define ✓
3, prototipuri de functii ✓
4. declaraţii/definitii globale
5. functia main() ✓
6. definire funcţii ✓
37
6. COMENTARII
Permit introducerea unor explicaţii în programul sursă
pentru creşterea lizibilităţii programului
Nu sunt luate în considerare de către compilator
39
Exemplul : tot primul program C/C++ - identificarea
structurii programului
int main(void)
{
int numar, rezultat;
printf("Introduceti un numar intreg : ");
scanf("%d", &numar);
rezultat = sqr(numar); // apel functie sqr
printf("%d la patrat = %d \n", numar, rezultat);
// _getch();
return 0;
}
// directive preprocesor
/* includerea unor fisiere antet ce contin prototipurile functiilor din
biblioteca standard folosite in program*/
#include <stdio.h>
// declaratii globale
// tablou de caractere, revenim asupra lor …
char tab[DIM];
// prototipuri functii
void cit_sir(void);
void afis_sir(void); 42
int main(void)
{
cit_sir(); // apel functie de citire sir
afis_sir(); // apel functie de afisare sir
return 0;
}
// functie pentru afisarea unui sir de caractere, preluat din tabloul global
void afis_sir(void)
{
// apel functie din biblioteca standard pentru afisarea unui mesaj
// si a unui sir de caractere 43
printf("\nSirul introdus anterior este : %s\n", tab);
}
Observaţii:
Comentariile pot să apară oriunde poate să apară un
spaţiu alb
44
7. TIPURI DE DATE
Data este o reprezentare a informaţiei prelucrate (număr,
mărime fizică, ...) caracterizată prin valorile pe care le
poate avea, prin operaţiile primitive de transformare şi
prin structură
Tipul unei date determină valorile pe care aceasta le
poate lua, dimensiunea zonei de memorie ocupate şi
modul în care este reprezentată valoarea în memorie
Tipul unei date se specifică prin cuvinte cheie sau prin
identificatori ai tipurilor de date utilizator
Clasificare:
tipuri fundamentale (primitive) (aritmetice, caractere,
siruri de caractere, pointeri, referințe, void)
tipuri derivate (agregate) (tablouri, tipuri definite de
utilizator, liste, etc.)
Altă clasificare:
tipuri predefinite (existente în limbaj)
alte tipuri definite de utilizator
46
Tipuri de date
TIPURI FUNDAMENTALE
Tipul void
Indică absenţa oricărei valori, sau prezența oricărei
valori în unele cazuri
Utilizare: declararea unei funcţii fără parametri sau fără
rezultat (până în această fază)
Tipuri aritmetice
Tipuri de bază: char, int, float, double
bool(C++): true, false, introdus recent cu clase; în C,
Exemple declaraţii:
int a;
float b; Declarații de
double c; variabile
char ch;
50
Constante
Constante întregi
Tipuri: zecimale, octale, hexazecimale
Tipul implicit:
int
long int
unsigned long int
Tipul explicit se precizează prin adăugarea unui sufix
(U,u, L, l):
U, u unsigned int
L, l long int
UL, Ul, ul, uL unsigned long int
51
Long long constants – C++11: sufix ll, LL
CONSTANTE
Constante zecimale (baza 10): prima cifră nu este 0
Constante octale (baza 8): prima cifră este 0, urmată de
cifre octale
Constante hexazecimale (baza 16): prefix 0x sau 0X,
urmat de cifre hexazecimale
Constante binare – C++14 (baza 2): prefix 0b
Exemple:
12, -15, 24u, 43l, 678ul
53
CONSTANTE
Constante reale
Tip implicit: double
Tip explicit: prin sufixe F, f , L, l
F, f float
L, l long double
Se compun din:
o parte întreagă ca o constantă zecimală
54
CONSTANTE
Restricţii:
Partea întreagă şi partea fracţionară nu pot lipsi
simultan
Punctul zecimal pe de-o parte şi simbolul e(E) cu
Exemple:
9.23E6 9.23x106
2e-4 2x10-4
-.45E16 -0.45x1016
.0, 0., 1., 1.0
55
CONSTANTE
Constante caracter
Sunt caractere încadrate între apostrofuri
exemplu: 'a', '0', '+', '$‘
Pentru reprezentarea internă se foloseşte codul ASCII
In C tipul constantei caracter este int, cu octetul mai
semnificativ 0 sau cu extensie de semn şi poate să
apară oriunde poate să apară tipul int
In C++ tipul constantei caracter este char (in mod
uzual un cod ASCII pe un octet);
noile versiuni C++ (de la C++11) permit utilizarea
codurilor UNICODE (din 15 Septembrie 2021 – 14.0.0)
pe 8/16/32 biti, UTF-8, UTF-16, UTF-32) -> tipul
56
wchar_t ( wide char pe 2 sau 4 octeti)
CONSTANTE
Caractere ASCII:
neafişabile: 0...31, DEL (127)
afişabile: spatiu (32), 33...126
din setul extins: 128...255
‘\x61’ a
CONSTANTE
Constante şir de caractere
Sunt succesiuni de caractere delimitate de ghilimele:
Exemplu: "Sir de caractere "
60
9. VARIABILE SIMPLE
Variabila permite reprezentarea în program a valorii unei
date, valoare ce poate fi modificată pe parcursul execuţiei
unui program
61
VARIABILE SIMPLE
Tipul unei variabile se specifică prin cuvinte cheie
Exemple:
int suma;
int suma, produs, media;
char answer ;
Obligatoriu
62
VARIABILE SIMPLE
Observaţii:
1. Declaraţia se termină obligatoriu cu delimitatorul ‘;’
2. Pentru variabile se folosesc, de obicei, litere mici
3. Variabilele declarate în interiorul unei funcţii (bloc) se
numesc variabile locale (automatice), iar cele declarate
în afara oricărei funcţii se numesc variabile globale
4. Fiecărei variabile îi corespunde o zonă din memoria
internă, care are asociate două valori:
adresa zonei de memorie (referinţă, left-value sau
l-value) (poate sta în stânga unui operator de
atribuire)
valoarea memorată (r-value sau right-value) (poate
65
De la versiunea C++11 , cuvântul cheie auto poate fi
utilizat la iniţializarea unei variabile, pentru a specifica
faptul că tipul variabilei declarate va fi dedus automat din
expresia de iniţializare.
Exemplu:
auto x = 4; // x → int
auto y = 3.37; // y → double
auto z = 'x'; // z → char
66
Variabilele globale se alocă în memorie la compilare
şi se iniţializează cu valoarea expresiei
implicit se iniţializează cu zero
67
10. TABLOURI
Un tablou este o listă de elemente de acelaşi tip plasate
succesiv în memorie
Orice tablou are un nume (care este un pointer constant
către primul element din tablou)
Tipul elementelor tabloului reprezintă tipul tabloului
respectiv
Tipuri:
Unidimensionale (uneori numite vectori)
Multidimensionale
68
Tablouri
TABLOURI UNIDIMENSIONALE
Declaraţia tabloului:
tip nume_tablou[dimensiune];
tip este un tip de dată (predefinit sau definit de
utilizator)
nume_tablou este un identificator
[ ] este delimitator
dimensiune este o expresie constantă întreagă şi
pozitivă ce specifică numărul de elemente din tablou
69
Tablouri
Pentru referirea unui element se foloseşte operatorul de
indexare [ ], precizând numele tabloului şi poziţia
elementului în tablou (numită şi index sau indice):
nume_tablou[index]
70
Tablouri
Pe baza numărului de elemente şi a tipului, compilatorul
determină dimensiunea zonei de memorie care se alocă
tabloului, după relaţia:
dimens_memorie = sizeof(tip) * dimensiune
Exemplu:
int tab[100];
72
Tablouri
TABLOURI MULTIDIMENSIONALE
Declaraţie:
tip nume_tablou[dim1][dim2]...[dimN];
73
Tablouri
Exemplu:
int tab[10][20];
Declarare:
char nume_tablou[dimensiune];
int main() {
char str1[] = "This is character array";
cout << str1 << endl;
wchar_t str2[]= L"This is wide character
array";
wcout << str2 << endl;
cin.get();
}
77
CE ŞTIM DUPĂ ACEST CURS ?
78
Tipurile de date fundamentale
Tablouri şi siruri de caractere – declarare, initializare
79
80