Documente Academic
Documente Profesional
Documente Cultură
PCLP3 - 1
Ce invatam astazi
• Functia de iesire scanf()
• Alte functii de intrare/iesire
• Operatori
PCLP3 - 2
Functii de
intrare/iesire
PCLP3 - 3
Functia de intrare scanf() (1)
• definita in stdio.h
• returneaza nr. campurilor citite corect sau -1 la eroare
• prototipul:
int scanf(const char *format , arg1 [, arg2, …]);
unde:
- format - sir de caractere (caractere si specificatori de
format)
- arg1, arg2,…- adresele zonelor de memorie unde se
pastreaza datele citite (se utilizeaza & sau numele
tablourilor)
PCLP3 - 4
Functia de intrare scanf() (2)
Litera Tipul datei citite
Specificator de format:
c char
%[mmm]cc s şir de caractere
unde: d int (zecimal)
o int (octal)
- mmm - nr. maxim de campuri citite
x, X int (hexazecimal)
- cc – specificator de conversie u unsigned
ld, lo, lx, lX long
- nr. arg. = nr. specificatorilor de lu unsigned long
format f float
lf double
Lf long double
PCLP3 - 5
Functia de intrare scanf() (3)
• citirea se face din zona tampon asociata fisierului standard de
intrare -> citire numai dupa ce s-a dat Enter
PCLP3 - 8
Functia de intrare scanf() (6)
Exemple:
254
5) int i1; i1 254
scanf( %d , &i1);
int i1; a
scanf( %d , &i1);
PCLP3 - 9
Functia de intrare scanf() (7)
Exemple: a 12
6) int a, b, c; 123456789
scanf( %2d%3d%2d , &a, &b, &c); b 345
c 67
7) int a, b;
scanf( %d , &a);
… 125 7432 a 125
scanf( %d , &b);
b 7432
PCLP3 - 10
Alte functii de intrare (1)
• getch()
– definita in biblioteca conio.h
– citeste fara ecou direct de la tastatura
• caractere cu cod ASCII – returneaza codul
• caractere de control – se apeleaza de doua
ori (prima data returneaza 0 si a doua oara
codul)
• getche()
– definita in biblioteca conio.h
– citeste cu ecou direct de la tastatura
PCLP3 - 11
Alte functii de intrare (2)
• getchar()
– macro definit in biblioteca stdio.h
– citeste cu ecou din zona tampon doar
caracterele cu cod ASCII
• gets(const char *)
– definita in biblioteca stdio.h
– citeste cu ecou caracterele (cu cod ASCII) de
pe o linie, pana la Enter
– pune '\0' la sfarsitul sirului
PCLP3 - 12
Alte functii de iesire (1)
• putch(char)
– definita in biblioteca conio.h
– afiseaza caracterul specificat ca parametru
– returneaza codul imaginii afisate
• putchar(char)
– macro definit in biblioteca stdio.h
– afiseaza caracterul specificat ca parametru
– returneaza valoarea car. afisat sau -1 la eroare
PCLP3 - 13
Alte functii de iesire (2)
• puts(const char *)
– definita in biblioteca stdio.h
– afiseaza caracterele existente in sirul care
incepe la adresa specificata ca parametru
– pune un Enter la sfarsitul sirului de caractere
afisat
– returneaza codul ultimului caracter din sir
sau -1 la eroare
PCLP3 - 14
Exemple functii de intrare/iesire (1)
putchar(c);
2) char nume[30], prenume[30];
gets(nume); Popescu
gets(prenume); Ionel
puts(nume); Popescu
puts(prenume); Ionel
PCLP3 - 15
Exemple functii de intrare/iesire (2)
3) #include <stdio.h>
#include <conio.h>
void main()
{ char nume[30], prenume[30];
printf(″Introduceti numele :″);
gets(nume);
printf(″Introduceti prenumele :″);
gets(prenume);
printf (″Nume: %s\n″, nume);
printf (″Prenume: %s\n″, prenume);
printf (″\nApasati o tasta pentru a termina″);
getch();
}
PCLP3 - 16
Operatori
PCLP3 - 17
Operatori (1)
• Expresie – un operand sau mai multi conectati prin
operatori
• Operanzi
– constante
– variabile
– nume tablou
– nume tip de data
– elementele unui tablou
– apelul unei functii
– expresie intre paranteze
PCLP3 - 18
Operatori (2)
• aritmetici
• de incrementare/decrementare
• booleeni
• de atribuire
• conditional
• dimensiune
• de fortare a tipului
• virgula
• paranteza
PCLP3 - 19
Operatori aritmetici (1)
• inmultire - *
• impartire - /
• modulo - % (doar pentru numere intregi)
• adunare - +
• scadere - -
Obs:
- se efectueaza *, / si % de la stanga la dreapta si
apoi + si – tot de la stanga la dreapta
- operatori binari
PCLP3 - 20
Operatori aritmetici (2)
• exemple:
4*5/2+5%2 = 20/2+1 = 10+1 =11
17%2 = 1
17.0 % 2 = operatie ilegala
17/2 = 8
17.0/2 = 8.5
x=17800+24000-24000 = 41800 -24000
depasire in int
PCLP3 - 21
Operatori aritmetici (3)
Exemplu: Sa se converteasca litera mica citita in litera mare.
#include <conio.h>
void main()
{ putch(getche() – 'a' +'A' );
}
sau
#include <conio.h>
void main()
{ char c;
c = getche();
c = c – 'a' +'A';
putch(c);
}
PCLP3 - 22
Operatori aritmetici (4)
Regula conversiilor implicite – daca operatorul
binar se aplica la operanzi de tipuri diferite:
– char si enum -> int
– un operand long double ->long double
– un operand double -> double
– un operand float -> float
– un operand unsigned long -> unsigned long
– un operand long int -> long int
– unsigned si int -> int
PCLP3 - 23
Operatori aritmetici (5)
Exemplu:
int i;
long double a;
…
b = 3 * a + i;
long double
PCLP3 - 24
Operatori de incrementare/decrementare (1)
• incrementare - ++
preincre. ++x → x = x + 1 ← x++ postincre.
• decrementare - --
predecre. --x → x = x – 1 ← x-- postdecre.
Obs:
– operatori unari
– se aplica numai intregilor
PCLP3 - 25
Operatori de incrementare/decrementare (2)
#include <stdio.h>
void main()
{ int x = 5, y = 10; x=6
printf("x = %d\n", ++x); x=5
printf("x = %d\n", --x); y=4
printf("y = %d\n", (y = ++x - 2)); y=3
x = 5; x=6
printf("y = %d\n", (y = x++ - 2)); y = -1
printf("x = %d\n", x); x = -1
x = 0;
printf("y = %d\n", (y = x-- -1));
printf("x = %d\n", x);
}
PCLP3 - 26
Operatori booleeni (1)
- genereaza un rezultat logic TRUE (≠ 0) sau FALSE (0)
– relationali
– logici
– logici pe biti
1. Operatori relationali
– permit compararea a doua valori de acelasi tip
– se pot compara doua variabile sau expresii
– exceptie: int se poate compara cu float
– ==, !=, <, <=, >, >=
– au prioritate mai mica decat operatorii aritmetici si de
incr/decr
PCLP3 - 27
Operatori booleeni (2)
Exemple:
5 == 5 → 1 (TRUE)
0.025 >= 0.333 → 0 (FALSE)
3 != 3 → 0 (FALSE)
-45.2 < -3 → 1 (TRUE)
'A' < 'Z' → 1 (TRUE)
int x=25, y=-10; x<=y → 0 (FALSE)
PCLP3 - 28
Operatori booleeni (3)
2. Operatori logici
! - negatia logica (NOT) – operator unar,
prioritate mai mare decat operatorii
multiplicativi
A !A
0 1
1 0
PCLP3 - 29
Operatori booleeni (4)
A B A&&B
0 0 0
0 1 0
1 0 0
1 1 1
PCLP3 - 30
Operatori booleeni (5)
|| - SAU logic (OR) – operator binar, are
prioritate mai mica decat operatorul &&
A B A|| B
0 0 0
0 1 1
1 0 1
1 1 1
Obs: expresia se evalueaza de la stanga la dreapta. Daca se
ajunge intr-un punct in care se cunoaste valoarea de adevar a
intregii expresii, atunci restul expresiei nu se mai evalueaza.
PCLP3 - 31
Operatori booleeni (6)
3. Operatori logici pe biti
se aplica la operanzi de tip intreg
~ - complement fata de 1, operator unar
& - SI logic pe biti A B A^B
| - SAU logic pe biti 0 0 0
^ - SAU EXCLUSIV logic pe biti 0 1 1
<< - deplasare stanga 1 0 1
1 1 0
>> - deplasare dreapta
PCLP3 - 32
Operatori booleeni (7)
Exemple:
int a = 9; → 00001001
~a → 11110110
a << 3 → 01001000
a >> 2 → 00000010
int a = 6; → 00000110
int b = 10; → 00001010
a & b → 00000010
a | b → 00001110
a ^ b → 00001100
PCLP3 - 33
Operatori booleeni (8)
Exemplu: Se citeste un numar si daca este in intervalul
[0,100] se afiseaza 1, altfel se afiseaza 0.
#include <stdio.h>
void main()
{ double a;
printf (″Introduceti numarul:″);
scanf (″%lf″, &a);
printf (″a=%lf\t%d\n″,a, a>=0 && a<=100);
}
PCLP3 - 34