Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - C++

C++: Instrukcja warunkowa if

Instrukcja warunkowa if jest jednym z najbardziej podstawowych, a zarazem niezbędnych elementów programowania w C++. Umożliwia ona programistom podejmowanie decyzji w kodzie na podstawie spełnienia określonych warunków. W praktyce, dzięki instrukcji if, program może wykonać różne działania w zależności od tego, czy dany warunek jest prawdziwy czy fałszywy.

 

Instrukcja if

Instrukcja warunkowa if w C++ jest używana do wykonania określonego fragmentu kodu, tylko gdy spełniony jest dany warunek. Warunki te często wykorzystują operatory porównania, aby ocenić, czy wartości spełniają określone kryteria. 

 

Budowa instrukcji warunkowej
if(warunek){
    instrukcje;
}

Instrukcja warunkowa rozpoczyna się instrukcją if. Zaraz po niej, w nawiasach okrągłych znajduje się warunek. Jeżeli warunek ten będzie prawdziwy, czy mówiąc inaczej będzie spełniony, wykoanają się instrukcje znajdujące się w bloku instrukcji. Warunek przyjmujemy jako spełniony, gdy jego wartość to logiczne true lub 1.

 

Zobaczmy kilka przykładów.

int liczba = 10;
if (liczba == 10) {
    std::cout << "Liczba jest równa 10." << std::endl;
}

Powyższy kod sprawdza, czy zmienna liczba ma wartość równą 10. Jeśli tak, wyświetlany jest komunikat. 

 

int wiek = 18;
if (wiek != 16) {
    std::cout << "Wiek nie jest równy 16." << std::endl;
}

Tutaj sprawdzamy, czy wiek jest różny od 16. Warunek jest spełniony, gdy wiek nie równa się 16, co skutkuje wyświetleniem komunikatu.

 

int punkty = 75;
if (punkty > 60) {
    std::cout << "Zdałeś egzamin." << std::endl;
}

W tym przykładzie, sprawdzamy, czy wartość zmiennej punkty są większa niż 60. Jeśli warunek jest spełniony, wyświetlane są gratulacje zdania egzaminu.

 

double temperatura = 36.5;
if (temperatura < 37.0) {
    std::cout << "Temperatura jest w normie." << std::endl;
}

Kod ten sprawdza, czy temperatura jest niższa niż 37.0. Jeśli tak, informuje, że temperatura jest w normie.

 

int wiek = 20;
if (wiek >= 18) {
    std::cout << "Jesteś pełnoletni." << std::endl;
}

W tym przypadku, warunek sprawdza, czy wiek jest większy lub równy 18, co jest standardowym kryterium pełnoletności.

 

double sredniaOcen = 4.5;
if (sredniaOcen <= 5.0) {
    std::cout << "Srednia jest niższa lub równa 5.0." << std::endl;
}

Tutaj sprawdzamy, czy średnia ocen jest mniejsza lub równa 5.0. Jeśli tak, wyświetlany jest odpowiedni komunikat.

 

Instrukcja else

Instrukcja else w C++ jest używana w połączeniu z instrukcją if do wykonania kodu, gdy warunek w if nie jest spełniony. Jest to sposób na określenie alternatywnego przepływu programu, który ma być wykonany, gdy dany warunek jest fałszywy.

  • Instrukcja else jest zawsze używana po instrukcji if i nie przyjmuje żadnego warunku.
  • Gdy warunek w if jest fałszywy, program automatycznie przechodzi do bloku kodu określonego w else.
  • Instrukcja else jest opcjonalna i może być pominięta, jeśli nie ma potrzeby określania działania dla niespełnionego warunku if.

 

Budowa instrukcji else

if(warunek){
    instrukcje w if;
}else{
    instrukcje w else;
}

Po zakończeniu bloku instrukcji if, kolejny blok rozpoczyna się od słowa else, następnie już bez warunku, występuje kolejny blok instrukcji.

 

Przejdźmy do przykładów.

int wiek = 16;
if (wiek >= 18) {
    std::cout << "Jesteś pełnoletni." << std::endl;
} else {
    std::cout << "Nie jesteś pełnoletni." << std::endl;
}

W tym przykładzie, jeśli wiek jest mniejszy niż 18, warunek w if jest fałszywy i program wykonuje kod w bloku else.

 

double srednia = 4.5;
if (srednia >= 5.0) {
    std::cout << "Świetny wynik!" << std::endl;
} else {
    std::cout << "Dobry wynik, ale można lepiej." << std::endl;
}

Tutaj, gdy średnia jest poniżej 5.0, instrukcja else zapewnia alternatywną reakcję.

 

Instrukcja else if

Instrukcja else if w C++ służy do tworzenia wielokrotnych warunków w ramach struktury if. Jest używana, gdy istnieje więcej niż dwa możliwe scenariusze i chcesz testować serię różnych warunków. Instrukcja else if pozwala na sprawdzenie kolejnych warunków, jeśli poprzednie warunki w if lub else if nie zostały spełnione.

 

Budowa else if

if(warunek1){
    instrukcje w if;
}else if(warunek2){
    instrukcje w else if;
}else if(warunekX){
    instrukcje w kolejnym else if;
}else{
    instrukcje w else;
}

Instrukcje if oraz else już mamy opanowane, dochodzą nam za to kolejne możliwe warunki do sprawdzenia. W zależności od tego, który z nich będzie spełniony, ten blok instrukcji zostanie wykonany. Ważne jest to, że warunki sprawdzane są po kolei. Jeśli którykolwiek z nich jest prawdziwy, to następne nie zostaną już sprawdzone. W instrukcji warunkowej może wykonać się tylko i wyłącznie jeden blok instrukcji.

 

Przejdźmy do przykładów.

int wiek = 20;
if (wiek < 13) {
    std::cout << "Dziecko" << std::endl;
} else if (wiek < 18) {
    std::cout << "Nastolatek" << std::endl;
} else {
    std::cout << "Dorosły" << std::endl;
}

W tym przypadku, program sprawdza kilka różnych przedziałów wiekowych i wyświetla odpowiednią kategorię. Warunki sprawdzane są kolejno. Początkowo więc sprawdzony zostaje warunek pierwszy, czy wartość zmiennej wiek jest mniejszy niż 13. Jeżeli tak, kończymy działanie if, kolejne warunki nie są sprawdzane. Jeżeli natomiast warunek ten nie jest spełniony, przechodzimy do sprawdzenia kolejnego warunku. Proces ten się powtarza, aż skończą nam się warunki lub jeden z nich jest prawdziwy. W przypadku, gdy wszystkie warunki będą fałszywe, wykona się kod z bloku else.

 

int punktyTestu = 85;
if (punktyTestu >= 90) {
    std::cout << "Ocena 5" << std::endl;
} else if (punktyTestu >= 80) {
    std::cout << "Ocena 4" << std::endl;
} else if (punktyTestu >= 70) {
    std::cout << "Ocena 3" << std::endl;
} else {
    std::cout << "Niezaliczony" << std::endl;
}

Tu natomiast else if jest używane do klasyfikowania wyników testu na podstawie liczby zdobytych punktów.

 

Instrukcja else if jest niezwykle użyteczna w sytuacjach, gdy musisz obsługiwać wiele różnych warunków w jednym bloku instrukcji warunkowych. Pozwala to na bardziej precyzyjną kontrolę logiki programu i lepsze dostosowanie do złożonych scenariuszy.

 

Zagnieżdżanie instrukcji if

Zagnieżdżanie instrukcji if w C++ to praktyka umieszczania jednej instrukcji if wewnątrz innej. Ta technika pozwala na tworzenie bardziej skomplikowanych warunków logicznych, gdzie jeden warunek może zależeć od innego. Zagnieżdżanie jest szczególnie przydatne w sytuacjach, gdy potrzebna jest decyzja na podstawie wielu warunków.

  • Zagnieżdżanie instrukcji if polega na umieszczeniu całej struktury if-else wewnątrz innej instrukcji if lub else if.
  • Można zagnieżdżać wiele poziomów instrukcji if, ale nadmierna ilość może wpłynąć na czytelność kodu.
  • Ważne jest, aby zachować jasną strukturę i unikać zbędnego komplikowania logiki.

Przykłady.

 

