Instrukcje warunkowe w .NET C#

Po dłuższej przerwie w publikacji postów na moim blogu – czas na powrót. I to powrót w nie byle jakim stylu, bo niesie on ze sobą instrukcje warunkowe.

W poprzednim wpisie z tej serii, zatytułowanym jako kolejność wykonywania działań w C#, jak i w pozostałych wpisach, gdzie uruchamialiśmy swój kod, wszystkie programy działały w sposób liniowy, gdzie polecenia wykonywane były od pierwszego do ostatniego.

Życie jednak nie jest tak proste i praktyka nie działa w tak łatwy sposób – niemal w każdym programie zachodzi konieczność podjęcia decyzji – wykonania lub nie wykonania pewnego fragmentu programu.

O czym powiemy sobie kilka słów w dzisiejszym wpisie poświęconym zagadnieniu instrukcji warunkowych.

 

1. Instrukcje warunkowe w .NET C# – Instrukcja IF
Składnia instrukcji IF

Powyższe linie to nic prostszego jak składania zwykłej instrukcji IF, która mówi, że jeśli wyrażenie logiczne przyjmie wartość true to wykonana zostanie instrukcja.

Częstym przypadkiem jest również sytuacja w której w instrukcji IF znajdować się może cały blog instrukcji, który wówczas należy objąć nawiasami klamrowymi, tak jak jest to widoczne poniżej.

 

Przykład 1

Poniższy przykład oblicza delte ze wskazanego wyrażenia, tj.:

Δ = b2 – 4ac, jeżeli Δ = 0, to x = – b / 2a

Przykład ten przedstawia instrukcje IF dla spełnionego warunku. Co zatem w przypadku, gdy warunek naszej instrukcji nie zostaje spełniony?

 

2. Instrukcje warunkowe w .NET C# – Instrukcja IF ELSE

Do obsługi sytuacji, która jako scenariusz przyjmuje również wariant w którym nasz warunek nie zostaje spełniony, stosowana jest instrukcja IF ELSE, która pozwala nam niejako na alternatywę.

 

Składnia instrukcji IF ELSE

Powyższy zapis mówi, że jeśli wyrażenie logiczne przyjmuje wartość true wykonana zostanie instrukcja1, w przeciwnym wypadku, wykonana zostanie instrukcja2 – proste? Proste.

Podobnie jak przy zastosowaniu w instrukcji IF bloku warunków, tu również stosujemy nawiasy klamrowe, co uwidacznia nam poniższy zapis.

 

Przykład 2

Stosując już wcześniej wykorzystane wyrażenie pozwalające nam na obliczenie delty równania kwadratowego, zobaczmy jak możemy je zapisać z zastosowaniem alternatywy instrukcji IF ELSE.

 

Instrukcja IF ELSE może być również wielowarunkowa, ogólnie rzecz ujmując nie ma w tej kwestii ograniczeń co do liczby warunków. Składnia takiej postaci wielowarunkowej może przyjąć postać:

 

Przykład 3

 

3. Instrukcje warunkowe w .NET C# – Operator warunkowy

Instrukcja IF ELSE to jednak nie wszystko. W sytuacji prostych instrukcji warunkowych, wykorzystać możemy również operator warunkowy, który działa w bardzo podobny sposób jak instrukcja IF ELSE.

Składnia operatora warunkowego 

Zapis ten mówi nam, że jeśli wyrażenie logiczne przyjmie wartość true wynikiem naszym będzie wyrazenie1, w przeciwnym przypadku w wyniku możemy spodziewać się wyrazenia2.

 

Przykłady

 

4. Instrukcje warunkowe w .NET C# – Instrukcja SWITCH CASE

Wcześniej opisane metody/instrukcje, które niewątpliwie znajdą swoje rozwiązanie w nieco bardziej skomplikowanych przypadkach, możemy niekiedy zastąpić, co sprawia, że instrukcje warunkowe w języku .NET C# dają nam pewną dowolność.

Możemy tego dokonać w sytuacjach, kiedy program powinien uwzględnić proste, konkretne wartości poprzez zastosowanie instrukcji wielowarunkowej SWITCH CASE.

 

Składnia/Przykład

W powyższym przykładzie dobrze będzie jeśli zastosujemy opcję default, która niejako obsłuży nam wyjątek w momencie, gdy wpiszemy błędną wartość.

Np.:

Instrukcja SWITCH CASE może również obsłużyć kilka przypadków szczególnych. Do takich należy m.in. sytuacja w której potrzebujemy aby nasz blok CASE przyjmował więcej niże jedną instrukcję, np. :

W powyższej sytuacji, jak widzimy, w przeciwieństwie do innych instrukcji w języku .NET C#, tego bloku nie musimy ujmować w nawiasy klamrowe. W instrukcji CASE, wszystko co znajduje się pomiędzy słowem kluczowym CASE oraz jego wartością, a słowem opuszczającym blok CASE lub całą instrukcję – w tym przypadku – BREAK, traktowane jest jako blok instrukcji.

Kolejnym przypadkiem jest sytuacja w której zachodzi potrzeba aby program po wykonaniu bloku kodu dla danego przypadku, program wykonał dodatkowo kod dla innego przypadku, zapisany w innej instrukcji CASE. Możliwość taką daje zastąpienie polecenia BREAK poleceniem GOTO CASE, np.:

Kolejnym przypadkiem jest sytuacja w której program nie zawiera w sobie żadnej instrukcji warunkowej. Jeśli występuje taka konieczność, jest ona również związana z tym, że w kodzie nie ma także żadnej instrukcji wychodzącej (np. BREAK).

Sytuacja taka przez kompilator będzie interpretowana w taki sposób, że:

jeśli dla danej wartości w przypadku CASE nie ma żadnych instrukcji tzn., że przypadek kolejny ma przejąć tę funkcję.

 

Przykład

WAŻNE

W instrukcji SWITCH CASE, przy jej stosowaniu należy pamiętać, że zmienna, której wartość będzie testowana (w naszym przypadku była to zmienna poraRoku) nie może być dowolnego typu.

Wśród dopuszczalnych typów tej zmiennej, są: bool, char, string, int oraz enum.

Ponadto, musimy również pamiętać, aby wartości, które pojawiają się po słowie kluczowym CASE (w powyższych przykładach: Wiosna, Lato, Jesień, Zima) muszą być w postaci stałej lub literału, ewentualnie wyrażenia używającego literałów lub stałych.

 

Po krótce omówiliśmy sobie w tym wpisie Instrukcje warunkowe w języku C#.

Kolejny wpis z tej serii dotyczył będzie Instrukcji cyklicznych – pętli i pojawi się znacznie szybciej niż obecny – obiecuję 🙂

Podziel się:

3 komentarze

    • mangusta, 15/06/2017, 15:51

    Odpowiedz

    Długo kazałeś czekać, ale warto było:) Art pochłonięty, czekam na kolejny!

    1. Odpowiedz

      Przepraszam, ale w ostatnim czasie dużo się dzieje. Nie mniej jednak cieszy myśl, że ktoś czeka. Kolejny, jeszcze w tym tygodniu – może nawet dwa 🙂 Obiecuję. Pozdrawiam

  1. Odpowiedz

    Ja też czekałem i przegapiłem. Dopiero dzisiaj udało mi się wciągnąć artykuł na raz, oczywiście z przyjemnością i łatwością.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.