Dzielimy się z Wami bezpłatnie wiedzą programistyczną.
Jeżeli doceniacie naszą pracę możecie nas wesprzeć dobrowolną wpłatą:
Pętla for C#
Pętle są wraz z instrukcjami warunkowymi najważniejszymi elementami w programowaniu. Pozwalają na wielokrotne wykonywanie tego samego bloku kodu, można je także wykorzystać w celu uzyskania dostępu do wszystkich elementów danego zbioru. Poniższy wpis zawiera opis pętli for wraz z przykładami jej zastosowań.
Spis treści
Składnia pętli for
Pętla for potrzebuje zmiennej, której wartość będzie sprawdzana z warunkiem końcowym. Taka zmienna może zostać zadeklarowana wcześniej lub już w pętli. W przypadku deklaracji w pętli, zakres widoczności zmiennej ogranicza się tylko do tej pętli. W zakresie pętli można korzystać z zadeklarowanej zmiennej tak jak z każdej innej znajdującej się w programie.
Deklaracja pętli for wymaga podania trzech elementów, są nimi:
- Początkowa wartość zmiennej – wykonywane tylko raz, przed pierwszym uruchomieniem pętli.
- Warunek kończący pętlę – najczęściej stosuje się porównanie wartości zadeklarowanej zmiennej z wartością, przy której chcielibyśmy zakończyć wykonywanie pętli.
- Operacja wykonywana po każdej iteracji pętli – najczęściej zwiększanie lub zmniejszanie wartości zmiennej. Warunek zakończenia pętli sprawdzany jest po wykonaniu tej operacji.
W kodzie wygląda to w ten sposób:
//Przykład 1 - pętla wykona się 5 razy, wartość zmiennej i będzie w każdej iteracji większa o 1.
for( int i = 0; i < 5; i++)
{
//Powtarzany kod programu
}
//Przykład 2 - zmienione warunki i wartości. W przypadku jednej linii kodu zamieszczonego w pętli, nie jest konieczna klamra
for( int i = 8; i > 5; i--)
//Powtarzana 1 linia kodu programu
//Przykład 3 - deklaracja zmiennej poza pętlą
int x;
for( x = 0; x < 10; x++)
//Powtarzana 1 linia kodu programu
Zastosowanie pętli for
Pętla for, ze względu na swoją budowę, bardzo dobrze sprawdza się do sprawdzania zbiorów, które posiadają określoną ilość elementów. Przykładem takich list są tablice. Poniższy kod prezentuje deklarację tablicy oraz uzupełnienie jej elementów wartościami równymi indeksom tablicy. Warunkiem wykonywania pętli jest wartość zmiennej mniejsza od rozmiaru tablicy. Tablice są indeksowane od 0, więc indeksy tablicy zawierają się w przedziale liczb całkowitych <0, Length – 1>. Warunek ten nie pozwala wykroczyć poza rozmiar tablicy.
int[] tablica1 = new int[8];
for (int i=0; i < tablica1.Length; i++)
{
tablica1[i] = i;
}
W podobny sposób można wyświetlić wszystkie elementy tablicy
for (int i = 0; i < tablica1.Length; i++)
{
Console.WriteLine(tablica1[i]);
}
Za pomocą pętli for można wykonywać działania na wartościach zbioru. Poniżej zaprezentowano obliczenie wartości średniej z elementów przedstawionej wcześniej uzupełnionej tablicy.
double wartoscSrednia = 0; //konieczne jest zainicjowanie wartości, ponieważ do niej będą dodawane wartości z tablicy
for (int i = 0; i < tablica1.Length; i++)
{
wartoscSrednia += tablica1[i];//rzutowanie nie jest konieczne, ponieważ wartość int mieści się całkowicie w double
}
wartoscSrednia /= tablica1.Length;//suma wartości dzielona jest przez ilość elementów
Pętla for i tablice wielowymiarowe
Pętla for świetnie radzi sobie z tablicami jednowymiarowymi, ale tak samo można ją wykorzystać do tablic wielowymiarowych. Uzyskanie dostępu do wszystkich elementów tablicy wymaga zastosowania oddzielnej pętli na każdy wymiar tablicy. Poniższy przykład przedstawia uzupełnianie elementów tablicy wartościami będącymi iloczynem indeksu wiersza i kolumny danego elementu.
int[,] tablica2 = new int[3, 5];
//GetLength() zwraca rozmiar wymiaru tablicy, którego indeks podaje się w nawiasie jako parametr.
for (int i = 0; i < tablica2.GetLength(0); i++)
{
for (int j = 0; j < tablica2.GetLength(1); j++)
{
tablica2[i,j] = i * j;
}
}
Powyżej umieszczone pętle w pętli. Działa to w ten sposób, że wartość zmiennej „i” przyjmuje pewną wartość i dla niej wykonywane są operacje przy wszystkich dostępnych wartościach zmiennej „j”. Po wykonaniu wszystkich operacji zmienna „i” przyjmuje kolejną wartość. Czynność jest powtarzana, aż wszystkie elementy zostaną przejrzane. W przedstawionym przykładzie zmienna „i” reprezentuje kolejne wiersze tablicy, natomiast zmienna „j” kolumny.
Odczyt wszystkich elementów tablicy dwuwymiarowej wygląda dokładnie w ten sam sposób:
for (int i = 0; i < tablica2.GetLength(0); i++)
{
for (int j = 0; j < tablica2.GetLength(1); j++)
{
Console.WriteLine(tablica2[i,j]);
}
}
Pętla for a pętla while
Pętla for nie jest jedyną możliwą pętlą, a wykonywane przez nią działanie można z powodzeniem zastąpić innym rozwiązaniem. Wybór pętli zależy od tego, jakie aktualnie rozwiązanie wydaje się wygodniejsze. Poniższy przykład przedstawia dwie pętle realizujące dokładnie te same operacje.
//Pętla for
for (int i = 0; i < 10; i++)
{
//Powtarzany kod programu
}
//Pętla while
int i = 0;
while(i < 10)
{
//Powtarzany kod programu i++;
}