Estruturas de dados e técnicas de programação

12
UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES LICENCIATURA PLENA EM COMPUTAÇÃO ESTRUTURAS DE DADOS E TÉCNICAS DE PROGRAMAÇÃO -I VETOR COLIDER/2012

description

Trabalho sobre vetores.

Transcript of Estruturas de dados e técnicas de programação

Page 1: Estruturas de dados e técnicas de programação

UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT

CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES

LICENCIATURA PLENA EM COMPUTAÇÃO

ESTRUTURAS DE DADOS E TÉCNICAS DE PROGRAMAÇÃO -I

VETOR

COLIDER/2012

Page 2: Estruturas de dados e técnicas de programação

UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT

CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES.

LICENCIATURA PLENA EM COMPUTAÇÃO

ESTRUTURAS DE DADOS E TÉCNICAS DE PROGRAMAÇÃO - I

VETOR

Trabalho acadêmico

apresentado como subsídios

para a avaliação da disciplina

de ESTRUTURAS DE DADOS

E TÉCNICAS DE

PROGRAMAÇÃO - I do curso

de Licenciatura em

Computação, ministrado pela

Professora Elaine Alves da

Rocha.

COLIDER/2012

Page 3: Estruturas de dados e técnicas de programação

IDENTIFICAÇÃO

Título: Vetor

Departamento: Licenciatura em Computação

Disciplina: Estruturas de dados e técnicas de programação - I

Discentes: Alexandro Nardeli Leite, Douglas Silva da Rocha, Everson Wolf.

Docente: Elaine Alves da Rocha

Público Alvo: Acadêmicos do 4º semestre do Curso de Licenciatura em Computação

INTRODUÇÃO

Vetor ou arranjo também conhecido como array é muito utilizado na programação

para armazenar dados, ou seja, números fixos de elementos de mesmo tipo. São entidades

“estáticas” no sentido de que, uma vez criadas, mantêm o mesmo tamanho, embora uma

referência de array possa ser atribuída a um novo array de tamanho diferente. As arrays são

usadas em listas, filas, pilhas e árvores que podem crescer e encolher enquanto os programas

são executados.

JUSTIFICATIVA

O objetivo deste trabalho é atender os educandos, para que os mesmos possam

conhecer o uso de vetores ou arrays na programação orientada a objetos e sua grande

importância onde todos os softwares que utilizam essas estruturas, contribuindo para a

ampliação de seus conhecimentos e no desenvolvimento do ensino-aprendizagem.

OBJETIVOS GERAIS

Proporcionar ao acadêmico o conhecimento do uso de vetores na programação,

através de apresentação de um software feito na linguagem Java, permitindo que a partir daí o

mesmo possa apreender e compreender estes conceitos.

OBJETIVOS ESPECÍFICOS

-Apresentar a estrutura de dados de arrays.

Page 4: Estruturas de dados e técnicas de programação

-Entender o uso de arrays para armazenar, classificar e pesquisar listas e tabelas de valores.

-Entender como declarar uma array, inicializar uma array e referir-se a elementos individuais

de um array.

METODOLOGIA

Através de pesquisas na internet e livros, foram recolhidas informações sobre o

sistema vetores (arrays). Através desta pesquisa foram montados slides para apresentar o

trabalho realizado em sala de aula, utilizando data show e notebooks e apresentação de um

software.

CONTEUDO DESENVOLVIDO

Vetores

Vetores, também muito conhecidos como arrays, são variáveis que servem para

guardar vários valores do mesmo tipo de forma uniforme na memória. Por exemplo, se

tivemos que criar 20 variáveis do mesmo tipo que querem dizer a mesma coisa, nós não

criaríamos => int var1, var2, var3, var4, var5,... Ao invés disso, criaríamos apenas uma

variável de vetor para guardar todos os 20 números de uma vez. Como um vetor pode guardar

vários valores temos que definir quantos valores ele deve guardar para que seja reservado o

espaço necessário em memória. Primeiramente, vamos aprender como declarar um vetor. Para

declarar um vetor devemos especificar o tipo ou classe de dado que será armazenado nele.

Após isso, damos um nome a esse vetor. E, para finalizar, indicamos que ele é um vetor,

simplesmente abrindo e fechando colchetes ([ ] ). Portanto, se quiséssemos um vetor de

números inteiro chamado meu vetor, declararíamos da seguinte forma:

int meuVetor [ ];

Agora que já declaramos o vetor, devemos dar um tamanho a ele, para que seja

reservado espaço suficiente em memória. Para fazermos isso, utilizaremos um instanciador

chamado new. New é muito importante, pois ele irá criar de fato o vetor.

Para indicarmos o tamanho usamos o instanciador new, depois o tipo de dado do vetor

e entre colchetes o tamanho do vetor. Tomando o exemplo acima, vamos indicar que

meuVetor terá o tamanho 4.

int meuVetor [ ] = new int [4];

