• Non ci sono risultati.

C - Strutture di controllo Sequenza o blocco {

N/A
N/A
Protected

Academic year: 2021

Condividi "C - Strutture di controllo Sequenza o blocco {"

Copied!
12
0
0

Testo completo

(1)

47 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

C - Strutture di controllo

Sequenza o blocco

{

<istruzioni>

}

{ printf("Immetti un numero intero: ");

scanf("%d", &i);

a = i * 4 + b - c;

printf("%d", a);

} Esempio:

C - Strutture di controllo

Selezione

if (<condizione>)

<istruzione>;

se <condizione> è vera è eseguita <istruzione>

dove <istruzione> è formata da 1 sola istruzione altra forma:

if (<condizione>) {

<istruzioni>;

}

se <condizione> è vera sono eseguite le <istruzioni>

dove <istruzioni> è più di 1 istruzione

N.B. < condizione> è un’espressione di tipo intero (in C non esiste il tipo logico) ed essa è falsa se ha un valore uguale a zero

(2)

49 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

………

if (i<100) {

a = b - i;

printf(”%f”, a);

} ………

C - Strutture di controllo

Esempi : Selezione

………

if (a>100)

printf(”%f”, a);

………

#include<stdio.h>

main ( )

/* questo programma calcola l’area di un rettangolo */

{

float base, altezza, area;

printf ("immetti base \n");

scanf ("%f" , &base);

printf("immetti altezza \n");

scanf("%f" , &altezza);

if ((base > 0) && (altezza > 0)) { area = base * altezza;

printf("Area= %f \n", area);

} }

Un semplice programma esempio

Modificare il seguente programma C per il calcolo dell’area di un rettangolo

per verificare il rispetto delle precondizioni ...

(3)

51 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

/* questo programma calcola l’area di un rettangolo */

{

float base, altezza, area;

printf ("immetti base \n");

scanf ("%f" , &base);

printf("immetti altezza \n");

scanf("%f" , &altezza);

if ((base > 0) && (altezza > 0)) { area = base * altezza;

printf("Area= %f \n", area);

}

if ((base <= 0) || (altezza <= 0))

printf("Errore: base e/o altezza non maggiori di zero \n");

}

Un semplice programma esempio

... il programma C modificato con l’aggiunta di un messaggio di errore...

Programma esempio in C

#include<stdio.h>

main ( )

{ // calcola il volume di un parallelepipedo float LBase, ABase, H, Area_Base, Volume;

printf ("immetti valore della lunghezza di base \n");

scanf ("%f" , &LBase);

printf("immetti valore altezza di base \n");

scanf("%f" , &ABase);

printf("immetti valore altezza parallelepipedo\n");

scanf("%f" , &H);

Area_Base = LBase* ABase;

Volume=Area_Base*H;

printf ("Volume= %f \n",Volume);

}

Modificare il seguente programma C del calcolo del volume di un

parallelepipedo per verificare il rispetto delle precondizioni ...

(4)

53 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

{ // programma per il calcolo del volume di un parallelepipedo float LBase, ABase, H, Area_Base, Volume;

printf ("immetti valore della lunghezza di base \n");

scanf ("%f" , &LBase);

printf("immetti valore altezza di base \n");

scanf("%f" , &ABase);

printf("immetti valore altezza parallelepipedo\n");

scanf("%f" , &H);

if ((LBase>0)&&(ABase>0)&&(H>0)) {Area_Base = LBase* ABase;

Volume=Area_Base*H;

printf ("Volume = %f \n",Volume);

}

if ((LBase<=0)||(ABase<=0)||(H<=0))

printf("\nErrore:almeno una dimensione non maggiore di zero\n");

}

Programma esempio in C

... il programma C del calcolo del volume del parallelepipedo modificato per verificare il rispetto delle precondizioni e visualizzazione di un messaggio di errore ...

#include<stdio.h>

main ( )

{ // calcola la capacità in hl di un tino

float Diametro, Capacita, Altezza, Area_Base, Volume;

printf ("immetti valore lunghezza del diametro (in dm)\n");

scanf ("%f" , &Diametro);

printf("immetti valore altezza del cilindro (in dm) \n");

scanf("%f" , &Altezza);

Area_Base = (Diametro/2)*(Diametro/2)* 3.14;

Volume=Area_Base*Altezza;

Capacita = Volume/100;

printf (" Capacita tino ettolitri = %f \n",Capacita);

}

Programma esempio in C

... Modificare il programma C del calcolo della capacità di un tino cilindrico per verificare il rispetto delle precondizioni ...

(5)

55 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

{ // calcola la capacità in hl di un tino

float Diametro, Capacita, Altezza, Area_Base, Volume;

printf ("immetti valore lunghezza del diametro (in dm)\n");

scanf ("%f" , &Diametro);

printf("immetti valore altezza del cilindro (in dm) \n");

scanf("%f" , &Altezza);

if ((Diametro>0)&&(Altezza>0))

{ Area_Base = (Diametro/2)*(Diametro/2)* 3.14;

Volume=Area_Base*Altezza;

Capacita = Volume/100;

printf (" Capacita tino ettolitri = %f \n",Capacita);}

if ((Diametro>0)||(Altezza>0))

printf("\nErrore:almeno una dimensione non maggiore di zero\n");

}

Programma esempio in C

... il programma C del calcolo della capacità di un tino cilindrico modificato per verificare il rispetto delle precondizioni ...

C - Strutture di controllo

Selezione

if (<condizione>)

<istruzione1>;

else

<istruzione2>;

se <condizione> è vera è eseguita <istruzione1> (è 1 sola istruzione) altrimenti, se <condizione> è falsa, è eseguita <istruzione2> (è 1 sola istruzione)

(6)

57 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

C - Strutture di controllo

Selezione altra forma:

if (<condizione>) {

<istruzioni1>;

} else {

<istruzioni2>;

}

se <condizione> è vera sono eseguite le <istruzioni1>

altrimenti se, <condizione> è falsa, sono eseguite le <istruzioni2>

dove <istruzioni1> e <istruzioni1> sono formate da più di 1 istruzione

C - Strutture di controllo

Esempio : Selezione

………

if (numero > 1000) {

a = b * numero;

printf(”%f”, a);

} else

c = b - numero;

………

(7)

59 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Program area_rettangolo;

// questo programma calcola l’area di un //

// rettangolo

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then begin

area = base * altezza;

write (“Area= “, “%f” area);

end else

write (“Errore: base o altezza = <0”);

endif end.

#include<stdio.h>

main ( )

/* questo programma calcola l’area di un rettangolo */

{

float base, altezza, area;

printf (“immetti base \n”);

scanf (“%f” , &base);

printf(“immetti altezza \n“);

scanf(“%f” , &altezza);

if ((base > 0) && (altezza > 0)) {

area = base * altezza;

printf(“Area= %f \n”, area);

} else

printf(“Errore: base o altezza = <0 \n”);

}

Un semplice programma esempio

LDP C

#include<stdio.h>

main ( )

/* questo programma calcola l’area di un rettangolo */

{

float base, altezza, area;

printf (“immetti base \n”);

scanf (“%f” , &base);

printf(“immetti altezza \n“);

scanf(“%f” , &altezza);

if ((base > 0) && (altezza > 0)) {

area = base * altezza;

printf(“Area= %f \n”, area);

} else

printf(“Errore: base o altezza = <0 \n”);

}

Un semplice programma esempio

(8)

61 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

/* questo programma calcola l’area di un rettangolo */

{

float base, altezza, area;

printf (“immetti base \n”);

scanf (“%f” , &base);

printf(“immetti altezza \n“);

scanf(“%f” , &altezza);

if ((base > 0) && (altezza > 0)) {

area = base * altezza;

printf(“Area= %f \n”, area);

} else

printf(“Errore: base e/o altezza = <0 \n”);

}

… if ( ) … … if ( ) … else …

#include<stdio.h>

main ( )

/* questo programma calcola l’area di un rettangolo */

{

float base, altezza, area;

printf ("immetti base \n");

scanf ("%f" , &base);

printf("immetti altezza \n");

scanf("%f" , &altezza);

if ((base > 0) && (altezza > 0)) {

area = base * altezza;

printf("Area= %f \n", area);

}

if ((base <= 0)||(altezza <= 0)) printf("Errore: base e/o altezza =<0 \n");

}

… confronto tra le due versioni …

Selezione a più vie in C Struttura switch in C:

switch (<espressione>) {

case c1:

S1;

break;

case c2:

S2;

break;

case cN:

Sn;

break;

[ default: Sdefault; break;

] }

semantica

Valuta valore <espressione>

caso valore c1 esegui S1; esci dalla struttura switch (break);

caso valore c2 esegui S2; esci dalla struttura switch (break);

caso valore cN esegui Sn; esci dalla struttura switch (break);

[caso valore diverso da c1 ,..., cN )

esegui Sdefault; esci dalla struttura switch (break);

] …. (è opzionale)

N.B. :break provoca l’uscita immediata dalla struttura switch

(9)

63 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

/* questo programma stampa da 1 a 3 stelle o un ! */

{ ...

scanf("%d", &num);

switch (num) {

case 1: {printf("*\n"); break;}

case 2: {printf("**\n"); break;}

case 3: {printf("***\n"); break;}

default: {printf("!\n"); break;}

} }

Esempio: stampa da 1, 2, o 3 stelle in base al numero (compreso tra 1 e 3) immesso , altrimenti stampa un ‘!’

Selezione a più vie in C Struttura switch in C:

#include<stdio.h>

main ( )

/* questo programma stampa da 1 a 3 stelle o un ! */

{ ...

scanf("%d", &num);

if(num==1) printf("*\n");

else

if(num==2) printf("**\n");

else

if(num==3) printf("***\n");

else

printf("!\n");

Esempio: stampa da 1, 2, o 3 stelle in base al numero (compreso tra 1 e 3) immesso , altrimenti stampa un ‘!’

Selezione a più vie in C

La struttura switch può essere sostituita con una serie di strutture if else if

(10)

65 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include<stdio.h>

main ( )

/* questo programma stampa da 1 a 3 stelle o un ! */

{ ...

scanf("%d", &num);

if(num==1) printf("*\n");

else

if(num==2)

printf("**\n");

else

if(num==3)

printf("***\n");

else

printf("!\n");

}

Selezione a più vie in C

#include<stdio.h>

main ( )

/* questo programma stampa da 1 a 3 stelle o un ! */

{ ...

scanf("%d", &num);

switch (num) {

case 1:{printf("*\n");

break;}

case 2: {printf("**\n");

break;}

case 3: {printf("***\n");

break;}

default: {printf("!\n");

break;}

} }

Esercizio:

Scrivere un programma che letto un carattere in ingresso stampa un messaggio indicante se il carattere immesso è una lettera minuscola o maiuscola

… LPD …

// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola

…..

char c;

read(“%c”, c);

switch ( c ) begin

case '0' : case '1' : case ’2' : case ’3' : case ’4' : case ’5' : case ’6' : case ’7' : case ’8' : case '9' : write( ‘Cifra ‘); break;

case 'a' : ...… : case 'z' : write( ‘ Lettera minuscola ‘); break;

case 'A' : ...… :case 'Z' : write( ‘ Lettera maiuscola ‘ ); break;

default : write( ‘ Altro Carattere ‘);

end

Selezione: switch

(11)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 67

Program cifra_Lettera;

// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola

char c;

begin read(“%c”, c);

if ((c >= ‘0’) and (c <= ‘9’)) then

write ( ‘Cifra’);

else

if ((c >= ‘a’) and (c <= ‘z’)) then

write( ‘ Lettera minuscola‘);

else

if (c >= ‘A’ and c <= ‘Z’) then

write( ‘ Lettera maiuscola ‘ );

else

write( ‘ Altro Carattere\n ‘);

endif endif endif end.

Soluzione con if then else if LPD

La struttura switch può essere sostituita con una serie di strutture if else if

#include <stdio.h>

main()

{// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola char c;

scanf(“%c”, &c);

if ((c >= ‘0’) && (c <= ‘9’)) printf( "Cifra \n”);

else

if ((c >= ‘a’) && (c <= ‘z’))

printf( ‘ Lettera minuscola\n ‘);

else

if (c >= ‘A’ && c <= ‘Z’)

printf( ‘ Lettera maiuscola \n‘ );

else

printf( ‘ Altro Carattere\n ‘);

}

Soluzione con if else if in C

(12)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 69

#include <stdio.h>

main() {

// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola char c;

scanf(“%c”, c);

if ((c >= ‘0’) && (c <= ‘9’)) printf( ‘Cifra\n ‘);

else if ((c >= ‘a’) && (c <= ‘z’))

{ printf( ‘ Lettera minuscola\n ‘);

}

else if (c >= ‘A’ && c <= ‘Z’)

{ printf( ‘ Lettera maiuscola\n ‘ );

}

else printf( ‘ Altro Carattere\n ‘);

}

Soluzione con if else if

H

Lettera maiuscola

Schermo del video l’utente digita H

c = H

FALSO

FALSO

Vero

Riferimenti

Documenti correlati

 il Piano attuativo Regionale di Governo delle liste di attesa (PRGLA) 2019-2021, in coerenza con il Piano nazionale e con quanto già realizzato nella Regione Basilicata

– Se Body è composto da una sola istruzione si possono omettere le parentesi

Trova la misura della terza

Leggere n e generare un array di n numeri casuali, leggere un numero s e verificare se nell’array esiste una sequenza di elementi contigui la cui somma vale s.. Se tale

Ore 17,30 - Il settore Biologico: rischi e opportunità per l’agricoltura biologica alla luce degli ultimi aggiornamenti normativi – Dott.

Le strutture di controllo sono costrutti sintattici di un linguaggio di programmazione che servono a specificare se, quando, in quale ordine e quante volte devono essere eseguite

(1998) Si hanno due bottiglie da un litro: la prima, che chiameremo A , completamente colma di vino e la seconda, che chiameremo B , vuota. Dopo aver mescolato la miscela di acqua

La riorganizzazione dei percorsi assistenziali per garantire un miglioramento della qualità dell’assistenza è una necessità avvertita in Italia e negli altri sistemi sanitari 22-26 ;