0% au considerat acest document util (0 voturi)
5 vizualizări36 pagini

Curs Programare

Informatica

Încărcat de

Cristina Stan
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
5 vizualizări36 pagini

Curs Programare

Informatica

Încărcat de

Cristina Stan
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Programarea

calculatoarelor

Curs 2
Elementele limbajului C

Conf. dr. ing. Anca Morar


[Link]@[Link]
Simboluri

• Un simbol poate fi
• Un cuvânt cheie
• Un identificator
• O constantă
• Un șir de caractere

• Simbolul ; - terminator de instrucțiuni


• Comentariile – secvențe ignorate la compilare
• Încep cu /* și se termină cu */
• Comentariu pe linie – începe cu //
Identificatori

• Un identificator
• Un nume utilizat pentru a identifica o variabilă, o funcție, sau orice alt element
definit de utilizator
• Conține litere mari sau mici, cifre, liniuța de subliniere _
• Primul caracter – obligatoriu literă sau liniuța de subliniere
• C e limbaj case sensitive – face diferența între litere mari și mici
• Cuvinte cheie
• Rezervate limbajului
• Exemple: sizeof, volatile, default, int, struct, double, if,
static
Tipuri de date

• O variabilă sau o constantă – caracterizată prin


• nume
• tip de dată
• adresă de memorie
• Un tip de date definește
• gama de valori pe care o poate lua o variabilă de un anume tip
• operațiile care se pot efectua asupra variabilei
Tipuri de date
1. Tipuri de bază
• Tipuri întregi
o char – reprezentat pe un octet
• signed char – valori cuprinse între -127 și 128
• unsigned char – valori cuprinse între 0 și 255
o unsigned char – 1 octet, valori cuprinse între 0 și 255
o int – reprezentat pe 2 sau 4 octeți, în funcție de compilator
• pe Windows – 4 octeți, valori cuprinse între -231 și 231-1 (de la -[Link] la
[Link])
o unsigned int – valori întregi pozitive, reprezentate pe 2 sau 4 octeți
• pe Windows – 4 octeți, valori cuprinse între 0 și 232-1 (de la 0 la [Link])
o short int – 2 octeți, valori între -32.768 și 32.767
o unsigned short int - 2 octeți, valori cuprinse între 0 și 65.535
o long int și unsigned long int – cel puțin 4 octeți
Tipuri de date
1. Tipuri de bază
• Tipurile în virgulă mobilă
o float – număr real, reprezentat pe 4 octeți, cu valori cuprinse între 1.2E-38 și 3.4E+38.
• Precizia de reprezentare este de 6 zecimale
o double – număr real, reprezentat pe 8 octeți, cu valori cuprinse între 2.3E-308 și
1.7E+308.
• Precizia de reprezentare este de 15 zecimale
o long double - număr real, reprezentat pe 10 octeți, cu valori cuprinse între 3.4E-4932
și 1.1E+4932
• Precizia de reprezentare este de 19 zecimale
Tipuri de date

2. Tipul void
• Utilizat în următoarele situații
• funcțiile ce nu returnează nicio valoare
• Ex: funcția void citire(int n, int v[100]), care citește cele n valori întregi ale
tabloului v;
• funcțiile fără parametri.
• Ex: funcția int main() poate fi scrisă și ca int main(void).
• Un pointer către tipul void* reprezintă adresa unui obiect.
• Ex: funcția de alocare a memoriei void* malloc(size_t size) returnează un
pointer către tipul void care poate fi convertit la orice tip de date.
Tipuri de date
3. Tipurile de date derivate
• tipul pointer
• tipul tablou (tip de date agregate)
• tipul structură (tip de date agregate)
• tipul uniune
• tipul funcție (tipul de date returnat de o funcție)
Tipuri de date

Pentru a determina
dimensiunea unei
variabile sau a unui
tip de date –
operatorul sizeof
Variabile
• Declararea unei variabile spune compilatorului unde
și cât spațiu de stocare trebuie creat pentru variabilă
• tip listaVaribile

• Definirea unei variabile


