Programação Primeiro trabalho prático Semestre de Inverno de 2016/2017 Neste trabalho, os alunos adquirem prática de utilização de elementos essenciais da linguagem Java, nomeadamente variáveis, expressões, tipos primitivos, instruções de entrada e de saída de dados, decisão binária e decisão múltipla. Na resolução destes exercícios não poderão usar elementos da linguagem que não constam na primeira parte da matéria desta unidade curricular, nomeadamente é proibida a utilização de ciclos repetitivos, arrays, métodos da classe Math ou qualquer outra classe da API do JAVA que não foram já usadas nas aulas, a menos que seja explicitamente indicado para usar no exercício. Em cada exercício implemente uma classe em Java cujo nome é apresentado no exemplo de execução. A resolução de cada exercício deve cumprir exatamente o exemplo apresentado, onde se diferencia graficamente as escritas do programa das entradas realizadas pelo utilizador. Assuma que os valores introduzidos estão corretos. Dependendo da língua configurada no sistema operativo, os valores reais podem ser lidos e escritos usando ponto em vez de vírgula na separação das casas decimais. Cada grupo entregará na página do Thoth da sua turma (http://thoth.cc.e.ipl.pt/classes/Pg/1617i) até 7 de novembro, um documento (com extensão docx, pdf ou txt) que descreva a solução encontrada para cada exercício, assim como o ficheiro fonte (com extensão java) de cada exercício, devidamente comentados, comprimidos num ficheiro (com extensão zip, rar, gz, etc.). É valorizada a simplicidade das soluções que cumpram o enunciado. 1. (KByte) Ler um valor real em Kilobytes e apresentar o valor inteiro equivalente em bytes. Caso o resultado não seja um número inteiro de bytes deve ser apresentado o inteiro mais próximo. Por exemplo: 0,2 KByte = 205 Byte. C:\ISEL\PG>java KByte Valor em KBytes? 512,75 512,75 KByte = 525056 Byte. 2. (Triang) Ler os três comprimentos dos lados de um triângulo e apresentar o seu tipo quanto aos lados: equilátero, isósceles ou escaleno. Assuma que cada valor é um inteiro e menor que a soma dos outros dois. O programa só pode fazer, no máximo, três comparações entre inteiros. 3. (DigitChar) Ler um caráter e um valor inteiro e, caso o caráter seja um dígito, apresentar o caráter que corresponde à soma do valor inteiro e o código UNICODE do dígito. Se o caráter não for um dígito escrever apenas uma mensagem que indica esse facto. 4. (Greeting) Perguntar a hora e o nome do utilizador e apresentar a mensagem de cumprimento (Bom dia, Boa tarde ou Boa noite) conforme a hora. Considere que a hora introduzida é um valor inteiro entre 0 e 23. Caso seja lida a palavra “auto” (ou outra qualquer) em vez de um valor inteiro, o programa deve utilizar a hora atual, obtida através pela expressão LocalTime.now().getHour() usando a classe LocalTime do package java.time. C:\ISEL\PG>java Triang Valores dos lados? 3 3 5 Triângulo isósceles C:\ISEL\PG>java DigitChar Digito e Valor? 5 11 '5'(53) + 11 = '@'(64) C:\ISEL\PG>java DigitChar Digito e Valor? F 13 F não é dígito. C:\ISEL\PG>java Greeting Hora (auto)? 15 Nome? Ana C:\ISEL\PG>java Greeting Boa tarde Ana Hora (auto)? auto Nome? Luís Miguel Boa noite Luís Miguel 5. (FichasPG) C:\ISEL\PG>java FichasPG Ler a nota das 3 ou 4 fichas já realizadas em PG, apresentar as notas das 3 melhores por Fichas realizadas? 3 ordem decrescente e a respetiva média. Caso tenham sido realizadas 3 fichas, deve ser Notas das 3 fichas? 12 6 11 indicada a nota mínima da 4ª ficha “… para não reprovar” ou “… C:\ISEL\PG>java FichasPG Média=(12+11+6)/3 = 9.666667 ficha4 > 6 para melhorar a média para melhorar a média”. Caso não seja já possível ter média Fichas realizadas? 4 superior ou igual a 8 valores, o programa deve escrever Notas das 4 fichas? 12 6 11 15 “Reprovado”. Média=(15+12+11)/3 = 12.666667 6. (YearDays) Ler uma data e apresentar o número de dias que passaram desde o início desse ano até essa data. Um ano é bissexto se for múltiplo de 4 exceto se for múltiplo de 100 e não de 400. ISEL, 10 de outubro de 2015 C:\ISEL\PG>java YearDays Dia Mês Ano? 9 10 2016 282 dias desde 1/1/2016