Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 27
Strutture di controllo
Le istruzioni semplici permettono di specificare in un programma delle azioni elaborative semplici, costituenti un’unica sequenza di esecuzione possibile
Nella maggior parte dei casi, un algoritmo si compone di più e diverse possibili sequenze di elaborazioni,
ciascuna possibile sequenza elaborativa dipende dal verificarsi o meno di condizioni
In generale, un algoritmo descrive più sequenze possibili di azioni elaborative, ed in ogni esecuzione una sola (o una combinazione) di esse verrà realizzata.
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 28
Inizia telefonata;
Solleva la cornetta;
Se c’è il tono di della linea allora inizia
componi il numero;
se il numero chiamato è libero allora inizia
aspetta che qualcuno risponda;
se qualcuno risponde allora
continua a conversare finché non hai finito;
fine fine
riponi la cornetta sull’apparecchio;
Fine della telefonata.
Un esempio
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 29
Inizia telefonata Solleva la cornetta;
NON c’è il tono di della linea riponi la cornetta sull’apparecchio.
Fine della telefonata
Inizia telefonata Solleva la cornetta;
C’è il tono di della linea inizia
componi il numero;
il numero chiamato NON è libero fine
riponi la cornetta sull’apparecchio.
Fine della telefonata
Inizia telefonata Solleva la cornetta;
c’è il tono di della linea inizia
componi il numero;
il numero chiamato è libero inizia
qualcuno risponde;
continua a conversare finché non hai finito;
fine fine
riponi la cornetta sull’apparecchio.
Fine della telefonata
… più sequenze dinamiche (esecuzioni) associate alla stessa sequenza statica ...
Inizia telefonata Solleva la cornetta;
c’è il tono di della linea inizia
componi il numero;
il numero chiamato è libero inizia
nessuno risponde;
fine fine
riponi la cornetta sull’apparecchio.
Fine della telefonata
La sequenza effettivamente eseguita dipende da eventi (condizioni) che si verificano durante l’esecuzione stessa:
... Presenza della linea …
… linea libera o occupata ...
Un algoritmo (ovvero un programma) è descritto con una sequenza di frasi (ovvero istruzioni ), che è detta sequenza statica o lessicografica.
La sequenza lessicografica può contenere più differenti sequenze dinamiche (esecuzioni)
Sequenze Statiche e Dinamiche
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 31
“costrutti sintattici” quali:
se...allora...altrimenti....
qualora...ma ...nel caso in cui...
ripeti ... fino a quando…
continua …. finché mentre... se ..però...
verificandosi...altrimenti....
nel primo caso...., nel secondo caso..., ... nell’ennesimo caso...
...…
indicano possibili condizioni (eventi) che danno origine alle diverse sequenze dinamiche
nei linguaggi di programmazione questi “costrutti sintattici”
vengono chiamati “strutture di controllo”
Sequenze Statiche e Dinamiche
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 32
Sequenza
struttura di controllo che racchiude istruzioni semplici o altre strutture di controllo che vanno eseguite nell’ordine in cui sono scritte
una sequenza può anche racchiudere una sola istruzione o una sola struttura di controllo
Selezione
una struttura di controllo per selezionare una fra due o più possibili “sequenze” di istruzioni
Ciclo
struttura di controllo per ripetere l’esecuzione di una “sequenza” di istruzioni
Strutture di Controllo
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 33
Sequenza
Sequenza begin S end;
tra begin e end sono inserite le istruzioni che devono essere eseguite
una prima struttura:
if (condizione) then
<sequenza>
endif
condizione è una espressione booleana (predicato)
<sequenza> è una sequenza di istruzioni semplici o strutturate
se condizione è vera esegui istruzioni in <sequenza>; in ogni caso continua eseguendo la prima istruzione successiva alla struttura di controllo
Selezione
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 35
la struttura introduce due possibili sequenze dinamiche (esecuzioni):
C = VERO, sequenza eseguita:
S0 - S1 - S2
C = FALSO, sequenza eseguita:
S0 - S2 S0
if (C) then S1 endif S2
…. struttura 1-in /1-out ….
S0
S1
S2 C
vero falso
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 36
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 area = base * altezza;
write (‘Area=‘, “%f”, area);
endif end.
… il programma per calcolare l’area del rettangolo …
… considerando le precondizioni sugli input ...
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 37
Program area_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
area = base * altezza;
write (‘Area=‘, “%f”, area);
endif end.
Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente
immetti base 7
immetti altezza 12
Area= 84
Schermo del video
l’utente digita 7 base = 7
l’utente digita 12 altezza = 12
area = 7 * 12 = 84
(base > 0 and altezza > 0)=VERO
Program area_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 area = base * altezza;
write (‘Area=‘, “%f”, area);
endif end.
Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente
immetti base 7
immetti altezza 0
Schermo del video
l’utente digita 7 base = 7
l’utente digita 0 altezza = 0
L’utente non vede alcun risultato !? Vediamo come migliorare ….
(base > 0 and altezza > 0)=FALSO
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 39
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 area = base * altezza;
write (‘Area=‘, “%f”, area);
endif
if ((base <= 0) or (altezza <= 0)) then
write (‘ERRORE! Base e/o altezza non maggiore di zero’);
endif end.
… aggiungiamo una struttura “if … then …” per visualizzare un messaggio di errore …
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 40
Program area_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 area = base * altezza;
write (‘Area=‘, “%f”, area);
endif
if ((base <= 0) or (altezza <= 0)) then
write (‘ERRORE! Base e/o altezza non maggiore di zero’);
endif end.
Cosa vedrà l’utente quando sarà eseguito …
immetti base 7
immetti altezza 0
Schermo del video
l’utente digita 7 base = 7
l’utente digita 0 altezza = 0
(base > 0 and altezza > 0)=FALSO ERRORE! Base e/o altezza non maggiore di zero
(base <= 0 or altezza <= 0)=VERO
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 41
Il programma di esempio calcolo volume parallelepipedo
Program volume_parallelepipedo;
FLOAT LBase, ABase, H, Volume, Area_Base;
begin
write (‘immetti valore della lunghezza di base’);
read (“%f” LBase);
write (‘immetti valore della altezza di base‘);
read (“%f” ABase);
write (‘immetti valore della altezza del parallelepipedo‘);
read (“%f” H);
Area_Base = LBase* ABase;
Volume=Area_Base*H;
write (‘Volume= ‘, “%f” Volume);
end.
... Modificare il programma del calcolo del volume del parallelepipedo per verificare il rispetto delle precondizioni ...
Il programma di esempio calcolo volume parallelepipedo
Program volume_parallelepipedo;
FLOAT LBase, ABase, H, Volume, Area_Base;
begin
write (‘immetti valore della lunghezza di base’);
read (“%f” LBase);
write (‘immetti valore della altezza di base‘);
read (“%f” ABase);
write (‘immetti valore della altezza del parallelepipedo‘);
read (“%f” H);
if ((Lbase>0) and (Abase>0) and (H>0) then
Area_Base = LBase* ABase;
Volume=Area_Base*H;
write (‘Volume= ‘, “%f” Volume);
endif
if ((Lbase<=0) or (Abase<=0) or (H<=0)
write (‘ERRORE !!! Almeno una delle dimensioni è non maggiore di zero’);
... programma del calcolo del volume del parallelepipedo con istruzioni per la verifica del rispetto delle precondizioni ...
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 43
una seconda struttura:
if (condizione) then
<sequenza1>
else
<sequenza2>
endif
condizione è una espressione booleana (predicato)
<sequenza1> <sequenza2> sono sequenze di istruzioni semplici o strutturate
se condizione è vera esegui istruzioni in <sequenza1>; altrimenti (cioè condizione è falsa) esegui <sequenza2>; in ogni caso continua
eseguendo la prima istruzione successiva alla struttura di controllo
Selezione
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 44
la struttura introduce due possibili sequenze dinamiche (esecuzioni):
C = VERO, sequenza eseguita:
S0 - S1 - S3
C = FALSO, sequenza eseguita:
S0 - S2 - S3 S0
if (C) then S1 else S2 endif S3
…. struttura 1-in /1-out ….
S0
S2
S3
vero
C
falsoS1
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 45
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.
… un ulteriore miglioramento del programma per il calcolo dell’area di un rettangolo ...
Program area_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
Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente
immetti base 7
immetti altezza 0
Schermo del video
l’utente digita 7 base = 7
l’utente digita 0
altezza = 0 Errore: base o altezza = <0
(base > 0 and altezza > 0) = FALSO
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 47
Selezione a più vie:
Selezione
Struttura di scelta plurima che controlla se una espressione assume un valore all’interno di un certo insieme di costanti e si comporta di conseguenza
struttura SWITCH
tale struttura spesso è anche indicate come CASE OF
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 48
switch (<espressione>) begin
case c1:
S1;
break;
case c2:
S2;
break;
…
case cN:
Sn;
break;
[default: Sdefault; break;
] end
Selezione a più vie
semantica
Valuta valore <espressione>
nel caso di valore pari a c1 esegui S1;
esci dalla struttura switch (break);
nel caso di valore pari a c2 esegui S2;
esci dalla struttura switch (break);
…
nel caso di valore pari a cN esegui Sn;
esci dalla struttura switch (break);
[ nel caso di valore diverso da c1 ,..., cN ) esegui Sdefault;
esci dalla struttura switch (break);
] …. (è opzionale)
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 49
switch (<espressione>) begin
case c1:
S1;
break;
case c2:
S2;
break;
…
case cN:
Sn;
break;
default: Sdefault; break;
end
Selezione a più vie
Espressione di controllo (discriminante)
costanti
Istruzioni da eseguirsi se <espressione>
uguale a c1, c2, …., cN
Istruzione per uscire dallo Switch
Istruzioni da eseguirsi se <espressione> diversa da c1, c2, ….
(è opzionale)
S0
Sn
SU E
S2
S1 … S
defaultc1 c2 cn
Selezione a più vie:
Selezione
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 51
……
write (‘ immetti numero tra 1 e 4’);
read("%d“, num);
switch (num) begin
case 1: write(‘*’); break;
case 2: write(‘**’); break;
case 3: write(‘***’); break;
case 4: write(‘****’); break;
default: write(‘!’); break;
end
… …
Selezione: switch
Esempio: stampa da 1, 2, 3, o 4 asterischi in base al numero (compreso tra 1 e 3) immesso , altrimenti stampa un ‘!’
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 52
\
Selezione: switch
immetti numero tra 1 e 4
3
***
Schermo del video
Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente
……
write (‘immetti numero tra 1 e 4’);
read("%d", num);
switch (num) begin
case 1: write(‘*’); break;
case 2: write(‘**’); break;
case 3: write(‘***’); break;
case 4: write(‘****’); break;
default: write(‘!’); break;
end
… …
l’utente digita 3 num = 3
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 53
Selezione: switch
immetti numero tra 1 e 4
5
!
Schermo del video
Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente
……
write (‘immetti numero tra 1 e 4’);
read("%d", num);
switch (num) begin
case 1: write(‘*’); break;
case 2: write(‘**’); break;
case 3: write(‘***’); break;
case 4: write(‘****’); break;
default: write(‘!’); break;
end
… …
l’utente digita 5 num = 5
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
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 55
#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:
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 56
#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…
innestate
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 57
#include<stdio.h>
main ( )
/* stampa da 1 a 3 stelle o un
! usando if... else if... */
{ ...
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 ( )
/* stampa da 1 a 3 stelle o un ! – usando switch */
{ ...
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 cifra; una lettera minuscola o maiuscola;
un altro tipo di carattere
… LDP …
// 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 ‘b' : ...… : case 'z' : write( ‘ Lettera minuscola ‘); break;
case 'A' : case ‘B' : ...… :case 'Z' : write( ‘ Lettera maiuscola ‘ ); break;
default : write( ‘ Altro Carattere ‘);
end
Selezione: switch
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 59
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
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 60
#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
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 61
#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
Esempio
Analisi e Specifica
Definizione del problema:
I clienti di un’azienda sono classificati in sei categorie indicate con i caratteri:
A - B - C - D - E - 0
L’azienda attua ai vari clienti uno sconto in base alla categoria cui appartengono secondo la seguente tabella
Categoria A B C D E 0
Sconto 5% 7,5% 10% 15% 18,5% 0%
Scrivere un programma che ricevuti in input la categoria del cliente ed il prezzo intero che dovrebbe pagare, calcoli l’importo dello sconto da effettuare (in base alla tabella indicata) ed il totale che pagherà effettivamente detraendo lo sconto dal prezzo intero.
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 63
Esempio
Definizione dei dati del problema:
I: categoria del cliente, prezzo intero
Pi: la categoria del cliente deve essere una di quelle valide, riportate nella tabella precedente, il prezzo deve essere non negativo
U: importo sconto, totale cliente;
Pu: il totale cliente non può essere maggiore del prezzo intero e deve essere non negativo
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 64
Esempio
Tabella delle variabili di ingresso
Tabella delle variabili di uscita
Nome Varibile Descrizione Tipo
catCli Categoria del cliente il cui valore deve essere uno tra (A, B, C, D, E, 0)
CHAR
prezzo Prezzo intero che il cliente pagherebbe senza lo sconto FLOAT
Nome Varibile Descrizione Tipo
sconto Importo dello sconto da praticare FLOAT
totaleCliente Importo ‘scontato’ che il cliente pagherà FLOAT
Tabella delle variabili di algoritmo
Nome Varibile Descrizione Tipo
al_sconto Aliquota percentuale da applicare per calcolare l’importo dello sconto da praticare
FLOAT
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 65
Esercizio
Progettazione
Descrizione del metodo di elaborazione:
Si richiede l’immissione della categoria cliente e del prezzo intero E’ letto il valore del prezzo intero ed è assegnato alla variabile prezzo Se il valore di prezzo è negativo è richiesta la re-immissione di prezzo E’ letto il valore della categoria cliente che è assegnato alla variabile catCli
Usando una struttura switch, con discriminante catCli, alla variabile al_sconto viene assegnato, in base alla tabella precedente, il valore della aliquota da usare per calcolare l’importo dello sconto.
Se per la categoria cliente è immesso un valore non valido, viene visualizzato un messaggio di errore e si assegna il valore -1 alla variabile al_sconto.
Se il valore della variabile al_sconto non è valido (ovvero è uguale a -1) è richiesta la re-immissione del valore di catCli; quando al_sconto è valido si calcola:
• l’importo dello sconto:
sconto = prezzo * (al_sconto / 100)
• l’importo del totale ‘scontato’:
totaleCliente = prezzo – sconto
Si visualizzano, con adeguati messaggi a video, i valori del prezzo, dell’aliquota sconto, dell’importo dello sconto, del totale scontato.
#include<stdio.h>
main ( )
/* questo programma calcola lo sconto in base alla categoria cliente */
{float al_sconto, prezzo, totaleCliente, sconto;
char catCli;
do {
printf("inserisci il prezzo\n");
scanf("%f", &prezzo);
if (prezzo <= 0)
printf("ERRORE! VALORE PREZZO NEGATIVO !! \n");
}
while (prezzo<=0);
il programma in C
Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio
do
{printf("inserisci la categoria del cliente\n");
scanf(“\n%c", &catCli);
switch (catCli)
{ case 'A':{al_sconto= 5;
break;}
case 'B':{al_sconto= 7.5;
break;}
case 'C': {al_sconto= 10;
break;}
case 'D': {al_sconto= 15;
break;}
case 'E': {al_sconto= 18.5;
break;}
case '0': {al_sconto= 0;
break;}
default: {printf("CATEGORIA INESISTENTE!\n");
al_sconto=-1;
break;}
} }
while(al_sconto==-1);
il programma in C
Elementi di Informatica Prof. G. A. Di Lucca - Univ. del Sannio
sconto = prezzo * (al_sconto/100);
totaleCliente = prezzo - sconto;
printf("\n Prezzo: %f\n", prezzo);
printf("\n Aliquota sconto: %f \n Importo Sconto %f\n", al_sconto, sconto);
printf("\n Totale da pagare: %f\n", totaleCliente);
system("Pause");
}