Professional Documents
Culture Documents
Lista de Exercícios 2
1 Instruções
1. Esta é uma lista de reforço e não vale pontos.
2. Cada sessão tem por objetivo treinar uma característica dos algoritmos.
3. Tente fazer sozinho.
4. Lembre-se que todo algoritmo recebe entradas e produz saídas. As entradas pertencem a um domínio e as
saídas pertencem a um contradomínio. Sempre determine o domínio e contradomínio das entradas e saídas.
Eles te ajudaram a definir os tipos das variáveis e fazer regras de validação das entradas.
5. Busque fazer código eficiente, sempre usando SE-SENÃO ao invés de duas estruturas SE, quando possível.
2 Estruturas de repetição
1. Faça um algoritmo para imprimir os números de 1 a 10 utilizando uma estrutura ENQUANTO e um contador.
3. Faça um algoritmo para imprimir os números de 1 a 10 utilizando uma estrutura PARA e um contador.
4. Faça um algoritmo para escrever a palavra PROGRAMACAO 5 vezes utilizando um a estrutura de repetição.
5. Faça um algoritmo para ler um valor N (validar para aceitar apenas valores positivos) e imprimir apalavra
PROGRAMACAO N vezes.
6. Faça um algoritmo para ler um número inteiro e escrevê-lo na tela 10 vezes utilizando uma repetição.
7. Faça um algoritmo que imprima na tela os 10 primeiros números inteiros maiores que 100 utilizando um a
estrutura de repetição.
8. Faça um algoritmo que imprima os números ímpares existentes de entre 1(inclusive) e 9 (inclusive).
9. Faça um algoritmo para ler um valor N (validar para aceitar apenas valores positivos) e imprimir os N primeiros
números inteiros.
10. Faça um algoritmo que imprima a tabuada do 8 utilizando uma estrutura de repetição.
11. Faça um algoritmo para ler um valor X (validar para aceitar apenas valores entre 1 [inclusive] e 10 [inclusive]).
Escrever a tabuada de X.
13. Ler 10 valores e contar quantos estão no intervalo [10,20] e quantos deles estão fora deste intervalo. Escrever
o resultado das duas contagens.
14. Ler o número de alunos existentes em uma turma, ler as notas destes alunos, e calcular a média aritmética
destas notas.
15. Faça um algoritmo para repetir a leitura de um número enquanto o valor fornecido for diferente de 0. Para
cada número fornecido, imprimir se ele é NEGATIVO ou POSITIVO. Quando o número 0 for fornecido a
repetição deve ser encerrada sem imprimir mensagem alguma. Use a estrutura FAÇA/ENQUANTO
16. Escreva outra versão do algoritmo para resolver o problema anterior utilizando a estrutura com teste de saída
no início da repetição (ENQUANTO).
17. Faça um algoritmo para ler uma quantidade indeterminada de valores inteiros. Para cada valor fornecido
escrever uma mensagem que indica se cada valor fornecido é PAR ou ÍMPAR. O algoritmo será encerrado
imediatamente após a leitura de um valor NULO (zero) ou NEGATIVO.
18. Um comerciante deseja fazer o levantamento do lucro das mercadorias que ele comercializa. Para isto,
mandou digitar uma linha para cada mercadoria com o código, preço de compra e preço de venda das
mesmas. Faça um algoritmo que determine e escreva quantas mercadorias proporcionam lucro < 10%, 10%
≤ lucro ≤ 20% e lucro > 20%. Determine também e escreva o valor total de compra e de venda de todas as
mercadorias, assim como o lucro total.
19. Deseja-se fazer um levantamento a respeito da ausência de alunos à primeira prova de Fundamentos de
Computação para cada uma das 14 turmas existentes. Para cada turma, é fornecido um conjunto de valores,
sendo que os dois primeiros valores do conjunto correspondem à identificação da turma (A, ou B, ou C, ...) e
ao número de alunos matriculados, e os demais valores deste conjunto contêm o número de matrícula do
aluno e a letra A ou P para o caso de o aluno estar ausente ou presente, respectivamente. Faça um algoritmo
que, para cada turma, calcule a porcentagem de ausência e escreva a identificação da turma e a porcentagem
calculada; determine e escreva quantas turmas tiveram porcentagem de ausência superior a 5%.
20. Faça um algoritmo para ler dois valores inteiros e imprimir o resultado da divisão do primeiro pelosegundo.
Se o segundo valor informado for ZERO, deve ser impressa uma mensagem de VALOR INVÂLIDO e deverá ser
lido um novo valor. Ao final do programa deve ser impressa a seguinte mensagem: VOCE DESEJA OUTRO
CÂLCULO (S/N)?. Se a resposta for S o programa deverá retornar ao começo, caso contrário deverá encerrar
a sua execução imprimindo quantos cálculos foram feitos.
OBS: O programa só deverá aceitar com a resposta para a pergunta as letras S ou N.
21. Faça um algoritmo para ler uma quantidade indeterminada de duplas de valores (2 valores de cada vez).
Escrever para cada dupla uma mensagem que indique se ela foi informada em ordem crescente ou
decrescente. A repetição será encerrada ao ser fornecido, para os elementos da dupla, valores iguais.
Para os dados de entrada abaixo Deve ser gerada a seguinte saída
54 Decrescente
72 Decrescente
38 Crescente
22
22. Faça um algoritmo para repetir a leitura de uma senha até que ela seja válida. Para cada leitura da senha
incorreta informada escrever a mensagem "SENHA INVÂLIDA". Quando a senha for informada corretamente
deve ser impressa a mensagem "ACESSO PERMITIDO" e o algoritmo deve ser encerrado.
Considere que a senha correta é o valor 1234.
23. Faça um algoritmo que receba uma sequência de números e retorne o maior e o menor número da sequência.
A quantidade de números n é fornecida pelo usuário.
24. Para que a divisão entre 2 números possa ser realizada, o divisor não pode ser nulo. Faça um algoritmo para
ler 2 valores e imprimir o resultado da divisão do primeiro pelo segundo.
OBS: O algoritmo deve validar a leitura do segundo valor (que não deve ser nulo). Enquanto for fornecido um
valor nulo a leitura deve ser repetida. Utilize a estrutura FAÇA/ENQUANTO na construção da repetição de
validação.
25. Reescreva o algoritmo para o problema anterior utilizando a estrutura ENQUANTO na construção darepetição
de validação.
26. Faça um algoritmo para ler as notas da 1a e 2a avaliações de um aluno, calcular e imprimir a média semestral.
Faça com que o algoritmo só aceite notas válidas (uma nota válida deve pertencer ao intervalo [0,10]). Cada
nota deve ser validada separadamente. Deve ser impressa mensagem "Nota inválida" caso a nota informada
não pertença ao intervalo [0,10].
27. Reescreva o algoritmo do problema anterior para que no final seja impressa a mensagem “Novo cálculo (1.sim
2.não)?”; solicitando ao usuário que informe um código (1 ou 2) indicando se ele deseja ou não executar o
algoritmo novamente. Se for informado o código 1 deve ser repetida a execução de todo o algoritmo para
permitir um novo cálculo, caso contrário ele deve ser encerrado.
28. Reescreva o algoritmo do problema anterior validando a resposta do usuário para a pergunta “Novo Cálculo
(1.sim 2.não)?” (aceitar apenas os código 1 ou 2).
29. Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Este tempo é chamado
na físico-química de MEIA-VIDA. Dada a massa inicial, em gramas, faça um algoritmo que determine o tempo
necessário para que essa massa se torne menor que 0.5 gramas. Ao final do algoritmo escreva a massa inicial
e o tempo calculado em horas, minutos e segundos.
30. Estenda o problema anterior, considerando agora que o tempo da MEIA VIDA e a massa do material
radioativo são entrados pelo usuário. Lembre-se de validar os dados.
31. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou não de um novo produto
lançado no mercado. Para isso, forneceu o sexo do entrevistado e sua resposta (sim ou não). Sabendo-se que
foram entrevistadas 2.000 pessoas, faça um algoritmo que calcule e escreva:
33. A Federação Mineira de Futebol contratou você para escrever um programa para fazer uma estatística do
resultado de vários JOGOS. Escreva um algoritmo para ler o número de gols marcados pelo GALO FORTE
VINGADOR e o número de gols marcados pelo CRUZEIRO em um duelo, imprimindo o nome do time vitorioso
ou a palavra EMPATE. Logo após escrever a mensagem “Novo DUELO 1.Sim 2.Não?” e solicitar uma resposta.
Se a resposta for 1, o algoritmo deve ser executado novamente solicitando o número de gols marcados pelos
times em uma nova partida, caso contrário deve ser encerrado imprimindo:
34. Altere o programa do exercício anterior e adicione o América na estatística do futebol mineiro. Desta vez,
avise ao usuário para digitar os seguintes códigos dos times:
• 1 – Galo
• 2 – América
• 3 – Cruzeiro
Ao final deverá ser impresso:
36. Supondo que a população da República Democrática dos Bruzundangas seja da ordem de 90.000.000
(noventa milhões) de habitantes com uma taxa anual de crescimento de 3% e que a população de um país
União Federalista do Milano seja de aproximadamente 200.000.000 (duzentos milhões) de habitantes com
uma taxa anual de crescimento de 1,5%. Faça um algoritmo que calcule e escreva o número de anos
necessários para que a população dos Bruzundangas alcance ou ultrapasse a população dos Milanos. Suponha
que serão mantidas essas taxas de crescimento.
37. Faça um algoritmo para uma caixa registradora. A máquina recebe os produtos comprados e a quantidade de
cada um deles e retorna o valor total da compra. A funcionária deverá entrar com o código do produto e a
quantidade. A tabela abaixo mostra os produtos existentes. Quando a funcionária terminar de entrar os
produtos ela deverá digitar código do produto = 0 (zero). Neste instante, a caixa registradora deverá retornar
o valor total da compra. Lembre-se de fazer a verificação de erros checando se a funcionária digitou os códigos
corretamente.
39. Em um frigorífico existem 10 bois. Cada boi traz em seu pescoço um cartão contendo seu número de
identificação e seu peso. Faça um algoritmo que encontre e escreva o número e o peso do boi mais gordo e
do boi mais magro.
40. Uma pesquisa sobre algumas características físicas da população de uma determinada região coletou os
seguintes dados, referentes a cada habitante, para serem analisados:
• idade em anos
• sexo (masculino, feminino)
• cor dos olhos (azuis, verdes, castanhos)
• cor dos cabelos (louros, castanhos, pretos)
Para cada habitante são informados os quatro dados acima. A fim de indicar o final da entrada, após a
sequência de dados dos habitantes, o usuário entrará com o valor –1 para a idade, o que deve ser
interpretado pelo algoritmo como fim de entrada.
41. Uma universidade deseja fazer um levantamento a respeito de seu concurso vestibular. Para cada curso, é
fornecido o seguinte conjunto de valores:
• o código da curso;
• número de vagas;
• número de candidatos do sexo masculino; • número de candidatos do sexo feminino.
A entrada de dados será interrompida quando o código do curso for igual a zero. Faça um algoritmo que
calcule e escreva, para cada curso, o número de candidatos por vaga e a porcentagem de candidatos do sexo
feminino (escreva também o código correspondente do curso); determine o maior número de candidatos por
vaga e escreva esse número juntamente com o código do curso correspondente (supor que não haja empate);
calcule e escreva o total de candidatos.
42. Deseja-se fazer uma pesquisa a respeito do consumo mensal de energia elétrica em uma determinada cidade.
Para isso, são fornecidos os seguintes dados:
(a) para cada consumidor, o seu número e o total a pagar, (b) o que
foi calculado nos itens b, c, d, e acima especificados.
43. Tem-se uma estrada ligando várias cidades. Cada cidade tem seu marco quilométrico. Faça um algoritmo que
leia vários pares de dados, contendo cada par os valores dos marcos quilométricos, em ordem crescente, de
duas cidades. O último par contém estes dois valores iguais. E calcule os tempos decorridos para percorrer a
distância entre estas duas cidades, com as seguintes velocidades: 20, 30, 40, 50, 60, 70 e 80 km/hora,
sabendo-se que ; onde t = tempo; e = espaço; v = velocidade; escreva os marcos quilométricos, a
velocidade e o tempo decorrido entre as duas cidades, apenas quando este tempo for superior a duas horas.
44. Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada a massa inicial,
em gramas, faça um algoritmo que determine o tempo necessário para que essa massa se torne menor que
0.5 gramas. Ao final do algoritmo escreva a massa inicial e o tempo calculado em horas, minutos e segundos.
Faça um algoritmo que receba do usuário uma data no formato dia/mês/ano e imprima na tela em que dia
da semana esta data recairá nos próximos 10 anos. Ao final, pergunte ao usuário "NOVA DATA (‘S’ - Sim; ‘N’
- Não)? Se usuário responder sim, repita o procedimento pedindo uma nova data.
2. Um usuário digita uma sequência de números x1,x2,...,xn. Faça um algoritmo que calcule a média e o desvio
padrão destes três números. A média é definida como . O desvio padrão é dado por
3. Calcule a média e o desvio padrão de uma sequência de números como no exercício anterior, mas agora
considere que a quantidade de números n não é fornecida pelo usuário. o programa irá terminar quando o
usuário digitar o número 0 (zero).
. (1)
6. Faça um algoritmo que calcule e escreva a soma dos 20 primeiros números da série:
. (2)
(3)
Retorne quantos elementos são necessário para que a série possua precisão de 4 casas decimais se
comparada com a função exp(x) da biblioteca MATH.H.
(5)
Retorne quantos elementos são necessários para que a série possua precisão de 4 casas decimais se
comparada com a função sin(x) da biblioteca MATH.H. Faça este algoritmo com apenas uma estrutura de
repetição.
10. Faça um algoritmo que receba um número real x e um inteiro positivo n e calcule o valor aproximado do
cosseno de x calculando-se os n termos da série abaixo:
(6)
Retorne o valor do cosseno calculado com n termos Retorne qual a diferença entre o valor calculado com n
termos e o valor da função COS(X) presente na biblioteca MATH.H. Imprima os valores calculados, o número
de termos usados e o erro.
11. Sejam P(x1,y1) e Q(x2,y2) dois pontos quaisquer no plano. A sua distância é dada por:
Faça um algoritmo que leia várias linhas com quatro valores separados por vírgula, correspondentes às
coordenadas dos pontos P e Q e retorne a distância destes pares de pontos. A leitura dos dados será
interrompida quando as quatro coordenadas forem iguais a zero.
12. Faça um algoritmo que receba diversos pares de números A e B entrados pelo usuário, e determine a soma
dos cubos de todos os números pares compreendidos no intervalo entre B e A. Retorne o intervalo
pesquisado e o valor da soma calculada. a entrada de dados deverá ser interrompida quando A e B forem
iguais a zero.
13. Faça um algoritmo para calcular a raiz quadrada de um número positivo usando o roteiro abaixo, baseado
no método de aproximações sucessivas de Newton. Seja Y o número inteiro que se deseja obter a raiz
quadrada: