Teoria programowania: Modyfikowanie działania pętli

article-thumbnail

Poniżej przedstawione modyfikowanie działania pętli nie jest polecane, głównie ze względu na optymalizację kodu oraz jego czytelność. Zatem powinniśmy unikać stosowania tych konstrukcji. Są one podane z uwagi na naturę dydaktyczną.

Break, continue

Dowolną pętlę możemy przerwać w środku jej działania, bez wykonania warunku. Służy do tego instrukcja break. Wykonanie kolejnej iteracji pętli, bez kończenia wszystkich czynności z poprzedniej iteracji umożliwia nam continue.

Odliczanie od 10, przerwanie przy wartości losowej:

int los = losuj(0, 9)+1;			// losuje wartość od 1 do 10
Wypisz los; Wypisz "\n";			// "\n" przerzuca do nowej linii
for(int i = 10; i > 0; i--)
		{
      if(i == los){
            Wyświetl "Nieproszony gość!, przerywam.";
            break; 	// przerywa całkowicie działanie pętli
            }
      Wypisz i; Wypisz ", ";	
  };

Przykładowy wynik wykonania powyższego programu:
	
4
10, 9, 8, 7, 6, 5, Nieproszony gość!, przerywam.

Odliczanie od 10, przeskok do kolejnej iteracji przy wartości losowej:

int los = losuj(0, 9)+1;			// losuje wartość od 1 do 10
  Wypisz los; Wypisz "\n";
  for(int i = 10; i > 0; i--)
		{
    if(i == los){
      Wyświetl "Przeskok !, ";
      continue;	// przerywa obecną iterację; 
      }
    Wypisz i; Wypisz ", ";	
    };

Przykładowy wynik wykonania powyższego programu:
	
6
10, 9, 8, 7, Przeskok!, 5, 4, 3, 2, 1,

Goto

W niektórych językach możemy również przenieść działanie programu za pośrednictwem instrukcji skoku goto do ustalonego punktu, zapisanego w postaci nazwa: (nazwa miejsca skoku zakończona dwukropkiem).

Przeskok dla x == 10:

  int x = 0;
  while(x < 100)
  { 	
    if(x == 10) goto etykieta;		// instrukcja skoku;
    x++;				// inkrementacja;
  };
  return x;			        // instrukcja zwracająca x;

  etykieta: Wypisz "Przerwano działanie pętli"; return 0;

Przykładowy wynik wykonania powyższego programu:
	
Przerwano działanie pętli; Program zwrócił 0.

Przerywanie pętli, bądź przeskakiwanie za pośrednictwem goto nie jest praktykowane ze względu na czytelność kodu programu (pętla umieszczona na początku kodu, która następnie przeskakuje do znacznika oddalonego o 50 – 100 linijek kodu nie jest czytelna).

Autor tekstu: Jacek Woźniak