Sunteți pe pagina 1din 34

Ce stim

• Structura unui program in C


• Tipuri de date simple
– tipul intreg
– tipul real
– tipul caracter (siruri de caractere)
• Constante si variabile
• Tipul enumerat
• Functia de iesire printf()

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

• caracterele din sirul de control trebuie sa existe la intrare:


int x; x=37
scanf(″x=%d″ , &x);

• citirea se opreste la primul caracter alb, la caracterul care nu


corespunde tipului citit sau cand numarul maxim de campuri a
fost citit:
int a,b; 23125
scanf(″%2d%3d″ , &a, &b);
=>a=23 si b=125
PCLP3 - 6
Functia de intrare scanf() (4)
Exemple:
ab
1) char c;
scanf( %c , &c);
c <- 'a'
2) char tab1[10], tab2[10]; Limbajul C++
scanf( %s , tab1);
scanf( %s , tab2);
sau
scanf( %s %s , tab1, tab2);
tab1 ′L′ ′i′ ′m′ ′b′ ′a′ ′j′ ′u′ ′l′ ′\0′
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

tab2 ′C′ ′+′ ′+′ ′\0′


[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
PCLP3 - 7
Functia de intrare scanf() (5)
Exemple:
3) char tab1[10], tab2[10]; necunoscut
scanf( %2s %9s , tab1, tab2);

tab1 ′n′ ′e′ ′\0′


[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
tab2 ′c′ ′u′ ′n′ ′o′ ′s′ ′c′ ′u′ ′t′ ′\0′
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
4) char car[2]; car ′a′ ′\0′
scanf( %s , car); a
sau [0] [1]
char car;
scanf( %c , &car); car ′a′

PCLP3 - 8
Functia de intrare scanf() (6)
Exemple:
254
5) int i1; i1 254
scanf( %d , &i1);

int i1; a
scanf( %d , &i1);

int i1; 254


scanf( n=%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)

1) char c; abc c 'a'


c=getchar(); a

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)

&& - SI logic (AND) – operator binar, are prioritate


mai mica decat operatorul de egalitate

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

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