Sunteți pe pagina 1din 25

Ce stim pana acum

• Tipuri de date
• Functii de intrare/iesire
• Operatori

PCLP5- 1
In cursul de astazi

• Instructiunea simpla
• Instructiunea compusa
• Instructiuni conditionale (if, switch)
• Instructiuni repetitive (while)

PCLP5- 2
Instructiuni (1)
• structuri fundamentale: secventa, selectia, iteratia
1. Instructiunea vida
;
- utilizata cand se cere prezenta unei instr. dar nu
trebuie sa se execute nimic
int x,y;
2. Instructiunea simpla x=10*y+23;
- instructiunea expresie y++;
expresie;
- instructiunea de apel a unei functii
printf(″Apel de functie\n″); x; ?
PCLP5- 3
Instructiuni (2)
3. Instructiunea compusa
{ instructiune;
instructiune;

instructiune;
}
- utilizata cand se cere prezenta unei instr. si procesul de
calcul necesita mai multe instr.
Exemplu: permutarea valorilor a doua variabile.
{ t= y;
y=x;
x=t;
}
PCLP5- 4
Instructiuni conditionale (1)
A. Instructiunea if
T F
conditie
if(conditie)
instructiune1; instructiune1 instructiune2
else
instructiune2;
sau
T F
conditie
if(conditie)
instructiune; instructiune

PCLP5- 5
Instructiuni conditionale (2)
Exemplu: Sa se scrie un
program care citeste un START

numar intreg de la consola Citeste n

si afiseaza FALS daca A F


n!= 0
numarul este zero si
Scrie Scrie
ADEVARAT daca numarul “ADEVARAT” “FALS”

este diferit de zero.


STOP

PCLP5- 6
Instructiuni conditionale (3)
#include <stdio.h>
#include <conio.h>
void main()
{ int n;
printf(″introduceti un numar intreg:″);
scanf(″%d″, &n);
if(n!=0)
printf(″ADEVARAT\n″);
else
printf(″FALS\n″);
getch();
}
PCLP5- 7
Instructiuni conditionale (4)

START

Citeste n

Un alt mod de rezolvare a F A


n == 0
aceleiasi probleme !!!
Scrie Scrie
“ADEVARAT” “FALS”

STOP

PCLP5- 8
Instructiuni conditionale (5)
#include <stdio.h>
#include <conio.h>
void main()
{ int n;
printf(″introduceti un numar intreg:″);
scanf(″%d″, &n);
if(n==0)
printf(″FALS\n″);
else
printf(″ADEVARAT\n″);
getch();
}
PCLP5- 9
Instructiuni conditionale (6)
START
Exemplu: Sa se scrie un program
care calculeaza valoarea Citeste x

functiei f pentru o valoare A


x<2
F

introdusa de la consola, f = x-2


f=2*x*x-4*x+10
unde:
2x2-4x+10, daca x < 2; Scrie
f
f(x)=
x-2, daca x ≥ 2.
STOP

PCLP5- 10
Instructiuni conditionale (7)
#include <stdio.h>
#include <conio.h>
void main()
{ double x, f;
printf(″introduceti valoarea lui x:″);
scanf(″%lf″, &x);
if(x<2)
f = 2*x*x-4*x+10;
else
f = x-2;
printf(″x=%.2lf, f(x)=%.2lf\n″, x, f);
getch();
}
PCLP5- 11
Instructiuni conditionale (8)
START
Exemplu: Rezolvarea
ecuatiei de gradul I. Citeste a, b

A F
a!=0
ax + b = 0 =>
x=-b/a A F
-b/a, daca a≠0 b == 0
x= nedeterminat, daca a=b=0 Scrie Scrie “sol.
nedeterminata”
Scrie “sol.
inexistenta”
x
inexistent, daca a=0, b≠0

STOP

PCLP5- 12
Instructiuni conditionale (9)
#include <stdio.h>
#include <conio.h>
void main()
{ double a, b, x;
printf(″introduceti coeficientii ecuatiei:″);
scanf(″%lf %lf″, &a, &b);
if(a!=0)
{ x=-b/a;
printf(″Solutia ecuatiei %.2lfx+%.2lf=0 este %lf\n″, a, b, x);
}else
if(b==0)
printf(″Solutia ecuatiei este nedeterminata\n″);
else
printf(″Ecuatia nu are solutie\n″);
getch();
}
PCLP5- 13
Instructiuni conditionale (10)
2. Instructiunea switch
switch(expresie)
{ case c1: instructiune;
break;
case c2: instructiune;
break; Ce se intampla daca

lipseste un break?
case cn: instructiune;
break;
default: instructiune;
}

PCLP5- 14
Instructiuni conditionale (11)
Exemplul 1: Se citeste un numar de la 1 la7 si se afiseaza ziua sapt.
#include <stdio.h> case 4: printf(″joi\n″);
#include <conio.h> break;
case 5: printf(″vineri\n″);
void main()
{ int zi; break;
printf(″introduceti nr. zilei:″); case 6: printf(″sambata\n″);
scanf(″%d″, &zi); break;
switch(zi) case 7: printf(″duminica\n″);
{ case 1: printf(″luni\n″); break;
break; default: printf (″nr. nu este in
case 2: printf(″marti\n″); intervalul [1,7]\n″);
break; }
case 3: printf(″miercuri\n″); getch();
break; }
PCLP5- 15
Instructiuni conditionale (12)
Exemplul 2: Se citeste operatia dorita si doi operanzi reali. Sa se
evalueze expresia respectiva. switch(op)
#include <stdio.h> { case ′+′: a += b;
#include <conio.h> break;
case ′-′: a -= b;
void main() break;
{ char op; case ′*′: a *= b;
double a,b; break;
printf(″Operatia dorita (+,-,*,/): ″); case ′/′: a /= b;
op = getchar(); break;
printf(″Introduceti operanzii: ″); default: printf (″operator eronat\n″);
scanf(″%lf %lf″, &a, &b); }
printf(″\n%.2lf%c%.2lf=″, a, op, b); printf(″%.2lf\n″, a);
getch();
}
PCLP5- 16
Instructiuni repetitive - while (1)

while(expresie)
instructiune;
F A
expresie

instructiune

!!!bucle infinite

PCLP5- 17
Instructiuni repetitive - while (2)
Exemplul 1: Sa se calculeze si sa se afiseze valoarea
polinomului p(x)= 3x2+7x-10 pentru x=1,2,3,…,10.

#include <stdio.h>
void main()
{ int x;
x=1;
while(x <= 10)
{ printf(″x = %d\tp(x)=%d\n″, x, 3*x*x+7*x-10);
x++;
}
}
PCLP5- 18
Instructiuni repetitive - while (3)
x=1 p(x)=0
x=2 p(x)=16
x=3 p(x)=38
x=4 p(x)=66 x=1;
x=5 p(x)=100 while(x <= 10)
x=6 p(x)=140 { printf(″x = %d\tp(x)=%d\n″,\
x=7 p(x)=186 x, 3*x*x+7*x-10);
x=8 p(x)=238 x++;
x=9 p(x)=296 }
x=10 p(x)=360

PCLP5- 19
Instructiuni repetitive - while (4)
#include <stdio.h>
void main()
{ int x=0;
while(++x <= 10)
printf(″x = %d\tp(x)=%d\n″, x, 3*x*x+7*x-10);
}
sau
#include <stdio.h>
void main()
{ int x=0;
while(x++ < 10)
printf(″x = %d\tp(x)=%d\n″, x, 3*x*x+7*x-10);
}
PCLP5- 20
Instructiuni repetitive - while (5)
Exemplul 2: Sa se afiseze valorile functiei sin(x) cu
pasul de 1 grad sexagesimal xє[0,360).
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
void main()
{ int x;
double pas;
pas = PI/180;
x = -1;
while(++x < 360)
printf(″sin(%d)=%.16lf\n″, x, sin(x*pas) );
}
PCLP5- 21
Instructiuni repetitive - while (6)
• Directiva #define
#define nume succesiune_de_caractere
- substitutii de succesiuni de caractere
- la procesare se substitue numele cu sirul de caractere
- succesiunea de caractere poate continua pe mai multe
randuri (\)
- utilizata frecvent pentru definirea constantelor
#undef nume
- dezactiveaza substitutia
PCLP5- 22
Instructiuni repetitive - while (7)
Sa se afiseze doar 30 de linii o data pe ecran.
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define PI 3.14159265
void main()
{ int x;
double pas;
pas = PI/180;
x = -1;
while(++x < 360)
{ printf(″sin(%d)=%.16lf\n″, x, sin(x*pas) );
if(x%30 == 0)
{ printf(″Pentru a continua apasati o tasta.″);
getch();
} /* sfarsit if */
} /* sfarsit while */
} /* sfarsit main */
PCLP5- 23
Instructiuni repetitive - while (8)
Exemplul 3: Sa se calculeze media aritmetica a
numerelor de la 11 la 15.
#include <stdio.h>
void main()
{ int numar, suma;
numar = 11; !!!! Bucla infinita
suma = 0;
while(numar != 15)
suma += numar;
printf(″media aritmetica este %.2lf\n″, suma/5.0 );
}
PCLP5- 24
Instructiuni repetitive - while (9)
Modificarea buclei infinite. numar suma
#include <stdio.h> 10 0
11 11
void main() 12 23
{ int numar, suma; 13 36
numar = 10; 14 50
suma = 0; 15 65
while(numar++ != 15) 16
suma += numar;
printf(″media aritmetica este %.2lf\n″, suma/5.0 );
}
PCLP5- 25

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