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.

  • 🔤 Instrukcja if: Instrukcja if uruchamia blok tylko wtedy, gdy warunek jest wartością różną od zera, czyli prawdą, podczas gdy zero oznacza fałsz.
  • 🔀 Jeśli-w przeciwnym razie: Konstrukcja if-else dodaje gałąź false, uruchamiając jeden blok, gdy warunek jest prawdziwy i kolejny, gdy jest fałszywy.
  • ⚖️. Operatory relacyjne: Sześć operatorów (<, <=, >, >=, ==, !=) tworzy wyrażenia boolowskie, które sprawdzają każdy warunek.
  • 🪜 Drabina „w przeciwnym razie”: Zagnieżdżona drabinka else-if sprawdza kilka wyrażeń od góry do dołu i uruchamia pierwszą prawdziwą gałąź lub domyślną gałąź else.
  • Operator trójskładnikowy: Wyrażenie warunkowe ?: zapisuje zwarty warunek if-else, który zwraca jedną z dwóch wartości w jednym wierszu.
  • 🤖 Pomoc AI: GitHub Copilot tworzy i weryfikuje logikę if-else, sygnalizuje brakujące nawiasy klamrowe i sugeruje czystsze warunki.

Instrukcja warunkowa języka C: JEŻELI, JEŻELI w przeciwnym razie i zagnieżdżona JEŻELI w przeciwnym razie

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:

  1. Jeśli oświadczenie
  2. 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.

Schemat blokowy instrukcji If w języku C

  1. W powyższym programie zainicjowaliśmy dwie zmienne za pomocą num1, num2 o wartościach odpowiednio 1, 2.
  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.
  3. 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

Schemat blokowy instrukcji if-else w języku C

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

Przykład wyniku instrukcji If-Else w języku C

  1. 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.
  2. Tutaj podaliśmy warunek num<10, ponieważ musimy porównać naszą wartość z 10.
  3. 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.
  4. 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.

Zagnieżdżone instrukcje if-else w języku C

  1. Najpierw zadeklarowaliśmy zmienną num o wartości 1. Następnie użyliśmy konstrukcji if-else.
  2. 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.
  3. 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.
  4. 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żona drabinka Else-if w języku C

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.

  1. Zainicjowaliśmy zmienną znakami. W strukturze drabinkowej else-if zapewniliśmy różne warunki.
  2. Wartość ze znaczników zmiennych zostanie porównana z pierwszym warunkiem, ponieważ stwierdzenie z nią powiązane zostanie wydrukowane na ekranie wyjściowym.
  3. Jeśli pierwszy warunek testowy okaże się fałszywy, wówczas jest on porównywany z drugim warunkiem.
  4. 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.

FAQ

Instrukcja if-else testuje dowolne wyrażenie boolowskie, w tym zakresy i kontrole relacji. Sprawa przełącznik porównuje jedną zmienną ze stałymi wartościami i często kompiluje do szybszej tabeli skoków w wielu przypadkach.

Problem z wiszącym else to niejednoznaczność co do tego, do którego if i else należą, gdy instrukcje if są zagnieżdżane bez nawiasów klamrowych. W języku C else zawsze łączy się z najbliższym niedopasowanym if. Dodanie nawiasów klamrowych rozwiązuje ten problem.

Tak. Operatory logiczne łączą warunki: && wymaga, aby obie strony były prawdziwe, || wymaga, aby co najmniej jedna strona była prawdziwa, a ! odwraca wynik. Na przykład if (wiek > 18 && obywatel) testuje dwa warunki jednocześnie w jednym if.

Nawiasy klamrowe są opcjonalne, gdy treść instrukcji jest pojedynczą instrukcją, więc C wykonuje tylko następny wiersz. W przypadku dwóch lub więcej instrukcji, nawiasy klamrowe są wymagane do ich grupowania. Używanie nawiasów klamrowych jest zawsze bezpiecznym nawykiem, który zapobiega błędom logicznym.

Ocena zwarcia kończy się natychmiast po poznaniu wyniku. W przypadku &&, fałszywa lewa strona pomija prawą stronę. W przypadku ||, prawdziwa lewa strona pomija prawą. Pozwala to uniknąć zbędnej pracy i niebezpiecznych operacji.

Tak. Drabinka else-if jest oceniana od góry do dołu i zatrzymuje się na pierwszym prawdziwym warunku. Umieszczanie szerokich warunków przed wąskimi może ukryć wąskie przypadki, dlatego należy uporządkować testy od najbardziej szczegółowych do najbardziej ogólnych.

Tak. Asystenci kodowania AI tworzą bloki warunkowe na podstawie komentarza, konwertują długie łańcuchy if-else na bardziej przejrzyste struktury i sygnalizują prawdopodobne błędy, takie jak użycie = zamiast ==. Zawsze testuj wygenerowaną logikę, zanim jej zaufasz.

Drugi pilot GitHub Automatycznie uzupełnia warunki if, else-if i zagnieżdżone na podstawie komentarzy lub otaczającego kodu. Sugeruje wyrażenia relacyjne i logiczne oraz może dodać brakujące nawiasy klamrowe, jednak warto zapoznać się z każdą sugestią.

Podsumuj ten post następująco: