Teraz masz już jakieś podstawowe wiadomości o pętli, pora zobaczyć, że pętla for to bardzo potężna rzecz w C# oraz ogromnie użyteczna. Podstawową deklarację znasz, my teraz to rozszerzymy. Zacznijmy od pętli gdzie, jest podwójna deklaracja lub więcej. Jak pamiętasz w polu inicjalizacji wpisywaliśmy to co będzie wykonywane na początku pętli, zazwyczaj wpisuje się tam deklaracje zmiennej kontrolnej, ale nic nie stoi na przeszkodzie aby zadeklarować, albo wstawić tam coś innego. W końcu ty jesteś programistą i masz władzę nad kodem, więc rób z nim wszystko-eksperymentuj. A więc do rzeczy, popatrz sobie na poniższą deklarację pętli.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; class Pokaz_for { public static void Main() { int i, b; for (i = 0, b = 1; i < 20; i = i + 1, b = b + 1) { Console.WriteLine("PĘTLA"); if (b == 5) { Console.WriteLine(); b = 1; } } } |
Jak widzisz w pętli można deklarować przy inicjalizacji i interacji, wiele instrukcji. Nasz program w inicjalizacji ustawia zmienną „i” na 0, a zmienną „b” na 1, w polu warunek wiemy że pętla wykona się 20 razy, po każdym przejściu pętli zmienna „i” i „b” jest zwiększana o 1. Co wykona nasz program?. Staraj się do tego dojść nie czytając dalej, lub nie przepisując tego i nie kompilując, jest to dobry trening dla ciebie. A więc nasz program co 5 przejść w pętli wyświetla pustą linię, jest za to odpowiedzialna zmienna „b” która jest od 1 zwiększana po każdym przejściu pętli o 1, tyle że gdy „b” wynosi 5 to jest wstawiana pusta linia, a zmienna „b” jest ustawiana z powrotem na 1, po czym w interacji normalnie jest zwiększana o 1.
Następną ciekawą cechą pętli for jest to, że może w niej brakować któregoś z pól, nie musisz mieć zawsze podanej interacji, warunku bądź inicjalizacji, dziwne?, ale prawdziwe i jakże pożyteczne. Jak to działa spójrz na poniższy przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; class Pokaz_for { public static void Main() { int i = 0; for (; i < 10; ) { Console.WriteLine("PĘTLA"); i = i + 1; } } } |
Jak widzisz nie ma pola inicjalizacji, oraz pola interacji. Zmienna „i” jest deklarowana po za pętlą, a zwiększana jej wartość jest wewnątrz pętli, a warunek jak sam do tego doszedłeś jest sprawdzany, bo „i” istnieje.
Teraz najciekawsza forma pętli, tak zwana pętla bez ciała, a krócej ujmując pętla nieskończona. Jak się domyślasz ta pętla nie ma końca, więc po co nam taka pętla, a więc będziesz z niej korzystał, ho ho ho i jeszcze częściej, nie będę pisał jak wygląda cały program z pętlą, tylko napisze jej deklarację:
1
2
3
4
5
6
7
|
for( ; ; ) { … } |
Czyli w pętli nie ma warunku, to czyni ją nie skończoną, a to że nie ma inicjalizacji, warunku i interacji czyni ją pętla bez ciała. Oczywiście możesz zostawić jedno pole np. inicjalizacji wolne, a resztę wypełnić, twój kod, a więc baw się nim. I zapewne już w twojej głowie pojawiło się pytanie, lub pojawi się zaraz, jak zatrzymać taką pętlę? Sprawa jest prosta, za pomocą polecenia break, to polecenie nakazuje natychmiast przestać wykonywać pętlę od miejsca gdzie zostało ono zadeklarowane, dalsze instrukcje się nie będą wykonywane, a pętla się przestanie wykonywać, prześledź sobie ten przykład.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; class Pokaz_for { public static void Main() { for (int i = 0; ; i = i + 1) { Console.WriteLine("PĘTLA"); if (i == 25) { Console.WriteLine("Ups... Koniec pętli"); break; Console.WriteLine("Tego nie zobaczysz"); // To sie nie wykona } } } } |
Gdy wykonywanie programu dojdzie do linijki gdzie występuje polecenie break, to jest pomijany cały pozostały kod pętli, po wywołaniu polecenia, a pętla jest zakańczana.
Nio to chyba na tyle o pętli for, resztę poznasz sam. A więc, nie siedzieć tylko brać się do roboty i napisz program który wyświetli tabliczkę mnożenia. Jak to zrobić masz poniżej, jednak pamiętaj nigdy niczego się nie nauczysz jak sam nie rozwiążesz problemów, bądź zadań!, ja cię nie jestem w stanie przypilnować, ale ostrzegam że zawalisz początki, dlatego siedź nad tym programem nawet 3 tygodnie ale go napisz samemu!. A potem porównaj sobie z moim i zobacz czy jest podobnie. Ale jeszcze przed pisaniem, mała anegdotka jaka mi przyszła do głowy w związku z pętlą. Otóż jest taki Polski superkomputer lub centrum jak kto woli: TASK, ale to takie wprowadzenie, anegdotka brzmi:
- Wiecie jak szybko TASK wykonuje nieskończoną pętlę ?
- W 12,3 sekundy
No chyba rozumiecie, ja tej anegdotki na imieninach nie mówię, wam tez nie radzę, no chyba że to impreza i programistami włącznie. I zostawiam cię samego z pętlą i zadaniem.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; class Pokaz_for { public static void Main() { int i, b; Console.WriteLine("Tabliczka mnożenia:"); for (i = 1, b = 1; b <= 9; i = i + 1) { Console.WriteLine(i + " pomnożone przez " + b + " = " + i * b); if (i == 9) { i = 0; Console.WriteLine(""); b = b + 1; } } } } |