Sei sulla pagina 1di 15

4.

For, while, break, if, switch


CICLO FOR Ripete delle istruzioni per un numero finito di volte con la seguente sintassi: for <indice>=<start>:<step>:<end> {blocco istruzioni} end Esempi con incremento positivo e negativo: a=0 a=0 for i=1:2:50 oppure for i=50:-1:1 a=a+1 a=a-1 end end - Se non indicato, lincremento vale 1

CICLO WHILE Ripete delle istruzioni per un numero indefinito di volte fino al persistere di una certa condizione con la seguente sintassi: While <condizione> {blocco istruzioni} end
Esempio: massimo intero n tale che n!<1010 (risultato n=13) n=1; while (prod(1:n)<1e10) n=n+1; end disp(n)

ISTRUZIONE BREAK Listruzione break termina forzatamente lesecuzione di un ciclo for o while. Le istruzioni che appaiono nel ciclo dopo il break non vengono eseguite.
In cicli innestati, break consente di uscire dal ciclo in cui si trova; il controllo passa allistruzione che segue lend di quel ciclo.

Break non definito al di fuori di for e while (altrimenti si usa return).

ISTRUZIONE IF Listruzione if controlla lesecuzione di un blocco di codice con la seguente sintassi:


if <espressione logica 1> {istruzione1} else if <espressione logica 2> {istruzione2} else {istruzione3} end

Esempio: calcolo di n!
n=input(Numero n>>); If n<0 disp(n negativo) elseif n==0 fattoriale=1 else fattoriale=prod(1:n) end

ISTRUZIONE SWITCH Listruzione switch consente di scambiare tra diversi casi, come mostrato nel seguente esempio:
d=floor(3*rand)+1 switch d case 1 x=a case 2 x=b otherwise x=c end

Esempio: grafico della standard map per eps=0.01 >> plotstmap(0,0.618,0.01) function plotstmap(a,b,eps) %grafico della standard map per diversi valori di epsilon %condizioni iniziali x(1)=a; y(1)=b; %alloco le coordinate dell`evoluzione del sistema for i=1:1000 y(i+1)=y(i)+eps*sin(x(i)); x(i+1)=mod(x(i)+y(i+1),2*pi); end plot(x,y,'*')

Esempio: grafico della standard map per vari eps

%script per grafici della standard map per 5 eps plotstmap(0,0.618,0.5); hold on; plotstmap(0,0.618,0.01); hold on; plotstmap(0,0.618,0.1); hold on; plotstmap(0,0.618,0.8); hold on; plotstmap(0,0.618,0.99)

%funzione che plotta la standard map con diversi colori function plotstmap1(a,b,eps,j) %condizioni iniziali x(1)=a; y(1)=b; %alloco le coordinate dell`evoluzione del sistema for i=1:1000 y(i+1)=y(i)+eps*sin(x(i)); x(i+1)=mod(x(i)+y(i+1),2*pi); end if j==1 plot(x,y,'g*'); end

if j==2 plot(x,y,'r*'); end if j==3 plot(x,y,'k*'); end if j==4 plot(x,y,'b*'); end if j==5 plot(x,y,'c*'); end hold on; end

Esempio: grafico della standard map per vari eps, usando lo switch

function plotstmap2(a,b,eps) for j=1:5 switch j case 1 e=0.01; y(1)=0.618; x(1)=0; for i=2:1000 y(i)=y(i-1)+e*sin(x(i-1)); x(i)=x(i-1)+y(i); x(i)=mod(x(i),2*pi); end

plot(x,y,'*c') hold on case 2 e=0.1; y(1)=0.618; x(1)=0; for i=2:1000 y(i)=y(i-1)+e*sin(x(i-1)); x(i)=x(i-1)+y(i); x(i)=mod(x(i),2*pi); end plot(x,y,'*m') hold on

case 3 e=0.8; y(1)=0.618; x(1)=0; for i=2:1000 y(i)=y(i-1)+e*sin(x(i-1)); x(i)=x(i-1)+y(i); x(i)=mod(x(i),2*pi); end plot(x,y,'*y') hold on

case 4 e=0.9; y(1)=0.618; x(1)=0; for i=2:1000 y(i)=y(i-1)+e*sin(x(i-1)); x(i)=x(i-1)+y(i); x(i)=mod(x(i),2*pi); end plot(x,y,'*r') hold on

otherwise e=0.99; y(1)=0.618; x(1)=0; for i=2:1000 y(i)=y(i-1)+e*sin(x(i-1)); x(i)=x(i-1)+y(i); x(i)=mod(x(i),2*pi); end plot(x,y,'*g') hold on end end

Potrebbero piacerti anche