Ciclo incondizionato controllato da un contatore
for indice = espressione
blocco di istruzioni
end

Il ciclo assomiglia molto al ciclo for di Python dove l'indice assume via via tutti i valori definiti dall'espressione.

Incremento intero:

>> for i=1:4
>>   disp(['numero: ',num2str(i)]);
>> end
    numero: 1 
    numero: 2
    numero: 3
    numero: 4

Incremento non intero:

>> for i=0:0.25:1
>>   disp(['numero: ',num2str(i)]);
>> end
    numero: 0 
    numero: 0.25
    numero: 0.5
numero: 0.75
    numero: 1

Decremento:

>> for i=4:-1:1
>>   disp(['numero: ',num2str(i)]);
>> end
    numero: 4
    numero: 3
    numero: 2
    numero: 1

Su un vettore arbitrario:

>> v = [1 2 3 5 7 13 17];
>> for i=v
>>   disp(['numero: ',num2str(i)]);
>> end
    numero: 1
    numero: 2
    numero: 3
    numero: 5
    numero: 7
    numero: 13
    numero: 17
 
Ciclo condizionato
while condizione
    blocco di istruzioni
end

dove condizione è un’espressione che Matlab valuta e interpreta come vera se assume un valore diverso da zero, come falsa se assume il valore zero.Il ciclo si interrompe quando la condizione è falsa.

Esempio di utilizzo per il calcolo di una media su un numero di elementi non conosciuto a priori (l'inserimento di 0 fa finire il ciclo)

>> nvoti = 0; 
>> somma = 0;
>> voto = input('voto? (0 per finire)');
>> while voto ~= 0
>>     somma = somma + voto;
>>     nvoti = nvoti + 1;
>>     voto = input('voto? (0 per finire)');
>> end
>> media = somma/nvoti;
>> disp (media);

 

Gli operatori utilizzabili nella costruzione dell'espressione sono:

<     minore
> maggiore
<= minore o uguale
>= maggiore o uguale
== uguale
~= non uguale

Le espressioni possono essere di tipo complesso utilizzando gli operatori logici:

AND

(espressione 1) & (espressione 2)   

restituisce vero solo se entrambe le condizioni sono vere       

OR

(espressione 1) | (espressione 2)    

restituisce vero  se almeno una delle condizioni è vera

NOT

~(espressione)    

nega il risultato dell'espressione, ovvero restituisce vero se la condizione è falsa

Si osserva che al contrario del C e dei linguaggi di programmazione più noti, Matlab non implementa il ciclo do-while. Questo tuttavia non è un problema perché il ciclo while può sostituire sempre un ciclo do-while adottando alcuni accorgimenti.

Ultime modifiche: domenica, 31 dicembre 2023, 18:10