·

Engenharia Mecânica ·

Introdução à Lógica e Programação

Send your question to AI and receive an answer instantly

Ask Question

Preview text

AULA 3 COMANDOS DE REPETIÇÃO Vamos programar Descrição Seu programa deve calcular a média aritmética de sete números reais representando a temperatura em sete dias seguidos e informar se estava quente ou frio Média acima de 150 graus está quente e frio caso contrário Entrada Uma linha contendo sete números reais Saída Seu programa deve imprimir a frase Quente ou Frio seguida de uma quebra de linha Temperatura da semana Média aritmética da semana d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Mais um pouco de programação Como calcular a média da temperatura para 30 semanas Descrição Seu programa deve calcular a média aritmética da temperatura para cada uma das 30 semanas Média maior do que 150 é considerada quente e frio caso contrário Entrada Sete números reais temperatura lidos da entrada padrão para cada semana Saída Seu programa deve imprimir a frase Quente ou Frio seguida de uma quebra de linha para cada semana Média aritmética para 30 semanas Média aritmética para 30 semanas Semana 1 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Semana 2 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Semana 29 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Semana 30 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio for Repetição de contagem for i in rangeN comando comando único for i in rangeN comando1 sequência de comandos comandoN for Repetição de contagem rangen gera a sequência de números 0 1 2 n 1 A cada repetição a variável de controle assume o próximo valor da sequência for i in range5 bloco de instruções for Repetição de contagem Exemplo imprimir números de 0 a 4 for i in range5 printi Exemplo imprimir números de 1 a 5 for i in range5 printi1 RANGE A função range gera uma sequência de números Até agora vimos que rangen gera a sequência 0 1 2 n 1 A forma mais completa é rangeinicio fim passo passo é opcional se não for informado é 1 que gera uma sequência do número inicio até o número fim não incluso contando de passo em passo RANGE Exemplos range1 5 gera 1 2 3 4 range5 1 1 gera 5 4 3 2 passo negativo range0 10 2 gera 0 2 4 6 8 de 2 em 2 range0 9 3 gera 0 3 6 Média aritmética para 30 semanas Semana 1 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Semana 2 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Semana 29 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Semana 30 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Média aritmética para 30 semanas for i in range29 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Média aritmética para 30 semanas for i in range30 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Descrição Seu programa deve imprimir os números divisíveis por 2 e também por 3 que sejam menores que N Entrada Um número N indicando o limite para impressão Saída Seu programa deve imprimir os números que são divisíveis por 2 e 3 Imprima um por linha Divisíveis por 2 e 3 Mostrar os números que são divisíveis por 2 e 3 menores que 100 19 for i in range101 if i 2 0 or i 3 0 print i Mostrar os números que são divisíveis por 2 e 3 menores que 100 20 for i in range100 if i 2 0 and i 3 0 print i Mostrar os números que são divisíveis por 2 e 3 menores que 100 21 for i in range6 100 6 print i Loops aninhados As estruturas de repetição são consideradas instruções Isso significa que é possível incluir uma estrutura de repetição dentro de outra Isso é o que chamamos de loops aninhados Média aritmética para 30 semanas for i in range30 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Média aritmética para 30 semanas media 0 for i in range30 for j in range7 d floatinput media media d media media70 if media 150 printQuente else printFrio for i in range30 d1 floatinput d2 floatinput d3 floatinput d4 floatinput d5 floatinput d6 floatinput d7 floatinput media d1d2d3d4d5d6d770 if media 150 printQuente else printFrio Média aritmética para 30 semanas for i in range30 media 0 for j in range7 d floatinput media media d media media70 if media 150 printQuente else printFrio Exemplo programa que imprime a tabuada de 9 for i in range10 printf9 i 9 i for Repetição de contagem Escrever da tabuada de 1 até a tabuada de 5 A saída deve obedecer ao seguinte formato 1 x 1 1 1 x 2 2 1 x 9 9 2 x 1 1 2 x 2 4 2 x 9 18 5 x 9 45 Exemplo tabela de multiplicação tabuada de 1 tabuada de 2 Pensando de fora pra dentro escrever a tabuada de 1 até a tabuada de 5 for i in range1 6 escrever a tabuada de i escrever a tabuada de i for j in range1 10 printfi j i j QUIZ TIME Encontre o erro escrever a tabuada de 1 até a tabuada de 5 for i in range1 6 for i in range1 11 printfi j i j Encontre o erro Comandos de repetição E se a quantidade de entradas não for conhecida while Repetição prétestada inicialização variável iterativa while condição comando atualização da variável iterativa comando único inicialização variável iterativa while condição comando1 sequência de comandos comandoN atualização da variável iterativa while Repetição prétestada Exemplo imprimir de 1 a 3 e imprimir Fim i 1 1 inicialização da variável de controle while i 3 2 teste da condição printi 3 instruções a serem repetidas i i 1 4 atualização da variável de controle Descrição Seu programa deve calcular a média aritmética da temperatura para cada uma das N semanas Média maior do que 150 é considerada quente e frio caso contrário Entrada Para cada semana a entrada contém duas linhas A primeira possui sete números reais temperatura e a segunda contém um inteiro C que indica se existem mais semanas C 1 ou não C 0 após a atual Saída Seu programa deve imprimir a frase Quente ou Frio seguida de uma quebra de linha para cada semana Média aritmética para N semanas Média aritmética de N semanas continua 1 while continua 0 media 0 for j in range7 d floatinput media media d media media70 if media 150 printQuente else printFrio continua intinput QUIZ TIME While Qual a saída do código abaixo t 5 while t 0 r intinput r 1 printr printFinal Encontre o erro JUST WAITING FOR YOUR INFINITE LOOP TO END memegeneratornet While while i 3 i 1 printi i i 1 printFim Encontre o erro i 3 while i 8 printi i i 1 printFim While programa para contar de 3 a 8 Encontre o erro Dica para problemas de loops Há duas formas principais de entrada FOR O primeiro valor da entrada indica quantos números serão fornecidos na continuação da entrada WHILE É usado um valor especial para indicar o final da entrada Indicação da quantidade de números da entrada n intinput for i in rangen x intinput printx 2 Entrada Saída 2 2 3 4 6 3 1 5 3 2 10 6 Programa dobro Dada uma lista de N inteiros imprima o dobro de cada número Entrada A entrada é composta de várias linhas cada um com um número O primeiro número é um inteiro positivo N Os N números seguintes são valores inteiros X para os quais se deve calcular o dobro Saída Seu programa deve produzir N linhas na saída contendo o dobro de cada um dos N números Valor especial sentinela indicando fim da entrada x intinput while x 0 printx 2 x intinput Dada uma sequência de números inteiros imprima o dobro de cada número Entrada A entrada é composta de várias linhas cada uma com um número da sequência O número 0 representa o final da entrada isto é ele não faz parte da sequência e ao ler esse valor seu programa deve encerrar Saída Para cada linha da entrada exceto o 0 seu programa deve imprimir uma linha com o dobro do número lido Entrada Saída 1 2 3 0 2 4 6 2 1 0 4 2 break e continue As instruções break e continue permitem alterar o fluxo de execução normal de um loop seja for ou while Observações Em geral é possível escrever programas sem usar essas instruções Em geral o seu uso deve ser evitado pois tende a tornar o código mais difícil de entender sobretudo em loops com muitas linhas de código while True n intinput if n 0 break printn 2 printFim Dentro de qualquer estrutura de repetição é possível usar a instrução break para sair do loop break continue Dentro de qualquer estrutura de repetição é possível usar a instrução continue para voltar para o início do loop Não imprime os números pares for i in range1 100 if i 2 0 continue printi Dada uma lista de N inteiros encontre a soma de todos eles Entrada A entrada é composta de várias linhas cada uma com um número O primeiro número é um inteiro positivo N Os N números seguintes são valores inteiros X que devem ser somados Saída Seu programa deve produzir uma única linha na saída contendo a soma de todos os N inteiros Problema SOMA adaptado de httpsbrspojcomproblemsSOMA Entrada Saída 2 2 3 5 3 1 5 3 9 n intinput soma 0 for i in rangen x intinput soma x printsoma Acumulador é uma variável que guarda o resultado parcial de uma computação sendo atualizada dentro de um loop com base no seu valor anterior e no valor do item sendo analisado na iteração atual É o caso da variável soma do exemplo anterior Conceito acumulador 3 4 5 3 7 0 12 soma X Dada uma lista de N inteiros nãonegativos distintos entre si encontre o maior de todos eles Entrada A entrada é composta de vários números em linhas diferentes O primeiro número é um inteiro positivo N Os N números seguintes são valores inteiros X a serem analisados Saída Seu programa deve produzir uma única linha na saída contendo o maior de todos os N inteiros Problema MÁXIMO adaptado de httpsbrspojcomproblemsSOMA n intinput maior 1 for i in rangen x intinput maior maxmaior x printmaior Alternativa if x maior maior x Entrada Saída 2 2 3 3 3 1 5 3 5 x 3 8 5 max max max major 0 3 8 8 A tabuada do Zezinho Autor Leonardo Costa Silva Zezinho gosta muito de matemática e acha as tabuadas muito simples Zezinho então resolveu imprimir sua própria tabuada que sempre irá exibir os 101 cento e um primeiros valores para a tabuada de um dado número e para isso ele vai precisar de sua ajuda Implemente a tabuada do Zezinho Entrada A entrada contém um inteiro N 1 N 100 representando a tabuada cujo valor será multiplicado pelos 101 cento e um primeiros números naturais 0 1 2 3 100 Saída A saída consiste em 101 linhas contendo em cada uma um número inteiro que representa a multiplicação de N por cada um dos 101 primeiros números naturais Entrada Saída 1 0 1 2 3 100 3 0 3 6 9 300 Escolha do Campeão League of Legends está cheio de campeões de vários tipos de mentes malignas a monstros épicos Diferentes campeões assumem diferentes papéis e usam diferentes estratégias Lucas sempre joga LOL e gosta de variar na sua escolha de campeão dessa vez ele quer jogar com o campeão de maior nível de poder dentre os que ele mais gosta Dado um número N que representa a quantidade de campeões favoritos de Lucas ajude ele a decidir qual deles tem o maior nível Entrada A entrada consiste na primeira linha de um número inteiro N 1 N 100 que representa o número de campeões favoritos de Lucas Nas próximas N linhas será fornecido em cada uma um número inteiro P 0 P 10000 que representa o nível de poder de cada um dos N campeões Saída A saída deverá conter apenas o nível de poder do campeão mais forte Entrada Saída 3 1500 3600 500 3600 7 300 5200 540 729 3567 480 4000 5200 A Joia do Tempo A Joia do Tempo é uma das seis Joias do Infinito remanescente de uma singularidade que antecedeu o universo representando o elemento do tempo Estava contida dentro do Olho de Agamotto e colocado sob a proteção dos Mestres das Artes Místicas Em 2017 o Doutor Estranho tomou posse da joia e a usou para derrotar Dormammu No ano seguinte durante a Guerra Infinita o Doutor Estranho a usou para avançar no tempo para ver outros futuros e acessar os possíveis resultados daquela batalha conseguindo verificar no total 14 milhões de resultados e destes apenas 1 os levava à vitória Os Vingadores não sabiam mas o Doutor Estranho não fez isso sozinho ele teve a ajuda de um exímio programador você Para o Dr Estranho verificar se aquele futuro que ele observava levava à vitória ele estabeleceu 3 parâmetros que determinavam o sucesso da missão e dava estes parâmetros como entrada ao programa criado por você os parâmetros são 1 O Homem Formiga NÃO poderia entrar no corpo de Thanos 2 O Homem de Ferro DEVE morrer no final 3 O Homem Aranha NÃO poderia se sentir bem Entrada A entrada pode possuir várias linhas Em cada linha serão dados três parâmetros HF HDF e HA que podem conter as strings SIM ou NAO e respondem respectivamente às questões O Homem Formiga entrou no Thanos O Homem de Ferro morreu no final e O Homem Aranha se sentiu bem O programa deve ler entradas até receber uma entrada FIM FIM FIM Saída A saída consiste em imprimir VITORIA caso o Dr Estranho tenha encontrado um futuro com os parâmetros necessários ou DERROTA caso não encontre Entrada Saída NAO SIM SIM SIM SIM SIM NAO SIM NAO FIM FIM FIM VITORIA NAO NAO NAO SIM SIM SIM SIM NAO SIM NAO SIM SIM FIM FIM FIM DERROTA Jogo da pesca Autora Monique Silva Você está em uma competição de pesca em Pelican Town e deseja calcular a quantidade total de peixes que você pegou dentro de um determinado período de tempo Cada peixe levou um certo tempo para ser pescado Dado uma sequência de tempos que você levou para pescar cada um dos peixes e um inteiro que representa o tempo total disponível para a competição calcule o número máximo de peixes que você pode usar dentro do tempo disponível Entrada A primeira linha contém um inteiro N 1 N 100 representando o número de peixes pescados e um inteiro T 1 T 100000 que representa o tempo total disponível para pescar durante a competição em minutos A seguir serão dados N inteiros H 1 H 100 um por linha representando o tempo gasto para pescar cada um dos N peixes em minutos na sequência em que foram pescados Saída A saída consiste em um único inteiro que representa o número máximo de peixes que você pode contabilizar dentro do tempo disponível Caso não consiga nenhum imprima 0 zero Entrada Saída 5 7 2 3 1 4 2 3 6 10 4 2 3 1 5 6 4 Defesa de Ba Sing Se Água Terra Fogo Ar Há muito tempo as quatro nações viviam em harmonia até que tudo mudou quando a nação do fogo decidiu atacar Atualmente a grande cidade de Ba Sing Se é a última grande metrópole que resiste à nação do fogo Porém com o retorno do avatar a nação do fogo decidiu começar uma campanha contra a grande cidade Sabendo da campanha da nação do fogo e conhecendo seus poderes de oráculo o avatar pediu sua ajuda para saber se a muralha da cidade resistirá aos ataques até a sua chegada ou se ela cairá Entrada A primeira linha contém dois inteiros D 1 D 100 a quantidade de dias que o avatar irá levar para chegar e E 100 E 10000 a energia inicial da muralha da cidade As próximas D linhas terão cada uma um inteiro A 1 A 100 que representa o dano que a nação do fogo fez à energia da muralha em cada dia D Se a energia da muralha chegar a zero a cidade cairá Saída A saída consiste em uma única linha Caso a energia da muralha seja maior que zero no último dia de ataque antes da chegada do Avatar você deverá imprimir a mensagem Resistiu ou caso contrário você deverá imprimir o dia em que a cidade caiu ou seja o dia em que a energia da muralha chegou a zero Entrada Saída 4 400 4 dias e a energia inicial da muralha 100 energia 100 300 primeiro dia 100 energia 100 200 segundo dia 100 energia 100 100 terceiro dia 99 energia 99 1 quarto e último dia Resistiu 3 111 3 dias e energia inicial 111 10 energia 10 101 100 energia 100 01 1 energia 1 0 terceiro dia 3 3 100 50 60 segundo dia 30 2 Obs O que está escrito em vermelho é apenas explicação não faz parte da entrada Coelhinhos da Páscoa Autor Rubisley de Paula Lemes Joãozinho é estudante de Agronomia e resolveu começar uma criação de coelhos da Páscoa por causa de seu amigo Zezinho que também tinha a dele A criação de Joãozinho é de J coelhos e a criação do Zezinho que é maior é de Z coelhos Sabese que cada coelho bota um ovo por mês e dali nasce um novo coelhinho da Páscoa portanto a taxa de crescimento é de 100 por mês Porém como Joãozinho é muito cuidadoso e competitivo ele cuida muito muito bem dos seus coelhos de forma que ele tem uma taxa de mortalidade de Jm por mês menor que a criação de Zezinho que é de Zm por mês Sim é triste mas infelizmente os coelhinos da Páscoa também morrem Sabendo de tudo isso Joãozinho quer saber quantos meses são necessários para que a criação dele ultrapasse ou iguale a criação do Zezinho em número de coelhos considerando que as suas taxas de mortalidade e crescimento não serão alteradas e que Jm é menor que Zm Ajude Joãozinho a ser o maior criador de coelhos da Páscoa do mundo fazendo este programa para ele ENTRADA A entrada é composta por uma linha com 4 números inteiros J 10 J 50 Z J Z 100 Jm 1 Jm 10 e Zm Jm 5 Zm 25 representando respectivamente o número de coelhos de Joãozinho o número de coelhos de Zezinho a taxa de mortalidade da criação de Joãozinho e a taxa de mortalidade de Zezinho SAÍDA Um número inteiro representando a quantidade de meses necessários para que a criação de Joãozinho se iguale ou supere o número de coelhos de Zezinho Obs A taxa de mortalidade da criação de Joãozinho sempre será menor que a de Zezinho e serão constantes O número de coelhos de Joãozinho sempre será menor que o de Zezinho inicialmente A cada mês descontase a quantidade inteira de mortos antes de dobrar a quantidade de coelhos Entrada Saída 50 100 5 15 13 20 40 3 18 9 Masmorra Estamos prestes a entrar em uma masmorra com diversos perigos e aventuras O princípio da aventura é vencer a masmorra e sair de lá com todos os seus tesouros ou morrer tentando A aventura começa com o seu personagem no Lv 1 Nível 1 termina imediatamente quando ele atinge o Lv 5 ou caso seja derrotado por um monstro Entrada A entrada se inicia com um inteiro N 1 N 20 representando o número de portas que serão abertas na masmorra A partir da linha seguinte a entrada consiste em uma sequência de caracteres e inteiros um por linha que representam o que acontecerá após abrir cada uma das N portas da masmorra Podendo cada caracter ser t Encontramos em dada porta um tesouro Logo após na mesma linha temos um inteiro q 1 q 2 assim o nível do personagem aumenta em q 1 Lv ou 2 Lv m Encontramos um monstro ao abrir determinada porta Logo após na mesma linha temos um inteiro f 1 f 5 representando a força do monstro Nesse caso vencemos o combate e ganhamos mais 1 nível 1 Lv se o nosso nível for maior ou igual a f Caso contrário somos derrotados b Uma maldição que cai de forma imediata Logo após na mesma linha temos um inteiro c 1 c 2 ou seja o nível do personagem diminui em c 1 Lv ou 2 Lv Cuidado pois o nível do personagem no mínimo será zero porém o jogo não termina por causa dessa ocorrência Saída A saída consiste em um conjunto de strings de acordo com os casos abaixo Sempre que acontecer um combate imprima Combate iniciado Em seguida na próxima linha imprima VITORIA se o combate for bem sucedido caso contrário imprima Derrota Fim da aventura terminando imediatamente o programa Se o personagem atingir o Lv 5 imprima Aventura concluida terminando imediatamente o programa Caso nenhuma das situações acima ocorra não imprima nada além de uma quebra de linha Entrada Saída 4 t 1 t 1 b 1 m 3 Combate iniciado Derrota Fim da aventura 4 t 1 t 1 m 3 m 1 Combate iniciado VITORIA Combate iniciado VITORIA Aventura concluida