Beruflich Dokumente
Kultur Dokumente
Computação I
Jorge Abreu
2015
Conteúdo
2. Condições .................................................................................................................................4
3. Loops ........................................................................................................................................7
4. Métodos .................................................................................................................................12
5. Arrays e Strings.......................................................................................................................17
1
1. Operações Aritméticas e Booleanas
1.
1.1 Indique o valor final de x após a execução do seguinte bloco de código.
}
1.3 Indique o valor final de x após a execução do seguinte bloco de código.
3. Escreva um programa que calcule a área de uma circunferência, dado um determinado raio
𝑟 maior que zero e definido pelo utilizador.
2
4. Escreva um programa que calcule a área de um triângulo equilátero de lado 𝑙, sendo este
maior que zero e definido pelo utilizador. A altura do triângulo deve ser calculada através dos
meios mais convenientes, tendo sempre por base os lados do triângulo.
2º Parte
Teste 5 – Verificar se o quociente do teste anterior é divisível por 2 (resto igual a 0).
O resultado de todos testes deve ser True ou False e todos devem ser escritos pela ordem
apresentada no enunciado.
3
2. Condições
1. Escreva um programa que verifique se um determinado ano é bissexto, ou não. O ano deve
ser um número inteiro, maior que 0 e será definido pelo utilizador. Caso o valor inserido pelo
utilizador seja menor que 0, o programa deve ser finalizado.
Nota: Um ano é bissexto quando é divisível por 400, ou quando é divisível por 4 e não por 100.
3. Escreva um programa que receba 3 números inteiros diferentes e que os ordene do menor
para o maior. Caso existam pelo menos dois números iguais o programa deverá apresentar
uma mensagem que constate essa situação e, seguidamente, deverá terminar.
Por fim, faça o mesmo, mas desta vez o programa deverá ordenar os números do maior para o
menor. Resolva o exercício recorrendo única e exclusivamente a if’s, else’s, ou else if’s.
4. Escreva um programa que atribua uma nota, de A até E, consoante a classificação obtida por
um determinado aluno. Existem duas classificações diferentes: a do primeiro teste (class1) e a
do segundo teste (class2). Ambas classificações são números inteiros entre 0 e 100. A lista
seguinte representa os intervalos associados a cada letra:
E = [0;24] B=] 69;89]
D=] 24;49] A=] 89;100]
C=] 49;69]
Para além disso, o programa deve apresentar uma nota final, tendo por base as duas
classificações, sendo que, o primeiro teste vale 40% da nota final e o segundo teste vale 60%
da mesma.
No fim da execução devemos ter um output parecido à seguinte imagem.
5. Escreva um programa que possa devolver uma frase, escolhida pelo utilizador, em pelo
menos 3 idiomas diferentes. A cada idioma deve estar associado um número inteiro (p.e, se o
utilizador inserir “1” o programa devolve a frase em inglês). Caso seja inserido um conjunto de
caracteres que não fazem parte das opções predefinidas pelo programa, deve aparecer uma
4
mensagem de erro e o programa termina. Resolva este exercício recorrendo ao método Switch
lecionado nas aulas.
6. Escreva um programa que receba o valor que três empregados recebem, por hora, numa
determinada empresa. O programa deverá calcular, com base no valor inserido, o pagamento
total que deverá efetuar aos 3 empregados no final do mês, sabendo que todos eles trabalham
8 horas por dia, 5 dias por semana, imaginando que o mês começa numa 2ª feira e que terá 31
dias.
Se o valor final seja maior ou igual a 10.000€ o programa devolve a mensagem “Temos
que reduzir os salários “.
Se o valor for menor que 10.000€ e maior ou igual a 5000€ o programa devolve a
mensagem “ Está tudo OK”.
Se o valor final for menor que 5.000€ o programa devolve a mensagem “ Se calhar
podemos aumentar salários”.
No fim, também deverá aparecer qual o ordenado de um dos empregados ao fim de 30 dias.
7. Escreva um programa que receba 3 valores inteiros inseridos pelo utilizador, que irão
representar as notas que um aluno teve ao longo do 1º semestre na cadeira de Computação I.
Os valores deverão fazer parte do intervalo entre 0 a 20, inclusivo. O programa em causa deverá
ser capaz de calcular a média final do aluno, sabendo que o primeiro teste vale 25%, o segundo
vale 35% e o último vale 40%. No fim, a média final e as seguintes mensagens deverão ser
impressas, consoante a média obtida:
Média <10 – “ Sorry my friend, não foi desta. No próximo semestre vais conseguir,
acredita em ti! “
Média entre 10 e 17 – “ Bom trabalho, conseguiste! Esforça-te mais um pouco para
chegares ainda mais longe. “
Média maior que 17 – “ Excelente trabalho!“
8. Escreva um programa que simule uma compra numa gelataria. Para a resolução deste
problema deve recorrer ao switch case, lecionado em aula. Inicialmente o programa deverá
apresentar um pequeno menu com os vários sabores disponíveis. Deverão existir pelo menos 3
sabores diferentes, onde cada sabor deverá ter um preço único que fará parte do menu inicial.
Se for inserido um valor inválido, deve ser retornada a mensagem “Não temos esse sabor” e o
programa deverá terminar.
Após ter sido inserido um valor válido, deve ser pedido ao utilizador quantos scoops do sabor
escolhido ele deseja (1 Scoop = 1 Bola de gelado). Caso o utilizador escolha mais do que 3 scoops,
o programa deverá retornar a mensagem “Escolheu mais de 3 sabores. Não aceitamos gulosos
nesta gelataria!” e terminar. Caso contrário, o programa deverá apresentar na consola o sabor
escolhido e calcular o total a pagar.
No fim, deve surgir a mensagem a indicar o preço total a pagar e quantos scoops foram pedidos.
5
9. Escreva um programa que tenha como objetivo simular a confeção de um Frango Assado no
forno. Para isso, o programa deverá pedir a quantidade de sal (gramas) que o utilizador meteu,
assim como, a temperatura utilizada (graus Celsius) e o tempo (em minutos) que se deixou o
Frango no forno.
Temperatura ideal:
Por fim, caso tenhamos uma situação em que tanto a quantidade de sal, como a relação
temperatura e tempo são adequadas, obtemos a mensagem: “O Gordon Ramsay ficou
com inveja! “
6
3. Loops
1.
1.1 Indique o valor final do i após a execução do seguinte bloco de código.
x++;
i--;
}
}
1.4 Indique o valor final do x após a execução do seguinte bloco de código.
x *= x + j;
}
}
7
2. Escreva um programa que calcule o fatorial de um determinado número inteiro, 𝑛, inserido
pelo utilizador e maior que 0. Enquanto a condição não for verdadeira, ou seja, enquanto 𝑛 for
menor ou igual a 0, o programa não deverá poder avançar.
Nota: 𝑛! = 1 × 2 × 3 × … 𝑛
4. Escreva um programa que receba um determinado número inteiro, maior que zero. O
programa deverá ser capaz de dizer se o número em questão é, ou não, primo.
Um número é primo se e só se só for divisível por 1 e por si próprio.
5. Escreva um programa que receba dois números inteiros, 𝑎 e 𝑏, sendo este último maior ou
igual a 0. O objetivo deste programa será calcular uma potência cuja base será 𝑎 e o expoente
𝑏, onde o resultado final será guardado numa terceira variável, 𝑐. Caso o valor de 𝑏 não
verifique as condições, o programa deverá insistir até que ambos os valores sejam válidos.
Para além disso, como se devem ter todos os cenários em mente, caso 𝑏 seja igual a 0, 𝑐 será
igual a 1. Não deve resolver o exercício recorrendo a qualquer tipo de função da classe Math.
8
6. Escreva um programa que simule capacidade que um saco deve ter. Primeiro o utilizador deve
inserir qual a capacidade máxima que o saco aguenta, sendo esta um número do tipo double,
maior que 0. Em seguida, o utilizador deve criar um ciclo onde será introduzido cada vez mais
peso até ser atingida a capacidade máxima. Ao longo de cada fase do ciclo, o programa deve ser
capaz de indicar quando peso existe dentro do saco e quanto é que falta para atingir o seu
máximo.
No entanto, como todos os cenários devem ser tidos em conta, caso o saco tenha, por exemplo,
10kg de capacidade e já esteja a carregar com 9kg, se o utilizador introduzir qualquer número
que faça com que o saco carregue mais do que aquilo que pode (p.e, se o utilizador introduzir
2kg, o saco fica com 11kg, quando a sua capacidade máxima é 10kg), o programa deve rejeitar
o peso indicado pelo utilizador e pedir ao mesmo que introduza um valor válido (neste caso o
máximo valor válido seria 1kg).
No fim, quando o saco não conseguir carregar mais peso, o programa deve emitir uma
mensagem indicando essa situação.
A imagem seguinte sugere como deverá ser o output do programa.
7. Escreve um programa que simule uma compra de um almoço no bar da escola. Primeiro, o
programa deverá pedir ao utilizador quanto dinheiro é que tem na carteira e só poderá avançar
quando o valor inserido ( 𝑛 ) for maior que zero. Caso 𝑛 for válido, deverá aparecer o “Menu do
dia” só se esse mesmo valor for maior que o custo do item de menor valor (p.e. se o item de
menor valor custar 0,5€ e o utilizador tenha mais dinheiro que isso, o programa apresenta o
menu e continua, mas se não for esse o caso, deverá ser emitida uma mensagem a dizer “Isso
não para comprar nada.” e o programa deverá terminar).
O “Menu do dia” deverá ter pelo menos 4 produtos e ter um preço associado a cada produto.
Se a escolha do produto não for válida, deverá aparecer a imagem “Não temos isso”. Caso
contrário, se o valor for válida, terá que ser determinada a quantidade do produto escolhido).
Em seguida deverão ser feitas as seguintes verificações:
Se o valor total a pagar for maior que o valor que o utilizador tem, deverá ser emitida uma
mensagem a constatar esse facto e o utilizador não deverá perder dinheiro;
Se o valor total for igual ao valor do utilizador, o programa deverá dizer "Já não tens mais
dinheiro.”
Se o valor total for menor que o valor do utilizador, deverá aparecer a quantidade que ainda
falta até o dinheiro acabar e ser perguntado se o utilizador quer comprar mais alguma coisa.
Se o utilizador inserir o caracter ‘y’, o programa mostra de novo o “Menu do dia” e repete
9
o processo. Por outro lado, se for inserido outro caracter qualquer, é emitida uma
mensagem a dizer o total a pagar e o programa acaba.
10
10. Escreva um programa que devolva como output, uma “espécie” de tabuleiro de xadrez,
onde as casas pretas serão representadas por um “#” e as brancas, por um espaço vazio. O
exercício deverá de ser resolvido através de nested-for’s.
11
4. Métodos
1.3 Qual é o valor retornado pela seguinte função fun com a=1, b=2, c=3 ?
12
1.4 Qual é o valor da variável i após a execução da seguinte função a com
z=5?
2. Escreva um programa que receba 3 números. Em seguida crie duas funções, uma para
calcular a média dos números introduzidos e outra para identificar o máximo. Ambas as
funções são do tipo double e os resultados das mesmas devem ser impressos no método
Main().
Para resolver este exercício, não recorra a nenhuma função da classe Math.
3. Escreva um programa que possui duas funções que sirvam para fazer a conversão de graus
Celsius para Fahrenheit e vice-versa, sendo que nenhum dos métodos retorna valores para o
método Main().
Primeiro, o utilizador deve escolher se quer introduzir uma temperatura em graus Celsius, ou
em Fahrenheit. Em seguida, caso seja introduzida, por exemplo, uma temperatura em graus
Celsius, o programa, deverá chamar o método responsável para fazer a conversão para graus
Fahrenheit. Caso contrário, se a temperatura introduzida for em Fahrenheit, o método a ser
chamado deve ser o que faz a conversão para graus Celsius. Se for introduzido algum caracter
inválido, o programa deve devolver uma mensagem de erro e parar.
Para as conversões serem efetuadas, devem-se ter as seguintes expressões em conta:
𝐶 = 5(𝐹 − 32) / 9
𝐹 = (9𝐶 / 5) + 32
Sendo que, 𝐶 representa a temperatura em graus Celsius e 𝐹 a temperatura em graus
Fahrenheit.
13
4. Escreva um programa que calcule a área de um quadrado, um triângulo, um retângulo ou de
um círculo, através das funções necessárias. Todas as funções criadas devem ter sempre o
nome area() e serem do tipo double, no entanto, os parâmetros aceites por cada uma das
funções devem variar.
Inicialmente, o utilizador deve selecionar qual a área da figura geométrica que quer calcular.
Em seguida, devem ser introduzidos os parâmetros necessários para calcular a área da figura
em questão.
Por fim, a função correspondente à figura geométrica escolhida deve ser chamada e terá de
retornar o valor da respetiva área, que será impresso no método Main().
5. Ao longo do semestre foram feitos 3 testes, dos quais só os 2 testes com nota mais alta
contam para calcular a média final de determinado aluno.
Escreva um programa que receba as notas de um aluno e que recorra a uma função para
calcular a média final desse mesmo aluno. Cada uma das notas introduzidas deve estar num
intervalo [0; 20], sendo que o programa não deverá avançar enquanto as 3 classificações
cumpram esse requisito.
A função da Média Final, deve ser capaz de identificar as duas notas mais altas e calcular a
média do aluno tendo em conta essas mesmas notas. O resultado final deve ser impresso no
método Main().
6. Escreva um programa que receba dois números inteiros maiores que zero e diferentes entre
si. Através desses dois números o programa recorre a duas funções, MDC () e MMC (), para
calcular o Máximo Divisor Comum e o Mínimo Múltiplo Comum, respetivamente.
Para entender melhor os conceitos de MDC e MMC, temos os seguintes casos:
MDC
O nº 12 é divisível por 1, 2, 3 e 6. Dentro desse conjunto o 6 é maior deles todos.
Por sua vez, o nº 18 é divisível por 1, 2, 3, 6 e 9. Dentro do conjunto de números pelos
quais o 12 e o 18 são divisíveis, 6 é o maior que é comum a ambas as partes. Assim sendo,
6 é o MDC entre 12 e 18.
MMC
O nº 3 tem como múltiplos o 3, 6, 9, 12, 15, etc..
Por sua vez, o nº 6 tem como múltiplos o 6, 12, 18, 24, etc..
Dentro do conjunto de múltiplos de 3 e de 6, o menor número em comum é o 6. Logo,
podemos dizer que 6 é o MMC entre 3 e 6.
Tendo isto tudo em conta, as funções depois de efetuarem todos os processos, devem
retornam os resultados para o método Main(). Caso não exista MDC ou MMC as funções
devem retornar o valor -1.
14
7. Escreva um programa em Java composto por:
a. Uma função min com três parâmetros a, b e c do tipo int. O método devolve
o valor mínimo entre a, b e c. IMPORTANTE: na definição do método é
proibido utilizar:
a. Instrução if-else;
b. Operador ternário;
c. Instrução switch;
8.Escreva um programa que simule o cálculo das operações básicas da matemática, sendo elas,
soma, subtração, divisão e multiplicação. Para tal, o utilizador deverá inserir 3 variáveis: duas
variáveis que irão representar os números que farão parte da operação e uma outra variável
que irá guardar a operação a ser feita, que poderá ter os valores +, -, / ou *. O programa não
deverá prosseguir enquanto a variável operação não tenha pelo menos um dos valores
anteriormente indicados, pedindo continuamente um novo valor até a condição ser satisfeita.
Após as três variáveis serem preenchidas, deverá ser invocada a função Calc (), do tipo double,
que recebe os 3 parâmetros previamente mencionados. A função deverá efetuar uma
operação entre os dois números recebidos e tendo por base o valor da variável operação.
15
9. O algoritmo de Euclides é uma forma de calcular o máximo divisor comum (MDC) de
dois números inteiros, 𝑎 e 𝑏.
Existem diversas versões, sendo que neste exercício é pedido que se programe o
algoritmo de Euclides definido pela diferença. Este algoritmo rege-se pelo seguinte
conjunto de regras:
Enquanto 𝑎 for diferente de 𝑏, então:
Se 𝑎 for menor que 𝑏, 𝑏 = 𝑏 − 𝑎
Caso contrário, 𝑎 = 𝑎 − 𝑏
Ex: Se 𝑎 = 8 e 𝑏 = 12, iremos ter:
𝑎 < 𝑏 → 𝑏 = 12 − 8 = 4
𝑎 >𝑏→𝑎 =8−4=4
MDC, entre 8 e 12 é 4
Assim sendo, escreva um programa em Java composto por duas partes:
16
5. Arrays e Strings
1. Escreva um programa que receba a idade de 5 alunos e que seja capaz de identificar a idade
máxima, a mínima e média das idades. Todas as idades serão guardadas num array do tipo
integer e terão de ser maiores que 0. No fim, o programa deverá apresentar todos os dados
obtidos.
2. Escreva um programa que ordene os elementos de um array por ordem crescente (e/ou
decrescente, é à escolha). O array deve ser do tipo integer e o utilizador é quem decide o seu
tamanho, sendo que, este nunca poderá ser menor ou igual a 0 e, caso o seja, o programa
deve pedir um novo tamanho ao utilizador. No fim, o output deve idêntico à figura seguinte.
3. Escreva um programa que receba 𝑛 números inteiros, todos guardados num array do tipo
integer. O programa deverá recorrer a uma função Inv(), que irá inverter a ordem dos
elementos anteriormente introduzidos no array, ou seja:
O tamanho do array deverá ser definido pelo utilizador, terá que ser maior que 0 e enquanto
isso não se verifique, o programa deverá pedir um novo valor.
Por fim, o programa deverá apresentar os resultados finais.
4. Escreva um programa que receba dois arrays distintos, com o mesmo tamanho e que
recebam 𝑛 números inteiros. Em seguida o programa irá recorrer a uma função que terá como
objetivo criar um novo array selecionando o maior elemento em cada posição quando
comparando os dois arrays iniciais, ou seja:
O tamanho do array deverá ser definido pelo utilizador, terá que ser maior que 0 e enquanto
isso não se verifique, o programa deverá pedir um novo valor.
Por fim, o programa deverá apresentar os resultados finais.
17
5. Crie um array de duas dimensões, onde cada linha represente a tabuada de um número
entre 1 até 10. Em seguida, crie uma função que faça a soma de todos os elementos de cada
linha, assim como dos elementos que fazem parte da diagonal que vai desde o primeiro
elemento da 1ª linha, até ao último elemento da última linha. A imagem seguinte representa
um possível output do programa em questão.
A função em causa não deve retornar qualquer tipo de valor para o método Main ().
6. Escreva um programa que receba duas strings. O programa em causa irá recorrer a uma
função, com o nome Comparar(), que irá comparar as letras da primeira string com as letras da
segunda e terá como objetivo verificar quantas vezes cada uma das letras da primeira string se
repete na segunda. No fim, a função irá retornar um array, com o mesmo tamanho que a
primeira string, onde cada elemento será o o número de vezes que cada letra da primeira
string se repete na segunda string. A figura seguinte representa um possível output deste
programa.
7. Escreva um método que recebe um array de inteiros positivos e devolva true se for
constituído por números consecutivos, ou false em caso contrário.
Num dado conjunto numérico, os seus elementos são consecutivos se a diferença entre o
máximo e o mínimo for igual ao tamanho do conjunto mais uma unidade e se não existirem
elementos repetidos nesse mesmo conjunto.
No main, deverá ser criado um array cujo tamanho é inserido pelo utilizador e os elementos
do mesmo devem compreender valores entre 0 e 1000.
Por fim, na consola deverá ser apresentada uma mensagem a dizer se o array é, ou não,
constituído por elementos consecutivos
18
8. Escreva um método que verifique se um array de números inteiros está ordenado. O
programa deverá devolver -1 se o array estiver ordenado por ordem decrescente, 1 se estiver
por ordem crescente, ou 0 se não estiver ordenado.
No main, deverá ser criado um array cujo tamanho é inserido pelo utilizador e os elementos
do mesmo devem compreender valores entre 0 e 1000.
Por fim, na consola deverá ser apresentada uma mensagem a dizer se o array é, ou não,
constituído por elementos consecutivos
Dica: Um array não está ordenando por ordem crescente se e só se, existirem dois elementos
consecutivos, 𝑖 e 𝑖 + 1, tais que 𝑖 seja maior ou igual a 𝑖 + 1.
Para a ordem decrescente, a situação é semelhante, mas com a condição contrária.
19