Universidade Federal de Alagoas – UFAL
Centro de Tecnologia – CTEC
ESTRUTURAS DE CONTROLE
Estruturas Condicionais ou de Seleção Estruturas Condicionais Simples Estruturas Condicionais Compostas Estruturas Condicionais Encadeadas Estruturas Condicionais Aninhadas Estruturas Condicionais de Múltipla
Escolha
Na construção de algoritmos, utilizamos os conceitos de:
Variáveis Constantes Atribuições Operadores e expressões aritméticas, lógicas e relacionais Comandos que traduzem esses conceitos de forma a
representar o conjunto de ações desejadas.
2
Exemplo 02 – Variáveis no MATLAB
a = 5; % variável numéricab = 8.35; % variável numéricas = ‘c’; % caracterel = 1; % variável lógicav = ‘casa’; % seqüência de caracteres
Exemplo 10:2 < 5 | (~(15/3==5))
v | (~v)v | f
v
Estruturas de controle
Para viabilizar essas ações, é necessário estabelecer o fluxo de execução do algoritmo.
Isso é possível a partir do uso das estruturas básicas de controle do fluxo de execução e das combinações entre elas.
Tipos básicos de estruturas de controle: Seqüenciais Condicionais Repetição
3
Estruturas de Controle de Fluxo
As estruturas de controle de fluxo determinam o fluxo de execução dos comandos do programa.
Sem elas só haveria uma maneira do programa ser executado: de cima para baixo comando por comando.
Em função dos dados fornecidos pelo usuário, não haveria como deixar de executar algum comando ou alterar o número de repetições de comandos.
É possível elaborar programas sem utilizar todas elas, mas deve-se notar que a elegância e a facilidade de entendimento de um programa dependem do uso correto das estruturas nos locais certos. 4
Estruturas de Seleção (Condicional)
Essas estruturas condicionam a execução de um comando ou de um bloco de comandos ao atendimento de condições (Se “verdadeiro”, então) definidas pelo programador.
Aqui, são usados os conceitos de expressões lógicas e relacionais vistos anteriormente.
5
Seleção Simples
Usada quando precisamos testar uma certa condição antes de executar uma ação. Seu modelo é descrito abaixo.
6
if ( condição ) comando 1; comando 2;
... comando n;end
Expressão Lógica e/ou relacional
2 < 5 | (~(15/3==5))v | (~v)
v | fv
Bloco de comandos
Exemplo: Cálculo da média com verificação de aprovação.
N1 = input(‘Entre com a nota 1: ’);N2 = input(‘Entre com a nota 2: ’);N3 = input(‘Entre com a nota 3: ’);N4 = input(‘Entre com a nota 4: ’);
MA = (N1+N2+N3+N4)/4;
fprintf(‘A media é %5.2f\n’,MA);
if ( MA >= 7 ) disp(‘Aluno aprovado!’);end
Seleção Simples
7
expressão Lógica ou relacional?
Seleção Composta
Usada quando existem situações em que duas alternativas dependem de uma mesma condição (uma ser verdadeira e outra falsa).
8
if ( condição ) comando a1; comando a2; comando an;else comando b1; comando b2; comando bn;end
Valor lógico: Pode resultar de expressão lógica ou relacional
Falso
Verdadeiro
N1 = input(‘Entre com a nota 1: ’);N2 = input(‘Entre com a nota 2: ’);N3 = input(‘Entre com a nota 3: ’);N4 = input(‘Entre com a nota 4: ’);
MA = (N1+N2+N3+N4)/4;
fprintf(‘A media é %5.2f\n’,MA);
if( MA >= 7 ) disp(‘Aluno aprovado!’);else disp(‘Aluno reprovado!’);end
Seleção Composta
9
Falso
Verdadeiro
Exemplo: cálculo da média com verificação de aprovação e reprovação.
Seleção Encadeada
Usada quando existe a necessidade de agrupar várias seleções de forma encadeada.
10
if ( condição 1) comando a1; comando a2; comando an;elseif ( condição 2) comando b1; comando b2; comando bn;else comando c1; comando c2; comando cn;end
Valor lógico: Pode
resultar de
expressão lógica ou relacional
Falso para 1 e
2
Falso para 1 e Verdadeiro para
2
Verdadeiro para 1
Seleção Encadeada
11
…MA = (N1+N2+N3+N4)/4;
fprintf(‘A media é %5.2f\n’,MA);
if( MA >= 7 ) disp(‘Aluno aprovado!’);elseif( MA < 5 ) disp(‘Aluno reprovado!’);else disp(‘Aluno na final’);end
Exemplo: cálculo da média verificando aprovação, reprovação e final.
Seleção Aninhada
12
if ( condição1 ) comando a1; comando a2; comando an;elseif ( condição 2 ) comando b1; comando b2; comando bn;elseif ( condição 3 ) comando c1; if ( condição 3a ) comando c1a; comando c2a; comando cna; end comando c2;else comando d1; comando d2; comando dn;end
Seleção de Múltipla Escolha
Esse tipo de seleção é uma alternativa ao uso da seleção encadeada if-elseif-else.
13
switch( variavel ) case v1 comandos 1; break; case v2 comandos 2; break; case v3 comandos n; break; otherwise comandos; break;end
Deve-se observar que variável não pode ser uma expressão.
SwitchVerbo – mudar, trocar;Substantivo – interruptor, mudança.
Sai da estrutura de controle, mas não do programa. Uso do comando é facultativo.
14
disp(‘Estudar, dormir, comer’);disp(‘digite 1 se deseja primeira opcao’);disp(‘digite 2 se deseja segunda opcao’);disp(‘digite 3 se deseja terceira opcao’);
x = input(‘’);flag = 0;switch( x) case 1 disp( ‘Você deseja estudar’); flag=1; break; case 2 disp( ‘Você deseja dormir’); flag=2; break; case 3 disp( ‘Você deseja comer’); flag=3; break; otherwise disp( ‘Não quero nenhuma das opções’); break;end
Exemplo:
Variável bandeira
Ao final do programa, o valor da variável bandeira denuncia que opção da estrutura de controle foi satisfeita
Universidade Federal de Alagoas – UFAL
Centro de Tecnologia – CTEC
EXERCÍCIOS COMPLEMENTARES
Exercício 1:
Escrever um algoritmo que leia 3 valores numéricos e mostre-os em ordem crescente.
16
17
A = input(‘Valor 1: ’);
B = input(‘Valor 2: ’);
C = input(‘Valor 3: ’);
disp (‘Os números em ordem ficam: ’);
if( A < B )
if( B < C )
disp(A); disp(B); disp(C);
elseif( A < C )
disp(A); disp(C); disp(B);
else
disp(C); disp(A); disp(B);
end
elseif( A < C)
disp(B); disp(A); disp(C);
elseif( B < C )
disp(B); disp(C); disp(A);
else
disp(C); disp(B); disp(A);
end
Exercício 2:
Ler 3 números, verificar se eles podem ou não ser lados de um triângulo. Se sim, classificar o triângulo quanto os seus lados.
18
Triângulo Eqüilátero Triângulo Isósceles Triângulo Escaleno
3 lados iguais: Eqüilátero2 lados iguais: IsóscelesLados desiguais: Escaleno
19
A = input(‘Entre c/ o primeiro lado: ’);B = input(‘Entre c/ o segundo lado: ’);C = input(‘Entre c/ o terceiro lado: ’);
if( A < B+C & B < A+C & C < A+B ) if( a == b & b == c ) disp(‘Triangulo Eqüilátero!’); elseif( a == b | b == c | a == c ) disp(‘Triangulo Isosceles!’); else disp(‘Triangulo Escaleno!’); end else disp(‘Lados não formam um triangulo!’);end