Espressioni condizionali
SCILAB possiede i seguenti costrutti condizionali,
![]() |
dichiarazione if |
![]() |
dichiarazione select |
![]() |
loop for |
![]() |
loop while |
![]() |
dichiarazione break |
if
La dichiarazione if valuta una espressione logica ed esegue un gruppo di dichiarazioni quando l'espressione e e' vera. L'opzionale elseif o else provvede invece per l'esecuzione di gruppi di dichiarazione alternativi.
Un comando end, combintao con il comando if, termina l'ultimo gruppo di dichiarazioni. L'opzionale elseif o else provvede alla esecuzione di gruppi alternativi di dichiarazioni. La struttura lineare precedentemente esposta non e' obbligatoria, l'unica obbligatorieta' e' che ciascuna condizione deve essere sulla stessa linea del suo corrispondente if o elseif.
Quindi, l'espressione generale e':,
if condizione
// codice eseguibile
elseif condizione
// codice eseguibile
else
end
Per esempio,
if modulo(num,2) == 0
disp('Il numero e' pari');
elseif modulo(num,2) ~=0
disp('Il numero e' dispari');
else
disp('Numero invalido');
end
In questo codice eseguibile ci sono alcune delle espressioni logiche come maggiore di, minore di, etc, queste sono usate per la condizione if. La tabella sottostante descrive una lista delle espressioni logiche
= = | Uguale a |
~ = | Non uguale a |
> = | Maggiore o uguale a |
< = | Minore o uguale a |
> | Maggiore di |
< | Minore di |
select
Il comando select esegue un gruppo di comandi basato su un valore di una variabile o espressione. Il comando case delinea i gruppi di comando. Solamente il primo caso corrispondente vieneeseguito. Anche qui' deve esserci il comando end alla fine della definizione di select.L'espressione generale e':,
select condizione
case 1
// codice eseguibile
case N
// codice eseguibile
end
L'esempio precedente puo' anche essere scritto usando select come segue:
select modulo(num,2)
case 0
disp('Il numero e' pari');
case 1
disp('Il numero e' dispari');
case 2
disp('Numero ivalido');
end
Note: Il comando select puo' essere usato alternativamente a comandi if multipli. Usandolo si hanno vantaggi chiari rispetto l'uso di comandi if multipli.
for
Il loop for ripete un gruppo di comandi per un numero definito di volte. Una dichiarazione end definisce il termine del comando.L'esepresione generale e':,
for variabile = n1:step:n2
// codice eseguibile;
end
Il punto e virgola che termina il comando interno, sopprime la visualizzazione del risultato.
Per esempio,
//Programma per generare un segnale bipolare +1 / -1
mat = rand(1,10,'normale');
binary =zeros(size(mat));
for count = 1:1:length(mat)
if mat(count) >= 0
binary(count) =1;
else
binary(count) =-1;
end
end
while
Il loop while ripete un gruppo di comandi per un numero indefinito di volte sotto il controllo di una condizione lgica. Una dichiarazione end definisce il termine del comando.
L'espressione generale e',
while condizione
// codice eseguibile
// loop counter per esempio, count =count +1;
end
Come per il precedente esempio si puo' scrivere:
mat = rand(1,10,'normale');
binary =zeros(size(mat));
count = 1;
while( count <= length(mat))
if mat(count) >= 0
binary(count) =1;
else
binary(count) =-1;
end
count =count+1;
end
break
Il comando break permette l'uscita immediata da un ciclo for or while. In cicli annidiati, break esce solamente dal ciclo piu' interno.
Consideriamo l'esempio precedente, se vogliamo uscire dal loop while quando il valore di conteggio raggiunge 5. Usando il comando break possiamo ottenere il seguente.
mat = rand(1,10,'normale');
binary =zeros(size(mat));
count = 1;
while( count <= length(mat))
if mat(count) >= 0
binary(count) =1;
else
binary(count) =-1;
end
count =count+1;
// Condizione di break
if count == 5
break;
end
end