• tip numeVariabila = valoare
Constante
• Au valori fixe în program (nu se modifică în
timpul execuției)
• Tip: întreg, real, șir de caractere (caracter –
folosind apostrof ‘a’, șir – folosind ghilimele
“Anca”
• Se definesc folosind
• directiva #define
• #define identificator valoare
• cuvântul cheie const (pentru constante
de un anumit tip)
• const tip variabila = valoare;
Constante
• Orice încercare de modificare a unei
constante – eroare de compilare
Funcții de citire și scriere

• Funcții generale de intrare/ieșire cu format


• scanf
• printf
• Funcții speciale de intrare ieșire
• Pentru citirea și scrierea caracterelor
• Pentru citirea și scrierea șirurilor de caractere
Funcții de citire și scriere – printf

• int printf(format, argumente);


• format – un șir de caractere ce poate conține
• mesaje către utilizator
• secvențe escape
• o listă a descriptorilor de format care specifică tipul de date al variabilelor care se
vor afișa
• argumente – variabilele afișate
• funcția returnează numărul de variabile afișate sau o valoare negativă în caz de
eroare
Funcții de citire și scriere – printf
Descriptori comuni

Descriptor de format Scop


%d sau %i Numere întregi zecimale cu semn
%u Numere întregi zecimale fără semn
%f Numere reale cu 6 cifre zecimale
%e sau % E Numere reale în notație științifică
%x sau %X Numere hexazecimale (baza 16) fără semn (litere mici/mari)
%c Caracter
%o Octal (baza 8)
%s Șir de caractere
%p Pointer (adrese de variabile)
Funcții de citire și scriere – printf
Descriptori des utilizați

• pentru long int:


• %ld, %li, %lu, %lo sau %lx
• pentru short int:
• %hd, %hi, %hu, %ho sau %hx
• pentru double:
• %lf, %le sau %lE
• pentru long double:
• %Lf, %Le sau %LE
Funcții de citire și
scriere – printf
Funcții de citire și scriere – scanf

• int scanf(format, argumente);


• format – un șir de caractere ce conține o
listă de descriptori de format pentru
variabilele ce se vor citi, spații și alte
caractere
• argumente – lista de variabile ce se
citesc, sub forma: &variabila1,
&variabila2 etc.
• returnează numărul de variabile citite sau
EOF (egal cu -1) în cazul unor erori.
Funcții de citire și scriere pentru caractere
getchar și putchar
• int getchar(void);
• returnează următorul caracter citit sau
EOF dacă s-a ajuns la sfârșitul șirului
sau are loc o eroare
• int puctchar(char);
• afișează caracterul având codul ASCII
egal cu valoarea expresiei parametru
Funcții de citire și scriere - șiruri de caractere
gets și puts
• char *gets(char *str)
• citește un șir de caractere de
la tastatură în variabila s
• nu se mai folosește (este
“deprecated” – generează
atenționări
• int puts(const char *str)
• realizează afișarea șirului dat
ca parametru, pe ecran
Funcții de citire și scriere - șiruri de caractere
gets și puts
• char *fgets(char *str, int n, FILE *stream)
• Alternativă pentru gets
Operatori
• Un operator – un simbol care spune compilatorului să realizeze o anumită
funcție matematică sau logică
• Operatori
• Unari, binari, ternari
• Aritmetici, relationali, logici, la nivel de bit, de atribuire
Operatori – Operatori aritmetici
Operator Descriere Exemplu a=5 b=3
+ Adună doi operanzi a + b = 8
- Scade al doilea operand din primul a – b = 2
* Înmulțește doi operanzi a * b = 15
/ Obține câtul împărțirii primului operand la cel a / b = 1
de-al doilea
% Obține restul împărțirii primului operand la cel a % b = 2
de-al doilea
++ Incrementează operandul cu 1 a ++ va fi egal cu 6
-- Decrementează operandul cu 1 b -- va fi egal cu 2
Operatori
Operatori aritmetici
• Efectul atribuirii c = a ++ (operator postfixat) :
• Întâi se realizează atribuirea c = a
• c devine 5
• a se incrementează și devine 6
• În final, c = 5 și a = 6
• Efectul atribuirii c = --b:
• b scade și devine 2
• lui c îi este atribuit b (care a fost deja
modificat)
• În final, c = 2 și b = 2
Operatori – Operatori relaționali
Operator Descriere Exemplu a=5 b=3
== Verifică dacă doi operanzi sunt egali a == b nu e adevărat
!= Verifică dacă doi operanzi sunt diferiți a != b e adevărat
> Verifică dacă primul operand e mai mare decât a > b e adevărat
al doilea
< Verifică dacă primul operand e mai mic decât al a < b e fals
doilea
>= Verifică dacă primul operand e mai mare sau a >= b e adevărat
egal cu al doilea
<= Verifică dacă primul operand e mai mic sau egal a <= b e fals
cu al doilea
Operatori
Operatori relaționali
Operatori – Operatori logici
Operator Descriere Exemplu
a = 1 (adevărat)
b = 0 (fals)
&& Operatorul logic ȘI. Dacă ambii operanzi a && b este falsă
sunt diferiți de 0, condiția devine adevărată

|| Operatorul logic SAU. Dacă unul dintre a || b este adevărată


operanzi este diferit de 0, condiția devine
adevărată
! Operatorul logic NOT. Dacă operandul este ! a este fals
adevărat, atunci prin negare el va deveni fals. ! b este adevărat
Dacă operandul este fals, atunci prin negare
el va deveni adevărat.
Operatori
Operatori logici
a b a&b
0 0 0
0 1 0
1 0 0

Operatori – Operatori pe biți 1 1 1

a b a|b
• Operatorul ȘI: & 0 0 0
• Operatorul SAU: | 0 1 1
• Operatorul XOR (SAU exclusiv): ^
1 0 1
• Reprezentarea pe biți (8 biți, baza 2): 1 1 1
• a = 5 (baza 10), a = 0000 0101 (baza 2), a = 4 +1
• a = 17 (baza 10), a = 0001 0001 (baza 2), a = 16 + 1
a b a^b
• a = 23 (baza 10), a = 0001 0111 (baza 2), a = 16 + 4 + 2 + 1 0 0 0
• a = 45 (baza 10), a = 0010 1101 (baza 2), a = 32 + 8 + 4 + 1 0 1 1
1 0 1
1 1 0
Operatori – Operatori pe biți
Operator Descriere Exemplu
a=5 (8 biți 0000 0101)
b=3 (8 biți 0000 0011)
& Aplică operatorul ȘI pe fiecare pereche de biți a & b = 1
0000 0001
| Aplică operatorul SAU pe fiecare pereche de biți a | b = 7
0000 0111
^ Aplică operatorul XOR pe fiecare pereche de biți a ^ b = 6
0000 0110
~ Complement față de 1 pe biți (se neagă toți biții ~a = -6
numărului) 1111 1010
<< Deplasare stânga pe biți (deplasarea cu 1 bit a << 2 = 20
echivalentă cu înmulțirea cu 2 în baza 10). 0001 0100
>> Deplasare dreapta pe biți a >> 2 = 1
0000 0001
Operatori
Operatori pe biți
Operatori – Operatori de atribuire
Operator Descriere Exemplu
= Operator simplu de atribuire (asignează r = a + b
valoarea operandului din dreapta către r ia valoarea a + b
operandul din stânga)
+= Atribuire cu adunare r += a echivalent cu r = r + a
-= Atribuire cu scădere r -= a echivalent cu r = r – a
*= Atribuire cu înmulțire r *= a echivalent cu r = r * a
/= Atribuire cu împărțire r /= a echivalent cu r = r / a
%= Atribuire cu modulo r %= a echivalent cu r = r % a
<<= Atribuire cu deplasare pe biți la stânga r <<= a echivalent cu r = r << a

>>= Atribuire cu deplasare pe biți la dreapta r >>= a echivalent cu r = r >> a


&= Atribuire cu ȘI pe biți r &= a echivalent cu r = r & a
^= Atribuire cu XOR pe biți r ^= a echivalent cu r = r ^ a
|= Atribuire cu SAU pe biți r |= a echivalent cu r = r | a
Operatori – Alți operatori
Operator Descriere Exemplu

sizeof() Returnează dimensiunea unei variabile sau a sizeof(int) returnează 4


unui tip de date, în octeți
& Returnează adresa unei variabile &n
* Pointer la o variabilă *n
?: Operator condițional ternar max = a > b ? a : b
expresie ? x : y
Dacă expresie e adevărată, atunci x, altfel, y
[] Operator de indexare tablouri v[3] este elementul de pe
poziția a 3-a în tabloul v
, Operator secvență int a = 2, b = 3;
. -> Selecție membru structură și pointer (*elem).membru
elem->membru
Operatori
Alți operatori
Operatori - Conversii de tip
• Implicite – se pot converti operanzii la
tipul operandului cel mai tare
(avansare de tip sau type promotion)
• char și short se convertesc la tipul
int
• Explicite (cast)
• Schimbă temporar tipul de date al
expresiei (tip) expresie
Operatori – Precedența operatorilor
1. [] . -> ++ --
2. ! ~ + - * & (tip) sizeof()
3. * / %
4. + -
5. << >>
6. < <= > >=
7. == !=
8. &
9. ^
10. |
11. &&
12. ||
13. ?:
14. = += -= *= /= %= &= |= ^= <<= >>=
15. ,

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