O array é um grupo de posições contíguas na memória que possuem o mesmo nome e

o mesmo tipo. Para referir-se a uma localização ou elemento particular no array,

Page 5: Estruturas de dados e técnicas de programação

especificamos o nome do array e o número da posição (ou índice ou subscrito) do elemento

particular no array.

Declarando e alocando arrays

Os arrays são objetos que ocupam espaço na memória. Todos em Java devem ser

alocados dinamicamente com o operador new. Para um array, o programador especifica o tipo

dos elementos do array e o número de elementos como parte da operação new. Exemplo de

alocação de elementos em java:

int meuVetor[ ] = new int [ 4 ];

A declaração precedente também pode ser executada em duas etapas, como segue:

int meuVetor[ ]; // declara o array

meuVetor = new int[ 4 ]; // aloca o array

Na memória é representado da seguinte forma:

Agora, para acessarmos um local específico dessa memória devemos indicar entre

colchetes a posição desejada no vetor que chamamos de index. O importante mesmo é saber

que não importa o tamanho do vetor, o index (número que indica a posição) sempre começa

em 0. Ou seja, um vetor de tamanho 20 vai da posição 0 a 19, um vetor de tamanho 180 vai da

posição 0 a 179. Portanto, um vetor de tamanho 4 vai da posição 0 a 3.

Agora, se quisermos atribuir os valores 540 na posição 1 e 8456 na posição 3,

faríamos: meuVetor [1]=540; meuVetor [3]=8456. Não podemos nunca nos esquecer de que o

limite do vetor é sempre seu tamanho menos 1. Usando o exemplo: vetor de tamanho 4,

posição máxima é 3 (pois 4-1=3). Então, se atribuirmos um valor a posição 4 ocorrerá um

erro. Resumidamente, jamais poderíamos fazer meuVetor [4]=200.

Page 6: Estruturas de dados e técnicas de programação

Quando se aloca uma array, cada elemento do array recebe por default um valor zero

para variáveis numéricas do tipo de dados primitivos, false para variáveis booleana ou null

para referências (qualquer tipo não primitivo).

Podemos declarar arrays de qualquer tipo de dados.

byte[] meuVetorDeBytes;

short[] meuVetorDeShorts;

long[] meuVetorDeLongs;

float[] meuVetorDeFloats;

double[] meuVetorDeDoubles;

boolean[] meuVetorDeBooleans;

char[] meuVetorDeChars;

String[] meuVetorDeStrings;

Inicializando uma array

Um programa pode alocar e inicializar os elementos de um array na declaração

seguindo a declaração com um sinal de igual e uma lista de inicializadores separados por

vírgulas colocados entre chaves ( { } ). Nesse caso, o tamanho do array é determinado pelo

número de elementos na lista de inicializadores. Por exemplo, a declaração, int n [] = {10, 20,

30, 40, 50 }; cria um array de cinco elementos com os subscritos 0, 1, 2, 3 e 4. Observe que a

declaração precedente não precisa do operador new para criar o objeto array. Quando o

compilador encontra uma declaração de array que inclui uma lista de inicializadores, o

compilador conta a quantidade de inicializadores na lista e configura uma operação (new)

para alocar o número apropriado de elementos de arrays.

Com as arrays podemos fazer a soma delas se for numérica, armazenar nomes de

pessoas-cliente, é utilizada em todos os softwares existentes, pois eles sempre precisam

armazenar algum dado, mesmo que temporário.

Page 7: Estruturas de dados e técnicas de programação

Classificando arrays

Classificar dados (isto é, colocar os dados em alguma ordem particular como crescente

ou decrescente) é uma das aplicações mais importantes da computação. O banco classifica

todos os cheques pelo número da conta, de modo que possa preparar extratos bancários

individuais no final de cada mês. As empresas de telefonia classificam suas listas de

assinantes por sobrenome e, dentro desta classificação, pelo primeiro nome, para facilitar a

localização de números de telefone. Praticamente todas as organizações precisam classificar

seus dados de alguma maneira e, em muitos casos, quantidades enormes de dados. Classificar

dados é um problema intrigante que tem atraído alguns dos esforços mais intensos de pesquisa

no campo da ciência da computação.

A técnica que utiliza para classificar uma array se chama classificação de bolhas

(buble sort) ou classificação por aprofundamento, porque os valores menores “borbulham”

gradualmente para o topo do array, isto é, em direção ao primeiro elemento, como bolhas de

ar subindo na água, enquanto os valores maiores afundam para o fundo do array. A técnica

usa laços aninhados para fazer várias passagens pelo array. Em cada passagem, pares de

elementos sucessivos são comparados. Se um par estiver na ordem crescente ou os valores

iguais, a buble sort deixa os valores como estão. Se um par estiver na ordem crescente, a

buble sort troca seus valores no array.

macarrao =["spaghetti","tubetti","farfalle","ziti","penne"];

macarrao.sort();

trace (macarrao);

