LEKCJA 5 – pętle w języku C#

Witam Cię w kolejnej lekcji języka C#. Mam nadzieję, że już zauważasz swoje postępy. Tak trzymaj bo niedługo w miarę jak uczymy się podstawowych rzeczy o języku C# to przedstawię Ci bardzo ciekawe i na pewno bardziej ambitne tematy. Ale zanim dojdziemy do tego punktu to poznajemy podstawy.

W dzisiejszej lekcji poznasz 2 rodzaje pętli, które występują w języku C# i które pozwolą Ci wykonać każdą operację tyle razy ile chcesz. Te dwie pętle to:

  • for
  • while

W języku C# są jeszcze 2 inne rodzaje pętli, a mianowicie forach oraz od-while. Dzisiaj nie będziemy się nimi zajmować.

Po co są pętle?

Wyobraź sobie, że chcesz wyświetlić w swoim programie napis. Bardzo prosto to zrobić:

Console.WriteLine("Cześć Darek");

Nie ma nic prostszego. Ale co jeśli chciałbyś wyświetlić ten sam napis 100 razy? To proste – można skopiować ten kod i wyświetlić ten napis 100 razy.

Console.WriteLine("Cześć Darek");
Console.WriteLine("Cześć Darek");
....
Console.WriteLine("Cześć Darek");

Muszę Ci powiedzieć, że powtarzanie tego samego kodu wiele razy jest złe, Słyszałem wiele razy o zasadzie DRY (don’t repeat yourself). Powtarzanie kodu jest błędem i należy go unikać z kilku przyczyn:

  • kod zawierający powtórzenia zabiera więcej miejsca
  • kod zawierający powtórzenia jest trudny w utrzymaniu. Przykład? Załóżmy, że chcę zmienić napis „Cześć Darek” na napis „Cześć Marek” (W dzieciństwie marzyłem aby mieć na imię Marek). W wyżej pokazanym kodzie musiałbym zmienić imię w 100 miejscach. Za chwilę zobaczysz, że użycie pętli wymaga zmiany tylko w jednym miejscu
  • Pętle są świetne do operacji na kolekcjach i tablicach

Pętla WHILE

W tej chwili pokażę Ci szybko jak wygląda pętla while. Jej cel to wyświetlić napis 100 razy:

int i = 1;
while(i<=100)
{
  Console.WriteLine("Cześć Darek");
  i = i+1;
}

Co się dzieje w powyższym kodzie:

  • Deklarujemy zmienną i typu integer oraz przypisujemy jej wartość 1.
  • Sprawdzamy warunek czy i jest mniejsze niż 100. Owszem 1 jest mniejsze niż 100, więc wyświetlamy napis „Cześć Darek’.
  • Następnie za pomocą instrukcji i=i+1 zwiększamy wartość zmiennej. Teraz zmienna przechowuje wartość 2.
  • Ponownie sprawdzany jest warunek w pętli tyle razy aż będzie on spełniony.
  • W efekcie napis wyświetlony zostanie 100 razy.
UWAGA: Często zamiast zapisu i=i+1 spotkasz się z zapisem: i++. Są to zapisy równoznaczne. Ich celem jest zwiększenie wartości zmiennej i o jeden. Operator ++ nazywamy operatorem inkrementacji.

Zalety użycia pętli widać od razu:

  • Ewentualna zmiana napisu z „Darek” na „Marek” wymaga zmiany tylko jednego słowa.
  • Nie powtarzamy kodu, więc działamy zgodnie z zasadą DRY.

Pętla FOR


 for(int i = 1; i<=100; i++)
 {
   Console.WriteLine("Cześć Darek");
 }

Powinienem używać pętli for czy while?

Tak naprawdę możesz używać je zamiennie ponieważ znaczenie obu konstrukcji jest identyczne. Więc wybór while albo for to raczej kwestia gustu. Ja wolę wykorzystywać pętle for, ponieważ wszystkie zmienne są zapisane obok siebie. Jeśli będziesz więcej programować to wybierzesz tę opcję, która bardziej Ci odpowiada.

Zadanie dla Ciebie

  1. Jeśli znasz trochę język angielski to możesz przeczytać artykuł o pętli for na oficjalnej stronie Microsoft: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/for
  2. Napisz program konsolowy w języku C#, który wyświetli na ekranie liczby od 1 do 100.
  3. Napisz program, który wyświetli liczby w kolejności malejącej od 100 do 1. (PODPOWIEDŹ: Zamiast operatora inkrementacji i++ zastosuj operator dekrementacji i–)
  4. Napisz program, który wyświetli tylko liczby parzyste od 2 do 100. (PODPOWIEDŹ: zamiast i++ użyj i = i+2)