Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Lógica de Programação I Unidade 02 Estruturas Condicionais Compostas Prof. Rogério Napoleão Júnior • Testa uma condição e, caso ela seja verdadeira, executa um bloco de comandos, senão, executa outro bloco • Sintaxe em pseudocódigo Se (<expressão lógica>) então <sequência de comandos 1> Senão <sequência de comandos 2> Fim_se Estrutura Condicional Composta Algoritmo parOuImpar1 Var numero, resto: inteiro Inicio leia(numero) resto ← numero / 2 resto ← numero – (resto * 2) Se (resto = 0) então escreva(“O número é par”) Senão escreva(“O número é ímpar”) Fim_se Fim Exemplo – Versão 1 Algoritmo parOuImpar2 Var numero, resto: inteiro Inicio leia(numero) resto ← numero MOD 2 Se (resto = 0) então escreva(“O número é par”) Senão escreva(“O número é ímpar”) Fim_se Fim Exemplo – Versão 2 Unidade 02 Estruturas Condicionais Aninhadas Prof. Rogério Napoleão Júnior • Pode-secomporumaestruturacondicionalmais complexa • Coloca-se um“Se-Então-[Senão]”dentro do outro, de acordo com a necessidade do algoritmo • Pode-seutilizarestruturascondicionaissimples, compostas e múltiplas, todas elas de maneira aninhada • Criam-se vários níveis de deciso ̃es em que, a decisão mais interna so ́ será conferida caso a decisão mais externa tenha resultado verdadeiro Estrutura Condicional Aninhadas Se (<expressão lógica 1>) então Se (<expressão lógica 2>) então <sequê ncia de comandos 1> Senão <sequê ncia de comandos 2> Fim_se Senão Se (<expressão lógica 3>) então <sequê ncia de comandos 3> Fim_se Fim-se Estrutura Condicional Aninhadas • Construa um algoritmo que receba, como entrada, a média final de um aluno: • Imprima “Aprovado” caso a nota seja maior ou igual a 7.; • “Exame” se a média for maior ou igual a 4, porém menor que 7; • Imprima“Reprovado”casoamédiasejamenor que 4. Exemplo Algoritmo notas Var media: real Início leia(media) Se (media >= 7.0) então escreva(“Aprovado”) Senão Se (media >= 4.0) escreva(“Exame”) Senão escreva(“Reprovado”) Fim_se Fim_se Fim Exemplo Unidade 02 Estruturas Condicionais Multiplas Prof. Rogério Napoleão Júnior • Há situac ̧o ̃es em que uma mesma variável pode gerar condic ̧o ̃es múltiplas • A mesma condic ̧ão pode levar a mais de dois caminhos diferentes • Geralmente uma única variável acaba controlando os vários caminhos diferentes • É como se fosse um “menu” de opc ̧o ̃es • Basicamente, substitui uma sequência de condições simples baseadas (Se-Então) em uma única variável Estrutura Condicional Múltipla Caso (<variável>) Seja <valor 1> faç a <comandos 1> Seja <valor 2> faç a <comandos 2> Seja <valor 3> faç a <comandos 3> ⁞ Seja <valor N> faç a <comandos N> Senão <lista de comandos padrão> Fim_caso Estrutura Condicional Múltipla Desenvolva um algoritmo que, dependendo do valor (número inteiro) digitado pelo usuário, imprimir na tela dia da semana correspondente àquele número: 1 → domingo 2 → segunda-feira 3 → terc ̧a-feira 4 → quarta-feira 5 → quinta-feira 6 → sexta-feira 7 → sábado Exemplo Algoritmo diaDaSemana Var dia: inteiro Início leia(dia) Caso (dia) Seja 1 faç a escreva(“Domingo”) Seja 2 faç a escreva(“Segunda”) Seja 3 faç a escreva(“Terç a”) Seja 4 faç a escreva(“Quarta”) Seja 5 faç a escreva(“Quinta”) Seja 6 faç a escreva(“Sexta”) Seja 7 faç a escreva(“Sábado”) Senão escreva (“Valor Inválido”) Fim_caso Fim Exemplo Unidade 03 Estrutura de Repetição Prof. Rogério Napoleão Júnior • Computadores sa ̃o muito eficientes em realizar operações repetitivas. • Pense no seguinte problema: • Imprimir “Aguarde...”, por cem vezes, na tela! • Uma estrutura de repetiça ̃o permite repetir um bloco comandos sem a necessidade de replicar código-fonte. • Observaça ̃o: repetic ̧a ̃o e iterac ̧a ̃o têm o mesmo significado. Introdução • Imprimindo “Aguarde...” por cem vezes: Algoritmo imprimeAguarde Início escreva(“Aguarde...”) escreva(“Aguarde...”) escreva(“Aguarde...”) // ... até a centésima impressão escreva(“Aguarde...”) Fim Introdução • É interessante replicar o mesmo co ́digo para repetir a mesma tarefa? • Exemplo anterior: utilizar a função escreva() por 100 vezes, em sequência... • É oneroso e deselegante • Existem comandos que permitem que a máquina execute tarefas repetitivas, sem que seja necessário replicar co ́digo. • ESTRUTURAS DE REPETIC ̧A ̃O! Introdução • Conhecidos também como Laços ou Loops • Utilidade: iterar um bloco de commandos • Toda estrutura de repetição possui um critério de parade • Crítério de parada pode ser falho: loop infinito • Possível travamento/crash do programa Estruturas de Repetição Unidade 03 Estrutura “Para” Prof. Rogério Napoleão Júnior • Repetição por Contagem • Repete um bloco de commandos por um número finito de vezes • A quantia de repetições é controlada por uma variável • Gera-se uma sequência númerica • Variável contadora (laço contado) • Geralmente tem-se uma variável númerica (normalente inteiro) para realizar a contagem Estrutura “Para” Para <v> de <i> até <f> passo <p> faç a <sequê ncia de comandos> Fim_para • Exemplo Algoritmo aguardando Var cont: inteiro Início Para cont de 1 até 100 passo 1 faç a escreva(“Aguarde...”) Fim_para Fim Estrutura “Para” • A variável de controle gera uma sequência numérica (variável cont, do exemplo anterior) • É como um contador: 1 – Executa pela primeira vez 2 – Executa pela segunda vez 3 – Executa pela terceira vez ... 8 – Executa pela oitava vez 9 – Executa pela nona vez 10 – Executa pela décima vez ... e assim por diante ... Estrutura “Para” • Toda sequência numérica possui: • Um valor inicial • Um valor final • Um valor de incremento/decremento • Exemplo • Valor inicial = 1 • Valor final = 5 • Incremento = +1 • Sequência gerada: 1, 2, 3, 4, 5 • Quando não for explicitado, o valor de incremento assume-se +1 por padra ̃o Estrutura “Para” Sequências mais comuns na repetiça ̃o por contagem: a) Valor inicial = 0 e incremento = +1: 0, 1, 2, 3, 4... b) Valor inicial = 1 e incremento = +1: 1, 2, 3, 4, 5... c) Valor inicial = N e decremento = -1: Por ex. com N = 5: 5, 4, 3, 2, 1, 0 Estrutura “Para” Unidade 03 Estrutura “Enquanto” Prof. Rogério Napoleão Júnior • Repetição por Condição • Em muitas situac ̧ões na computac ̧a ̃o precisamos repetir operac ̧ões apenas enquanto uma condic ̧a ̃o for verdadeira. • Os commandos sa ̃o repetidos ate ́ que a condic ̧ão seja quebrada – condic ̧a ̃o testada no ini ́cio • Muitas vezes é impossível prever quando a condic ̧a ̃o sera ́ quebrada • Condic ̧a ̃o: expressa ̃o lógico-relacional Estrutura “Enquanto” Enquanto (<expressão lógica>) faç a <sequê ncia de comandos> Fim_enquanto • Exemplo Algoritmo aguardando2 Var cont: inteiro Inicio cont ← 0 Enquanto (cont < 100) faç a escreva(“Aguarde...”); cont ← cont + 1 Fim_enquanto Fim Estrutura “Enquanto” • Imagine o seguinte problema: • Escrever um algoritmo para descobrir quantas vezes é possível subtrair o valor 2 de um número N qualquer (informado pelo usuário), antes que o resultado das subtrações se torne negativo. • A interação com o usuário faz com que seja difícil prever quantas vezes o laço deverá se repetir Estrutura “Enquanto” • Desenvolver um algoritmo que pec ̧a ao usuário que informe valores e se encerre quando a soma dos valores informados for maior do que 100. Algoritmo somaValores Var val, soma: inteiro Inicio soma ← 0 Enquanto (soma < 100) faç a leia(val) soma ← soma + val Fim_enquanto Fim Exemplo Unidade 03 Estrutura “Repita” Prof. Rogério Napoleão Júnior • Estrutura de repetic ̧ão por condic ̧ão, similar ao “Enquanto”, com algumas diferenc ̧as fundamentais: • O teste condicional éverificado somente ao final do laço • O bloco de comandos é executado, obrigatoriamente, por pelo menos uma vez • A lógica condicional é invertida, quando comparada ao enquanto • O laço de repetição é iterado até que a condição seja atendida Estrutura “Repita” Repita <sequê ncia de comandos> Até_que (<expressão lógica>) • Exemplo Algoritmo aguardando3 Var cont: inteiro Inicio cont ← 1 Repita escreva(“Aguarde...”); cont ← cont + 1 Até_que (cont > 100) Fim Estrutura “Repita” Unidade 03 Estrutura de Repetição Aninhadas Prof. Rogério Napoleão Júnior • Em algumas situac ̧o ̃es observa-se a necessidade de se aninhar uma estrutura de repetic ̧ão dentro da outra; • Pode-se aninhar quantas estruturas de repetic ̧ão quanto for necessário, e de qualquer tipo; • Geralmente, o aninhamento de estruturas de repetic ̧ão está relacionado a algoritmos que envolvem matrizes. Estrutura de Repetição Aninhadas Para var de inicio até fim passo incr faç a <Bloco de comandos do PARA 1> Repita <Bloco de comandos do REPITA 1> Enquanto (<condição1>) faç a <Bloco de comandos do ENQUANTO> Fim_enquanto <Bloco de comandos do REPITA 2> Até_que (<condição2>) <Bloco de comandos do PARA 2> Fim_para Estrutura de Repetição Aninhadas Quando é indicada a utilizac ̧ão de uma estrutura Para? • Para repetir um bloco de comandos repetidamente, quando se sabe, de antemão, quantas vezes o bloco deverá ser repetido • Explorar padrões de sequências numéricas • Para realizar contagens • Para acumular valores Síntese Quando é indicada a utilizaça ̃o de uma estrutura Enquanto ou Repita? • Quando na ̃o é possi ́vel determinar previamente o número de repetições a se realizar. • Quando deseja-se gerar sequências complexas, por exemplo, números decimais, números múltiplos, etc. • Para repetir um conjunto de comandos por um número finito de vezes. • Tomar cuidado com a repetiça ̃o infinita (loop infinito): em algum momento a condiça ̃o do devera ́ se fazer com que o laço se interrompa! Síntese
Compartilhar