Documente Academic
Documente Profesional
Documente Cultură
PCLP2 - 1
Despre ce vom discuta astazi
• Structura unui program in C
• Tipuri de date simple
– tipul intreg
– tipul real
– tipul caracter (siruri de caractere)
• Constante si variabile
• Tipul enumerat
• Functii de intrare/iesire
– printf()
PCLP2 - 2
Structura unui program in C
// un comentariu general
Sectiunea preprocesor
#include <stdio.h>
#define A 3
Sectiunea prototipurilor functiilor utilizator
• limbaj procedural void afisare(int *, int);
Sectiunea de declarare a const. si var. globale
int x,y;
• o colectie de functii .......
Sectiunea functiei principale
• fisierul -> extensia .c int main() /* exista in orice program in C */
{ int a,b; //declararea const. si var. locale
b= a+3*x; //blocul de instructiuni
........
return 0;
}
Sectiunea functiilor utilizator
void afisare(int *a, int n)
{ ........
}
PCLP2 - 3
Structura unui program in C (2)
Exemplu:
// citirea si afisarea unui numar intreg
#include <stdio.h>
int citire_int(void);
void afisare_int(int);
int main()
{ int n;
n = citire_int();
afisare_int(n);
return 0;
}
int citire_int(void)
{ int nr;
scanf(″%d″, &nr);
return nr;
}
void afisare_int(int nr)
{ printf(″\nNumarul introdus este %3d\n″, nr);
}
PCLP2 - 4
Tipuri simple de date
• intreg
• real
• caracter (siruri)
PCLP2 - 5
Tipul intreg
Tipul de intreg Domeniul de valori Nr.octeti
(pr. 16 biti)
int -215…215-1 (-32768 la 32767) 2
long -231…231-1 (-2147483648 la 2147483647) 4
unsigned 0…216-1 (0 la 65535) 2
unsigned long 0…232-1 (0 la 4294967295) 4
• cuvinte cheie
• depasiri - de ex. pt. int : 32*1000
100*1000
(100*1000)/5
PCLP2 - 6
Tipul real (1)
• format zecimal
(+ sau -)(intreg).(intreg)
de ex.: 3.14
-2.56
0.0
+1.414
-3.0
PCLP2 - 7
Tipul real (2)
• format exponential
(+ sau -)(valoare zecimala)e(exponent intreg)
de ex.:
1.32e3 = 1.32 * 103 = 1320.0
0.45e-6 = 0.45 * 10-6 = 0.00000045
-35.02e-4 = -35.02 * 10-4 = -0.003502
-1.333E7 = -1.333 * 107 = -13330000.0
PCLP2 - 8
Tipul real (2)
Octeti
Tipul de real Domeniul de valori necesari
float 3,4 * 10-38 … 3,4 * 1038 ( 7 zecimale prec.) 4
double 2,2 * 10-308 … 1,7 * 103o8 ( 9 zecimale prec.) 8
long double 3,6 * 10-4951 … 1,1 * 104932 (17 zecimale prec.) 10
PCLP2 - 9
Tipul caracter (1)
Octeti
Tipul caracter Domeniul de valori necesari
char -27 … 27-1 ( -128..127) 1
unsigned char 0 … 28 -1 (0..255) 1
PCLP2 - 10
Tipul caracter (2)
• caractere :
– caractere negrafice - [0,31] si 127 pt. DEL
– caractere grafice [33,126]
• toascii(’A’) – returneaza codul ASCII al caracterului
• operatii permise:
- comparare ‘A’ < ‘Z’
- op. aritmetice ‘A’+1 => ‘B’
PCLP2 - 11
Tipul caracter (3)
Siruri de caractere
• tratate in mod special
• ex.: adresa, numele, prenumele,
denumirea disciplinei
PCLP2 - 12
Constante si variabile (1)
• constanta
– are valoare fixa
– NU e stocata in memorie
• variabila
– are valori diferite
– are un nume simbolic
– e stocata in memorie
PCLP2 - 13
Constante si variabile (2)
1. Constanta
– se declara cat mai globala
const <tip_de _data> <identificator> = <valoare constanta>;
ex.: const int A=7; const float rata = 0.02
– identificator
• orice lungime (primele 32 de caractere)
• incepe cu o litera sau ‘_’
• nu contine spatii sau semne de punctuatie
• case sensitive (Visual ≠VISUAL)
PCLP2 - 15
Constante si variabile (4)
2. Variabila
– se declara cat mai locala
<tip_de _data> <identificator> = <valoare_de_initializare>;
<tip_de _data> <identificator>[, <identificator>];
PCLP2 - 16
Tipul enumerat (1)
• definit pt. o anumita aplicatie
• permite definirea unor nume sugestive
enum <identif_tip_de_date> {el1, el2, el3, …, eln};
<identif_tip_de_date> <identif_variabila>;
• ex.:
a) enum Boolean {0, 1};
enum Boolean bool;
PCLP2 - 17
Tipul enumerat (2)
• ex.: const int ian = 1;
const int feb = 2;
const int mar = 3;
…..
const int dec = 12;
altfel:
enum luna_anului {ileg, ian, feb, mar, apr, …, nov, dec};
enum luna_anului luna;
……
luna = 3; sau luna = mar;
luna == 7; sau luna == iul;
PCLP2 - 19
Functia de iesire printf() (1)
• definita in stdio.h
• returneaza nr. de caractere afisate sau -1 la eroare
• prototipul:
int printf(const char *format [,arg1, arg2, …]);
unde:
- format - sir de caractere (caractere, specificatori
de format si caractere speciale)
- arg1, arg2,…- sunt var. sau expresii
- nr. arg. = nr. specificatorilor de format
PCLP2 - 20
Functia de iesire printf() (2)
Specificator de con. Tipul datei citite
Specificator de format: c char
s şir de caractere
%[-mmm.nnn]cc
d int (zecimal)
#include <stdio.h>
int main()
{ printf(″Limbajul C″);
return 0;
}
PCLP2 - 22
Functia de iesire printf() (4)
Exemplul 2. Sa se afiseze pe monitor valoarea unei
variabile intregi si a uneia reale, pe linii diferite.
#include <stdio.h> #include <stdio.h>
int main() int main()
{ int a=14; { int a=14;
float b=3.7634; float b=3.7634;
printf(″a=%d\n″,a); printf(″a=%d\nb=%f\n ″,a,b);
printf(″b=%f\n″,b); return 0;
return 0; }
}
a=14
b=3.763400
PCLP2 - 23
Functia de iesire printf() (5)
• Alte exemple de utilizare:
char sir[]= abc ;
printf( *%10s*\n , sir); => * abc*
char sir[]= abc ;
printf( *%-10s*\n , sir); => *abc *
char sir[]= limbajul C++ ;
printf( *%15.10s*\n , sir); => * limbajul C*
char car= 'A ';
printf( *%-4c*\n , car); => *A *
PCLP2 - 24
Functia de iesire printf() (6)
• Alte exemple de utilizare:
int nr= 123;
printf( *%05d*\n , nr); => *00123*
int nr= 123;
printf( *%-5d*\n , nr); => *123 *
int nr= 12732;
printf( *%3d*\n , nr); => *12732*
int nr= 123;
printf( *%5o*\n , nr); => * 173*
PCLP2 - 25
Functia de iesire printf() (7)
• Alte exemple de utilizare:
float nr= 3.14159265;
printf( *%5f*\n , nr); => *3.141593*
float nr= 3.14159265;
printf ( *%7.2f*\n , nr); => * 3.14*
float nr= 3.14159265;
printf ( *%7.0f*\n , nr); => * 3*
float nr= 3.14159265;
printf( *%e*\n , nr); => *3.141593e+00*
PCLP2 - 26
Functia de iesire printf() (8)
• Alte exemple de utilizare:
float nr= 123.672;
printf( *%7f*\n , nr); => *123.672000*
float nr= 123.672;
printf( *%10.1f*\n , nr); => * 123.7*
float nr= 123.672;
printf( *%e*\n , nr); => *1.236720e+02*
float nr= 123.672;
printf( *%10.2e*\n , nr); => * 1.24e+02*
PCLP2 - 27