際際滷

際際滷Share a Scribd company logo
Programarea calculatoarelor
Curs 2
Continut curs









Constante
Atribuire
Tipul enumerare
Decizie
Ciclu
Operatori
Precedenta operatorilor
Operatori





Relationali
Aritmetici
Pe biti
Unari

 Conversii de tip
Constante
 constante simbolice
#DEFINE NUME
TEXT_CE_INLOCUIESTE_NUMELE
- se inlocuieste ad-literam NUME in program cu
textul de dupa
#DEFINE TRUE 1
#DEFINE FALSE 0
 conventie  litere mari
Constante








12, 0; asimilate int
12345678900, 12L  asimilate long
x, n char
sir de caractere,  char* (string)
123u  unsigned
12.5, 1.5e-2  double
12.4F - float
Declaratii
 toate variabilele trebuie declarate inainte de utilizare
 declaratia contine tipul si una sau mai multe variabile
de acelasi tip ex: int x,y,z;
 se poate efectua initializare la declarare
 ex: char sir*30+=un sir; int x=4;

 const poate specifica faptul ca o variabila nu va fi
schimbata
 ex: const x=5;

 o variabila neinitializata va avea o valoare aleatoare
Expresie
 Expresie primara = variabila sau constanta sau sir de
caractere sau (expresie)
 ex:
 x sau 5 sau sir de caractere sau (x+5)

 expresie = expresii primare carora li se aplica operatori
 ex:
 x+5
 5%2
 (x+5)-(x-5)

 http://www.csci.csusb.edu/dick/samples/c.syntax.html
#string_literal
Atribuire
 variabila = expresie;
 se evalueaza expresia si valoarea acesteia
devine noua valoare a variabilei
 x= y; //atribuie variabilei x valoarea lui y
 Varianta din Pascal x:=y;
Tipul enumerare
 defineste un set de constante numite de tip
intreg
 sintaxa: enum nume_tip {
identificator,
(sau) identificator=valoare
}
 ex:
enum bool {false,true};
enum bool a; //declara un element a de tip bool
Tipul enumerare exemple
Instructiune
 ; (instructiunea vida)
 expresie;
 x+5; y=x;

 apel de functie;
 printf(%dn,x);

 bloc de instructiuni
 {}
Bloc de instructiuni
 bloc de instructiuni = mai multe instructiuni grupate
intre { }
 bloc de instructiuni este echivalent cu o singura
instructiune
 nu se pune ; dupa }
 exemplu:
int main()
{ //inceputul blocului de instructiuni
printf(hello worldn);
return 0;
} //sfarsitul blocului de instructiuni
Decizie
 if (expresie1)
 instructiune1

 else
 instructiune2

 else este optional

 instructiune1 se executa
daca expresie1 este
evaluata la o valoare
diferita de 0
 instructiune2 se executa
daca expresie1 este
evaluata la 0
Decizie (2)
 A programmer is heading out to the grocery
store, so his wife tells him "get a gallon of
milk. If they have eggs, get a dozen." He
returns with 12 gallons of milk.
Decizie (3)  if  else if
 structura folosita cand se pot lua mai multe
decizii diferite in functie de valoarea expresiei
if (delta<0)
printf(ecuatia nu are radacini reale);
else if (delta==0)
printf (ecuatia are 1 radacina reala egala cu
%f, );
else //cazul default  acopera toate celelalte p
printf(ecuatia are 2 radacini reale egale cu %f
si %f, );
Operatori aritmetici
 +,-,*,/,%
 / => impartire intreaga (returneaza catul) daca
operanzii sunt intregi
 / => impartire daca macar unul dintre operanzi
este real
 % - restul impartirii
 / intreaga si % nu au rezultate bine definite in
standard pentru operanzi negativi
exemple operatori aritmetici
Operatori relationali
 operatori relationali: >, <, >=,<=
 operatori egalitate: ==, !=
 observatie:
 x==0 verifica daca x are valoarea 0 si intoarce 1
daca acest lucru se intampla
 x=0 atribuie lui x valoarea 0 si intoarce aceasta
valoare
Operatori logici
 && - si
 || - sau
 !  not (operator unar)
e1

e2

e1&&e2

e1||e2

0

0

0

0

0

1 (!=0)

0

1

1 (!=0)

0

0

1

1 (!=0)

1 (!=0)

1

1

 Observatie
 prin e1=1 intelegem e1 diferit de 0
Operatorul ternar
 Conditie?valoare intoarsa in caz true: valoare
