Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia...

6
1 Instructiunea while Forma generala: while (expresie) instructiune; Modul de executie: 1) Se evalueaza expresie, daca expresie = 0 (fals) se iese din instructiunea while, altfel (expresie 0, deci adevarat) se trece la pasul 2. 2) Se executa instructiune. Se trece la pasul 1. Exemplu: algoritmul lui Euclid pentru calcularea celui mai mare divizor comun a doua numere intregi. #include <iostream.h> void main (void) { int m,n,r; cout<<"\n\n***** Algoritmul lui Euclid (while) *****"; cout<<"\nIntroduceti doua numere intregi:\n"; cin>>m>>n; r=m%n; while(r) { m=n; n=r; r=m%n; } cout<<"C.m.m.d.c.="<<n; } Exemplu: maxim si pozitia sa dintr-un sir de numere reale citite de la tastatura. #include <iostream.h> void main (void) { float x,xmax; int n,i,poz; cout<<"\n*** Maxim si pozitia sa (fara tablou) ***"; cout<<"\nIntroduceti lungimea sirului:"; cin>>n; xmax=-1; poz=-1; i=0; while (i<n) { cout<<"\nIntroduceti elementul "<<i<<": "; cin>>x; if (x>xmax) { xmax=x; poz=i; } i++; } cout<<"\nMaximul="<<xmax<<" in pozitia "<<poz; } Instructiunea do while Forma generala:

Transcript of Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia...

Page 1: Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel: -executia instructiunii while,

1

Instructiunea while

Forma generala:

while (expresie)

instructiune;

Modul de executie:

1) Se evalueaza expresie, daca expresie = 0 (fals) se iese din instructiunea while, altfel

(expresie ≠ 0, deci adevarat) se trece la pasul 2.

2) Se executa instructiune. Se trece la pasul 1.

Exemplu: algoritmul lui Euclid pentru calcularea celui mai mare divizor comun a doua

numere intregi.

#include <iostream.h>

void main (void) {

int m,n,r;

cout<<"\n\n***** Algoritmul lui Euclid (while) *****";

cout<<"\nIntroduceti doua numere intregi:\n";

cin>>m>>n;

r=m%n;

while(r) {

m=n;

n=r;

r=m%n;

}

cout<<"C.m.m.d.c.="<<n;

}

Exemplu: maxim si pozitia sa dintr-un sir de numere reale citite de la tastatura.

#include <iostream.h>

void main (void) {

float x,xmax;

int n,i,poz;

cout<<"\n*** Maxim si pozitia sa (fara tablou) ***";

cout<<"\nIntroduceti lungimea sirului:";

cin>>n;

xmax=-1; poz=-1; i=0;

while (i<n) {

cout<<"\nIntroduceti elementul "<<i<<": ";

cin>>x;

if (x>xmax) {

xmax=x;

poz=i;

}

i++;

}

cout<<"\nMaximul="<<xmax<<" in pozitia "<<poz;

}

Instructiunea do while

Forma generala:

Page 2: Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel: -executia instructiunii while,

2

do

instructiune;

while (expresie);

Modul de executie:

1) Se executa instructiune. Se trece la pasul 2.

2) Se evalueaza expresie, daca expresie = 0 (fals) se iese din instructiunea do while, altfel

(expresie ≠ 0, deci adevarat) se trece la pasul 1.

Exemplu: algoritmul lui Euclid pentru calcularea celui mai mare divizor comun a doua

numere intergi.

#include <iostream.h>

void main(void) {

int m,n,r;

char tasta;

cout<<"\n\n***** Algoritmul lui Euclid (do while) *****";

cout<<"\nIntroduceti doua numere intregi:\n";

cin>>m>>n;

do {

r=m%n;

m=n;

n=r;

}

while(r!=0);

cout<<"C.m.m.d.c.="<<m;

}

Exemplu: tabelarea valorilor unei functii pe un interval.

#include <iostream.h>

void main(void) {

float a,b,x,y,pas;

do

{ cout<<"\n*** Tabelare valori functie x^2+1 ***";

cout<<"\nIntroduceti limitele intervalului si pasul:";

cin>>a>>b>>pas;

}

while((a>=b)||(pas<=0));

cout<<"\n x y";

x=a;

while(x<=b)

{ y=x*x+1;

cout<<"\n"<<x<<" "<<y;

x+=pas;

}

}

Exemplu: media artimetica a numerelor strict pozitive si cea a numerelor strict negative

dintr-un sir citit de la tastatura si terminat cu valoarea 0.

#include<iostream.h>

void main() {

float medp, medn, x;

int np, nn;

cout<<"\n***Media numerelor pozitive si negative dintr-un sir terminat cu

0 ***";

medp=medn=0;

np=nn=0;

Page 3: Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel: -executia instructiunii while,

3

do {

cout<<"\nIntroduceti numarul curent:";

cin>>x;

if (x>0) {

medp+=x;

np++;

}

else

if (x<0) {

medn+=x;

nn++;

}

}

while (x!=0);

if (np!=0) medp/=np;

if (nn!=0) medn/=nn;

cout<<"\nMedia nr pozitive="<<medp;

cout<<"\nMedia nr.negative="<<medn;

}

Exemplu: aproximarea sumei seriei:

.....!

.....!3!2!1

132

++++++=

n

aaaae

na

