Instrukcja for w programowaniu

Jak działa instrukcja FOR

[Prosta nauka programowania]

Jeśli uczysz się programowania i potrzebujesz krótkiego, acz sugestywnego pokazania, po co jest instrukcja for, to zapraszam Cię do tego krótkiego filmu.

Znajdziesz w nim również przykłady użycia for w językach programowania takich jak: C++, Python, C-Sharp, Delphi, PHP, Dart (/flutter), Kotlin, Java, Javascript, Typescript, Go.

Instrukcja FOR to instrukcja, która jest kluczową instrukcją używaną w programowaniu.

Jako pętla, pozwala na programowanie automatycznego wykonywania wybranego polecenia (lub grupy poleceń).

My wskazujemy, ile razy ma wykonać się dane polecenie – poprzez wybrany przez siebie parametr (zwykle jest to zmienna zawierająca liczbę całkowitą). Możemy sterować liczbą, od której zacznie się liczenie oraz decydować na jakiej liczbie licznik przestaje pracować. Często też mamy wybór – o jaką jednostkę zwiększamy liczenie (o 1 czy o więcej).

Zależnie od języka programowania, może być konieczne użycie innej składni, ale to wszystko zobaczysz na video.

Na filmiku numerowanie jest od jeden do N, klasycznie jednak bardzo często numerujemy od zera do N-1.

Dzięki znakom < oraz <= możemy sterować zapisem – czy będziemy zapisywać <N czy <=N-1

Niektóre sposoby ustalania licznika końcowego (np. w Pythonie) są dostosowane pod liczenie od zera.

Istota automatyzacji w for

Zmienna, która przechowuje aktualny stan licznika jest zazwyczaj używana w środku pętli for – np. do indeksowania (wyboru) konkretnego elementy, jaki ma być przetwarzany.

Jeśli jednak zależy Ci na wykonaniu danej instrukcji 1:1 czyli powtórzeniu – nie będziesz wykorzystywał zmiennej w środku pętli.

Przykład:

for(int i=0;i<3;i++)

PlaySound(’hey.mp3′);

Tutaj nie ma odwołania do zmiennej i – bo nie ma takiej potrzeby.

Aplikacja użyje funkcji PlaySound (załóżmy, że taką mamy do odtwarzania dźwięku w naszym programie) i odtworzy ten sam plik 3 razy.

Zasada tutaj jest prosta:

  • jako zmiennej licznika użyj lokalnie zmiennej nazwanej i
  • licz od zera
  • licz do momentu w którym liczba jest mniejsza niż 3 (0, 1, 2), później wyjdź
  • zwiększaj licznik o 1

W tym przypadku nie ma znaczenia czy zapisalibyśmy to tak jak u góry lub poniżej:

for(int i=1;i<=3;i++)

PlaySound(’hey.mp3′);

Efekt będzie taki sam.

Gdybyśmy jednak chcieli zastosować for do tego, do czego generalnie jest stworzona – automatyzacji, to będziemy mieli coś takiego:

for(int i=0;i<MyPhotos.length;i++)

DisplayPhoto(MyPhotos[i]);

Gdzie w środku pętli korzystamy z tablicy MyPhotos oraz indeksu [i], aby dostać się do konkretnego zdjęcia. Zauważ, że nie mamy tu już wpisanej na stałe ilości zdjęć – odwołujemy się do pola, które zawiera ilość elementów w tablicy. Dzięki temu nie musimy robić tego typu nieeleganckich rozwiązań:

DisplayPhoto(MyPhotos[0]);

DisplayPhoto(MyPhotos[1]);

Jak widać, instrukcja for, która działa na zasadzie: „sprawdzam warunek użytkownika – jeśli jest OK, to wykonuję co mi zalecono”, jest doskonałym sposobem, aby użyć jej do przetwarzania i dostępu do wielu elementów. Zazwyczaj są to podobne elementy – np. dostęp do zdjęć, punktów, linii tekstu…itp.

Użycie fora do badania wydajności

For możesz też wykorzystać do pomiaru szybkości wykonywania instrukcji – info dla osób, które już się oswoiły ze standardowym zastosowaniem fora.

Poprzez bardzo dużą wartość licznika możesz zwielokrotnić działanie poszczególnych instrukcji. Wtedy zmienna w środku nie ma znaczenia, bo liczy się wykonanie tej samej instrukcji lub bloku określoną ilość razy.

for(int i=1;i<=10000;i++)

ProcessImage(image);

Jeśli zmierzysz czas przed wejściem do Fora i po wyjściu z niego – możesz odjąć wartość czasu końcowego od początkowego i podzielić to na wartość licznika. Uzyskasz średni czas wykonania pojedynczego bloku instrukcji.

Taka informacja może być przydatna, gdy chcesz zbadać jak bardzo udało Ci się przyspieszyć wykonanie działania programu dla instrukcji, które wykonują się krócej (np. poniżej kilku sekund). Jeśli zrobisz test przed i test po optymalizacji – będziesz wiedział o ile procent aplikacja przyspieszyła.

Gdybyś zrobił pomiar tylko przy jednym wykonaniu (bez for), czasem drobne zawirowania obsługi pamięci lub lokalne spowolnienia komputera mogą zmniejszyć dokładność pomiaru. Uśrednienie z dużej ilości wykonań zwiększa dokładność i eliminuje tego typu błędy.