estruturas sequenciais e condicionais -...

29
Estruturas sequenciais e condicionais IF61A/ IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná

Upload: lyhanh

Post on 13-Nov-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Estruturas sequenciais e

condicionais IF61A/ IF71A - Computação 1

Prof. Leonelo Almeida

Universidade Tecnológica Federal do Paraná

Page 2: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Aula passada

• Introdução à computação

• Algoritmos

▫ Variáveis

▫ Operadores

▫ Expressões

Page 3: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Agenda de hoje

• Estruturas de controle

▫ Estruturas sequenciais

▫ Estruturas condicionais (ou de decisão)

▫ Estruturas de repetição

Page 4: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Estruturas de controle

• Estabelecem os passos que devem ser executados e a ordem deles

• Definem se um comando deve ser executado ou não

• Definem se um comando deve ser executado repetidamente

Page 5: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Exemplo 1. Nome: obterMenorValor

2. início

3. inteiro: MenorValor, ValorLido;

4.

5. imprima(“Informe o valor.”);

6. leia (ValorLido);

7. MenorValor <- ValorLido;

8.

9. enquanto ValorLido <> -1 faça

10. se ValorLido < MenorValor então

11. MenorValor <- ValorLido;

12. fim se

13. leia(ValorLido);

14. fim enquanto

15.

16. imprima(“O menor valor é ”, MenorValor);

17.fim

Usa-se “;” ao final de cada comando.

Ordem de execução.

Page 6: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Exemplo 1. Nome: obterMenorValor

2. início

3. inteiro: MenorValor, ValorLido;

4.

5. imprima(“Informe o valor.”);

6. leia (ValorLido);

7. MenorValor <- ValorLido;

8.

9. enquanto ValorLido <> -1 faça

10. se ValorLido < MenorValor então

11. MenorValor <- ValorLido;

12. fim se

13. leia(ValorLido);

14. fim enquanto

15.

16. imprima(“O menor valor é ”, MenorValor);

17.fim

Usa-se “;” ao final de cada comando.

Não se usa “;” ao final de estruturas.

Ordem de execução.

Page 7: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Exemplo 1. Nome: obterMenorValor

2. início

3. inteiro: MenorValor, ValorLido;

4.

5. imprima(“Informe o valor.”);

6. leia (ValorLido);

7. MenorValor <- ValorLido;

8.

9. enquanto ValorLido <> -1 faça

10. se ValorLido < MenorValor então

11. MenorValor <- ValorLido;

12. fim se

13. leia(ValorLido);

14. fim enquanto

15.

16. imprima(“O menor valor é ”, MenorValor);

17.fim

Esta é uma estrutura

condicional (ou de decisão)

Essa atribuição somente é executada caso a condição da

estrutura seja verdadeira.

Page 8: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Exemplo 1. Nome: obterMenorValor

2. início

3. inteiro: MenorValor, ValorLido;

4.

5. imprima(“Informe o valor.”);

6. leia (ValorLido);

7. MenorValor <- ValorLido;

8.

9. enquanto ValorLido <> -1 faça

10. se ValorLido < MenorValor então

11. MenorValor <- ValorLido;

12. fim se

13. leia(ValorLido);

14. fim enquanto

15.

16. imprima(“O menor valor é ”, MenorValor);

17.fim

Esta é uma estrutura de

repetição

Esse bloco somente é executado caso a

condição da estrutura seja verdadeira.

Page 9: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Estruturas condicionais (ou de decisão)

• Podem ser usadas de diversas maneiras:

▫ Simples

▫ Composta

▫ Encadeada

Homogênea

Heterogênea

▫ Múltipla escolha

Page 10: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Simples

• Estrutura

se ( condição for verdadeira ) então

comando ou {bloco de comandos}

fim se

• Exemplo

leia(A);

se (A > 0) então

imprima(“OK”);

fim se

Page 11: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Composta

• Estrutura

se ( condição for verdadeira ) então

comando ou {bloco de comandos}

senão

comando ou {bloco de comandos}

fim se

• Exemplo

leia(A);

se (A > 0) então

imprima(“OK”);

senão

imprima(“Erro”);

fim se

Page 12: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade

• O algoritmo a seguir calcula as raízes de uma equação do 2o. grau, sendo A,B, e C fornecidos pelo usuário :

início

real : A, B, C, R1, R2;

imprima(“Forneça os coeficientes da equação de 2º grau”);

leia(A,B,C);

R1 <-(-B+(raiz(B**2 - 4*A*C)))/(2*A);

R2 <-(-B-(raiz(B**2 - 4*A*C)))/(2*A);

imprima(“Coef. 1: ”, R1, “Coef. 2: ”, R2);

fim

• Refazer o algoritmo acima de modo a imprimir mensagem de erro no caso de raiz quadrada de número negativo

Page 13: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada

• Pode ser:

▫ Homogênea

▫ Heterogênea

Page 14: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada homogênea

• Formada por condições simples

se ( condição1 for V ) então

se ( condição2 for V ) então

...

se ( condiçãoN for V ) então

comando

{ou bloco de comandos};

fim se

fim se

fim se Quando o comando

será executado?

Page 15: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada homogênea

• É equivalente a:

se ( condição1 for V ) e ( condição2 for V )

e ... e ( condiçãoN for V ) então

comando

{ou bloco de comandos};

fim se

Page 16: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada homogênea

• Formada por condições compostas

se ( condição1 for V ) então

comando1 {ou bloco de comandos};

senão

se ( condição2 for V ) então

...

senão

se ( condiçãoN for V ) então

comandoN {ou bloco de comandos};

senão

comandoM {ou bloco de comandos};

fim se

fim se

fim se

Quando o comandoN será executado?

Page 17: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade

• O algoritmo a seguir calcula a média final de 3 parciais fornecidas pelo usuário

início

real : P1, P2, P3,MF;

leia(P1,P2,P3);

MF <-(P1+P2+P3)/3.0;

imprima(MF);

se MF >= 7.0 então

imprima(“Aprovado”);

fim se

fim

• Refazer o algoritmo acima para a regra de aprovação, exame ou reprovação usada nesta universidade

Page 18: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada

heterogênea

se <Condição1 forV> então

se <Condição2 for V> então

{inicio do bloco verdade A}

C1;

...

Cn;

fim se

senão

se <Condição3 forV> então

{inicio do bloco verdade B}

C1;

...

Cn;

senão

se <Condição4 for V> então

se <Condição 5=V> então

ComandoX;

fim se

senão

Comando Y;

fim se

fim se

fim se

Page 19: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada

heterogênea

se <Condição1 forV> então

se <Condição2 for V> então

{inicio do bloco verdade A}

C1;

...

Cn;

fim se

senão

se <Condição3 forV> então

{inicio do bloco verdade B}

C1;

...

Cn;

senão

se <Condição4 for V> então

se <Condição 5=V> então

ComandoX;

fim se

senão

Comando Y;

fim se

fim se

fim se

Page 20: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Encadeada

heterogênea

se <Condição1 forV> então

se <Condição2 for V> então

{inicio do bloco verdade A}

C1;

...

Cn;

fim se

senão

se <Condição3 forV> então

{inicio do bloco verdade B}

C1;

...

Cn;

senão

se <Condição4 for V> então

se <Condição 5=V> então

ComandoX;

fim se

senão

Comando Y;

fim se

fim se

fim se

Quando o bloco A é executado?

Quando o bloco B é executado?

Quando o comando X é executado?

Page 21: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade • Suponha o algoritmo

início

lógico: A,B,C;

se A então

C1;

senão

se B então

se C então

C2;

senão

C3;

C4;

fim se

fim se

C5;

fim se

C6;

fim

Quais os comandos executados considerando-se: i. AV; BV; CF; ii. AF; BV; CF; iii. AF; BV; CV; iv. Quais valores de A, B e C

para que somente o comando C6 seja executado?

Page 22: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade

• Elabore um algoritmo para o cálculo do total de latas de tinta necessárias para se pintar um muro considerando-se as seguintes informações:

▫ O tamanho do muro a ser pintado é fornecido

pelo usuário. ▫ 1 litro de tinta é suficiente para se pintar R m2

do muro , onde o valor de R (rendimento) também é fornecido pelo usuário

▫ 1 lata contém 5 litros de tinta ▫ O total de latas deve ser um valor inteiro

Page 23: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Múltipla escolha

• Estrutura

escolha (variável):

caso E1:

Comando1; {ou bloco de comandos}

caso E2:

Comando2; {ou bloco de comandos}

...

caso EM:

ComandoN; {ou bloco de comandos}

caso contrário:

ComandoM; {ou bloco de comandos}

fim escolha

Page 24: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Múltipla escolha – exemplo 1 início

caractere: op;

leia(op);

escolha(op)

caso ‘c’ :

imprima(“copiando arquivo”);

caso ‘a’:

imprima(“apagando arquivo”);

caso ‘d’:

imprima(“criando diretório”);

caso ‘f’:

imprima(“formatando disco”);

caso contrário:

imprima(“saindo do programa”);

fim escolha

fim

Page 25: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Múltipla escolha – exemplo 2

início

inteiro: numA, numB;

leia(numA);

escolha(numA)

caso 10 :

numB <- numA;

caso 20:

numB <- numA^2;

caso 30:

numB <- numA^3;

caso contrário:

imprima(“Erro”);

fim escolha

fim

Page 26: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade

• Considere a tabela de produtos disponíveis do estoque e uma loja:

• continua no próximo slide ...

Código Nome Preço (R$) Quantidade

A Lâmpada 60W 1.20 7

B Lâmpada 100W 2.50 5

C Reator de partida lenta 59.00 3

D Reator de partida rápida 124.00 2

Page 27: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade inicio

caractere codigo;

imprima(“Forneça o código do produto (de A a D)”);

leia(codigo);

se codigo = ‘A’

imprima(“Lâmpada 60 W. Valor: ”, 1.2*7);

senão

se codigo = ‘B’

imprima(“Lâmpada 100 W. Valor: ”, 2.5*5);

senão

se codigo = ‘C’

imprima(“Reator de partida lenta. Valor: ”, 59*3);

senão

se codigo = ‘D’

imprima(“Reator de partida rápida. Valor: ”, 124*2);

senão

imprima(“Produto não disponível no estoque”);

fim se

fim se

fim se

fim se

fim

O algoritmo imprime o nome e o preço total de cada produto disponível conforme o código fornecido pelo usuário:

Modifique o algoritmo anterior de modo a utilizar o comando escolha.

Page 28: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade

• Construa um algoritmo que, tendo como dados de entrada o preço de um produto e o seu código, imprima a sua origem e o preço final do produto, considerando o frete para transportá-lo. Caso o código não seja nenhum dos especificados, o produto deve ser encarado como importado.

• Tabela de frete no próximo slide ...

Page 29: Estruturas sequenciais e condicionais - DAINFdainf.ct.utfpr.edu.br/~leonelo/cursos/if71a-s83-2015-02/algoritmos... · Simples •Estrutura se ( condição for verdadeira ) então

Atividade

Código Origem Frete

1 Centro Oeste 10% do preço

2 Norte 40% do preço

3 ou 4 Nordeste 30% do preço

5 ou 6 Sul 40% do preço

10 a 20 Sudeste 20% do preço

Outros IMPORTADO 200% do preço