insumarea se face pana cand modulul termenului general < ε (ε > 0).

#include<iostream.h>

#include<math.h>

void main(void) {

int n=2;

double a, suma=1, tg, eps;

cout<<"*** Dezvoltare in serie exp(a) ***\n";

cout<<"Introduceti punct si epsilon:";

cin>>a>>eps;

tg=a;

do {

suma+=tg;

tg*=a/n;

n++;

}

while (fabs(tg)>eps);

cout<<"Seria="<<suma;

}

Instructiunea for

Forma generala:

for (instructiune_initiala; expresie1; expresie2)

instructiune;

unde:

instructiune_initiala poate sa fie o declaratie sau o expresie (utilizata in general pentru

initializarea sau asignarea unei variabile sau set de variabile); poate fi si instructiune nula;

expresie1 este controlul buclei (se executa instructiunea din corpul for ori de cate ori

expresie1 este evaluata la o valoare ≠ 0, adevarat). Daca expresie1 este de la inceput = 0, fals,

instructiune nu se executa niciodata;

Page 4: Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel: -executia instructiunii while,

4

expresie2 este evaluata dupa fiecare iteratie: utilizata in general pentru a modifica variabila

initializata de instructiune_initiala. Daca expresie1 este fals inca de la inceput, expresie2 nu este

evaluata niciodata.

Modul de executie:

1) Se executa instructiune_initiala.

2) Se evalueaza expresie1: daca expresie1 = 0 (fals) se incheie executia instructiunii for,

altfel (expresie1 ≠ 0, adevarat) se trece la pasul 3.

3) Se executa instructiune din corpul lui for. Se evalueaza expresie2. Se trece la pasul 2.

Exemplu: calcularea factorialului unui numar natural n! (corect pentru n ≤ 13).

#include <iostream.h>

void main(void) {

unsigned long int fact=1, n, i;

cout<<"*** Factorial ***\n";

cout<<"Introduceti un nr natural:";

cin>>n;

for (i=2; i<=n; i++)

fact*=i;

cout<<"Factorial de n este: "<<fact;

}

Exemplu: calcularea valorii aproximative a integralei definite:

∫b

a

dxxf )(

prin metoda dreptunghiurilor (aici f(x) = x).

#include <iostream.h>

void main(void)

{

float a,b,lat,suma=0,x;

int n,i;

do {

cout<<"\n\n***** Integrala *****";

cout<<"\nIntroduceti lim integ si nr. dreptunghiuri:";

cin>>a>>b>>n;

}

while((a>=b)||(n<4));

x=a; lat=(b-a)/n;

for (i=1;i<=n;i++) {

suma+=lat*x;

x+=lat;

}

cout<<"Integrala="<<suma;

}

Instructiunea break

Este utilizata pentru a incheia instructiunile while, do while, for si switch. Pentru

instructiuni imbricate incheie instructiunea cea mai interioara. Executia continua cu instructiunea

imediat urmatoare celei intrerupte.

Page 5: Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel: -executia instructiunii while,

5

Instructiunea continue

Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel:

-executia instructiunii while, respectiv do while continua cu evaluarea expresiei

reprezentand controlul ciclului;

-executia instructiunii for continua cu evaluarea expresiei2.

Instructiunea goto

Transfera executia la instructiunea etichetata specificata, dar in interiorul aceleiasi functii.

Forma generala:

goto eticheta;

unde eticheta este un identificator furnizat de utilizator, urmat de caracterul ':'.

Observatie. O eticheta nu poate sa preceada '}'. Se utilizeaza in acest caz o instructiune nula; . . . . . . . . . . .

sfarsit: ; //instructiune nula

}

Este interzis saltul peste o definitie de variabila cu initializator explicit (operator =) sau initializator

implicit (constructor de clasa). Exceptie: definitia variabilei apare intr-un bloc si este sarit intregul

bloc.

Exemplu: rezolvarea ecuatiei de gradul 2.

#include<iostream.h>

#include<math.h>

void main() {

double a,b,c,delta,x,x1,x2,x1r,x1i,x2r,x2i;

cout<<"\n*** Ecuatia de grad II, cu goto ***";

cout<<"\nIntroduceti coeficientii ecuatiei:\n";

cin>>a>>b>>c;

if (a!=0) goto ecgr2;

if (b!=0) goto ecgr1;

if (c!=0) goto vida;

cout<<"\nSolutia este R!";

goto gata;

vida:

cout<<"\nSolutie vida!";

goto gata;

ecgr1:

x=-c/b;

cout<<"\nx="<<x;

goto gata;

ecgr2:

delta=b*b-4*a*c;

if (delta<0) goto imag;

x1=(-b+sqrt(delta))/2/a;

x2=(-b-sqrt(delta))/2/a;

cout<<"\nx1="<<x1<<" x2="<<x2;

goto gata;

imag:

x1r=-b/2/a; x2r=x1r;

x1i=(sqrt(-delta))/2/a;

x2i=-x1i;

cout<<"\nx1r="<<x1r<<" x1i="<<x1i;

cout<<"\nx2r="<<x2r<<" x2i="<<x2i;

Page 6: Instructiunea while while expresie · PDF file5 Instructiunea continue Incheie iteratia curenta de la o instructiune while, do while sau for. Astfel: -executia instructiunii while,

6

gata:

; // aici este o instr vida

}