saída --> farfalle,penne,spaghetti,tubetti,ziti

Arrays multidimensionais

Os arrays multidimensionais com dois subscritos são utilizados frequentemente para

apresentar tabelas de valores que consistem em informações organizadas em linhas e colunas.

Para identificar um elemento específico da tabela, devemos especificar os dois subscritos –

por convenção, o primeiro identifica a linha do elemento e o segundo identifica a coluna do

elemento. Os arrays que exigem dois subscritos para identificar um elemento específico são

chamados de arrays bidimensionais. Observe que arrays multidimensionais podem ter mais de

dois subscritos. Java não suporta diretamente arrays multidimensionais, mas permite que o

programador, especifique arrays de um índice subscrito (unidimensionais) cujos elementos

também são arrays unidimensional, alcançando, assim, o mesmo efeito.

Page 8: Estruturas de dados e técnicas de programação

Os arrays multidimensionais podem ser inicializados com listas de inicializadores em

declaração, da mesma forma que um array unidimensional. O array bidimensional b [2][2]

poderia ser declarado e inicializado com int b [ ] [ ] = {{1,2}, {3,4}};

Os valores são agrupados por linha entre chaves. Assim, 1 e 2 inicializam b[0][0] e

b[0][1] e 3 e 4 inicializam b[1][0] e b[1][1]. O compilador determina o número de linhas

contando o número de sublistas de inicializadores ( representadas por conjuntos de chaves) na

lista de inicializadores. O compilador determina o número de colunas em cada linha contando

o número de valores inicializadores na sublistas de inicializadores dessa linha.

Os arrays multidimensionais são mantidos como arrays de arrays. A declaração

int b [ ] [ ] = {{1,2}, {3, 4, 5}}; cria o array de inteiros b com a linha 0 contendo dois

elementos (1 e 2) e a linha 1 contendo três elementos (3, 4, 5).

Também pode ser declarado dessa forma, int b [ ] [ ] = new int[10][10];

Exemplo de uso dos vetores

Método que inicia o vetor, recebendo o valor digitado pelo usuário.

public void inicia() { // aqui é declarado o método e abaixo o corpo do método

int valor = 0;

String entrada; // esta é a variável que receberá o valor digitado.

for (int i = 0; i < vetor.length; i++) {

entrada = JOptionPane

.showInputDialog("Entre com um valor inteiro!!!");

valor = Integer.parseInt(entrada); /* valor recebe o valor da

entrada */

vetor[i] = valor; // passa o valor para o vetor

}

}

Jogo da forca construído na linguagem Java

O jogo tem o estilo do jogo da forca feito de papel. O programa escolhe as palavras de

forma aleatória.

Page 9: Estruturas de dados e técnicas de programação

Código para centralizar o frame:

Coleção das palavras que irão ser escolhidas pelo programa:

Page 10: Estruturas de dados e técnicas de programação

Aqui é feita o sorteio das palavras do jogo de forma

dinâmica:

Nesta parte do código do programa verifica se a letra digitada pelo usuário já foi

digitada:

Page 11: Estruturas de dados e técnicas de programação

Nesta parte as janelas apresentam se caso o usuário acertou a palavra dará parabéns

senão irá dizer que foi enforcado:

Nesta parte do jogo e onde possui estes códigos, eles são utilizados para tocar um som

especificado pelo desenvolvedor:

Page 12: Estruturas de dados e técnicas de programação

CONCLUSÃO

Java armazena listas de valores em arrays ou vetores. O array é um grupo contíguo de

posições de memória relacionadas. Essas posições são relacionadas pelo fato de todas terem o

mesmo nome e o mesmo tipo. Para se referir a uma posição ou a um elemento em particular

dentro do array, especificamos o nome do array e o subscrito do elemento. Com ele podemos

construir inúmeras aplicações desde um simples algoritmo que armazenam dados, até

sistemas de empresas e jogos diversificados.

CRONOGRAMA

Ações Tempo de execução

Pesquisa 8 horas

Elaboração 2 horas e 30min.

Estudo para apresentação 4 horas

Apresentação 30 min.

Total: 15 horas

REFERÊNCIAS BIBLIOGRAFICAS

JUNIOR, P. J.; “Java guia do programador”, 2007. São Paulo-SP.

DEITEL, H. M. e DEITEL, P. J.; “Java como programar”, 2002. Porto Alegre-RS.

SIERRA, K.; e BATES, B.; “Use a cabeça! Java”, 2010. Rio de Janeiro-RJ.

HUBBARD. J.; “Programação com Java 2ª edição”. 2006. Porto Alegre-RS.

GOODRICH. M. T.; e TAMASSIA. R.; “Estruturas de dados em algoritmos em

Java”. 2007. Porto Alegre-RS.

HORSTMANN. C.S.; e CORNEEL G.; “Core Java”. 2010. São Paulo-SP.

Disponível em: http://www.tiexpert.net. Acesso em outubro 2012.