|
- Programmare in C++ (4 lezione) - |
|||
| COSA SERVE PER QUESTO TUTORIAL | |||
| Download | Chiedi sul FORUM | Glossario | Qualche conoscenza nell'ambito della programmazione semplice - conoscenze matematiche di base - un compilatore (Borland o Microsoft) - il codice sorgente della lezione. | ||
| Istruzioni del C++ per verificare determinate condizioni e agire di conseguenza | |||
LE ISTRUZIONI CONDIZIONALI Una breve introduzione alle possibili forme di condizioni del C++ In programmazione per "condizione" si intende solitamente quel processo che vede l'esecuzione di una verifica di una determinata espressione (es. "la casa è bianca?") e, in base alla sua veridicità/falsità, si portano avanti azioni diverse. Vediamo subito un esempio puramente teorico: //ESEMPIO TEORICO DI CONDIZIONE //Stabiliamo subito (arbitrariamente) che //la casa A è bianca ----------------------------> IMPOSTIAMO LA VARIABILE CHE ENTRERA' IN GIOCO //Ecco quindi la nostra condizione: //SE la casa è bianca allora --------------------> CONDIZIONE 1 DA VERIFICARE //dipingila di rosso. ---------------------------> AZIONE DA ESEGUIRE SE LA CONDIZIONE E' VERIFICATA //SE INVECE la casa è gialla allora -------------> CONDIZIONE 2 VERIFICABILE SOLO SE LA CONDIZIONE 1 E' FALSA //dipingila di blu. -----------------------------> AZIONE DA ESEGUIRE SE LA CONDIZIONE 2 E' VERIFICATA //SE invece è di un QUALSIASI ALTRO colore ------> CONDIZIONE ALTERNATIVA //dipingila di verde. ---------------------------> AZIONE DA ESEGUIRE SE LE CONDIZIONI 1 E 2 SONO FALSE Come si può facilmente notare non c'è nulla di difficile in questo esempio, passiamo quindi ad una rappresentazione più rigorosa. LE ISTRUZIONI IF, ELSE E IF ELSE
int casa = 1;
if (casa == 1) {
casa = 2;
}
else if (casa == 3) {
casa = 4;
}
else {
casa = 5;
}
Per prima cosa possiamo dire che "if" (la nostra prima istruzione condizionale) corrisponde alla dicitura italiana "se" (es. "se la casa è bianca..."), "else if" alla dizione "invece se" e "else" potrebbe corrispondere alla dizione "in tutti gli altri casi" ma per essere più chiari applichiamo il caso teorico al caso pratico:
//la casa A è bianca ----------------------------> IMPOSTIAMO LA VARIABILE CHE ENTRERA' IN GIOCO
int casa = 1;
//Ecco quindi la nostra condizione:
//SE la casa è bianca allora --------------------> CONDIZIONE 1 DA VERIFICARE
if (casa == 1) {
//dipingila di rosso. ---------------------------> AZIONE DA ESEGUIRE SE LA CONDIZIONE E' VERIFICATA
casa = 2;
}
//SE INVECE la casa è gialla allora -------------> CONDIZIONE 2 VERIFICABILE SOLO SE LA CONDIZIONE 1 E' FALSA
else if (casa == 3) {
//dipingila di blu. -----------------------------> AZIONE DA ESEGUIRE SE LA CONDIZIONE 2 E' VERIFICATA
casa = 4;
}
//SE INVECE è di un qualsiasi altro colore ------> CONDIZIONE ALTERNATIVA
else {
//dipingila di verde. ---------------------------> AZIONE DA ESEGUIRE SE LE CONDIZIONI 1 E 2 SONO FALSE
casa = 5;
}
Eseguendo questo codice si avrà come risultato "casa" uguale a 2 (la
casa bianca viene ovvero dipinta di rosso). Visualizziamo ora una serie
di importanti notazioni a riguardo di questa istruzione:
L'ISTRUZIONE CONDIZIONALE ? Compreso il funzionamento di "if" sarà adesso davvero intuitiva la comprensione dell'istruzione condizionale ? (di cui avevamo già fatto menzione nella lezione a riguardo degli operatori). Diamo subito una rapida occhiata al seguente esempio: // parteDaVerificare ? azioneSeRisultaVerificata : azioneSeRisultaFalsa; // Proviamo a riportare l'esempio precedente: int casa = 1; (casa==1) ? casa = 2 : casa = 3; L'istruzione condizionale ? (chiamata anche operatore ternario) restituisce "rapidamente" un valore true o false (vero o falso) e in base a quest'ultimo esegue rispettivamente o la prima azione o la seconda. In particolare il listato appena preso in considerazione restituisce "casa" uguale a 2 (la casa bianca viene dipinta di rosso). L'ISTRUZIONE SWITCH // ESEMPIO TEORICO DI SWITCH: //STABILIAMO CHE ABITAZIONE E' UGUALE A 1 // SE L'ABITAZIONE E' // UGUALE A 1 ALLORA //DIPINGILA DI ROSSO //ED ESCI DALL'ISTRUZIONE // UGUALE A 2 ALLORA //DIPINGILA DI MARRONE //ED ESCI DALL'ISTRUZIONE // UGUALE A 3 ALLORA //DIPINGILA DI FUCSIA //ED ESCI DALL'ISTRUZIONE // IN TUTTI GLI ALTRI CASI //DIPINGILA DI NERO Gli "switch" sono dei validi sostituti di sequenze di "if" o di "if" con troppi "else if". gli "switch" funzionano difatti in maniera piuttosto simile ai loro "compagni" ma permettono, di fronte ad esempio ad una lunga lista di possibili valori che può assumere la condizione da verificare, un codice meno macchinoso e più efficace. L'unica vera differenza sta nel fatto che per uscire dall'istruzione e far si che non vengano più eseguiti i successivi casi è necessario interrompere l'esecuzione dello "switch" (con il comando "break"). Ma vediamone una sintassi rigorosa commentata:
// DICHIARIAMO LA NOSTRA VARIABILE
int abitazione = 1;
// SE L'ABITAZIONE E'
switch (abitazione)
{
// UGUALE A 1 ALLORA
case(1):
//DIPINGILA DI ROSSO
abitazione = 2;
break;
// UGUALE A 2 ALLORA
case(2):
//DIPINGILA DI MARRONE
abitazione = 7;
break;
// UGUALE A 3 ALLORA
case(3):
//DIPINGILA DI FUCSIA
abitazione = 8;
break;
// IN TUTTI GLI ALTRI CASI
default:
//DIPINGILA DI NERO
abitazione = 9;
}
Scendiamo più nel dettaglio nelle varie parti:
Ancora una serie di notazioni generali a riguardo di "switch":
RIASSUNTO DELLA LEZIONE, ESEMPI E CHIARIMENTI Ciascuna delle strutture trattate in questa lezione può essere usata liberamente per fare svariate operazioni anche se talvolta una di esse può risultare più efficace di un'altra. Ecco di seguito le istruzione che abbiamo imparato affiancate da una breve descrizione sul "quando usarle" (non si tratta di regole fisse):
Concludiamo la lezione con un esempio chiarificatore delle istruzioni appena apprese:
int casa = 3;
//Usiamo IF
if (casa > 1 || casa == 0) {
casa = 2;
}
//Usiamo ?:
(casa > 1) ? casa = 12 : casa = 0;
//Usiamo SWITCH
switch (casa) {
case(1):
casa = 2;
break;
case(3):
casa = 7;
break;
case(6):
casa = 8;
break;
default:
casa = 100;
}
Il risultato di questo codice sarà "casa" uguale a 100. |
|||
| << INDIETRO | by aFiGoZ | ||