Buscar

Relatório para estudo (Arrays, Pilhas e Filas)

Prévia do material em texto

Relatório para estudo – Slides(Array)
O Java por si só é uma linguagem que possue uma forte tipagem, ou seja, é estritamente necessário declarar o tipo de dados que iremos utilizar ao decorrer do código, e essa “alocação” deve ser feita logo em seguida da declaração da classe e da função pública. Esse tipo pode ser primitivo ou não, determinando a forma como será alocado e as operações que podem ser realizadas com o mesmo.
Agora, para compreender melhor o que são esses tipos de dados, é necessário entender que nós possuímos os tipos primitivos e não primitivos de dados. Os tipos primitivos são aqueles que já são pré-definidos dentro da linguagem no geral e que podem ser “chamados” por um nome específico.Dentre os tipos primitivos de dados no Java, possuimos os seguintes: int, float, double, byte, short, long, char, boolean.
Nos demais slides, foi citado as utilidades e funcionalidades do objeto System.out, onde foram demonstrados seus respectivos métodos(print,printf,println) e funcionamentos em exemplos práticos.
Importante: Para realizar a utilização dos métodos de leitura dos dados passados como parâmetro pelo usuário, é necessário que se declare o Scanner. E para realizar essa declaração do Scanner, utiliza-se a seguinte nomenclatura: 
Scanner sc= newScanner(System.in);
Dessa forma, fica possível realizar a leitura de parâmetros passados pelo usuário, como por exemplo:
System.out.println(“Escreva um número: ”);
int i = sc.nextInt();
Importante: A leitura de Strings no Java é realizada através da seguinte nomenclatura:
String palavra = sc.next();
Em seguida, é necessário compreender os conceitos e idéias do array no geral antes de começar a aprofundar nas idéias de lista, pilha, etc. Os arrays, também conhecidos como arranjos, são estruturas homogêneas que tem como objetivo armazenar quantidades de elementos específicas(muitas vezes determinada logo em seguida da classe e função pública) com tipos iguais. Conforme o explicado, é necessário alocar os espaços de memória que serão utilizados por este array de forma a disponibilizar um bloco de memória específico, dessa forma, possibilitando que os seus elementos sejam organizados de maneira sucessiva e com tamanhos iguais. Além disso, é importante lembrar também que estes elementos do array podem ser acessados por um índice inteiro(estritamente importante lembrar que os índices só podem ser inteiros) de forma a possibilitar a leitura e/ou escrita.
Importante: O primeiro índice de um array é o índice 0. Além disso, é importante lembrar também que os arrays não são um tipo primitivo de dados no Java, mas sim um objeto cujo possue métodos que podem ser utilizados para realizar suas funções.
Conforme visto anteriormente, os arrays são um objeto e consequentemente possuem seus métodos para realizar as suas demais funcionalidades, como por exemplo, o método length, para com o qual pode-se descobrir o tamanho de um array, ou seja, a quantidade de elementos que está sendo armazenada no mesmo.
Importante: É importante lembrar que para a declaração de um array no Java, pode-se utilizar qualquer tipo de tipo primário de dados e ou objetos, como por exemplo int, double, String, Object. Para realizer a declaração de um array, possuem-se as seguintes nomenclaturas:
Int v[] = {5,6,7,8,9,10}; // Declaração de um array já preenchido
Int v[] = new int[10]; // O mesmo vale para os demais tipo de dados
É importante ressaltar que no caso da declaração de um array já preenchido, o compilador fica responsável por efetuar a alocação e atribuição necessária para este.
Relatório para estudo – Slides(ED-TAD):
Em primeiro lugar, é extremamente compreender o que é e quais são os objetivos da estrutura de dados. Basicamente, um programa de computador pode ser definido como uma combinação de um algoritmo com uma estrutura de dados, ou seja: Algoritmo + Estrutura de Dados.
Importante: Uma agenda de celular pode ser vista como uma estrutura de dados. Uma estrutura de dados mantém os dados organizados seguindo alguma lógica e disponibiliza operações para o usuário manipular os dados.
Dessa forma, antes de aprofundar nos conceitos de Estrutura de dados, além de demonstrar suas funcionalidades e utilidades, é necessário compreender todos os conceitos que envolvem um algoritmo. Um algoritmo nada mais é do que uma sequência de passos que tem como objetivo resolver algum problema e/ou alcançar algum objetivo.
É importante constar que ao decorrer do algoritmo, são utilizadas diferentes estruturas de dados para realizar essa resolução de um determinado problema, ou seja, problemas muito complexos podem exigir uma grande quantidade de estrutura de dados diferentes.
Agora, voltando um pouco para as estruturas de dados em si, é importante constar que elas possuem algumas funcionalidades dentro de nosso algoritmo, que são: Manter os dados organizados, seguir uma lógica e disponibilizar operações para o usuário manipular o conteúdo.
Importante: Essas operações comentadas anteriormente são as ações possíveis de serem realizadas, como por exemplo(criação, alteração, remoção, etc).
É extremamente importante constar que as variáveis são as estruturas de dados mais simples que existem, e que mesmo declaradas, ou não, estas variáveis podem conter dados dos tipos pré-definidos das linguagens ou tipos definidos pelo programador, porém, que existem operações já pré-definidas para tipos de dados pré-definidos(primitivos), mas que não existem operações pré-definidas para os tipos definidos pelo programador.
Importante: Um programador pode criar/ter o seu próprio tipo dentro da linguagem.
Dados: O seu conteúdo varia de acordo com a sua natureza, ou seja, eles podem armazenar apenas os valores relacionados ao seu tipo, como por exemplo, uma variável do tipo inteiro não pode armazenar uma string.
Operações: As operações são aquelas que devem prestar um serviço, a despeito dos dados manipulados e além disso devem garantir a integridade da organização pretendida.
Importante: Um dado é apenas uma informação que é armazenada, já a estrutura de dados é aquela quem irá administrar esses dados. É extremamente importante lembrar também que as operações de uma estrutura de dados constituem a sua Interface.
Agora entrando um pouco mais em TAD(Tipos abstratos de dados):
- É uma estrutura de dados e seu conjunto de operações.
- Abstrato significa “Esquecida a forma de implementação”
- O objetivos dos tipos abstratos de dados é o de oferecer soluções para auxiliar a resolução de problemas complexos.
Importante: A idéia do tipo abstrato de dados é a de criar funções que interagem com os dados, porém que estes ficam ocultos do usuário, ou seja, ele sabe as operações que devem ser realizadas em determinada situação, mas não entende e não sabe como funcionam essas operações.
Estrutura abstrata de dados: Em computação, o TAD é uma especificação de um conjunto de dados e operações que podem ser realizadas sobre esses dados. O TAD traz a idéia da finalidade do tipo e suas operações como o conceito principal, e não a maneira como foi implementado. Por exemplo, eu sei um que um carro pode fazer, porém não sei como ele realmente funciona.
Importante: São aqueles que encapsulam a representação dos dados e as operações que podem ser realizadas sobre eles. Para recordar os conceitos por trás de TAD, basta relembrar do tipo abstrato de dados para facilitar o uso de frações em Java.
Principais idéias do TAD:
- Separar a organização dos dados das operações que podem ser realizadas
- Promover uma interface para as operações válidas
- Permitir que a mesma estrutura seja usada para tipos de dados diferentes
Dentre os exemplos de TAD que podem ser citados, podemos demonstrar os mais cotidianos como: Filas, Pilhas, Listas e Tabelas.
Importante: As classes permitem representar as TADs!
Pontos importantes:
Classe: É a descrição de um objeto.
Objeto: Já os objetos são nada mais que a instanciação de uma classe. É importante ressaltar que os objetos são distinguíveis e que mesmo com atributos idênticos,estes possuem uma identificação que o distingue dos outros.
Operações: São os pedidos de ação que podem ser enviados para objetos.
Atributos: São as variáveis que pertencem a uma classe, também conhecidos como variáveis-membro ou campos. Além disso, são eles que indicam valores(dados) que serão armazenados pelos objetos. Estes podem representar estados de um objeto e são acessados por meio do seletor(.). objeto.campo.
Métodos: São subprogramas, ou seja, trechos de códigos que executam apenas tarefas específicas, como por exemplo, cadastro, exclusão, alteração, etc. Estes podem receber um ou mais parâmetros e podem retornar apenas um resultado ou não retornar nenhum resultado. Para entender melhor os conceitos de métodos, eles podem ser definidos como as funcionalidades que um obetos de uma classe podem realizar. Muitas vezes, estes modificam o estado de um objeto. Eles também podem representar uma ação do objeto ou a transformação ao qual este estado se sujeita. Eles podem ser acessados através do seletor (.), como por exemplo, objeto.método(argumentos).
Importante: É extremamente importante lembrar que os métodos possuem uma certa acessibilidade, ou seja, estes possuem especificadores, que podem ser, public, protected e private. Essa acessibilidade indica a visibilidade deste membro(método) pelo exterior.
Construtores: Os construtores são métodos especiais que criam instâncias de uma classe, ou seja, criam um objeto. É importante ressaltar que estes métodos possuem o mesmo nome da classe que está associada a eles. Além disso, é interessante lembrar que estes métodos podem receber parâmetros e que só podem ser acionados por meio do operador new, ou seja, quando a classe está sendo associada.
Retornando um pouco para TAD:
É importante constar que as operações do TAD podem ser categorizadas em tipos conforme seu propósito conceitual, ou seja, de acordo com sua funcionalidade.O entendimento deste propósito(ou dessa funcionalidade) auxilia no projeto das TADs, isto é, no projeto das operações necessárias a um tipo abstrato de dados, ou seja, no desenvolvimento das ações que este tipo poderá(ou não) realizar.
Tipos de operação de TAD:
Operações de criação: Capazes de criar novos objetos do TAD
Operações de produção: São aquelas capazes de criar novos objetos do tipo a partir de objetos existentes, eventualmente com alguma alteração.
Operações de alteração: São aquelas que modificam o estado do objeto.
Operações de Observação: Informam sobre o estado do objeto sem modificá-lo. Traduzindo, são aquelas que permitem que visualize-se a situação atual do objeto.
Operações de destruição: Removem o objeto da memória, liberando os recursos do sistema.
Um exemplo que pode ser fornecido para compreender melhor os conceitos que abrangem este tema, é um tipo abstrato de dados para facilitar o uso de frações no Java, pois assim como em outras linguagens de programação o Java não possue um suporte para este tipo de dado. O nome desse TAD será TAD Fracao.
Relatório para estudo – Slides(Pilhas):
Armazenamento Sequencial: É um tipo de armazenamento onde os dados são armazenados em um bloco único de memória, de forma a organizar uma estrutura de dados.
Armazenamento Não sequencial: É um tipo de armazenamento onde os dados são armazenados em pequenos blocos de memória que ocupam posições divergentes, ou seja, diferentemente do armazenamento sequencial, o armazenamento não é realizado apenas em um bloco único de código.
Agora entrando um pouco mais no conceito de pilha, é importante constar que as pilhas são um exemplo de estrutura de dados onde os elementos são colocados um sobre o outro e podem ser movimentados apenas por um de seus extremos, que no caso é o seu topo. Ou seja, no caso da pilha, um elemento pode ser apenas retirado do topo e novos elementos também só podem ser adicionados ao topo.
Operações comumente realizadas em plhas:
- Adição de elementos ao topo
- Remoção de elementos do topo
- Contagem dos elementos contidos na pilha
- Indicação de que a pilha está vazia
- Listagem dos elementos contidos na pilha
- Consulta do elemento do topo
Importante: Essas operações são independentes do tipo de elemento armazenado na pilha.
Relatório para estudo – Slides(Filas):
Uma fila é uma estrutura de dados onde os elementos possuem uma única entrada, que seria em seu fim, e uma única saída, que seria o seu início. Além disso, é importante constar que quando algum elemento da fila é retirado, a fila automaticamente deve se descolar para frente, ou seja, todos os elementos devem ser deslocados uma posição para frente.
Operações que podem ser realizadas com uma fila:
- Adição de elementos na fila(em seu fim)
- Remoção de elementos
- Visualizar o primeiro elemento da fila
- Listagem dos elementos da fila
- Contagem dos elementos da fila
- Indicação de que a fila está vazia
Importante: Essas operações são independentes do tipo de elemento armazenado na pilha.
É importante ressaltar que no caso das filas, utiliza-se o conceito de first-in-first-out, ou seja, o primeiro elemento a entrar na fila, é o primeiro a sair dela. Além disso, um outro fator extremamente interessante das filas, é que a ordem de remoção de elementos da lista é a mesma da ordem de adição de novos elementos.
Relatório para estudo – Listas:
Uma lista é uma estrutura de dados onde os elementos são colocados em uma sequência, porém que não existe uma ordenação implícita. O interessante da lista, e diferentemente dos conceitos que envolviam as outras estruturas apresentadas anteriormente, é a de que no caso das listas, a entrada dos elementos pode ser realizada por qualquer um dos dois extremos(início ou fim) e entre os elementos existentes. Neste caso, da mesma forma que um elemento pode ser posicionado em qualquer local da lista, qualquer elemento pode “sair” por qualquer um dos dois extremos(início ou fim).
Operações que podem ser realizadas com as listas:
- Adição de elementos
- Remoção de elementos
- Contagem dos elementos da lista
- Indicação de que a lista está vazia
- Consulta de elementos em qualquer posição
Importante: Essas operações são independentes do tipo de elemento armazenado na pilha.

Continue navegando

Outros materiais