You are on page 1of 9

1

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

A declarao 1 : 10 uma forma padro usada na criao de vetores e matrizes no MATLAB.


Elementos de vetores e matrizes criados no MATLAB podem ser usados dentro de um loop for.
>> A
A=
2

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

Estruturas if - else - end


Os comandos .... Entre as instrues if e end so executados se todos os elementos na expresso forem verdadeiros
if expressao
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: Na compra de + de 5 mas, desconto de 20%


>> macas = 10;

% numero de mas

>> custo = macas * 25 % custo das 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

Estruturas switch - case


Quando sequncias de comandos devem ser condicionalmente executadas, com base no uso repetido de
um teste de igualdade com um argumento comum, uma estrutura swith - case pode ser usada

>> A
A=
2

10

17

26

13

20

29

10 13

18

25

34

17 20

25

32

41

26 29

34

41

50

Forma da estrutura switch - case


switch expressao
case teste_expressao1
comandos1 . . .
case { teste_expr2, teste_expr3, teste_expr4 }
comandos2 . . .
otherwise
comandos3 . . .
end
>> A
A=
2

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

You might also like