1. Comunicação e Multimédia
Lógica Computacional
EXERCÍCIOS
ANO LETIVO: 2012/2013
II - Algoritmia
1. Elabore um algoritmo que permita somar dois quaisquer números, visualizando o
resultado obtido.
2. Elabore um algoritmo que permita calcular a Área de um quadrado. (Área = Lado×Lado)
3. Elabore um algoritmo que permita calcular o perímetro de um quadrado.
4. Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a
área do mesmo.
5. O preço de um automóvel é calculado pela soma do preço de fábrica com o preço dos
impostos (45% do preço de fábrica) e a percentagem do revendedor (28% do preço de
fábrica). Faça um algoritmo que leia a marca e o modelo do automóvel e o preço de
fábrica e imprima o nome do automóvel e o preço final.
6. Elabore um algoritmo que permita calcular a Média por si obtida à UC de Lógica
Computacional, em função das classificações parciais, obtidas a cada componente
de avaliação. No final, deverá apresentar a nota e a informação
Aprovado/Reprovado, conforme o caso.
7. Elabore um algoritmo que, de entre dois números fornecidos pelo utilizador, permita
encontrar o menor deles.
8. Elabore um algoritmo que, de entre três números fornecidos pelo utilizador, permita
encontrar o maior deles.
9. Elabore um algoritmo que permita, através da inserção dos lados de um triângulo,
identificar de que tipo de triângulo se trata.
10. Elabore um algoritmo que permita converter Km em Milhas ( e v i c e - v e r s a ) e, se o
numero de Km (convertidos ou a converter) for superior a 500, visualizar “muito longe”.
2. 11. Elabore um algoritmo que permita converter Euros em Escudos e vice-versa,
dependendo da escolha do utilizador.
12. Elabore um algoritmo que permita aceitar e de seguida visualizar o nome de N pessoas.
13. Elabore um algoritmo que permita aceitar apenas valores positivos.
14. Elabore um algoritmo que permita encontrar o maior e menor valor de uma série de
N números positivos fornecidos.
15. Faça um algoritmo que leia N números inteiros positivos e visualize o menor deles.
16. Dada uma série de N valores reais, faça um algoritmo que calcule e escreva a média
aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser
atribuída 10 para a média.
17. Elabore um algoritmo que permita efetuar a soma dos N primeiros números inteiros
positivos.
18. Elabore um algoritmo que permita calcular a soma dos N primeiros números pares
positivos.
19. Faça um algoritmo que repita a mensagem Introduza a Letra “a” até que se verifique a
sua inserção.
20. Uma empresa tem, para um determinado funcionário, uma ficha contendo o nome,
número de horas trabalhadas num determinado mês e o nº de dependentes.
Considerando que:
A empresa paga 12 euros por hora e 40 euros por cada dependente.
Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IRS.
Faça um algoritmo para ler o n ome do funcionário, o número de horas trabalhadas e o
número de dependentes. Após a leitura, deverá processar a folha de vencimento do
funcionário indicando (entre outros que ache convenientes): o n ome do funcionário, o
salário bruto, os valores descontados para cada tipo de imposto e o salário líquido.
21. Elabore um algoritmo que permita calcular o fatorial de um número, tendo em conta
que:
3. 22. Faça um algoritmo que permita ler a base e a altura de N triângulos e que imprima as
respetivas áreas.
23. Elabore um algoritmo que leia e armazene as notas de uma turma de N alunos numa
disciplina e calcule a sua média. O professor pode apenas inserir as notas dos alunos
que entender, não sendo imperativo que haja a inserção das 60 notas visto que certos
alunos podem faltar ao Exame.
24. Elabore um algoritmo que leia e armazene os valores anuais de Precipitação de N
Localidades. Para além disso pretende-se que apresente o valor máximo, o valor
mínimo e a média dos valores lidos.
25. Elabore um algoritmo que permita contar todos os números pares e ímpares
introduzidos, aleatoriamente, pelo utilizador.
26. Elabore um algoritmo que mostre dados estatísticos tendo como base um universo de
N entrevistas realizadas com o objetivo de saber quantas pessoas começaram a
trabalhar com menos de 18 anos, mais de 18 anos e qual o sexo, [M,F].
27. Elabore um algoritmo que permita efetuar somas entre dois números fracionários
supondo que o denominador é comum. O resultado deverá ser apresentado no
formato: x/y
28. Elabore um algoritmo que permita ordenar um vetor de N números por ordem crescente
ou decrescente, mediante a escolha do utilizador.
29. Elabore um algoritmo que permita efetuar a procura de um determinado número,
fornecido pelo utilizador, num vetor de N posições, carregado aleatoriamente com
números de 1 a 100.
30. Elabore um algoritmo que permita apagar todos os números pares de um vetor de
100 posições, reordenando-o de seguida e garantindo que não ficam posições vazias
entre valores.
Original 1 2 5 6 7 9
Incorreto 1 5 7 9
Correcto 1 5 7 9
4. 31. Elabore um algoritmo que permita fazer uma inserção ordenada por ordem crescente
de N números inteiros.
32. Elabore um algoritmo que permita armazenar uma lista de N números inteiros e de
seguida permita, de acordo com uma escolha, ordenar essa mesma lista por ordem
crescente ou decrescente.
33. Elabore um algoritmo que permita efetuar o registo de N automóveis. Para cada
automóvel pretende-se que sejam guardadas as seguintes características: Ref. do
Chassi, Marca e Ano de fabrico. Pretende-se ainda que seja permitido consultar os
registos efetuados (tantas vezes quantas o utilizador quiser), sendo, para isso,
fornecida pelo utilizador a Ref. do Chassi.
34. Um determinado partido político (“SóPromete”) pretende ter um programa que lhe
permita controlar os votos dos partidos adversários (e do seu) e no fim lhe forneça
uma análise comparativa no que diz respeito à posição em que cada partido ficou nas
eleições. Elabore um algoritmo que sirva de solução ao que é pretendido pelo partido
“SóPromete”, tendo em atenção o seguinte:
Além do partido referido existem mais dois: “JáPrometi” e “VouPrometer”;
As eleições decorrem em 10 regiões distintas devendo ficar armazenados os votos de
cada partido;
A análise pretendida consta numa relação da posição em que cada partido ficou
após o apuramento de todos os votos de todas as regiões sendo a terminologia a
seguinte:
a) O Partido com mais votos : “Partido vencedor das eleições”;
b) O segundo partido com mais votos: “Partido quase vencedor das eleições”;
c) O último partido: “Partido que volta a tentar para o ano”.
Se possível pretende-se também que forneça a mesma relação anterior mas relativa
a cada região.
35. Um determinado hipermercado está a fazer uma campanha promocional no seu posto de
combustível, de acordo com a tabela seguinte:
Desconto por quantidade Preço Base
Tipo
Combustível Acima de 40
Até 20 L Até 40 L (€/L)
L
Gasolina 95 3% 5% 8% 1,479
Gasóleo 4% 7% 10% 1,334
5. Escreva um algoritmo que permita ler o número de litros vendidos e o tipo de combustível e
calcule o valor (com desconto) a pagar. O algoritmo deverá, obrigatoriamente, utilizar
estruturas de decisão SE… ENTÃO e ESCOLHE… CASO.
36. O algoritmo apresentado a seguir contém alguns erros. Identifique-os e corrija-os,
explicando a consequência que cada um deles teria na execução do programa.
inicio
real valor, média, soma
contador
soma <- 0
contador <- 1
enquanto valor > 0 faz
escrever "Introduza o ",contador, "º valorn",contador,"º valor = "
valor
soma <- soma + valor
contador <- contador + 1
soma <- soma - valor
media <- soma / contador – 2
se media < 0 entao
escrever "ATENÇÃO valor NEGATIVO n média = ", media
senao
escrever "média = ", media, "nIntroduziu ",contador - 2, " valores"
fimse
37. Sem recorrer a dados estruturados (vetores), desenhe um algoritmo que permita:
a) ler, repetidamente, números inteiros positivos, num mínimo de 4;
b) as entradas deverão ser validadas (os valores referem-se a resultados de uma
avaliação [escala 0-20]);
c) o programa deverá ser interrompido através de uma instrução dada pelo utilizador;
d) no final, o algoritmo deverá apresentar as três notas mais elevadas, de entre todas
as introduzidas.
38. Considere o seguinte algoritmo:
inicio
inteiro N, valor, M, contador
escrever "Quantos valores quer ler?nN = "
ler N
para contador de 1 ate N passo 1
escrever "Introduza o ",contador, "º númeronN_",contador, " = "
ler valor
se valor > M entao
M <- valor
fimse
proximo
escrever "-----------------n"
escrever "M = ", M
fim
6. 38.1. Faça a traçagem do algoritmo, 38.2. Analise o algoritmo e simule o que
completando a tabela seguinte. apareceria na tela (ecrã) quando
executado, usando os dados de 38.1.
Tela
N Contador valor M
4
25
-3
6
43
12
7
38.3. Proponha um enunciado para o algoritmo apresentado.
39.
39.1 Escreva um algoritmo que permita ler um vetor linha de tamanho N, a definir pelo
utilizador e depois o ordene por ordem crescente.
39.2. Introduza as alterações que julgue necessárias para que o algoritmo implementado
em 5.1 possibilite ordenar o vetor por ordem crescente/decrescente, conforme escolha
do utilizador.
Nota: O algoritmo nunca poderá ser interrompido caso o utilizador se engane introduza uma escolha inválida.
40. Escreva um algoritmo que permita somar duas fracções. A estrutura do algoritmo deverá
respeitar as seguintes indicações:
O utilizador deverá ser solicitado a introduzir as duas fracções em separado;
Para facilitar, cada fracção deverá ser lida pedindo o numerador e o denominador, em
separado;
O programa deverá identificar se o denominador das duas fracções é o mesmo e, nesse
caso, apresentar o resultado somando os numeradores;
Se os denominadores forem diferentes, o programa deverá encontrar o mínimo múltiplo
comum e depois apresentar o resultado.
41. Considere o seguinte algoritmo:
inicio
inteiro num, i
escrever “Introduza um número nN = “
ler num
7. enquanto num > 0 faz
i <- i+1
escrever “Introduza um número nN = “
ler num
fimenquanto
Escrever “Foram introduzidos “, i, “números”
Fim
41.1. Explique o objetivo deste algoritmo e apresente o significado de cada linha;
41.2. Altere o algoritmo fornecido, usando uma estrutura de repetição REPETE… ATE, em
substituição da estrutura ENQUANTO… FAZ, mas de forma que o resultado do algoritmo
não seja alterado.
42. Desenvolva um algoritmo que leia um número e crie uma capicua. Por exemplo, lendo 367 deverá
obter a capicua 367763.
43. Escreva um algoritmo que:
Permita implementar um jogo simples, em que o utilizador tenta adivinhar um número
inteiro (igual ou inferior a 10000) gerado aleatoriamente pelo computador;
A cada tentativa, o programa deverá indicar se o número introduzido é menor ou maior
do que o número gerado;
O jogo termina quando o utilizador acertar no número gerado;
No final do jogo deverá ser apresentado o número total de tentativas utilizadas pelo
jogador;
Armazene todas as tentativas utilizadas num vector.
Nota: para gerar um número aleatório igual ou inferior a 10000 deverá incorporar o seguinte código no seu
programa:
inteiro numero
numero <- aleatorio() * 10000