Powrót do C#

instrukcja if-else

Instrukcja if określa, która procedura zostanie uruchamiana na podstawie wartość wyrażenia logicznego Boole’a. Konieczne jest określenie jednego lub więcej warunków, które będą oceniane, lub testowane przez program, wraz z działaniem lub działaniami, które mają być wykonane. Prosta forma instrukcji if sprawdza warunek i podejmuje działanie, jeśli warunek nie jest spełniony, działanie nie jest podejmowane.

 
            // instrukcja if
            if (warunek)
            {
                działanie jeśli warunek
                jest spełniony
                (warunek==true);
            }
            // Następne instrukcje programu.

Dla pojedynczej instrukcji nawiasy klamrowe są opcjonalne, ale zalecane. Poniższy przykład sprawdzi, czy zmienna k jest większa od zmiennej l i podejmie odpowiednie działanie (wyświetli komunikat).

            int k = 6;
            int l = 5;
            if (k > l) Console.WriteLine("k jest większe od l");

Każdy warunek musi zawierać się w nawiasie okrągłym po słowie kluczu „if”: „if (warunek)”. Takich warunków możemy mieć, ile tylko chcemy, ale aby program ostatecznie przeszedł do instrukcji działania, wszystkie muszą być spełnione:

            int k = 1;
            if (k > 0) if (k<5) if (k<2) Console.WriteLine("Twoje k jest z przedziału od 0 do 2");

Moim osobiście zdaniem, czytelniej jest wykorzystywać nawiasy {}, które sprawiają, że nasz kod jest przejrzysty i czytelny. Podczas testowania warunków często stosuje się operatory relacji, aby sprawdzić warunek:

Operator Opis Działanie

>=

Większe od lub równe 8 >= 3 (true)
3 >= 5 (false)

<=

Mniejsze od lub równe 3<=9 (true)
5<=5 (true)

==

Równoważne, równe „tekst” == „tekst” (true)
15 == 3 (false)
0.87 == 0.87 (true)

!=

Nierównoważne, nierówne „tekst” != „kot” (true)
15 != 14 (true)
0.58 != 0.58 (false)

W poniższym przykładzie instrukcja if sprawdza długość wpisanego tekstu, jeśli jego długość jest równoważna zeru, wtedy zostanie wyświetlona informacja:

            Console.WriteLine("Wpisz coś.");
            string warunek= Console.ReadLine();
            //Jesli nic nie wpiszesz wtedu zmienna warunke będzie równa zero
            //Warunek jest spełniony kiedy nie wpisaneo tekstu
            if (warunek.Length == 0) {
                //Jesli nic nie wpiszesz, program wyświetli
                Console.WriteLine("Nic nie wpisałeś.");
            }

W poniższym przykładzie zmienna typu Boolean jest ustawiona na true, a następnie sprawdzana w instrukcji if. Wyjściem jest wyświetlenie teksu w konsoli, oczywiście warunek jest z góry spełniony.

            bool warunek= true;

            if (warunek) {
                Console.WriteLine("Warunke jest spełniony");
            }
            //lub
            if (warunek==true)
            {
                Console.WriteLine("Warunke jest spełniony");
            }

Powyższe instrukcje nie podejmują działania w przypadku gdy warunek nie jest spełniony, aby instrukcja podejmowała działanie w każdym przypadku, należy ją rozbudować o element „else”, tworząc instrukcję if…else… .

            // instrukcja if
            if (warunek)
            {
                działanie jeśli warunek
                jest spełniony
                (warunek==true);
            }
            else
            {
                działanie jeśli warunek
                nie jest spełniony
                (warunek == false);
            }
            // Następne instrukcje programu.


Po modyfikacji stworzyłem instrukcję powitalną, po wpisaniu imienia, program wyświetli powitanie, jeśli użytkownik nic nie wpisze, wtedy zostanie poinformowany o braku wpisu:

            Console.WriteLine("Wpisz swoje imię.");
            string warunek = Console.ReadLine();
            //Jesli nic nie wpiszesz wtedu zmienna warunke będzie równa zero
            //Warunek jest spełniony kiedy nie wpisaneo tekstu
            if (warunek.Length == 0)
            {
                //Jesli nic nie wpiszesz, program wyświetli
                Console.WriteLine("Nic nie wpisałeś.");
            }
            else
            {
                //Wyświetli powitanie
                Console.WriteLine("Witaj "+ warunek);
            }

Przykład poniższy sprawdza, czy zdałeś egzamin:

            Console.Write("Wprowadź wynik testu: ");
            string k = Console.ReadLine();

            if (Convert.ToInt16(k) > 63)
            {
                Console.WriteLine("Zdałeś, gratulacje!");
            }
            else
            {
                Console.WriteLine("Nie zdałeś.");
            }

Oczywiście nic nie stoi na przeszkodzie, aby zagnieździć jedną instrukcję w drugiej, można zagnieździć tyle instrukcji, ile nam się podoba, byle by test logiczny wewnątrz był dla nas zrozumiały:

            int k = 13;

            if (k>10)
            {
                if (k > 12)
                {
                    if (k > 13)
                    {
                        if (k > 14)
                        {
                            if (k > 15)
                            {
                                Console.WriteLine("Twoje k Jest większe od 15");
                            }
                            else
                            {
                                Console.WriteLine("k jest mniejsze/równe 15");
                            }
                        }
                        else
                        {
                            Console.WriteLine("k jest mniejsze/równe 14");
                        }
                    }
                    else
                    {
                        Console.WriteLine("k jest mniejsze/równe 13");
                    }
                }
                else
                {
                    Console.WriteLine("k jest mniejsze/równe 12");
                }
            }
            else
            {
                Console.WriteLine("k jest mniejsze/równe 10");
            }

            // dla k=14
            //k jest mniejsze/równe 14

            //dla k=11
            //k jest mniejsze/równe 12

            //dla k=15
            //k jest mniejsze/równe 15

Kolejny przykład sprawdzi, czy wpisana liczba jest liczbą parzystą, przyjrzyj się, jak została skonstruowana instrukcja:

            Console.Write("Wprowadź cyfrę: ");
            string str = Console.ReadLine();
            int wartoscCalkowita;
            //Metoda TryParse przypomina w swym działaniu metodę Parsę, z tym wyjątkiem, że metoda 
            //TryParse nie zgłosi wyjątku, po nieudanej konwersji.Poniższa instrukcja próbuje konwersji 
            //wpisanego tekstu na typ integer, jeśli konwersja się uda(warunek będzie spełniony) 
            //instrukcja if będzie wykonana.
            if (int.TryParse(str, out  wartoscCalkowita))
                //test sprawdza resztę z dzielenia
                //jeśli jest równa zero wtedy warunek jest spełniony
                if (wartoscCalkowita % 2 == 0)
                {
                    Console.WriteLine("Wprowadzona liczba '"+ str + "' jest parzysta.");
                }
                else
                {
                    Console.WriteLine("Wprowadzona liczba '" + str + "' jest nieparzysta.");
                }

            //Istnieje możliwość, że nasz ciąg jest liczbą, tylko z przedziału liczb rzeczywistych,
            //aby to sprawdzić, powtarzamy warunek
            if (!int.TryParse(str, out wartoscCalkowita))
                if (float.TryParse(str, out float wartoscZmiennoPrzecinkowa))
                {
                    Console.WriteLine("Wprowadzona liczba '" + str + "' nie jest liczbą całkowitą.");
                }
                else
                {
                    Console.WriteLine("Wprowadzony ciąg  '" + str + "' nie jest liczbą.");
                }

            //Przykład użycia
            //Wprowadź cyfrę: Test
            //Wprowadzony ciąg  'Test' nie jest liczbą.

            //Wpisz znak: 15
            //Wprowadzona liczba '15' jest nieparzysta.

            //Wprowadź cyfrę: 10,9647
            //Wprowadzona liczba '10,9647' nie jest liczbą całkowitą.

