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