Fundação Minerva – Cultura – Ensino e Investigação Científica
Universidade Lusíada – Norte, Campus de Vila Nova de Famalicão
Faculdade de Engenharias e Tecnologias
Linguagens de Programação – Proposta de Exercícios
Algoritmia: conceitos básicos
Implemente todos os algoritmos dos acetatos.
Teste-os convenientemente de forma a garantir a inexistência de erros de lógica.
Decisões
1. Para o algoritmo “maior de 3 valores”, apresente valores de teste que cumpram cada
uma das seguintes alíneas:
a) As duas condições (corrente > maior) são ambas falsas;
b) As duas condições são ambas verdadeiras;
c) A primeira condição é falsa e a segunda verdadeira;
d) A primeira condição é verdadeira e a segunda falsa;
2. Implemente um programa para calcular o menor de 4 valores.
3. Com base nos algoritmos de classificações, implemente um programa que:
a) Classifique uma nota do tipo double (ajuste os limites dos vários intervalos).
b) Leia dois números e mostre: “o 1º é maior” ou “o 2º é maior” ou “são iguais”.
c) Leia um valor representativo do pH e mostre que tipo de solução representa:
ácida (pH<7), neutra (pH=7) ou alcalina (pH>7).
d) Leia o número de lados de um polígono, compreendido entre 1 e 10, e indique
que polígono representa (1 ou 2 lados: não há polígono; 3 é um triângulo; 4 é um
quadrilátero; 5 é um pentágono; etc.).
e) Leia um mês (um valor entre 1 e 12) e de seguida mostre o número de dias desse
mês (para o mês 2 deverá mostrar “28 ou 29 dias”, para os meses 1, 3, 5, 7, 8,
10, 12 deverá mostrar “31 dias”, para os restantes a mensagem deverá ser “30
dias”).
f) Leia a magnitude de um sismo e mostre que tipo de sismo se trata (micro, muito
pequeno, pequeno, etc.) e a frequência diária associada (“~8000 por dia”,
“~1000 por dia” …). Ver http://pt.wikipedia.org/wiki/Escala_de_Richter.
Vitor Pereira [[email protected]]
Página 1 de 9
Repetições
4. Ciclos realizados um número conhecido de vezes (for). Implemente o seguinte:
a) Leia n valores representativos do pH e mostre, para cada valor, que tipo de
solução representa: ácida (pH<7), neutra (pH=7) ou alcalina (pH>7).
b) Classifique todos os meses (ciclo entre 1 e 12) de acordo com o número de dias
que possui, ou seja, mostre “28 ou 29 dias”, “30 dias” ou “31 dias”.
c) Leia n valores e, no final, mostre quantos positivos, negativos e zeros foram
lidos.
d) Leia n valores representativos do pH e mostre o número de ocorrências de cada
tipo de solução (quantas ácidas, neutras e alcalinas).
e) Para todos os meses do ano, mostre quantos existem de cada grupo de acordo
com o número de dias que possuem. Isto é, quantos possuem 28 ou 29 dias,
quantos possuem 30 dias e quantos possuem 31 dias.
f) Leia n idades e mostre a média aritmética dessas idades.
g) Calcule a soma de todos os inteiros compreendidos entre dois quaisquer limites
inteiros. Por exemplo, para os valores 1 e 100 o programa deverá calcular a
soma de 1+2+3+...+98+99+100 e mostrar o resultado.
h) Leia os detalhes de n produtos: código, peso, preço e quantidade, e mostre a
média de cada um dos atributos numéricos (isto é, pesos, preços e quantidades).
i) Leia um valor inteiro, n, e calcule o somatório dos n termos das seguintes séries
convergentes:
1 1 1 1
1
1
𝜋2
+ + +
+
+
+⋯=
1 4 9 16 25 36
6
1 1 1 1 1
1
+ + + +
+
+⋯=2
1 2 4 8 16 32
1 1 1 1
1
1
+ + +
+
+
+⋯=2
1 3 6 10 15 21
1 1 1 1 1 1
𝜋
− + − + −
+⋯=
1 3 5 7 9 11
4
j) Leia n valores e mostre o maior e menor valores lidos. Use o algoritmo “maior
de n valores (v2)”, ou seja, inicie as variáveis maior e menor com,
respetivamente, o menor e maior valores possíveis e leia os valores no ciclo.
k) Leia um valor n, inteiro, e calcule o seu fatorial.
l) Leia n valores representativos do pH e mostre a percentagem, com uma casa
decimal, do número de ocorrências de cada tipo de solução.
Vitor Pereira [[email protected]]
Página 2 de 9
m) Leia um valor n, inteiro, e mostre quantos divisores possui (use um ciclo entre 1
e n e, para cada valor, use o operador % para testar se o resto da divisão de n por
esse valor dá resto zero).
n) Leia um valor inteiro e mostre se esse número é primo ou não (isto é, se só
possui dois divisores, 1 e ele próprio, ou então mais).
o) Mostre quantos números primos existem entre 1 e 100.
p) Implemente o cálculo do fatorial através de um método e de seguida calcule o
seguinte somatório (teste o seu programa para x=1 e use 10 termos do somatório;
o resultado deverá ser aproximadamente igual a Math.E, ou seja, ~2,71828):

ex  
i 0
xi
x 2 x3
 1  x    ...
i!
2! 3!
q) Leia n taxas de juro relativas ao rendimento anual de determinado investimento
e calcule o rendimento médio desse investimento. Use a média geométrica para
calcular o rendimento média (consulte a secção Exemplo do link
http://pt.wikipedia.org/wiki/M%C3%A9dia_geom%C3%A9trica). Por exemplo,
se um investimento rende 10% no primeiro ano e 20% no segundo ano, então o
rendimento médio é aproximadamente igual a 1,1489.
5. Ciclos realizados um número desconhecido de vezes (while):
a) Recorrendo ao algoritmo “maior de 3 valores”, implemente um programa que
mostre os valores mínimo e máximo (isto é, o menor e o maior valores) de um
número desconhecido de notas.
b) Leia o número de golos marcados por uma equipa de futebol e no final mostre a
média de golos por jogo.
c) Leia um número desconhecido de valores reais e mostre e média dos positivos e
a média dos negativos (ignorando todos os valores zero lidos).
d) Leia um valor real representativo do erro máximo permitido e de seguida calcule
o valor de  de acordo com o seguinte somatório. No final mostre o número de
termos usados de tal forma que o valor absoluto entre o valor calculado e o valor
real Math.PI não é superior ao erro máximo permitido. Por exemplo, se o valor
lido for 0,0001 então o programa deverá mostrar o número de termos usados no
somatório tal que | (valor  calculado) – Math.PI | < 0,0001.


6
 (i)
i 1
2
 6
6 6 6 6
    ...
22 32 42 52
Vitor Pereira [[email protected]]
Página 3 de 9
Mais Exercícios Básicos
6. Escreva um programa que leia o comprimento dos lados de um triângulo (C1, C2 e
C3) e calcule a área do triângulo:
A  T (T  C1)(T  C 2)(T  C3)
sendo T 
C1  C 2  C 3
2
Use o método Math.Sqrt para calcular a raiz quadrada.
7. Desenvolva um programa que leia as notas relativas a um trabalho prático, a um
ponto escrito e a um exame final e calcule a média final ponderada de acordo com a
seguinte fórmula:
NotaFinal = 0.35*TrabalhoPrático + 0.25*PontoEscrito + 0.40*ExameFinal
8. Crie um programa que mostre o menor e o maior de três números lidos.
9. Implemente um programa que mostre uma tabela de conversão entre Celsius e
Fahrenheit, cujos limites e incremento são introduzidos pelo utilizador. Isto é, deve
ler o valor mínimo, máximo e incremento, e mostrar a conversão para os valores
especificados.
10. Crie um programa que, utilizando um ciclo, escreva o alfabeto em maiúsculas.
11. Codifique um programa que permita gerar aleatoriamente um determinado número
de palavras-passe com um determinado número de caracteres cada. As palavraspasse devem possuir letras minúsculas, maiúsculas e dígitos.
12. Implemente um programa que calcule a soma de todos os inteiros compreendidos
entre dois limites. Por exemplo, dados os valores 1 e 100 o programa deverá
calcular a soma de 1+2+3+...+98+99+100 e mostrar o resultado.
13. Implemente um programa que leia um valor e mostre o fatorial desse número (Nota:
n!=n(n-1)(n-2)...3.2.1).
14. Implemente um programa que calcule a média harmónica de n velocidades.
15. Implemente um programa que mostre os valores mínimo e máximo (isto é, o menor
e o maior valores) de n valores.
16. Implemente um programa que mostre a média aritmética de um número
desconhecido de notas.
17. Implemente um programa que mostre os valores mínimo e máximo (isto é, o menor
e o maior valores) de um número desconhecido de notas.
Vitor Pereira [[email protected]]
Página 4 de 9
18. Implemente um programa que leia um número desconhecido de anos e indique, para
cada ano, se é bissexto ou não. Use o valor -1 para terminar o programa.
19. Implemente um programa que leia o número de lados de um polígono,
compreendido entre 1 e 10, e indique que polígono representa (1 ou 2 lados: não há
polígono; 3  triângulo; 4  quadrilátero; 5  pentágono; etc.).
20. Crie um programa que leia dois valores: n, representativo do número de valores a
serem lidos; e x, um qualquer valor numérico. De seguida leia os n valores e no final
apresente quantas vezes o valor x foi lido.
Exemplo: n = 5
x=3
Valores Lidos: 2, 3, -10, 3, 0
Resultado: O valor 3 foi lido 2 vezes
21. Escreva um algoritmo que calcule o desvio padrão, , de cinco números. O desvio
padrão é dado pela fórmula seguinte:

1 5
( xi  x) 2

5 i 1
onde x1, x2, x3, x4 e x5 são os cinco valores a serem lidos e x representa a sua média.
22. A empresa IMAGINARIUM pretende distribuir um bónus pelos seus 10
colaboradores. Implemente um programa que, para cada colaborador, leia o nome e
o salário atual e mostre o nome, salário atual e novo salário, de acordo com os
seguintes aumentos (Salário < 500  4%; 500 <= Salário < 750  3%; 750 <=
Salário < 1000  2%; Salário >= 1000  1,5%).
a) Altere o programa para mostrar o número de colaboradores que pertencem a
cada escalão, isto é, quantos colaboradores possuem salário menor do que 500,
compreendido entre 500 e 750, etc.;
b) Altere o programa para no final do processamento ser mostrado o salário mais
baixo e o salário mais alto.
Vitor Pereira [[email protected]]
Página 5 de 9
Métodos
23. Crie um método que retorne o maior de três valores passados como parâmetros.
24. Crie um método que calcule o fatorial de um valor.
25. Crie um método chamado EPar (em inglês utiliza-se Is, por exemplo IsLetter,
IsDigit, entre muitas outras) que receba um valor inteiro e retorne true se o número
for par e false caso contrário.
26. Crie um método chamado EVogal que receba um char e retorne true se o carácter
for uma vogal; retorne false caso contrário.
27. Crie um método chamado EBissexto que receba um ano e retorne true se o ano for
bissexto; retorne false caso contrário.
28. Crie um método chamado EPrimo que receba um valor inteiro e retorne true se se
tratar de um número primo; retorne false caso contrário.
29. Uma grande parte de funções/constantes matemáticas importantes possuem séries
infinitas como aproximações. A aproximação é tanto maior quanto maior for o
número de termos utilizado. Codifique métodos para calcular o valor de , de
acordo com as seguintes séries (receba como parâmetro um valor que representa o
número de termos a usar):


6
 (i)
i 1
2
 6
6 6 6 6
    ...
22 32 42 52
(1) i
 1 1 1

 41     ...
 3 5 7

i 0 2i  1

  4
2 4 4 6 6 8
3 3 5 5 7 7
  4. . . . . . ...
30. Utilizando o método fatorial codificado anteriormente, implemente um método para
calcular o seguinte:

ex  
i 0
xi
x 2 x3
 1  x    ...
i!
2! 3!
Vitor Pereira [[email protected]]
Página 6 de 9
31. Implemente um método chamado NovesForaZero que calcule o resultado da regra
dos “noves fora zero” de um valor inteiro.
32. Crie um método chamado TrocaMinusculasMaiusculas que receba uma string e
retorne essa string com as minúsculas convertidas em maiúsculas, e vice-versa.
33. Codifique um método chamado SaoAmigos que receba dois valores inteiros e
retorne true se forem amigos; false caso contrário. Dois números inteiros são amigos
quando cada um deles é igual à soma dos divisores próprios do outro (os divisores
do número à exceção do próprio número).
Exemplo: os divisores próprios de 220 são: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 e 110,
cuja soma é 284. Os divisores próprios de 284 são: 1, 2, 4, 71 e 142, cuja soma é
220. Logo, 220 e 284 formam um par de amigos.
34. Codifique um método chamado ContaVogais que receba uma string e retorne o
número de ocorrências de cada vogal. Retorne uma estrutura que consista em cinco
contadores.
35. Implemente um método chamado CifraVogais que receba uma string e retorne uma
string cifrando as vogais da seguinte forma: A1, E2, I3, O4, U5. Os
restantes caracteres não devem ser alterados.
36. Implemente um método chamado CifraAlfabeto que receba uma string e retorne
uma string cifrada da seguinte forma: AB, BC, CD, …, ZA.
37. Crie um método que receba um double e retorne, em dois parâmetros, o quadrado e
o cubo do valor recebido, respetivamente (use a passagem por referência para
simular o retorno de mais do que um valor).
38. Crie um método que receba um double e retorne, em dois parâmetros, a parte inteira
e a parte fracionária do valor recebido.
Vitor Pereira [[email protected]]
Página 7 de 9
Métodos e Vectores
39. Codifique um método que receba um mês e retorne o mês por extenso.
40. Crie um método chamado DiaSemanaENPT que receba um dia da semana em inglês
e retorne o equivalente em português.
41. Crie um método chamado MediaVector que retorne a média dos valores de um
vector do tipo double.
42. Implemente um método chamado MaxMin que retorne o maior e menor valores de
um vector do tipo double.
43. Crie um método chamado DesvioPadrao que retorne o desvio padrão () de n
números, armazenados num vector double. Chame o método criado do número
anterior.

1 n
( xi  x) 2

n i1
onde x1, x2, ..., xn são os n valores a serem lidos e x representa a sua média.
44. Crie um método chamado Contem que receba um vector de strings e uma string e
retorne true se a string especificada existe no vector de strings; retorne false caso
contrário.
45. Implemente um método chamado Indice que receba um vector de strings e uma
string e retorne o índice da primeira ocorrência da string especificada dentro do
vector. Retorne -1 contrário a string não exista no vector.
46. Desenvolva um método chamado UltimoIndice que receba um vector de strings e
uma string e retorne o índice da última ocorrência da string especificada dentro do
vector. Retorne -1 contrário a string não exista no vector.
47. Crie um método que receba um vector de strings e retorne todos os elementos que
contêm determinada string.
48. Codifique um método chamado ContaLetras que receba uma string e retorne o
número de ocorrências de cada letra do alfabeto. Retorne um vector de 26 inteiros.
49. Crie um método chamado UnicodeToString que receba um vector de inteiros
representativos dos códigos Unicode de caracteres e retorne a string correspondente.
Consulte http://www.adverbox.com/ads/ea-games-canada/ para um exemplo.
Vitor Pereira [[email protected]]
Página 8 de 9
Matrizes
50. Uma determinada empresa armazena num vector os códigos dos n produtos que
comercializa. Existe ainda uma matriz contendo os preços (em euros) desses n
produtos ao longo dos 12 meses do último ano.
a) Codifique um método que receba como parâmetros o vector e um código de
produto e retorne a posição do produto no vector, ou -1 caso não exista.
b) Implemente um método que receba como parâmetros o vector, a matriz e um
código de produto retorne o preço médio do produto durante os doze meses
(retorne -1 caso o código do produto não exista). Este método deve chamar o
método da alínea anterior.
c) Implemente um método que receba com parâmetro a matriz e retorne uma
estrutura com os preços mais baixo e mais alto de cada produto.
51. Uma determinada associação desportiva armazena num vector os nomes dos seus n
atletas. Existe ainda uma matriz de números reais que contém os tempos (em
minutos) efetuados por cada atleta nas 10 provas que realizaram ao longo do último
ano.
a) Implemente um método que receba como parâmetros o vector, a matriz e o nome
de um atleta e retorne a média dos tempos das suas provas (retorne -1 caso o
atleta não exista).
b) Codifique um método que receba como parâmetro a matriz e retorne um vector
com os tempos mínimos de cada atleta.
52. Gere um cartão matriz com oito linhas (A a H) e oito colunas (1 a 8) com valores
aleatórios de três dígitos até 999, visualizando-o na janela de consola. De seguida
peça ao utilizador, aleatoriamente, três pares de coordenadas (de A1 a H8) e posição
(da 1ª à 3ª), verificando após a leitura se os três valores inseridos estão corretos ou
não, apresentando uma mensagem adequada (para mais informações faça uma
pesquisa na Internet sobre “cartão matriz”).
53. Desenvolva um método que crie uma matriz (de inteiros) associada ao índice wind
chill (em português, sensação térmica ou temperatura aparente) para valores de
velocidade do vento compreendida entre 5 e 80 Km/h (com um incremento de 5
Km/h) e para um valor de temperatura atual entre 10 e -30 (com o mesmo
incremento, ou seja, 5). Para mais informações sobre o índice wind chill consulte:
http://www.ipma.pt/pt/enciclopedia/amb.atmosfera/index.bioclima/index.html?page=wc.xml.
Clique em “Como se calcula o Wind Chill” para conhecer a fórmula que permite
calcular este índice. Clique em “Tabelas e gráfico do Wind Chill” para validar os
seus resultados.
Vitor Pereira [[email protected]]
Página 9 de 9
Download

Decisões