C++: Instrukcje warunkowe
Instrukcje warunkowe są jednymi z prostszych i częściej spotykanych w programowaniu. Zasada ich działania jest bardzo prosta. Instrukcje, zawarte wewnątrz instrukcji warunkowej wykonają się tylko wtedy, gdy warunek zostanie spełniony.
if ( warunek ) instrukcje;
Dla przykładu podam dwa sposoby zapisu podstawowej części instrukcji warunkowej, czyli samego polecenia if:
(1)
if ( a>2 ) b++; g=g+2;
(2)
if ( a>2 ){ b++; g=g+2; }
Oczywiście oba te sposoby są prawidłowe. Dlaczego więc różnią się zapisem ?
Jeżeli po naszym warunku if( a>2 ) nie zastosujemy klamry, do instrukcji warunkowej będzie należała tylko pierwsza kolejna instrukcja do średnika. Czyli w naszym przykładzie b++ wykona się tylko wtedy gdy a będzie większe niż 2, natomiast g=g+2 wykona się zawsze!
W drugim przykładzie obie instrukcje, zarówno b++ jak i g=g+2 znajdują się wewnątrz klamer, oznaczających blok kodu instrukcji warunkowej. Obie one wykonają się tylko wtedy, gdy a będzie większe od 2.
Przejdźmy teraz do kolejnego przykładu:
(3)
int c; cin>>c; if ( c%2==0 ) cout<<”Liczba jest parzysta”<<endl; if(c%2!=0) { cout<<”Liczba jest nieparzysta”<<endl; }
Jest to oczywiście mini programik sprawdzający parzystość wprowadzonej przez użytkownika liczby całkowitej. Zapisany został w postaci dwóch instrukcji warunkowych, przez co trzeba było w każdej z nich wprowadzić warunek w postaci c%2==0 oraz c%2!=0.
Logicznie rzecz ujmując nie układalibyśmy zdań w postacji:
- Jeżeli reszta z dzielenia przez 2 równa się 0, to wypisz liczba jest parzysta.
- Jeżeli reszta z dzielenia przez 2 jest różna od 0, to wypisz liczba jest nieparzysta.
W drugim zdaniu użylibyśmy stwierdzenia: w przeciwnym razie wypisz liczba jest nieparzysta.
I dokładnie to robi kolejny element instrukcji warunkowej, którym jest else.
Zapiszmy więc kod z przykładu 3 w przykładzie 4 wykorzystując polecenie else:
(4)
int c; cin>>c; if ( c%2==0 ) { cout<<”Liczba jest parzysta”<<endl; }else{ cout<<”Liczba jest nieparzysta”<<endl; }
Krócej, czytelniej i nie wymaga pisania 2 razy warunku.
Są to 2 podstawowe elementy instrukcji warunkowej. Jest jeszcze trzeci, a mianowicie:
else if( warunek ) instrukcje;
(co oznacza: w przeciwnym razie, jeżeli warunek jest spełniony, wykonaj instrukcje)
Jego zastosowanie pokażmy od razu na przykładzie:
int c; cin>>c; if ( c>0 ) { cout<<”Wprowadzona liczba jest większa od zera”; } else if( c<0 ) { cout<<”Wprowadzona liczba jest mniejsza od zera”; } else{ cout<<”Wprowadzona liczba to 0”; }
Znamy już wszystkie elementy instrukcji warunkowej. Jej całkowita składnia wygląda następująco:
if( warunek1 ){
instrukcje1;
}
else if( warunek2 ){
instrukcje2;
}
else{
instrukcje3;
}
Mamy jeszcze jedną instrukcję warunkową – SWITCH. Sprawdza ona jaką wartość ma zmienna, a następnie wykonuje przypisane dla tej wartości kolejne instrukcje.
Najpierw spójrzmy na składnię polecenia switch:
switch ( zmienna ){
case opcja1: instrukcje1; break;
case opcja2: instrukcje2; break;
case opcja3:instrukcje3; break;
default: instrukcje4; break;
}
Składnia nie koniecznie musi nam wszystko mówić, spójrzmy na przykład:
int a; cout<<”Wybierz opcję: 1−pierwsza, 2−druga, 3−trzecia”; cin>>a; switch(a){ case 1: cout<<”Wybrałeś pierwszą opcję”; break; case 2: cout<<”Wybrałeś drugą opcję”; break; case 3: cout<<”Wybrałeś trzecią opcję”; break; default: cout<<”Po co naciskasz nie to co powinieneś ?!”; break; }
Jeżeli użytkownik wprowadzi liczby 1 do 3 – zostanie wybrana odpowiednia opcja. Jeżeli wybierze coś spoza liczba będących opcjami case, wybrana zostanie opcja domyślna – default.
UWAGA: Opcje (case) mogą być tylko i wyłącznie liczbami całkowitymi.
Zastosowanie ? Np. menu programu.