Escolar Documentos
Profissional Documentos
Cultura Documentos
Estrutura de Dados
Trabalho Prtico
#1
Exerccio 1:
pacotes
01
Visando uma melhor organizao dos componentes desta aplicao, foram criados trs pacotes, que desempenham o papel de agrupar as classes que possuem funcionalidades similares ou relacionadas.
Descrio dos pacotes: Dado: agrega a classe que realiza a manipulao da fila de clientes. Formulrios: agrega as classes que implementam a interface grfica da aplicao para adio e visualizao dos dados. Principal: agrega a classe principal, responsvel por inicializar a aplicao.
Exerccio 1:
02
Exerccio 1:
Classe Adicionar:
03
Implementa formulrio para adio de clientes na fila de atendimento. Classe Atender: Implementa formulrio para atendimento de clientes; Mostra o nome do prximo cliente da fila; Boto para efetivar atendimento. Classe AtenderAdicionar: Realiza todas operaes relacionadas com a fila de clientes.
Exerccio 1:
package Principal;
04
Declarao da classe.
public class Principal { public static void main(String[] args) {
Exerccio 1:
05
Criao do objeto formularioPrincipal, instncia da classe FormularioPrincipal, que recebe como argumento a referncia para o objeto da classe AtenderAdicionar, criado anteriormente.
Exerccio 1:
JButtons
06
JLabels
Especificao do pacote que contm a classe. Importao das classes Atender adicionar e JOptionPane*, do pacote visual Swing.
Exerccio 1:
07
public class FormularioPrincipal extends javax.swing.JFrame { private AtenderAdicionar atenderAdicionar; public FormularioPrincipal(AtenderAdicionar atenderAdicionar) { this.atenderAdicionar = atenderAdicionar; initComponents(); . . . } Construtor chamado pelo mtodo
main da classe Principal. Recebe como parmetro a referncia para o objeto de AtenderAdicionar
Exerccio 1:
08
Exerccio 1:
09
Exerccio 1:
JLabel JButton
10
JTextField
Especificao do pacote que contm a classe. Importao das classes Atender adicionar e JOptionPane*, do pacote visual Swing.
Exerccio 1:
11
Exerccio 1:
12
Exerccio 1:
+
Enter
13
Exerccio 1:
JLabel JButton
14
Especificao do pacote que contm a classe. Importao das classes Atender adicionar e JOptionPane*, do pacote visual Swing.
Exerccio 1:
15
Criao dos atributos atenderAdicionar, do tipo AtenderAdicionar e formularioPrincipal, do tipo FormularioPrincipal Atualizao do JLabel para exibio do primeiro cliente da fila.
private AtenderAdicionar atenderAdicionar; private FormularioPrincipal formularioPrincipal; public Adicionar(AtenderAdicionar atenderAdicionar, FormularioPrincipal formularioPrincipal)
Construtor chamado pelo mtodo main da classe Principal. Recebe como parmetro as referncias para os objetos de AtenderAdicionar e de FormularioPrincipal.
Exerccio 1:
16
atender primeiro cliente da fila chamada do mtodo Atender, da classe AtenderAdicionar atualizao do JLabel da fila de clientes do formulrio principal pelo acionamento do mtodo AtualizarLabelLista, do objeto da classe AtenderAdicionar. termina a execuo do objeto, fechando o formulrio.
Exerccio 1:
package Dado;
17
import Formularios.FormularioPrincipal;
public class AtenderAdicionar { private String[] vetFila = new String[0]; private String[] vetNovaFila; . . .
Criao de dois vetores de Strings, referenciados por vetFila e VetNovaFila, responsveis pelo armazenamento do nome e ordem dos clientes na fila de atendimento e pelo armazenamento temporrio dos dados durante as operaes com a fila.
Exerccio 1:
18
mximo 10 posies
vetFila vetNovaFila
(referncia ao vetor que armazena a fila de clientes) (referncia ao vetor que armazena temporariamente os dados da fila, durante as operaes)
Exerccio 1:
. . .
19
public String[] getvetFila() { return (vetFila); } public boolean haClienteFila() { if (vetFila.length > 0) return (true); else return (false); } . . .
Mtodo testa a existncia de algum cliente na fila de atendimento, retornando verdadeiro ou falso, de acordo com o resultado obtido.
Exerccio 1:
. . .
20
vetNovaFila = new String[vetFila.length-1]; for (int i =0; i<vetNovaFila.length; i++) { vetNovaFila[i] = vetFila[i+1]; Criao de novo vetor de } Strings com uma posio vetFila = vetNovaFila;
. . .
Novo vetor recebe todos os valores do vetor vetFila, com execesso do primeiro, que foi atendido.
Exerccio 1:
. . .
21
public boolean haEspacoFila() { if (vetFila.length < 10) return (true); else Mtodo testa se h menos de 10 return (false); clientes na fila de atendimento, } ou seja, se a fila no encontra-se } . . . cheia, retornando verdadeiro
Exerccio 1:
22
O novo cliente adicionado na ltima posio do novo vetor e vetFila passa a referenciar este novo vetor.
Exerccio 1:
23
Exerccio 2:
Mtodo principal, a iniciar a aplicao
24
detalhamento do cdi o
public class TrabPraticoExer2 { public static void main (String[] args) { int[] vetor = {0, 5, 8, 12, 17, 26, 30, 33, 45, 60}; TrabPraticoExer2 trabPraticoExer2 = new TrabPraticoExer2(); trabPraticoExer2.ImprimeImparesVetor(vetor); } . . .
Acesso ao mtodo ImprimeImparesVetor, passando como parmetro a referncia ao vetor de inteiros criado.
Exerccio 2:
25
detalhamento do cdi o
Mtodo ImprimeImparesVetor, que testa a possibilidade de cada elemento do vetor ser mpar.
. . . public void ImprimeImparesVetor(int[] vetor) { int n = vetor.length; for (int i = 0; i< n; i++) { if ((vetor[i] % 2) != 0) System.out.println(vetor[i]); } }
mpar 5 1 2 2 0
Verificao se o resto da diviso do elemento do vetor por 2 tem valor diferente de 0, o que indica que o mesmo mpar.
Exerccio 2:
26
.............................................. t(n) = 8n + 5
vetor
tamanho do vetor
for i
n+ 1
0 to i < n
n
i
Exerccio 2:
27
Exerccio 3:
28
detalhamento do cdi o
import java.util.Random;
public class TrabPraticoExer3 { public static void main (String[] args) Mtodo principal. { int[] vetor = new int[200000]; Random gerador = new Random(); Declarao de um vetor for (int i = 0; i < 200000; i++) { de inteiros com 200.000 vetor[i] = gerador.nextInt(50); elementos. } . . .
Exerccio 3:
29
detalhamento do cdi o
TrabPraticoExer3 trabPraticoExer3 = new TrabPraticoExer3(); System.out.println("Md 1 - 1000 trabPraticoExer3.medias1(vetor, System.out.println("Md 2 - 1000 trabPraticoExer3.medias2(vetor, elem."); 1000); elem."); 1000);
Criao de objeto da classe trabPraticoExer3. Chamada dos mtodos medias1 e medias2 passando-lhes como parmetros o vetor de elementos randomicos e a quantidade de elementos a ser considerada.
System.out.println("-------------------"); System.out.println("Md 1 -100000 elem."); trabPraticoExer3.medias1(vetor, 100000); System.out.println("Md 2 - 100000 elem."); trabPraticoExer3.medias2(vetor, 100000); System.out.println("-------------------"); System.out.println("Md 1 - 200000 elem."); trabPraticoExer3.medias1(vetor, 200000); System.out.println("Md 2 - 200000 elem."); trabPraticoExer3.medias2(vetor, 200000);
Exerccio 2:
30
detalhamento do cdi o
public int[] medias1(int[] X, int n) { long tempoInicio = System.currentTimeMillis(); int[] A = new int[n]; int a, i, j; Mtodo mdias1, que implementa for (i = 0; i < n; i++) o clculo de mdias pr-fixadas, { de acordo com o visto em sala de a = 0; for (j = 0; j <= i; j++) aula na apresentao Sequncia 12 a = a + X[j]; Anlise de Algoritmos 5. A[i] = a / (i+1); } System.out.println("Tempo de execuo: " + (System.currentTimeMillis() - tempoInicio) + " milisegundos\n"); Impresso do tempo gasto em return (A); milissegundos, obtido pela diferena entre }
Exerccio 3:
31
detalhamento do cdi o
public int[] medias2(int[] X, int n) { long tempoInicio = System.currentTimeMillis(); int[] A = new int[n]; int s = 0; Mtodo mdias2, que implementa int i; o clculo de mdias pr-fixadas, for (i = 0; i < n; i++) de acordo com o visto em sala de { aula na apresentao Sequncia 12 s = s + X[i]; A[i] = s / (i + 1); Anlise de Algoritmos 5. } System.out.println("Tempo de execuo: " + (System.currentTimeMillis() - tempoInicio) + " milisegundos\n"); return (A); Impresso do tempo gasto em milissegundos, }
obtido pela diferena entre o tempo inicial e final do sistema, (retornado pela funo currentTimeMillis).
Exerccio 3:
x n A
32
*As instrues primitivas, a compor o termo independente da funo, no exercendo grande implicao
for i 0 to (n-1) .................................................................. n iteraes n a 0 ............................................................................................ n iteraes n for j 0 to i ....................................... n + (n(n+1)/2) iteraes (n(n+1)/2) 1 1 1 a a + x[j] ........................................ 3 . (n(n+1)/2) iteraes 1 1 x n(n+1)/2 j j + 1 ........................................ 2 . (n(n+1)/2) iteraes n n n n A[i] a /(i+1) ................................................................... 4.n iteraes n n i i + 1 .................................................................................. 2.n iteraes retorne A
Exerccio 3:
33
Exerccio 3:
34
t(n) = 11n + 6
vetor de n elementos ........................................................ 1 iterao 1 numero de elementos ............................................................ 1 iteraes n novo vetor n elementos ................................................. n iteraes 1 0 ............................................................................................................ 1 iterao
1
n+1
for i 0 to n(n-1) ............................................................................. n + 2 iteraes n n sn s + x[i] .................................................................................. 3.n iteraes n n n A[i] s / (i + 1)................................................................... 4.n iteraes n n i i + 1........................................................................................... 2.n iteraes 1 retornar A ................................................................................................... 1 iterao
Exerccio 3:
35
Exerccio 3:
36
Exerccio 3:
mdias2
37
Baseado na anlise emprica, o tempo gasto pelo algoritmo medias2 foi bem menor para valores elevados como 100.000 e 200.000 do que o gasto pelo algoritmo medias1. Tambm foi menor o tempo gasto por medias2 para o valor de 1.000; A anlise assinttica mostrou que medias1 uma funo quadrtica e medias2 uma funo linear, por isso medias2 melhor para valores altos de n.
Grupo:
Adriano Cardoso Daniel Costa Paulo Henrique Rafael Carvalho
Obri ado!