Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Guia das aulas Práticas e de Laboratório Computação na Internet Ano Lectivo 2002/2003 JAVA Conteúdo: • • • • • Sintaxe Tabelas Herança e Classes Gui Applets Executado por: António Gonçalves Guia de Exercícios Sintaxe 1. Escreva uma aplicação simples capaz de imprimir seu nome 10 vezes. 2. Escreva uma aplicação capaz de imprimir uma string especificada pelo utilizador (primeiro argumento recebido pelo programa) uma vez. Caso exista como segundo argumento um inteiro válido, a string deve ser impressa o número especificado de vezes. 3. Escreva uma aplicação que receba um número inteiro n imprimindo uma contagem de todos os números naturais de 0 até n (inclusive). 4. Escreva uma aplicação que receba um número inteiro n e um outro valor numérico p que representa o passo da contagem (valor do incremento) imprimindo uma contagem de 0 até n (se possível) de p em p. Por exemplo, se fornecido 10 e 3, deverão ser exibidos: 0, 3, 6 e 9. Caso o segundo argumento não seja fornecido, assume-se que p = 1 (contagem simples). 5. Escreva uma aplicação que receba um número inteiro n retornando a soma de todos os números naturais de 1 até n (inclusive). 6. Escreva uma aplicação que receba um número inteiro n retornando o produto de todos os números naturais de 1 até n (inclusive). 7. Escreva uma aplicação que receba dois argumentos inteiros imprimindo uma mensagem que indica qual o maior valor recebido. 8. Escreva uma aplicação que receba três argumentos que, em ordem, correspondem sempre a: um valor inteiro, um operador (+, -, * ou /) e um segundo valor inteiro. A aplicação deve imprimir o resultado da operação. 9. Escreva uma aplicação que receba um argumento numérico inteiro indicando se o valor dado é par ou ímpar. 10. Escreva uma aplicação que receba um argumento numérico inteiro indicando se o valor dado é primo ou não. 11. Escreva uma aplicação que receba dois argumentos numéricos inteiros determinando se o primeiro valor é múltiplo do segundo valor. 12. Escreva uma aplicação que receba três argumentos numéricos inteiros indicando se o valores dados compõe uma progressão aritmética ou uma progressão geométrica. 13. Escreva uma aplicação que receba um número variável de argumentos numéricos inteiros ou strings especificados pelo utilizador imprimindo separadamente na tela: (a) primeiro os valores numéricos inteiros e (b) depois as strings. Note que os argumentos numéricos e strings podem ser fornecidos misturados. 14. Escreva uma aplicação que receba um número variável de argumentos numéricos inteiros especificados pelo utilizador imprimindo na tela: (a) a quantidade de valores recebidos, (b) a somatória de todos os valores, (c) o produto de todos os valores e (d) a média aritmética de todos os valores. 2/ Guia de Exercícios 15. Escreva uma aplicação que receba um número variável de argumentos numéricos inteiros determinando qual o maior valor recebido. 16. Escreva uma aplicação capaz de escrever por extenso o valor inteiro recebido como argumento. O valor recebido deve estar dentro do intervalo [0, 99]. Valores maiores ou menores devem ser desconsiderados e uma mensagem apropriada deve ser exibida. 17. Escreva uma aplicação capaz ler do teclado uma quantidade arbitrária de números inteiros armazenando-os num vector e imprimindo os valores lidos. A palavra "fim" indicará o final da sequência de valores. Utilize a classe Console fornecida no Capítulo 4. 18. Especifique uma classe para armazenar informações sobre um ponto geométrico no espaço bidimensional (2-D) com as devidas operações sobre seus atributos. 19. Especifique uma classe para armazenar informações sobre um ponto geométrico no espaço tridimensional (3-D) com as devidas operações sobre seus atributos. 20. Escreva uma aplicação que receba a data através de três argumentos: dia do mês (numericamente), mês (numérica ou explicitamente, por exemplo: janeiro, fevereiro etc.) e ano (numericamente) determinando o número do dia do ano e os dias restantes. Dica: estude a classe Date. 21. Escreva uma aplicação que como argumentos: um intervalo de tempo em segundos (valor inteiro) e um ou mais palavras a serem tratadas como uma string. A aplicação deve, repetidamente, imprimir a string utilizando o tempo especificado como intervalo entre as impressões. Dica: estude a classe Thread. 22. Escreva uma aplicação capaz ler uma quantidade arbitrária de números inteiros armazenando-os numa lista ligada simples, imprimindo novamente os valores lidos na ordem apresentada e indicando qual o maior valor e sua posição. Será necessária a criação de uma classe auxiliar que represente os nós da lista ligada. 23. Escreva uma aplicação que receba como argumentos: uma palavra que representa título e quatro outras palavras que representam itens de uma lista. A aplicação devem produzir (imprimir no ecran) o código HTML correspondente a uma página com o título especificado e uma lista não ordenada contendo os itens especificados onde estes são links para paginas no mesmo directório com o nome item.html. 3/ Guia de Exercícios Tabelas 1. Escreva uma aplicação que leia uma quantidade arbitrária de números inteiros armazenando-os num vector e imprimindo os valores lidos. O valor “zero” indicará o final da sequência de valores. 2. Escreva uma aplicação que leia uma certa quantidade (fornecida pelo utilizador) de números reais armazenando-os num vector e imprima, no ecran, os valores máximo e mínimo da sequência. 3. Escreva uma aplicação de leia do utilizador 20 números reais armazenando-os num vector, em seguida, imprima no ecran o dobro de cada valor do vector. 4. Escreva um programa que informe ao utilizador o número de ocorrências numa determinada sequência. Para isso, preencha previamente um determinado vector de 10 elementos e em seguida imprima, no monitor, a quantidade de um certo número (introduzido pelo utilizador) existente no vector. 5. Escreva um programa que permite ao utilizador preencher um vector de 15 elementos e em seguida, informe ao utilizador a quantidade de números negativos existente no vector. 6. Elabore um programa que permita ao utilizador preencher um vector de 10 elementos e, em seguida, imprima a posição do maior valor existente. 4/ Guia de Exercícios Classes Exercício 1 Programa para registo e consulta de veiculos automoveis para stand de usados. a) • • • • • Defina uma classe Automovel, que tem a seguinte informação: marca ano nº serie motor cor preço b) Defina os um metodo construtor para a classe Automovel 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. • getAno – retorna o valor do atributo ano. • getSerie – retorna o valor do atributo serie. • getCor – retorna o valor do atributo cor. • getPreco– retorna o valor do atributo preco • setPreco- modifica o valo do atributo preco d) Crie uma classe principal programa onde: • crie uma base de dados de informação de automóveis, através da criação de um array de objectos da classe automóvel . • Defina um método para preenchimento da base de dados. e) • • • • Defina na classe principal os seguintes métodos: procuraMarca – lista os automoveis de uma determinada marca. procuraAno - lista os automoveis de uma determinado ano. quantosMarcaAno – determina quantos automoveis existem de uma determinada marca do ano x. listaAutomovel – lista todas as caracteristicas de um automovel pelo seu nº de serie. 5/ Guia de Exercícios Exercício 2 Programa para registo e e consulta de informação sobre os empregados de uma empresa. a) • • • • • • Defina uma classe Empregado, que tem a seguinte informação: nome n_BI – numero do BI n_ empregado – numero do empregado categoria – categoria da sua função ordenado – ordenado base seccao – seccao a que pertence b) Defina os um metodo construtor para a classe Empregado que inicializa os valores dos atributos 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 n_BI getCategoria – retorna o valor do atributo categoria getNumEmp – retorna o valor do atributo n_empregado getOrdenado– retorna o valor do atributo ordenado setOrdenado- modifica o valor do atributo ordenado setCategoria – modifica o valor do atributo categoria setSeccao – modifica o valor do atributo seccao d) Crie uma classe principal programa onde: • crie uma base de dados de informação de empregados, através da criação de um array de objectos da classe Empregado . • Defina um método para preenchimento da base de dados. e) Defina na classe principal os seguintes métodos: • procuraEmpregado – lista os atributos de um empregado pelo seu nº de empregado • calculaOrdenado - para um determinado empregado calcula o seu ordenado liquido, supondo que desconta 11% para a Segurança Social , 15% para o IRS e 20 EUR para a quota associativa da empresa. • calculeTotalOrdenados – determina qual o montante total que a empresa despende com ordenados por mês. • listaSeccao – lista os nomes e o número de todos os empregados que trabalham numa determinada secção. 6/ Guia de Exercícios Herança e Interfaces Exercício 1 a) Implemente classes a seguir especificadas: Publicações a) classe abstracta . • atributos: nome • Métodos ¾ void mostra() // mostra o nome ¾ void introduzdados() // lê o nome Livro • • • Classe que deriva de Publicações atributos: nome e autor Métodos ¾ void mostra() // mostra o nome e o autor do livro ¾ void introduzDados() // lê o nome e autor do livro Revista • • • Classe que deriva de Publicações atributos: nome e numero Métodos ¾ void mostra() // mostra o nome e o numero da revista ¾ void introduzDados() // lê o nome e o numero da revista b) No programa principal devera apresentar um menu com a opção de introduzir os 2 tipos de publicação, e consoante o tipo escolhido, pedir ao utilizador a introdução dos dados respectivos e mostrar em seguida o conteúdo do objecto criado. c) Modificar o programa principal de modo a poder ter-se uma base de dados de publicações, implementada sob a forma de um array de objectos de Publicações. Implementar metodos para introduzir publicações e para listar todas as publicações introduzidas. 7/ Guia de Exercícios Exercício 2 a) Implemente as classes abaixo especificadas Data • • • Classe abstracta atributos, ano, dia, mes. Métodos ¾ boolean bissexto() // verifica se a data pertence a uma ano bissexto ¾ boolean valida() // valida se a data é correcta ¾ void mostra() // método abstracto ¾ void leData() // método abstracto DataEuropeia • Classe que deriva de Data • Métodos ¾ void mostra() // mostra a data no formato ano/mes/dia ¾ void leData() // lê os dados na seguinte forma ano/mes/dia DataAmericana • • Classe que deriva de Data Métodos ¾ void mostra() // mostra a data no formato mes/ano/dia ¾ void leData() // lê os dados na seguinte forma mes/ano/dia DataPortuguesa • Classe que deriva de Data • Métodos ¾ void mostra() // mostra a data no formato dia/mes/ano ¾ void leData() // lê os dados na seguinte forma dia/mes/ano b) No programa principal devera apresentar um menu com a opção de utilizar os 3 formatos de data, e consoante o formato escolhido, pedir ao utilizador a introdução de uma data, valida-la e caso esta esteja correcta mostrar a data escolhida. 8/ Guia de Exercícios Exercício 3 a) Cria uma interface com o nome Prova com as seguintes declarações: int getPontuacao(); void setDataEvento(int ano, int mes, int dia); int getDiaEvento(); int getMesEvento(); int getAnoEvento(); int getNumElementos(); void setPontuacao(int p); b) Cria a Classe Futebol que implemente a interface Prova e com o seguinte métodos e atributos. Futebol(String nom, int n) // Construtor E os seguintes atributos: 1. int dia,mes,ano, nElem;// data do jogo, nº elementos da equipa 2. char resultado; // resultado “g-ganhou, e-empatou, p-perdeu 3. String nome; / /Nome da equipa c) • • • Implemente na classe Programa1, as seguintes funcionalidades: Criação de um array de provas de futebol Preenchimento da informação relativa as provas. Listagem do nº da equipa e da pontuação (o numero da equipa, corresponde ao índice do array mais uma unidade). Exercício 4 a) Cria a Classe Rali que implementa a interface Prova definida no exercício anterior e que tem os seguintes atributos e construtor: • int dia,mes,ano, nElem,tempo; // data do rali, nº elementos da equipa, tempo conseguido na prova • • String marca,piloto,copiloto // marca do automóvel , nome do piloto e do copiloto Rali(String m,String pp, String cp) // inicializa marca,piloto e co-piloto b) Altere a classe Programa1 , de modo a cumprir os requisitos indicados no exercícios 1.c. para registo de corridas de rali. Nota: // As alterações deverão ser o menor possível. 9/ Guia de Exercícios Exercício 5 Existe no Java a interface Comparable, que é definida do seguinte modo: public interface Comparable { public int compareTo(Object o); } Esta interface impõe a todas as classes que a implementam, a definição de um algoritmo que permite decidir se uma instancia da classe é maior, menor ou igual do que outra. a) Implemente um programa que ordene uma sequência de objectos da classe Integer. Deverá implementar o método ordena, que recebe um array de elementos do tipo Comparable, e a ordena, evocando o método compareTo. b) Defina a classe Ponto que implementa a interface Comparable. public class Ponto extends Object implements Comparable{ int x;// coordenada x; int y;//coordenada y; public Ponto(int x1, int y1) // construtor que inicializa x e y; public int compareTo(Object o) /* retorna 1 se a distancia à origem do ponto receptor for maior que a distancia do parâmetro à origem e retorna 0 se a distancia for igual.*/ c) Modifique o programa desenvolvido na alínea a) , de modo a este ordenar um array de pontos. No entanto o método ordenar, não poderá ser modificado. d) Defina a Classe Cor que implementa a interface Comparable. public class Cor extends Object implements Comparable{ String n_cor;// nome da cor final String[]arco_iris={ "vermelho", "laranja", "amarelo", "verde", "azul",“roxo","violeta"}; Nota: A ordem relativa das cores corresponde à ordem do arco_íris. Ex: Amarelo < Verde e) Modifique o programa desenvolvido na alínea c , de modo a este ordenar também um array de cores. No entanto o método ordenar, não poderá ser modificado. 10/ Guia de Exercícios GUI e Applets 1. Escreva uma aplicação GUI capaz de comparar dois números inteiros, fornecidos pelo Utilizador através de caixas de entrada (java.awt.TextField) indicando em um rótulo (java.awt.Label) qual dos valores é o maior. Se necessário adicione botões (java.awt.Button) a aplicação. 2. Escreva uma aplicação GUI capaz de exibir numa caixa de texto de múltiplas linhas (java.awt.TextArea) o factorial de todos os números naturais entre 1 e um valor inteiro fornecido pelo Utilizador através de uma caixa de entrada (java.awt.TextField). Os cálculos devem ser exibidos apenas depois do accionamento de um botão específico (java.awt.Button), um valor por linha na forma "n! = valor" (1! = 1, 2! = 2, 3! = 6, etc.). 3. Escreva uma aplicação GUI capaz de efectuar somas, subtracções, multiplicações e divisões onde: os valores de seus dois operandos são fornecidos em caixas de entradas (java.awt.TextField) assim como o resultado numa caixa de texto não editável. As operações são fornecidas num combo (java.awt.Choice) e a operação é realizada pressionando-se um botão (java.awt.Button). 4. Escreva uma aplicação contendo duas caixas de entrada (java.awt.TextField), duas caixas de lista (java.awt.List) digamos A e B e 6 botões (java.awt.Button). Cada caixa de entrada serve para introduzir itens em uma caixa de lista específica. Os botões servem para: limpar caixa A, limpar caixa B, transferir o item selecionado em A para B, transferir o item seleccionado em B para A, transferir todos os itens de A para B e transferir todos os itens de B para A. 5. Escreva uma aplicação contendo quatro botões de opção (java.awt.Checkbox) e uma caixa de texto de múltiplas linhas (java.awt.TextArea) onde ao clicar numa opção é indicada na caixa de texto qual opções estão actualmente seleccionadas. Modificando-se a selecção modifica-se a indicação destas na caixa de texto. Só devem ser relacionadas as opções seleccionadas. 6. Faça uma aplicação contendo quatro caixas de texto (java.awt.TextField) das quais apenas uma é editável. Um botão (java.awt.Button) deve prover o rodízio dos textos entre as várias caixas de texto, isto é, o texto da primeira caixa passa para a segunda, o da segunda caixa para a terceira, o da terceira caixa para quarta e desta última novamente para a primeira caixa. Note que a caixa estiver vazia ao efectuar o rodízio o "vazio" é transferido para a caixa seguinte. 7. Faça uma aplicação que contenha três caixas de entrada (java.awt.TextField) e dois botões capaz de: eliminar da string contida na primeira caixa de texto o caracter indicado na segunda caixa de texto ou substituir tal caracter pelo indicado na terceira caixa de texto. Dica: veja na classe String métodos úteis para estas tarefas. 8. Faça uma aplicação que demonstre através de botões os seguintes estados de uma caixa de texto: visível/não visível, habilitada/não habilitada, editável/não editável. São necessários três botões e uma caixa de texto. Dica: pesquisa a 11/ Guia de Exercícios classe java.awt.TextField e seus ancestrais até java.awt.Component para encontrar os métodos necessários. 9. Construa uma aplicação que dado o peso e a altura de uma pessoa em caixas de entrada determine o índice de massa corpórea IMC = massa/(altura2) através do accionamento de um botão diagnosticando (exibindo num rótulo ou caixa de entrada não editável): abaixo do peso (IMC<20), peso normal (20 <= IMC <= 25), sobrepeso (IMC > 25). 10. Faça uma aplicação gráfica capaz de desenhar um tabuleiro de xadrez (um reticulado de quadrados brancos e pretos). 11. Construa uma aplicação contendo uma barra de menu (java.awt.MenuBar), com dois menus (java.awt.Menu) distintos e no mínimo cinco itens (java.awt.MenuItem) em cada menu. Ao serem clicados o título da aplicação deve ser modificado para indicar a opção selecionada. 12. Desenvolva uma aplicação que receba valores inteiros numa caixa de lista (java.awt.List) utilizando uma caixa de entrada (java.awt.TextField). Devem existir botões (java.awt.Button) para: limpar a caixa de lista, eliminar apenas o item selecionado e desenhar um histograma com barras coloridas dos valores fornecidos. 13. Escreva uma aplicação que preencha uma janela com um arquivo GIF ou JPG especificado num caixa de entrada produzindo o efeito lado-a-lado (tile). 14. Escreva uma aplicação gráfica que coloque em caixas de entrada (java.awt.TextField) distintas e não editáveis as seguintes informações: coordenada x e coordenada y da janela onde ocorreu o último clique do rato, qual o botão do rato foi accionado. 15. Faça uma aplicação que sorteie um número entre 1 e 20 oferecendo ao Utilizador três caixas de texto (java.awt.TextField) para que sejam dados palpites. As caixas devem ser activas e não activas conforme o fornecimento da 1ª , 2ª e 3ª tentativas. A aplicação deve sinalizar se o valor foi adivinhado no instante que tal valor seja fornecido ou exibir o valor sorteado caso o Utilizador não consiga determiná-lo. Não use botões ou rótulos. 16. Faça uma aplicação que desenhe polinômios de uma variável de ordem 1, 2 e 3 dentro de um intervalo xmin e xmax fornecido. As informações necessárias (coeficientes dos termos de ordem 0 até 3 e os limites do intervalo podem ser colhidas em caixas de entrada. Sugere-se que a origem do eixos x e y, que devem ser desenhados em cor distinta da curva produzida, fique localizada no centro da janela. Não é necessário adicionar-se valores aos eixos desenhados. Considere que uma unidade equivale a um pixel para determinação da escala de desenho (opcionalmente esta razão poderia ser modificada permitindo ampliar o gráfico). 17. Faça uma aplicação gráfica capaz de desenhar automaticamente polígonos regulares de 3 ou mais lados, onde o número de lados é seleccionável e limitado a 20 (use uma caixa de entrada ou combo para efectuar tal selecção). Através de uma caixa de opção (java.awt.Checkbox) devemos indicar se o polígono deve ou não ser preenchido. 18. Escreva uma aplicação gráfica que permita desenhar várias linhas na posição, comprimento e cor seleccionada pelo Utilizador. A cor deve ser seleccionada 12/ Guia de Exercícios num combo (java.awt.Choice) enquanto que a linha desenhada mediante dois cliques sucessivos do rato. 19. Construa uma calculadora de 4 operações básicas (sem memória e outros complementos) que se apresente com botões (java.awt.Button) para os dígitos e operações e um visor (java.awt.Label). O layout dos componentes deve se assemelhar ao máximo a uma calculadora convencional. 20. Faça uma aplicação gráfica que desenhe um degrade horizontal ou vertical (configurável) de cores, preenchendo a janela a aplicação, de um lado a outro, indo de uma cor inicial definida pelo Utilizador através de valores RBG até o preto ou branco (configurável). Dica: desenhe linhas justapostas com cores ligeiramente diferentes. 21. Faça uma aplicação gráfica que exiba um contagem de 1 até um número inteiro especificado numa caixa de entrada (java.awt.TextField), tomando um intervalo também ajustável (de 0,1 até 10 segundos) entre a exibição de cada valor. Dica: utilize o método estático Thread.currentThread associado ao método sleep, ambos da classe java.util.Thread. 22. Faça uma aplicação gráfica que se comporte como um relógio analógico, isto é, um relógio circular com algarismos e ponteiros de hora e minutos (ponteiro de segundo opcional). Dica: pesquise a demonstração que acompanha o JDK. 23. Faça uma aplicação gráfica que se comporte como um duplo relógio analógico, isto é, um relógio para a hora local e um segundo que exiba a hora numa capital de outro país simultaneamente. Seria desejável que a cidade pudesse ser escolhida entre um conjunto de 5 ou 6 cidades. 24. Desenvolva uma aplicação que se comporte como o jogo campo minado utilizando botões para implementar as "posições" do jogo. Campo de tamanho fixo 10x10, apenas 8 bombas, sem contagem de tempo e sem necessidade de abrir posições pontuadas com zero automaticamente. Sugestão: veja como funciona o jogo fornecido com o MS-Win 25. Escreva uma applet capaz de converter o valor em Reais fornecido numa caixas de entrada (java.awt.TextField) em outro valor monetário conforme a seleção de uma moeda (no mínimo 3 moedas diferentes) numa caixa de seleção (java.awt.Combo) indicando o resultado em um rótulo (java.awt.Label). Se necessário adicione botões (java.awt.Button) a applet. 26. Escreva uma applet GUI capaz de calcular o valor futuro de um montante corrigido a taxa de juros fixa, sem depósitos adicionais por um período de n meses. A valor inicial, a taxa de juros (valor real) e o número de meses (valor inteiro) devem ser fornecidos pelo usuário através de caixas de entrada (java.awt.TextField). Os cálculos devem ser exibidos num rótulo (java.awt.Label) apenas depois do accionamento de um botão (java.awt.Button). 27. Construa uma applet que dado o peso e a altura de uma pessoa em caixas de entrada determine o índice de massa corpórea IMC = massa/(altura2) através do accionamento de um botão diagnosticando (exibindo num rótulo ou caixa de entrada não editável): abaixo do peso (IMC<20), peso normal (20 <= IMC <= 25), sobrepeso (IMC > 25). 13/ Guia de Exercícios 28. Escreva uma applet que exiba um quadrado colorido em seu interior. O tamanho do quadrado deve ser de 90% da maior dimensão da applet e sua cor deve ser obtida através da obtenção de um parâmetro especificado em tags <PARAM> do arquivo html. 29. Construa uma applet capaz de exibir uma figura jgp ou gif especificada pelo usuário numa caixa de texto. 30. Desenvolva uma applet que exiba um gráfico de barras (histograma) cujos valores, cores e rótulos são passados como parâmetros desta applet. 31. Desenvolva uma applet que exiba um gráfico tipo "pizza" cujos valores, cores e rótulos são passados como parâmetros desta applet. É desejável que ao menos uma das "fatias" possa ser destacada da "pizza". 32. Modifique a applet do exercício 1 de forma que um número variável de moedas e suas respectivas taxas de câmbio sejam obtidas dos parâmetros da applet. 33. Desenvolva uma applet que exiba um gráfico tipo barra cujos valores, cores e rótulos são passados como parâmetros desta applet. A barra representa sempre 100%, indicando opcionalmente a composição percentual de cada valor adicionado. 34. Escreva uma applet capaz de efectuar a consistência de um número fornecido e seus dígitos de controle fornecidos em duas caixas de texto distintas (java.awt.TextField) após o accionamento de um botão (java.awt.Button). O números admitidos possuem 5 dígitos e o dígito de controle possui apenas um dígito. Para verificar a validade do dígito de controle deve-se efectuar o seguinte cálculo para um número abcde: controle = (a*2+b*3+c*5+d*6+e*7)%10. 35. Escreva uma applet que apresente um texto obtido de um parâmetro como um letreiro luminoso, isto é, o texto é exibido numa cor inicial e, depois de um tempo (também obtido dos parâmetros), o texto é exibido numa segunda cor, repetindo-se a sequência. 36. Desenvolva uma applet que se comporte como uma questão de um teste. A applet deve apresentar um enunciado e uma lista de opções das quais apenas uma pode ser escolhida. Ao accionar-se um botão, cada opção direcciona o browser para outra url permitindo o encadeamento de exercícios utilizando applets em cada uma destas páginas. O enunciado, as alternativas e as urls associadas a cada uma devem ser obtidas de parâmetros da applet. 37. Desenvolva uma applet que exiba um conjunto de botões que possam ser accionados provocando o direccionamento do browser para a página indicado. O número de páginas e seus endereços devem ser obtidos dos parâmetros da applet. 38. Desenvolva uma applet que exiba uma imagem. A applet tratará a imagem como uma grade invisível de l linhas e c colunas sendo que para cada uma das células desta grade se associa um site. Ao clicar na figura o browser deverá ser direccionado para este site. O número de linhas, colunas e os respectivos endereços electrónicos devem ser obtidos de parâmetros da applet. 14/ Guia de Exercícios 39. Desenvolva uma applet que exiba uma animação qualquer utilizando apenas primitivas gráficas, por exemplo, quadrados coloridos em movimento, preenchimento aletório da área da applet, etc. 40. Escreva uma applet capaz de desenhar um gráfico do tipo y=a0+a1*x1+a2*x2+...+a10*x10 onde o valor mínimo e máximo de x são fornecidos, bem como o passo (incremento de x). Os coeficientes a0 até a10 devem ser fornecidos através de caixas de lista ou caixas de lista ou outro meio qualquer. 41. Faça uma applet que permita deslocar verticalmente um conjunto de linhas texto fornecido como parâmetro. O deslocamento deve ser suave e contínua. É desejável a parametrização do fonte do texto, da cor do texto e da cor de fundo da applet, bem como algum grafismo para melhorar seu visual. 42. Faça uma applet que se conecte ao servidor que forneceu a página através de sockets recebendo deste um boletim de texto que deve ser exibido num componente do tipo java.awt.TextArea. Arbitre livremente a porta do servidor utilizada para este serviço. A aplicação que será executada no servidor deve extrair o boletim de um arquivo texto localizado no mesmo directório da aplicação. 15/