Instrukcje sterujące


1) Instrukcja warunkowa if służy do dokonywania wyborów. Może być zagnieżdzana w samej sobie przez co możliwy jest wybór wielowariantowy.
a) test jest postaci x > 0.
#include <cstdlib>;
#include <iostream>;

using namespace std;

int x;
int main(){
   cout<<"Wczytaj x=";
   cin>>x;
   if(x>0){
      cout<<"\nLiczba jest dodatnia\n\n";
      }
   else{
      cout<<"\nLiczba nie jest dodatnia\n\n";
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

W zależności od wczytanej wartości zostanie wyświetlony jeden z powyższych napisów.

b) test jest postaci x.
#include <cstdlib>;
#include <iostream>;

using namespace std;

int x;
int main(){
   cout<<"Wczytaj x=";
   cin>>x;
   if(x){
      cout<<"\nLiczba nie jest zerem\n\n";
      }
   else{
      cout<<"\nLiczba jest zerem\n\n";
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Jeżeli wartość warunku (zmiennej x), jest równa zero lub false, to funkcja wykona polecenia z bloku komend else.

c) wybór wielowariantowy.
#include <cstdlib>;
#include <iostream>;

using namespace std;

int x;
int main(){
   cout<<"Wczytaj x=";
   cin>>x;
   if(x>0){
      cout<<"\nLiczba jest dodatnia\n\n";
      }
   else{
      if(x==0){
         cout<<"\nLiczba jest zerem\n\n";
         }
      else{
         cout<<"\nLiczba jest ujemna\n\n";
         }
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

W zależności od wczytanej wartości zostanie wyświetlony jeden z powyższych napisów.

2) Pętla while wykonuje się tak długo jak długo jest spełniony warunek. Jeżeli nie jest on spełniony pętla nie wykona się.

a) warunek jest postaci x < 4.
#include <cstdlib>;
#include <iostream>;

using namespace std;

int x=0;
int main(){
   while(x<4){
      cout<<"x="<<x<<endl;
      x++;
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Pętla wykona się cztery razy i na ekranie wyświetli się napis:
x=0
x=1
x=2
x=3
Aby kontynuować, wciśnij enter !

b) wieczna pętla - jest wtedy, gdy warunek w pętli jest zawsze spełniony. Może to być wartość true lub np. 0==0. Instrukcja break powoduje opuszczenie lokalnej pętli i wyjście o jeden poziom wyżej.
#include <cstdlib>;
#include <iostream>;

using namespace std;

char x;
int main(){
   while(true){
      cout<<"Zakoncz, gdy podasz litere \"q\""
          <<"\nPodawaj litery i zatwierdzaj enterem ";
      cin>>x;
      if(x=='q'){
         cout<<"Podales litere \"q\"\n";
         break;
         }
      cout<<"\nNie podales litery \"q\"\n";
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Pętla się zakończy po podaniu litery q.

3) Pętla do while różni się od pętli while tylko tym, że warunek jest sprawdzany po wykonaniu instrukcjii. Taka pętla musi się wykonać minimum jeden raz. Może być standardowa lub jako wieczna pętla.

#include <cstdlib>;
#include <iostream>;

using namespace std;

int x;
int main(){
   cout<<"Bok kwadratu musi byc mniejszy od 5\n\n";
   do{
      cout<<"Podawaj bok kwadratu x=";
      cin>>x;
      cout<<"Pole kwadratu wynosi "<<x*x<<"\n";
   }while(x<5);
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Jeżeli podamy długość boku np. 12, to instrukcje wykonaja się jeden raz i program się zakończy.

4) Pętla for służy do powtarzania zadanych instrukcji z określonymi warunkami początkowymi, końcowymi i z podanym krokiem.

#include <cstdlib>;
#include <iostream>;

using namespace std;

int i,ilosc;
int main(){
   cout<<"Podaj ilosc klientow\n";
   cin>>ilosc;
   for(i=1;i<=ilosc;i=i+1){
      cout<<"Klient nr "<<i<<" - prosze czekac"<<endl;
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Dla ilosc=4 zostanie wyswietlony napis o treści:
Klient nr 1 - prosze czekac
Klient nr 2 - prosze czekac
Klient nr 3 - prosze czekac
Klient nr 4 - prosze czekac
Aby kontynuować, wciśnij enter !

W pętli może być wiele warunków oddzielonych przecinkami. Może także nie być nic wpisane w warunki, oprócz dwóch średników i pętla wykonuje polecenia w sposób ciągły (jest wieczną pętlą).
#include <cstdlib>;
#include <iostream>;

using namespace std;

int numer;
int main(){
   for(;;){
      cout<<"Podaj numer klienta\n";
      cin>>numer;
      if(numer<10){
         cout<<"Klient ma numer mniejszy od 10\nkoncz program\n\n";
         break;
         }
      else{
         cout<<"Klient ma numer za wysoki - wczytuj dalej\n";
         }
      }
      system ("PAUSE");
      return EXIT_SUCCESS;
   }

Na ekranie zostanie wyswietlony tekst o podobnej treści:
Podaj numer klienta
20
Klient ma numer za wysoki - wczytuj dalej
Podaj numer klienta
63
Klient ma numer za wysoki - wczytuj dalej
Podaj numer klienta
2
Klient ma numer mniejszy od 10
koncze program

Aby kontynuować, wciśnij enter !

5) Instrukcja switch służy do podejmowania wielowariantowych decyzji. W przeciwieństwie do pętli if nie może pracować na obiektach zmiennoprzecinkowych tylko na obiektach typy int. W niektórych przypadkach, instrukcja ta może znajdować się wewnątrz wiecznej pętli.

#include <cstdlib>;
#include <iostream>;

using namespace std;

int utwor;
char end;
int main(){
   while(true){
      cout<<"Czy zakonczyc (t/n)\n";
      cin>>end;
      if(end=='t'){
         break;
         }
      else{
         cout<<"wybierz utwor do odtwarzania (od 1 do 3)\n"; 
         cin>>utwor;
         switch(utwor){
            case 1:cout<<"\nGraj utwor 1\n";break;
            case 2:cout<<"\nGraj utwor 2\n";break;
            case 3:cout<<"\nGraj utwor 3\n";break;
            default:cout<<"\nZa duzy numer\n";break;
            }
         }
      }
   return EXIT_SUCCESS;
   }

Na ekranie zostanie wyświetlony tekst o podobnej treści:
Czy zakonczyc (t/n)
n
wybierz utwor do odtwarzania (od 1 do 3)
2

Graj utwor 2
Czy zakonczyc (t/n)
n
wybierz utwor do odtwarzania (od 1 do 3)
7

Za duzy numer
Czy zakonczyc (t/n)
t
Aby kontynuować, wciśnij enter !

6) Instrukcja continue zastosowana wewnatrz innych pętli powoduje zaniechanie wykonania instrukcji znajdujących się pod nią, lecz bez opuszczenia pętli. Innymi słowy następuje opuszczanie części programu od instrukcji continue, do końca pętli.

#include <cstdlib>;
#include <iostream>;

using namespace std;

int i;
int main(){
   for(i=1;i<=4;i++){
      if(i==3){
         continue;
         }
      cout<<"linia nr "<<i<<"\n";
      }
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Program wyświetla napisy:
linia nr 1
linia nr 2
linia nr 4
Aby kontynuować, wciśnij enter !

Jak widzimy dla i==3 instrukcja wypisywania na ekran została opuszczona.

7) Instrukcja goto jest instrukcją skoku do danego miejsca w programie (w zakresie ważności nazw), oznaczonego etykietą. Instrukcji tej można używć w celu opuszczenia wielokrotnego zagnieżdżenia pętli.

#include <cstdlib>;
#include <iostream>;

using namespace std;

char x;
int main(){
   while(true){
      cout<<"Wprowdzaj znaki\n";
      //inne linie programu
      while(true){
         cin>>x;
         if(x=='q'){//litera "q" konczy program
            goto A;
            }
         }
      }
   A:cout<<"\nUzyto instrukcji \"goto\"\n";
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Efekt działania programu jest widoczny poniżej:
Wprowdzaj znaki
w
4
q

Uzyto instrukcji "goto"
Aby kontynuować, wciśnij enter !

do góry