Sunteți pe pagina 1din 4

1.

ITERAREA PE TABLOURI

Iterarea pe tablouri nseamn accesarea elementelor tablorilor.


Acest lucru se poate realiza folosind instruciunile ciclice ale limbajului C#.
De exemplu, pentru a afia valorile elementelor unui tablou putem
folosi o instruciune for:
tip[] tab = {...};

unde tip este un tip predefinit sau tipul string.


for(int i = 0;i<tab.Length;i++)
Console.WriteLine(tab[i]);

Acelai lucru se poate realiza utiliznd o instruciune foreach n locul


instruciunii for:
tip[] tab = {...};
foreach(int i in tab)
Console.WriteLine(i);

Instruciunea foreach poate fi folosit i n situaii n care utilizm


tablouri de tipuri implicite.
Fie de exemplu clasa angajat definit astfel:
class angajat{
string nume,adresa;
ushort salar;
public angajat(string n,string a,ushort s)
{
nume = n;
adresa a;
salar = s;
}
public void afis()
{
Console.WriteLine(nume+,adresa:+
adresa+,salar=+salar);
}
}

Fie instanierile:
angajat a1 = new angajat(...);
angajat a2 = new angajat(...);
...
angajat an = new angajat(...);

Definim variabila angajati ca o referin la un tablou ale crui


elemente sunt iniializate cu elementele a1, a2, ..., an:

5
var angajati = new []{a1, a2, ..., an};

Fololsind o instruciune foreach putem s afim componentele


obiectelor a1, a2, ..., an:
foreach(var v in angajati)
v.afis();

Despre corpul instruciunilor for, while sau foreach se spune c formeaz


un bloc iterator.
ntr-un bloc iterator se pot folosi instruciuni yield (produce sau
ofer, tradus n limba romn).
O instruciune yield are formatele:
yield return expresie;
yield break;

Exerciii
1.1. S se scrie o aplicaie care definete clasa angajat amintit mai sus, iar
n metoda Main se definete tabloul angajati (vezi mai sus) i apoi se
afieaz valorile elementelor realiznd o iterare printr-o instruciune
foreach.
Proiectul aplicaiei va avea numele IterareForeach1.
Mai jos este listat textul surs al aplicaiei.
n figura 1.1. este afiat o fereastr MS-DOS ce conine rezultatele
execuiei aplicaiei.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IterareForeach1
{
class Program
{
static void Main(string[] args)
{
angajat a1 = new angajat("Popescu Ion",
"Eminescu 32 Cluj-Napoca", 12345);
angajat a2 = new angajat("Pop Ana",
"Paris 100 Cluj-Napoca", 10000);
angajat a3 = new angajat("Muresan Mihai",
"Rebreanu 25 Cluj-Napoca", 9999);
var angajati = new [ ]{ a1, a2, a3 };
foreach (var v in angajati)
v.afis();
}
}
class angajat
{
string nume;
string adresa;
ushort salar;
public angajat()

6
{
}
public angajat(string n, string a, ushort s)
{
nume = n;
adresa = a;
salar = s;
}
public void afis()
{
Console.WriteLine(nume + ", adresa: " + adresa +
", salar = " + salar);
}
}
}

Figura 1.1.

REZUMAT
Iterarea pe tablori nseamn accesarea elementelor tablorilor. Se
poate realiza folosind instruciunile while, for sau foreach. Corpul acestor
instruciuni formeaz un bloc iterator.
Instruciunea foreach se poate folosi i n sitaii n care se utilizeaz
tablouri de tipuri implicite.
ntr-un bloc iterator se pot folosi instruciuni yield pentru a iei din
ele.
Formatul instruciunii yield:
yield return expresie;
yield break;

7
V-241
Limbajul C# pentru nceptori
delegare, evenimente, fire de execuie, data calendaristic i ora, clasa
ArrayList
Liviu Negrescu, Lavinia Negrescu

1. ITERAREA PE TABLOURI
Rezumat

2. DELEGARE (DELEGATE)
Rezumat

3. EVENIMENTE
Rezumat

4. FIRE DE EXECUIE (THREADS)


Rezumat

5. DATA CALENDARISTIC I ORA


Rezumat

6. SPAIUL DE NUME SYSTEM.COLLECTIONS


6.1. Interfaa IEnumerator
6.2. Interfaa IEnumerable
6.3. Instruciunea yield (produce, ofer)
Rezumat

7. CLASELE COLECIE
7.1. Clasa ArrayList
Rezumat