Sunteți pe pagina 1din 9

Ce stim Ce invatam astazi

• Structura unui program in C


• Tipuri de date simple • Functia de iesire scanf()
– tipul intreg
– tipul real
• Alte functii de intrare/iesire
– tipul caracter (siruri de caractere) • Operatori
• Constante si variabile
• Tipul enumerat
• Functia de iesire printf()

PCLP3 - 1 PCLP3 - 2

Functia de intrare scanf() (1)


• definita in stdio.h
• returneaza nr. campurilor citite corect sau -1 la eroare
Functii de • prototipul:
int scanf(const char *format , arg1 [, arg2, …]);
intrare/iesire 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 - 3 PCLP3 - 4

1
Functia de intrare scanf() (2) Functia de intrare scanf() (3)
• citirea se face din zona tampon asociata fisierului standard de
Litera Tipul datei citite
Specificator de format: intrare -> citire numai dupa ce s-a dat Enter
c char
%[mmm]cc s şir de caractere • caracterele din sirul de control trebuie sa existe la intrare:
unde: d int (zecimal) int x; x=37
o int (octal) scanf(″x=%d″ , &x);
- mmm - nr. maxim de campuri citite
x, X int (hexazecimal)
- cc – specificator de conversie u unsigned • citirea se opreste la primul caracter alb, la caracterul care nu
ld, lo, lx, lX long corespunde tipului citit sau cand numarul maxim de campuri a
- nr. arg. = nr. specificatorilor de lu unsigned long fost citit:
format f float int a,b; 23125
lf double scanf(″%2d%3d″ , &a, &b);
Lf long double =>a=23 si b=125
PCLP3 - 5 PCLP3 - 6

Functia de intrare scanf() (4) Functia de intrare scanf() (5)


Exemple: Exemple:
ab necunoscut
1) char c; 3) char tab1[10], tab2[10];
scanf( %c , &c); scanf( %2s %9s , tab1, tab2);
c <- 'a'
tab1 ′n′ ′e′ ′\0′
2) char tab1[10], tab2[10]; Limbajul C++
scanf( %s , tab1); [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
scanf( %s , tab2);
sau tab2 ′c′ ′u′ ′n′ ′o′ ′s′ ′c′ ′u′ ′t′ ′\0′
scanf( %s %s , tab1, tab2); [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
tab1 ′L′ ′i′ ′m′ ′b′ ′a′ ′j′ ′u′ ′l′ ′\0′ 4) char car[2]; car ′a′ ′\0′
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] scanf( %s , car); a
sau [0] [1]
tab2 ′C′ ′+′ ′+′ ′\0′ char car;
scanf( %c , &car); car ′a′
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
PCLP3 - 7 PCLP3 - 8

2
Functia de intrare scanf() (6) Functia de intrare scanf() (7)
Exemple: Exemple: a 12
254
5) int i1; i1 254
scanf( %d , &i1); 6) int a, b, c; 123456789
scanf( %2d%3d%2d , &a, &b, &c); b 345
c 67
int i1; a
scanf( %d , &i1); 7) int a, b;
scanf( %d , &a);
… 125 7432 a 125
int i1; 254 scanf( %d , &b);
scanf( n=%d , &i1); b 7432

PCLP3 - 9 PCLP3 - 10

Alte functii de intrare (1) Alte functii de intrare (2)


• getch() • getchar()
– definita in biblioteca conio.h – macro definit in biblioteca stdio.h
– citeste fara ecou direct de la tastatura – citeste cu ecou din zona tampon doar
• caractere cu cod ASCII – returneaza codul caracterele cu cod ASCII
• caractere de control – se apeleaza de doua
ori (prima data returneaza 0 si a doua oara • gets(const char *)
codul) – definita in biblioteca stdio.h
• getche() – citeste cu ecou caracterele (cu cod ASCII) de
– definita in biblioteca conio.h pe o linie, pana la Enter
– pune '\0' la sfarsitul sirului
– citeste cu ecou direct de la tastatura
PCLP3 - 11 PCLP3 - 12

3
Alte functii de iesire (1) Alte functii de iesire (2)
• putch(char) • puts(const char *)
– definita in biblioteca conio.h – definita in biblioteca stdio.h
– afiseaza caracterul specificat ca parametru – afiseaza caracterele existente in sirul care
– returneaza codul imaginii afisate incepe la adresa specificata ca parametru
– pune un Enter la sfarsitul sirului de caractere
• putchar(char) afisat
– macro definit in biblioteca stdio.h – returneaza codul ultimului caracter din sir
– afiseaza caracterul specificat ca parametru sau -1 la eroare
– returneaza valoarea car. afisat sau -1 la eroare
PCLP3 - 13 PCLP3 - 14

Exemple functii de intrare/iesire (1) Exemple functii de intrare/iesire (2)


3) #include <stdio.h>
#include <conio.h>
1) char c; abc c 'a'
a void main()
c=getchar(); { char nume[30], prenume[30];
putchar(c); printf(″Introduceti numele :″);
gets(nume);
printf(″Introduceti prenumele :″);
2) char nume[30], prenume[30]; gets(prenume);
gets(nume); Popescu
Ionel printf (″Nume: %s\n″, nume);
gets(prenume); printf (″Prenume: %s\n″, prenume);
puts(nume); Popescu printf (″\nApasati o tasta pentru a termina″);
puts(prenume); Ionel getch();
}
PCLP3 - 15 PCLP3 - 16

