Autor: Dondu
Kurs języka C: Spis treści
Pętla do{...} while(...) jest pętlą, która:
- wykona się co najmniej jeden raz,
- wykonuje się dopóki warunek jest spełniony.
Innymi słowy, pętla ta zawsze jest wykonana co najmniej jeden raz, następnie wykonuje się w kółko (gdy warunek jest spełniony), a żeby wyjść z pętli warunek musi przestać być spełniony.
Przykład 1 (w kompilatorze)
int warunek = 1; //symulujemy warunek spełniony
do
{
warunek=0; //symulujemy brak spełnionego warunku
//czyli pętla drugi raz się już nie wykona
} while(warunek);
Najprościej zapamiętać to tak:Dopóki warunek jest spełniony, dopóty pętla jest wykonywana.
Break
Czasami zachodzi potrzeba przerwania wykonywania pętli pomimo, że warunek jest nadal spełniony.
Służy do tego instrukcja break.
Przykład 2 (w kompilatorze)
int nr_petli=0; //licznik pętli
int warunek = 1; //symulujemy warunek spełniony
do
{
++nr_petli; //zwiększ licznik pętli o jeden
if(nr_petli > 4) break; //wyjdź z pętli, gdy nr_petli > 4
} while(warunek);
Continue
Za pomocą tej instrukcji, można w dowolnym miejscu pętli nakazać przerwanie wykonywania aktualnej iteracji i rozpocząć wykonywanie następnej.
Innymi słowy wykonywanie kodu wewnątrz pętli zostanie przerwane i nastąpi wykonanie kodu pętli od jego początku, ale tylko wtedy, gdy warunek nadal będzie spełniony.
Przykład 3 (w kompilatorze)
int nr_petli=0; //licznik pętli
int warunek = 1; //symulujemy warunek spełniony
do{
++nr_petli; //zwiększ licznik pętli o jeden
if(nr_petli == 3) continue; //nie wykonuj poniższego kodu pętli, jeżeli
//nr_petli jest równy 3
if(nr_petli > 4) break; //wyjdź z pętli, gdy nr_petli jest większy od 4
} while(warunek);
Po uruchomieniu powyższego przykładu w kompilatorze CManiak zauważysz, że krok trzeci został przerwany.Kurs języka C: Spis treści
26





Witam;
OdpowiedzUsuńNie chce być czepialski :) ale w przykładzie nr.1 nawet jeśli przed rozpoczęciem pętli, zasymulujemy "warunek = 0" to pętla i tak się wykona jeden raz. A w przykładzie nr.3 po instrukcji "continue" warunek nie musi być spełniony aby pętla się wykonała bo warunek sprawdzany jest na końcu pętli :)
Witam,
OdpowiedzUsuńTo żadne czepianie się, to normalny i pożądany feedback :-)
Co do pierwszego - faktycznie należy przykład zmienić.
Co do drugiego, nie bardzo rozumie, do czego masz zastrzeżenia. Ten punkt pokazuje działanie Continue oraz Break, a nie sprawdzanie warunku.
Continue miało pokazać, że zostanie ominięta część programu poniżej if() dla warunek=3.
Natomiast dla warunek=4 instrukcja Break miała przerwać pętlę i tak się dzieje.
Przykład jest poprawny, a mi chodziło o to że ktoś może zrobić coś takiego :
OdpowiedzUsuńif(nr_petli == 3)
{
warunek = 0;
continue;
}
a iteracja i tak zostanie wykonana.
To dobrze, niech próbuje. Właśnie po to jest CManiak, by można zmieniać kod i próbować ucząc się zasady działania. Co więcej, być może ktoś czytając Twoje komentarze wypróbuje je - to także zaleta i tym sposobem przyczynisz się do jego rozwoju :-)
OdpowiedzUsuńNie mogę przygotowywać wszystkich możliwych przypadków. Staram się pokazywać jakieś przykłady mniej lub bardziej skomplikowane, a reszta w rękach uczącego się.
Komentarze oczywiście są zawsze mile widziane!
witam jestem zielony jak na razie, dlaczego po skompilowaniu przykładów nic mi się nie wyświetla ;C?
OdpowiedzUsuńBył problem techniczny, ale został naprawiony.
UsuńWitam, chciałbym zapytać, w jaki sposób sformułować komendę przerwania pętli jeśli dwie kolejne liczby wprowadzone są takie same.
OdpowiedzUsuńPozdrawiam.
CManiak na moment pisania tego postu nie obsługuje wprowadzania danych z klawiatury. Jeżeli natomiast chodzi o warunek, to mógłby wyglądać następująco:
Usuńliczba_A != liczba_B
!= to operator różności : Kurs języka C: Operatory relacji