Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
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