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 instrukcjiif
i nie przyjmuje żadnego warunku. - Gdy warunek w
if
jest fałszywy, program automatycznie przechodzi do bloku kodu określonego welse
. - Instrukcja
else
jest opcjonalna i może być pominięta, jeśli nie ma potrzeby określania działania dla niespełnionego warunkuif
.
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 strukturyif
-else
wewnątrz innej instrukcjiif
lubelse 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 instrukcjachif
, 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ę |