rezultata in caz false
 c?x:y
 Ex:
 a%2?impar:par
 x>0?strict pozitiv:negativ sau 0

 echivalent cu
if(c)
result=x;

else
result=y ;
Exemplu operatori logici + operator
ternar

 "Are you going to sit and type in front of that
thing all day or are you going out with me?" -programmer's girlfriend. "Yes" -- programmer
Operatori pe biti
 pot fi aplicati doar pe variabilele de tip
intreg(char, short, int, long)
 & - and pe biti
 | - sau pe biti
 ^ - xor
 << - shift stanga (inmultire cu 2)
 >> - shift dreapta (impartire intreaga la 2)
Operatori pe biti exemple
Operatori unari
 - => -x;
 incrementare/decrementare
 i++; i--;

 i++ vs ++i
 int a, b=3;
 a=b++;
=>a=3;

int a, b=3
a=++b;
=>a=4
Precedenta operatorilor
 tabelul din Kernighan&Ritchie p. 50
a op b op c = (a op b) op c daca
op are asociativitate stanga
a op b op c = a op (b op c) daca
op are asociativitate dreapta
Instruciuni repetitive  for (;;)
 for( [initializare];[conditie continuare];[actualizari])
instructiune
 initializare  expresie care se executa o singura data inainte
de a se executa instructiunea
 conditie continuare  este evaluata inainte de fiecare
iteratie
 daca are valoarea true (diferit de 0) se executa instructiunea
 daca lipseste conditia se considera ca este adevarata
 daca are valoarea 0 se incheie iteratia, nu se mai executa
instructiunea si se trece la instructiunea urmatoare

 instructiune  se executa daca se evalueaza conditie
continuare la true
 actualizari  expresie care se executa dupa instructiune.
for - exemplu
 A programmer heads out to the store. His wife
says "while you're out, get some milk.
He never came home.

 important  sa ne asiguram ca se ajunge sa se
iasa din for
Instructiuni repetitive while
 while (expresie) instructiune
 se evalueaza expresie
 daca este false nu se executa instructiunea
 daca este true
 se executa instructiunea si se reia procesul
exemple while
 ex1:
int i=1;
while (i>5) printf(%d,i); //nu se executa
niciodata printf
 ex2:
int i=3;
while (i>0){ printf(%dn,i); i--;}
ce afiseaza?
instructiuni repetitive do while
 do instructiune while (expresie);
 singurul tip de instructiune repetitiva dupa
care se pune ;
 expresia este evaluata dupa ce se executa
instructiunea (test final)

More Related Content

