Co to jest pętla For?
Instrukcja „FOR LOOP” jest najlepsza, gdy chcesz wykonać kod określoną liczbę razy, a nie w oparciu o inne warunki.
W tej pętli dolna i górna granica zostaną określone i dopóki zmienna pętli znajduje się w tym zakresie, pętla będzie wykonywana.
Zmienna pętli jest samoczynnie inkrementalna, więc w tej pętli nie jest wymagana żadna jawna operacja inkrementacji. Zmienna pętli nie musi być deklarowana, ponieważ jest deklarowana niejawnie.
FORObjaśnienie składni:in … LOOP … END LOOP;
- W powyższej składni słowo kluczowe „FOR” oznacza początek pętli, a „END LOOP” oznacza koniec pętli.
- Zmienna pętli jest oceniana za każdym razem przed wykonaniem części wykonawczej.
- Blok wykonania zawiera cały kod, który należy wykonać. Część wykonawcza może zawierać dowolną instrukcję wykonania.
- Zmienna loop_variable jest deklarowana niejawnie podczas wykonywania całej pętli, a zakres tej zmiennej loop_variable będzie znajdował się tylko wewnątrz tej pętli.
- Jeśli zmienna pętli wyszła poza zakres, sterowanie opuści pętlę.
- Pętla może działać w odwrotnej kolejności, dodając słowo kluczowe „REVERSE” przed dolnym_limitem.
Przykład 1 : W tym przykładzie wydrukujemy liczbę od 1 do 5 za pomocą instrukcji pętli FOR. W tym celu wykonamy następujący kod.
BEGINdbms Qutput.put linef.Prp.gram started.' );FOR a IN 1… 5LOOPdbms_output.put_line(a);END LOOP:dbms_output.put_iine('Program completed.');END;/
Objaśnienie kodu:
- Linia kodu 2 : Wydruk instrukcji „Program uruchomiony”.
- Linia kodu 3: słowo kluczowe „FOR” oznacza początek pętli i zadeklarowana jest zmienna_pętli „a”. Teraz będzie miał wartość zaczynającą się od 1 do 5
- Linia kodu 5: Drukuje wartość „a”.
- Linia kodu 6: słowo kluczowe „END LOOP” oznacza koniec bloku wykonania.
- Kod z linii 5 będzie nadal wykonywany, aż „a” osiągnie wartość 6, ponieważ warunek się nie powiedzie, a sterowanie WYJŚCIE z pętli.
- Linia kodu 7: Drukowanie instrukcji „Program zakończony”
Pętle zagnieżdżone
Instrukcje pętli mogą być również zagnieżdżane. Pętla zewnętrzna i wewnętrzna mogą być różnych typów. W pętli zagnieżdżonej, dla każdej wartości iteracji pętli zewnętrznej, pętla wewnętrzna zostanie wykonana w całości.
LOOP -outerObjaśnienie składni:LOOP - inner END LOOP; END LOOP;
- W powyższej składni zewnętrzna pętla ma w sobie jeszcze jedną pętlę.
- Pętle mogą być dowolnego typu, a część funkcji wykonawczych jest taka sama.
Przykład 1 : W tym przykładzie wydrukujemy liczbę od 1 do 3 za pomocą instrukcji pętli FOR. Każda liczba zostanie wydrukowana tyle razy, ile jej wartość. W tym celu wykonamy następujący kod.
DECLAREb NUMBER;BEGINdbms output put line(‘Program started' );FOR a IN 1… 3LOOPb:=1;WHILE (a>=b)LOOPdbms output put line(a);b:=b+1;END LOOP; END LOOP; dbms_output.put_line('Program completed' );END;/
Objaśnienie kodu:
- Linia kodu 2 : Zadeklarowanie zmiennej „b” jako typu danych „LICZBA”.
- Linia kodu 4 : Drukowanie instrukcji „Program uruchomiony”.
- Linia kodu 5: słowo kluczowe „FOR” oznacza początek pętli i deklarowana jest zmienna_pętli „a”. Teraz będzie miał wartość zaczynającą się od 1 do 3
- Linia kodu 7: Za każdym razem resetowanie wartości „b” do „1”.
- Linia kodu 8: Wewnętrzna pętla while sprawdza warunek a> = b.
- Linia kodu 10: Drukuje wartość „a”, o ile powyższy warunek jest spełniony.
- Linia kodu 14: Drukowanie instrukcji „Program zakończony”
Podsumowanie
Pętla | Dla pętli |
Kryteria WYJŚCIA | Wyjdź, gdy licznik osiągnie limit |
Stosowanie | Dobry w użyciu, gdy znana jest liczba pętli do wykonania. |