Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

czwartek, 10 lutego 2011

Kurs języka C: Pętla: do {...} while(...);


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
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

8 komentarzy:

  1. Witam;
    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 :)

    OdpowiedzUsuń
  2. Witam,

    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.

    OdpowiedzUsuń
  3. Przykład jest poprawny, a mi chodziło o to że ktoś może zrobić coś takiego :
    if(nr_petli == 3)
    {
    warunek = 0;
    continue;
    }
    a iteracja i tak zostanie wykonana.

    OdpowiedzUsuń
  4. 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 :-)

    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!

    OdpowiedzUsuń
  5. witam jestem zielony jak na razie, dlaczego po skompilowaniu przykładów nic mi się nie wyświetla ;C?

    OdpowiedzUsuń
    Odpowiedzi
    1. Był problem techniczny, ale został naprawiony.

      Usuń
  6. Witam, chciałbym zapytać, w jaki sposób sformułować komendę przerwania pętli jeśli dwie kolejne liczby wprowadzone są takie same.
    Pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. 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:

      liczba_A != liczba_B

      != to operator różności : Kurs języka C: Operatory relacji

      Usuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.