Le strutture di controllo nel linguaggio C

Sito: Materiali Didattici
Corso: (Classe 2a) - Scienze e Tecnologie Applicate
Libro: Le strutture di controllo nel linguaggio C
Stampato da: Utente ospite
Data: venerdì, 3 maggio 2024, 05:23

1. Le strutture di controllo

Le strutture di controllo consentono di gestire l'ordine e il flusso di esecuzione delle istruzioni di un programma.

A cosa servono? Con le strutture di controllo il programmatore fissa delle regole di elaborazione, esegue dei blocchi di codice differenti a seconda degli eventi che si presentano.


Le principali strutture di controllo nel linguaggio C sono le seguenti: 

IF ELSE L'istruzione IF è la principale struttura di controllo del linguaggio C per compiere salti condizionati.

  • IF concatenato: La combinazione di più IF consente di realizzare dei salti condizionati concatenati.
  • IF annidato: Le istruzioni IF possono essere anche annidate ossia implementate l'una dentro l'altra. In questa forma sono utili per gestire gli eventi più complessi.

IF in linea È una forma alternativa per scrivere l'istruzione IF, se il blocco delle istruzioni da eseguire è composto da una sola istruzione.

SWITCH CASE L'istruzione SWITCH CASE gestisce il salto condizionato a scelta multipla. Esegue uno tra diversi blocchi di istruzioni in base al valore di una variabile di controllo.

2. IF ELSE

Nel linguaggio C l'istruzione IF realizza il salto condizionato, ossia l'esecuzione di un blocco di istruzioni oppure di un altro a seconda se si verifica o meno un evento.

La sintassi dell'istruzione

 IF L'istruzione è composta da due elementi, una espressione di controllo e uno o più blocchi di istruzione da eseguire, a seconda che l'espressione di controllo sia vera o falsa. 

if (espressione) 

istruzioni

Nel caso in cui il blocco fosse composto da più istruzioni, è necessario delimitare il gruppo delle istruzioni tra due parentesi graffe, una di apertura { e una di chiusura }. Il seguente esempio di Okpedia mostra un esempio di codice sorgente:

if ( a > b ) { 

max=a; 

}

L'algoritmo del salto condizionale è il seguente. Nell'algoritmo l'istruzione IF è rappresentato dalla figura geometrica a forma di rombo da cui si distaccano due percorsi.


Il salto condizionato con attributo Else 

Il salto condizionato può essere associato a due blocchi di istruzione alternativi, da eseguire a seconda che l'espressione di controllo abbia valore vero o falso. Il secondo blocco di istruzioni può essere aggiunto tramite l'attributo ELSE.

if (espressione) 

blocco di istruzioni 1 

else 

blocco di istruzioni 2

In questo caso l'algoritmo del salto condizionato prevede due blocchi di istruzione alternativi. La rappresentazione grafica dell'algoritmo IF ELSE ci permette di capire meglio la differenza rispetto a un'istruzione IF semplice.


L'attributo ELSE è un attributo facoltativo dell'istruzione IF. Nell'attributo ELSE può essere indicata una sola istruzione oppure un blocco di istruzioni delimitato da due parentesi graffe.


3. IF concatenato

Una serie di istruzioni IF in sequenza consente di creare un salto condizionato concatenato. È una tecnica di programmazione usata nella gestione delle scelte multiple. 

Un esempio pratico Il programma esegue la prima istruzione IF, se l'espressione di controllo è falsa procede a eseguire l'istruzione IF successiva. Il seguente codice di Okpedia mostra un esempio di salto condizionato condizionale.

if ( a>b ) { 

max=a; 

else if ( a<b) {

max=b; 

else { 

max=0; 

}

Il programma verifica in sequenza l'espressione di controllo (A>B), se quest'ultima è falsa procede a verificare la seconda espressione di controllo (A<B). Se anche quest'ultima è falsa, il programma esegue il blocco di istruzioni dell'ultimo attributo ELSE e assegna il valore zero alla variabile MAX.

Il diagramma di flusso del salto condizionato concatenato:



4. IF annidato

Le istruzioni IF possono essere implementate l'una dentro l'altra per gestire al meglio gli eventi e sono dette IF annidate.

Per annidare più le istruzioni IF si inseriscono altre IF all'interno delle parentesi graffe.

Nel seguente codice sorgente è stata aggiunta una seconda istruzione IF nell'attributo ELSE della prima istruzione IF.

if ( a > b ) { 

max =a; 

} else { 

if ( a<b) {

{ max=b; 

}

La seconda IF gestisce un secondo blocco di istruzioni condizionato all'espressione di controllo ( A<B).


5. IF in linea

Il salto condizionato in linea è una tecnica alternativa per condizionare l'esecuzione di un'istruzione a un'espressione di controllo. 

La sintassi di una IF in linea è la seguente:

( controllo ) ? ( istruzione 1 ) : ( istruzione 2 )

Se l'espressione di controllo è vera, il programma esegue la prima istruzione. Viceversa, se è falsa esegue la seconda istruzione.

Un esempio pratico

max = ( a>b ) ? a : b ;

Se la variabile A è maggiore B, l'espressione ( A>B ) è vera e il programma assegna il valore di A alla variabile MAX ( prima istruzione ). In caso contrario, se l'espressione ( A>B ) è falsa, il programma assegna alla variabile MAX il valore di B ( seconda istruzione ).


6. SWITCH CASE

Il salto condizionale a scelta multipla nel linguaggio C si realizza con l'istruzione SWITCH che consente di eseguire diversi blocchi di istruzione a seconda del valore di una variabile di controllo.

La sintassi dell'istruzione Switch Case 

L'istruzione SWITCH è composta da una espressione di controllo e da diversi blocchi di istruzione CASE, ognuno dei quali è associato a un particolare valore dell'espressione di controllo iniziale.

switch ( espressione ) { 

case costante1: istruzioni1; 

case costante2: istruzioni2; 

case costante3: istruzioni3; .

... 

default:istruzioni; 

break; 

}

L'ultimo blocco di istruzioni è detto DEFAULT e non è condizionato a nessun valore. Viene eseguito quando tutte le CASE precedenti sono false.

Un esempio pratico

switch ( mese ) { 

case (1): giorni=31; 

break; 

case(2):giorni=28; 

break; 

case(3):giorni=31; break; 

...

}

Ciascun blocco di istruzione CASE è seguito dall'istruzione BREAK che indica al programma di interrompere l'esecuzione della scelta multipla nel caso quando un singolo blocco case viene eseguito.

L'algoritmo della scelta multipla può essere rappresentato nel seguente modo:


L'attributo Default nell'istruzione Switch Case

L'istruzione SWITCH CASE può essere ottimizzata quando più valori sono associati a uno stesso blocco di istruzioni.

Possiamo riscrivere l'esempio precedente nel seguente modo:

switch ( mese ) { 

case (4): 

case (6): 

case (9): 

case (11): giorni=30; 

break; 

case(2): giorni=28; 

break; 

default: giorni:31; 

}

Se la variabile mese è uguale a 4, 6, 9 o 11, il programma esegue il primo blocco di istruzioni CASE e assegna il valore trenta alla variabile giorni ( giorni=30 ). In caso contrario, il programma procede a elaborare la seconda CASE dove verifica se la variabile mese è uguale a 2. Se è vero, assegna il valore ventotto alla variabile giorni ( giorni=28 ). Se anche quest'ultima condizione è falsa, il programma esegue l'ultimo blocco di DEFAULT, in cui si assegna alla variabile giorni il valore trentuno (giorni=31 ).