W instrukcji powyżej pominięto niektóre nawiasy {}. W instrukcji if można sprawdzać więcej niż jeden warunek, należy w tym celu zastosować modyfikację if … elseif … lub modyfikację if…elseif…else.

 
            // instrukcja if-else 
            if (warunek)
            {
                działeanie ;
            }
            else if (warunek2)
            {  
                 działanie - else if;
            }
            // Następne instrukcje programu.
 
            // instrukcja if-else 
            if (warunek)
            {
                działeanie ;
            }
            else if (warunek2)
            {  
                 działanie - else if;
            }
            else
            {
                działanie - else
                gdy żaden powyższy 
                warunek nie jest spełniony;
            }
            // Następne instrukcje programu.

Poniższy przykład pobierze od użytkownika znak (jeśli zostanie wpisany dłuższy tekst, pobrany zostanie pierwszy znak) i sprawdzi, czy znak jest dużą literą, małą czy cyfrą:

            Console.Write("Wpisz znak: ");
            char ch = (char)Console.Read();

            if (Char.IsUpper(ch))
            {
                Console.WriteLine("Znak jest pisany z dużej litery.");
            }
            else if (Char.IsLower(ch))
            {
                Console.WriteLine("Znak jest pisany z małej litery.");
            }
            else if (Char.IsDigit(ch))
            {
                Console.WriteLine("Znak jest cyfrą.");
            }
            else
            {
                Console.WriteLine("Znak nie jest alfanumeryczny.");
            }

            //Przykład użycia
            //Wpisz znak: E
            //Znak jest pisany z dużej litery..

            //Wpisz znak: e
            //Znak jest pisany z małej litery..

            //Wpisz znak: 4
            //Znak jest cyfrą..

            //Wpisz znak: =
            //Znak nie jest alfanumeryczny.

Przy testowaniu warunków, możesz używać operatorów logicznych, takich jak „&&”, „&”, „||”, „|” i „!” Do generowania złożonych warunków.

Operator Opis Działanie

&&

&

Operator logiczny „i” (AND) true && true = true
true && false= false
false && true = false
false && false= false

||

|

Operator logiczny „lub” (OR) true || true = true
true || false= true
false || true = true
false || false= false

!

Nieprawda że !true = false

!false= true

Program będzie prawidłowo testował warunek, zarówno z pojedynczymi jak i z podwójnymi znakami logicznymi. Poniższy kod przedstawia przykłady.

            // Przykład wykorzystania przeczenia           
            bool wynik = true;
            if (!wynik)
            {
                Console.WriteLine("Warunek jest prawdziwy (wynik = false).");
            }
            else
            {
                Console.WriteLine("Warunek jest fałszywy (wynik = true).");
            }

            // Przykład wykorzystania "i"
            int m = 9;
            int n = 7;
            int p = 5;
            // Warunek jest spełniony, kiedy oba jego człony są prawdziwe
            if (m >= n && m >= p)
            {
                Console.WriteLine("Nic nie jest większe od m.");
            }

            // Przykład wykorzystania "i" i przeczenia
            if (m >= n && !(p > m))
            {
                Console.WriteLine("Nic nie jest większe od m.");
            }

            // Przykład wykorzystania "lub"
            if (m > n || m > p)
            {
                Console.WriteLine("m nie jst najmniejsze");
            }

            // Przykład wykorzystania "lub" i przeczenia
            m = 4;
            if (!(m >= n || m >= p))
            {
                Console.WriteLine("Teraz m jest najmniejsze");
            }
            // Wynik:  
            //Warunek jest fałszywy(wynik = true).
            //Nic nie jest większe od m.
            //Nic nie jest większe od m.
            //m nie jst najmniejsze
            //Teraz m jest najmniejsze

Permalink do tego artykułu: https://visualmonsters.cba.pl/c/instrukcja-if/