Your SlideShare is downloading. ×
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
207
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Instituto Politécnico de SetúbalEscola Superior de TecnologiaDepartamento de Sistemas e InformáticaAulas de LaboratórioDisciplina de Introdução à ProgramaçãoAno Lectivo 2004/2005
  • 2. Séries de Exercícios de Introdução à Programação – Laboratórios Série 1: Introdução ao Ambiente de Desenvolvimento 1. Criação de Projectos Ao longo desta série serão seguidas as instruções do guia “Instalação e utilização do Gel” que indicam o modo de criar um projecto, criar classes, associar ficheiros, compilar, executar,etc. É aconselhavel, para cada um dos exercícios que se seguem, criar uma directoria individual e nela criar o projecto. Assim termos por exemplo: C:My DocumentsProjectosExemplo1ficheiros do projecto Este guia destina-se à prática de utilização do ambiente de desenvolvimento de modo a existir um primeiro contacto com: 1. O sistema de janelas do GEL 2. O sistema de Directorias e Ficheiros 3. Os projectos do GEL 4. O processo de escrita, compilação e execussão de programas 5. A linguagem JAVA Não é o objectivo deste guia a compreensão total do código Java nos exemplos seguintes2/32 © DSI
  • 3. Séries de Exercícios de Introdução à Programação – Laboratórios 2. Exemplos Exemplo 1 Enunciado: Escreva um programa em Java que imprima uma frase. Código: public class Exemplo1 { public static void main(String[] args) { System.out.println("Este é um programa simples"); } } Exemplo 2 Enunciado: Escreva um programa em Java que peça ao utilizador um número inteiro e o imprima. Código: public class Exemplo2 { public static void main(String[] args) { System.out.println("Introduza um número inteiro"); int num=Le.umInt(); System.out.println("O número lido é "+num); } }© DSI 3/32
  • 4. Séries de Exercícios de Introdução à Programação – LaboratóriosExemplo 3 Enunciado: Escreva um programa em Java que peça ao utilizador dois números inteiros, os imprima e imprima a sua soma. Código: public class Exemplo3 { public static void main(String[] args) { System.out.println("Introduza 2 números inteiros"); int num1=Le.umInt(); System.out.println("O nº é "+num1); int num2=Le.umInt(); System.out.println("O nº é "+num2); int num3=num1+num2; System.out.println("A soma de "+num1+"+"+num2+" é "+num3); } }Exemplo 4 Enunciado: Escreva um programa em Java que calcule a area e o perimetro de uma circunferência a partir do seu raio.. Código: public class Exemplo4 { public static void main(String[] args) { double area, perimetro; double PI=3.1415926; System.out.println("Este programa calcula o perimetro e a area de uma circunferência a partir do seu raio"); System.out.println("Qual o raio da circunferência?"); double raio = Le.umDouble(); area = PI * raio * raio; perimetro = 2 * PI * raio; System.out.println("Raio = "+raio); System.out.println("Area = "+area); System.out.println("Perimetro = "+perimetro); } }4/32 © DSI
  • 5. Séries de Exercícios de Introdução à Programação – Laboratórios Exemplo 5 Enunciado: Escreva um programa em Java que peça ao utilizador um número e diga se esse número é negativo ou positivo. Código: public class Exemplo5 { public static void main(String[] args) { float a; System.out.println("Introduza um número"); a = Le.umFloat(); if (a<0) { System.out.println("O número "+a+" é negativo"); } else { System.out.println("O número "+a+" é positivo"); } } } Exemplo 6 Enunciado: Altere o programa anterior de modo a que sejam pedidos números até ser introduzido o valor zero. Código: public class Exemplo6 { public static void main(String[] args) { float a; do { System.out.println("Introduza um número"); a = Le.umFloat(); if (a<0) { System.out.println("O número "+a+" é negativo"); } else if (a>0) { System.out.println("O número "+a+" é positivo"); } else { System.out.println("O número "+a+" não é positivo nem negativo"); } } while (a!=0); }}© DSI 5/32
  • 6. Séries de Exercícios de Introdução à Programação – Laboratórios Exemplo 7 Enunciado: Escreva um programa em Java que imprima os números inteiros de 4 a 10 inclusive. Código: public class Exemplo7 { public static void main(String[] args) { int i; for (i=4;i<=10;i++) { System.out.println("i é: "+i); } } }6/32 © DSI
  • 7. Séries de Exercícios de Introdução à Programação – Laboratórios Série 2: Tipos PrimitivosObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Aprenda a escolher o tipo de dados elementar mais apropriado à representação de quantidades inteiras. 2. Domine a utilização de tipos primitivos de dadosExercício 1Mostre como podem os seguintes identificadores ser associados aos respectivos tipos dedados: indice -> inteiro cmax -> real cmin -> real codigo -> caracter estado -> booleanoExercício 2Qual o valor das expressões constantes da tabela 1? Escreva um programa para verificar assoluções por si encontradas. 12*13/5%2+10-5 12/13/5%2+10-5 12%13/5%2+10-5 12+13/5%5+10-5 12-13/5%2+10-5 Tabela 1Exercício 3O programa da figura 1 usa o tipo de dado elementar short:class ShortEg{ public static void main ( String[] args ) { short value = 32; System.out.println("A short: " + value); }} Figura 1Alínea ACrie um ficheiro denominado ShortEg.java, compile-o e corra-o. Verifique o que o programaescreve no painel de mensagens.Alínea BEdite o programa e altere o valor 32 para um outro valor inteiro relativamente baixo,digamos 356. Compile e corra o programa. Em principio tudo deve correr bem.Alínea CAltere o valor para 90000 e tente compilar o programa. O que é que acontece? Porquê? Editeo programa e altere a palavra “short” para “int”. Compile e corra o programa. Qual adiferença entre esta e a alínea anterior?© DSI 7/32
  • 8. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 4O programa da figura 2 usa o tipo de dado elementar double:class DoubleEg{ public static void main ( String[] args ) { double value = 32; System.out.println("A double: " + value); }} Figura 2Alínea ACompile e corra o programa. A saída (o que o programa escreve no painel de mensagens)deste programa difere de alguma forma da saída da alínea A do exercício nº3?Alínea BAltere o valor da variável B para um valor que seja demasiado grande para uma variável dotipo double. Vai precisar de usar notação científica para o conseguir.Exercício 5O programa da figura 3 usa o tipo de dados elementar char:class CharEg{ public static void main ( String[] args ) { char ch = A ; System.out.println("A char: " + ch ); }} Figura 3Experimente o seguinte: 1) Troque o A por Z compile e corra o programa. 2) Troque o A por AA tente compilar o programa. 3) Troque o A por compile e corra o programa. Note que existe um espaço entre as duas plicas. 4) Troque o A por tente compilar o programa. Note que não existe nada entre as duas plicas. 5) Troque o A por "A" tente compilar o programa.Exercício 6Para o programa apresentado na figura 4:Public class IncrementaDecrementa{ public static void main (String[] args) { Boolean b = false; char c = ‘r’; byte j = 127; short k 32767; Syste.out.println(“c= “ + c); ++c; System.outprintln(“c= “ + c); ++c; System.outprintln(“c= “ + c); Systemout.println(“j= “ + j); --j System.out.println(“j= “ + j); ++j; System.outprintln(“j= “ + j) System.out.println(“k= “ + k); K -=4; System.out.println(“k= “ + k); K +=5;8/32 © DSI
  • 9. Séries de Exercícios de Introdução à Programação – Laboratórios System.out.println(“k= “+ k); }} Figura 4Alínea ACorrija os erros sintácticos do programa.Alínea BEscreva o resultado de cada uma das instruções da 6ª à 21ª linha de código.Exercício 7Para o programa da figura 5: (note que está escrito a duas colunas)public class ConverteExpandindo { d = temp; /**Main method*/ temp = f; public static void main(String[] args) { f = l; // Escreve no painel de mensagens System.out.println(f); { double d = 1.7E308; f = i; float f = 3.4E38f; System.out.println(f); long l = 1234567890123456789L; f = c; int i = 1234567890; System.out.println(f); char c = z; f = s; short s = 32767; System.out.println(f); byte b = 127; f = b; double temp; System.out.println(f); System.out.println(d); f = (float) temp; System.out.println(f); System.out.println(f); System.out.println(l); temp = i; System.out.println(i); i = c; System.out.println(c); System.out.println(i); System.out.println(s); i = s; System.out.println(b); System.out.println(i); temp = d; i = b; d = f; System.out.println(i); System.out.println(d); i = (int) temp; d = l; System.out.println(i); System.out.println(d); temp = c; d = i; c = (char) s; System.out.println(d); System.out.println(c); d = c; c = (char) b; System.out.println(d); System.out.println(c); d = s; c = (char) temp; System.out.println(d); System.out.println(c); d = b; } System.out.println(d); } } Figura 5Alínea AQual a resultado de cada uma das instruções de saída?Alínea BQuais as instruções de atribuição que originaram erros?© DSI 9/32
  • 10. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 8Examine o programa da figura 6class example{ public static void main ( String[] args ) { long hoursWorked = 40; double payRate = 10.0, taxRate = 0.10; System.out.println("Hours Worked: " + hoursWorked ); System.out.println("pay Amount : " + (hoursWorked * payRate) ); System.out.println("tax Amount : " + (hoursWorked * payRate * taxRate) ); }} Figura 6Alínea aModifique-o por forma a que cada variável seja declarada individualmente e não sejainicializada aquando da declaração. Em seguida escreva três instruções de atribuição paraassociar o valor a cada uma das variáveis. Compile, corra o programa e examine a sua saída.Alínea BAgora vamos tentar quebrar o programa.1) Remova uma das declarações de variáveis. Consegue compilar o programa?2) Agora remova uma das instruções de atribuição que inicializam uma das variáveis.Quando é que o problema é detectado?Exercício 9Considere as declarações de atribuição indicadas abaixo. Mostre o que fica guardado emiresult, fresult e sresult após cada atribuição. Basta verificar até à terceira casa decimal.int iresult,num1=25, num2=40, num3=17, num4=5;int num5=-14, num6=-27;double fresult, val1=17.0, val2=12.78;String sresult, title=”Java Software Solutions”;iresult= num1/num4; fresult=num1/num4; iresult=num3/num4; fresult=num3/num4;fresult=val1/num4; fresult=val1/val2; iresult=num1/num2; fresult=num1/num2;fresult= (double) num1/num2; fresult=num1/(double)num2; fresult= (double)(num1/num2),3);iresult= (int) (val1/num4); fresult= (int) (val1/num4); fresult= (int)((double)num1/num2);iresult= num3%num4; iresult=num2%num3; iresult=num3%num2; iresult=num2%num4;iresult=num5%num4; iresult=num6%num5; iresult=title.length();fresult=title.length();iresult=title.indexOf(‘t’); iresult=title.indexOf(‘q’);iresult=title.lastIndexOf(‘a’);sresult=title.toUpperCase(); sresult=title.replace(‘o’,’X’);sresult=title.substring(8);sresult=title.substring(8,16); iresult=(title.substring(8,16)).length();sresult=title+num1; sresult=title+num1+num2; sresult=title+(num1+num2);iresult=Math.abs(num6); iresult=Math.abs(num1-num2); fresult=Math.sqrt(num2);fresult=Math.pow(num4,3); iresult=Math.max(num2,num3); iresult=Math.floor(val2);iresult=Math.ceil(val2); fresult=Math.sin(num2 + num1*2); fresult=Math.PI*num4;fresult=Math.pow(title.length(),2)+num3*Math.sqrt(num3/num4); Figura 710/32 © DSI
  • 11. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 10Indique para as expressões abaixo os resultados.Assuma a seguinte declaração:Random rand= new Random( ); 1. rand.nextInt(); 2. Math.abs(rand.nextInt())%20; 3. Math.abs(rand.nextInt()%20); 4. Math.abs(rand.nextInt())% 8 + 1; 5. Math.abs(rand.nextInt())% 45 + 10; 6. Math.abs(rand.nextInt())% 100 - 50; 7. rand.nextInt() % 50; 8. rand.nextFloat(); 9. Math.random(); 10. Math.random()*8; 11. (int)Math.random()*20; 12. (int)Math.random()*20 + 1;Exercício 11Para os exercícios seguintes escreva uma expressão usando o Objecto Random para gerar umnúmero aleatório na gama de valores especificada (inclusive). 1. 0 a 10 2. 0 a 500 3. 1 a 10 4. 1 a 500 5. 25 a 50 6. –10 a 15Exercício 12Escreva uma expressão usando o método random da classe Math para gerar os númerosaleatórios na gama de valores especificada. 1. 0 a 10 2. 0 a 500 3. 1 a 10 4. 1 a 500 5. 25 a 50 6. –10 a 15© DSI 11/32
  • 12. Séries de Exercícios de Introdução à Programação – LaboratóriosSérie 3: Entrada e saída de dadosObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 3. Aprenda a escrever no ecrã informação; 4. Aprenda a ler varios tipos de formatos de dados introduzidos pelo utilizador.Exercício 1Considere que está interessado em calcular o valor do polinómio de 2º grau apresentado nafigura 5 para diferentes valores de X. 3X2 -8X + 4Escreva um programa que inclui uma variável de dupla precisão X. Atribua-lhe um valor.Escreva uma instrução que calcule o valor do polinómio e armazene o resultado numa outravariável. Finalmente escreva o resultado sob a forma: para X = 4.0 o resultado é 20.0.Exercício 2Escreva um programa que calcule a média de precipitação de três meses, Abril, Maio ejunho. Declare e inicialize uma variável com a precipitação de cada mês, calcule a média eescreva o resultado soba a forma:Precipitação em Abril: 12.Precipitação em Maio: 14.Precipitação em Junho 8Média da precipitação: 11.333333Para alinhar os valores numéricos use o caracter de tabulação ‘t’ como parte da string decaracteres nas instruções de saída. Verifique se o programa apresenta os resultados correctos.Exercício 3Escreva um programa para resolver cada uma das seguintes situaçõesa) Ler um número inteiro, multiplicá-lo por 2 e escrever o resultado.b) Ler dois números inteiros e escrever a sua soma, diferença e produto.c) Ler dois números reais e escrever a sua soma, diferença e produto.Exercício 4Suponha que um café tem a seguinte ementa: prego: 3.5€, Batatas fritas: 1€, Sumo: 0.9€,Bolo: 0,8€, Café: 0,45€. Solicite o numero de doses de cada um dos comestíveis acimaindicados e passe uma factura descriminada.Exercício 5Escreva um programa para calcular a média de um conjunto de 10 números inseridos peloutilizador.Exercício 6Faça um programa que calcule a taxa de juro de uma conta bancária. Desta forma, terá depedir ao utilizador que introduza o montante, a taxa de juro e o número de anos. De seguida,deve calcular os juros utilizando a formula: Montante_final = montante * (taxa_juro / 100) * numero_anosPor fim, deve mostrar no ecrã todos os dados obtidos da seguinte forma:Montante: 5000 €Taxa de Juro: 2,5%Numero de anos: 5Montante final: 5625 €12/32 © DSI
  • 13. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 7Desenvolva um programa que peça ao utilizador três números inteior, guarde-os em trêsvariaveis (a, b e c) e troque a ordem de forma a que: 1) o valor que estava na variavel a passe a ser o que estava na variavel b; 2) o valor que estava na variavel b passe a ser o que estava na variavel c; 3) o valor que estava na variavel c passe a ser o que estava na variavel a;Por fim escreva no ecrã o novo valor de cada variavel, com o seguinte formato:a = 10;b = 4;c = 1;Exercício 8Faça um pequeno programa que mostre no ecrã os seu dados pessoais.Exercício 9Altere o programa desenvolvido no exercício anterior de forma a introduzir os seu dadospessoais e só no fim é que mostra todos os seus dados pessoais de uma só vez.© DSI 13/32
  • 14. Séries de Exercícios de Introdução à Programação – LaboratóriosSérie 4: Instruções de selecção (IF e SWITCH)Objectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Aprenda a usar as estruturas de selecção if e switch 2. Domine a utilização das estruturas if e switch nas suas várias formas.Exercício 1Este exercício deve utilizar a intrução de selecção if.Alínea AEscreva um programa para ordenar dois inteiros inseridos pelo utilizador.Alínea BEscreva um programa para ordenar três inteiros inseridos pelo utilizador.Alínea CEscreva um programa para ordenar quatro inteiros inseridos pelo utilizador.Exercício 2Construa um programa que verifica se um número é par ou impar, numero esse introduzidopelo utilizador.Exercício 3Crie um programa que leia dois números inteiros e informe o utilizador se o primeiro édivisível pelo segundo.Exercício 4Escreva um programa em Java que converta notas quantitativas de 0 a 20 em notasqualitativas de mau a excelente, utilizando uma estrutura de if’s encadeados e que verifique olimite superior das gamas de cada uma das notas qualitativas.Considere que: 0-4:Mau; 5-9:Mediocre; 10-13:Suficiente; 14-17:Bom; 18-20:Muito Bom.Exercício 5Escreva um programa em Java que aceite três nomes e os imprima por ordem alfabéticacrescente. Use o método comparedTo() da classe String.O método comparedTo() tem o seguinte comportamento:String s1=”CAPACIDADE”;String s2=”CAPAZ”;s1.comparedTo(s2) devolve um valor inteiro negativo.s2.comparedTo(s2) devolve 0.s2.comparedTo(s1) devolve um valor inteiro positivo.Exercício 6Utilizando a linguagem Java, crie um programa que receba do utilizador um númerocorrespondente a um mês, e apresente no monitor o mês correspondente. (Nota: 1=JAN,2=FEV, 3=MAR,…). Deve usar a instrução de selecção switch.14/32 © DSI
  • 15. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 7Crie um programa, pede ao utilizador para introduzir dois números e a operação aritmética(*, /, -, +) que quer efectuar, pretende-se imprimir o resultado da operação matemática entreambos.Exercício 8Escreva um programa que apresente uma lista de 5 livros diferentes ao utilizador, pedindo-lhe que seleccione um deles. Para o livro seleccionado, informe o utilizador do preço dolivro.Exercício 9Desenvolva um programa que mostra ao utilizador o seguinte menu:1 – Nome2 – Idade3 – Nacionalidade4 – SairE por fim, peça ao utilizador que introduza a opção que deseja visualizar e mostra qual foiessa opção escolhida. Use a intrução switch.Exercício 10Altere o exercicio anterior de forma a pedir os dados do utilizador no inicio do programa. Noentanto, sempre que escolher uma das opções mostra os dados e de seguida pergunta sedeseja alterar os dados dessa mesma opção. Caso o utilizador deseje alterar deve alterar edepois mostrar toda a informação do utilizador.© DSI 15/32
  • 16. Séries de Exercícios de Introdução à Programação – LaboratóriosSérie 5: Estruturas de Repetição (WHILE, DO-WHILE e FOR)Objectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Pratique a utilização dos comandos while, do-while e for; 2. Domine a utilização das estruturas while, do-while e for nas suas várias formas.Exercício 1Escreva um programa, que analisa um número aleatório, informando se este é primo ou não.Alínea AUse a estrutura de repetição while.Alínea BUse a estrutura de repetição do-while.Exercício 2Crie um programa, em Java, que receba um número inteiro e informe quantos dígitos foramintroduzidos.Alínea AUse a estrutura de repetição while.Alínea BUse a estrutura de repetição do-while.Exercício 3Escreva um programa que leia um conjunto de números inteiros e termine quando forintroduzido um número negativo, indicando quantos números foram introduzidos e qual é omaior e o menor número introduzido. Use a estrutura do-while.Exercício 4Escreva um programa, que leia um número inteiro e calcule a soma dos seus dígitos. Use aestrutura while.Exercício 5Faça um programa que lê uma sequência de números inteiros positivos e calcule a sua soma.A quantidade de números é desconhecida à partida. A sequência de entrada só terminaquando for introduzido um número zero. Use a estrutura do-while.Exercício 6Crie um programa que calcule a soma de n primeiros números positivos, sendo o valor de nfornecido pelo utilizador. Use a estrutura while. Exercício 7Faça um programa, que calcule a média de 5 números aleatórios. Use a estrutura for.Exercício 8Escreva um programa que imprima a soma dos primeiros 20 números ímpares. Use aestrutura for.16/32 © DSI
  • 17. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 9Escreva um programa que peça ao utilizador que introduza um número inteior, e verifique seesse mesmo número inteiro é divisível por 1 até ao número introduzido. Use a estrutura for.Exercício 10Desenvolva um programa que mostra todos os números primos até 1000, por ordemdecrescente. Use a estrutura for.Exercício 11Escreva um programa que gera aleatoriamente um número entre 1 e 100, e pede ao utilizadorque acerte nesse número. Quando o utilizador introduz o número, deve indicar se este émaior ou menor ou igual ao gerado. O jogador tem 10 tentativas. Se o jogador acertar antesdas tentativas terminarem deve indicar que o jogador ganhou e o número de tentativas queutilizou. Use a estrutura for.© DSI 17/32
  • 18. Séries de Exercícios de Introdução à Programação – Laboratórios Série 6: Métodos – Passagem de parâmetrosObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Pratique a utilização da passagem de parâmetros. 2. Aprenda como interagir programas e subprogramas.Exercício 1Faça um programa para o cálculo da expressão f(x)=x 2 + 2x + 10, para os vários valores dex. (Nota: considere x os primeiros 10 valores inteiros).Exercício 2Escreva um programa em que obtenha 2 números aleatórios, entre 1 e 20, e retorne omáximo entre ambos.Exercício 3Faça um programa que calcula o cubo dos primeiros 10 números inteiros.Exercício 4Faça um programa que leia três números inteiros e calcule a sua média. Recorra a ummétodo para determinar a média pretendida.Exercício 5Escreva um método chamado sinal, que receba um número inteiro e retorne 1, -1 ou 0 caso onúmero seja maior, menor ou igual a zero, respectivamente.Exercício 6Escreva um programa, em Java, que contenha um método potência, que receba uma base eum expoente e calcule o valor da base elevado ao expoente. O expoente é sempre maior ouigual a zero e, a base é sempre representado por números inteiros positivos.18/32 © DSI
  • 19. Séries de Exercícios de Introdução à Programação – Laboratórios Série 7: Classes e ObjectosObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Aprenda a criar e instanciar Classes. Variáveis e Métodos de Instâncias. 2. Aprenda como interagir entre Classes.Exercício 1Programa para registo e consulta de veículos automóveis para stand de usados. a) Defina uma classe Automóvel, que tem a seguinte informação • Marca • Ano • Nº Série motor • Cor • Preço b) Defina um método construtor para a classe Automóvel que inicializa os valores dos atributos através da passagem de argumentos definidos na alínea a) c) Defina os seguintes métodos a) getMarca – retorna o valor do atributo marca b) getAno – retorna o valor do atributo ano c) getSerie – retorna o valor do atributo Série d) getCor – retorna o valor do atributo Cor d) Elabore um programa onde: • Na classe principal cria 2 automóveis, através da criação de objectos da classe Automóvel. • Defina um método para preenchimento de dados sobre um automóveis. e) Defina na classe principal os seguintes métodos: • procuraMarca – lista o automóvel de uma determinada marca • listaAutomovel – lista as características do automóvel pelo seu nº de série. f) Considere que se pretende trocar os atributos entre ambos automóveis. Para isso, crie um método para efectuar a troca pretendida. Para verificar os resultados, imprima os atributos dos automóveis, antes e depois da troca. Nota : Recorra à passagem por referência no método para aceder e alterar os dados do objecto.© DSI 19/32
  • 20. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 2Pretende-se criar uma conta bancária para dois clientes. Para isso, implemente um programaque permita: 1. Inserir os dados dos clientes. 2. Procurar o cliente através do seu número de contribuinte e imprimindo, em seguida, os seus dados.Assim, pretende-se que: a) Defina uma classe Cliente com a seguinte informação: • nome – nome do Cliente • n_Contribuinte – número do contribuinte • morada – Morada do cliente • telefone – Telefone/telemóvel para contacto b) Na classe criada defina os seguintes métodos: • setNome – modifica o valor do atributo nome • getNome – retorna o conteúdo do atributo nome • setContribuinte - modifica o valor do atributo n_contribuinte • getContribuinte - retorna o conteúdo do atributo n_contribuinte • setMorada - modifica o valor do atributo morada • getMorada - retorna o conteúdo do atributo morada • setTelefone - modifica o valor do atributo telefone • getTelefone - retorna o conteúdo do atributo telefone c) Defina na classe principal os seguintes métodos: • Método para preenchimento dos dados do Cliente: public static Cliente preencheDados() • Método para procurar o cliente com base no seu número de contribuinte: public static Cliente FindCliente(Cliente first,Cliente second,int contrib){ • Método para imprimir os resultados: public static void verificaCliente(Cliente testeCliente) • Método main, onde invoque cada um dos métodos acima implementados.Exercício 3Implemente um programa para registo e consulta de informação sobre os funcionários deuma empresa a) Defina uma classe Funcionário que tem a seguinte informação: • nome – nome do Funcionário • n_Bi – nº do BI • categoria – categoria da função • ordenado – ordenado base20/32 © DSI
  • 21. Séries de Exercícios de Introdução à Programação – Laboratórios b) Defina um método constructor para a classe Funcionário que inicialize os valores dosatributos através da passagem de argumentos definidos na alínea a)c) Defina os seguintes métodos • getNome – retorna o valor do atributo nome • getBI – retorna o valor do atributo BI • getCategoria – retorna o valor do atributo categoria • getOrdenado – retorna o valor do atributo ordenado • setOrdenado – modifica o valor do atributo ordenado • setCategoria – modifica o valor do atributo categoriad) Elabore uma classe principal onde : • Crie 2 funcionários, através da criação de objectos da classe Funcionário • Defina um método para preenchimento dados de um funcionário que retorne o objecto preenchido.e) Defina na classe principal os seguintes métodos • procura Funcionário – lista os atributos do funcionário pelo seu nº de BI • calculaOrdenado – para um determinado funcionário calcula o seu ordenado líquido, supondo que desconta 11% para a Segurança Social, 20% para o IRS e 15 EUR para a quota associativa da empresa. • calculaTotalOrdenado – determina qual o montante total que a empresa despende com ordenados dos dois funcionários por mês.© DSI 21/32
  • 22. Séries de Exercícios de Introdução à Programação – Laboratórios Série 8: Métodos RecursivosObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Pratique a utilização dos métodos recursivos.Exercício 1Utilizando a recursividade, obtenha os primeiros 12 números da sequência de Fibonacci.Exercício 2A função seno(x) pode ser calculada somando os n primeiros termos da séria infinita, dado nque é um inteiro e x um número real, tal como se exprime na figura 1. x3 x5 x7 x9 xnSen(x) = x − + − + − .... 3! 5! 7! 9! n! Figura 1Os valores de x são expressos em radianos.a) Escreva uma função que calcule iterativamente o sen(x).b) Escreva uma função que calcule recursivamente o sen(x).Exercício 3Sabe-se que a divisão pode ser obtida através de uma série de subtracções. Escreva umafunção recursiva, de dois argumentos inteiros, chamada divisão, que retorne o resultado dadivisão inteira do primeiro argumento pelo segundo. A função apenas pode utilizar asoperações de adição e subtracção.Exercício 4O máximo divisor comum entre dois números pode ser calculada por : n1 se n2=0mdc(n1,n2) = mdc(n2,mod(n1,n2)) se n2<>0 Figura 2Escreva um programa que leia 2 números inteiros e calcule o seu mdc.Exercício 5Faça um programa que, utilizando o método recursivo, implemente o triângulo de Pascal. OTriângulo de Pascal é dado pela seguinte expressão: 1 se k=0 ou k=nC(n,k) = C(n-1,k) + c(n-1,k-1) se 0<k<n Figura 322/32 © DSI
  • 23. Séries de Exercícios de Introdução à Programação – LaboratóriosResultado pretendido:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 1Exercício 6Escreva o seguinte método recursivo que retorne a sequência de n termos referentes aonúmero triangular. static long t(int n)Os números triangulares são 0 1 3 6 10 15 21 28 ... e são dados pela expressãoseguinte: t(n) = t(n-1) + n para n > 1© DSI 23/32
  • 24. Séries de Exercícios de Introdução à Programação – Laboratórios Série 9: TabelasObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Pratique aprofundadamente o uso das instruções de repetição 2. Aprenda a definir, inicializar, e manipular tabelas de tipos primitivos. 3. Domine o uso de tabelas unidimensionais e multi-dimensionais. 4. Saiba definir tabelas de objectos e efectuar operações sobre as mesmasExercício nº 1Implemente o método soma que retorna a soma dos elementos se uma tabela.A assinatura do método é a que se segue:static double soma(double[] x)Exercício nº 2Implemente o método para tabelas que troca entre si os elementos da tabela t da posição i e j,tendo em conta a seguinte assinatura:static void troca(int[] t, int i, int j)Exercício nº 3Implemente o método mover, com a assinatura abaixo descrita, que move o elemento databela t da posição i para a posição jExemplo:Se t representa a lista {22,33,44,55,66,77}, então mover(v,4,1) resultaem {22,66,33,44,55,77}static void mover(int[] t, int i, int j)Exercício nº 4Implemente uma classe que contenha os dois métodos acima definidos e que o método“main” permita testar o método troca e o método mover.Exercício nº 5Considere a seguinte declaração:char[][] m={{‘c’,’f’,’a’}, {‘q’,’q’,’w’},{‘i’,’p’,’j’}};Alínea aQual a dimensão da tabela m ?24/32 © DSI
  • 25. Séries de Exercícios de Introdução à Programação – LaboratóriosAlínea bQuantos elementos tem a tabela m?Alínea cQual o tipo dos elementos da tabela ?Exercício nº 6Alinea aImplemente o método trianguloDePascal que calcula e mostra no ecran as n primeiraslinhas do triângulo de Pascal.As linhas do triângulo de pascal calculam-se colocando no primeiro e último elemento decada linha 1 e nos restantes elementos a soma dos elementos da linha anterior na posiçãoimediatamente antes e depois do elemento que estamos a calcular.Exemplo de um Triângulo de Pascal de dimensão 6: [0] [1] [2] [3] [4] [5] [0] 1 [1] 1 1 [2] 1 2 1 [3] 1 3 3 1 [4] 1 4 6 4 1 [5] 1 5 10 10 5 1A assinatura do método a implementar é a que se segue:static int[][] trianguloDePascal(int n)Alinea bImplemente uma classe que contenha o método trianguloDePascal e que permitatestá-lo (pedindo o valor n ao utilizador e escrevendo no ecran o triângulo de pascalcorrespondente)Exercício nº 7Implemente o método produtoExterno que calcula o produto externo entre doisvectores. A matriz resultante calcula-se da seguinte forma p[i][j]=x[i]*y[j], onde xe y são os vectores de entradastatic double[][] produtoExterno(double[] x, double[] y)© DSI 25/32
  • 26. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício nº 8Temos um sistema para validar as matrizes do totoloto. O sistema digitaliza os impressos econverte cada aposta numa matriz de booleanos de 7 x 7. Cada elemento da matrizcorresponde um número de 1-49 e se este tiver o valor lógico verdade significa que o númerocorrespondente faz parte da aposta:Exemplo: Esta aposta do totoloto 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Corresponde a esta matriz T F F F F F F F F T F F F F F F F T F F F F F F F F F F F F F F T T F F F F F F F F T F F F F F FAlinea aEscreva um método que, tendo a assinatura abaixo descrita, receba como entrada a matriz deaposta e devolva uma tabela com os números apostados:static int[] apostaTotoloto(boolean[][] m)Alinea bEscreva um método que receba como entrada a matriz de aposta e devolva um valor do tipoboolean que diz se esta é valida.Nota: poderá haver apostas múltiplas, com 7,8,9,10,11, e 12 númerosstatic boolean apostaValidaTotoloto(boolean[][] m)Alinea cEscreva um programa que peça ao utilizador a sua aposta do totoloto e verifique se esta éválida e caso não seja, dê uma mensagem de erro.Exercício nº 9Treinando álgebra de matrizes....Implemente um método que multiplique duas matrizes de inteiros.static int[ ][ ] produtoMatrizes(int[ ][ ] m1, int[ ][ ]m2)26/32 © DSI
  • 27. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício nº 10Treinando álgebra de matrizes....Implemente um método que verifique se a matriz dada é a matriz identidade.static boolean identidadeMatriz(int[ ][ ] m1)Exercício nº 11Treinando álgebra de matrizes....Implemente um método que dado uma matriz calcula a matriz transposta.static int[ ] [ ] transpostaMatriz(int[ ][ ] m1)Exercício nº 12Programa para introdução e consulta de veículos automóveis para um stand . a) Defina uma classe Automóvel, com os atributos • Marca • Nº Série motor • Cor • Preço b)Defina um método construtor para a classe Automóvel que inicializa os valores dos atributos através da passagem de argumentos definidos na alínea a) c)Defina os seguintes métodos • getMarca – retorna o valor do atributo marca • getPreço – retorna o valor do atributo preço • getSerie – retorna o valor do atributo Série • getCor – retorna o valor do atributo Cor d)Crie uma Classe Menus onde deve ser possível: • Introduzir Automóveis na Base de dados • Listar dados dos automóveis respectivos através da inserção do número de série • Listar dados dos automóveis respectivos através da inserção da marca e)Defina na classe de teste, uma Base de dados com informação de automóveis, através da criação de uma tabela de objectos da classe Automóvel© DSI 27/32
  • 28. Séries de Exercícios de Introdução à Programação – Laboratórios Série Nº10– Procura e Ordenação de elementos em tabelasObjectivos da Série:Com esta série de problemas pretende-se que o aluno: 1. Pratique o uso do comando o uso de tabelas e da passagem de tabelas como parametros 2. Aprenda a implementar algoritmos de procura 3. Domine algoritmos de procura e uso de tabelas 4. Aprenda a implementar algoritmos de ordenação 5. Domine a ordenação de tabelas segundo vários métodosExercício nº 1Implemente o método minimo retorna o menor valor dos elementos da tabela x.static double minimo(double[] x)Exercício nº 2Implementa o método iMaximo que retorna o indice do elemento de maior valor da tabelax:static int iMaximo(double[] x)Exercício nº 3Implementa o método gama que retorna a diferença entre o valor mínimo e o valor máximodos elementos da tabela x.static double gama(double[] x)Exercício nº 4Implementa o método iguais que retorna o valor lógico verdade se as duas tabelas foremiguais, ou seja se os valores dos elementos dos dois vectores corresponderem entre si:static boolean iguais(double[] x , double[] y)Exercício nº 5Implemente a classe TabelaTeste, que contenha os métodos definidos em 1, 2 e 3.Esta classe deve ainda conter um método main, que: 1. Implemente a leitura das duas tabelas. 2. Imprima no ecran os seguintes resultados: • O mínimo dos valores da 1ª e 2ª tabela • A gama de valores da 1ª e 2ªa tabela • Se as duas tabelas são iguais.Exercício nº 6Temos uma tabela com as temperaturas médias ao longo dos dias de mês. Queremos saberpara um determinado mês: 1. Qual foi a temperatura mais baixa28/32 © DSI
  • 29. Séries de Exercícios de Introdução à Programação – Laboratórios 2. Em que dia ocorreu a temperatura mais elevada 3. Qual foi a diferença entre a temperatura mais baixa e a temperatura mais alta. Implemente um programa que cumpra os requisitos acima descritos usando os métodos definidos no Exercícios 1, 2, 3.Exercício nº 7Alinea aImplemente o método procuraInteiro que procura na tabela v, que tem como critériode paragem o valor de s, se esta contém o elemento x. Caso a procura seja realizada comsucesso retorna o índice do elemento, senão retorna –1.public static int procuraInteiro(int[] v, int x, int s)Alinea bImplemente o método leInteiro que retorna uma tabela com os inteiros introduzidos,através do teclado.O último elemento tem o valor s. Sendo assim, quando o utilizador digitar o valor de s éporque a introdução de valores terminou.public static int[] leInteiro(int s)Alinea cModifique o método da alínea a) de modo a poder ser feita procura em parte da lista, ou sejaprocura na tabela v entre os indices inicio e fim, do elemento x. Tendo como critério deparagem o valor s. Caso a operação seja realizada com sucesso retorna o índice do elemento,senão retorna o valor –1.public static int procuraInteiro(int[] v, int x, int s, int inicio, int fim)Alinea dImplemente um programa que : 1. Leia a nota dos trabalhos de IP por grupo. 2. Pergunte ao utilizador qual a nota que pretende saber: 3. Imprima o nº dos grupos que tiveram a nota lida no ponto 2Nota: Utilize os métodos definidos anteriormenteExercício 8.Um sistema de controlo de presenças ligado ao sistema de marcação de ponto, mantém umalista de todos os trabalhadores que num determinado momento se encontram dentro daempresa. É necessário implementar um método que dado o nome de uma pessoa, ele nosvalide se esta pessoa se encontra dentro da empresa ou não. Utilize a procura binária naimplementação desta função.Nota: a lista é terminada com a palavra “ * ‘”public static boolean procuraPessoa(String[] v)© DSI 29/32
  • 30. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 9Existe um sistema informático na escola para inscrição dos alunos para os testes de I.P. Oprograma pede aos alunos que se inscrevem o número e o nome . Após as inscrições teremterminado o programa disponibiliza várias funcionalidades: 1. Conta o nº de alunos inscritos 2. Imprime no ecran o nº de aluno e o seu nome por ordem crescente do nº de aluno.Alínea aImplemente um método que permita contar o nº de alunos inscritosAlínea bImplemente um método que permita ordenar ,usando o algoritmo selecion sort, os alunos pornúmero na ordem crescente.Nota. Deverá ser mantida a correspondência entre nº de aluno e nome.Alínea cImplemente o programa descrito acima usando os métodos que implementou na alínea a) ena alínea b).Exercício 10Implemente um programa que: • Ordene usando o algoritmo BubbleSort a matriz: a f d g b j x o l • Apresente a matriz ordenada em ordem crescente da esquerda para a direita e de baixo para cima no ecran, devendo ser o resultado final obtido: a b d f g j l o x30/32 © DSI
  • 31. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício 11Implemente um programa que: 1. receba o registo de emails (nome e morada) 2. guarde estes registos numa tabela 3. Ordene a tabela por nome, segundo o método quicksort. 4. Apresente em seguida o resultado no ecran.Exercício 12Os procedimentos de ordenação apresentados nesta série correspondem a uma ordenaçãodestrutiva, pois a tabela original é destruída e substituída pela tabela ordenada. Um processoalternativo consiste em criar uma tabela com índices, que representam as posições ordenadasdos elementos por selecção, criando uma tabela com índices. Implemente um método paraefectuar a ordenação por selecção, criando uma tabela com índices.Exercício 13A aplicação CarrosUsados é uma aplicação para busca de informação sobre carros usados.Contém informação sobre o modelo do carro, marca , ano e preço. Permite realizar asseguintes opções: 1. Listagem ordenada por modelo 2. Listagem ordenada por marca 3. Listagem ordenada por ano 4. Listagem ordenada por preço 5. Listagem ordenada por modelo, marca, preço 6. Listagem ordenada por modelo, marca, anopublic class CarrosUsados{ public String marca, modelo; public int ano,preco; …}Alínea aDefina o método que implementa a ordenação da tabela de carros usados por modelo.Alínea bDefina o método que implementa a ordenação da tabela de carros usados por preço.Alínea cDefina o método que implementa a ordenação da tabela primeiro por modelo, segundo pormarca, terceiro por preço.© DSI 31/32
  • 32. Séries de Exercícios de Introdução à Programação – LaboratóriosExercício nº 14Uma loja pretende dispor os seus artigos de vestuário segundo cores. Para isso precisa defazer uma pequena alteração à aplicação de suporte à gestão da loja, de modo a acrescentar afuncionalidade de listagem de artigos por ordem de cor .Sendo a ordem de cores desejada(amarelo,laranja,castanho,beje,verde,azul,vermelho,cinzento,preto).Implemente o método que permite reordenar a tabela de objectos ArtigoVestuariosegundo a ordem de cores desejadapublic class ArtigoVestuario{ public int cod; public String artigo, cor; ...}Exercício nº 15Pretende-se ordenar objectos da classe Data. Esta classe contém os campos dia,mês e ano.Alínea aEcreva a declaração para a classe Data.Alínea bEscreva a declaração para uma tabela de tamanho 100 , cujos elementos são da classe Data.Alínea cImplemente o método ordenaData que ordena de forma crescente ou decrescente umatabela de objectos da classe Data32/32 © DSI

×