Instrukcje warunkowe służą do sprawdzenia czy dany warunek został spełniony. Jest to jedna z podstawowych konstrukcji w programowaniu. Możemy dzięki nim odpowiednio reagować na sytuacje występujące w programie. Za ich pomocą jesteśmy w stanie napisać co się ma wydarzyć gdy warunek jest spełniony lub gdy nie jest. Wszystkie przykłady w tym artykule mają za zadanie pokazać możliwości zastosowania instrukcji warunkowych.

 

Instrukcja warunkowa: if

Słowo kluczowe if służy do tworzenia podstawowej konstrukcji warunkowej. Występuje w wielu językach programowania. Konstrukcja warunkowa tworzona za jego pomocą wygląda następująco:

if(warunek){

//instrukcje do wykonania gdy warunek jest spełniony

}else{

//instrukcje do wykonania gdy warunek nie jest spełniony

}

Zobaczmy przykład użycia instrukcji warunkowej if:

 

using System;
    class Program {
        static void Main() {
            int liczba1 = 10;

            if (liczba1 == 1) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 1");
            } else {
                Console.WriteLine("Zmienna liczba1 ma wartość różną od 1");
            }
            Console.ReadLine();
        }
    }

W metodzie Main() zadeklarowałem zmienną typu int o nazwie liczba1 nadałem jej wartość wynoszącą 10. Następnie za pomocą instrukcji warunkowej if sprawdzam czy wartość zmiennej o nazwie liczba1 jest równa 1. W zależności od rezultatu wyświetlam na ekranie odpowiedni komunikat.

Rezultat działania aplikacji:

Rezultat działania aplikacji

Rys. Rezultat działania aplikacji

Po sprawdzeniu warunku: Czy zmienna o nazwie liczba1 jest równa 1?. Program wykonał instrukcje w bloku else. Czyli warunek nie został spełniony co jest prawdą wartość zmiennej o nazwie liczba1 wynosi 10 więc nie jest równa 1.

Możemy zagnieżdżać konstrukcje warunkowe. Zobaczmy przykład:

 

using System;
namespace Pisz_kod {
    class Program {
        static void Main() {
            int liczba1 = 10;
            if (liczba1 == 1) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 1");
            } else {
                if (liczba1 < 15) {
                    Console.WriteLine("Zmienna liczba1 ma wartość mniejszą od 15");
                    if (liczba1 > 5) {
                        Console.WriteLine("Zmienna liczba1 ma wartość większą od 5");
                    }
                }
                 Console.WriteLine("Zmienna liczba1 ma wartość różną od 1");
            }
            Console.ReadLine();
        }
    }
}

W metodzie Main() zadeklarowałem zmienną typu int o nazwie liczba1 nadałem jej wartość wynoszącą 10. Następnie za pomocą instrukcji warunkowej if sprawdzam czy wartość zmiennej o nazwie liczba1 jest równa 1. Jeżeli tak wyświetlam komunikat na ekranie. W przeciwnym wypadku zostaną wykonane instrukcje w bloku else. Sprawdzam w nim warunek: Czy wartość zmiennej o nazwie liczba1 jest mniejsza od 15?. Jeżeli tak program wyświetli odpowiedni komunikat następnie sprawdzi: Czy wartość zmiennej liczba1 jest większa od 5? Jeżeli tak to zostanie wyświetlony komunikat. Następnie jeżeli będzie wykonywany blok else zostanie wyświetlony komunikat: “Zmienna liczba1 ma wartość różną od 1”.

Oto rezultat działania aplikacji:

Rezultat działania aplikacji

Rys. Rezultat działania aplikacji

W programie zostały zagnieżdżone instrukcje warunkowe if.

Oczywiście jest to tylko przykład. Pokazanie możliwości zagnieżdżania instrukcji warunkowych.

Zobaczmy inny przykład:

using System;
namespace Pisz_kod {
    class Program {
        static void Main() {
            int liczba1 = 1;

            if (liczba1 == 1) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 1");
            }
            if (liczba1 == 7) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 7");
            }
            if (liczba1 == 5) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 5");
            }

            if ((liczba1 != 1) && (liczba1 != 5) && (liczba1 != 7)) {
                Console.WriteLine("Zmienna liczba1 ma wartość różną od 1,5,7");
            }
            Console.ReadLine();
        }
    }
}

 

Oto rezultat działania aplikacji:

Rezultat działania aplikacji

Rys. Rezultat działania aplikacji

W tym przykładzie w metodzie Main() znajduje się kilka instrukcji warunkowych:

  • if (liczba1 == 1) – sprawdza czy wartość zmiennej o nazwie liczba1 wynosi 1
  • if (liczba1 == 7) – sprawdza czy wartość zmiennej o nazwie liczba1 wynosi 7
  • if (liczba1 == 5) – sprawdza czy wartość zmiennej o nazwie liczba1 wynosi 5
  • if ((liczba1 != 1) && (liczba1 != 5)&& (liczba1 != 7)) – sprawdza czy wartość zmiennej o nazwie liczba1 jest różna od 1, 5, 7

Ciekawostka:

Do łączenia ze sobą warunków służą dwa operatory: && oraz ||, można je zapisywać w postaci pojedynczego znaku &, |. Używając pojedynczych znaków wymuszamy sprawdzenie wszystkich wyrażeń warunkowych w konstrukcji z użyciem słowa kluczowego if. Nawet gdy jest to zbędne. Używanie podwójnych znaków jest bardziej efektywne, pominięte zostaje sprawdzenie warunków, które nie są wymagane. Na przykład gdy pierwsze wyrażenie zwróci wartość false, a warunki są połączone operatorami && program przejdzie do wykonywania bloku else nie sprawdzając następnych warunków. W przypadku użycia operatora & kompilator sprawdzi wszystkie warunki i dopiero przejdzie do bloku else.

Za pomocą nawiasów w instrukcji warunkowej if możemy ustalać priorytety wykonywania operacji. Operacje zamieszczone w nawiasach będą wykonywane w pierwszej kolejności.

Program w przykładzie powyżej sprawdza wszystkie warunki choć wykonany został pierwszy z nich. Aby uniknąć niepotrzebnego sprawdzania kolejnych warunków możemy zastosować konstrukcję else if. Zobaczmy zmodyfikowany przykład:

using System;
namespace Pisz_kod {
    class Program {
        static void Main() {
            int liczba1 = 1;
            if (liczba1 == 1) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 1");
            }
            else if (liczba1 == 7) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 7");
            }
            else if (liczba1 == 5) {
                Console.WriteLine("Zmienna liczba1 ma wartość wynoszącą 5");
            }
            else if ((liczba1 != 1) && (liczba1 != 5) && (liczba1 != 7)) {
                Console.WriteLine("Zmienna liczba1 ma różną od 1,5,7");
            }
            Console.ReadLine();
        }
    }
}

Rezultat działania aplikacji jest identyczny. Jednak dzięki zastosowaniu konstrukcji else if w niektórych przypadkach sprawdzanych jest mniej warunków. W przykładzie powyżej został sprawdzony tylko pierwszy z nich. Jednak jeżeli liczba wynosiłaby np. 11 zostałyby sprawdzone wszystkie warunki.

Podsumowanie:

Instrukcje warunkowe z użyciem słowa kluczowego if są nieodzowne podczas codziennej pracy z projektem. Należy się z nimi dobrze zapoznać a przede wszystkim zrozumieć zasadę ich działania. Zwróć uwagę podczas pracy z kodem na to, że duże zagnieżdżenie instrukcji warunkowych zmniejsza czytelność kodu.