Programarea calculatoarelor c2

  • 2. Continut curs Constante Atribuire Tipul enumerare Decizie Ciclu Operatori Precedenta operatorilor Operatori Relationali Aritmetici Pe biti Unari Conversii de tip
  • 3. Constante constante simbolice #DEFINE NUME TEXT_CE_INLOCUIESTE_NUMELE - se inlocuieste ad-literam NUME in program cu textul de dupa #DEFINE TRUE 1 #DEFINE FALSE 0 conventie litere mari
  • 4. Constante 12, 0; asimilate int 12345678900, 12L asimilate long x, n char sir de caractere, char* (string) 123u unsigned 12.5, 1.5e-2 double 12.4F - float
  • 5. Declaratii toate variabilele trebuie declarate inainte de utilizare declaratia contine tipul si una sau mai multe variabile de acelasi tip ex: int x,y,z; se poate efectua initializare la declarare ex: char sir*30+=un sir; int x=4; const poate specifica faptul ca o variabila nu va fi schimbata ex: const x=5; o variabila neinitializata va avea o valoare aleatoare
  • 6. Expresie Expresie primara = variabila sau constanta sau sir de caractere sau (expresie) ex: x sau 5 sau sir de caractere sau (x+5) expresie = expresii primare carora li se aplica operatori ex: x+5 5%2 (x+5)-(x-5) http://www.csci.csusb.edu/dick/samples/c.syntax.html #string_literal
  • 7. Atribuire variabila = expresie; se evalueaza expresia si valoarea acesteia devine noua valoare a variabilei x= y; //atribuie variabilei x valoarea lui y Varianta din Pascal x:=y;
  • 8. Tipul enumerare defineste un set de constante numite de tip intreg sintaxa: enum nume_tip { identificator, (sau) identificator=valoare } ex: enum bool {false,true}; enum bool a; //declara un element a de tip bool
  • 10. Instructiune ; (instructiunea vida) expresie; x+5; y=x; apel de functie; printf(%dn,x); bloc de instructiuni {}
  • 11. Bloc de instructiuni bloc de instructiuni = mai multe instructiuni grupate intre { } bloc de instructiuni este echivalent cu o singura instructiune nu se pune ; dupa } exemplu: int main() { //inceputul blocului de instructiuni printf(hello worldn); return 0; } //sfarsitul blocului de instructiuni
  • 12. Decizie if (expresie1) instructiune1 else instructiune2 else este optional instructiune1 se executa daca expresie1 este evaluata la o valoare diferita de 0 instructiune2 se executa daca expresie1 este evaluata la 0
  • 13. Decizie (2) A programmer is heading out to the grocery store, so his wife tells him "get a gallon of milk. If they have eggs, get a dozen." He returns with 12 gallons of milk.
  • 14. Decizie (3) if else if structura folosita cand se pot lua mai multe decizii diferite in functie de valoarea expresiei if (delta<0) printf(ecuatia nu are radacini reale); else if (delta==0) printf (ecuatia are 1 radacina reala egala cu %f, ); else //cazul default acopera toate celelalte p printf(ecuatia are 2 radacini reale egale cu %f si %f, );
  • 15. Operatori aritmetici +,-,*,/,% / => impartire intreaga (returneaza catul) daca operanzii sunt intregi / => impartire daca macar unul dintre operanzi este real % - restul impartirii / intreaga si % nu au rezultate bine definite in standard pentru operanzi negativi
  • 17. Operatori relationali operatori relationali: >, <, >=,<= operatori egalitate: ==, != observatie: x==0 verifica daca x are valoarea 0 si intoarce 1 daca acest lucru se intampla x=0 atribuie lui x valoarea 0 si intoarce aceasta valoare
  • 18. Operatori logici && - si || - sau ! not (operator unar) e1 e2 e1&&e2 e1||e2 0 0 0 0 0 1 (!=0) 0 1 1 (!=0) 0 0 1 1 (!=0) 1 (!=0) 1 1 Observatie prin e1=1 intelegem e1 diferit de 0
  • 19. Operatorul ternar Conditie?valoare intoarsa in caz true: valoare rezultata in caz false c?x:y Ex: a%2?impar:par x>0?strict pozitiv:negativ sau 0 echivalent cu if(c) result=x; else result=y ;
  • 20. Exemplu operatori logici + operator ternar "Are you going to sit and type in front of that thing all day or are you going out with me?" -programmer's girlfriend. "Yes" -- programmer
  • 21. Operatori pe biti pot fi aplicati doar pe variabilele de tip intreg(char, short, int, long) & - and pe biti | - sau pe biti ^ - xor << - shift stanga (inmultire cu 2) >> - shift dreapta (impartire intreaga la 2)
  • 22. Operatori pe biti exemple
  • 23. Operatori unari - => -x; incrementare/decrementare i++; i--; i++ vs ++i int a, b=3; a=b++; =>a=3; int a, b=3 a=++b; =>a=4
  • 24. Precedenta operatorilor tabelul din Kernighan&Ritchie p. 50 a op b op c = (a op b) op c daca op are asociativitate stanga a op b op c = a op (b op c) daca op are asociativitate dreapta
  • 25. Instruciuni repetitive for (;;) for( [initializare];[conditie continuare];[actualizari]) instructiune initializare expresie care se executa o singura data inainte de a se executa instructiunea conditie continuare este evaluata inainte de fiecare iteratie daca are valoarea true (diferit de 0) se executa instructiunea daca lipseste conditia se considera ca este adevarata daca are valoarea 0 se incheie iteratia, nu se mai executa instructiunea si se trece la instructiunea urmatoare instructiune se executa daca se evalueaza conditie continuare la true actualizari expresie care se executa dupa instructiune.
  • 26. for - exemplu A programmer heads out to the store. His wife says "while you're out, get some milk. He never came home. important sa ne asiguram ca se ajunge sa se iasa din for
  • 27. Instructiuni repetitive while while (expresie) instructiune se evalueaza expresie daca este false nu se executa instructiunea daca este true se executa instructiunea si se reia procesul
  • 28. exemple while ex1: int i=1; while (i>5) printf(%d,i); //nu se executa niciodata printf ex2: int i=3; while (i>0){ printf(%dn,i); i--;} ce afiseaza?
  • 29. instructiuni repetitive do while do instructiune while (expresie); singurul tip de instructiune repetitiva dupa care se pune ; expresia este evaluata dupa ce se executa instructiunea (test final)