Sunteți pe pagina 1din 27

Limbajul C

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

• caracter = toate caract. alfanumerice, semnele de punctuatie,


tastele de control si simboluri speciale
• ASCII – American Standard Code for Information Exchange
-de ex. : ‘A’ = 65, ‘#’ = 35, ‘z’ = 122

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

′V′ ′I′ ′S′ ′U ′A′ ′L′ ′ ′ ′C′ ′+′ ′+′ ′\0′


[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

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)

1.1. Constante intregi


– zecimale: 100, 15, -23
– octale: 010 – incep cu 0
– hexazecimale: 0xAB, 0X10
PCLP2 - 14
Constante si variabile (3)
1.2. Constante reale
– ex.: 100.5, 10., 12.4E-2, 19.723e-7, 1927.0

1.3. Constante caracter


– exceptii: ' \\ ' , ' \″ ', ' \ ' '
– caractere negrafice: ' \ddd‘, unde ddd este simbolul in
octal ' \42'= ' \″ '

1.4. Constante sir de caracter


– ″Visual C++″, ″Mediul \″Visual C++\″ ″
– ex. : const char Nume[]= ″Popescu″

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>];

ex.: int A=7;


float rata = 0.02;
float Tensiune, Rezistenta, Curent=15.45;
char zileleSaptamanii[9];
char zileleSaptamanii[]= ″miercuri″;

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;

b) enum luna_anului {ileg, ian, feb, mar, apr, …, nov, dec};


enum luna_anului luna;

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;

if(luna>=ian && luna<=dec)


printf(″Este o luna a anului!\n″);
Obs. Elementele sirului nu se pun intre ″
PCLP2 - 18
Tipul enumerat (3)
• ex.:
enum culoare {alb, galben, rosu=10, albastru, negru};
alb -> 0
galben -> 1
rosu -> 10
albastru->11
negru ->12

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)

unde: - ‘-’ - aliniere la stanga o int (octal)


- mmm - nr. de campuri x, X int (hexazecimal)
- incepe cu 0 daca spatiile ld, lo, lx, lX long
libere se compl. cu 0 u unsigned
- nnn – precizia de scriere lu unsigned long
- cc – specificator de conversie f float (f. zecimal)
e, E float (f.exponential)
Caractere speciale: g, G float (spatiul min.)
\n -> Enter lf, le, lE, lg, lG double
\t -> Tab Lf, Le, LE, Lg, LG long double
PCLP2 - 21
Functia de iesire printf() (3)
Exemplul 1. Sa se afiseze pe monitor textul: Limbajul C.
#include <stdio.h>
void main()
{ printf(″Limbajul C″);
}
-----------------------------------------------------

#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

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