logo

Odločanje v C (if, if..else, Nested if, if-else-if)

The pogojne izjave (znane tudi kot strukture za nadzor odločanja), kot so if, if else, switch itd., se uporabljajo za namene odločanja v programih C.

Znani so tudi kot izjave o odločanju in se uporabljajo za ovrednotenje enega ali več pogojev in sprejemanje odločitve, ali naj se niz stavkov izvede ali ne. Ti stavki za odločanje v programskih jezikih odločajo o smeri poteka izvajanja programa.



Potreba po pogojnih stavkih

V resničnem življenju pridejo situacije, ko moramo sprejeti nekaj odločitev in se na podlagi teh odločitev odločimo, kaj bomo storili naprej. Podobne situacije se pojavljajo tudi pri programiranju, kjer moramo sprejeti nekaj odločitev in na podlagi teh odločitev bomo izvedli naslednji blok kode. Na primer, v C, če se pojavi x, potem izvedite y, sicer izvedite z. Obstaja lahko tudi več pogojev, kot je v C, če se pojavi x, potem izvedite p, drugače, če se pojavi pogoj y, izvedite q, drugače pa izvedite r. Ta pogoj C else-if je eden od mnogih načinov uvoza več pogojev.

Vrste pogojnih stavkov v C

Sledijo izjave o odločanju, ki so na voljo v C:

  1. Izjava if
  2. Izjava if-else
  3. Ugnezdeni stavek if
  4. če-drugače-če Lestev
  5. stikalo Izjava
  6. Pogojni operater
  7. Izjave o skoku:
    • odmor
    • nadaljevati
    • Pojdi do
    • vrnitev

Razpravljajmo o vsakem od njih enega za drugim.



1. če v C

The izjava if je najbolj preprosta izjava za odločanje. Uporablja se za odločitev, ali bo določen stavek ali blok stavkov izveden ali ne, tj. če je določen pogoj resničen, se blok stavkov izvede, sicer ne.

Sintaksa izjave if

  if  (  condition  )  {    // Statements to execute if     // condition is true  }>

Tukaj, stanje po oceni bo resnična ali napačna. Stavek C if sprejema logične vrednosti – če je vrednost resnična, bo izvedel blok stavkov pod njim, sicer ne. Če za if(pogoj) ne navedemo zavitih oklepajev '{' in '}', potem bo stavek if privzeto upošteval, da je prvi takoj spodnji stavek znotraj njegovega bloka.

Diagram poteka izjave if

če diagram poteka

Diagram poteka stavka if



Primer če je v C

C




// C program to illustrate If statement> #include> > int> main()> {> >int> i = 10;> > >if> (i>15) {> >printf>(>'10 is greater than 15'>);> >}> > >printf>(>'I am Not in if'>);> }>

>

>

Izhod

I am Not in if>

Ker je pogoj, prisoten v stavku if, napačen. Torej se blok pod stavkom if ne izvede.

2. if-else v C

The če sama izjava nam pove, da če je pogoj resničen, bo izvedel blok stavkov, če je pogoj napačen, pa ne. Kaj pa, če želimo narediti nekaj drugega, ko je pogoj napačen? Tukaj prihaja C drugače izjava. Lahko uporabimo drugače izjava z če stavek za izvedbo bloka kode, ko je pogoj napačen. The stavek if-else je sestavljen iz dveh blokov, enega za napačno izražanje in enega za resnično izražanje.

Sintaksa if else v C

  if   (  condition  ) {     // Executes this block if     // condition is true  }   else  {    // Executes this block if     // condition is false  }>

Diagram poteka izjave if-else

če je drugače diagram poteka

Diagram poteka if else

Primer if-else

C




// C program to illustrate If statement> #include> > int> main()> {> >int> i = 20;> > >if> (i <15) {> > >printf>(>'i is smaller than 15'>);> >}> >else> {> > >printf>(>'i is greater than 15'>);> >}> >return> 0;> }>

>

>

Izhod

i is greater than 15>

Blok kode, ki sledi drugače stavek se izvede kot pogoj, prisoten v če izjava je napačna.

vlc media player prenos youtube

3. Ugnezdeno if-else v C

Ugnezdeni if ​​v C je stavek if, ki je cilj drugega stavka if. Ugnezdeni stavki if pomenijo stavek if znotraj drugega stavka if. Da, C nam omogoča ugnezdenje stavkov if znotraj stavkov if, tj. stavek if lahko postavimo znotraj drugega stavka if.

Sintaksa ugnezdenega if-else

  if   (  condition1  )  {    // Executes when condition1 is true     if   (  condition2  )   {     // Executes when condition2 is true   }    else   {    // Executes when condition2 is false  }>

Diagram poteka ugnezdenih if-else

Diagram poteka ugnezdenega if-else

Primer ugnezdenega if-else

C




// C program to illustrate nested-if statement> #include> > int> main()> {> >int> i = 10;> > >if> (i == 10) {> >// First if statement> >if> (i <15)> >printf>(>'i is smaller than 15 '>);> > >// Nested - if statement> >// Will only be executed if statement above> >// is true> >if> (i <12)> >printf>(>'i is smaller than 12 too '>);> >else> >printf>(>'i is greater than 15'>);> >}> > >return> 0;> }>

>

>

Izhod

i is smaller than 15 i is smaller than 12 too>

4. if-else-if Lestev v C

The if else if izjave se uporabljajo, ko se mora uporabnik odločiti med več možnostmi. Stavki C if se izvajajo od zgoraj navzdol. Takoj, ko je eden od pogojev, ki nadzorujejo if, resničen, se izvede stavek, povezan s tem if, preostali del lestvice C else-if pa se zaobide. Če nobeden od pogojev ni resničen, bo izveden zadnji stavek else. lestev if-else-if je podobna stavku switch.

kako odpreti datoteko json

Sintaksa lestve if-else-if

  if   (  condition  )    statement;    else if   (  condition  )    statement;  . .   else     statement;>

Diagram poteka lestve if-else-if

diagram poteka stavka if-else-if

Diagram poteka if-else-if

Primer lestve if-else-if

C




// C program to illustrate nested-if statement> #include> > int> main()> {> >int> i = 20;> > >if> (i == 10)> >printf>(>'i is 10'>);> >else> if> (i == 15)> >printf>(>'i is 15'>);> >else> if> (i == 20)> >printf>(>'i is 20'>);> >else> >printf>(>'i is not present'>);> }>

>

>

Izhod

i is 20>

5. Izjava switch v C

The izjavo o zamenjavi primera je alternativa lestvici if else if, ki jo je mogoče uporabiti za izvajanje pogojne kode na podlagi vrednosti spremenljivke, določene v stavku switch. Preklopni blok je sestavljen iz primerov, ki jih je treba izvesti na podlagi vrednosti preklopne spremenljivke.

Sintaksa stikala

  switch   (  expression  ) {    case     value1:     statements;     case    value2:     statements;   ....  ....  ....    default:     statements;  }>

Opomba: Preklopni izraz mora biti ovrednoten kot celo število ali znak. Ne more ovrednotiti nobene druge vrste podatkov.

Diagram poteka stikala

diagram poteka stanja switch

Diagram poteka stikala v C

Primer izjave o preklopu

C




// C Program to illustrate the use of switch statement> #include> > int> main()> {> >// variable to be used in switch statement> >int> var = 2;> > >// declaring switch cases> >switch> (var) {> >case> 1:> >printf>(>'Case 1 is executed'>);> >break>;> >case> 2:> >printf>(>'Case 2 is executed'>);> >break>;> >default>:> >printf>(>'Default Case is executed'>);> >break>;> >}> > >return> 0;> }>

>

>

Izhod

Case 2 is executed>

6. Pogojni operator v C

The pogojni operator se uporablja za dodajanje pogojne kode v naš program. Podobno je stavku if-else. Znan je tudi kot ternarni operater, saj deluje na treh operandih.

Sintaksa pogojnega operatorja

(  condition  )   ?     [true_statements]     :     [false_statements]  ;>

Diagram poteka pogojnega operatorja

diagram poteka pogojnih operatorjev

Diagram poteka pogojnega operatorja

Primer pogojnega operatorja

C




// C Program to illustrate the use of conditional operator> #include> > // driver code> int> main()> {> > >int> var;> >int> flag = 0;> > >// using conditional operator to assign the value to var> >// according to the value of flag> >var = flag == 0 ? 25 : -25;> >printf>(>'Value of var when flag is 0: %d '>, var);> > >// changing the value of flag> >flag = 1;> >// again assigning the value to var using same statement> >var = flag == 0 ? 25 : -25;> >printf>(>'Value of var when flag is NOT 0: %d'>, var);> > >return> 0;> }>

>

odzivna tabela

>

Izhod

Value of var when flag is 0: 25 Value of var when flag is NOT 0: -25>

7. Izjave o skokih v C

Ti stavki se uporabljajo v C za brezpogojni tok nadzora skozi funkcije v programu. Podpirajo štiri vrste stavkov za skok:

A) odmor

Ta stavek za krmiljenje zanke se uporablja za prekinitev zanke. Takoj, ko se odmor stavek naleti znotraj zanke, se ponovitve zanke tam ustavijo in nadzor se vrne iz zanke takoj k prvemu stavku za zanko.

Sintaksa preloma

break;>

V bistvu se stavki za prekinitev uporabljajo v situacijah, ko nismo prepričani o dejanskem številu ponovitev zanke ali pa želimo prekiniti zanko na podlagi nekega pogoja.

prekiniti diagram poteka

Primer odmora

C




// C program to illustrate> // to show usage of break> // statement> #include> > void> findElement(>int> arr[],>int> size,>int> key)> {> >// loop to traverse array and search for key> >for> (>int> i = 0; i if (arr[i] == key) { printf('Element found at position: %d', (i + 1)); break; } } } int main() { int arr[] = { 1, 2, 3, 4, 5, 6 }; // no of elements int n = 6; // key to be searched int key = 3; // Calling function to find the key findElement(arr, n, key); return 0; }>

>

>

Izhod

Element found at position: 3>

B) nadaljevati

Ta stavek za krmiljenje zanke je enak kot stavek za prekinitev. The nadaljevati izjava je v nasprotju s prelomom izjava , namesto da prekine zanko, prisili k izvedbi naslednje ponovitve zanke.
Kot že ime pove, stavek continue prisili zanko k nadaljevanju ali izvedbi naslednje ponovitve. Ko se v zanki izvede stavek continue, bo koda znotraj zanke, ki sledi stavku continue, preskočena in začela se bo naslednja ponovitev zanke.

Sintaksa za nadaljevanje

continue;>

Diagram poteka za nadaljevanje

Diagram poteka izjave C continue

Primer nadaljevanja

C




// C program to explain the use> // of continue statement> #include> > int> main()> {> >// loop from 1 to 10> >for> (>int> i = 1; i <= 10; i++) {> > >// If i is equals to 6,> >// continue to next iteration> >// without printing> >if> (i == 6)> >continue>;> > >else> >// otherwise print the value of i> >printf>(>'%d '>, i);> >}> > >return> 0;> }>

>

>

Izhod

1 2 3 4 5 7 8 9 10>

Če ustvarite spremenljivko v if-else v C, bo lokalna le za ta blok if/else. Znotraj bloka if/else lahko uporabite globalne spremenljivke. Če je ime spremenljivke, ki ste jo ustvarili v if/else, enako kot katera koli globalna spremenljivka, bo prednost dana `lokalni spremenljivki`.

C




#include> > int> main()> {> > >int> gfg = 0;>// local variable for main> >printf>(>'Before if-else block %d '>, gfg);> >if> (1) {> >int> gfg = 100;>// new local variable of if block> >printf>(>'if block %d '>, gfg);> >}> >printf>(>'After if block %d'>, gfg);> >return> 0;> }>

>

>

Izhod

Before if-else block 0 if block 100 After if block 0>

C) Pojdi do

The izjava goto v C, imenovan tudi stavek brezpogojnega skoka, se lahko uporablja za skok z ene točke na drugo znotraj funkcije.

Sintaksa goto

  Syntax1 | Syntax2  ----------------------------   goto     label;   |   label:   . | . . | . . | .   label:   |   goto     label;>

V zgornji sintaksi prva vrstica pove prevajalniku, naj gre ali skoči na stavek, označen kot oznaka. Tukaj je oznaka uporabniško definiran identifikator, ki označuje ciljni stavek. Stavek, ki sledi takoj za oznako »label:«, je ciljni stavek. »Oznaka:« se lahko pojavi tudi pred stavkom »goto label;« v zgornji sintaksi.

Diagram poteka izjave goto

kako pretvoriti niz v celo število java

Primeri goto

C




// C program to print numbers> // from 1 to 10 using goto> // statement> #include> > // function to print numbers from 1 to 10> void> printNumbers()> {> >int> n = 1;> label:> >printf>(>'%d '>, n);> >n++;> >if> (n <= 10)> >goto> label;> }> > // Driver program to test above function> int> main()> {> >printNumbers();> >return> 0;> }>

>

>

Izhod

1 2 3 4 5 6 7 8 9 10>

D) vrnitev

The vrnitev v C vrne tok izvajanja funkciji, od koder je bila klicana. Ta stavek ne potrebuje obvezno nobenih pogojnih stavkov. Takoj ko se stavek izvede, se tok programa takoj ustavi in ​​vrne nadzor od koder je bil poklican. Stavek vrnitve lahko ali pa ne vrne ničesar za funkcijo void, toda za funkcijo, ki ni void, je treba vrniti vrnjeno vrednost.

Diagram poteka vračanja

povratni diagram poteka

Diagram poteka vračanja

Sintaksa povratka

  return    [expression]  ;>

Primer vračila

C




// C code to illustrate return> // statement> #include> > // non-void return type> // function to calculate sum> int> SUM(>int> a,>int> b)> {> >int> s1 = a + b;> >return> s1;> }> > // returns void> // function to print> void> Print(>int> s2)> {> >printf>(>'The sum is %d'>, s2);> >return>;> }> > int> main()> {> >int> num1 = 10;> >int> num2 = 10;> >int> sum_of = SUM(num1, num2);> >Print(sum_of);> >return> 0;> }>

>

>

Izhod

The sum is 20>