Sunteți pe pagina 1din 19

.

Fundamentele programrii
Curs 5

ef lucr.dr.ing. GENGE Bla


Universitatea Petru Maior, Departamentul de Informatic
Trgu Mure, Romnia
bela.genge@ing.upm.ro

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Instruciuni de ciclare

Descriu aciuni repetitive dintr-un program


Dou componente majore:
Corpul ciclului: secvena de instruciuni executate repetitiv
Condiia de ieire din ciclu: se stabilete dac este sau nu necesar
reluarea execuiei secvenei repetitive

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Tipuri de instruciuni de ciclare

n funcie de poziia relativ a testului fa de secvena de ciclare:


Instr. de ciclare cu test iniial, e.g., while i for
Instr. de ciclare cu test nal, e.g., do-while

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Instr. de ciclare cu test iniial

Instruciunea while
Sintaxa:
while (condiie)
bloc-instruciuni

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: aarea primelor n numere ntregi pozitive
.
int n, i = 0;
scanf("%d", &n);
while(i<n) {
printf("%d\n", i);
++i;
}
.
.
Exemplu: aarea nr. pozitive ct timp caracterul citit este egal cu Y
.
int i = 0;
while(getch() == 'Y') {
printf("%d\n", i);
++i;
}
.
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: aarea primelor n numere ntregi pozitive
.
int n, i = 0;
scanf("%d", &n);
while(i<n) {
printf("%d\n", i);
++i;
}
.
.
Exemplu: aarea nr. pozitive ct timp caracterul citit este egal cu Y
.
int i = 0;
while(getch() == 'Y') {
printf("%d\n", i);
++i;
}
.
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Problem

Se citesc n numere de la tastatur. S se determine cte sunt pare i


cte impare.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Instr. de ciclare cu test nal

Instruciunea do-while
Sintaxa:
do
bloc-instruciuni
while (condiie);

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: calcularea n!
.
int n, i = 1, fact = 1;
scanf("%d", &n);
do {
fact *= i++;
}while(i<=n);
.
.
Exemplu: aarea tuturor caracterelor din alfabet
.
int i = 'A';
do
printf("%c\n", i++);
while(i
<= 'Z');
.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: calcularea n!
.
int n, i = 1, fact = 1;
scanf("%d", &n);
do {
fact *= i++;
}while(i<=n);
.
.
Exemplu: aarea tuturor caracterelor din alfabet
.
int i = 'A';
do
printf("%c\n", i++);
while(i
<= 'Z');
.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Problem

Se citesc n caractere de la tastatur. S se determine cte sunt


majuscule, cte minuscule i cte de alt tip.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Instr. de ciclare cu contor (test iniial)


Instruciunea for
Sintaxa:
for(expresie1 ; expresie2 ; expresie3)
bloc-instruciuni
expresie2 i expresie3 se execut de ecare dat la reluarea ciclului
Instruciunea for este echivalent cu secvena:
expresie1;
while(expresie2){
instruciune;
expresie3;
}
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
.for ( p = i = 1 ; i <= n ; i++ ) p *= i;
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
for
( p = 1, i = 1 ; i <= n ; p *= i++ );
.
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
for
( p = 1, i = n ; i ; i-- ) p *= i;
.
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
.for ( p = i = 1 ; i <= n ; i++ ) p *= i;
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
for
( p = 1, i = 1 ; i <= n ; p *= i++ );
.
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
for
( p = 1, i = n ; i ; i-- ) p *= i;
.
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Exemple
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
.for ( p = i = 1 ; i <= n ; i++ ) p *= i;
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
for
( p = 1, i = 1 ; i <= n ; p *= i++ );
.
.
Exemplu: calcularea n!
.
int n,i,p;
// ... (citire n)
for
( p = 1, i = n ; i ; i-- ) p *= i;
.
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Problem

Se citesc n caractere de la tastatur. S se determine cte sunt


majuscule, cte minuscule i cte de alt tip.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Problem

Se citesc n numere de la tastatur. S se determine minimul i


maximul. S se rezolve cu toate cele trei instruciuni de ciclare.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Problem

Se cunoate previziunea meteo a temperaturii pe urmtoarele N zile.


Pentru ecare zi se cunoate temperatura minim i temperatura
maxim. S se implementeze o aplicaie ce determin:
Numrul de zile n care temperatura maxim prognozat depete
temperatura minim prognozat cu 10 grade.
Determin ziua n care temperatura minim prognozat e mai mare
dect temperatura maxim prognozat pentru ziua urmtoare. Dac nu
exist o asemenea zi, atunci se va aa un mesaj corespunztor.
Determin ziua n care diferena dintre temperatura maxim i minim
prognozate este minim.

Se va utiliza o instruciune de ciclare la alegere.

..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

. Tem
Un sistem de detecie a intruilor (IDS) citete pachete de pe reea
(consol). Dimensiunea ecrui pachet este de 32 bii.
S se implementeze un program ce simuleaz funcionarea unui IDS,
prin citirea a N pachete i generarea unor mesaje de alert n funcie
de urmtoarele semnturi malware:
ntr-o secven de M pachete consecutive exist cel puin L pachete cu
valoarea 0x7ABACC88 aare mesaj ALERT1
Mai mult de 60% din pachetele citite au valoarea 0x8889999 aare
mesaj ALERT2
Exist o incrementare periodic a valorii pachetelor (perioada = 5) cu o
unitate aare mesaj ALERT3 (Exemplu: 1 5 2 7 8 2 5 3 0 0 0)

Valoare: 1 punct
Termen limit: prima rezolvare primit pe email (cel mai trziu data
de 13 Nov. ora 9:00)
..

ef lucr.dr.ing. GENGE Bla

Fundamentele programrii

.
..

.
..

. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..

.
..

.
..

.
..

.
..

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