Sie sind auf Seite 1von 15

West University of Timisoara

Faculty of Mathematics and Informatics Programming I

Limbajul de programare C

06.02.2018 Lucian Cucu - The C Programming Language 1


West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Controlul executiei: instructiuni

O instructiune (statement) specifica o actiune ce trebuie executata.


Controlul executiei (flow control): controlul ordinii in care instructiunile sunt executate.
Exceptand cazurile indicate, instructiunile se executa secvential.
E.g.
statement: label: statement;
labeled-statement
{
declaration;
compound-statement …
statement;

}

expression;
expression-statement
if-else, else-if, switch
selection-statement
for, while, do-while
iteration-statement
goto, continue, break, return
jump-statement
06.02.2018 Lucian Cucu - The C Programming Language 2
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Controlul executiei : instructiuni de selectie

Permit selectia unei alternative din doua sau mai multe sub controlul unei
expresii.
Instructiune: if-else Selection from multiple variants

Sintaxa:
if(expr) if(expr1) /*if TRUE */
statement;
statement-1;

else if(expr2) /*if TRUE */


if(expr)
statement-1; statetment-2;
else
statement-2; else if(expr3)

statement-3;
… /*if none is TRUE*/
else
statement;

Nota: statement, statement-1, statement-2 pot fi orice instructiune,


inclusiv if sau o instructiune multipla.
06.02.2018 Lucian Cucu - The C Programming Language 3
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Controlul executiei : instructiuni de selectie(continuare)

Instructiune: switch
Presupunand ca
Sintaxa:
expr == const_expr1 is TRUE
switch(expr) {
case const_expr1:
Presupunand ca
statement_1;
expr == const_expr2 este TRUE
case const_expr2:
statement_2; executie
Presupunanad ca
case const_expr3: expr == const_expr3 este TRUE
statement_3;


default: Presupunand ca
statement; expr NU este egala cu nici una din
} const_expri

06.02.2018 Lucian Cucu - The C Programming Language 4


West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Controlul executiei : instructiuni de selectie(continuare)

Instructiune: switch
Sintaxa:
switch(expr) { if(expr==const_expr1)
case const_expr1:
statement-1;
statement-1;
break;
else if(expr==const_expr2)
case const_expr2:
statement-2; statetment-2;
break;

case const_expr3: else if(expr==const_expr3)


statement-3;
break;
statement-3;
... ...
default: else
statement; statement;
}

Secvente echivalente
06.02.2018 Lucian Cucu - The C Programming Language 5
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Controlul executiei : Instructiuni de ciclare

•for
•while } - testarea conditiei de terminare la inceput expr
TRUE
statement

FALSE

•do-while - testarea conditiei de terminare la sfarsit statement

expr TRUE

FALSE

06.02.2018 Lucian Cucu - The C Programming Language 6


West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de ciclare: for

Instructiune: for
Sintaxa:
for(expr1; expr2; expr3)
statement;

Executie:
evaluate expr1
evaluate expr2; if TRUE (that is: if non 0) if FALSE (that is: if 0)
execute statement
evaluate expr3

Terminologie:
expr1 pasul de initializare (poate lipsi)
expr2 conditie (poate lipsi)
statement corpul ciclului (orice instructiune, inclusiv for sau o instructiune multipla)
expr3 pasul de modificare (poate lipsi)
06.02.2018 Lucian Cucu - The C Programming Language 7
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de ciclare: for (continuare)


Ex.
for(i=0; i<N; i++) /*ciclu tipic pt prelucrarea primelor N elemente ale unui tablou*/
t[i]=…;

for( ; ; )
{... /* ciclu infinit*/
if(expr)
break; /*alternative: return sau goto label */
...
}
for(e1; e2; e3)
{... /*cicluri imbricate */
for(e4; e5; e6)
{...
for(e7; e8; e9)
{...
}
}
}
06.02.2018 Lucian Cucu - The C Programming Language 8
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de ciclare: while

Instructiune: while
Sintaxa: while(expression)
statement;

Executie:
evaluate expression;if TRUE, that is: if non 0 if FALSE, that is: if 0
execute statement

E.g.
while((c=getchar()) != EOF) /* ciclu tipic pt citirea unui caracter de la stdin */
…;

while(1) /* ciclu infinit */


{...
if(expr)
break; /*alternative: return sau goto label */
...
}
06.02.2018 Lucian Cucu - The C Programming Language 9
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de ciclare: for si while

Echivalenta instructiunilor for si while


Orice secventa de cod scrisa cu instr. for poate fi rescrisa cu while:
for(expr1; expr2; expr3) expr1;
statement; while(expr2)
{
statement;
expr3;
}

Orice secventa de cod scrisa cu instr. while poate fi rescrisa cu for:

while(expr) for( ; expr; )


statement; statement;

06.02.2018 Lucian Cucu - The C Programming Language 10


West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de ciclare: do - while

Instructiune: do-while
Sintaxa:
do
statement;
while(expression);

Executie:
execute statement
evaluate expression; if TRUE, that is: if non 0 if FALSE, that is: 0

06.02.2018 Lucian Cucu - The C Programming Language 11


West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de salt: continue si break

Instructiuni:
continue
break
Sintaxa:
continue;
break;
Utilizare:for(i=0; i<N; i++)
{
... Afisarea elementelor pozitive din
if(t[i]<0) tabloul t care preced primul
continue; element nul.
...
if(t[i]==0)
break;
printf(“%10d” ,t[i]);
}

06.02.2018 Lucian Cucu - The C Programming Language 12


West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de salt : goto


Instructiune: goto
Sintaxa: Sfat: nu abuzati de goto!
goto label;
Utilizare:
for(e1; e2; e3)
{...
for(e4; e5; e6)
{...
for(e7; e8; e9)
{...
if(expr)
break; /* goto label; */
}
if(expr)
break;
}
if(expr)
break;
}
label:
06.02.2018 Lucian Cucu - The C Programming Language 13
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Instructiuni de salt : return

Instructiune: return
Sintaxa:
return;
return expression;
Executie:
Type Function();
void Function();
Caller()
Caller() {
{ Type variable;
... ...
Function(); variable=Function();
... ...
} }

void Function() Type Function()


{ {
... ...
return; return expression;
} }
06.02.2018 Lucian Cucu - The C Programming Language 14
West University of Timisoara
Faculty of Mathematics and Informatics Programming I

Structura programelor: functii

program C = set de definitii de functii


+ declaratii de functii si variabile globale
+ directive de preprocesare
De ce?
Programele real sunt foarte mari si complexe!
Dezvoltarea lor ca o singura unitate functionala este
- nepractica
- greu de intretinut/modificat
- imposibil de reutilizat
De aceea, programele sunt descompuse in unitati functionale (deseori, sute sau
mii!), de obicei grupate in conformitate cu rolul lor in economia functionala a
programului in unitati de translatare separate (fisiere sursa).

Unitati functionale :
- functii (in programele C : functii care returneaza o valoare)
- proceduri (in programele C : functii declarate de tip void )
06.02.2018 Lucian Cucu - The C Programming Language 15

Das könnte Ihnen auch gefallen