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 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 Two-way selection False (zero) True (!zero) condição de decisão ação para false ação para true Tomada de Decisão: a two-way selection Tomada de Decisão: a two way selection Tomada de Decisão: a two way decision Expressão Condicional 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’ 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”); } Tomada de Decisão: a multiway selection • escolhe entre várias alternativas: Expressão multiway Valor 1 ação valor 1 Valor 4 Valor 2 ação valor 2 Valor 3 ação valor 3 ação valor 4 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. Tomada de Decisão: a multiway selection 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 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) 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} 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. 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. 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. Conceito de um laço uma ação ou um conjunto 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. 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. 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. Laços pré-teste e pós-teste Exemplo: 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. Levante peso false Energia ? true Levante peso true Energia? false (a) pré-teste (b) pós-teste 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. Laços pré-teste e pós-teste Inicializaçã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. 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 Laços pré-teste e pós-teste Os laços podem ser controlados por evento: Laços pré-teste e pós-teste Os laços podem ser controlados por contador: Repetição: while While é um laço pré-teste. Usa uma expressão para controlar o laço. Repetições Exercício usando while 1) Escreva um programa que calcule o fatorial de um numero inteiro não negativo usando while. Solução exercício 2 Repetição : for (pré-teste) Calculo do fatorial usando for Calculo do fatorial usando for Repetição : do-while (pós-teste) Calculo do fatorial usando do-while Exercicio: O que faz este programa??? Comando continue O comando continue 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.