prof. Nunzio Brugaletta Programmazione e linguaggio C

EnneBi - Programmazione
Avanti Indietro Inizio


2.9 Istruzione if

Quando si desidera eseguire un'istruzione al presentarsi di una certa condizione, si utilizza l'istruzione if.

Per esempio, se si vuole visualizzare il messaggio "il valore attuale di i è minore di 100" solamente nel caso in cui il valore della variabile intera i è minore di 100, si scrive:

if(i<100) 
  printf("\n il valore attuale di i è minore di 100");

La sintassi dell'istruzione if è:

if(espressione)
  istruzione

dove la valutazione di espressione controlla l'esecuzione di istruzione: se espressione è vera viene eseguita istruzione.

Nell'esempio seguente il programma richiede un numero all'utente e, se tale numero è minore di 100, visualizza un messaggio.

#include <stdio.h>

/* Esempio utilizzo if */

main(){
  int i;
  scanf("%d",&i);
  if (i<100)
    printf("\n minore di 100"); 
}

L' espressione i<100 è la condizione logica che controlla l'istruzione di stampa e pertanto la sua valutazione potrà restituire soltanto uno dei due valori booleani vero o falso che in C corrispondono rispettivamente ai valori interi uno e zero. È appunto per tale ragione che l'assegnamento a=i<100, è del tutto lecito. Viene infatti valutata l'espressione logica i<100, che restituisce 1 (vero) se i è minore di 100 e 0 (falso) se i è maggiore uguale a 100: il risultato è dunque un numero intero che viene assegnato alla variabile a.

L'operatore != corrisponde a diverso da, per cui l'espressione a!=0 significa: il valore di a è diverso da zero.

Chiedersi se il valore di a è diverso da zero è lo stesso che chiedersi se il valore di a è vero, il che, in C, corrisponde al controllo eseguito per default (effettuato in mancanza di differenti indicazioni), per cui si sarebbe anche potuto scrivere

scanf("%d",&i); 
a = i<100; 
if (a)
  printf("\n minore di 100");

La sintassi completa dell'istruzione if è la seguente:

if(espressione) 
  istruzione1
[else 
  istruzione2]

dove la valutazione di espressione controlla l'esecuzione di istruzione1 e istruzione2: se espressione è vera viene eseguita istruzione1, se è falsa viene eseguita istruzione2.

Nell'esempio anteriore è stato omesso il ramo else: il fatto è del tutto legittimo in quanto esso è opzionale, come evidenziato dalle parentesi quadre presenti nella forma sintattica completa.

La tabella seguente mostra gli operatori utilizzabili nell'istruzione if :

Operatore

Esempio

Risultato

!

!a

(NOT logico) 1 se a è 0, altrimenti 0

<

a<b

1 se a<b, altrimenti 0

<=

a<=b

1 se a<=b, altrimenti 0

>

a>b

1 se a>b, altrimenti 0

>=

a>=b

1 se a>=b, altrimenti 0

==

a==b

1 se a è uguale a b, altrimenti 0

!=

a!=b

1 se a non è uguale a b, altrimenti 0

&&

a&&b

(AND logico) 1 se a e b sono veri, altrimenti 0

||

a||b

(OR logico) 1 se a è vero, (b non è valutato), 1 se b è vero, altrimenti 0

È opportuno notare che, nel linguaggio C, il confronto dell’eguaglianza fra i valori di due variabili viene effettuato utilizzando il doppio segno ==. Si confrontino i seguenti due frammenti:

Programma A

Programma B

if (a==b)
  printf("Sono uguali\n");
if (a=b)
printf("Valore non zero\n");

Il programma A confronta il contenuto della variabile a ed il contenuto della variabile b: se sono uguali stampa la frase specificata.

Il programma B assegna ad a il valore attualmente contenuto in b e verifica se è diverso da zero: in tal caso stampa la frase specificata.

Una ulteriore osservazione va fatta a proposito degli operatori logici ! (NOT logico), && (AND logico) e || (OR logico) che vengono usati per mettere assieme più condizioni. Es:

if (a>5 && a<10)
printf("a compreso fra 5 e 10");
if (a<2 || a>10)
printf("a può essere <2 oppure >10");





Avanti Indietro Inizio

http://ennebi.solira.org ennebi@solira.org