Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lógica de Programação Aula 3 Estrutura de Controle Prof Carlos Lahoz Baseada no Livro de André Forbellone & Henri Eberspacher, Person, São Paulo, 2005 Estrutura de Controle Para que este conjunto de ações se torne viável deve existir uma lógica de forma a representar como as ações devem ser executadas, chamado de fluxo de execução. Por meio das estruturas básicas de controle do fluxo de execução: •Sequenciação •Seleção e •Repetição e da combinação delas, pode-se criar algoritmos para solucionar qualquer tipo de problema. Estrutura de Controle SEQUENCIAÇÃO O conjunto de ações primitivas será executado em uma sequencia linear de cima para baixo e da esquerda para a direita, isto é, da maneira em que foram escritas. As ações serão seguidas de um ponto e virgula (;) a fim de separar uma ação de outra. Quando é encontrado um (;) deve-se executar o próximo comando da sequencia. Estrutura de Controle SEQUENCIAÇÃO – Exemplo 1: inicio // identificação do inicio do bloco corresponde ao algoritmo // declaração de variaveis inteiro: x, y; // corpo do algoritmo Ação 1; Ação 2; Ação 3; Ação n fim. // fim do algoritmo Estrutura de Controle SEQUENCIAÇÃO Exemplo 2 (media aritmética): Estrutura de Controle SEQUENCIAÇÃO. Exercício: construa um algoritmo que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de combustível, em que são fornecidos a altura e o raio deste cilindro. Sabendo que: A lata de tinta custa R$ 50,00 Cada lata contém 5 litros Cada litro de tinta pinta 3 metros quadrados Dados de entrada: altura (H) e raio (R) Dados de saida: custo (C) e quantidade (QTDE) Sabendo por eng. reversa que: O custo é qtde de latas * R$ 50,00 A quantidade latas é total de litros /5 Area cilindro é area base + area lateral Area base é PI * pot (R,2) Area lateral é altura * comprimento (2 * PI * R * H) Sendo que R (raio) e H (altura) são entradas e PI é constante 3,1415 Estrutura de Controle SEQUENCIAÇÃO. Exercício: construa um algoritmo que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de combustível, em que são fornecidos a altura e o raio deste cilindro. Estrutura de Controle SELEÇÃO Permite a escolha de um grupo de ações (bloco) a ser executado quando determinadas condições representadas por expressões lógicas ou relacionais são ou não satisfeitas. Seleção simples Seleção composta Seleção encadeada Estrutura de Controle SELEÇÃO SIMPLES Quando precisamos testar uma certa condição antes de executar uma ação, usamos uma seleção simples: se <condição> então comando; //comando unico fimse; Onde <condição> é uma expressão logica que, quando inspecionada, pode gerar um resultado Falso ou Verdadeiro Estrutura de Controle SELEÇÃO SIMPLES se <condição> então inicio // inicio do bloco Verdade C1; // sequencia de comandos C2; Cn; fim; // fim do bloco Verdade fimse; Se <condição> for verdadeira, então sai executando o bloco Verdade (sequencia C1, C2, .., Cn), caso contrario, nada é executado (fimse). Estrutura de Controle SELEÇÃO SIMPLES Exemplo da contabilizacao de 4 notas anuais do aluno e seleção de resultado (aprovado se media igual ou superior a 7) Estrutura de Controle SELEÇÃO COMPOSTA Situações em que duas alternativas dependem de uma mesma condição: uma de condição Verdade, outra de Falso. se <condição> então inicio // inicio do bloco Verdade C1; // sequencia de comandos C2; Cn; fim; // fim do bloco Verdade senão C; // ação da condição de Falso fimse; Estrutura de Controle SELEÇÃO COMPOSTA Situação com bloco V e bloco F se <condição> então inicio // inicio do bloco Verdade C1; // sequencia de comandos C2; fim; // fim do bloco Verdade senão inicio // inicio do bloco Falso C1; // sequencia comandos C2; fim // fim do bloco Falso fimse; Estrutura de Controle SELEÇÃO ENCADEADA Quando pela necessidade do processamento são agrupadas várias seleções. Normalmente ocorre quando uma ação ou bloco deve ser executado se um grande conjunto de possibilidades ou combinações de situações forem satisfeitos. Dois tipos: •Seleção encadeada heterogênea •Seleção encadeada homogênea Estrutura de Controle Estruturas de CONTROLE HETEROGENEA Quando não conseguimos identificar um padrão lógico de construção de uma estrutura de seleção encadeada. Seleção encadeada homogênea: Quando conseguimos identificar um padrão lógico de construção de uma estrutura de seleção encadeada Estrutura de Controle Estruturas de CONTROLE HETEROGENEA se <condição 1> então se <condição 2> então inicio // inicio do bloco V de 1 C1; C2; Cn // sequencia comandos fim // fim do bloco V de 1 fimse; // fim condição 2 senão se <condição 3> então inicio // inicio bloco V de 2 C1; C2; // sequencia comandos fim // fim do bloco V de 2 senão se <condição 4> então se < condição 5>; então C2; //comando V fimse; // fim condição 5 senão C1; // comando F fimse; //fim condição 4 fimse; //fim condição 3 fimse; //fim condição 1 Tabela Verdade Condição Ação 1 2 3 4 5 executada _________________________ V V - - - bloco V 1 F - V - - bloco V 2 F - F V V comando V F - F F - comando F Estrutura de Controle Exercicio Dado tres valores A, B e C, verificar se eles podem ser os comprimentos dos lados de um triangulo, se forem, verificar se compõem um triangulo equilátero, isósceles ou escaleno. Informar se não compuserem nenhum triangulo. Dados de entrada: três lados de um suposto triangulo (A, B, C) Dados de saída: mensagens: não compõem triangulo, equilátero, isósceles, escaleno. Estrutura de Controle Exercicio (cont) O que é Triangulo? Triangulo equilátero? Triangulo isósceles? Triangulo escaleno? R: Figura geométrica fechada de três lados, em que cada um é menor que a soma dos outros dois. R: Um triangulo com três lados iguais R: Um triangulo com dois lados iguais. R: Um triangulo com dois lados diferentes. Estrutura de Controle Exercicio (cont) TABELA VERDADE para solução do problema É triangulo? É equilátero? É isósceles? É escaleno? Ações V V F F “EQUILÁTERO” V F V - “ISÓSCELES” V F F V “ESCALENO” F - - - “NÃO É TRIANGULO” Estrutura de Controle Exercicio (cont) algoritmo ”triangulo" //Dados 3 valores A, B e C, verificar se // eles podem ser um triângulo e, //se forem, verificar qual tipo: equilátero, //isósceles ou escaleno // ou se não são nenhum //triângulo. var A, B, C: real validade: logico inicio escreva ("Insira o lado 1 do triângulo: ") leia (A) escreva ("Insira o lado 2 do triângulo: ") leia (B) escreva ("Insira o lado 3 do triângulo: ") leia (C) se (A < (B + C)) e (B < (A + C)) e (C < (A + B)) entao se (A = B) e (B = C) então escreva ("Triângulo equilátero") senao se (A = B) xou (A = C) xou (B = C) então escreva ("Triângulo isóceles") senao escreva ("Triângulo escaleno") fimse fimse senao escreva ("Não é um triângulo") fimse fimalgoritmo Estrutura de Controle Exercicio (cont) se (A < (B + C)) e (B < (A + C)) e (C < (lA + B)) entao se (A = B) e (B = C) entao escreva ("Triângulo equilátero") senao se (A = B) xou (A = C) xou (B = C) então escreva ("Triângulo isóceles") senao escreva ("Triângulo escaleno") fimse fimsesenao escreva ("Não é um triângulo") fimse fimalgoritmo Estrutura de Controle Estruturas de CONTROLE HOMOGENEA Esta construção segue um padrão. Após cada então existe um se, não existe senão. O comando W só será executado quando todas as condições forem ao mesmo tempo verdadeiras. se <condição 1> então se <condição 2> então se <condição 3> então se <condição 4> entao W; fimse; //fim condição 4 fimse; //fim condição 3 fimse; //fim condição 2 fimse; //fim condição 2 Seria o mesmo que escrever se ( <condição 1> e <condição 2> e <condição 3> e <condição 4>) entao W; fimse Tabela Verdade Condição Ação 1 2 3 4 executada V V V V - W Estrutura de Controle Estruturas de CONTROLE HOMOGENEA Se senao se: Vamos supor que um determinado algoritmo uma variavel X possa assumir apenas quatro valores, V1, V2, V3 e V4, e que exista um comando diferente que será executado para cada valor armazenado em X. Teremos a seguinte situação: se (X=V1) então C1; fimse; se (X=V2) então C2; fimse; se (X=V3) então C3; fimse; se (X=V4) então C4; fimse; Estrutura de Controle Estruturas de CONTROLE HOMOGENEA Se senao se: somente um, e apenas um, comando pode ser executado – situação excludente (excludente). Não se trata de uma estrutura encadeada, pois as seleções não estão interligadas. Por isso, todas as condições (X- Vn) serão avaliadas e ocorrerão testes desnecessários. Para diminuir a quantidade de testes, é possivel transformar em uma seleção encadeada. se (X=V1) então C1; senão se (X=V2) então C2; senao se (X=V3) então C3; senao se (X=V4) então C4; fimse; fimse; fimse; fimse; Estrutura de Controle Estruturas de CONTROLE HOMOGENEA Se senao se: nesta estrutura, o numero médio de casos de teste a serem executados foi reduzido. Se o conteudo de X for igual a V2, serã executados apenas dois testes(x-v1) e (x-v2) e um comando (C2), enquanto que na estrutura anterior serão inspecionados quatro condições, embora um único comando (C2) tenha sido executado. Padrão de construção: após cada senao existe um se, e depois do entao existe uma ação. Estrutura de Controle Estruturas de controle homogenea Como a situação da MULTIPLA ESCOLHA é muito frequente em algoritmos que dependem de alternativas, pode-se utilizar também a construção de multipla escolha. escolha X caso V1:C1; caso V2, C2; caso V3: C3; caso V4: C4; fimescolha; No exemplo , caso o conteúdo da variável X seja igual ao valor Vn então, o comando Cn será executado, caso contrário, serão inspecionados os outros casos até se encontrar uma igualdade ou terminarem os casos. Estrutura de Controle Estruturas de controle homogenea MULTIPLA ESCOLHA: para executar um comando que possui mais de um valor em que verifica sua necessidade, agrupamos todos esses valores em um único caso. E para executar um comando de exceção, utiliza-se o comando caso contrário. No proximo slide um exemplo de estrutura de seleção encadeada homogênea e outro de comando de exceção caso contrario Estrutura de Controle Múltipla Escolha: escolha X caso V1:C1; caso V2, V3: C2; caso V4: C3; caso V5: C4; casocontrario C5; fimescolha; se (X=V1) então C1; senão se (X=V2) então C2; senao se (X=V3) então C2; senao se (X=V4) então C3; senao se (X=V5) então C4; senao C5; fimse; fimse; fimse; fimse; fimse; seleção encadeada homogênea comando de exceção caso contrário. Estrutura de Controle Exercicio: Construa um algoritmo que tendo como dados de entrada o preço de um produto e seu codigo de origem, mostre o preço junto de sua procedência. Caso o codigo não seja nenhum dos especificados, o produto deve ser encarado como importado. Cod Procedencia 1 Sul 2 Norte 3 Leste 4 Oeste 5 e 6 Nordeste 7,8 e 9 Sudeste 10 -20 Centro-Oeste 25-30 Nordeste Estrutura de Controle Exercicio: Algoritmo Produto, preço e procedência. Estrutura de Controle Exercicio: Dado o algoritmo a seguir: Que comandos serão executados se a) A=V; B=V; C=F b) A=F; B=V; C=F c) A=F; B=V; C=V Quais são os valores de A, B, C para que: d) somente os commandos C5 e C6 sejam executados? e)somente o commando C6 seja executado? C1, C6 C3, C4, C5, C6 C2, C5, C6 A=F; B=F; C =não importa não existe combinação para que só o C6 seja executado Estrutura de Controle Exercicio: Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes formulas: homens: (72,7 * h) – 58. mulheres (62,1 * h) - 44.7 Estrutura de Controle Exercicio: Escreva um algoritmo que leia o codigo de um determinado produto e mostre a sua classificação, Codigo classificação 1 Alimento não perecível 2,3 ou 4 alimento perecível 5 e 6 vestuário 7 higiene pessoal 8 a 15 limpeza Outro cod inválido Estrutura de Controle Estrutura de REPETIÇÃO Estrutura de controle do fluxo de execução que permite repetir diversas vezes um mesmo trecho do algoritmo. Laços de repetição também são conhecidos como loops ou looping. Lembram uma execução finita em circulos, que depois segue seu curso normal. Estrutura de Controle REPETIÇÃO COM TESTE NO INICIO Verifica antes de cada execução se é “permitido” executar o mesmo trecho. Para executar a repetição com teste de inicio, utilizamos a estrutura enquanto que permite que um bloco ou uma ação primitiva seja repetida enquanto uma determinada <condição> for verdadeira. enquanto <condição> faça C1; C2; . Cn; fimenquanto; Estrutura de Controle REPETIÇÃO COM TESTE NO INICIO Quando o resultado da <condição> for Falso, o comando de repetição é abandonado. Se já da primeira vez o resultado é Falso, os comandos não são executados nenhuma vez, o que representa característica principal deste modelo de repetição. Muitas vezes, para se alterar a <condição>, é usado o recurso de um contador. O contador é uma variável com um dado valor inicial, o qual é incrementado a cada ciclo de repetição. Estrutura de Controle REPETIÇÃO COM TESTE NO INICIO Incrementar significa somar um valor (geralmente) constante a uma mesma variável. Exemplo: Inteiro: CON; // declaração do contador CON 0; // inicialização CON CON + 1 //incremento de valor Estrutura de Controle REPETIÇÃO COM TESTE NO INICIO Exemplo Incrementa- ção Estrutura de Controle REPETIÇÃO COM TESTE NO INICIO Pode-se usar também uma variável de acumulação, o acumulador. O processo do acumulador é simular ao processo do contador. A única diferença é que acumulador o valor adicionado pode variar. No exemplo anterior, se quiser saber qual seria a média anual (MA) dos 50 alunos matriculados, seria adequado usar um acumulador para gravar o valor total das MAs somadas. Estrutura de Controle REPETIÇÃO COM TESTE NO INICIO Exemplo de acumulador Estrutura de Controle REPETIÇÃO COM QUANTIDADE INDETERMINADA Pode-se usar também laços de repetição para quantidades indeterminadas de vezes. É necessário então, outro critério de parade . Pode ser feito com um valor pré-definido como finalizador. Estrutura de Controle REPETIÇÃO COM QUANTIDADE INDETERMINADA Estrutura de Controle Exercicio de REPETIÇÃO (qtdade INDETERMINADA) Construa um algoritmo que calcule a media aritmética de um conjunto de numeros pares que forem fornecidos pelos usuários.O valor da finalização será a entrada do número “0”. Observe que nada impede que o usuário forneça quanto números impares quiser, desde que não sejam acumulados. Estrutura de Controle Exercicio de REPETIÇÃO (qtdade INDETERMINADA) Estrutura de Controle REPETIÇÃO COM TESTE FINAL Utilizamos a estrutura repita que permite que um bloco ou ação seja repetida até que uma determinada condição seja Verdadeira. Modelo genérico: Pela sintaxe da estrutura, observa-se que que o bloco (C1, C2, Cn)é executado pelo menos uma vez, independente da validade da condição. repita C1; C2; . Cn; ate < condição> ; Estrutura de Controle REPETIÇÃO COM TESTE FINAL Exercicio: Reescreva o algoritmo da media anual dos alunos e calcule a media geral da turma, utilizando a estrutura de repetição com teste no final. Estrutura de Controle REPETIÇÃO COM TESTE FINAL Exercicio: Imagine uma brincadeira entre dois colegas, no qual um “pensa” um número e o outro tenta adivinhar qual é, até acertar. Como dica, a cada tentativa, é dito se o numero sugerido é maior ou menor do que o primeiro pensou. Elabore um algoritmo que leia o numero imaginado e os “chutes” e ao final, mostre quantas tentativas foram feitas para descobrir o numero. Dica: Use o comando “limpatela” para não ficar mostrando o valor “pensado”. Estrutura de Controle REPETIÇÃO COM TESTE FINAL Exercicio: “chute” de número //limpe a tela (limpatela) Estrutura de Controle REPETIÇÃO COM VARIAVEL DE CONTROLE Ela é usada para os casos em que é dificil de determinar o numero de vezes em que o bloco será executado. Quando sabemos quantas vezes ele será executado usamos a estrutura do enquanto (enquanto uma condição for satisfeita) e repita, até que uma condição seja satisfeita. A estrutura para é diferente, já que sempre repete a execução do bloco, pois não prevê uma condição e possui limites fixos. Estrutura de Controle REPETIÇÃO COM VARIAVEL DE CONTROLE V é a variavel de controle vi é o valor inicial da variável V vf é o valor final da variável V p é o valor do incremento dado a variavel V para V de vi até vf passo p faça C1; C2; . Cn; fimpara Estrutura de Controle REPETIÇÃO COM VARIAVEL DE CONTROLE Exemplo da media de notas da turma de alunos Estrutura de Controle REPETIÇÃO COM VARIAVEL DE CONTROLE Exercicio: Elabore um algoritmo que efetue a soma de todos os números impares que são multiplos de 3 e que se encontram no conjunto dos números de 1 até 50 Estrutura de Controle REPETIÇÃO COM VARIÁVEL DE CONTROLE Obsservações sobre esta estrutura: Nem sempre a variável de controle atinge o valor final estabelecido. Isto pode ocorrer quando é utilizado um passo maior que 1 e, esse caso, a repetição termina quando a variável de controle for ultrapassar o valor final. Exemplo: para i de 1 até 10 , passo 2; a variavel i vai chegar até 9. O laço de execução será executado pelo menos uma vez, porque no mínimo ocorrerá a atribuição do valor inicial para a variável de controle. Exemplo: para i de 1 até 10 , passo 10; a variavel i vai chegar até 1. Estrutura de Controle REPETIÇÃO COM VARIÁVEL DE CONTROLE Exercicio: Elabore um algoritmo que simule uma contagem regressiva de 10 minutos, iu seja, mostre 10:00, e então 9:59, 9:58…9:00, 8:58…Até 0:00 Estrutura de Controle REPETIÇÃO COM VARIAVEL DE CONTROLE Exercicio: comentário. O passo utilizado foi negativo (-1), significando que cada iteração dos laços de repetição as variáveis de controle MIN e SEG estarão sendo decrementadas de 1. O valor do passo é unitário e negativo. Para mostrar a contagem regressiva utiliza-se dois laços de repetição, sendo que o mais interno, responsável pelos segundos, completa um conjunto de 60 iterações para cada minuto, que posrsua vez, executa apenas 10 iterações. Estrutura de Controle COMPARAÇÃO ENTRE ESTRUTURAS DE REPETIÇÃO Todas as estruturas tem o papel de criar laços de repetição dentro de um algoritmo. Convém conhecer bem as caracteristicas de cada uma e o tipo de problema que se quer resolver, para melhor utilizá-las. Estrutura de Controle ESTRUTURAS DE REPETIÇÃO Exercicio: Elabore algoritmos com as tres estruturas de repetição para imprimir a tabuada do número 5. utilizando enquanto utilizando repita utilizando para Estrutura de Controle ESTRUTURAS DE REPETIÇÃO Exercicio: Sendo H = 1+1/2+1/3+1/4+..+1/N, escreve um algoritmo para gerar o numero H. O numero N é fornecido pelo usuario // trocar H por N
Compartilhar