Buscar

APS_-_CIÊNCIA_DA_COMPUTAÇÃO_3º_SEMESTRE_UNIP-26_05_2014

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

APS - CIÊNCIA DA COMPUTAÇÃO 3º SEMESTRE UNIP
 de Caarlah | trabalhosfeitos.com
 UNIP – UNIVERSIDADE PAULISTA
CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DE INFORMAÇÃO
ATIVIDADE PRÁTICA SUPERVISIONADA
3º semestre
SÃO JOSÉ DO RIO PRETO
2014
SUMÁRIO
1. INTRODUÇÃO
Um algoritmo que ordena um conjunto, geralmente representada num vetor, é chamado de algoritmo de ordenação. Algoritmo de ordenação em ciência da computação é um algoritmo que coloca os elementos de uma dada sequência em certa ordem -- em outras palavras, efetua sua ordenação completa ou parcial. As ordens mais usadas são a numérica e a lexicográfica. Existem várias razões para se ordenar uma sequência. Uma delas é a possibilidade se acessar seus dados de modo mais eficiente. A estrutura de dados que iremos utilizar nesse trabalho é a Fila. Uma fila é uma estrutura de dados que admite inserção de novos elementos e remoção de elementos antigos.  Mais especificamente, uma fila é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há mais tempo. Em outras palavras, o primeiro objeto inserido na fila é também o primeiro a ser removido. Essa política é conhecida pela sigla FIFO (= First-In-First-Out). No dia a dia, estamos acostumados com as filas em diversos lugares: nos bancos, nos mercados, nos hospitais, nos cinemas entre outros. As filas são importantes pois elas determinam a ordem de atendimento das pessoas. As pessoas são atendidas conforme a posição delas na fila. O próximo a ser atendido é o primeiro da fila. Quando o primeiro da fila é chamado para ser atendido a fila "anda", ou seja, o segundo passa a ser o primeiro, o terceiro passa a ser o segundo e assim por diante até a últimapessoa. Normalmente, para entrar em uma fila, uma pessoa deve se colocar na última posição, ou seja, no fim da fila. Desta forma, quem chega primeiro tem prioridade. Neste capítulo, estamos interessados em desenvolver estrutura de dados com os comportamentos das filas. Assim como Listas e Pilhas, as Filas são estruturas de dados que armazenam os elementos de maneira sequencial. Assim como as Pilhas, as Filas têm operações mais restritas do que as operações das Listas. Nas Filas, os elementos são adicionados na última posição e removidos da primeira posição. Nas Listas, os elementos são adicionados e removidos de qualquer posição. Então, podemos implementar uma Fila simplesmente colocando as restrições adequadas nas operações de adicionar e remover elementos de uma Lista. Isso é bem parecido ao que fizemos com as Pilhas. Vamos implementar na sequência uma Fila de Aluno. Iremos aproveitar a classe Aluno feita no capítulo de armazenamento sequencial.
1.1. Objetivo
Desenvolver um programa que mostre a técnica do uso do algoritmo de ordenação de dados que vai mostrar o referencial teórico, o desenvolvimento e o resultado. Objetivo da pesquisa bibliográfica é a respeito dos principais algoritmos de ordenação de dados e o desenvolvimento de sistema computacional completo, utilizando a linguagem de programação Java, que obtenha os dados, possa inserir fazer busca alterar e excluir informações, além da elaboração de uma monografia sobre os aspectos teóricos que envolvem o projeto, bom como sobre todos os assuntos relativos ao desenvolvimento do sistema computacional.
1.2. Justificativa
Escolhemos a estrutura fila porque é uma das mais fáceis utilizadas nos dias de hoje e também para podermosaprender mais sobre este, e fica mais fácil para poder desenvolver o programa. Fila é a estrutura de dados bastante usada em computação, normalmente, para entrar em uma fila, uma pessoa deve se colocar na última posição, ou seja, no fim da fila. Desta forma, quem chega primeiro tem prioridade. Na estrutura de fila, os acessos aos elementos também seguem uma regra. O que diferencia a fila da pilha é a ordem de saída dos elementos: enquanto na pilha “o último que entra é o primeiro que sai”, na fila “o primeiro que entra é o primeiro que sai”. 
1.3. Metodologia
Para o desenvolvimento do programa a primeira parte foi fazer a pesquisa para aprofundar mais na estrutura de dados fila, para ter mais conhecimentos sobre a estrutura que iremos utilizar, nesta estrutura em forma de lista linear, as inserções são realizadas no extremo final denominado de “atrás”, e as remoções executadas na extremidade inicial denominada de “Frente”. Assim como na estrutura de dados Pilha, sua estrutura também é denominada por siglas que são FIFO (First In First Out, primeiro a entrar, primeiro a sair). A ordem linear para Fila é a “Ordem De Chegada”, pois assim como acontece nas filas de banco, ou de qualquer outro local, não se pode atender ao último que está na espera e deixar de atender o primeiro. 
Mostrarei alguns exemplos de fila:
1. Organização de arquivos para impressão: Usuário A seleciona seu documento a ser impresso > Usuário B manda também o seu arquivo para impressão > como não há distinção de prioridades nesta estrutura o sistema manda aquele que chegou primeiro, para ser impresso.
2. Ordem de veículos em um lavador: Motorista chega com seu veículo > Verifica se há vaga disponível >Estaciona seu veículo e se for o primeiro é logo atendido-> Se não for o primeiro, aguarda sua vez.
3. Fila de banco: Cliente entra no banco > Verifica se está vazio > se está vazio vai direto ao caixa > se não está fica atrás da última pessoa que está aguardando > atendente vai chamando um a um até que chega a vez deste cliente.
Uma lista ou sequência é uma estrutura de dados abstrata que implementa uma coleção ordenada de valores, onde o mesmo valor pode ocorrer mais de uma vez. Uma instância de uma lista é uma representação computacional do conceito matemático de uma sequência finita, que é uma tupla. Cada instância de um valor na lista normalmente é chamado de um item, entrada ou elemento da lista. Se o mesmo valor ocorrer várias vezes, cada ocorrência é considerada um item distinto. É forma de organização através da enumeração de dados para melhor visualização da informação. Em informática, o conceito expande-se para uma estrutura de dados dinâmica, em oposição aos vetores, que são estruturas de dados estáticas. Assim, uma lista terá virtualmente infinitos elementos. A ideia fundamental da fila é que só podemos inserir um novo elemento no final da fila e só podemos retirar o elemento do início.
2. FUNDAMENTAÇÃO
2.1. Eds (estrutura de dados)
Fila é uma lista linear em que a inserção é feita numa extremidade e a eliminação na outra. Conhecida com estrutura FIFO (First In, First Out) (a1, a2 , ... , an)
Exemplos:
Escalonamento de "Jobs": fila de processos aguardando os recursos do sistema operacional.
Fila de pacotes a serem transmitidos numa rede de comutação de pacotes.
Simulação: fila de caixa em banco.
Operações associadas:
1. Criar: cria uma fila vazia;
2. Vazia: testa seum fila está vazia;
3. Primeiro: obtém o elemento do início de uma fila;
4. Inserir: insere um elemento no fim de uma fila ENQUEUE;
5. Remover: remove o elemento do início de uma fila, retornando o elemento removido. DEQUEUE;
Implementação de Filas. Como lista Sequencial ou Encadeada?
Pelas suas características, as filas têm as eliminações feitas no seu início e as inserções feitas no seu final. A implementação encadeada dinâmica torna mais simples as operações (usando uma lista de duas cabeças). Já a implementação sequencial é um pouco mais complexa (teremos que usar o conceito de fila circular), mas pode ser usada quando há previsão do tamanho máximo da fila.
Aplicações
Os algoritmos FIFO's são comumente usados em circuitos eletrônicos de buffer e controle de fluxo, que vai desde o hardware até o software. Na forma de um hardware o FIFO consiste basicamente de um conjunto de ler e escrever ponteiros, armazenamento e lógica de controle. Armazenamento
pode ser SRAM, flip-flops, fechos ou qualquer outra forma adequada de armazenamento. Para o FIFO, de tamanho não-trivial, uma SRAM de porta dupla geralmente é utilizada quando uma porta é usada para a escrita e a outra para leitura.
O FIFO síncrono aonde o mesmo clock é usado para leitura e escrita. Um FIFO assíncrono utiliza diferentes relógios para leitura e escrita. Uma aplicação comum de um FIFO assíncrono utiliza um código de Gray (código binário refletido), ou qualquer unidade de código a distância, para a ler e escrever os ponteiros para garantir a geração de bandeira confiável. Uma nota mais preocupante é que se deve necessariamente usar a aritmética de ponteiro para gerar bandeiras para implementações assíncronasFIFO. Por outro lado, pode-se usar a abordagem de um balde "de fuga" ou a aritmética de ponteiro para gerar bandeiras nas implementações síncronas FIFO.
Exemplos de sinalizadores de status FIFO incluem: cheios, vazios, quase cheio, quase vazio, etc.
2.2. IDES
Fila
As Filas são estruturas baseadas no princípio FIFO (first in, first out), em que os elementos que foram inseridos no início são os primeiros a serem removidos. Uma fila possui duas funções básicas: ENQUEUE, que adiciona um elemento ao final da fila, e DEQUEUE, que remove o elemento no início da fila. A operação DEQUEUE só pode ser aplicada se a fila não estiver vazia, causando um erro de underflow ou fila vazia se esta operação for realizada nesta situação.
FIFO
Em Ciência da Computação, FIFO (acrônimo para First In, First Out, que em português significa primeiro a entrar, primeiro a sair) refere-se a estruturas de dados do tipo fila. Tem uma estrutura diferente da estrutura de uma LIFO (que significa Last In, First Out, as pilhas).
As listas são amplamente utilizadas em programação para implementar filas de espera. Em uma fila de tipo FIFO os elementos vão sendo colocados na fila e retirados (ou processados) por ordem de chegada. A ideia fundamental da fila é que só podemos inserir um novo elemento no final da fila e só podemos retirar o elemento do início.
Como exemplo de aplicação para filas, pode-se citar a fila de processos de um sistema operacional. Nela, é estabelecido um tempo  a ser usado por cada um dos processos. Se durante a execução de um processo o tempo passa de  a , este é posto na fila e o processo seguinte é executado. Se o processo seguinte não terminar de ser executado no tempo , ele é postona fila e o processo subsequente é executado, e assim por diante até todos os processos serem executados.
Em termos de controle de estoque, refere-se a um método de armazenamento onde os itens são consumidos por ordem de chegada.
JAVA
Java é uma linguagem de programação orientada a objeto desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não sua única linguagem.
Características 
A linguagem Java foi projetada tendo em vista os seguintes objetivos:
Orientação a objetos - Baseado no modelo de Simular
Portabilidade - Independência de plataforma - "escreva uma vez, execute em qualquer lugar" ("write once, run anywhere")
Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP
Segurança - Pode executar programas via rede com restrições de execução
Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:
Sintaxe similar a C/C++
Facilidades de Internacionalização - Suporta nativamente caracteres Unicode
Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM)
É distribuída com um vasto conjunto de bibliotecas (ou APIs)
Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa)
Desalocação de memória automática por processo de coletor de lixo
Carga Dinâmica de Código - Programas emJava são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização
3. CONCLUSÃO
Em nosso projeto foi utilizado a linguagem JAVA e o tipo de estrutura de dados FILA atendendo as quatro condições básicas em nosso banco de dados .txt: 
1. Adicionar dados
2. Alterar dados
3. Excluir dados
4. Buscar dado
4. CÓDIGO
// oFila = new Queue...
//List
//oUsu = new Usuario()
//oUsu.nome = ....
//oFila.add(oUsu)
package packaps;
import javax.swing.JOptionPane;
import java.util.*;
 
