Instrucțiuni condiționale în C: If, Else, Nested If cu exemplu

⚡ Rezumat inteligent

Instrucțiunile condiționale în C controlează fluxul unui program prin execuția unor blocuri de cod numai atunci când o condiție testată se evaluează ca adevărată, permițând luarea deciziilor prin construcții ladder de tip if, if-else, nested și else-if.

  • 🔤 Instrucțiunea If: O instrucțiune if își execută blocul numai atunci când condiția este o valoare adevărată diferită de zero, în timp ce zero înseamnă fals.
  • 🔀 Dacă-altfel: Construcția if-else adaugă o ramură falsă, rulând un bloc atunci când condiția este adevărată și un altul când este falsă.
  • 🇧🇷 Operatori relaționali: Șase operatori (<, <=, >, >=, ==, !=) construiesc expresiile booleene pe care le testează fiecare condiție.
  • 🪜 Scară altfel-dacă: O scară imbricată de tip else-if verifică mai multe expresii de sus în jos și rulează prima ramură adevărată sau o ramură else implicită.
  • Operator ternar: Expresia condițională ?: scrie un if-else compact care returnează una dintre cele două valori pe o singură linie.
  • 🤖 Asistență AI: GitHub Copilot elaborează și revizuiește logica if-else, semnalează acoladele lipsă și sugerează condiții mai curate.

Instrucțiune condițională C: IF, IF Else și IF Else imbricat

Ce este o declarație condiționată în C?

Instrucțiunile condiționale în programarea C sunt utilizate pentru a lua decizii pe baza condițiilor. Instrucțiunile condiționale se execută secvențial atunci când nu există nicio condiție în jurul instrucțiunilor. Dacă se pune o anumită condiție pentru un bloc de instrucțiuni, fluxul de execuție se poate modifica în funcție de rezultatul evaluat de condiție. Acest proces se numește luare a deciziilor în C.

Spre deosebire de bucle în C care repetă cod, instrucțiunile condiționale aleg o singură cale.

În programarea „C” instrucțiunile condiționate sunt posibile cu ajutorul următoarelor două constructe:

  1. Dacă afirmație
  2. Instrucțiunea If-else

Se mai numește și ramificare, deoarece un program decide ce instrucțiune să execute pe baza rezultatului condiției evaluate.

Dacă afirmație

Este una dintre declarațiile condiționale puternice. Instrucțiunea If este responsabilă pentru modificarea fluxului de execuție a unui program. Instrucțiunea If este întotdeauna folosită cu o condiție. Condiția este evaluată mai întâi înainte de a executa orice instrucțiune în corpul lui If. Sintaxa pentru instrucțiunea if este următoarea:

 if (condition) 
     instruction;

Condiția se evaluează ca fiind adevărată sau falsă. True este întotdeauna o valoare diferită de zero, iar false este o valoare care conține zero. Instrucțiunile pot fi o singură instrucțiune sau un bloc de cod închis de acolade { }.

Următorul program ilustrează utilizarea construcției if în programarea „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;
}

ieșire:

num1 is smaller than num2

Programul de mai sus ilustrează utilizarea construcției if pentru a verifica egalitatea a două numere.

Diagrama logică a instrucțiunilor If în C

  1. În programul de mai sus, am inițializat două variabile cu num1, num2 cu valoarea 1, respectiv 2.
  2. Apoi, am folosit if cu o expresie-test pentru a verifica care număr este cel mai mic și care număr este cel mai mare. Am folosit o expresie relațională în construcția if. Deoarece valoarea lui num1 este mai mică decât num2, condiția va fi evaluată ca adevărată.
  3. Astfel, va tipări declarația în interiorul blocului If. După aceea, controlul va ieși în afara blocului și programul va fi încheiat cu un rezultat de succes.

Relațional Operatori

C are șase operatori relaționali care pot fi utilizați pentru a formula o expresie booleană pentru luarea unei decizii și testarea condițiilor, care returnează adevărat sau fals:

  • < - mai puțin decât
  • <= — mai mic sau egal cu
  • > — mai mare decât
  • >= — mai mare sau egal cu
  • == — egal cu
  • != — nu este egal cu

