- curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ......

14
[email protected] IEEI - 2016 www.infopuc.ro C5-1 Programarea Calculatoarelor și Limbaje de Programare - Curs 5 biblioteca math.h if-else, ternary switch-case break, return, continue

Upload: lybao

Post on 04-Apr-2018

253 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-1

Programarea Calculatoarelor și Limbaje de Programare

- Curs 5 –

• biblioteca math.h

• if-else, ternary

• switch-case

• break, return, continue

Page 2: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-2

Organizare: desfăşurarea evaluării

• S11 (5-8 dec) – programare individuală susţinere colocviu, variante:

– S13 (19-23 dec 2016) SAU

– S14 (9-12 ian 2017)

• Portofoliu cu probleme rezolvate complet (paşii a,b,c,d,e,f din referate):

– minim 2 probleme structura secvenţială (L8-9)

– minim 2 probleme structura secvenţială (L10-11)

• Portofoliul se va alcătui conform exemplului din referatul L8-9

(https://drive.google.com/open?id=1ckAIKDJFcrL0bqtce0k2uFKAbQ

Dd-BE-rcQ1K5MsuRM)

• Desfăşurare examen:

– Intrarea în sală pe baza CI + carnet student

– Prezentare portofoliu cu lucrări (un portofoliu incomplet anulează nota la examen)

– Susţinere test practic (ECLIPSE): program elementar (nota 5, timp: 20 minute) +

program complementar + întrebări de autocontrol (6-10, timp: 30 minute)

Page 3: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-3

Biblioteca math.h

• Funcţii

sin cos tan

asin acos atan

sinh cosh tanh

exp log log10

pow sqrt ceil

floor fabs ldexp

frexp modf fmod

• Constante

M_E M_LOG2E M_LOG10E

M_LN2 M_LN10 M_PI

M_PI_2 M_PI_4 M_1_PI

M_2_PI M_2_SQRTPI

M_SQRT2 M_SQRT1_2

#include<stdio.h>

#include<math.h>

int main(){

printf("%.2f\n",sin(M_PI));

printf("%.2f",sin(M_PI_2));

return 0;

}

Page 4: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-4

Operatorul ternar

• exp1 ? exp2 : exp3

• a ? b : c

• Ex. rezultat = a > b ? x : y;

int a,b,x,y,rez;

a=3;

b=5;

x=10;

y=20;

rez=a<b?x:y;

printf("rez=%d\n",rez);

Page 5: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-5

Reguli de precedenţă

• Operatorul ternar

int a=1, b=2, c=3;

int x, y, z;

x = a?b:c?a:b;

y = (a?b:c)?a:b; /* left-to-right */

z = a?b:(c?a:b); /* right-to-left */

// x = 2 y = 1 z = 2

Page 6: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-6

Reprezentarea algoritmilor

bloc de decizie

blocuri de conectare blocuri de atribuire

blocuri de intrare/ieşire blocuri delimitatoare

Page 7: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-7

Instrucţiunea if()

• Instrucţiunea if poate fi utilizată cu sau fără ramura else:

if (test)

set instrucţiun;

if (a >= 3) a = a - 3;

#include <stdio.h> int main(){ int x; printf("Dati x:"); fflush(stdout);

scanf("%d",&x); if( x < 0 ) x = -x; printf("|x| = %d", x); return 0; }

Page 8: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-8

Instrucţiunea if - else

• Forma completă a lui if:

if (test)

set instrucţiuni1;

else

set instrucţiuni2;

if (a = = 3) a = a * 3;

else a = a * 5;

#include <stdio.h> int main(){

int a, b; int max, suma; printf("Dati a si b:"); fflush(stdout); scanf("%d%d", &a, &b); if( a > b ) max = a; else max = b; suma = a + b; printf("max = %d\n", max); printf("suma = %d", suma); return 0;

}

Page 9: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-9

Instrucţiuni if-else imbricate (nested if)

if (a >= 3){

a = a - 3;

if ( a = = 3)

a = a * 3;

}

else

a = a * 5;

Page 10: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-10

Break, Return, Continue

• return se foloseşte fie pentru a returna o valoare

fie pentru a opri execuţia unei funcţii

• break se foloseşte pentru terminarea setului de

instrucţiuni {…} în care este poziţionat

• continue se foloseşte pentru trecerea la pasul

următor (fără parcurgerea celui curent) în cazul

instrucţiunilor repetitive

Page 11: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-11

Break, Return, Continue

#include <stdio.h>

int main(){

int u, r1, r2, r3, rt;

float i;

scanf("%d%d%d%d", &u, &r1, &r2, &r3);

printf(" U=%d R1=%d R2=%d R3=%d", u, r1, r2, r3);

rt = r1 + r2 + r3;

if( rt == 0){

printf(“Rezistenta totala nula!!!");

return 0;

}

i = u / rt;

printf("\n Valoarea curentului prin circuit I=%f",i);

return 0;

}

Page 12: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-12

Instrucţiunea switch-case

• Instrucţiunea switch este folosită pentru a

selecta o ramură de execuţie funcţie de

valoarea unei variabile întregi (selector)

switch (selector) {

case valoare1 : instrucţiuni1;

break;

case valoare2 : instrucţiuni2;

break;

case valoare3 : instrucţiuni3;

break;

default: instrucţiuni4;

}

selector

valoare1==

selector

?

instrucţiuni1

valoare2==

selector

?

valoare3==

selector

?

instrucţiuni4

DA

NU

NU

NU

instrucţiuni2 DA

instrucţiuni3 DA

utilizarea cu break

• Instrucţiunea break se foloseşte pentru a specifica programului să iasă

din structura curentă de execuţie

Page 13: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-13

Instrucţiunea switch-case

switch (selector) {

case valoare1 : instrucţiuni1;

case valoare2 : instrucţiuni2;

case valoare3 : instrucţiuni3;

default: instrucţiuni4;

}

selector

valoare1==

selector

?

instrucţiuni1

valoare2==

selector

?

valoare3==

selector

?

instrucţiuni4

DA

NU

NU

NU

instrucţiuni2 DA

instrucţiuni3 DA

utilizarea fără break • Dacă nu se apelează instrucţiunea break programul va executa toate

instrucţiunile ulterioare unei condiţii

adevărate

Page 14: - Curs 5 biblioteca math.h if-else, ternary switch-case · • switch-case • break, return, ... #include #include int main(){ printf ... printf("suma

[email protected] IEEI - 2016 www.infopuc.ro C5-14

Instrucţiunea switch-case - exemplu

int n;

scanf("%d",&n);

switch( n ) {

case 0 :

printf("Nimic\n"); break;

case 1 :

printf("Unu\n");

case 2 :

printf("Doi\n"); break;

case 3 :

case 4 :

case 5 :

printf("3, 4 sau 5\n"); break;

default :

printf("Altele!\n"); break;

}