ABC++ part 3
Eccoci alla terza parte dell’abecedario di c++.
In questa guida parleremo delle strutture di controllo di un programma, ovvero istruzioni condizionali.
Per chi non fosse pratico di programmazione, le istruzioni condizionali sono eseguite dal programma se una determinata condizione è vera o falsa.
Prima facciamo una piccola introduzione sugli operatori booleani e di relazione.
Gli operatori booleani sono
&& corrisponde alla congiunzione italiana “e” ed è l’operatore di congiunzione logica. Esso prende in input due operandi booleani e restituisce un booleano. Sarà uguale a TRUE o 1 solo in caso entrambi gli operandi siamo TRUE mentre in tutti gli altri casi restituerà FALSE.
|| corrisponde alla congiunzione “0″ ed è l’operatore di disgiunzione logica.Esso come && prende due booleani come input e resituirà FALSE se entrambi i booleani erano FALSE altrimenti negli altri casi restituirà TRUE.
! è l’operatore di negazione logica. Prende come input un booleano è restituisce il suo opposto. In parole povere se l’input è TRUE restituirà FALSE, nel caso opposto TRUE.
Quelli di relazione prendono come input due numeri o variabili e restituiscono un booleano:
< corrisponde al minore
> corrisponde al maggiore
=> e =< il primo e maggiore uguale,il secondo minore uguale. Questi due operatori restituiranno TRUE anche se i due membri hanno valori uguali ha differenza delle controparti “senza uguale”.
== corrisponde ad uguale. Da non condondere assolutamente con l’operatore di assegnamento”=” che invece di confrontare i due valori assegnerebbe il valore di destra alla variabile a sinistra.
!= corrisponde a diverso. Restituirà TRUE solo se i due valori non siano uguali.
La prima istruzione e forse la più usata è if else. La loro funzione corrisponde al loro significato in italiano “se” e “altrimenti”.
Nello specifico all’istruzione if seguono le istruzioni che verrano eseguite in caso la condizione imposta sia vera,mentre all’else in caso quella condizione sia falsa. Va detto comunque che si può fare a meno dell’else ma è necessario usare l’if se si vuole usare l’else(altrimenti non avrebbe senso).
Inoltre un if e else a suo interno possono contenere altre ramificazioni di condizioni.
Passiamo ad un paio di esempi:
Supponiamo di dover fare un primo programma che ci dica se il numero inserito sia pari o dispari
#include <iostream>
using namespace std;
int main()
{
int a;
cout<<”inserisci un numero”<<endl;
cin>>a;
if(a%2==0)//un numero se diviso per due e da resto(modulo) 0 è pari
{
cout<<a<<” è pari<<endl;
}
else
{
cout<<a<<” è dispari<<endl;
}
return 0;
}
If e else possono contenere più istruzioni a loro interno a patto che siano contenuti tra parentesi graffe, altrimenti esse non sono obbligatorie.
L’istruzione condizionale “?” fornisce un metodo semplice per sostistuire una semplice condizione if-else.
Prendiamo l’esempio precedente,con ? sarebbe bastato scrivere:
#include <iostream>
using namespace std;
int main()
{
int a;
cout<<”inserisci un numero”<<endl;
cin>>a;
cout<< (a%2==0) ? “pari” : “dispari”
return 0;
}
Ora analizziamo la sintassi delle due istruzioni:
if (condizione)
{
/* istruzioni da eseguire */
}
else
{
/* istruzioni da eseguire in caso condizione sia falsa*/
}
funzione( (condizione) ? valoresevero : valoresefalso);
Per funzione si intende anche cout, che è l’operatore di assegnazione, al quale non saranno necessarie le parantesi a delimitare l’istruzione.
L’istruzione switch permette invece di evitare di scrivere lunge sequenze di if.
La sua sintassi è la seguente:
switch(espressione) //solitamente si tratta di una variabile
{
case (condizione A):
<sequenza istruzioni>
break;
case(condizione B):
<sequenza istruzioni>
break;
default: //in caso nessuna delle condizioni precedenti si verifichi, è tuttavia opzionale
…( <sequenza di istruzioni>)
}
L’istruzione break serve a interrompere il ciclo in modo da evitare che possano essere eseguite altre condizioni che soddisfino quel valore come le istruzioni del default(verrebbero eseguite con qualsiasi valore)
La sintassi di switch corrisponderebbe con if a:
if (condizioneA):
{sequenza istruzioni}
if(condizioneB):
{sequenza istruzioni}
else
{sequenza istruzioni}
Sebbene all’apparenza possa semprare più corta e semplice, qualora vi sia la presenza di molte condizioni o programmi complessi questa scrittura potrebbe risultare confusionale e poco immediata.
Termina qui anche questa sessione.


