SWiSH Forum
Forum użytkowników programów SWiSH

Podstawy języka skryptowego - Lekcja 23. Pętla do...while

roland - Wto 23 Maj, 2006 11:51
Temat postu: Lekcja 23. Pętla do...while
Niejednokrotnie zachodzi potrzeba wielokrotnego powtórzenia określonych instrukcji. Przydatne okażą się wtedy tak zwaną pętle, czyli instrukcje pozwalające wykonać określony skrypt daną ilość razy.
Jedną z takich instrukcji, jest pętla do…white, wykonująca zadany kod tak długo, aż stanie się prawdziwy określony warunek.
Posiada ona następującą składnię:
do {
instrukcja;
} while (warunek);

gdzie:
    • instrukcja – jest instrukcją lub instrukcjami rozdzielonymi średnikami, które mają zostać wykonane określoną ilość razy,
    • warunek – jest warunkiem, który pętla sprawdza po wykonaniu wszystkich instrukcji. Pętla zostanie zakończona, dopiero gdy warunek okaże się prawdziwy
Zwróć uwagę na dwa ważne aspekty:
    • pętla do…while musi wykonać instrukcje przynajmniej jeden raz,
    • musisz tak określić działanie pętli do…while, by warunek kiedyś został spełniony, gdyż może się zdarzyć, że pętla nigdy się nie zakończy.
Spróbujmy utworzyć bardzo prosty przykład pętli do…while:
Kod:
onLoad () {
    x = 1;
    do {
        x += 1;
        trace(x);
    } while (x < 10);
}

Oczywiście fragment kodu onLoad () oznacza, że pętla zostanie wykonana za każdym razem, gdy animacja zostanie uruchomiona.
Kolejny wiersz, x = 1; powoduje przypisanie zmiennej x, wartości 1.
Instrukcje wykonywane wewnątrz pętli w pierwszej kolejności powodują zwiększenie wartości zmiennej x o 1 (x += 1), a następnie wypisanie w oknie Debug jej wartości.
Warunek, określony jako x < 10, spowoduje, że pętla zakończy swe działanie gdy x będzie posiadał wartość 10.
W oknie Debag zostaną więc wyświetlone następujące wartości:
2
3
4
5
6
7
8
9
10
Wartość 1 nie będzie wyświetlona, gdyż instrukcja trace(x) występuje już po zwiększeniu wartości zmiennej x.
Gdyby w powyższym przykładzie instrukcja x += 1 została zamieniona instrukcją np. x -= 1, to pętla do…while nigdy nie została by zakończona.


Powered by phpBB modified by Przemo © 2003 phpBB Group