class Cliente{
 String nome, end;
 int idade, cod; 
}
 
public class Queueaps {
 
 private static Queue fila = new LinkedList();
 
 private static void adicionar(int codigo){
 Cliente cli = new Cliente();
 cli.cod = codigo;
 cli.nome = JOptionPane.showInputDialog(null, "Digite seu nome: ", "Adicionando novo cliente", JOptionPane.QUESTION_MESSAGE);
 cli.end = JOptionPane.showInputDialog(null, "Digite seu endereço: ", "Adicionando novo cliente", JOptionPane.QUESTION_MESSAGE);
 String xidade = JOptionPane.showInputDialog(null, "Digite sua idade: ", "Adicionando novo cliente", JOptionPane.QUESTION_MESSAGE);
 cli.idade = Integer.parseInt(xidade);
 JOptionPane.showMessageDialog(null, "Sua senha é: " + cli.cod, "Adicionando novo cliente", JOptionPane.INFORMATION_MESSAGE);
 fila.add(cli);
 
 }
 private static void consultar(){
 if (fila.peek() == null){
 JOptionPane.showMessageDialog(null, "Sua fila está vazia", "ERRO", JOptionPane.ERROR_MESSAGE);
 }
 else{
 String consultax =JOptionPane.showInputDialog(null, "Deseja pesquisar por: \n(1) Código \n(2) Nome", "Consulta em Fila - APS", JOptionPane.WARNING_MESSAGE);
 int consulta = Integer.parseInt(consultax);
 if(consulta == 1){
 Iterator itr = fila.iterator();
 String consultacodx = JOptionPane.showInputDialog(null, "Digite o código que deseja consultar: ", "Consulta código em Fila - APS", JOptionPane.QUESTION_MESSAGE);
 int consultacod = Integer.parseInt(consultacodx);
 int verif = 0;
 while(itr.hasNext()){
 Cliente c = (Cliente) itr.next();
 if(c.cod == consultacod){
 String alterar = JOptionPane.showInputDialog(null, "Código: " + c.cod + "\nNome: " + c.nome + "\nEndereço: " + c.end + "\nIdade: " + c.idade + "\nDeseja alterar? (s/n)");
 switch(alterar){
 case "s":
 c.nome = JOptionPane.showInputDialog(null, "Antigo nome: " + c.nome + "\nDigite novo nome: ", "Alterando cliente", JOptionPane.QUESTION_MESSAGE);
 c.end = JOptionPane.showInputDialog(null, "Antigo endereço: " + c.end + "\nDigite novo endereço: ", "Alterando cliente", JOptionPane.QUESTION_MESSAGE);
 String xidade = JOptionPane.showInputDialog(null, "Antiga idade: " + c.idade + "\nDigite nova idade: ", "Alterando cliente", JOptionPane.QUESTION_MESSAGE);
 c.idade = Integer.parseInt(xidade);
 JOptionPane.showMessageDialog(null, "As alterações foram salvas.", "Atualizando informações",JOptionPane.INFORMATION_MESSAGE);
 verif = 1;
 break;
 case "n":
 JOptionPane.showMessageDialog(null, "Nenhuma alteração foi feita.", "Sem alterações",
JOptionPane.INFORMATION_MESSAGE);
 verif = 1;
 break;
 default:
 JOptionPane.showMessageDialog(null, "Digite um valor válido.", "ERRO", JOptionPane.ERROR_MESSAGE);
 verif = 1;
 break;
 }
 }
 }
 if (verif == 0){
 JOptionPane.showMessageDialog(null, "Nenhum resultado encontrado", "Falha na pesquisa", JOptionPane.ERROR_MESSAGE);
 }
 }
 else if (consulta == 2){
 Iterator itr = fila.iterator();
 String consultanome = JOptionPane.showInputDialog(null, "Digite o nome que deseja consultar: ", "Consulta código em Fila - APS", JOptionPane.QUESTION_MESSAGE);
 int verif = 0;
 while(itr.hasNext()){
 Cliente c = (Cliente) itr.next();
 if(c.nome.equals(consultanome)){
 String alterar = JOptionPane.showInputDialog(null, "Código: " + c.cod + "\nNome: " + c.nome + "\nEndereço: " + c.end + "\nIdade: " + c.idade + "\nDeseja alterar? (s/n)");
 switch(alterar){
 case "s":
 c.nome = JOptionPane.showInputDialog(null,"Antigo nome: " + c.nome + "\nDigite novo nome: " , "Alterando cliente", JOptionPane.QUESTION_MESSAGE);
 c.end = JOptionPane.showInputDialog(null, "Antigo endereço: " + c.end + "\nDigite novo endereço: ", "Alterando cliente", JOptionPane.QUESTION_MESSAGE);
 String xidade = JOptionPane.showInputDialog(null, "Antiga idade: " + c.idade + "\nDigite nova idade: ", "Alterando cliente", JOptionPane.QUESTION_MESSAGE);
 c.idade = Integer.parseInt(xidade);
 JOptionPane.showMessageDialog(null, "As alterações foram salvas.", "Atualizando informações", JOptionPane.INFORMATION_MESSAGE);
 verif = 1;
 break;
 case "n":
 JOptionPane.showMessageDialog(null, "Nenhuma alteração foi feita.", "Sem alterações", JOptionPane.INFORMATION_MESSAGE);
 verif = 1;
 break;
 default:
 JOptionPane.showMessageDialog(null, "Digite um valor válido.", "ERRO", JOptionPane.ERROR_MESSAGE);
 verif = 1;
 break;
 }
 }
 }
 if(verif == 0){
 JOptionPane.showMessageDialog(null, "Nenhum resultado encontrado", "Falha na pesquisa", JOptionPane.ERROR_MESSAGE);
 }
 }
 else{
 JOptionPane.showMessageDialog(null, "Digite um valor válido.", "ERRO",JOptionPane.ERROR_MESSAGE);
 }
 } 
 }
 private static void callnext(){
 if (fila.peek() == null){
 JOptionPane.showMessageDialog(null, "Sua fila está vazia", "ERRO", JOptionPane.ERROR_MESSAGE);
 }
 else{
 Cliente c = (Cliente)fila.element();
 JOptionPane.showMessageDialog(null, "Próximo na fila: \nSenha: " + c.cod + "\nNome: " + c.nome);
 fila.remove();
 }
 }
 public static void main(String[] args) {
 int pergunta;
 String perguntax;
 int i = 1;
 boolean parar = false;
 while(!parar){
 perguntax = JOptionPane.showInputDialog(null, "Digite: \n(1) para adicionar um cliente à fila\n(2) para consultar um cliente \n(3) para chamar o próximo\n(0) para finalizar o programa.", "Cadastro em Fila - APS", JOptionPane.WARNING_MESSAGE);
 pergunta = Integer.parseInt(perguntax);
 switch(pergunta){
 case 1: adicionar(i);
 i += 1;
 break;
 case 2: consultar();
 break;
 case 3: callnext();
 break;
 case 0: JOptionPane.showMessageDialog(null, "O programa foi encerrado.", "Finalização do programa", JOptionPane.WARNING_MESSAGE);
 parar = true;
 break;
 default: JOptionPane.showMessageDialog(null, "Digite um valor válido.", "ERRO", JOptionPane.ERROR_MESSAGE);
 break;
 }
 if(parar){
 break;
 } 
 }
 }
}
5. FICHAS APS

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais