direttivedel preprocessore fondamenti di informaticalopresti/didattica/fondamenti/fond0607... ·...

16
Fondamenti Fondamenti di di Informatica Informatica ( ( lettere lettere J J - - Z) Z) C++: C++: Strutture Strutture di di Controllo Controllo Prof. Francesco Lo Presti Prof. Francesco Lo Presti C++: Strutture di Controllo 2 Struttura di un programma C++ Struttura di un programma C++ direttive direttive del del preprocessore preprocessore dichiarazioni dichiarazioni int int main ( ) { main ( ) { dichiarazioni dichiarazioni istruzioni istruzioni } } funzione1 funzione1 funzione funzione n n C++: Strutture di Controllo 3 Istruzioni e Strutture di Controllo Istruzioni e Strutture di Controllo Le Le istruzioni istruzioni esprimono esprimono azioni azioni che, una volta che, una volta eseguite, comportano una eseguite, comportano una modifica permanente modifica permanente dello stato interno dello stato interno del programma del programma Le Le strutture di controllo strutture di controllo permettono di permettono di aggregare aggregare istruzioni semplici istruzioni semplici in istruzioni pi in istruzioni pi ù ù complesse complesse Un Un istruzione C++ ha la seguente forma: istruzione C++ ha la seguente forma: istruzione istruzione = = istruzione istruzione semplice semplice istruzione istruzione = = istruzione istruzione di di controllo controllo C++: Strutture di Controllo 4 Istruzioni Semplici Istruzioni Semplici Qualsiasi Qualsiasi espressione espressione seguita da un punto e virgola seguita da un punto e virgola è è una una istruzione semplice istruzione semplice Esempi istruzione istruzione semplice semplice = = espressione espressione ; ; x = 0; y=y+x; k++; 3; /* non fa nulla */ ; /* istruz. vuota */

Upload: vanminh

Post on 16-Feb-2019

243 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

FondamentiFondamenti di di InformaticaInformatica((letterelettere JJ--Z)Z)

C++: C++: StruttureStrutture didi ControlloControllo

Prof. Francesco Lo PrestiProf. Francesco Lo Presti

C++: Strutture di Controllo 2

Struttura di un programma C++Struttura di un programma C++

direttive del preprocessore

dichiarazioni

int main ( ) {dichiarazioniistruzioni

}

funzione1…funzione n

direttivedirettive del del preprocessorepreprocessore

dichiarazionidichiarazioni

intint main ( ) {main ( ) {dichiarazionidichiarazioniistruzioniistruzioni

}}

funzione1funzione1……funzionefunzione nn

C++: Strutture di Controllo 3

Istruzioni e Strutture di ControlloIstruzioni e Strutture di Controllo

Le Le istruzioniistruzioni esprimono esprimono azioniazioni che, una volta che, una volta eseguite, comportano una eseguite, comportano una modifica permanentemodifica permanentedello stato internodello stato interno del programmadel programmaLe Le strutture di controllostrutture di controllo permettono di permettono di aggregareaggregareistruzioni sempliciistruzioni semplici in istruzioni piin istruzioni piùù complessecomplesseUnUn’’istruzione C++ ha la seguente forma:istruzione C++ ha la seguente forma:

istruzione = istruzione sempliceistruzione = istruzione di controlloistruzioneistruzione == istruzioneistruzione semplicesempliceistruzioneistruzione == istruzioneistruzione didi controllocontrollo

C++: Strutture di Controllo 4

Istruzioni SempliciIstruzioni Semplici

Qualsiasi Qualsiasi espressioneespressione seguita da un punto e virgola seguita da un punto e virgola èè una una istruzione sempliceistruzione semplice

Esempi

istruzione semplice = espressione;istruzioneistruzione semplicesemplice = = espressioneespressione;;

x = 0;

y=y+x;

k++;

3; /* non fa nulla */

; /* istruz. vuota */

x = 0;

y=y+x;

k++;

3; /* non fa nulla */

; /* istruz. vuota */

Page 2: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 5

Istruzioni di ControlloIstruzioni di Controllo

Una istruzione di controllo può essere:Una istruzione di controllo può essere:1.1. una istruzione una istruzione compostacomposta (blocco)(blocco)2.2. una istruzione una istruzione condizionale condizionale (selezione)(selezione)3.3. una istruzione di una istruzione di iterazioneiterazione (ciclo)(ciclo)

Le istruzioni di controllo sono alla base della Le istruzioni di controllo sono alla base della programmazione strutturataprogrammazione strutturata ((DijkstraDijkstra, 1969), 1969)

C++: Strutture di Controllo 6

Programmazione StrutturataProgrammazione Strutturata

ObiettivoObiettivo: rendere : rendere piupiu’’ facile la lettura dei facile la lettura dei programmi (e quindi la loro modifica e programmi (e quindi la loro modifica e manutenzione)manutenzione)

Abolizione di salti incondizionati (goto) nel flusso Abolizione di salti incondizionati (goto) nel flusso di controllodi controllo

La parte di esecuzione di un programma La parte di esecuzione di un programma èè ottenuta ottenuta dalla combinazione di istruzioni elementari tramite dalla combinazione di istruzioni elementari tramite regole di composizione (strutture di controllo) regole di composizione (strutture di controllo)

C++: Strutture di Controllo 7

Strutture di ControlloStrutture di Controllo

Concetti chiave:Concetti chiave:concatenazione o composizione concatenazione o composizione BLOCCOBLOCCO

istruzioni eseguite in sequenzaistruzioni eseguite in sequenzaistruzione condizionale istruzione condizionale SELEZIONESELEZIONE

ramifica il flusso di controllo in base al valore vero o falso ramifica il flusso di controllo in base al valore vero o falso di una espressione (di una espressione (““condizione di sceltacondizione di scelta””))

ripetizione o iterazione ripetizione o iterazione CICLOCICLOesegue ripetutamente unesegue ripetutamente un’’istruzione finchistruzione finchéé rimane vera rimane vera una espressione (una espressione (““condizione di iterazionecondizione di iterazione””))

BohmBohm e e JacopiniJacopini (1966): queste tre strutture di (1966): queste tre strutture di controllo sono sufficienti per definire tutte le controllo sono sufficienti per definire tutte le funzioni computabilifunzioni computabili

C++: Strutture di Controllo 8

BloccoBlocco

SintassiSintassi

blocco = {

[dichiarazioni e definizioni]istruzione 1…

istruzione n}

blocco = {

[dichiarazioni e definizioni]istruzione 1…

istruzione n}

istruzione 1

istruzione 2

istruzione n

Page 3: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 9

Esempio di BloccoEsempio di Blocco

#include <iostream>

using namespace std;

int main()

{

int x, y;

cout << “Inserire due numeri \n”;

cin >> x >> y;

cout << x+y;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int x, y;

cout << “Inserire due numeri \n”;

cin >> x >> y;

cout << x+y;

return 0;

}

istruzione 1

istruzione 2

istruzione n

C++: Strutture di Controllo 10

Istruzioni CondizionaliIstruzioni Condizionali

SintassiSintassi

Struttura di controllo che ramifica il flusso di Struttura di controllo che ramifica il flusso di esecuzione in base al esecuzione in base al

valore valore verovero o o falsofalso di una espressione di una espressione booleanboolean((““condizione di sceltacondizione di scelta””))valore diverso o uguale a zero di una espressione interavalore diverso o uguale a zero di una espressione intera

come in Ccome in C

Vedremo solo lVedremo solo l’’istruzione di scelta semplice istruzione di scelta semplice Evitare di introdurre lEvitare di introdurre l’’istruzione istruzione breakbreakLL’’istruzione di scelta multipla istruzione di scelta multipla switchswitch può essere può essere realizzata combinando pirealizzata combinando piùù istruzioni di scelta semplici istruzioni di scelta semplici

selezione = scelta | scelta multiplaselezione = scelta | scelta multipla

alternativaalternativa

C++: Strutture di Controllo 11

IstruzioneIstruzione didi SceltaScelta: if : if

SintassiSintassi

La parte else eLa parte else e’’ opzionaleopzionale

scelta =

if ( condizione )

istruzione if[else

istruzione else]

scelta =

if ( condizione )

istruzione if[else

istruzione else]

istruzione if istruzione else

condizione

istruzione if

condizione

vero

vero falso

falso

C++: Strutture di Controllo 12

Esempio: Esempio: ifif

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

return 0;

}cout<< “Promosso\n”;

voto>=18vero falso

Page 4: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 13

Esempio: Esempio: ifif/else/else

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

else

cout << “Bocciato \n”;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

else

cout << “Bocciato \n”;

return 0;

}

cout<< “Promosso\n”; cout<< “Bocciato\n”;

voto>=18vero falso

C++: Strutture di Controllo 14

Esempio: Esempio: ifif/else/else

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

else {

cout << “Bocciato \n”;

cout << “Mi spiace \n”;

}

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

else {

cout << “Bocciato \n”;

cout << “Mi spiace \n”;

}

return 0;

}

cout<< “Promosso\n”;

voto>=18vero falso

cout<< “Mi spiace\n”;

cout<< “Bocciato\n”;

C++: Strutture di Controllo 15

Esempio: Esempio: ifif/else annidati/else annidati

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

else if (voto>=10)

cout << “Insufficiente \n”;

else

cout << “Grav. Insuff. \n”;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int voto;

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

if (voto>=18)

cout << “Promosso \n”;

else if (voto>=10)

cout << “Insufficiente \n”;

else

cout << “Grav. Insuff. \n”;

return 0;

}

cout<< “Promosso\n”;

voto>=18vero falso

cout<< “Insuff.\n”; cout<< “Grav. Ins.\n”;

vero falsovoto>=10

C++: Strutture di Controllo 16

Il Problema dellIl Problema dell’’else Sospesoelse Sospeso

Cosa appare sullo schermo?Cosa appare sullo schermo?1.1. voto=19voto=192.2. voto=15voto=153.3. voto=28voto=28

if (voto>=18)

if(voto>27)

cout << “Molto bene! \n”;

else

cout << “Insufficiente \n”;

if (voto>=18)

if(voto>27)

cout << “Molto bene! \n”;

else

cout << “Insufficiente \n”;

Page 5: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 17

Il Problema dellIl Problema dell’’else Sospesoelse Sospeso

La clausola else si riferisce sempre allLa clausola else si riferisce sempre all’’enunciato enunciato ififpiupiu’’ vicinovicino

LL’’indentazione trae in ingannoindentazione trae in ingannoIl compilatore ignora gli spaziIl compilatore ignora gli spazi

Come si risolve? Come si risolve?

if (voto>=18)

if(voto>27)

cout << “Molto bene! \n”;

else

cout << “Insufficiente \n”;

if (voto>=18)

if(voto>27)

cout << “Molto bene! \n”;

else

cout << “Insufficiente \n”;

if (voto>=18)

if(voto>27)

cout << “Molto bene! \n”;

else

cout << “Insufficiente \n”;

if (voto>=18)

if(voto>27)

cout << “Molto bene! \n”;

else

cout << “Insufficiente \n”;

C++: Strutture di Controllo 18

Il Problema dellIl Problema dell’’else Sospesoelse Sospeso

Racchiudendo il secondo Racchiudendo il secondo ifif tra parentesi graffe tra parentesi graffe

SuggerimentoSuggerimentoRacchiudere comunque Racchiudere comunque istruzione istruzione ifif e e istruzione elseistruzione elsetra tra parantesiparantesi graffe { } graffe { }

if (voto>=18) {

if(voto>27)

cout << “Molto bene! \n”;

}

else

cout << “Insufficiente \n”;

if (voto>=18) {

if(voto>27)

cout << “Molto bene! \n”;

}

else

cout << “Insufficiente \n”;

if (condizione) {

istruzione if}

[ else {

istruzione else} ]

if (condizione) {

istruzione if}

[ else {

istruzione else} ]

C++: Strutture di Controllo 19

Operatori RelazionaliOperatori Relazionali

Le condizioni dellLe condizioni dell’’enunciato enunciato ifif sono molto spesso dei sono molto spesso dei confronti tra due espressioniconfronti tra due espressioni

Gli operatori di confronto si chiamano operatori Gli operatori di confronto si chiamano operatori relazionalirelazionali

if (x+y>=18)if (x+y>=18)

x uguale ad yx uguale ad yx==yx==y======

x diverso da yx diverso da yx!x!=y=y!=!=≠≠

x minore o uguale ad yx minore o uguale ad yx<x<=y=y<=<=≤≤

x maggiore o uguale ad yx maggiore o uguale ad yx>x>=y=y>=>=≥≥

x minore di yx minore di yx<yx<y<<<<

x maggiore di yx maggiore di yx>yx>y>>>>

DescrizioneDescrizioneEsempioEsempioC++C++OperatoreOperatore

C++: Strutture di Controllo 20

Operatori Relazionali: StringheOperatori Relazionali: Stringhe

EE’’ possibile confrontare tra loro stringhe possibile confrontare tra loro stringhe <, <=,==, >=, ><, <=,==, >=, >

Ordinamento lessicografico (del dizionario)Ordinamento lessicografico (del dizionario)

string nome;

if (nome<“ciao”)

string nome;

if (nome<“ciao”)

Page 6: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 21

Ordinamento LessicograficoOrdinamento Lessicografico

La stringa nulla La stringa nulla èè ““minoreminore”” di qualsiasi stringa non di qualsiasi stringa non nullanullaSi confrontano le stringhe carattere per Si confrontano le stringhe carattere per caratterecarattere

1.1. i=0;i=0;2.2. se a se a èè terminata (non ha i caratteri) la condizione terminata (non ha i caratteri) la condizione

èè veravera3.3. se b se b èè terminata la condizione terminata la condizione èè falsafalsa4.4. se il carattere ise il carattere i--esimo di a esimo di a èè minore del minore del

carattere icarattere i--esimo di b allora la condizione esimo di b allora la condizione èè vera vera ll’’ordinamento dei caratteri dipende dal codice ordinamento dei caratteri dipende dal codice ASCIIASCII

5.5. altrimenti se il carattere ialtrimenti se il carattere i--esimo di a esimo di a èè maggiore maggiore del carattere idel carattere i--esimo di b allora la condizione esimo di b allora la condizione èèfalsafalsa

6.6. altrimenti (ovvero se i caratteri ialtrimenti (ovvero se i caratteri i--esimi di a e b esimi di a e b sono uguali) incrementa i. vai al passo 2sono uguali) incrementa i. vai al passo 2

string a,b;

if (a<b) { …

string a,b;

if (a<b) { …

0<3<A<Z<b<r0<3<A<Z<b<r

C++: Strutture di Controllo 22

Ordinamento LessicograficoOrdinamento Lessicografico

EsempiEsempi

c a r c a r g o<

Z o o z o o<

c a t c a r g o>

C++: Strutture di Controllo 23

Il Tipo di Dati Il Tipo di Dati BooleanoBooleano

Il risultato di un operatore relazionale Il risultato di un operatore relazionale èè un di tipo un di tipo boolbool

truetrue (vero) e false (falso)(vero) e false (falso)C++ introduce (rispetto al C) il tipo C++ introduce (rispetto al C) il tipo boolbool

Due valori: Due valori: truetrue e falsee falseIn generaleIn generale

espressione espressione booleanabooleana espressione che assume il valore espressione che assume il valore truetrue o falseo falsema in C++ vale anche (per compatibilitma in C++ vale anche (per compatibilitàà con il Ccon il C

condizione condizione èè vera se lvera se l’’espressione espressione èè non nullanon nulla

condizione = espressione booleanacondizionecondizione = = espressione espressione booleanabooleana

condizione = espressione intera/doublecondizionecondizione = = espressione intera/espressione intera/doubledouble

C++: Strutture di Controllo 24

EsempiEsempi

LL’’uso di variabili uso di variabili booleanebooleane rende rende piupiu’’ leggibile il codiceleggibile il codice

if (voto>=18) // se promosso

cout << “Promosso \n”;

else // altrimenti è bocciato

cout << “Bocciato \n”;

if (voto>=18) // se promosso

cout << “Promosso \n”;

else // altrimenti è bocciato

cout << “Bocciato \n”;

bool promosso=voto>=18;

if (promosso==true)

cout << “Promosso \n”;

else

cout << “Bocciato \n”;

bool promosso=voto>=18;

if (promosso==true)

cout << “Promosso \n”;

else

cout << “Bocciato \n”;

bool promosso=voto>=18;

if (promosso)

cout << “Promosso \n”;

else

cout << “Bocciato \n”;

bool promosso=voto>=18;

if (promosso)

cout << “Promosso \n”;

else

cout << “Bocciato \n”;

Page 7: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 25

Gli Operatori Gli Operatori BooleaniBooleani o Logicio Logici

Gli operatori Gli operatori booleanibooleani o logici servono a svolgere o logici servono a svolgere operazioni (logiche) su valori operazioni (logiche) su valori booleanibooleani

Permettono di combinare condizioni/espressioni Permettono di combinare condizioni/espressioni booleanebooleane

truetrue se x>5 se x>5 èè false false !(x>5)!(x>5)!!NOTNOTtruetrue se x>5 o se y<0se x>5 o se y<0x>5 || y<0x>5 || y<0||||ORORtruetrue se x>5 e y<0se x>5 e y<0x>5 && y<0x>5 && y<0&&&&ANDANDDescrizioneDescrizioneEsempioEsempioC++C++OperatoreOperatore

if (voto>=16 && voto<18)

cout << “Prova Orale \n”;

if (voto>=16 && voto<18)

cout << “Prova Orale \n”;

C++: Strutture di Controllo 26

Gli Operatori Gli Operatori BooleaniBooleani o Logicio Logici

&& (AND logico) && (AND logico) La condizione La condizione èè vera se e vera se e solo se entrambe le solo se entrambe le condizioni sono verecondizioni sono vere

|| (OR logico)|| (OR logico)La condizione La condizione èè vera se e vera se e solo se almeno una solo se almeno una èè veravera

! (NOT logico) ! (NOT logico) Inverte il valore della Inverte il valore della condizione condizione booleanabooleana

truetruetruetruetruetruefalsefalsefalsefalsetruetruefalsefalsetruetruefalsefalsefalsefalsefalsefalsefalsefalse

cond1 && cond2cond1 && cond2cond2cond2cond1cond1

truetruetruetruetruetruetruetruefalsefalsetruetruetruetruetruetruefalsefalsefalsefalsefalsefalsefalsefalse

cond1 || cond2cond1 || cond2cond2cond2cond1cond1

falsefalsetruetruetruetruefalsefalse!!condcondcondcond

C++: Strutture di Controllo 27

Gli Operatori Gli Operatori BooleaniBooleani o Logicio Logici

PiuPiu’’ operatori operatori booleanibooleani possono essere usati in possono essere usati in unun’’unica espressioneunica espressione

La valutazione viene fatta da sinistra a destra, La valutazione viene fatta da sinistra a destra, con le seguenti precedenze tra operatoricon le seguenti precedenze tra operatori11-- NOT, 2NOT, 2-- AND, 3AND, 3-- ORORLa condizione precedente La condizione precedente èè vera quando:vera quando:

LL’’ordine ordine puopuo’’ comunque essere alterato dalle comunque essere alterato dalle parentesi tondeparentesi tonde

La condizione ora La condizione ora èè vera quando:vera quando:

if (!(y<=10) || x>5 && z>30 && z<100) if (!(y<=10) || x>5 && z>30 && z<100)

if ((!(y<=10) || x>5) && z>30 && z<100) if ((!(y<=10) || x>5) && z>30 && z<100)

y>10 o se x>5, z>30 e z<100y>10 o se x>5, y>10 o se x>5, z>30 e z<100

y>10 o x>5 e z>30 e z<100y>10 o x>5 e z>30 e z<100y>10 o x>5 e z>30 e z<100 C++: Strutture di Controllo 28

Gli Operatori Gli Operatori BooleaniBooleani o Logicio Logici

La valutazione di un espressione con operatori La valutazione di un espressione con operatori booleanibooleani viene effettuata con una strategia detta viene effettuata con una strategia detta ““valutazione pigravalutazione pigra””

La valutazione termina appena il risultato La valutazione termina appena il risultato èè notonotoEsempiEsempi

1.1. cond1 && cond2cond1 && cond2Se cond1 Se cond1 èè false false cond1 && cond2 cond1 && cond2 èè falsefalse

Non serve valutare cond2Non serve valutare cond2Se cond1 Se cond1 èè truetrue devo valutare anche cond2devo valutare anche cond2

2.2. cond1 || cond2cond1 || cond2Se cond1 Se cond1 èè truetrue cond1 || cond2 cond1 || cond2 èè truetrue

Non serve valutare cond2Non serve valutare cond2Se cond1 Se cond1 èè false devo valutare anche cond2false devo valutare anche cond2

Page 8: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 29

Leggi di De Leggi di De MorganMorgan

Stabiliscono lStabiliscono l’’equivalenza tra condizioni equivalenza tra condizioni booleanebooleane

Permettono di semplificare espressioniPermettono di semplificare espressioniMigliorandone la leggibilitMigliorandone la leggibilitàà

EsempiEsempi

NOT (cond1 AND cond2) = NOT cond1 OR NOT cond2

NOT (cond1 OR cond2) = NOT cond1 AND NOT cond2

NOT (y>10 AND y≤30)NOT (y>10 AND yNOT (y>10 AND y≤≤30)30)

NOT y>10 OR NOT y ≤ 30NOT y>10 OR NOT y NOT y>10 OR NOT y ≤≤ 3030

y≤10 OR y>30yy≤≤10 OR y>3010 OR y>30

NOT (y>5 OR x≤0)NOT (y>5 OR xNOT (y>5 OR x≤≤0)0)

NOT y>5 AND NOT x≤0NOT y>5 AND NOT xNOT y>5 AND NOT x≤≤00

y≤5 AND x>0yy≤≤5 AND x>05 AND x>0C++: Strutture di Controllo 30

Verificare i Dati in inputVerificare i Dati in input

cincin (e (e coutcout) sono oggetti di tipo ) sono oggetti di tipo streamstreamlo stato dello lo stato dello streamstream può essere testato tramite il può essere testato tramite il metodo metodo failfail( )( )

failfail( ) restituisce ( ) restituisce false se lo false se lo streamstream cincin non non èè in uno stato di errorein uno stato di errore

non ci sono state operazioni che hanno dato errorenon ci sono state operazioni che hanno dato erroretruetrue se lo se lo streamstream cincin èè in stato di errorein stato di errore

ci sono state operazioni che hanno generato un erroreci sono state operazioni che hanno generato un erroreEsempio: lettere inserite in ingresso quando ci si aspetta un Esempio: lettere inserite in ingresso quando ci si aspetta un valore numericovalore numerico

if ( cin.fail( ) ) if ( cin.fail( ) )

C++: Strutture di Controllo 31

EsempioEsempio #include <iostream>

#include <string>

#include <cmath>

using namespace std;

int main( ) {

double area;

cout << "Please enter the area of a square: ";

cin >> area;

if (cin.fail( )) {

cout << "Error: Bad input\n";

return 1;

}

if (area < 0) {

cout << "Error: Negative area.\n";

return 1;

}

cout << "The side length is " << sqrt(area) << "\n";

return 0;

}

#include <iostream>

#include <string>

#include <cmath>

using namespace std;

int main( ) {

double area;

cout << "Please enter the area of a square: ";

cin >> area;

if (cin.fail( )) {

cout << "Error: Bad input\n";

return 1;

}

if (area < 0) {

cout << "Error: Negative area.\n";

return 1;

}

cout << "The side length is " << sqrt(area) << "\n";

return 0;

} C++: Strutture di Controllo 32

EsempioEsempio

Versione piVersione piùù““pulitapulita””

#include <iostream>

#include <string>

#include <cmath>

using namespace std;

int main( ) {

double area;

int condizione=0;

cout << "Please enter the area of a square: ";

cin >> area;

if (cin.fail( )) {

cout << "Error: Bad input\n";

condizione=1;

}

else if (area < 0) {

cout << "Error: Negative area.\n";

condizione=1;

}

else

cout << "The side length is " << sqrt(area) << "\n";

return condizione;

}

#include <iostream>

#include <string>

#include <cmath>

using namespace std;

int main( ) {

double area;

int condizione=0;

cout << "Please enter the area of a square: ";

cin >> area;

if (cin.fail( )) {

cout << "Error: Bad input\n";

condizione=1;

}

else if (area < 0) {

cout << "Error: Negative area.\n";

condizione=1;

}

else

cout << "The side length is " << sqrt(area) << "\n";

return condizione;

}

Page 9: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 33

Verificare i Dati in inputVerificare i Dati in input

Il C++ permette di fare Il C++ permette di fare cosecose……stranestraneereditereditàà del Cdel C

sono espressioni che hanno un valore non nullo se lo sono espressioni che hanno un valore non nullo se lo streamstream cincin non non èè in uno stato di errorein uno stato di errorealtrimenti hanno valore nulloaltrimenti hanno valore nullo

cin;

cin >> i;

cin;

cin >> i;

C++: Strutture di Controllo 34

Verificare i Dati in inputVerificare i Dati in input

cin >> area;

if (cin.fail( )) {

cout << "Error: Bad input\n";

return 1;

}

if (area < 0) {

cout << "Error: Negative area.\n";

return 1;

}

cout << "The side length is " << sqrt(area) << "\n";

cin >> area;

if (cin.fail( )) {

cout << "Error: Bad input\n";

return 1;

}

if (area < 0) {

cout << "Error: Negative area.\n";

return 1;

}

cout << "The side length is " << sqrt(area) << "\n";

if (cin >> area ) {

if (area < 0) {

cout << "Error: Negative area.\n";

return 1;

}

cout << "The side length is " << sqrt(area) << "\n";

}

else {

cout << "Error: Bad input\n";

return 1;

}

if (cin >> area ) {

if (area < 0) {

cout << "Error: Negative area.\n";

return 1;

}

cout << "The side length is " << sqrt(area) << "\n";

}

else {

cout << "Error: Bad input\n";

return 1;

}

C++: Strutture di Controllo 35

IstruzioneIstruzione didi IterazioneIterazione

SintassiSintassi

StrutturaStruttura didi controllocontrollo per per eseguireeseguire piupiu’’ voltevolte la la stessastessa istruzioneistruzione, , bloccoblocco, , sceltascelta, , ……

istr. di iterazione = istr. while | istr. for | istr. do-whileistr. di iterazione = istr. while | istr. for | istr. do-while

C++: Strutture di Controllo 36

IstruzioneIstruzione whilewhile

SintassiSintassi

LL’’istruzioneistruzione vienevieneeseguitaeseguita finchefinche’’ la la condizionecondizione rimanerimaneveraveraPuoPuo’’ essereessere eseguitaeseguita 0 0 o o piupiu’’ voltevolte

cfrcfr. con do. con do--while while Infinite Infinite voltevolte se la se la condizionecondizione èè sempresempreveravera!!!!

istr. while =

while (condizione)

istruzione

istr. while =

while (condizione)

istruzione

istruzione

condizionevero falso

Page 10: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 37

Esempio: Iterazione Controllata da Contatore Esempio: Iterazione Controllata da Contatore

Una classe di 10 studenti ha sostenuto un test. Una classe di 10 studenti ha sostenuto un test. Inserire i voti (compresi da 0 a 100) e calcolare la Inserire i voti (compresi da 0 a 100) e calcolare la media. media.

?

Inizializzazione

Processamento

Termine

C++: Strutture di Controllo 38

EsempioEsempio

Dal Dal PseudocodicePseudocodice al codiceal codice

Inizializzazione

Dichiara Variabili totale, contatore, voto e media

totale=0

contatore=0Dichiarare variabili

e inizializzarle

Processamento

Inserire i 10 valori

while contatore<10 richiedi votosomma voto a totaleincrementa contatore

Media=totale/10

Calcolare la media

Termine

Stampa la mediaStampa la media

C++: Strutture di Controllo 39

EsempioEsempio

Dal Dal PseudocodicePseudocodice al codiceal codice

while contatore<10 richiedi votosomma voto a totaleincrementa contatore

richiedi voto

contatore<10vero falso

incrementacontatore

somma voto a totale

C++: Strutture di Controllo 40

EsempioEsempio

#include <iostream>

using namespace std;

int main()

{

int totale=0, contatore=0, voto;

double media;

while(contatore<10) {

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

totale=totale+voto;

contatore=contatore+1;

}

media=totale/10.0;

cout << “La media è “ << media;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int totale=0, contatore=0, voto;

double media;

while(contatore<10) {

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

totale=totale+voto;

contatore=contatore+1;

}

media=totale/10.0;

cout << “La media è “ << media;

return 0;

}

Dichiara Variabili totale, contatore, voto e media

totale=0

contatore=0

Media=totale/10

Stampa la media

richiedi voto

contatore<10vero falso

Incrementa contatore

Somma voto a totale

Page 11: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 41

Iterazione Controllata da un ContatoreIterazione Controllata da un Contatore

1.1. Una variabile di controlloUna variabile di controllo1.1. Controllore di cicloControllore di ciclo

2.2. Valore iniziale della Valore iniziale della variabilevariabile

3.3. La condizione di La condizione di continuazione di ciclocontinuazione di ciclo

Verifica se si Verifica se si èè raggiunto raggiunto il valore finaleil valore finale

4.4. LL’’incremento (o il incremento (o il decremento) che modifica decremento) che modifica il contatoreil contatore

#include <iostream>

using namespace std;

int main()

{

int totale=0, contatore=0, voto;

double media;

while(contatore<10) {

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

totale=totale+voto;

contatore=contatore+1;

}

media=totale/10.0;

cout << “La media è “ << media;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int totale=0, contatore=0, voto;

double media;

while(contatore<10) {

cout << “Inserire il voto dell’esame \n”;

cin >> voto;

totale=totale+voto;

contatore=contatore+1;

}

media=totale/10.0;

cout << “La media è “ << media;

return 0;

}

C++: Strutture di Controllo 42

Esempio: Esempio: IterazoneIterazone Controllata da un Valore Controllata da un Valore SentinellaSentinella

Una classe ha sostenuto un test. Inserire i voti Una classe ha sostenuto un test. Inserire i voti (compresi da 0 a 100) e calcolare la media. (compresi da 0 a 100) e calcolare la media. Problema: numero di studenti non notoProblema: numero di studenti non noto

Valore SentinellaValore SentinellaIndica la fine dei datiIndica la fine dei datiIterazione finisce quando in ingresso viene inserito il Iterazione finisce quando in ingresso viene inserito il valore sentinellavalore sentinellaSentinella deve essere scelta in modo da non essere Sentinella deve essere scelta in modo da non essere confusaconfusa

--1 in questo caso 1 in questo caso

C++: Strutture di Controllo 43

EsempioEsempio

Dal Dal PseudocodicePseudocodice al codiceal codiceDal Dal PseudocodicePseudocodice al codiceal codice

Inizializzazione

Dichiara Variabili totale, contatore, voto e media

totale=0

contatore=0Dichiarare variabili

e inizializzarle

Processamento

Inserire i valori

inserire voto while voto≠sentinella

somma voto a totaleincrementa contatoreinserire prossimo voto

se contatore>0media=totale/contatorestampa media

elsestampa messaggio

se sono stati inseriti dei voticalcola la mediastampa media

altrimentistampa messaggio

Termine

C++: Strutture di Controllo 44

EsempioEsempio#include <iostream>

using namespace std;

int main()

{

int totale=0, contatore=0, voto;

double media;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

while(voto !=-1) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

}

if (contatore>0) {

media=(double) totale/contatore;

cout << “La media è “ << media << “\n”;

}

else

cout << “Non è stato inserito alcun valore \n”;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int totale=0, contatore=0, voto;

double media;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

while(voto !=-1) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

}

if (contatore>0) {

media=(double) totale/contatore;

cout << “La media è “ << media << “\n”;

}

else

cout << “Non è stato inserito alcun valore \n”;

return 0;

}

Dichiara Variabili totale, contatore, voto e media

totale=0

contatore=0

inserire voto while voto≠sentinella

somma voto a totaleincrementa contatoreinserire prossimo voto

se contatore>0media=totale/contatorestampa media

elsestampa messaggio

Condizione di Continuazione con Valore SentinellaCondizione di Continuazione con Valore Sentinella

Page 12: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 45

Esempio: AlternativeEsempio: Alternative

Variabile Variabile booleanabooleana per il test per il test di fine iterazione di fine iterazione ee……

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

while(voto !=-1) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

}

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

while(voto !=-1) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

}

bool finito;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

while(!finito) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

}

bool finito;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

while(!finito) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

}

C++: Strutture di Controllo 46

Esempio: AlternativeEsempio: Alternative

Eliminare lEliminare l’’input prima del input prima del whilewhile

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

while(voto !=-1) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

}

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

while(voto !=-1) {

totale=totale+voto;

contatore=contatore+1;

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

}

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale=totale+voto;

contatore=contatore+1;

}

}

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale=totale+voto;

contatore=contatore+1;

}

}

C++: Strutture di Controllo 47

Operatori di AssegnazioneOperatori di Assegnazione

Istruzioni del tipoIstruzioni del tipo

Possono essere riscritte comePossono essere riscritte come

In generale In generale

puopuo’’ essere riscritto comeessere riscritto come

<op> = +,<op> = +,--,*,/,%,*,/,%EsempiEsempi

nomeVariabile = nomeVariabile op espressione;nomeVariabile = nomeVariabile op espressione;

total=total+ quarters * 0.25;total=total+ quarters * 0.25;

total+=quarters * 0.25;total+=quarters * 0.25;

nomeVariabile op = espressione;nomeVariabile op = espressione;

x=x-5;x=x-5; x-=5;x-=5;

x=x-(5+z);x=x-(5+z); x-=5+z;x-=5+z; C++: Strutture di Controllo 48

Operatori di Incremento e DecrementoOperatori di Incremento e Decremento

Operatore di Incremento (++)Operatore di Incremento (++)Incrementa una variabile di 1Incrementa una variabile di 1

Operatore di Decremento (Operatore di Decremento (----))Decrementa una variabile di 1Decrementa una variabile di 1

x++;x++; x+=1;x+=1; x=x+1;x=x+1;

x--;x--; x-=1;x-=1; x=x-1;x=x-1;

Page 13: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 49

Operatori di Incremento e DecrementoOperatori di Incremento e Decremento

PostincrementoPostincremento

Il valore della variabile viene incrementato dopo della Il valore della variabile viene incrementato dopo della valutazione dellvalutazione dell’’espressione in cui appare la variabileespressione in cui appare la variabile

Operatore ++ segue la variabileOperatore ++ segue la variabile

PreincrementoPreincremento

Il valore della variabile viene incrementato prima della Il valore della variabile viene incrementato prima della valutazione dellvalutazione dell’’espressione in cui appare la variabileespressione in cui appare la variabile

Operatore ++ precede la variabileOperatore ++ precede la variabile

variabile++variabile++

y=x++;y=x++; y=x;

x=x+1;

y=x;

x=x+1;

++variabile++variabile

y=++x;y=++x; x=x+1;

y=x;

x=x+1;

y=x; C++: Strutture di Controllo 50

EsempioEsempio

Assegnamento Compatto e Operatore di Assegnamento Compatto e Operatore di Incremento Incremento

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale=totale+voto;

contatore=contatore+1;

}

}

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale=totale+voto;

contatore=contatore+1;

}

}

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale+=voto;

contatore++;

}

}

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale+=voto;

contatore++;

}

}

C++: Strutture di Controllo 51

Esempio: Calcolo del MassimoEsempio: Calcolo del Massimo

Esercizio: Scrivere lo Esercizio: Scrivere lo stesso programma usando stesso programma usando cin.failcin.fail( )( )

while (cin >> next) {

if (next > highest)

highest = next;

}

cout << "The highest temperature is " << highest << "\n";

return 0;

}

while (cin >> next) {

if (next > highest)

highest = next;

}

cout << "The highest temperature is " << highest << "\n";

return 0;

}

#include <iostream>

using namespace std;

int main( ) {

double next;

double highest;

cout << "Please enter the temperature values:\n";

if (cin >> next)

highest = next;

else {

cout << "No data!\n";

return 1;

}

segue

#include <iostream>

using namespace std;

int main( ) {

double next;

double highest;

cout << "Please enter the temperature values:\n";

if (cin >> next)

highest = next;

else {

cout << "No data!\n";

return 1;

}

segue C++: Strutture di Controllo 52

IstruzioneIstruzione dodo--whilewhile

SintassiSintassi

La La condizionecondizione èècontrollatacontrollata a fine a fine ciclociclo

Il Il ciclociclo vieneviene eseguitoeseguito1 o 1 o piupiu’’ voltevolteNelNel while la while la condizionecondizioneèè controllatacontrollata a a inizioiniziociclociclo

istr. do while = do {

istruzione} while (condizione);

istr. do while = do {

istruzione} while (condizione);

istruzione

condizionevero

falso

Page 14: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 53

EsempioEsempio

LL’’esempio precedente si presta bene allesempio precedente si presta bene all’’utilizzo utilizzo del del dodo--whilewhile

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale+=voto;

contatore++;

}

}

bool finito=false;

while(!finito) {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale+=voto;

contatore++;

}

}

bool finito=false;

do {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale+=voto;

contatore++;

}

} while(!finito);

bool finito=false;

do {

cout << “Inserire il voto dell’esame o -1\n”;

cin >> voto;

finito=voto==-1;

if( !finito) {

totale+=voto;

contatore++;

}

} while(!finito);

C++: Strutture di Controllo 54

Iterazione Controllata da un ContatoreIterazione Controllata da un Contatore

#include <iostream>

using namespace std;

int main()

{

int contatore;

contatore=0;

while(contatore<10) {

cout << contatore << “\n”;

contatore=contatore+1;

}

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int contatore;

contatore=0;

while(contatore<10) {

cout << contatore << “\n”;

contatore=contatore+1;

}

return 0;

}

Inizializzazione

Condizione

Modifica Contatore

istruzione

condizionevero falso

inizializzazione

modifica

Istruzione Ciclo

C++: Strutture di Controllo 55

Istruzione Istruzione forfor

SintassiSintassi

istr. for =

for( iniz. ; condizione ; modifica)

istruzione;

istr. for =

for( iniz. ; condizione ; modifica)

istruzione;

#include <iostream>

using namespace std;

int main()

{

for (int contatore=0; contatore<10; contatore++)

cout << contatore << “\n”;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

for (int contatore=0; contatore<10; contatore++)

cout << contatore << “\n”;

return 0;

}

istruzione

condizionevero falso

inizializzazione

modifica

C++: Strutture di Controllo 56

Esempio: Calcolo del FattorialeEsempio: Calcolo del Fattoriale

Fattoriale: n!=1Fattoriale: n!=1··22··33…·…·nn0!=10!=1

#include <iostream>

using namespace std;

int main()

{

int n, fattoriale=1;

cout << “Inserire Numero: “;

cin >> n;

for (int i=2; i<=n; i++)

fattoriale*=i;

cout << n << “!= “ << fattoriale;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int n, fattoriale=1;

cout << “Inserire Numero: “;

cin >> n;

for (int i=2; i<=n; i++)

fattoriale*=i;

cout << n << “!= “ << fattoriale;

return 0;

}

Page 15: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 57

Istruzione Istruzione forfor

LL’’incremento (o il decremento) possono non essere incremento (o il decremento) possono non essere unitari unitari

#include <iostream>

using namespace std;

int main()

{

int i;

for (i=0; i<10; i=i+2)

cout << i << “\n”;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int i;

for (i=0; i<10; i=i+2)

cout << i << “\n”;

return 0;

}

0

2

4

6

8

C++: Strutture di Controllo 58

Esempio: cicli Esempio: cicli forfor annidatiannidati

Stampare la tavola pitagoricaStampare la tavola pitagorica

#include <iostream>

using namespace std;

int main()

{

int i, j;

for (i=1; i<=10; i++) {

for(j=1; j<=10; j++)

cout << i*j << “ “;

cout << “\n”;

}

return 0;

}

#include <iostream>

using namespace std;

int main()

{

int i, j;

for (i=1; i<=10; i++) {

for(j=1; j<=10; j++)

cout << i*j << “ “;

cout << “\n”;

}

return 0;

}

C++: Strutture di Controllo 59

Formattazione OutputFormattazione Output

Per poter formattare/incolonnare lPer poter formattare/incolonnare l’’output si usano output si usano dei dei manipolatorimanipolatori di di streamstream::setprecisionsetprecision(n)(n): n numero di cifre significative: n numero di cifre significative

setwsetw(n)(n): imposta pari ad n la larghezza (minima) in : imposta pari ad n la larghezza (minima) in caratteri della successiva espressione in outputcaratteri della successiva espressione in output

double a=1.1345;

cout << setprecision(3) << a;

double a=1.1345;

cout << setprecision(3) << a;

1.131.13

int x=2, y=12;

cout << setw(4) << a << setw(4) << b;

int x=2, y=12;

cout << setw(4) << a << setw(4) << b;

2 21

C++: Strutture di Controllo 60

Formattazione OutputFormattazione Output

fixedfixed: i numeri : i numeri floatingfloating pointpoint sono mostrati sono mostrati secondo la rappresentazione in virgola fissasecondo la rappresentazione in virgola fissacoutcout << << fixedfixed << << setprecisionsetprecision(n) << x(n) << x

x x èè rappresentato in virgola fissa con n cifre significative rappresentato in virgola fissa con n cifre significative dopo lo 0dopo lo 0

ll’’uso dei manipolatori richiede luso dei manipolatori richiede l’’inclusione del file inclusione del file headerheader iomanip.hiomanip.h

double a=1.1345;

cout << fixed << setprecision(3) << a;

double a=1.1345;

cout << fixed << setprecision(3) << a;

1.1351.135

#include<iomanip>#include<iomanip>

Page 16: direttivedel preprocessore Fondamenti di Informaticalopresti/Didattica/Fondamenti/Fond0607... · Fondamenti di Informatica (lettere J-Z) C++: Strutture di Controllo ... Strutture

C++: Strutture di Controllo 61

Scelta fra Comandi IterativiScelta fra Comandi Iterativi

whilewhile, , dodo--whilewhile o o forfor: Quale usare?: Quale usare?Indicazioni di massimaIndicazioni di massima

Iterazione Iterazione contrallatacontrallata da un contatore da un contatore forforIterazione controllata da un eventoIterazione controllata da un evento--condizione condizione

Deve essere eseguito Deve essere eseguito almentoalmento una volta una volta dodo--whilewhileAltrimenti Altrimenti whilewhile