Sunteți pe pagina 1din 6

ndrumar laborator Programarea calculatoarelor

Laboratorul 5 i 6

Instruciuni repetitive (de ciclare)


Scop: 1. nelegerea instruciunii for 2. nelegerea instruciunii while 3. Lucrul cu instruciunea do while 4. Utilizarea instruciunii break 5. Utilizarea instruciunii continue 6. Utilizarea instruciunii goto

Limbajul C# conine mai multe instruciuni repetitive, mprite n dou categorii: instruciuni ciclice cu test iniial i instruc iuni ciclice cu test final. Instruciuni ciclice cu test iniial Structura ciclic cu test iniial este implementat prin instruciunile for i while. Instruciunea for este folosit foarte des n programare, fiind necesar pentru repetarea unei buci de cod. Ea execut o secven de iniializare, dup care va executa o instruciune att timp ct o condiie este adevrat. Se permite folosirea instruciunilor break si continue. Sintaxa instruciunii este: for( initializare_ciclu; conditie_finala; reinitializare_ciclu) Instructiune Exemplu:
for (int i=0;i<5;i++) { //se execut de 5 ori }

Analiza exemplului: int i=0 - n prima parte se iniializeaz i / sau se declar variabila folosit ca i contor, n acest caz i. Variabila se poate declara i naintea funciei FOR, dar deoarece este folosit pentru contor n interiorul FOR-ului se obinuiete s se declare la folosirea funciei, nemaifiind valabil la ieirea din FOR. i<5 - a 2-a parte reprezint condiia care trebuie ndeplinit pentru ca bucla s se repete.

Laborator 5-6

i++ - a 3-a parte incrementeaz variabila contor. n acest caz se incrementeaz cu 1. Dac am fi dorit ca la fiecare bucl s se incrementeze contorul cu 2, n loc de i++ am fi avut i+2. Instruciunea while se folosete atunci cnd dorim s parcurgem o bucat de cod pn cnd o anumit condiie se ndeplinete. De exemplu, pn cnd variabila i nu are valoarea 3, codul se execut. Cnd variabila are valoarea 3, codul nu se mai execut. Exemplu: Aplicaia urmtoare afieaz numerele ntregi pozitive mai mici dect 10.
using using using using System; System.Collections.Generic; System.Linq; System.Text;

namespace ConsoleApplication1 { class Program { static void Main(string[] args) { for (int n = 0; n <= 10; n++) { Console.Write("{0,3}", n); } Console.ReadLine(); } } }

Instruciunea while are sintaxa: while (conditie) Instructiuni; Ct timp conditie este ndeplinit se execut Instructiuni. Exemplu:
int i=0; while (i<5) { i++; //acest cod se execut de 5 ori }

Analiza exemplului: int i=0 - n prima parte se iniializeaz i / sau se declar variabila folosit ca i contor, n acest caz i. i<5 - a 2-a parte reprezint condiia care trebuie ndeplinit pentru ca bucla s se repete. i++ - a 3-a parte incrementeaz variabila contor. n acest caz se incrementeaz cu 1. Pn cnd var iabila i nu are valoarea 5 , codul se execut. Cnd variabila are valoarea 5, codul nu se mai execut.
2

ndrumar laborator Programarea calculatoarelor

Exemplu: Aplicaia urmtoare afieaz numerele ntregi pozitive mai mici dect 10.
using using using using System; System.Collections.Generic; System.Linq; System.Text;

namespace ConsoleApplication1 { class Program { static void Main(string[] args) {int n = 0; while (n <= 10) { Console.Write("{0,3}", n); n++; } Console.ReadLine(); } } }

Instruciunea do-while execut o instruciune o dat sau de mai multe ori, ct timp o condiie este ndeplinit. Sintaxa instruciunii este: do instruciuni while (condiie) Exemplu:
int x = 0; do { Console.WriteLine(x); x++; } while (x < 5);

Diferenta dintre instruciunea while i instruciunea dowhile este c instruciunile din dowhile se execut cel puin o dat condiia de ieire din ciclu se verific dupa cel puin o execuie. Codul dintr-un ciclu while poate s nu fie executat niciodat. Exemplu: Rescrierea folosind do...while a aplicaiei care afieaz numerele ntregi pozitive mai mici dect 10.
using using using using System; System.Collections.Generic; System.Linq; System.Text;

Laborator 5-6

namespace ConsoleApplication1 { class Program { static void Main(string[] args) {int n = 0; do { Console.Write("{0,3}", n); n++; } while (n <= 10) ; Console.ReadLine(); } } }

Atenie. n caz c se dorete ieirea din executarea codului din interiorul funciei while sau do...while nainte de a fi ndeplinit condiia, se poate folosi comanda break. Instruciunea foreach este utilizat pentru a parcurge elementele unei colecii de date fr a avea o variabil pentru incrementare. Vom avea, n schimb, nevoie de o variabil ce are tipul de date acelai cu cel cutat. O colecie este un grup de obiecte. C# definete mai multe tipuri de colectii dintre care una este matricea. Instruciunea e folositoare cnd vrem s parcurgem, de exemplu, elementele unui array. Sintaxa instruciunii este: foreach(tip de variabil in colecie) instruciuni; Exemplu:
string [] sir={"a","b"} foreach(string element in sir) { //se execut de 2 ori }

Instruciunea va parcurge toate elementele irului. Se observ c nu mai este nevoie s se cunoasc cte elemente are irul, instruciunea foreach tie s le parcurg pe toate. Atenie. Instruciunea foreach nu permite modificarea valorilor ce se parcurg. Exemplu: S se scrie o aplicaie prin care se mparte un ir de caractere n cuvinte. Se va afia numrul de cuvinte i fiecare cuvnt n parte.
using using using using System; System.Collections.Generic; System.Linq; System.Text;

namespace ConsoleApplication1

ndrumar laborator Programarea calculatoarelor

{ class Program { static void Main(string[] args) { string sir = "Acesta este un sir"; char[] delimitator = { ' ', ',', '.', ':' }; Console.WriteLine("Sirul care va fi impartit in cuvinte \n{0}", sir); string[] cuvant = sir.Split(delimitator); Console.WriteLine("Sunt {0} cuvinte in text:", cuvant.Length); foreach (string s in cuvant) { Console.WriteLine(s); } } } }

Instruciunea break produce ieirea forat dintr-un ciclu de tip while, do, for, foreach. La ntlnirea unei astfel de instruciuni se trece la instruciunea de dup ciclu. Exemplu:
for (int i=0; i<10; i++) { if (i>5) break;//iese din ciclu Console.Write(i); }

Instruciunea continue poate fi utilizat numa n corpul unei instruciuni ciclice. La execuia ei se trece la evaluarea condiiei de continuare a ciclului. n funcie de valoarea acestei condiii, ciclul se reia sau se termin. Exemplu:
for (int i = 0; i <= 10; i++) { if ((i % 2) != 0) continue; Console.WriteLine(i); }

Instruciunea goto poate fi folosit, n C#, pentru efectuarea unor salturi la o anumit instruciune. Are trei forme: goto etichet; goto case expresie constant; goto default; Exemplu:
switch (a) { case 13: x = 0; y = 0; goto case 20; case 15: x = 3;

Laborator 5-6

y = 1; goto default; case 20: x = 5; y = 8; break; default: x = 1; y = 0; break; }

Aplicaii: 1. Calculai suma cifrelor unui numr natural cu maxi mum 9 cifre. 2. S se citeasc de la tastatur un numr i s se afieze cifrele numrului scrise n ordine invers (de la dreapta la stnga) (ex. 4326 -> 6234). 3. S se scrie o aplicaie prin care se calculeaz lungimea unui numar ntreg i lungimea unui ir. Observatie Pentru a calcula lungimea unui ir se folosete metoda Length. 4. S se scrie o aplicaie prin care se numr cte cifre pare are un numr natural. 5. S se scrie o aplicaie care verific dac un numr este prim. 6. S se scrie o aplicaie care citete valoarea variabilei n de tip int, calculeaz i afieaz valoarea sumei 0+1+2+...+n i n!. 7. S se scrie o aplicaie care afieaz numerle pozitive pare mai mici dect n. 8. S se afieze toi divizorii comuni a dou numere naturale. 9. S se calculeze cmmdc i cmmmc pentru dou numere citite de la tastatur. 10. S se afieze numerele cu proprietatea de a fi palindroame, pn la o valoare citit de la tastatur. De asemenea, s se afieze i numrul lor.