Documente Academic
Documente Profesional
Documente Cultură
Programarea calculatoarelor I -
Gyorodi Cornelia 1
Structuri de control
Executia secvențială
Instrucțiuni executate una după cealaltă, în ordinea în care ele
sunt scrise
Transferul controlului
Când următoarea secvență este executată, ea nu este
următoarea în cadrul secvenței
Folosirea exagerata a instructiunilor goto poate sa ducă la multe
probleme
Bohm si Jacopini demonstrază că:
Toate programele pot fi scrise pe baza a 3 structuri de control:
Programarea calculatoarelor I -
Gyorodi Cornelia 2
Structuri de control
Schema logică
Reprezentarea vizuală a unui algoritm
Oval:
secțiuni de cod
Structuri de control cu o singură intrare/singură ieșire
Conecteaza iesirea unei structuri de control cu intrarea
Programarea calculatoarelor I -
Gyorodi Cornelia 3
Structura de selectie if
Structura de selecție:
Folosită pentru a alege dintre mai multe acțiuni alternative
Pseudocod:
Programarea calculatoarelor I -
Gyorodi Cornelia 4
Structura de selecție if
Instrucțiune pseudocod în C:
if ( grade >= 5 )
printf( "Passed\n" );
Codul C corespunde indeaproape cu
pseudocodul
Diamantul (simbolul de decizie)
Indica faptul ca trebuie luata o decizie
Conține o expresie care trebuie să fie true
sau false
Testeaza conditia, merge pe latura aleasa
Programarea calculatoarelor I -
Gyorodi Cornelia 5
Structura de selecție if
false
Programarea calculatoarelor I -
Gyorodi Cornelia 6
Structura de selecție if/else
if
Realizează o acțiune doar dacă condiția este true
if/else
Specifică o acțiune care să fie executată atât când
condiția este true cât și când este false
Psuedocod:
Daca nota unui student este mai mare sau egala cu
5, tipareste“Admis”
altfel
tipareste “Respins”
Programarea calculatoarelor I -
Gyorodi Cornelia 7
Structura de selectie if/else
Cod C:
if ( grade >= 5 )
printf( "Passed\n");
else
printf( "Failed\n");
Operatorul conditional (?:)
Ia 3 argumente (condiție, valoare cand true, valoare cand
false)
Pseudocodul nostru ar putea fi scris:
printf( "%s\n", grade >= 5 ? "Passed" :
"Failed" );
Sau putea fi scris:
grade >= 5 ? printf( “Passed\n” ) : printf(
“Failed\n” );
Programarea calculatoarelor I -
Gyorodi Cornelia 8
Structura de selecție if/else
false true
grade >= 5
Programarea calculatoarelor I -
Gyorodi Cornelia 9
Instrucţiuni de selecție (decizie)
if (expresie)
{
instr 1;
if (expresie) instr 2;
...
instrucţiune1;
}
else
instrucţiune 2; else {
instr 1;
instr 2;
instr N;
}
OBSERVAŢIE: În C o expresie este true dacă ea este evaluată ca diferită de zero şi false
dacă ea este evaluată la zero. În general, expresia din interiorul lui if compară o valoare
cu alta folosind un operator relaţional
Programarea calculatoarelor I -
Gyorodi Cornelia 10
Stucturi if/else imbricate
Programarea calculatoarelor I -
Gyorodi Cornelia 11
Stucturi if/else imbricate
Pseudocodul pentru o structură imbricată if/else
Daca nota studentului este mai mare sau egala cu 90
Afiseaza “A”
altfel
Daca nota studentului este mai mare sau egala cu 80
Afiseaza “B”
altfel
Daca nota studentului este mai mare sau egala cu 70
Afiseaza “C”
altfel
Daca nota studentului este mai mare sau egala cu 60
Afiseaza “D”
altfel
Afiseaza “F”
Programarea calculatoarelor I -
Gyorodi Cornelia 12
Instrucțiune compusă
Instrucțiune compusă:
Set de instrucțiuni, încadrate între acolade
Exemplu:
if ( grade >= 5 )
printf( “Admis.\n" );
else {
printf( “Respins.\n" );
printf( “Trebuie sa refaci acest curs din
nou.\n" );
}
Fără acolade, instrucțiunea
printf( “Trebuie sa refaci acest curs din
nou.\n" );
ar fi executată automat
Programarea calculatoarelor I -
Gyorodi Cornelia 13
Exemplu
Exemplu 1.2: Se citește un număr de la tastatură și se afișează dacă este
pozitiv sau negativ.
#include <stdio.h>
main( )
{
int num;
Programarea calculatoarelor I -
Gyorodi Cornelia 15
Exemplu: Program care recunoaşte numerele 1, 2 sau 3 şi afişează numele cifrei introduse.
# include <stdio.h>
main ()
{
int i;
printf("Introduceti un intreg intre 1 si 3");
scanf("%d", &i);
switch(i)
{
case 1: printf("unu");
break;
case 2: printf("doi");
break;
case 3: printf("trei");
break;
default:
printf("Numar necunoscut");
}
}
Programarea calculatoarelor I -
Gyorodi Cornelia 16
Structura repetitiva while
Structura repetitivă
Programatorul specifică o acțiune care să fie
repetată cât timp o condiție rămâne true
Pseudocod:
Cat timp mai am lucruri pe lista de cumparaturi
Cumpara urmatorul lucru si taie-l de pe lista
bucla while se execută până când condiția
devine false
Programarea calculatoarelor I -
Gyorodi Cornelia 17
Structura repetitiva while
Exemplu:
int product = 2;
while ( product <= 1000 )
product = 2 * product;
true
product <= 1000 product = 2 * product
false
Programarea calculatoarelor I -
Gyorodi Cornelia 21
Scrierea algoritmilor folosind abordarea
de tip Top-Down, Stepwise
Problema devine:
Dezvolați un program pentru calcularea mediei clasei
care va procesa un număr arbitrar de note de fiecare
dată cand programul este executat.
Numar necunoscut de studenți
Cum va ști programul când să se termine?
tip flag
Indică “sfârșitul introducerii datelor.”
Programarea calculatoarelor I -
Gyorodi Cornelia 22
Scrierea algoritmilor folosind abordarea
de tip Top-Down, Stepwise
Abordarea de tip Top-down, stepwise
Incepeti cu un pseudocod reprezentand top:
corespunzator
Terminare: calculeaza si tipareste rezultatele finale
Programarea calculatoarelor I -
Gyorodi Cornelia 23
Scrierea algoritmilor folosind abordarea
de tip Top-Down, Stepwise
Programarea calculatoarelor I -
Gyorodi Cornelia 25
1 /* Fig. 3.8: fig03_08.c
2 Class average program with
3 sentinel-controlled repetition */
4 #include <stdio.h>
5
6 int main()
7 {
8 float average; /* new
9
data int
typecounter,
*/ grade, total;
10
11 /* initialization phase */
1. Initializeaza
12 total = 0; Variabile
13 counter = 0;
14
15 /* processing phase */
16 printf( "Enter grade, -1 to end: " 2. Citeste date
17
); scanf( "%d", &grade );
18
19 while ( grade != -1 ) {
20 total = total + grade;
21 counter = counter + 1; 2.1 Executa
22 printf( "Enter grade " ); bucla
23 scanf( "%d", &grade );
Programarea calculatoarelor I -
24 } Gyorodi Cornelia 26
25
31 else
33
Programarea calculatoarelor I -
Gyorodi Cornelia 27
Structuri de control imbricate
Problema
Un colegiu are o lista de rezultate la teste (1 = admis, 2 =
Remarcați că
Programul trebuie să proceseze 10 rezultate
Programarea calculatoarelor I -
Gyorodi Cornelia 28
Structuri de control imbricate
Nivelul superior
Analizează rezultatele și decide dacă taxa trebuie să fie marită
Prima rafinare
Inițializează variabilele
Introdu cele 10 note și numără admișii și respinșii
Afisează un sumar al rezultatelor și decide dacă taxa să fie
mărită
Rafinează Inițializare variabile la
Initializeaza admisii la zero
Initializeaza respinsii la zero
Initializează contor la unu
Programarea calculatoarelor I -
Gyorodi Cornelia 29
Structuri de control imbricate
Rafinează Citește cele 10 note și numară admișii și
respinșii la
Cat timp contorul este mai mic sau egal cu zece
Citeste urmatorul rezultat
Daca studentul a trecut
Aduna unu la admisi
altfel
Aduna unu la respinsi
Aduna unu la contor studenti
Rafinează Afișează un sumar și decide dacă taxa să fie
marită la
Afișează numarul de admisi
Afișează numarul de respinsi
Dacă mai mult de opt au trecut
Afișează “Creste taxa”
Programarea calculatoarelor I - Gyorodi Cornelia 30
/* Fig. 3.10: fig03_10.c
Analysis of examination results */
#include <stdio.h>
int main()
{ 1. Initializeaza
/* initializing variables in declarations */
int passes = 0, failures = 0, student = 1, result;
variabile
student = student + 1;
}
Programarea calculatoarelor I -
Gyorodi Cornelia 32
Operatorii de atribuire
Alte exemple:
d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
Programarea calculatoarelor I -
Gyorodi Cornelia 33
Operatorii de incrementare și
decrementare
Programarea calculatoarelor I -
Gyorodi Cornelia 36
Operatorii de incrementare si
decrementare
Programarea calculatoarelor I -
Gyorodi Cornelia 37
Operatorii de incrementare și
decrementare
max = 1;
i = 10 * max++; /* i ia valoarea 10 şi apoi se
incrementează max prin 1 */
max = 1;
i = 10 * ++max; /*se incrementează max, adică
max este 2 și i ia valoarea 20 */
Programarea calculatoarelor I -
Gyorodi Cornelia 38