Instituto Superior de Engenharia de Lisboa Licenciatura em Engenharia de Electrónica e Telecomunicações e de Computadores 1ª Lista de exercícios de PROGRAMAÇÃO Semestre de Inverno 2013-2014 (Setembro 2013) http://thoth.cc.e.ipl.pt/classes/Pg/1314i (site de PG ) 1ª parte – Exercícios que saíram no 1º trabalho prático de PG no Semestre de Verão de 2012/2013 Para cada exercício deve fazer um programa implementando uma classe em Java cujo nome é apresentado no exemplo de execução. A resolução dos exercícios deve cumprir exactamente os exemplos apresentados, onde se diferencia graficamente as entradas realizadas pelo utilizador das escritas do programa. Não é permitida a utilização de métodos das classes Math ou Character. Dependendo da língua configurada no sistema operativo, os valores reais podem ser lidos e escritos usando vírgula em vez de ponto na separação das casas decimais. Assuma sempre que os valores introduzidos estão correctos. É valorizada a simplicidade das soluções que cumpram o enunciado. 1. Escrever a média das notas das três melhores fichas, entre as quatro notas foram introduzidas pelo utilizar. As notas das fichas são valores inteiros. O programa deve escrever “Reprovado” se a média das três melhores fichas for inferior a 8 valores. 2. Apresentar a nota final de Programação dada a nota da média das três melhores fichas, do teste final e da componente prática. A nota é apresentada num valor inteiro e qualitativamente usando a tabela de conversão (10..13→Suficiente; 14..15→Bom; 16..17→Muito bom; 18..20→Excelente). É apresentado “Reprovado” mal seja detectada uma das condições de reprovação. Ver as regras da avaliação de PG em: http://thoth.cc.e.ipl.pt/classes/Pg/1314i/all/pages/regras‐de‐avaliacao/305 C:\ISEL\PG>java FichasPG Notas das 4 fichas ? 18 13 12 15 Fichas = 15.333333 C:\ISEL\PG>java FichasPG Notas das 4 fichas ? 12 3 4 7 Reprovado C:\ISEL\PG>java NotaPG Fichas ? 12,2 Teste final ? 14 Componente prática ? 14 Nota final = 14 (Bom) C:\ISEL\PG>java NotaPG Fichas ? 8,5 Teste final ? 6 Reprovado 3. Faça um programa que apresenta a idade de alguém, dada a sua data de nascimento e a data corrente. As datas são lidas no formato <dia> <mês> <ano>. O programa deve verificar se as datas introduzidas são válidas e deve assinalar se a data de nascimento é superior à data corrente. Considere válidas as datas nas condições (1900 < ano < 2012) , (0 < mês < 13) e (0 < dia < 32), não sendo necessário verificar o dia para meses com menos que 31 dias. Caso a data corrente seja de aniversário devem ser dados os parabéns. C:\ISEL\PG>java Idade nascimento ? 27 10 1975 hoje ? 19 3 2013 Tem 37 anos. C:\ISEL\PG>java Idade nascimento ? 19 3 1975 hoje ? 19 3 2013 Parabéns, faz 41 anos. C:\ISEL\PG>java Idade nascimento ? 1 4 2013 hoje ? 19 3 2013 Data de nascimento superior. C:\ISEL\PG>java Char 5. Código de um caráter ? 102 Ler um código (entre 0 e 255) de um carácter Letra 'f' é a 6ª minúscula. C:\ISEL\PG> java Char e indicar se é uma letra maiúscula, uma letra Código de um caráter ? 67 minúscula, um dígito, um símbolo que não é Letra 'C' é a 3ª maiúscula letra nem dígito ou um carácter não apresentável (quando o código maior que 126 ou menor que 33). C:\ISEL\PG>java Idade nascimento ? 2 24 1977 Data inválida. C:\ISEL\PG> java Char Código de um caráter ? 37 Símbolo '%' C:\ISEL\PG> java Char Código de um caráter ? 54 Dígito '6' C:\ISEL\PG>java Char Código de um caráter ? 13 Caráter 13 não é apresentável 6. Faça um programa que indica as moedas necessárias para fazer o troco de uma quantia indicada em euros. O troco deve ter o mínimo possível de moedas e só poderá conter moedas de 1 Euro, 20 cêntimos, 5 cêntimos e 1 cêntimo. C:\ISEL\PG>java Troco Quantia em euros ? 2.79 Troco = 2 x 1Eu + 3 x 20c + 3 x 5c + 4 x 1c C:\ISEL\PG>java Troco Quantia em euros ? 0.50 Troco = 2 x 20c + 2 x 5c C:\ISEL\PG>java Troco Quantia em euros ? 5.02 Troco = 5 x 1Eu + 2 x 1c C:\ISEL\PG>java Troco Quantia em euros ? 0.0 Troco = 2ª parte – Exercícios que saíram nas aulas de PG no Semestre de Verão de 2012/2013 Use funções da biblioteca matemática Math. http:// http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html Consulte os operadores java em: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html Para estude consulte o tutorial do java: http://docs.oracle.com/javase/tutorial/java/TOC.html 1. Elabore o programa, na linguagem java, que calcula o perímetro da circunferência e a área do círculo e para tal deve ler do teclado o valor do raio da circunferência r. Os resultados devem ser escritos no ecrã. Com se trata do 1º exercício “vamos dar uma ajuda” Use o editor notepad++ site: http://notepad-plus-plus.org/ e edite o seguinte ficheiro de texto com a extensão java Lista1Exer01Circunferencia.java que contém já as seguintes linhas e para as quais chamamos a atenção para as notas (1), (2) e (3) import java.util.Scanner; //(1)acesso às funções contidas em Scanner public class Lista1Exer01Circunferencia{ public static void main( String[] args ){ Scanner teclado = new Scanner(System.in);//(2)definição do objecto teclado System.out.println("digite o valor do raio "); int r = teclado.nextInt(); //(3)use da função de leitura de valor int /* ………. FALTA implementar o código java que resolve o exercício proposto…. */ } } 2. Para calcular a distância entre dois os pontos A, B usamos os seguintes valores: abcissa x1 e ordenada y1 (ponto A), abcissa x2 e ordenada y2 (ponto B) . Elabore o programa que deverá ler do teclado os valores dos pontos A,B e através da expressão da lei de Pitágoras calcule a distância entre este dois pontos, fig.1 e escreva o resultado da distância no ecrã. Use funções da biblioteca matemática Math do Java. fig. 1 3. Elabore o programa que calcula o perímetro e a área do triângulo formado pelos pontos A,B,C (ver fig.1) e, para tal deve ler do teclado os seguintes valores: abcissa x1, ordenada y1, abcissa x2 e ordenada y2 para calcular a distância A, B (exercício 2) e após a distância calculada está em condições de calcular o perímetro e a área, devendo utilizar a expressão Teorema Heron (Herão), http://pt.wikipedia.org/wiki/Teorema_de_Her%C3%A3o . Apresente os resultados no ecrã. Use funções da biblioteca matemática Math do Java. 4. Elabore o programa que Lê do teclado três valores inteiros h,m,s que significa as quantidade de horas, minutos e segundos com o objectivo de calcular o valor total t de segundos que estão contidos nessas horas, minutos e segundos. Deve escrever o resultado no ecrã. 5. Faça o programa que Lê do teclado um valor inteiro longo q que significa uma quantidade de segundos com o objectivo de calcular quantas horas, minutos e segundos estão contidos nessa quantidade q. Deve escrever os resultados no ecrã. Nota1: este exercício é simétrico do anterior. 6. Ler do teclado dois valores inteiros inf,sup que significam os delimitadores do intervalo [inf,sup] onde o inf<sup com o objectivo de gerar um nº aleatório a nesse intervalo. Deve escrever o resultado no ecrã. Use funções da biblioteca matemática Math do Java. 7. Faça o programa que calcula em que quadrante está o ponto e para o concretizar deve ler do teclado dois valores inteiros: abcissa x1 e ordenada y1, que correspondente a um ponto localizado do eixo cartesiano como o objectivo de o classificar em: está no 1º quadrante, ou no 2º quadrante, ou no 3º quadrante, ou no 4º quadrante ou está sobre um qualquer dos eixos, escrevendo em console output (ecrã) a mensagens adequada ao respectivo input. 8. Faça o programa que ajuda a empresa “da Terra à Lua” a atribuir um prémio anual aos seus empregados trabalhadores-estudantes de acordo com as seguintes regras: • A verba v em € é distribuída aos 3 melhores alunos com idades compreendidas entre 30 e 40 e cuja a classificação seja maior que 15 valores, sendo prémio de 150€. • Cada um recebe de acordo com a expressão: qi = r.ci/(c1+c2+c3) Onde o r é a parte restantes, c é a classificação e o i refere-se aos empregados 1, 2 e 3 9. Elabore um programa que calcula o maior valor inteiro de entre três, sendo estes inteiros lidos do teclado para as variáveis a, b e c, escrevendo o resultado no ecrã. 10. Elabore o programa que lê do teclado três valores inteiros l1,l2,l3 que significam três lados dum triangulo com o objectivo de verificar se com estes valores podemos formar geometricamente um triângulo (o maior lado tem que ser menor que a soma dos dois menores lados). Deverá escrever como resultado no ecrã, a mensagem adequada ao input, exemplificando: - Os valores de l1,l2,l3 não formam um triângulo; - Os valores de l1,l2,l3 formam um triângulo e este pode ser: - equilátero; - isósceles; - escaleno; 11. Ler do teclado quatro valores inteiros a,b,c,d e faça a ordenação crescente dos mesmos. Deve escrever os resultados no ecrã. Provérbio chinês: “Aquele que pergunta, pode ser um tolo por cinco minutos. Aquele que deixa de perguntar, será um tolo para o resto da vida”