bool czyPada = true;
bool czyWeekend = false;

if (czyPada) {
    if (czyWeekend) {
        std::cout << "Zostań w domu i odpocznij." << std::endl;
    } else {
        std::cout << "Weź parasol na drogę do pracy." << std::endl;
    }
}

W tym przykładzie, decyzja o tym, co zrobić w przypadku deszczu, zależy od tego, czy jest weekend. W pierwszej kolejności sprawdzamy warunek czyPada. Jeżeli jest prawdziwy, przechodzimy do sprawdzenia warunku czyWeekend. W zależności od prawdziwości tego warunku mamy dwie opcje komunikatu do wypisania na ekran. W naszym przykładzie czyPada jest prawdziwy, natomiast czyWeekend fałszywy. Stąd komunikatem będzie ten o wzięciu parasola na drogę.

 

int wiek = 20;
bool maPrawoJazdy = true;

if (wiek >= 18) {
    if (maPrawoJazdy) {
        std::cout << "Możesz prowadzić samochód." << std::endl;
    } else {
        std::cout << "Nie masz prawa jazdy." << std::endl;
    }
} else {
    std::cout << "Jesteś za młody, aby prowadzić samochód." << std::endl;
}

Tutaj, pierwszy warunek sprawdza wiek, a drugi - posiadanie prawa jazdy. Oba warunki muszą być spełnione, aby osoba mogła prowadzić samochód.

 

Częste błędy i dobre praktyki

Tworzenie instrukcji warunkowych if, else i else if w C++ wymaga pewnej uwagi, aby uniknąć typowych błędów, które mogą prowadzić do nieprzewidzianych wyników lub trudności w czytaniu i utrzymaniu kodu. Oto przegląd częstych pułapek oraz kilka dobrych praktyk, które pomogą w tworzeniu przejrzystych i efektywnych instrukcji warunkowych.

 
Typowe błędy
  • Mylenie operatora przypisania (=) z operatorem porównania (==)
    int liczba = 10;
    if (liczba = 20) {
        // Ten blok zostanie zawsze wykonany, ponieważ jest to przypisanie, a nie porównanie.
    }

    Należy zawsze upewnić się, że używany jest właściwy operator. Przypisanie, czyli pojedyncze równa się (=) jest zawsze prawdziwe (true).

  • Zagnieżdżanie zbyt wielu warunków
    Zbyt skomplikowane zagnieżdżanie może utrudnić zrozumienie i utrzymanie kodu.
  • Niejasne lub zbyt złożone warunki
    Warunki powinny być jasne i zrozumiałe, aby uniknąć błędów i ułatwić czytanie kodu.

 

Dobre praktyki:
  • Jasność i prostota warunków
    Staraj się, aby warunki były proste i bezpośrednie. Używaj zmiennych i funkcji pomocniczych, aby uczynić warunki bardziej zrozumiałymi.
  • Unikanie zbyt głębokiego zagnieżdżania
    Zbyt wiele poziomów zagnieżdżania może sprawić, że kod stanie się trudny do śledzenia. Rozważ refaktoryzację kodu lub użycie innych struktur, takich jak switch czy pętle.
  • Konsekwencja w formatowaniu
    Spójne formatowanie, takie jak użycie klamer i wcięć, pomaga w czytaniu i zrozumieniu struktury kodu.
  • Testowanie warunków granicznych
    Sprawdzaj, czy Twoje instrukcje warunkowe prawidłowo obsługują wszystkie oczekiwane przypadki, w tym warunki skrajne.
  • Używaj komentarzy do wyjaśniania skomplikowanych warunków
    Jeśli warunek jest złożony, dodaj komentarz wyjaśniający jego logikę.
  • Rozważ wykorzystanie zmiennych do przechowywania wyników warunków
    Zamiast pisać skomplikowane wyrażenia bezpośrednio w instrukcjach if, możesz przypisać wynik do zmiennej, co może poprawić czytelność.
  • Testuj swoje warunki
    Przeprowadzaj testy, aby upewnić się, że wszystkie przypadki są właściwie obsługiwane.

Testy przypięte do lekcji
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się
Aby widzieć ocenę lekcji - Zaloguj się