Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1....

20
1 1 Algoritmos e Programaçã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)

Transcript of Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1....

Page 1: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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)

Page 2: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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).

Page 3: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 4: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 5: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 6: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 7: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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

Page 8: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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

Page 9: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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;

Page 10: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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)

Page 11: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 12: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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 }

Page 13: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 14: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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 .

Page 15: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 16: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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

Page 17: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 18: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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

Page 19: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.

Page 20: Linguagem Computacional - angel.acmesecurity.orgadriano/aulas/lc/2016/5-estruturas... · 2 3 1. Estrutura de Controle: Seleção n Permite escolher uma ou mais ações. • Determina

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.