Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato-...

41
Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC- Rio e Denise Guliato- UFU

Transcript of Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato-...

Page 1: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Estruturas de DadosMódulo 3 – Controle de Fluxo

Marco A. Casanova - PUC-Rio

e Denise Guliato- UFU

Page 2: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tópicos

•Seleção – Tomada de decisão

•Repetição

Page 3: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Seleção – Tomada de Decisão

A seleção permite escolher entre duas ou mais alternativas: Isto nos permite tomar uma decisão:

- two-way selection;

- multiway selection

Page 4: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Two-way selection

condição de decisão

ação para false ação para true

False (zero) True (!zero)

Page 5: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a two-way selection

Page 6: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a two way selection

Page 7: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a two way decision Expressão Condicional

Page 8: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a two-way selection

Exercício:

Escreva uma programa que imprima os seguintes dizeres, de acordo com a temperatura lida como entrada.

Se temperatura for maior ou igual que 300 C, então ‘bom para ir ao clube’

Se temperatura menor que 300 C, então ‘bom para estudar’

Page 9: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a two-way selection

#include <stdio.h>

main()

{

int temp;

printf(“entre com a temperatura: “);

scanf(“%d”, &temp);

if ( temp >= 30)

printf(“ \n Bom para ir ao clube”);

else printf(“\n Bom para estudar”);

}

Page 10: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a multiway selection

• escolhe entre várias alternativas:

Expressão multiway

Valor 1Valor 2

Valor 3

Valor 4

ação valor 1

ação valor 2

ação valor 3

ação valor 4

Page 11: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a multiway selection

O comando switch funciona apenas quando a expressão nas alternativas de seleção (label case) são constantes do tipo inteiro ou caractere.

Page 12: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a multiway selection

Page 13: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Exercício

Escreva um programa que leia uma expressão aritmética simples e imprime o resultado da sua avaliação.

Operadores: +, - , *, /

Domínio dos operandos: números reais

Page 14: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Exercício

Escreva um programa que imprima o conceito de um aluno, dada a sua media final (números inteiros no intervalo 0 – 100). Para escrever o programa, analise score = media/10:

Conceito A: score = 9 ou 10; (media >= 90)

Conceito B: score = 8; (80 <= media < 70)

Conceito C: score = 7; (70 <= media < 60)

Conceito D: score = 6; (60 <= media < 70)

Conceito F: score = 5, 4, 3, 2, 1, 0. (media < 60)

Page 15: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a multiway selection

• Comando “else-if”

- usado quando se quer tomar uma decisão com base em múltiplas alternativas cujos valores não são constantes inteiras ou caracteres.

If (expr1)

{bloco de comandos 1}

else if (expr2)

{bloco de comandos 2}

else {bloco de comandos 3}

Page 16: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Tomada de Decisão: a multiway selection

Exercício:

Reescreva o programa para imprimir o conceito de um aluno, considerando que agora a media geral é um numero real.

Conceito A: media >= 90;

Conceito B: media >= 80;

Conceito C: media >=70;

Conceito D: media >= 6;

Conceito F: media nos demais casos.

Page 17: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Exercícios

1) Escreva um programa que implemente a calculadora usando o comando if-else.

2) Escreva um programa, que dados 3 números inteiros, imprima o menor valor;

3) Escreva um programa que dado um numero entre 0 e 6, imprima o correspondente dia da semana. Assuma que o primeiro dia da semana (0) é domingo.

Page 18: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Repetição

O real poder dos computadores está na sua habilidade para repetir uma operação ou uma serie de operações muitas vezes.

Este repetição chamada laços (loopings) é um dos conceitos básicos da programação estruturada.

Page 19: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Conceito de um laço

uma ação ou umconjunto de ações

Neste exemplo o laço nunca para ( loop infinito)

Queremos um laço que termine quando o trabalho é feito condição que controla o laço.

Page 20: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-teste• No laço pré-teste, a condição é verificada

antes do inicio do laço e a cada iteração

Se a condição é verdadeira o código é executado,

Se a condição é falsa, o laço termina.

Page 21: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-teste

No laço pós-teste as ações são executadas pelo menos uma vez, então a condição que controla o laço é avaliada.

Se a condição é, o laço é repetido,

Se condição é falsa, o laço termina.

Page 22: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-testeExemplo: Suponha que você queira fazer

exercícios de levantamento de peso. Você avaliação as suas condições com pré-teste ou com pós-teste.

Energia ?

Levante peso

Energia?

false

true

Levante peso

true

false

(a) pré-teste (b) pós-teste

Page 23: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-teste

No pré-teste, as ações podem ser executadas 0, 1 ou mais vezes;

No pós-teste, as ações podem ser executadas uma ou mais vezes.

Page 24: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-testeInicialização: feita antes da primeira execução do corpo do

laço;

Atualização: modifica a condição de controle do laço, movendo de true para false.

Page 25: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-teste

Os conceitos de inicialização e atualização podem ser aplicados ao problema de levantamento de peso

Page 26: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Laços pré-teste e pós-testeOs laços podem ser controlados por evento:

Page 27: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Os laços podem ser controlados por contador:

Laços pré-teste e pós-teste

Page 28: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Repetição: whileWhile é um laço pré-teste. Usa uma expressão para controlar o laço.

Page 29: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Repetições

Page 30: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Exercício usando while

1) Escreva um programa que calcule o fatorial de um numero inteiro não negativo usando while.

Page 31: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Solução exercício 2

Page 32: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Repetição : for (pré-teste)

Page 33: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Calculo do fatorial usando for

Page 34: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Calculo do fatorial usando for

Page 35: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Repetição : do-while (pós-teste)

Page 36: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Calculo do fatorial usando do-while

Page 37: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Exercicio: O que faz este programa???

Page 38: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Comando continue

Page 39: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

O comando continue

Page 40: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.

Exercícios

1) Escreva uma programa que calcule a media N números reais lidos pelo teclado. O valor de N é dado pelo usuario. Imprima os números lidos e a média calculada:

2) Modifique o exercicio anterior de tal forma a não fornecer previamente o numero de elementos a serem lidos.

Page 41: Estruturas de Dados Módulo 3 – Controle de Fluxo Marco A. Casanova - PUC-Rio e Denise Guliato- UFU.