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