Strutture di controllo
(v.anche cap. 8 del testo “MATLAB per l’ingegneria”)
If, while, for, do until
Strutture di controllo

Selezione if
Sì
C
No
O1
O2
Se la condizione C è vera, esegui O1, altrimenti esegui O2
MATLAB - Controllo
2
Strutture di controllo

Selezione if
if (condizione) blocco istruzioni 1
[else blocco istruzioni 2]
end
Se la condizione è vera esegue il primo blocco di istruzioni,
altrimenti esegue il secondo (se specificato)
Es. calcolo valore assoluto
if (x  0)
y = x;
else
y = -x;
end
MATLAB - Controllo
3
Esempio
a=input('Inserisci un numero: ');
if (mod(a,2)==0)
% mod(a,2) restituisce il resto
disp('a è pari'); % della divisione intera a/2
else
disp('a è dispari');
end;
Esempio di esecuzione
Inserisci un numero: 7
a è dispari
MATLAB - Controllo
4
Esempio
% Dati due numeri in ingresso, individua il maggiore
num1 = input('Inserisci un numero ');
num2 = input('Inserisci un altro numero ');
if (num1==num2)
disp('I due numeri sono uguali');
else
if(num1>num2)
disp('Il primo è maggiore');
else
disp('Il secondo è maggiore');
end;
end;
MATLAB - Controllo
5
Cicli


Esprimono in modo compatto e generali l'esecuzione di
uno stesso blocco di codice per più volte
Anche in matematica sono presenti operatori che
eseguono di fatto un ciclo (ad es. sommatoria e
produttoria)
n
cioè

S
ai = a1 + a2 + a3 + …. + an
1 i
poni i=1
per n volte
somma al totale un nuovo elemento a(i)
incrementa i di 1
fine
Al variare di n, posso sommare un qualunque numero di
elementi con lo stesso “codice”
MATLAB - Controllo
6
Cicli

In un algoritmo o programma, in generale, può
essere necessario esprimere:

la ripetizione di uno stesso blocco di istruzioni X per più
volte (ciclo for)
per n volte
esegui la/e operazione/i
fine

X
la ripetizione di un blocco di istruzioni finché resta vera una
certa condizione C (ciclo while)
mentre C è vera
esegui la/e operazione/i X
fine
MATLAB - Controllo
7
Strutture di Controllo

Cicli
O
No
C
Sì
No
C
Sì
Sì
C
No
O
O
Ciclo while
Ciclo do while
Ripete una stessa
operazione O
finché la condizione
C resta vera
Esegue una
operazione O una
volta, poi la ripete
finché la condizione
C non è soddisfatta
MATLAB - Controllo
Ciclo for
A livello logico come
ciclo while, ma più
esplicito se si devono
ripetere le istruzioni
un numero prefissato
di volte
8
Strutture di controllo

Ciclo while
No
C
Sì
while (condizione)
O
istruzioni O
end
Esegue il blocco di istruzioni O che segue, mentre la
condizione è vera (può anche non eseguirlo mai)
MATLAB - Controllo
9
Strutture di controllo
Somma dei numeri introdotti da tastiera:
se si inserisce 0 fine.
a != 0
No
Sì
s=s+a
s  0;
a=input('Inserisci un numero');
while(a!=0)
s  s  a;
a=input('Inserisci un nuovo numero');
end
disp('La somma vale: '), disp(s);
MATLAB - Controllo
10
Strutture di controllo

Intervalli
v_iniz : passo : v_fin
definisce una sequenza di valori che vanno da v_iniz (compreso) a
v_fin (o il max valore della sequenza <= v_fin) con un incremento
(anche negativo) pari a passo.
Se passo non è specificato l'incremento è pari a 1.
v_iniz può essere maggiore di v_fin solo se passo è negativo
i = 1 : 10
equivale a
i=[1
2
i = 1 : 0.1 : 1.55
equivale a
i=[1 1.1
3
4
1.2
5
6
1.3
MATLAB - Controllo
7
1.4
8
9
10]
1.5]
11
Strutture di controllo

Ciclo for
var = val_iniz
var<=val_fin
for(var = val_iniz:val_fin)
istruzioni
end
No
Sì
istruzioni
La variabile var si chiama contatore.
var = var + 1
Dopo avere definito l'intervallo entro cui deve variare il contatore,
ripete l'esecuzione del blocco di istruzioni che segue finché il
contatore è minore o uguale all'estremo destro dell'intervallo
concludendo ogni ciclo con l'incremento del contatore stesso (non è
necessario specificare l’incremento.
for i1:100
disp( i );
end
MATLAB - Controllo
% stampa i primi 100 numeri
12
Strutture di controllo
Calcolo della somma dei primi 100 numeri naturali
somma  0;
for i  1:100
somma  sommai;
end
disp('La somma vale: '), disp(somma);
MATLAB - Controllo
13
Strutture di controllo
In generale:
Il ciclo while si usa quando non è definito a priori il
numero di iterazioni da eseguire, quando cioè si
attende il verificarsi di un evento (condizione
inizialmente vera per il ciclo while, falsa per il ciclo
do…until).

Il ciclo for si usa quando il numero di iterazioni è
definito o quando la stessa sequenza di istruzioni deve
essere eseguita utilizzando una sequenza predefinita di
valori

In realtà ogni ciclo for è esprimibile come un ciclo while
(e viceversa)
MATLAB - Controllo
14
Esercizi di riepilogo
s=0;
for i=1:5
s=s+i;
end;
1. Quanto vale s alla fine del programma ?
2. Quanto vale i ?
v = 1:5; k= 1:2:6
disp(v); disp(k);
3. Quale è l’output generato da questo programma ?
MATLAB - Controllo
15
Esercizi
1. Disegnando prima il diagramma di flusso, scrivere un
programma che, dati due numeri, verifica se il primo è
maggiore, uguale o minore dell’altro e scrive su video il
risultato.
2. Disegnando prima il diagramma di flusso, scrivere un
programma che chiede l'inserimento di tre numeri e ne
stampa il più piccolo, senza utilizzare la funzione min.
3. Scrivere lo stesso programma che valga per una
quantità arbitraria di numeri, considerando i numeri
come elementi di un vettore, richiedendoli tutti in input
con una sola istruzione ed utilizzando la funzione
min(x) di MATLAB.
MATLAB - Controllo
16
Esercizi



Scrivere un programma che chieda in ingresso un
intero N e calcoli il prodotto dei primi N numeri
naturali
Scrivere
un
programma,
a
partire
dal
corrispondente diagramma di flusso, che chieda in
ingresso un numero finché non si inserisce un
numero >100. Quando questo avviene, il
programma deve uscire scrivendo quanti sono stati i
numeri <=100 che lo hanno preceduto.
Lettura ed esercizi del capitolo 8 del libro.
MATLAB - Controllo
17