linguagem computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1....
TRANSCRIPT
1
1
Alg
oritm
os e
Pro
gram
ação
Linguagem Computacional
Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves
Estruturas de Controle: Estruturas de Decisão ou de Seleção
2
O que veremos: n Estruturas de Controle de Fluxo ou Estruturas de Decisão.
• Decide qual caminho (ou fluxo) o programa deve seguir, com base numa determinada condição.
• A “condição” é uma expressão relacional ou lógica. n Que resulta em “falso” ou “verdadeiro”.
n 1. Seleção ou Estrutura Condicional (IF)
• Simples. • Composta. • Encadeada:
n Homogênea. n Heterogênea.
n 2. Seleção de Múltipla Escolha (CASE)
2
3
1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações.
• Determina quais partes ou passos do programa serão executados e quais serão ignorados.
• Define um caminho que depende de uma condição.
n Condição: é representada por expressões relacionais ou expressões lógicas. • Depende de resultado verdadeiro ou falso.
4
Tipos de Estrutura de Decisão n Estruturas de Decisão podem ser:
1. Simples. 2. Composta. 3. Encadeada (ou aninhada).
3
5
1. Seleção Simples (“Se – Então”)
n Testa uma condição antes de executar uma única ação.
SE (condição) ENTÃO <instruções bloco 1>; fim_se ... <instruções bloco 2>;
(Condição)
< Instruções bloco 1>
Falso
Verdadeiro
< Instruções bloco 2>
Alinhamento
6
Seleção Simples – se verdadeiro...
se (“condição for verdade”) então ...
<instruções bloco 1>; ...
fim_se Se a condição for verdade executa o bloco
1 e continua.
4
7
Seleção Simples – se falso...
se (condição for verdade) então ...
<instruções bloco 1>; ...
fim_se Se a condição for FALSA ignora o bloco 1 e continua depois do
fim_se.
8
Seleção Simples: Exemplo
n Algoritmo para calcular a média e indicar aprovação.
q PROGRAMA media_aprovacao; VAR n1, n2, n3, media: REAL; INÍCIO
ESCREVA (‘Digite três notas’); LEIA (n1, n2, n3);
MEDIA:= (n1+n2+n3)/3; ESCREVA (‘Média: ’, media); SE (media >= 5 ) ENTÃO escreva (‘Aprovado’); FIM_SE
FIM.
q PROGRAM media_aprovacao; VAR n1, n2, n3, media: REAL;
BEGIN WRITELN (‘Digite três notas’); READLN (n1, n2, n3); media:= (n1+n2+n3)/3; WRITELN (‘Média: ’, media); IF (media >= 5) THEN WRITELN (‘Aprovado’);
END.
5
9
2. Seleção Composta (“Se – Então – Senão”)
n Escolher entre 2 alternativas a partir de uma condição
(Condição)
< Instruções bloco 1>
Falso
Verdadeiro
se (condição) então
<instruções bloco 1>;
senão
<instruções bloco 2>;
fim_se ... <instruções bloco 3>
< Instruções bloco 3>
< Instruções bloco 2>
Alinhamento
10
Seleção Composta - (“Se .... Então....”)
se (condição for verdade) então ...
<instruções bloco 1>; ...
senão
<instruções bloco 2>;
fim_se
Se a condição for Verdade executa o bloco
1 e ignora o bloco 2.
6
11
Seleção Composta – ...senão...
se (condição for verdade) então ...
<instruções bloco 1>; ...
senão
<instruções bloco 2>;
fim_se Se a condição for FALSA
executa o bloco 2 e ignora o bloco 1.
12
Seleção Composta: Exemplo
n Algoritmo para calcular a média e indicar aprovação ou reprovação:
q PROGRAMA media_aprovacao; VAR n1, n2, n3, media: REAL; INÍCIO
ESCREVA (‘Digite três notas’); LEIA (n1, n2, n3);
MEDIA:= (n1+n2+n3)/3; ESCREVA (‘Média: ’, media); SE (media >= 5 ) ENTÃO escreva (‘Aprovado’); ELSE escreva (‘Uhhh, não deu’); FIM_SE
FIM.
q PROGRAM media_aprovacao; VAR n1, n2, n3, media: REAL;
BEGIN WRITELN (‘Digite três notas’); READLN (n1, n2, n3); media:= (n1+n2+n3)/3; WRITELN (‘Média: ’, media); IF (media >= 5) THEN WRITELN (‘Aprovado’) ELSE WRITELN (‘Uhhh, não deu’);
END.
7
13
3. Seleção Encadeada
n Agrupar condições para definir qual bloco será processado.
n Categorias:
n Seleção Encadeada Homogênea.
q (“Se – Então Se ... Então se...”) n Seleção Encadeada Heterogênea.
q (“Se – Então Se ... Senão se...”)
14
Seleção Encadeada Homogênea
se (condição 1) então
se (condição 2) então
se (condição 3) então
se (condição 4) então
<instruções bloco 1>
fim_se
fim_se
fim_se
fim_se
Condição 1
Condição 2
Condição 3 Condição 4
Ação
V V V V Instruções Bloco 1
Conseguimos identificar um padrão lógico de construção em uma estrutura de seleção
encadeada homogênea
8
15
Seleção Encadeada Heterogênea se (condição 1) então
se (condição 2) então <instruções Bloco 1> fim_se
senãose (condição 3) então <instruções Bloco 2> senão se (condição 4) então <instruções Bloco 3 > fim_se
fim_sefim_se
16
Seleção Encadeada Heterogênea se (condição 1) então
se (condição 2) então <instruções Bloco 1> fim_se
senãose (condição 3) então <instruções Bloco 2> senão se (condição 4) então <instruções Bloco 3 > fim_se
fim_sefim_se
Não há como identificar um padrão lógico de construção em uma
estrutura de seleção encadeada heterogênea
Condição 1
Condição 2
Condição 3 Condição 4
Ação
V V - - InstruçõesBloco 1
F - V - InstruçõesBloco 2
F - F V InstruçõesBloco 3
9
17
Seleção de Múltipla Escolha n Permite testar valores discretos e associar
ações
caso <variável> seja <opção 1>: <instruções> seja <opção 2>: <instruções> seja <opção 3>: <instruções>
... senão: <instruções> fim_caso;
18
Seleção de Múltipla Escolha
n É uma alternativa para seleções encadeadas longas:
se (x = v1) então < instruções bloco 1>
senão se (x = v2 ou x = v3) então < instruções bloco 2> senão se (x = v4) então
< instruções bloco 3> senão
< instruções bloco 4> fim_se
fim_se fim_se
...
caso x v1: <instruções bloco 1> v2, v3: <instruções bloco 2> v4: <instruções bloco 3>
senão <instruções bloco 4>
fim_caso;
10
19
Seleção de Múltipla Escolha: Exemplo
n Algoritmo para indicar faixa etária.
q PROGRAMA idade_rotulo; VAR idade: INTEIRO; INÍCIO
escreva (‘Digite sua idade’); leia (idade);
CASO idade 0..3: escreva (‘Bebê'); 4..11: escreva (‘Criança'); 12..17: escreva (‘Jovem'); 18..40: escreva (‘Adulto’); 41..90: escreva (‘Idoso'); SENAO escreva (‘Sobrevivente');
FIM_CASO; FIM.
PROGRAM idade_rotulo; VAR idade: INTEGER; BEGIN
WRITELN ('Digite sua idade'); READLN (idade);
CASE idade OF 0..3: WRITELN (‘Bebê'); 4..11: WRITELN (‘Criança'); 12..17: WRITELN (‘Jovem'); 18..40: WRITELN (‘Adulto’); 41..90: WRITELN (‘Idoso'); ELSE WRITELN (‘Sobrevivente'); END; END.
20
Programando estruturas de decisão
(Estruturas Condicionais)
11
21 Adriano Mauro Cansian 21
O que faz uma estrutura de decisão (2)
n No Pascal, existe três tipos de estrutura de decisão: • O comando IF, que pode ser utilizado de duas
formas: simples ou composto;
• E o comando CASE, que é utilizado para uma decisão seletiva.
• Veremos exemplos…
22 Adriano Mauro Cansian 22
Decisão simples if - then (1)
n A estrutura de decisão simples do Pascal é o if-then, e deve ser utilizada da seguinte forma:
IF <condição> THEN <comando>
n O <comando> só será executado se a <condição> resultar no valor TRUE.
12
23 Adriano Mauro Cansian 23
Decisão simples if - then (2)
n O <comando> pode ser um único comando ou um conjunto de comandos em várias linhas. • Um conjunto de comandos deve ser separados cada
um por ponto-e-vírgula e delimitados por BEGIN e END;
24 Adriano Mauro Cansian 24
Exemplo de decisão simples
EXEMPLO:
Program EXEMPLO_DE_DECISAO_SIMPLES; {Ler um número inteiro, subtrair 10 e exibí-lo se for positivo} Var N : integer; Begin Writeln(‘Entre com valor de N:`);
readln(N); N := N – 10 ; if N > 0 then
begin { inicia se N>0 for verdade } writeln(`O valor resultante de N-10 é positivo`);
writeln(`N é igual a:`, N); end; { fim do begin do “then” } Writeln(‘O programa terminou`); End. { fim do programa }
13
25 Adriano Mauro Cansian 25
Decisão composta if-then-else (1)
n A estrutura de decisão composta do Pascal é o
IF – then - ELSE
(se – então - senão)
Funciona assim: IF <condição> THEN <comando(s)1> ELSE <comando(s)2>
26 Adriano Mauro Cansian 26
Decisão composta if-then-else (1)
IF <condição> THEN <comando(s)1>
ELSE <comando(s)2>
n Neste caso, se a <condição> resultar no valor TRUE, será executado <comando(s)1> e, caso contrário (se a
condição for FALSE), será executado o <comando(s)2>. • <comando1> e <comando2> pode ser um ou vários comandos.
14
27 Adriano Mauro Cansian 27
EXEMPLO:
Program EXEMPLO_DE_DECISAO_composta; {Ler um número inteiro, subtrair 10 e determinar }
{se o resultado é maior que zero ou não } Var N : integer; Begin Writeln(‘Entre com valor de N:`);
readln(N); N := N – 10 ; IF N > 0 THEN
begin { inicia se N>0 for verdade } writeln(`O resultado de N-10 é maior que zero`);
writeln(`O resultado é igual a:`, N); end { fim do begin do “then” } { note que NÃO há o ponto-e-virgula } ELSE begin
writeln(`O resultado de N-10 não é maior que zero`); writeln(`O resultado é igual a:`, N); end; { fim do begin do “else” } { note que há o ponto-e-virgula } Writeln(‘O programa terminou. Adeus`); End. { fim do programa }
28
Exercício:
1. Escreva um programa para colocar em ordem crescente 3 números que foram lidos do teclado (use as variáveis X, Y e Z reais).
2. Escreva um programa que funcione como um simulador de uma calculadora básica de números inteiros .
15
29 Adriano Mauro Cansian 29
Exemplo: Programa para colocar em ordem crescente 3 números lidos do teclado Program Exemplo_3; Var x,y,z : real; Begin ClrScr; Write('Primeiro numero --> '); Readln(x); Write('Segundo numero ---> '); Readln(y); Write('Terceiro numero --> '); Readln(z); Writeln; Writeln; IF (x>=y)THEN If (x>=z) Then IF (y>=z) THEN Writeln(x,' ',y,' ',z) ELSE Writeln(x,' ',z,' ',y) Else Writeln(z,' ',x,' ',y) ELSE If (y>=z) Then If (x>=z) Then Writeln(y,' ',x,' ',z) Else Writeln(y,' ',z,' ',x) Else Writeln(z,' ',y,' ',x); End.
30 Adriano Mauro Cansian 30
Program EXEMPLO_DE_DECISAO_MÚLTIPLA_2; {Simulador de uma calculadora básica de números inteiros} Uses CRT; Var X,Y : integer; OP : char; Begin clrscr; write('Digite os operandos: '); readln(X,Y); write('Digite o operador: '); readln(OP); if OP='+' then writeln(X + Y) else if OP='-' then writeln(X - Y) else if (OP='*') or (OP='x') or (OP='X') then writeln(X * Y) else if OP='/' then writeln(X div Y) else writeln('op.inválida'); readkey;
End.
16
31 Adriano Mauro Cansian 31
Seleção ou decisão múltipla (1)
n Estrutura Case-of n Utilizada quando se deseja executar um
entre vários comandos, dependendo do resultado de uma expressão. • Ou uma entre várias seqüências de comandos.
32 Adriano Mauro Cansian 32
Seleção ou decisão múltipla (2)
n A estrutura de seleção de decisão múltipla do Pascal (CASE-OF) obedece a seguinte sintaxe:
CASE <expressão> OF
<lista-de-constantes-1> : <comando-1>; <lista-de-constantes-2> : <comando-2>;
...
[ELSE <comando-n>] (* optativo *)
END
17
33 Adriano Mauro Cansian 33
Seleção ou decisão múltipla (3)
n A <expressão> deve resultar um tipo escalar (outros tipos que não sejam o REAL e o STRING).
n A <lista-de-constantes-x> deve conter uma ou mais constantes (separadas por vírgula), e devem ser do mesmo tipo da <expressão>.
n O <comando-x> pode ser um comando simples ou composto.
n O resultado de <expressão> é comparado com cada constante da <lista-de-constante> para verificar igualdade.
n Caso a igualdade seja verificada, o <comando> correspondente é executado e a estrutura finalizada.
n Caso nenhuma igualdade seja verificada, o <comando> correspondente ao ELSE (optativo) será executado.
34 Adriano Mauro Cansian 34
EXEMPLO: Program EXEMPLO_DE_DECISAO_MULTIPLA; {Simulador de uma calculadora básica de números inteiros} Uses CRT; Var X,Y : integer; OP : char; Begin clrscr; write('Digite os operandos X e Y: '); readln(X,Y); write('Digite o operador (+,-,*, /) -->: '); readln(OP); case OP of '+' : writeln(‘Soma: ’, X + Y:6:2); '-' : writeln(‘Subtração: ’, X-Y:6:2); '*','x','X' : writeln(‘Multiplica: ‘, X * Y:6:2); '/' : writeln(‘ Divisão:’, X / Y:6:2); else writeln(OP,'é uma operação inválida !'); end {case}; readkey;
End.
18
35 Adriano Mauro Cansian 35
Seleção ou decisão múltipla (4)
n Neste exemplo anterior, a mensagem que será exibida dependerá do conteúdo da variável OP. • Se for igual a uma das constantes especificadas, será
executado o comando WRITELN correspondente.
• Se nenhuma constante for igual ao conteúdo de OP, será executado o WRITELN do ELSE.
n O mesmo programa acima pode ser escrito sem utilizar a estrutura CASE, apenas utilizando IF's aninhados como já foi feito antes.
36
• Até aqui vimos o seguinte:
n Estruturas de Controle de Fluxo:
• Seleção ou Condicional (if) • Seleção de Múltipla Escolha
n Próximo Conteúdo: • Estrutura de Repetição
19
37
Apêndice: Outras instruções úteis em Pascal
38 Adriano Mauro Cansian 38
readkey n Lê uma tecla do teclado, sem que seja necessário
pressionar a tecla ENTER Program Exemplo; Uses CRT; {comando usado para ativar funções } {de entrada e saída do Windows }
Var tecla : char; { define variável tecla como um único caractere }
Begin Write('digite uma tecla ->'); Tecla := readkey; Writeln; writeln('você digitou ',tecla); end.
20
39 Adriano Mauro Cansian 39
Keypressed (1)
n A instrução Keypressed é uma função especial do Turbo Pascal que retorna um valor booleano: • TRUE se uma tecla foi pressionada, ou FALSE caso
contrário (caso nenhuma tecla seja pressionada).
n Ela é uma das maneiras utilizada para detectar teclas pressionadas no teclado.
40 Adriano Mauro Cansian 40
Keypressed (2)
Exemplo Program Exemplo;
Uses CRT; {comando usado para ativar funções } {de entrada e saída do Windows }
Begin
ClrScr;
Write('Pressione uma tecla -> ');
Repeat until Keypressed;
{ repita até que uma tecla seja pressionada }
End.