Observați că testul egal (==) este diferit de operatorul de atribuire (=), deoarece este una dintre cele mai frecvente probleme cu care se confruntă un programator prin amestecarea acestora.

De exemplu:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

ieşire:

 You succeed

Rețineți că o condiție care se evaluează la o valoare diferită de zero este considerată adevărată.

De exemplu:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

ieșire:

There is someone present in the classroom

Declarația If-Else

Diagrama de flux a instrucțiunii C If-Else

Instrucțiunea if-else este o versiune extinsă a instrucțiunii If. Forma generală a instrucțiunii if-else este următoarea:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

În acest tip de construcție, dacă valoarea expresiei-test este adevărată, atunci blocul de instrucțiuni adevărat va fi executat. Dacă valoarea expresiei-test este falsă, atunci blocul de instrucțiuni false va fi executat. În orice caz, după execuție, controlul va fi transferat automat către instrucțiunile care apar în afara blocului If.

Următoarele programe ilustrează utilizarea constructului if-else:

Vom inițializa o variabilă cu o anumită valoare și vom scrie un program pentru a determina dacă valoarea este mai mică de zece sau mai mare de zece.

Să începem.

#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;
}

ieșire:

The value is greater than 10

Exemplu de ieșire a instrucțiunii If-Else în C

  1. Am inițializat o variabilă cu valoarea 19. Trebuie să aflăm dacă numărul este mai mare sau mai mic decât 10 folosind un program „C”. Pentru a face acest lucru, am folosit constructul if-else.
  2. Aici am furnizat o condiție num<10 pentru că trebuie să comparăm valoarea noastră cu 10.
  3. După cum puteți vedea, primul bloc este întotdeauna un bloc adevărat, ceea ce înseamnă că dacă valoarea expresiei test este adevărată, atunci primul bloc care este If, ​​va fi executat.
  4. Al doilea bloc este un bloc else. Acest bloc conține instrucțiunile care vor fi executate dacă valoarea expresiei-test devine falsă. În programul nostru, valoarea lui num este mai mare de zece, prin urmare condiția de testare devine falsă, iar blocul este executat. Astfel, ieșirea noastră va fi dintr-un bloc else care este „Valoarea este mai mare decât 10”. După if-else, programul se va încheia cu un rezultat de succes.

În programarea „C” putem folosi mai multe constructe if-else unele în altele, care sunt denumite imbricarea instrucțiunilor if-else.

Expresii condiționale

O altă modalitate de a exprima o instrucțiune if-else este prin introducerea operatorului ?:. Într-o expresie condițională, operatorul ?: are o singură instrucțiune asociată cu if-ul și else-ul.

De exemplu:

#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;}

ieșire:

y =2

Instrucțiuni if-else imbricate

Când este necesară o serie de decizii, se folosește imbricat if-else. Imbricare înseamnă folosirea unui construct dacă-altfel în altul.

Să scriem un program pentru a ilustra utilizarea imbricată 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;
}

ieșire:

The value is:1

Programul de mai sus verifică dacă un număr este mai mic sau mai mare decât 10 și tipărește rezultatul utilizând construcția imbricată if-else.

Instrucțiune If-else imbricată în C

  1. În primul rând, am declarat o variabilă num cu valoarea 1. Apoi am folosit construcția if-else.
  2. În modul if-else extern, condiția furnizată verifică dacă un număr este mai mic decât 10. Dacă condiția este adevărată, atunci și numai atunci va executa blocul intern. În acest caz, condiția este adevărată, prin urmare, blocul intern este procesat.
  3. În blocul interior, avem din nou o condiție care verifică dacă variabila noastră conține valoarea 1 sau nu. Când o condiție este adevărată, atunci va procesa blocul If, altfel va procesa un bloc else. În acest caz, condiția este adevărată, prin urmare, blocul If este executat, iar valoarea este afișată pe ecranul de ieșire.
  4. Programul de mai sus va afișa valoarea unei variabile și se va închide cu succes.

Încercați să schimbați valoarea lui variabil vezi cum se comportă programul.

NOTĂ: În cazul construcțiilor if-else imbricate, trebuie să fim atenți la indentare, deoarece în acest proces sunt implicate mai multe construcții if-else, ceea ce face dificilă identificarea construcțiilor individuale. Indentarea corectă facilitează citirea programului.

Instrucțiuni imbricate Else-if

Scară Else-if imbricată în C

Imbricat else-if este utilizat atunci când sunt necesare decizii cu mai multe căi.

Sintaxa generală a modului în care sunt construite scări altfel-if în programarea „C” este următoarea:

 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;

Acest tip de structură este cunoscut sub numele de scară else-if. Acest lanț arată în general ca o scară, prin urmare, este numit și scară else-if. Expresiile de test sunt evaluate de sus în jos. Ori de câte ori se găsește o expresie de test adevărată, se execută instrucțiunea asociată acesteia. Când toate cele n expresii de test devin false, atunci se execută instrucțiunea else implicită.

Să vedem funcționarea reală cu ajutorul unui program.

#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;
}

ieșire:

First class

Programul de mai sus tipărește nota în funcție de notele obținute la un test. Am folosit construcția scară else-if în programul de mai sus.

  1. Am inițializat o variabilă cu semne. În structura scării else-if, am oferit diverse condiții.
  2. Valoarea din marcajele variabilei va fi comparată cu prima condiție deoarece este adevărată afirmația asociată acesteia va fi tipărită pe ecranul de ieșire.
  3. Dacă prima condiție de testare se dovedește falsă, atunci este comparată cu a doua condiție.
  4. Acest proces va continua până când toate expresiile sunt evaluate, altfel controlul va ieși din scara else-if, iar instrucțiunea implicită va fi afișată.

Încercați să modificați valoarea și observați modificarea rezultatului.

Întrebări frecvente

O instrucțiune if-else testează orice expresie booleană, inclusiv intervale și verificări relaționale. comutator ... carcasă compară o variabilă cu valori constante fixe și adesea compilează într-un tabel de salt mai rapid pentru multe cazuri.

Problema „else” suspendată este ambiguitatea cu privire la care instrucțiuni „if” sau „else” aparține instrucțiunilor „when if” și „if” sunt imbricate fără acolade. În C, o instrucțiune „else” se împerechează întotdeauna cu cea mai apropiată instrucțiune „if” nepotrivită. Adăugarea acoladelor elimină confuzia.

Da. Operatorii logici unesc condițiile: && necesită ca ambele părți să fie adevărate, || necesită cel puțin una adevărată și ! inversează un rezultat. De exemplu, if (age > 18 && citizen) testează două condiții împreună într-unul singur if.

Acoladele sunt opționale atunci când corpul este o singură instrucțiune, deci C rulează doar linia următoare. Pentru două sau mai multe instrucțiuni, acoladele sunt necesare pentru a le grupa. Utilizarea întotdeauna acoladelor este un obicei sigur care previne erorile logice.

Evaluarea scurtcircuitului se oprește imediat ce rezultatul este cunoscut. Cu &&, o parte stângă falsă sare peste partea dreaptă. Cu ||, o parte stângă adevărată sare peste partea dreaptă. Acest lucru evită lucrările inutile și operațiunile nesigure.

Da. O scară de tip „else-if” este evaluată de sus în jos și se oprește la prima condiție adevărată. Plasarea condițiilor generale înaintea celor înguste poate ascunde cazurile înguste, așadar ordonați testele de la cel mai specific la cel mai general.

Da. Asistenții de codare bazați pe inteligență artificială creează blocuri condiționale dintr-un comentariu, convertesc lanțurile lungi if-else în structuri mai curate și semnalează erorile probabile, cum ar fi utilizarea lui = în loc de ==. Testați întotdeauna logica generată înainte de a o considera încrezătoare.

Copilotul GitHub completează automat condițiile if, else-if și imbricate din comentariile sau codul înconjurător. Sugerează expresii relaționale și logice și poate adăuga acolade lipsă, deși ar trebui să examinați fiecare sugestie.

Rezumați această postare cu: