Presa de decisions en C (si , si... altrament, niat si, si-else-si )
El enunciats condicionals (també conegudes com a estructures de control de decisions) com si, en cas contrari, switch, etc. s'utilitzen per a la presa de decisions als programes C.
També es coneixen com a declaracions de presa de decisions i s'utilitzen per avaluar una o més condicions i prendre la decisió d'executar o no un conjunt d'enunciats. Aquestes declaracions de presa de decisions en llenguatges de programació decideixen la direcció del flux d'execució del programa.
Necessitat de declaracions condicionals
Hi ha situacions a la vida real en què hem de prendre algunes decisions i en funció d'aquestes decisions, decidim què hem de fer a continuació. En la programació també es donen situacions similars on hem de prendre algunes decisions i en funció d'aquestes decisions executarem el següent bloc de codi. Per exemple, a C si es produeix x, executeu y sinó executeu z. També pot haver-hi diverses condicions com en C, si es produeix x, executeu p, en cas contrari, si es produeix la condició y executeu q, en cas contrari executeu r. Aquesta condició de C else-if és una de les moltes maneres d'importar múltiples condicions.
Tipus d'enunciats condicionals en C
A continuació es mostren les declaracions de presa de decisions disponibles en C:
- si Declaració
- Declaració if-else
- Declaració if niada
- si-més-si Escala
- Declaració switch
- Operador condicional
- Declaracions de salt:
- trencar
- continuar
- anar a
- tornar
Comentem cadascun d'ells un per un.
1. si en C
El declaració si és la declaració de presa de decisions més senzilla. S'utilitza per decidir si s'executarà o no una determinada instrucció o bloc d'instruccions, és a dir, si una determinada condició és certa, s'executarà un bloc d'instruccions en cas contrari no.
Sintaxi de la instrucció if
if ( condition ) { // Statements to execute if // condition is true } Aquí, el condició després de l'avaluació serà vertader o fals. C si la sentència accepta valors booleans: si el valor és cert, executarà el bloc de sentències que hi ha a sota, en cas contrari no. Si no proporcionem les claus '{' i '}' després de if(condició), aleshores, per defecte, la declaració if considerarà que la primera sentència immediatament a continuació es troba dins del seu bloc.
Diagrama de flux de la declaració if
Diagrama de flux de la declaració if
Exemple de si a 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'> );> }> |
Sortida
I am Not in if
Com que la condició present a la declaració if és falsa. Per tant, el bloc sota la instrucció if no s'executa.
2. if-else en C
El si Només la instrucció ens diu que si una condició és certa, executarà un bloc d'instruccions i si la condició és falsa no ho farà. Però, què passa si volem fer una altra cosa quan la condició és falsa? Aquí ve el C altra cosa declaració. Podem utilitzar el altra cosa declaració amb el si sentència per executar un bloc de codi quan la condició és falsa. El declaració if-else consta de dos blocs, un per a l'expressió falsa i un altre per a l'expressió vertadera.
Sintaxi de if else a C
if ( condition ) { // Executes this block if // condition is true } else { // Executes this block if // condition is false } Diagrama de flux de la declaració if-else
Diagrama de flux de if else
Exemple de 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;> }> |
Sortida
i is greater than 15
El bloc de codi següent al altra cosa La instrucció s'executa com a condició present al fitxer si afirmació és falsa.
3. Imbricat if-else a C
Un if imbricat a C és una sentència if que és l'objectiu d'una altra sentència if. Les declaracions if niades signifiquen una declaració if dins d'una altra sentència if. Sí, C ens permet niar declaracions if dins de declaracions if, és a dir, podem col·locar una declaració if dins d'una altra instrucció if.
Sintaxi de Nested if-else
if ( condition1 ) { // Executes when condition1 is true if ( condition2 ) { // Executes when condition2 is true } else { // Executes when condition2 is false } Diagrama de flux de nidat si-else
Diagrama de flux de nidificat if-else
Exemple d'imbricat 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;> }> |
Sortida
i is smaller than 15 i is smaller than 12 too
4. if-else-if Escala en C
El si més si declaracions s'utilitzen quan l'usuari ha de decidir entre diverses opcions. Les sentències C if s'executen de dalt a baix. Tan bon punt una de les condicions que controlen el if és certa, s'executa la declaració associada amb el if i la resta de l'escala C else-if s'omet. Si cap de les condicions és certa, s'executarà la instrucció else final. if-else-if ladder és similar a la instrucció switch.
Sintaxi de if-else-if Ladder
if ( condition ) statement; else if ( condition ) statement; . . else statement;
Diagrama de flux de l'escala if-else-if
Diagrama de flux de if-else-if
Exemple d'escala 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'> );> }> |
Sortida
i is 20
5. Declaració switch en C
El declaració de canvi de cas és una alternativa a l'escala if else if que es pot utilitzar per executar el codi condicional en funció del valor de la variable especificat a la instrucció switch. El bloc de commutació consta de casos que s'executaran en funció del valor de la variable de commutació.
Sintaxi de switch
switch ( expression ) { case value1: statements; case value2: statements; .... .... .... default: statements; } Nota: L'expressió switch s'ha d'avaluar com a nombre enter o caràcter. No pot avaluar cap altre tipus de dades.
Diagrama de flux de l'interruptor
Diagrama de flux de l'interruptor en C
Exemple de declaració switch
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;> }> |
Sortida
Case 2 is executed
6. Operador condicional en C
El operador condicional s'utilitza per afegir codi condicional al nostre programa. És similar a la declaració if-else. També es coneix com a operador ternari, ja que funciona en tres operands.
Sintaxi de l'operador condicional
( condition ) ? [true_statements] : [false_statements] ;
Diagrama de flux de l'operador condicional
Diagrama de flux de l'operador condicional
Exemple d'operador condicional
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;> }> |
Sortida
Value of var when flag is 0: 25 Value of var when flag is NOT 0: -25
7. Declaracions de salt en C
Aquestes declaracions s'utilitzen en C per al flux incondicional de control a través de les funcions d'un programa. Admeten quatre tipus de declaracions de salt:
A) trencar
Aquesta instrucció de control de bucle s'utilitza per finalitzar el bucle. Tan aviat com el trencar La instrucció es troba dins d'un bucle, les iteracions del bucle s'aturen allà i el control torna del bucle immediatament a la primera instrucció després del bucle.
Sintaxi de break
break;
Bàsicament, les declaracions break s'utilitzen en situacions en què no estem segurs del nombre real d'iteracions del bucle o volem finalitzar el bucle en funció d'alguna condició.
Exemple de descans
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; }> |
Sortida
Element found at position: 3
B) continuar
Aquesta instrucció de control de bucle és com la instrucció break. El continuar declaració és oposada a la del trencament declaració , en lloc d'acabar el bucle, obliga a executar la següent iteració del bucle.
Com el seu nom indica, la instrucció continue obliga el bucle a continuar o executar la següent iteració. Quan la instrucció continue s'executa al bucle, el codi dins del bucle després de la instrucció continue es saltarà i començarà la següent iteració del bucle.
Sintaxi de continuar
continue;
Diagrama de flux de Continuar
Diagrama de flux de C continue Declaració
Exemple de continuar
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;> }> |
Sortida
1 2 3 4 5 7 8 9 10
Si creeu una variable a if-else a C, només serà local a aquest bloc if/else. Podeu utilitzar variables globals dins del bloc if/else. Si el nom de la variable que heu creat a if/else és el mateix que qualsevol variable global, es donarà prioritat a la 'variable local'.
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;> }> |
Sortida
Before if-else block 0 if block 100 After if block 0
C) anar a
El anar a declaració en C també es coneix com la instrucció de salt incondicional es pot utilitzar per saltar d'un punt a un altre dins d'una funció.
Sintaxi de goto
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;
A la sintaxi anterior, la primera línia indica al compilador que vagi o que salti a la instrucció marcada com a etiqueta. Aquí, una etiqueta és un identificador definit per l'usuari que indica la declaració de destinació. La declaració seguida immediatament després de 'etiqueta:' és la declaració de destinació. L''etiqueta:' també pot aparèixer abans de la declaració 'goto label;' a la sintaxi anterior.
Diagrama de flux de la declaració goto
Exemples de 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;> }> |
Sortida
1 2 3 4 5 6 7 8 9 10
D) tornar
El tornar en C retorna el flux de l'execució a la funció des d'on es crida. Aquesta declaració no necessita obligatòriament cap declaració condicional. Tan bon punt s'executa la instrucció, el flux del programa s'atura immediatament i retorna el control des d'on es va cridar. La instrucció return pot o no retornar res per a una funció void, però per a una funció no void, s'ha de retornar un valor de retorn.
Diagrama de flux de retorn
Diagrama de flux de retorn
Sintaxi de retorn
return [expression] ;
Exemple de retorn
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;> }> |
Sortida
The sum is 20