4
Operatori (1)
• Expresie – un operand sau mai multi conectati prin
operatori
• Operanzi
Operatori – constante
– variabile
– nume tablou
– nume tip de data
– elementele unui tablou
– apelul unei functii
– expresie intre paranteze
PCLP3 - 17 PCLP3 - 18

Operatori aritmetici (1)


Operatori (2) • inmultire - *
• aritmetici • impartire - /
• de incrementare/decrementare
• modulo - % (doar pentru numere intregi)
• booleeni
• de atribuire • adunare - +
• conditional • scadere - -
• dimensiune
• de fortare a tipului Obs:
• virgula - se efectueaza *, / si % de la stanga la dreapta si
apoi + si – tot de la stanga la dreapta
• paranteza
- operatori binari
PCLP3 - 19 PCLP3 - 20

5
Operatori aritmetici (2) Operatori aritmetici (3)
Exemplu: Sa se converteasca litera mica citita in litera mare.
• exemple:
#include <conio.h>
4*5/2+5%2 = 20/2+1 = 10+1 =11 void main()
{ putch(getche() – 'a' +'A' );
17%2 = 1 }
17.0 % 2 = operatie ilegala sau
#include <conio.h>
17/2 = 8 void main()
{ char c;
17.0/2 = 8.5 c = getche();
c = c – 'a' +'A';
x=17800+24000-24000 = 41800 -24000 putch(c);
depasire in int }
PCLP3 - 21 PCLP3 - 22

Operatori aritmetici (4) Operatori aritmetici (5)


Regula conversiilor implicite – daca operatorul
binar se aplica la operanzi de tipuri diferite: Exemplu:
– char si enum -> int int i;
– un operand long double ->long double long double a;
– un operand double -> double …
– un operand float -> float b = 3 * a + i;
– un operand unsigned long -> unsigned long long double
– un operand long int -> long int
– unsigned si int -> int
PCLP3 - 23 PCLP3 - 24

6
Operatori de incrementare/decrementare (1) Operatori de incrementare/decrementare (2)
#include <stdio.h>
• incrementare - ++ void main()
x=6
preincre. ++x → x = x + 1 ← x++ postincre. { int x = 5, y = 10;
printf("x = %d\n", ++x); x=5
• decrementare - -- printf("x = %d\n", --x); y=4
predecre. --x → x = x – 1 ← x-- postdecre. printf("y = %d\n", (y = ++x - 2)); y=3
x = 5; x=6
printf("y = %d\n", (y = x++ - 2)); y = -1
Obs:
printf("x = %d\n", x); x = -1
– operatori unari x = 0;
– se aplica numai intregilor printf("y = %d\n", (y = x-- -1));
printf("x = %d\n", x);
}
PCLP3 - 25 PCLP3 - 26

Operatori booleeni (1) Operatori booleeni (2)


- genereaza un rezultat logic TRUE (≠ 0) sau FALSE (0) Exemple:
– relationali
– logici 5 == 5 → 1 (TRUE)
– logici pe biti 0.025 >= 0.333 → 0 (FALSE)
3 != 3 → 0 (FALSE)
1. Operatori relationali
– permit compararea a doua valori de acelasi tip -45.2 < -3 → 1 (TRUE)
– se pot compara doua variabile sau expresii 'A' < 'Z' → 1 (TRUE)
– exceptie: int se poate compara cu float int x=25, y=-10; x<=y → 0 (FALSE)
– ==, !=, <, <=, >, >=
– au prioritate mai mica decat operatorii aritmetici si de
incr/decr
PCLP3 - 27 PCLP3 - 28

7
Operatori booleeni (3) Operatori booleeni (4)
2. Operatori logici
&& - SI logic (AND) – operator binar, are prioritate
! - negatia logica (NOT) – operator unar, mai mica decat operatorul de egalitate
prioritate mai mare decat operatorii
multiplicativi A B A&&B
A !A 0 0 0
0 1 0 1 0
1 0 1 0 0
1 1 1

PCLP3 - 29 PCLP3 - 30

Operatori booleeni (5) Operatori booleeni (6)


|| - SAU logic (OR) – operator binar, are 3. Operatori logici pe biti
prioritate mai mica decat operatorul &&  se aplica la operanzi de tip intreg
A B A|| B ~ - complement fata de 1, operator unar
0 0 0 & - SI logic pe biti A B A^B
0 1 1 | - SAU logic pe biti 0 0 0
1 0 1
^ - SAU EXCLUSIV logic pe biti 0 1 1
1 1 1
<< - deplasare stanga 1 0 1
Obs: expresia se evalueaza de la stanga la dreapta. Daca se 1 1 0
ajunge intr-un punct in care se cunoaste valoarea de adevar a >> - deplasare dreapta
intregii expresii, atunci restul expresiei nu se mai evalueaza.
PCLP3 - 31 PCLP3 - 32

8
Operatori booleeni (7) Operatori booleeni (8)
Exemple: Exemplu: Se citeste un numar si daca este in intervalul
int a = 9; → 00001001 [0,100] se afiseaza 1, altfel se afiseaza 0.
~a → 11110110
a << 3 → 01001000 #include <stdio.h>
a >> 2 → 00000010 void main()
{ double a;
int a = 6; → 00000110 printf (″Introduceti numarul:″);
int b = 10; → 00001010 scanf (″%lf″, &a);
a & b → 00000010 printf (″a=%lf\t%d\n″,a, a>=0 && a<=100);
a | b → 00001110 }
a ^ b → 00001100
PCLP3 - 33 PCLP3 - 34

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