Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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,'*')
%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