Strona główna » C++ » Kurs » Instrukcja Warunkowa if
 

Instrukcja Warunkowa if

Wstęp

Do tej pory programy w trakcie kursu były prostolinijne: zaczynaliśmy program, przyjmowaliśmy dane i wypisywaliśmy wynik. Dzisiejsza lekcja wytłumaczy instrukcję warunkową if. Pozowali to na sprawdzanie warunków. Dzięki temu nasz program będzie mógł wypisywać wynik zależnie od wprowadzonej wartości. Dzięki temu nasz program będzie można nieco rozgałęzić.

Składnia

  1. if ( [warunek] ) { [lista_instrukcji] }

Instrukcja warunkowa jest sygnalizowana kompilatorowi poprzez słowo if (ang. jeśli). Następnie w nawiasach okrągłych podajemy warunek. Jeśli warunek będzie prawdą to zostaną wykonane instrukcje znajdujące się nawiasach wąsatych. Instrukcje wpisujemy tak samo jak do tej pory w programie. Różnica polega tylko na tym, że zostaną wykonane po spełnieniu określonych warunków. Wewnątrz funkcji if możemy użyć funkcji if.

Operatory porównania

Załóżmy, że mamy dwie liczby do porównanie. Wtedy warto znać poniższe operatory, aby swobodnie móc je porównywać:

SłownieMatematycznieC++
a równe ba = b
a == b
a różne od ba ≠ b
a != b
a większe od ba > b
a > b
a większe, równe ba ≥ b
a >= b
a mniejsze od ba < b
a < b
a mniejsze, równe ba ≤ b
a <= b

Częstym błędem podczas nauki programowanie jest błędne lub niedokładne zapamiętanie operatorów <= oraz >=. Jednak warto podążać za wskazówkami słownym np. większe, równe, dlatego najpierw > potem =.

Przykład użycia

Spróbujmy teraz napisać program, który wczyta liczbę. Następnie sprawdzimy czy wczytana liczba jest dodatnia czy ujemna.

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.   int a;
  5.   cin >> a;
  6.   if (a > 0){
  7.     cout << "Liczba jest dodatnia\n";
  8.   } else {
  9.   if (a < 0){
  10.     cout << "Liczba jest ujemna\n";
  11.   }
  12.   if (a == 0){
  13.     cout << "Liczba to zero\n";
  14.   }
  15.   system("pause");
  16.   return 0;
  17. }

(5.) Deklarujemy zmienną a typu int i (6.) wczytujemy jej wartość od użytkownika. (7.) Sprawdzamy czy a < 0. Jeśli tak to (8.) wypisujemy, że jest dodatnia. Podobnie robimy dla sprawdzania (9. - 11.) czy liczba jest ujemna oraz (12. - 14.) czy jest zerem.

Podany program prawidłowo rozpoznaje znak liczby. Kod jednak można udoskonalić. W przypadku kiedy już upewniliśmy się, że liczba jest dodatnia to niepotrzebnie sprawdzamy czy liczba jest ujemna, albo czy jest zerem. Jednak, aby to usprawnić musimy poznać słowo else i jego znaczenie.

Składnia

  1. if ( [warunek] ) { [lista_instrukcji1] } else { [lista_instrukcji2] }

To jest pełna forma instrukcji if .. else ... Polega na tym, że jeśli jest spełniony warunek to wykonywane są instrukcje z lista_instrukcji1. Jednak jeśli nie to program przechodzi do lista_instrukcji2.

Poprawa przykładu

Spróbujmy teraz zastosować if .. else .. w kodzie:

  1.   if (a > 0){
  2.     cout << "Liczba jest dodatnia\n";
  3.   } else {
  4.   if (a < 0){
  5.     cout << "Liczba jest ujemna\n";
  6.   }
  7.   if (a == 0){
  8.     cout << "Liczba to zero\n";
  9.   }

Dzięki zmianom kod działa teraz tak: (1.) Sprawdzamy czy liczba jest większa od 0. Jeśli tak to (2.) wypisujemy czy liczba jest dodatnia. W linijce (3.) jest } co oznacza koniec ciągu instrukcji. Funkcja pomija klauzule po else, więc przechodzi do kodu po tej części programu. Jednak jeśli liczba jest niedodatnia to przechodzimy do (4.) listy instrukcji po else. Tu mamy kolejną instrukcję if. Tym razem sprawdzamy czy liczba jest ujemna. Jeśli tak to (5.) wypisujemy komunikat, a jeśli nie to stwierdzamy, że (7.) liczba jest zerem. Dzięki instrukcji if .. else .. nie musimy sprawdzać czy liczba jest zerem. Dzięki zmianom w najgorszym przypadku wykonamy dwa porównanie, a nie za każdym razem trzy.

Podsumowanie

Lekcja 7 dobiegła końca. Zajrzyj do kodu źródłowego, aby przeanalizować wypisywanie danych jeszcze raz. Następnie spróbuj wykonać zadania, aby utrwalić materiał.

Zadania

Zadanie 1

Napisz program, który wczyta liczbę całkowitą i wypisze na ekran jej wartość absolutną. W tym celu użyj instrukcji if.

Zadanie 2

Napisz program, który wczyta dwie liczby rzeczywiste. Na ekran powinna zostać wypisana wartość absolutna ich różnicy. W rozwiązaniu nie wolno wyliczyć różnicy, a następnie brać jej wartość absolutną.