Instrukcje warunkowe w języku C: If, Else, zagnieżdżone If z przykładem
⚡ Inteligentne podsumowanie
Instrukcje warunkowe w języku C sterują przepływem programu poprzez wykonywanie bloków kodu tylko wtedy, gdy sprawdzany warunek okaże się prawdziwy, umożliwiając podejmowanie decyzji za pomocą konstrukcji drabinkowych if, if-else, nested oraz else-if.

Co to jest instrukcja warunkowa w języku C?
Instrukcje warunkowe w programowaniu w języku C służą do podejmowania decyzji na podstawie warunków. Instrukcje warunkowe są wykonywane sekwencyjnie, gdy nie są one powiązane z żadnym warunkiem. Jeśli umieścisz jakiś warunek w bloku instrukcji, przepływ wykonania może się zmienić w zależności od wyniku oceny tego warunku. Ten proces w języku C nazywa się podejmowaniem decyzji.
w odróżnieniu pętle w C że powtarzający się kod, instrukcje warunkowe wybierają jedną ścieżkę.
W programowaniu w języku C instrukcje warunkowe są możliwe przy pomocy następujących dwóch konstrukcji:
- Jeśli oświadczenie
- Instrukcja if-else
Nazywa się to również rozgałęzianiem, ponieważ program decyduje, którą instrukcję wykonać na podstawie wyniku ocenionego warunku.
Jeśli oświadczenie
Jest to jedna z potężnych instrukcji warunkowych. Instrukcja if odpowiada za modyfikację przebiegu wykonywania programu. Instrukcja if jest zawsze używana z warunkiem. Warunek jest oceniany najpierw przed wykonaniem jakiejkolwiek instrukcji znajdującej się w treści If. Składnia instrukcji if jest następująca:
if (condition)
instruction;
Warunek ma wartość true lub false. Prawda jest zawsze wartością różną od zera, a fałsz jest wartością zawierającą zero. Instrukcje mogą mieć postać pojedynczej instrukcji lub bloku kodu ujętego w nawiasy klamrowe { }.
Poniższy program ilustruje użycie konstrukcji if w programowaniu w języku C:
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
Wyjście:
num1 is smaller than num2
Powyższy program ilustruje użycie konstrukcji if do sprawdzenia równości dwóch liczb.
- W powyższym programie zainicjowaliśmy dwie zmienne za pomocą num1, num2 o wartościach odpowiednio 1, 2.
- Następnie użyliśmy if z wyrażeniem testowym, aby sprawdzić, która liczba jest najmniejsza, a która największa. Użyliśmy wyrażenia relacyjnego w konstrukcji if. Ponieważ wartość Num1 jest mniejsza niż Num2, warunek zostanie uznany za prawdziwy.
- W ten sposób wydrukuje instrukcję wewnątrz bloku If. Następnie sterowanie wyjdzie poza blok i program zakończy się pomyślnym wynikiem.
Relacyjny Operatorsy
Język C ma sześć operatorów relacyjnych, których można użyć do sformułowania wyrażenia boolowskiego służącego do podejmowania decyzji i testowania warunków, zwracającego wartość prawda lub fałsz:
<— mniej niż<=— mniejsze lub równe>— większy niż>=— większe lub równe==— równy!=— nierówny
Należy zauważyć, że test równości (==) różni się od operatora przypisania (=), ponieważ jest to jeden z najczęstszych problemów, z jakimi spotykają się programiści, gdy je mylą.
Na przykład:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
wyjście:
You succeed
Należy pamiętać, że warunek, który ma wartość różną od zera, jest uważany za prawdziwy.
Na przykład:
int present = 1; if (present) printf("There is someone present in the classroom \n");
Wyjście:
There is someone present in the classroom
Instrukcja If-else
Instrukcja if-else jest rozszerzoną wersją instrukcji if. Ogólna postać instrukcji if-else jest następująca:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
W tego typu konstrukcji, jeśli wartość wyrażenia-testowego jest równa true, to zostanie wykonany blok instrukcji true. Jeśli wartość wyrażenia-testowego jest równa false, to zostanie wykonany blok instrukcji false. W każdym przypadku, po wykonaniu, sterowanie zostanie automatycznie przekazane do instrukcji znajdujących się poza blokiem if.
Poniższe programy ilustrują użycie konstrukcji if-else:
Zainicjujemy zmienną pewną wartością i napiszemy program sprawdzający, czy wartość jest mniejsza niż dziesięć, czy większa niż dziesięć.
Zaczynajmy.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
Wyjście:
The value is greater than 10
- Zainicjalizowaliśmy zmienną o wartości 19. Musimy sprawdzić, czy liczba jest większa, czy mniejsza od 10, za pomocą programu „C”. W tym celu użyliśmy konstrukcji if-else.
- Tutaj podaliśmy warunek num<10, ponieważ musimy porównać naszą wartość z 10.
- Jak widać, pierwszy blok jest zawsze prawdziwym blokiem, co oznacza, że jeśli wartość wyrażenia testowego jest prawdziwa, wówczas zostanie wykonany pierwszy blok, czyli If.
- Drugi blok to blok else. Blok ten zawiera instrukcje, które zostaną wykonane, jeśli wartość wyrażenia testowego stanie się fałszywa. W naszym programie wartość num jest większa niż dziesięć, dlatego warunek testowy staje się fałszywy i w przeciwnym razie wykonywany jest blok. Zatem nasze dane wyjściowe będą pochodzić z bloku else, który brzmi: „Wartość jest większa niż 10”. Po if-else program zakończy się pomyślnym wynikiem.
W programowaniu w języku C możemy używać wielu konstrukcji if-else w sobie, co określa się mianem zagnieżdżania instrukcji if-else.
Wyrażenia warunkowe
Innym sposobem wyrażenia instrukcji if-else jest wprowadzenie operatora ?:. W wyrażeniu warunkowym operator ?: ma tylko jedną instrukcję powiązaną z if i else.
Na przykład:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
Wyjście:
y =2
Zagnieżdżone instrukcje if-else
Gdy wymagana jest seria decyzji, używana jest zagnieżdżona instrukcja if-else. Zagnieżdżanie oznacza użycie jednej konstrukcji if-else w innej.
Napiszmy program ilustrujący użycie zagnieżdżonej instrukcji if-else.
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
Wyjście:
The value is:1
Powyższy program sprawdza, czy liczba jest mniejsza czy większa niż 10 i wypisuje wynik przy użyciu zagnieżdżonej konstrukcji if-else.
- Najpierw zadeklarowaliśmy zmienną num o wartości 1. Następnie użyliśmy konstrukcji if-else.
- W przypadku instrukcji zewnętrznej if-else podany warunek sprawdza, czy liczba jest mniejsza niż 10. Jeśli warunek jest spełniony, to i tylko wtedy blok wewnętrzny zostanie wykonany. W tym przypadku warunek jest spełniony, co oznacza, że blok wewnętrzny jest przetwarzany.
- W bloku wewnętrznym ponownie mamy warunek, który sprawdza, czy nasza zmienna zawiera wartość 1. Jeśli warunek jest spełniony, przetwarzany jest blok If, w przeciwnym razie przetwarzany jest blok else. W tym przypadku warunek jest spełniony, zatem blok If jest wykonywany, a wartość jest wyświetlana na ekranie wyjściowym.
- Powyższy program wydrukuje wartość zmiennej i zakończy działanie pomyślnie.
Spróbuj zmienić wartość zmienna zobacz jak zachowuje się program.
UWAGA: W zagnieżdżonych konstrukcjach if-else należy zachować ostrożność przy wcięciach, ponieważ w tym procesie zaangażowanych jest wiele konstrukcji if-else, przez co trudno jest rozróżnić poszczególne konstrukcje. Prawidłowe wcięcia ułatwiają odczytanie programu.
Zagnieżdżone instrukcje Else-if
Zagnieżdżony else-if jest używany, gdy wymagane są decyzje wielościeżkowe.
Ogólna składnia konstrukcji drabin w języku C jest następująca:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
Ten typ struktury znany jest jako drabinka else-if. Ten łańcuch zazwyczaj wygląda jak drabinka, dlatego nazywa się go również drabinką else-if. Wyrażenia testowe są obliczane od góry do dołu. Za każdym razem, gdy znalezione zostanie wyrażenie testowe o wartości true, wykonywana jest powiązana z nim instrukcja. Gdy wszystkie n wyrażeń testowych stanie się false, wykonywana jest domyślna instrukcja else.
Przyjrzyjmy się faktycznej pracy z pomocą programu.
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
Wyjście:
First class
Powyższy program drukuje ocenę na podstawie ocen zdobytych na teście. W powyższym programie użyliśmy konstrukcji drabinkowej else-if.
- Zainicjowaliśmy zmienną znakami. W strukturze drabinkowej else-if zapewniliśmy różne warunki.
- Wartość ze znaczników zmiennych zostanie porównana z pierwszym warunkiem, ponieważ stwierdzenie z nią powiązane zostanie wydrukowane na ekranie wyjściowym.
- Jeśli pierwszy warunek testowy okaże się fałszywy, wówczas jest on porównywany z drugim warunkiem.
- Proces ten będzie się powtarzał, aż wszystkie wyrażenia zostaną ocenione; w przeciwnym razie sterowanie wyjdzie poza drabinkę else-if i zostanie wyświetlone polecenie default.
Spróbuj zmodyfikować wartość i zwróć uwagę na zmianę na wyjściu.





