·
Engenharia de Produção ·
Linguagens de Programação
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
28
Estruturas Condicionais Compostas em Pseudocódigo
Linguagens de Programação
FUCAP
34
Estrutura de Repetição Enquanto em Pseudocódigo
Linguagens de Programação
FUCAP
28
Comandos Básicos de Entrada e Saída em Algoritmos
Linguagens de Programação
FUCAP
28
História e Aplicações do Arduino
Linguagens de Programação
FUCAP
1
Projeto de Sensor de Temperatura com LED e Buzzer
Linguagens de Programação
FUCAP
Texto de pré-visualização
Estrutura de Repetição RepitaAté pseudocódigo Apresentação A estrutura de repetição repitaaté é utilizada em algoritmos programas que necessitem que determinado trecho de código seja executado no mínimo uma vez Essa estrutura define que um bloco de comandos será executado e que ao final dele será realizado um teste condição Se o resultado do teste for verdadeiro a repetição termina caso contrário o bloco é repetido Nesta Unidade de Aprendizagem estudaremos a construção de pseudocódigos com repetições construídas com a estrutura repitaaté Bons estudos Ao final desta Unidade de Aprendizagem você deve apresentar os seguintes aprendizados Identificar problemas que precisem de repetição laços para construção da solução algorítmica Construir pseudocódigos que utilizem a estrutura de repetição repitaaté Resolver problemas através de sua especificação com algoritmos Desafio Muitos procedimentos que realizamos precisam ser repetidos para cada elemento de um conjunto de objetosdadosinformações Por exemplo na Serra Gaúcha na época da colheita da uva que ocorre normalmente entre os meses de janeiro e março os produtores de uva colhem a fruta armazenam em caixas e entregam nas vinícolas para a produção de vinhos Na vinícola a cada caminhão carregado que chega é realizado o seguinte processo a uva é pesada e calculase o valor a ser pago ao produtor multiplicandose o total em quilogramas que foi entregue pelo valor do quilo da uva do dia Assim uma vinícola precisa de um programa que ao ser executado solicite o valor do quilo da uva do dia leia a quantidade de quilos que o produtor entregou e informe o valor a ser pago ao produtor Ao final do dia a vinícola irá digitar o valor 0 zero para o peso finalizando as atividades e o programa deverá informar quantos produtores foram atendidos O pseudocódigo a seguir apresenta uma possível solução para esse problema utilizando o comando repitaaté para implementação do laço de repetição algoritmo uvas var quilo peso valor conta numerico inicio escrevalDigite o valor de um quilo de uva leiaquilo conta 0 repita escrevalDigite o peso das uvas leiapeso valor quilopeso escrevalPagar ao produtor valor conta conta 1 ate peso 0 escrevalProdutores atendidos conta1 fimalgoritmo Agora é sua vez A auxiliar financeira de uma loja precisa calcular os descontos concedidos nas compras dos clientes Para compras com valores superiores a R 50000 a gerência autoriza o desconto de 5 no valor da compra para valores superiores a R 100000 a gerência autoriza o desconto de 10 Ao final do dia a auxiliar financeira precisa informar quantos clientes receberam descontos e qual o valor total em descontos que foram concedidos Para auxiliar seu trabalho ela deseja que seja construído um programa que realize esse processo Você deve construir um algoritmo em pseudocódigo que leia o valor de cada compra um por vez o programa termina quando for digitado o valor 0 zero para a compra Quando for maior que R 100000 que conceda o desconto de 10 se for maior que R 50000 e menor que R 100000 conceda o desconto de 5 e mostre o valor do desconto O programa também deve contar para quantos clientes foram concedidos os descontos além de realizar o somatório dos descontos concedidos mostrando ao final essas duas informações Para a implementação do laço de repetição você deve utilizar a estrutura repitaaté Infográfico Trechos de códigos em algoritmos são constituídos por comandos de entrada e saída de dados comandos de decisão e de repetição O foco desta Unidade é a construção de pseudocódigos que utilizem o comando repitaaté Conteúdo do livro A estrutura de repetição repitaaté permite a construção de laços Conheça um pouco mais sobre a estrutura lendo o conteúdo das páginas 141 e 142 do seguinte livro EDELWEISS N LIVI MAC Algoritmos e programação com exemplos em Pascal e C Vol 23 Série Livros Didáticos Informática UFRGS Porto Alegre Bookman 2014 Boa leitura 23 s é r i e l i v r o s d i d á t i c o s i n f o r m á t i c a u f r g s algoritmos e programação com exemplos em Pascal e C nina edelweiss maria aparecida castro livi E22a Edelweiss Nina Algoritmos e programação com exemplos em Pascal e C recurso eletrônico Nina Edelweiss Maria Aparecida Castro Livi Dados eletrônicos Porto Alegre Bookman 2014 Editado também como livro impresso em 2014 ISBN 9788582601907 1 Informática 2 Algoritmos Programação I Livi Maria Aparecida Castro II Título CDU 004421 as autoras Nina Edelweiss é engenheira eletricista e doutora em Ciência da Computação pela Uni versidade Federal do Rio Grande do Sul Durante muitos anos lecionou em cursos de Enge nharia e de Ciência da Computação na UFRGS na UFSC e na PUCRS Foi ainda orientadora do Programa de PósGraduação em Ciência da Computação da UFRGS É coautora de três livros tendo publicado diversos artigos em periódicos e em anais de congressos nacionais e internacionais Participou de diversos projetos de pesquisa financiados por agências de fomento como CNPq e FAPERGS desenvolvendo pesquisas nas áreas de bancos de dados e desenvolvimento de software Maria Aparecida Castro Livi é licenciada e bacharel em Letras e mestre em Ciência da Computação pela Universidade Federal do Rio Grande do Sul Desenvolveu sua carreira pro fissional na UFRGS onde foi programadora e analista de sistema antes de ingressar na carreira docente Ministrou por vários anos a disciplina de Algoritmos e Programação para alunos dos cursos de Engenharia da Computação e Ciência da Computação Sua área de interesse prioritário é o ensino de Linguagens de Programação tanto de forma presencial quanto a distância Catalogação na publicação Ana Paula M Magnus CRB 102052 EdelweissIniciaiseletronicaindd ii 140514 1651 Capítulo 5 Estruturas de Repetição 139 lermaisum enquanto maisum N faça início lerlimsup para i de 1 incr 1 até limsup faça escreveri lermaisum fim 54 comando de repetição condicional repitaaté por avaliação posterior de condição O comando de repetição condicional por avaliação posterior repitaaté também vin cula a execução de um conjunto de comandos ao resultado da avaliação de uma expressão lógica O comando inicia pela execução do laço e quando essa execução é concluída a ex pressão é avaliada se o valor lógico obtido for falso o laço é executado novamente se for verdadeiro o comando é encerrado Isso significa que o laço é sempre executado pelo menos uma vez independentemente do valor lógico inicial resultante da avaliação da expressão de controle Observar que normalmente o valor inicial da expressão lógica será falso pois se deseja repetir o laço mais de uma vez Portanto é necessário que em algum momento o conteúdo de alguma variável utilizada nesta expressão lógica tenha o valor alterado dentro do laço de forma a modificar o valor resultante de sua avaliação para verdadeiro evitando assim a ocorrência de um laço loop infinito A sintaxe de um comando de repetição condicional repitaaté é a seguinte repita comandos até expressão lógica Observar que diferentemente dos comandos anteriores aqui não é necessário um comando composto pois a sintaxe aceita múltiplos comandos delimitados pela cláusula até O fluxograma representado na Figura 55 mostra o funcionamento desse comando em que o laço de repetição é sempre executado pelo menos uma vez O aninhamento de comandos de repetição também se aplica ao comando repitaaté in cluindo os outros comandos de repetição já vistos O Algoritmo 57 a seguir adapta o Algoritmo 56 utilizando no laço de repetição um co mando repitaaté em lugar do enquantofaça Observar que como o laço desse coman do é sempre executado pelo menos uma vez se tornou necessária a inclusão de um comando condicional logo no início para condicionar a execução do laço ao valor inicial de nota1 Edelweiss05indd 139 120314 0902 140 Algoritmos e Programação com Exemplos em Pascal e C Algoritmo 57 MédiaAlunoETurma3 INFORMA MÉDIA DOS ALUNOS DE UMA TURMA E A MÉDIA GERAL DESSA TURMA PARA INDICAR FIM DE PROCESSAMENTO O CONTEÚDO INFORMADO EM NOTA1 SERÁ NEGATIVO Entradas nota1 nota2 nota3 real Saídas média real somamédias real médiaturma real Variável auxiliar contal inteiro CONTADOR DE ALUNOS PROCESSADOS início somamédias 0 SOMA MÉDIAS INDIVIDUAIS VALOR INICIAL ZERO contal 0 CONTADOR DE ALUNOS VALOR INICIAL ZERO lernota1 LEITURA DA PRIMEIRA NOTA se nota1 0 então início repita lernota2 nota3 LEITURA DAS OUTRAS 2 NOTAS contal contal 1 CONTA ALUNO LIDO média nota1 nota2 nota3 3 CALCULA MÉDIA escrever contal média INFORMA MÉDIA somamédias somamédias média SOMA DAS MÉDIAS lernota1 LEITURA DA PRIMEIRA NOTA DO PRÓXIMO ALUNO comando expressão lógica verdadeiro falso comando figura 55 Fluxograma do comando de repetição repitaaté Edelweiss05indd 140 120314 0902 Capítulo 5 Estruturas de Repetição 141 até nota1 0 FINAL DO COMANDO REPITA fim DO COMANDO SEENTÃO médiaturma somamédias contal MÉDIA DA TURMA escrevermédiaturma fim 55 garantia da consistência de dados através de comandos de repetição Sempre que possível os valores lidos devem ser verificados quanto à validade antes de seu armazenamento em variáveis Por exemplo se o intervalo de valores de notas de provas é de 0 a 10 então qualquer valor de nota informado que não estiver dentro desse intervalo está in correto e deve ser descartado e substituído por um novo valor válido A consistência de dados de entrada pode ser implementada através do uso de comandos de repetição condicional No caso dos algoritmos de processamento de notas incluídos neste capítulo toda a leitura de nota deveria incluir a consistência do valor informado Nos exemplos a seguir a consistência das leituras é garantida através do uso de enquantofaça e de repitaaté de acordo com o funcionamento de cada comando CONSISTÊNCIA COM COMANDO ENQUANTOFAÇA ler nota1 enquanto nota1 0 ou nota1 10 e nota1 1 faça início SÓ EXECUTA SE NOTA INVÁLIDA escreverNota inválida Informe novamente lernota1 fim ENQUANTO CONSISTÊNCIA DE DADOS COM COMANDO REPITAATÉ repita CONSISTÊNCIA DE NOTA2 lernota2 SEMPRE EXECUTA 1 VEZ REPETE SE INVÁLIDA se nota2 0 ou nota2 10 então escreverNota inválida Informe novamente até nota2 0 e nota2 10 Apesar das diferenças no modo de funcionamento os comandos enquantofaça e repitaaté podem ser utilizados indistintamente nas situações em que o uso de comandos desse tipo for adequado Entretanto o comando repitaaté por apresentar a característica de sempre executar o conteúdo do laço pelo menos uma vez é o mais indicado para a consis tência de dados de entrada A leitura dos dados deverá ocorrer obrigatoriamente pelo menos uma vez e a avaliação do resultado da leitura determinará o encerramento dado lido válido ou a repetição do comando dado lido inválido O trecho a seguir apresenta a utilização do comando repitaaté para a consistência da lei tura de uma letra minúscula garantindo que o caractere digitado esteja dentro do intervalo a a z mas sem emitir mensagem de erro de digitação Edelweiss05indd 141 120314 0902 142 Algoritmos e Programação com Exemplos em Pascal e C repita escreverInforme uma letra minúscula lerletra até letra a e letra z SE VALOR VÁLIDO NÃO REPETE 56 selecionando o comando de repetição mais adequado As normas de bom estilo de programação recomendam que os comandos de repetição te nham seu início e fim e suas condições de repetição claramente explicitados Havendo mais de um comando de repetição possível para atender uma particular situação a escolha deve recair sobre o comando com as características mais adequadas ao caso em análise Se a repetição implementada for por contagem ou pela variação de conteúdo de uma variá vel através de incrementos constantes e definidos em um intervalo previamente conhecido então o comando de repetição indicado é o parafaça Nesse caso a variável de controle a condição de repetição e o incremento aplicado após cada execução do laço devem estar claramente definidos no cabeçalho do comando parafaça e devem ser evitadas alterações desses elementos no corpo do laço Os comandos de repetição condicional são indicados para a solução de problemas em que o encerramento das repetições está relacionado à detecção de uma condição cuja ocorrência não pode ser predeterminada Se existe a possibilidade do bloco de repetições não precisar ser executado nem uma vez então o uso do comando enquantofaça é indicado Um exemplo dessa opção é o processa mento de pedidos de uma empresa durante o período comercial nesse caso é recomendável que o usuário seja informado da eventual inexistência de processamento caso nenhum pedi do ocorra no período em questão Se o bloco de repetições for sempre executado pelo menos uma vez então a opção deve recair no comando repitaaté Um exemplo do uso adequado do repitaaté é o proces samento que inclui menus de opções uma delas sendo o encerramento da execução nesse caso sempre ocorrerá a leitura e processamento de pelo menos uma das opções do menu 57 exercícios de fixação exercício 51 A série de Fibonacci é uma sequência de números na qual o primeiro termo é 0 o segundo é 1 e os demais termos são sempre a soma dos dois anteriores 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Edelweiss05indd 142 120314 0902 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem Na Biblioteca Virtual da Instituição você encontra a obra na íntegra Dica do professor A estrutura de repetição repitaaté é um importante recurso quando a repetição não é controlada por um contador e sim pelo valor de alguma informação que foi lida ou calculada Vamos aprender a construir pseudocódigos com essa estrutura Confira o vídeo Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar Exercícios Uma indústria de tecidos após o processo de produção fabrica retalhos que em cada lote devem ter o mesmo comprimento Após realizarem os cortes necessários verificouse que duas peças restantes tinham as seguintes medidas 156 cm e 234 cm Assim o coordenador de produção depois de ser informado das medidas solicitou que o funcionário cortasse as peças restantes em partes iguais e com o maior comprimento possível Como ele poderá resolver essa situação Esse é um problema que pode ser resolvido calculandose o MDC máximo divisor comum entre 156 e 234 que resulta em 78 Assim as peças serão cortadas em retalhos de 78 cm cada uma Considerando dois números naturais inteiros positivos sempre poderemos definir no mínimo um divisor comum Por exemplo os divisores comuns de 12 e 18 são 1 2 3 e 6 O maior nesse caso é 6 então chamamos o 6 de máximo divisor comum de 12 e 18 e indicamos MDC 1218 6 Existem alguns métodos para calcular o MDC de dois números como fatores primos divisões sucessivas entre outros Os dois algoritmos a seguir foram construídos com base no método das divisões sucessivas Analise as duas implementações 1 B Implementação com a estrutura de repetição enquantofaça Nesse contexto selecione a alternativa abaixo que seja FALSA A Ambos os algoritmos funcionarão corretamente quando A for maior que B e também quando B for maior que A B Considerando os mesmos valores de entrada para as variáveis A e B os dois algoritmos sempre realizarão exatamente a mesma quantidade de iterações de seus respectivos laços de repetição C As variáveis A e B foram atribuídas para as variáveis dividendo e divisor respectivamente para que seus valores fossem preservados e pudessem ser exibidos no final D A condição do laço repitaaté é oposta à condição do laço enquantofaça E A forma de cálculo do MDC é realizar divisões sucessivas que terminam em ambas implementações quando o resto da divisão é zero 2 Números perfeitos são aqueles que são iguais à soma de seus divisores Por exemplo o número 6 tem como divisores 1 2 e 3 Somandose 1 2 3 6 portanto o número 6 é um número perfeito Alguns números perfeitos conhecidos são 6 28 496 e 8128 Analise as alternativas a seguir e assinale a que apresenta um algoritmo correto que leia um número e informe se ele é perfeito ou não algoritmo perfeito var numero divisor soma resto L inteiro inicio para L de 1 ate 1000 passo 1 faca soma 0 divisor 1 numero L repita resto numero mod divisor se resto 0 entao soma soma divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito numero fimse fimpara fimalgoritim algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma divisor escrevalDivisor divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito senao escrevalNão é número Perfeito fimse fimalgoritim algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma soma divisor escreval Divisor divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito senão escrevalNão é número Perfeito fimse fimalgorritmo algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma soma divisor escrevalDivisor divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito senão escrevalNão é número Perfeito fimse fimalgorritmo algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma soma divisor escrevalDivisor divisor fimse divisor divisor 1 ate divisor numero se soma numero entao escrevalNúmero Perfeito senão escrevalNão é número Perfeito fimse fimalgorritmo Um cientista está estudando determinado material radioativo que possui a característica de perder metade de sua massa a cada 50 segundos Para auxiliar na pesquisa ele precisa de um programa que receba a massa inicial em gramas e informe o tempo necessário para que essa massa se torne menor que 05 grama Ao final o programa deve escrever a massa inicial a final e o tempo sendo que esse deve ser expresso em horas minutos e segundos Um programador desenvolveu a seguinte solução em pseudocódigo para o problema Analise essa solução e selecione abaixo a alternativa correta A O algoritmo está apresentando o tempo em horas minutos e segundos B Se for digitado um valor inicial de massa menor que 05 o algoritmo não irá funcionar C A condição do laço de repetição repitaaté está errada D O laço de repetição enquantofaça poderia substituir o laço repitaaté utilizado no algoritmo invertendo o teste da condição E O laço de repetição repitaaté poderia ser facilmente substituído pelo parafaça pois a quantidade de repetições que serão realizadas é conhecida 4 Considerandose a sintaxe e o funcionamento da estrutura de repetição repitaaté analise as alternativas a seguir e selecione aquela que NÃO está relacionada com essa estrutura A O conjunto de comandos da repetição sempre será executado no mínimo uma vez B O conjunto de comandos da repetição será executado enquanto a condição for falsa C O laço de repetição repitaaté pode ser substituído pelo laço enquantofaça utilizando a mesma condição D É uma estrutura útil para ser utilizada quando não se conhece a quantidade de repetições que serão realizadas E A condição de controle da repetição pode utilizar qualquer expressão com operadores relacionais e lógicos desde que o resultado seja verdadeiro ou falso 5 Considere o seguinte algoritmo em pseudocódigo algoritmo oquefaz var XYZ inteiro inicio escrevalO que faz repita escrevadigite um número inteiro entre 0 e 1000 leiaX ateX0eX1000 y1000 repita Z X div Y X X mod Y Y y div 10 escrevaZ ateY0 fimalgoritmo Todo algoritmo tem um objetivo um problema ou uma necessidade para implementar a solução Assim selecione a alternativa a seguir que expresse corretamente o que esse algoritmo faz A Converte um numeral expresso na base binária para a base decimal B Lê um número e escreve seus dígitos separadamente sempre utilizando quatro dígitos para expressar o resultado C Converte um numeral expresso na base decimal para a base binária D Lê um número e escreve seus dígitos separadamente utilizando apenas os dígitos que o numeral possui para expressar o resultado E Não tem objetivo apenas faz contas soltas e não resolve nenhum problema matemático ou prático Na prática O desenvolvimento de algoritmos e programas é feito para que o computador nos auxilie a realizar processos complexos e repetitivos que envolvam diversas informações e cálculos É possível construir algoritmos para calcular a área de figuras geométricas IMC índice de massa corpórea volume de recipientes média de notas valor de parcelas valor de séries numéricas etc Normalmente desejase executar esses processos para diferentes valores de entrada de dados Nesses casos o algoritmoprograma deverá ser executado diversas vezes para que em cada vez seja possível informar novos dados de entrada Assim seria adequado que após encerrar o processo para o qual foi criado que esse fosse repetido sem que fosse necessário que o usuário o executasse novamente Para atingir esse objetivo podese utilizar a estrutura de repetição repitaaté que executa pelo menos uma vez um conjunto de comandos e depois testa uma condição até que ela seja verdadeira finalizando a repetição Enquanto a condição for falsa o bloco de comandos será repetido Vamos considerar que desejamos construir um algoritmo que apresente um menu de opções de cálculos 1 Calcular a área de um quadrado 2 Calcular a área de um retângulo 3 Calcular a área de uma circunferência 4 Sair do programa O sistema deve pedir que o usuário digite sua opção Quando o usuário digitar a opção 1 o programa deverá solicitar a medida do lado do quadrado calcular sua área e mostrála Caso seja digitada a opção 2 solicitar as medidas do comprimento e altura do retângulo calcular sua área e mostrála Já quando for digitada a opção 3 solicitar a medida do raio da circunferência calcular sua área e mostrála Finalmente se for digitada a opção 4 o programa deve ser finalizado Portanto se a opção digitada não for a opção 4 o processo deve ser repetido Podemse definir os seguintes passos para resolução do algoritmo 1 Ler a opção 2 Caso a opção seja 1 a Ler a medida do lado do quadrado b Calcular a área do quadrado área lado lado c Mostrar a área calculada 3 Caso a opção seja 2 a Ler as medidas de comprimento e altura do retângulo b Calcular a área do retângulo área comprimento altura c Mostrar a área calculada 4 Caso a opção seja 3 a Ler a medida do raio da circunferência b Calcular a área da circunferência área 31416 raio raio c Mostrar a área calculada 5 Se a opção for 4 ir para o passo 6 caso contrário voltar para o passo 1 6 Finalizar o programa O algoritmo a seguir em pseudocódigo implementa a solução do problema proposto algoritmo calculos algoritmo calculos var lado comprimento altura raio area numerico opaco inteiro continua caracter inicio repita limpantela escreval1 Calcular a Area de um Quadrado escreval2 Calcular a Area de um Retangulo escreval3 Calcular a Area de uma Circunferencia escreval4 Finalizar o programa repita leiaopaco se opaco 1 ou opaco 4 entao escrevalOpcao invalida digite nova opaco fimse ate opaco 1 e opaco 4 escolha opaco caso 1 escrevalDigite a medida do lado leialado area lado lado escrevalarea area caso 2 escrevalDigite a medida do comprimento leiacomprimento escrevalDigite a medida da altura leiaaltura area comprimento altura escrevalarea area caso 3 escrevalDigite a medida do raio leiaraio area raio raio pi escrevalarea area fimescolha se opaco 4 entao repita escrevalDigite qualquer letra e pressione enter para continuar leiacontinua ate VERDADEIRO fimse ate opaco 4 escrevalFinalizando programa fimalgoritmo Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar Saiba Para ampliar o seu conhecimento a respeito desse assunto veja abaixo as sugestões do professor Lógica de Programação Estruturas de repetição loop REPITA ATÉ Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar Lógica de Programação com VisualG Estrutura de Repetição Repita Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
28
Estruturas Condicionais Compostas em Pseudocódigo
Linguagens de Programação
FUCAP
34
Estrutura de Repetição Enquanto em Pseudocódigo
Linguagens de Programação
FUCAP
28
Comandos Básicos de Entrada e Saída em Algoritmos
Linguagens de Programação
FUCAP
28
História e Aplicações do Arduino
Linguagens de Programação
FUCAP
1
Projeto de Sensor de Temperatura com LED e Buzzer
Linguagens de Programação
FUCAP
Texto de pré-visualização
Estrutura de Repetição RepitaAté pseudocódigo Apresentação A estrutura de repetição repitaaté é utilizada em algoritmos programas que necessitem que determinado trecho de código seja executado no mínimo uma vez Essa estrutura define que um bloco de comandos será executado e que ao final dele será realizado um teste condição Se o resultado do teste for verdadeiro a repetição termina caso contrário o bloco é repetido Nesta Unidade de Aprendizagem estudaremos a construção de pseudocódigos com repetições construídas com a estrutura repitaaté Bons estudos Ao final desta Unidade de Aprendizagem você deve apresentar os seguintes aprendizados Identificar problemas que precisem de repetição laços para construção da solução algorítmica Construir pseudocódigos que utilizem a estrutura de repetição repitaaté Resolver problemas através de sua especificação com algoritmos Desafio Muitos procedimentos que realizamos precisam ser repetidos para cada elemento de um conjunto de objetosdadosinformações Por exemplo na Serra Gaúcha na época da colheita da uva que ocorre normalmente entre os meses de janeiro e março os produtores de uva colhem a fruta armazenam em caixas e entregam nas vinícolas para a produção de vinhos Na vinícola a cada caminhão carregado que chega é realizado o seguinte processo a uva é pesada e calculase o valor a ser pago ao produtor multiplicandose o total em quilogramas que foi entregue pelo valor do quilo da uva do dia Assim uma vinícola precisa de um programa que ao ser executado solicite o valor do quilo da uva do dia leia a quantidade de quilos que o produtor entregou e informe o valor a ser pago ao produtor Ao final do dia a vinícola irá digitar o valor 0 zero para o peso finalizando as atividades e o programa deverá informar quantos produtores foram atendidos O pseudocódigo a seguir apresenta uma possível solução para esse problema utilizando o comando repitaaté para implementação do laço de repetição algoritmo uvas var quilo peso valor conta numerico inicio escrevalDigite o valor de um quilo de uva leiaquilo conta 0 repita escrevalDigite o peso das uvas leiapeso valor quilopeso escrevalPagar ao produtor valor conta conta 1 ate peso 0 escrevalProdutores atendidos conta1 fimalgoritmo Agora é sua vez A auxiliar financeira de uma loja precisa calcular os descontos concedidos nas compras dos clientes Para compras com valores superiores a R 50000 a gerência autoriza o desconto de 5 no valor da compra para valores superiores a R 100000 a gerência autoriza o desconto de 10 Ao final do dia a auxiliar financeira precisa informar quantos clientes receberam descontos e qual o valor total em descontos que foram concedidos Para auxiliar seu trabalho ela deseja que seja construído um programa que realize esse processo Você deve construir um algoritmo em pseudocódigo que leia o valor de cada compra um por vez o programa termina quando for digitado o valor 0 zero para a compra Quando for maior que R 100000 que conceda o desconto de 10 se for maior que R 50000 e menor que R 100000 conceda o desconto de 5 e mostre o valor do desconto O programa também deve contar para quantos clientes foram concedidos os descontos além de realizar o somatório dos descontos concedidos mostrando ao final essas duas informações Para a implementação do laço de repetição você deve utilizar a estrutura repitaaté Infográfico Trechos de códigos em algoritmos são constituídos por comandos de entrada e saída de dados comandos de decisão e de repetição O foco desta Unidade é a construção de pseudocódigos que utilizem o comando repitaaté Conteúdo do livro A estrutura de repetição repitaaté permite a construção de laços Conheça um pouco mais sobre a estrutura lendo o conteúdo das páginas 141 e 142 do seguinte livro EDELWEISS N LIVI MAC Algoritmos e programação com exemplos em Pascal e C Vol 23 Série Livros Didáticos Informática UFRGS Porto Alegre Bookman 2014 Boa leitura 23 s é r i e l i v r o s d i d á t i c o s i n f o r m á t i c a u f r g s algoritmos e programação com exemplos em Pascal e C nina edelweiss maria aparecida castro livi E22a Edelweiss Nina Algoritmos e programação com exemplos em Pascal e C recurso eletrônico Nina Edelweiss Maria Aparecida Castro Livi Dados eletrônicos Porto Alegre Bookman 2014 Editado também como livro impresso em 2014 ISBN 9788582601907 1 Informática 2 Algoritmos Programação I Livi Maria Aparecida Castro II Título CDU 004421 as autoras Nina Edelweiss é engenheira eletricista e doutora em Ciência da Computação pela Uni versidade Federal do Rio Grande do Sul Durante muitos anos lecionou em cursos de Enge nharia e de Ciência da Computação na UFRGS na UFSC e na PUCRS Foi ainda orientadora do Programa de PósGraduação em Ciência da Computação da UFRGS É coautora de três livros tendo publicado diversos artigos em periódicos e em anais de congressos nacionais e internacionais Participou de diversos projetos de pesquisa financiados por agências de fomento como CNPq e FAPERGS desenvolvendo pesquisas nas áreas de bancos de dados e desenvolvimento de software Maria Aparecida Castro Livi é licenciada e bacharel em Letras e mestre em Ciência da Computação pela Universidade Federal do Rio Grande do Sul Desenvolveu sua carreira pro fissional na UFRGS onde foi programadora e analista de sistema antes de ingressar na carreira docente Ministrou por vários anos a disciplina de Algoritmos e Programação para alunos dos cursos de Engenharia da Computação e Ciência da Computação Sua área de interesse prioritário é o ensino de Linguagens de Programação tanto de forma presencial quanto a distância Catalogação na publicação Ana Paula M Magnus CRB 102052 EdelweissIniciaiseletronicaindd ii 140514 1651 Capítulo 5 Estruturas de Repetição 139 lermaisum enquanto maisum N faça início lerlimsup para i de 1 incr 1 até limsup faça escreveri lermaisum fim 54 comando de repetição condicional repitaaté por avaliação posterior de condição O comando de repetição condicional por avaliação posterior repitaaté também vin cula a execução de um conjunto de comandos ao resultado da avaliação de uma expressão lógica O comando inicia pela execução do laço e quando essa execução é concluída a ex pressão é avaliada se o valor lógico obtido for falso o laço é executado novamente se for verdadeiro o comando é encerrado Isso significa que o laço é sempre executado pelo menos uma vez independentemente do valor lógico inicial resultante da avaliação da expressão de controle Observar que normalmente o valor inicial da expressão lógica será falso pois se deseja repetir o laço mais de uma vez Portanto é necessário que em algum momento o conteúdo de alguma variável utilizada nesta expressão lógica tenha o valor alterado dentro do laço de forma a modificar o valor resultante de sua avaliação para verdadeiro evitando assim a ocorrência de um laço loop infinito A sintaxe de um comando de repetição condicional repitaaté é a seguinte repita comandos até expressão lógica Observar que diferentemente dos comandos anteriores aqui não é necessário um comando composto pois a sintaxe aceita múltiplos comandos delimitados pela cláusula até O fluxograma representado na Figura 55 mostra o funcionamento desse comando em que o laço de repetição é sempre executado pelo menos uma vez O aninhamento de comandos de repetição também se aplica ao comando repitaaté in cluindo os outros comandos de repetição já vistos O Algoritmo 57 a seguir adapta o Algoritmo 56 utilizando no laço de repetição um co mando repitaaté em lugar do enquantofaça Observar que como o laço desse coman do é sempre executado pelo menos uma vez se tornou necessária a inclusão de um comando condicional logo no início para condicionar a execução do laço ao valor inicial de nota1 Edelweiss05indd 139 120314 0902 140 Algoritmos e Programação com Exemplos em Pascal e C Algoritmo 57 MédiaAlunoETurma3 INFORMA MÉDIA DOS ALUNOS DE UMA TURMA E A MÉDIA GERAL DESSA TURMA PARA INDICAR FIM DE PROCESSAMENTO O CONTEÚDO INFORMADO EM NOTA1 SERÁ NEGATIVO Entradas nota1 nota2 nota3 real Saídas média real somamédias real médiaturma real Variável auxiliar contal inteiro CONTADOR DE ALUNOS PROCESSADOS início somamédias 0 SOMA MÉDIAS INDIVIDUAIS VALOR INICIAL ZERO contal 0 CONTADOR DE ALUNOS VALOR INICIAL ZERO lernota1 LEITURA DA PRIMEIRA NOTA se nota1 0 então início repita lernota2 nota3 LEITURA DAS OUTRAS 2 NOTAS contal contal 1 CONTA ALUNO LIDO média nota1 nota2 nota3 3 CALCULA MÉDIA escrever contal média INFORMA MÉDIA somamédias somamédias média SOMA DAS MÉDIAS lernota1 LEITURA DA PRIMEIRA NOTA DO PRÓXIMO ALUNO comando expressão lógica verdadeiro falso comando figura 55 Fluxograma do comando de repetição repitaaté Edelweiss05indd 140 120314 0902 Capítulo 5 Estruturas de Repetição 141 até nota1 0 FINAL DO COMANDO REPITA fim DO COMANDO SEENTÃO médiaturma somamédias contal MÉDIA DA TURMA escrevermédiaturma fim 55 garantia da consistência de dados através de comandos de repetição Sempre que possível os valores lidos devem ser verificados quanto à validade antes de seu armazenamento em variáveis Por exemplo se o intervalo de valores de notas de provas é de 0 a 10 então qualquer valor de nota informado que não estiver dentro desse intervalo está in correto e deve ser descartado e substituído por um novo valor válido A consistência de dados de entrada pode ser implementada através do uso de comandos de repetição condicional No caso dos algoritmos de processamento de notas incluídos neste capítulo toda a leitura de nota deveria incluir a consistência do valor informado Nos exemplos a seguir a consistência das leituras é garantida através do uso de enquantofaça e de repitaaté de acordo com o funcionamento de cada comando CONSISTÊNCIA COM COMANDO ENQUANTOFAÇA ler nota1 enquanto nota1 0 ou nota1 10 e nota1 1 faça início SÓ EXECUTA SE NOTA INVÁLIDA escreverNota inválida Informe novamente lernota1 fim ENQUANTO CONSISTÊNCIA DE DADOS COM COMANDO REPITAATÉ repita CONSISTÊNCIA DE NOTA2 lernota2 SEMPRE EXECUTA 1 VEZ REPETE SE INVÁLIDA se nota2 0 ou nota2 10 então escreverNota inválida Informe novamente até nota2 0 e nota2 10 Apesar das diferenças no modo de funcionamento os comandos enquantofaça e repitaaté podem ser utilizados indistintamente nas situações em que o uso de comandos desse tipo for adequado Entretanto o comando repitaaté por apresentar a característica de sempre executar o conteúdo do laço pelo menos uma vez é o mais indicado para a consis tência de dados de entrada A leitura dos dados deverá ocorrer obrigatoriamente pelo menos uma vez e a avaliação do resultado da leitura determinará o encerramento dado lido válido ou a repetição do comando dado lido inválido O trecho a seguir apresenta a utilização do comando repitaaté para a consistência da lei tura de uma letra minúscula garantindo que o caractere digitado esteja dentro do intervalo a a z mas sem emitir mensagem de erro de digitação Edelweiss05indd 141 120314 0902 142 Algoritmos e Programação com Exemplos em Pascal e C repita escreverInforme uma letra minúscula lerletra até letra a e letra z SE VALOR VÁLIDO NÃO REPETE 56 selecionando o comando de repetição mais adequado As normas de bom estilo de programação recomendam que os comandos de repetição te nham seu início e fim e suas condições de repetição claramente explicitados Havendo mais de um comando de repetição possível para atender uma particular situação a escolha deve recair sobre o comando com as características mais adequadas ao caso em análise Se a repetição implementada for por contagem ou pela variação de conteúdo de uma variá vel através de incrementos constantes e definidos em um intervalo previamente conhecido então o comando de repetição indicado é o parafaça Nesse caso a variável de controle a condição de repetição e o incremento aplicado após cada execução do laço devem estar claramente definidos no cabeçalho do comando parafaça e devem ser evitadas alterações desses elementos no corpo do laço Os comandos de repetição condicional são indicados para a solução de problemas em que o encerramento das repetições está relacionado à detecção de uma condição cuja ocorrência não pode ser predeterminada Se existe a possibilidade do bloco de repetições não precisar ser executado nem uma vez então o uso do comando enquantofaça é indicado Um exemplo dessa opção é o processa mento de pedidos de uma empresa durante o período comercial nesse caso é recomendável que o usuário seja informado da eventual inexistência de processamento caso nenhum pedi do ocorra no período em questão Se o bloco de repetições for sempre executado pelo menos uma vez então a opção deve recair no comando repitaaté Um exemplo do uso adequado do repitaaté é o proces samento que inclui menus de opções uma delas sendo o encerramento da execução nesse caso sempre ocorrerá a leitura e processamento de pelo menos uma das opções do menu 57 exercícios de fixação exercício 51 A série de Fibonacci é uma sequência de números na qual o primeiro termo é 0 o segundo é 1 e os demais termos são sempre a soma dos dois anteriores 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Edelweiss05indd 142 120314 0902 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem Na Biblioteca Virtual da Instituição você encontra a obra na íntegra Dica do professor A estrutura de repetição repitaaté é um importante recurso quando a repetição não é controlada por um contador e sim pelo valor de alguma informação que foi lida ou calculada Vamos aprender a construir pseudocódigos com essa estrutura Confira o vídeo Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar Exercícios Uma indústria de tecidos após o processo de produção fabrica retalhos que em cada lote devem ter o mesmo comprimento Após realizarem os cortes necessários verificouse que duas peças restantes tinham as seguintes medidas 156 cm e 234 cm Assim o coordenador de produção depois de ser informado das medidas solicitou que o funcionário cortasse as peças restantes em partes iguais e com o maior comprimento possível Como ele poderá resolver essa situação Esse é um problema que pode ser resolvido calculandose o MDC máximo divisor comum entre 156 e 234 que resulta em 78 Assim as peças serão cortadas em retalhos de 78 cm cada uma Considerando dois números naturais inteiros positivos sempre poderemos definir no mínimo um divisor comum Por exemplo os divisores comuns de 12 e 18 são 1 2 3 e 6 O maior nesse caso é 6 então chamamos o 6 de máximo divisor comum de 12 e 18 e indicamos MDC 1218 6 Existem alguns métodos para calcular o MDC de dois números como fatores primos divisões sucessivas entre outros Os dois algoritmos a seguir foram construídos com base no método das divisões sucessivas Analise as duas implementações 1 B Implementação com a estrutura de repetição enquantofaça Nesse contexto selecione a alternativa abaixo que seja FALSA A Ambos os algoritmos funcionarão corretamente quando A for maior que B e também quando B for maior que A B Considerando os mesmos valores de entrada para as variáveis A e B os dois algoritmos sempre realizarão exatamente a mesma quantidade de iterações de seus respectivos laços de repetição C As variáveis A e B foram atribuídas para as variáveis dividendo e divisor respectivamente para que seus valores fossem preservados e pudessem ser exibidos no final D A condição do laço repitaaté é oposta à condição do laço enquantofaça E A forma de cálculo do MDC é realizar divisões sucessivas que terminam em ambas implementações quando o resto da divisão é zero 2 Números perfeitos são aqueles que são iguais à soma de seus divisores Por exemplo o número 6 tem como divisores 1 2 e 3 Somandose 1 2 3 6 portanto o número 6 é um número perfeito Alguns números perfeitos conhecidos são 6 28 496 e 8128 Analise as alternativas a seguir e assinale a que apresenta um algoritmo correto que leia um número e informe se ele é perfeito ou não algoritmo perfeito var numero divisor soma resto L inteiro inicio para L de 1 ate 1000 passo 1 faca soma 0 divisor 1 numero L repita resto numero mod divisor se resto 0 entao soma soma divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito numero fimse fimpara fimalgoritim algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma divisor escrevalDivisor divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito senao escrevalNão é número Perfeito fimse fimalgoritim algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma soma divisor escreval Divisor divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito senão escrevalNão é número Perfeito fimse fimalgorritmo algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma soma divisor escrevalDivisor divisor fimse divisor divisor 1 ate divisor numero div 2 se soma numero entao escrevalNúmero Perfeito senão escrevalNão é número Perfeito fimse fimalgorritmo algoritmo perfeito var numero divisor soma resto inteiro inicio escrevalNúmero Perfeito escrevaDigite um número leianumero soma 0 divisor 1 repita resto numero mod divisor se resto 0 entao soma soma divisor escrevalDivisor divisor fimse divisor divisor 1 ate divisor numero se soma numero entao escrevalNúmero Perfeito senão escrevalNão é número Perfeito fimse fimalgorritmo Um cientista está estudando determinado material radioativo que possui a característica de perder metade de sua massa a cada 50 segundos Para auxiliar na pesquisa ele precisa de um programa que receba a massa inicial em gramas e informe o tempo necessário para que essa massa se torne menor que 05 grama Ao final o programa deve escrever a massa inicial a final e o tempo sendo que esse deve ser expresso em horas minutos e segundos Um programador desenvolveu a seguinte solução em pseudocódigo para o problema Analise essa solução e selecione abaixo a alternativa correta A O algoritmo está apresentando o tempo em horas minutos e segundos B Se for digitado um valor inicial de massa menor que 05 o algoritmo não irá funcionar C A condição do laço de repetição repitaaté está errada D O laço de repetição enquantofaça poderia substituir o laço repitaaté utilizado no algoritmo invertendo o teste da condição E O laço de repetição repitaaté poderia ser facilmente substituído pelo parafaça pois a quantidade de repetições que serão realizadas é conhecida 4 Considerandose a sintaxe e o funcionamento da estrutura de repetição repitaaté analise as alternativas a seguir e selecione aquela que NÃO está relacionada com essa estrutura A O conjunto de comandos da repetição sempre será executado no mínimo uma vez B O conjunto de comandos da repetição será executado enquanto a condição for falsa C O laço de repetição repitaaté pode ser substituído pelo laço enquantofaça utilizando a mesma condição D É uma estrutura útil para ser utilizada quando não se conhece a quantidade de repetições que serão realizadas E A condição de controle da repetição pode utilizar qualquer expressão com operadores relacionais e lógicos desde que o resultado seja verdadeiro ou falso 5 Considere o seguinte algoritmo em pseudocódigo algoritmo oquefaz var XYZ inteiro inicio escrevalO que faz repita escrevadigite um número inteiro entre 0 e 1000 leiaX ateX0eX1000 y1000 repita Z X div Y X X mod Y Y y div 10 escrevaZ ateY0 fimalgoritmo Todo algoritmo tem um objetivo um problema ou uma necessidade para implementar a solução Assim selecione a alternativa a seguir que expresse corretamente o que esse algoritmo faz A Converte um numeral expresso na base binária para a base decimal B Lê um número e escreve seus dígitos separadamente sempre utilizando quatro dígitos para expressar o resultado C Converte um numeral expresso na base decimal para a base binária D Lê um número e escreve seus dígitos separadamente utilizando apenas os dígitos que o numeral possui para expressar o resultado E Não tem objetivo apenas faz contas soltas e não resolve nenhum problema matemático ou prático Na prática O desenvolvimento de algoritmos e programas é feito para que o computador nos auxilie a realizar processos complexos e repetitivos que envolvam diversas informações e cálculos É possível construir algoritmos para calcular a área de figuras geométricas IMC índice de massa corpórea volume de recipientes média de notas valor de parcelas valor de séries numéricas etc Normalmente desejase executar esses processos para diferentes valores de entrada de dados Nesses casos o algoritmoprograma deverá ser executado diversas vezes para que em cada vez seja possível informar novos dados de entrada Assim seria adequado que após encerrar o processo para o qual foi criado que esse fosse repetido sem que fosse necessário que o usuário o executasse novamente Para atingir esse objetivo podese utilizar a estrutura de repetição repitaaté que executa pelo menos uma vez um conjunto de comandos e depois testa uma condição até que ela seja verdadeira finalizando a repetição Enquanto a condição for falsa o bloco de comandos será repetido Vamos considerar que desejamos construir um algoritmo que apresente um menu de opções de cálculos 1 Calcular a área de um quadrado 2 Calcular a área de um retângulo 3 Calcular a área de uma circunferência 4 Sair do programa O sistema deve pedir que o usuário digite sua opção Quando o usuário digitar a opção 1 o programa deverá solicitar a medida do lado do quadrado calcular sua área e mostrála Caso seja digitada a opção 2 solicitar as medidas do comprimento e altura do retângulo calcular sua área e mostrála Já quando for digitada a opção 3 solicitar a medida do raio da circunferência calcular sua área e mostrála Finalmente se for digitada a opção 4 o programa deve ser finalizado Portanto se a opção digitada não for a opção 4 o processo deve ser repetido Podemse definir os seguintes passos para resolução do algoritmo 1 Ler a opção 2 Caso a opção seja 1 a Ler a medida do lado do quadrado b Calcular a área do quadrado área lado lado c Mostrar a área calculada 3 Caso a opção seja 2 a Ler as medidas de comprimento e altura do retângulo b Calcular a área do retângulo área comprimento altura c Mostrar a área calculada 4 Caso a opção seja 3 a Ler a medida do raio da circunferência b Calcular a área da circunferência área 31416 raio raio c Mostrar a área calculada 5 Se a opção for 4 ir para o passo 6 caso contrário voltar para o passo 1 6 Finalizar o programa O algoritmo a seguir em pseudocódigo implementa a solução do problema proposto algoritmo calculos algoritmo calculos var lado comprimento altura raio area numerico opaco inteiro continua caracter inicio repita limpantela escreval1 Calcular a Area de um Quadrado escreval2 Calcular a Area de um Retangulo escreval3 Calcular a Area de uma Circunferencia escreval4 Finalizar o programa repita leiaopaco se opaco 1 ou opaco 4 entao escrevalOpcao invalida digite nova opaco fimse ate opaco 1 e opaco 4 escolha opaco caso 1 escrevalDigite a medida do lado leialado area lado lado escrevalarea area caso 2 escrevalDigite a medida do comprimento leiacomprimento escrevalDigite a medida da altura leiaaltura area comprimento altura escrevalarea area caso 3 escrevalDigite a medida do raio leiaraio area raio raio pi escrevalarea area fimescolha se opaco 4 entao repita escrevalDigite qualquer letra e pressione enter para continuar leiacontinua ate VERDADEIRO fimse ate opaco 4 escrevalFinalizando programa fimalgoritmo Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar Saiba Para ampliar o seu conhecimento a respeito desse assunto veja abaixo as sugestões do professor Lógica de Programação Estruturas de repetição loop REPITA ATÉ Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar Lógica de Programação com VisualG Estrutura de Repetição Repita Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar