Professional Documents
Culture Documents
Controle de Fluxo
Loops for
Os loops for possibilitam que uma srie de comandos seja repetida por um nmero de vezes fixo e predefinido.
A forma geral do loop for :
for x = vetor
comandos . . .
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
Exemplo:
>> for n = 1 : 10
x (n) = sin (n * pi / 10);
end
>> x
x=
Columns 1
0.3090
through 7
0.5878
Columns 8
0.5878
0.8090
through 10
0.3090
0.0000
>> A
A=
2
10
17
26
13
20
29
340378079.doc
0.9511 1.0000
0.9511
0.8090
2
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
>> dados = [ 3 9 45 6 ; 7 16 -1 5 ]
dados =
3 9 45 6
7
>>
16 -1 5
for n = dados
x = n ( 1) - n ( 2 )
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
x=
-4
340378079.doc
3
x=
-7
x=
46
x=
1
Pode-se incluir loops for em outros, sucessivamente, tanto quanto desejado.
>> for n = 1 : 5
for m = 5 : -1 : 1
A ( n, m) = n ^ 2 + m ^ 2;
end
disp(n)
end
1
2
3
4
5
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
10 17
26
>> A
A=
2
5
5
13
20
340378079.doc
29
4
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
Loops while
Ao contrrio do loop for, que executa um grupo de comandos um nmero fixo de vezes, o loop while executa um
grupo de comandos um nmero infinito de vezes.
While expresso
comandos . . .
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
Os comandos... entre as intrues while e end so executados enquanto TODOS os elementos da expresso forem
VERDADEIROS.
>> num=0; EPS = 1;
>> while (1 +EPS) > 1
EPS = EPS / 2;
340378079.doc
5
num = num + 1;
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
>> num
num =
53
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
% numero de mas
340378079.doc
6
custo =
250
>> if macas > 5
custo = (1-20/100)*custo;
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
>> custo
custo =
200
Nos casos em que h duas alternativas, a estrutura if-else-end passa a ser:
if expressao
comandos executados se verdadeiro
else
comandos executados se falso
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
340378079.doc
7
Outra maneira de resolver o problema anterior :
>> EPS=1;
>> for num=1:1000
EPS=EPS/2;
if (1+ EPS) <= 1
EPS=EPS*2
break
end
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
>> num
num =
53
Este exemplo demostra outra maneira de calcular EPS. Faz-se com que o loop for seja executado um grande
nmero de vezes.
A estrutura if-else-end testa, ento se EPS ficou suficientemente pequeno. Em caso afirmativo, EPS
multiplicado por dois e o comando break fora o loop for a terminar prematuramente, isto , quando num = 53.
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
340378079.doc
34
8
17 20
25
32
41
26 29
34
41
50
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
340378079.doc
9
26 29
34
41
50
Exemplo:
x = 2.7;
unidades = cm;
switch unidades % converte x para centmetros
case { polegadas , pol}
y = x * 2.54;
case { pes, p}
y = x * 2.54 * 12 ;
case { metros, m}
y = x / 100 ;
case { milmetros, mm}
y = x * 10 ;
case { centmetros, cm}
y=x;
otherwise
disp ( [ Unidade desconhecida : unidades ] )
y = nan;
end
>> A
A=
2
10
17
26
13
20
29
10 13
18
25
34
17 20
25
32
41
26 29
34
41
50
340378079.doc