Você está na página 1de 35

Algoritmos e Tcnicas de

Programao II
Vetores e Matrizes

Professor Msc. Vincius Tolentino


Objetivos de aprendizagem

Aprenderemos VETORES e MATRIZES;

Estudaremos pesquisa Sequencial em


Vetores;

Descobriremos como debugar o cdigo.


Problema
Leia o nome de 5 pessoas e os coloque em
ordem alfabtica.

Fcil de resolver com apenas 5 variveis.


Problema
Leia o nome de 500 pessoas e os coloque
em ordem alfabtica.
Quantas variveis????
Soluo (Vetores)
Um vetor uma varivel composta
homognea unidimensional formada por
uma seqncia de variveis, todas do
mesmo tipo, com o mesmo identificador
(mesmo nome) e alocadas
seqencialmente na memria.
Soluo (Vetores)
Nomes = Variavel do tipo caracter
Joo Jos Edgar

Maria Carlos Marcos


Vetores
Este tipo de estrutura tambm chamado de matriz
unidimensional.

Um vetor declarado com seu nome, tamanho e seu


tipo.

Para declarar um vetor em java basta abrir e fechar um


colchete antes ou aps a declarao de uma
varivel, desta forma esta varivel na verdade ser um
vetor.

Em seguida, dever ser informado o tamanho do vetor.


Em java a primeira posio de um vetor sempre a de
nmero 0 (zero) e a ultima posio ser o tamanho do
vetor menos 1.
Professor Msc. Vincius Tolentino 7
Vetores
EXEMPLO 1

float notas[ ] ; // definio da notas como um vetor


notas = new float [10] ; // definio do tamanho do vetor notas com 10 posies

Ou seja, o vetor notas comea na posio 0 e termina na posio 9, total de 10


itens:
Posies do vetor 0 1 2 3 4 5 6 7 8 9
notas

Obs: Uma varivel somente pode conter um valor por vez.


No caso dos vetores, estes podero armazenar mais de um valor por vez, pois
so dimensionados exatamente para este fim.

Professor Msc. Vincius Tolentino 8


Vetores

A declarao e a inicializao de um vetor pode ser escrita em


apenas uma linha de comando:
EXEMPLO 2
float notas[ ] = new float [3] ;

A atribuio ou a exibio de valores contidos nos vetores


feita indicando a posio do vetor entre colchetes. Exemplo:
Atribuindo valores ao vetor de notas do aluno:
notas[0] = 5.2;
notas[1] = 8.0;
notas[2] = 9.2;

Professor Msc. Vincius Tolentino 9


Vetores

O nome o mesmo, o que muda a informao


indicada dentro dos colchetes, ou seja, o ndice ou
posio do vetor, que representa a posio dentro
do vetor onde o valor est armazenado. Para o
exemplo anterior teramos:

notas

0 1 2 => ndice ou posio no vetor


5.2 8.0 9.2 => contedo de cada posio

Professor Msc. Vincius Tolentino 10


Matrizes
Usando mesmo exemplo anterior, vamos supor que
agora ser necessrio armazenar 4 notas dos
mesmos 5 alunos, ao invs de apenas uma.

Uma opo seria criar cinco vetores, um para cada


4 notas de cada aluno.

Entretanto, esta no a melhor soluo j que seria


necessrio criar uma estrutura de controle para
cada vetor. A melhor opo seria criar uma nica
matriz de duas dimenses para armazenar cada
uma das 4 notas dos 5 alunos.
Professor Msc. Vincius Tolentino 11
Matrizes
Para declarar matrizes em java, da
mesma forma que a declarao de
vetores diferenciando-se apenas no
nmero de dimenses, j que o vetor
possui apenas uma dimenso e matrizes
possuem 2 ou mais dimenses.

No caso de uma matriz de 2 dimenses, a


primeira dimenso indica o nmero de
linhas e a segunda o nmero de colunas.
Professor Msc. Vincius Tolentino 12
Matrizes

Para o caso das 4 notas dos 5 alunos a declarao da


matriz seria:

float notas [ ] [ ] ;
notas = new float [5] [4] ;

ou

float notas [ ] [ ] = new float [5] [4] ;

Professor Msc. Vincius Tolentino 13


Matrizes
Neste caso, as linhas representam os alunos, e as
colunas representas as notas :

notas
0 1 2 3 ndice das colunas => 4 notas
0 8.5 9.0 7.8 8.9

1 5.0 6.8 8.7 6.5


ALUNOS
7.0 7.5 5.7 7.8
2
8.5 8.0 9.2 7.9
3
5.5 8.0 7.2 7.0
4
ndice das linhas => 5 alunos
Professor Msc. Vincius Tolentino 14
Matrizes
Exemplo de programa:

Professor Msc. Vincius Tolentino 15


Na prxima bloco...

Estudaremos pesquisa Sequencial em


Vetores;

Descobriremos como debugar o cdigo.

Bons estudos!
Professor Msc. Vincius Tolentino 16
Algoritmos e Tcnicas de
Programao II
Vetores e Matrizes

Professor Msc. Vincius Tolentino


Pesquisa Sequencial em Vetores

Este o tipo de pesquisa mais simples em vetores,


no qual cada item do vetor examinado por vez
e comparado ao item que se est procurando,
at ocorrer uma coincidncia.

Este mtodo de pesquisa lento, porm, a


melhor opo para os casos em que os elementos
do vetor encontra-se desordenados.

Professor Msc. Vincius Tolentino 18


Pesquisa Sequencial em Vetores

Exemplo de Pesquisa Sequencial:

Criar um programa que inicialmente receba a


digitao de 5 nomes e armazene em um vetor. Em
seguida o programa receber via teclado a
digitao aleatria de Nomes e pesquisar se estes
Nomes esto contidos no vetor:

Professor Msc. Vincius Tolentino 19


Pesquisa Sequencial em Vetores
Algoritmo (O que deve ser feito):

1- Criar uma repetio para receber a digitao dos


5 nomes para gravar no vetor

2- Criar uma repetio que receba a digitao


aleatria de nomes enquanto o usurio assim
desejar.

Professor Msc. Vincius Tolentino 20


Pesquisa Sequencial em Vetores
Algoritmo:
2.1- Criar uma outra repetio para pesquisar o nome
digitado no vetor:
2.1.1 - Comparar o nome digitado com o primeiro
elemento do vetor;
- se for igual, o elemento procurado foi encontrado,
- caso contrrio, avana para o prximo elemento
do vetor.
2.1.2 - Se no for encontrado nenhum nome no vetor igual
ao nome digitado, informar que no existe o elemento
pesquisado.

3- Encerrar a pesquisa quando desejado.

Professor Msc. Vincius Tolentino 21


Pesquisa Sequencial em Vetores

Professor Msc. Vincius Tolentino 22


DEBUGGING

Debugging (em portugus, depurao ou depurar)


um processo de reduzir ou encontrar bugs no
seu sistema. De uma forma geral, debugging no
uma tarefa fcil de ser executada. Muitas variaes
podem atrapalhar esse processo, por exemplo, a
linguagem que estamos utilizando e ferramentas
disponveis para fazermos debugging de um cdigo.

Professor Msc. Vincius Tolentino 23


DEBUGGING

O Java em si facilita muito neste processo, pois nos


fornece maneiras de sabermos se o cdigo est
errado, por exemplo as exceptions.

Em linguagens de baixo nvel saber onde o bug


estava era extremamente complicado. O que
tambm facilita nosso trabalho so as ferramentas
de debug. Veremos que elas so necessrias nos
casos que nossos testes de unidade de logging no
foram suficientes para encontrar a razo de um
problema.

Professor Msc. Vincius Tolentino 24


DEBUGGING
Debugando no Eclipse

O primeiro recurso que temos que conhecer quando


comeamos a debugar no Eclipse so os breakpoints.

Eles so pontos de partida em nosso cdigo para


iniciarmos o processo de debug. Por exemplo, no cdigo
abaixo, imagine que desejamos debugar o
comportamento do mtodo saca da classe Conta, mais
especificamente do if que verifica se saldo menor que
o valor a ser sacado. Colocaramos
o breakpoint exatamente na linha:
if (this.saldo < valor) {:
Professor Msc. Vincius Tolentino 25
DEBUGGING

Professor Msc. Vincius Tolentino 26


DEBUGGING
Mas como fao isso? Muito simples, basta clicar na
linha que deseja adicionar o breakpoint, depois clicar
no menu Run -> Toogle Breakpoint.

Professor Msc. Vincius Tolentino 27


DEBUGGING

Agora que j adicionamos o breakpoint que o ponto


de partida, vamos debugar nosso cdigo.

Precisamos rodar nosso cdigo, ou seja, chamar o


mtodo saca para que o breakpoint seja encontrado.
Teremos um cdigo similar ao seguinte:

Professor Msc. Vincius Tolentino 28


DEBUGGING

O processo normal para executarmos esse cdigo


seria clicar no menu Run -> Run As -> Java
Application.

Porm para rodar o nosso cdigo em modo debug e


ativar nosso breakpoint, devemos rodar o codigo no
menu Run -> Debug As -> Java Application. Quando
um breakpoint for encontrado no cdigo que est
sendo executado, o eclipse exibir uma perspectiva
especfica de debug, apontando para a linha que tem
o breakpoint.
Professor Msc. Vincius Tolentino 29
DEBUGGING

Professor Msc. Vincius Tolentino 30


EXERCCIOS (parte 4):
Fazer um programa em Java para consultar informaes
sobre os vos de uma empresa area.

Primeiramente o programa dever receber via teclado os


Nomes e respectivas Distncias (em km, at Belo Horizonte)
de at 20 Cidades no mundo e armazenar em dois vetores.
Em seguida, o programa dever entrar no mdulo de
consultas e solicitar o Nome de uma Cidade. Para cada
cidade digitada o programa dever calcular e exibir os
seguintes resultados:

- Preo da Passagem
- Tempo de Vo em minutos
- Nmero de escalas no percurso
Professor Msc. Vincius Tolentino 31
EXERCCIOS (parte 4):

Consideraes para os clculos:

- A empresa area cobra R$0,25 por km percorrido no vo.

- O avio voa com uma velocidade de 800 km/h.

- A empresa area faz uma escala a cada 3 horas de vo.

Professor Msc. Vincius Tolentino 32


EXERCCIOS (parte 4):
Observaes:

- Adotar um flag para finalizar a entrada de dados com os


Nomes de Cidades e Distncias.

- Adotar um flag para finalizar as consultas.

- Exibir mensagem de erro se o Nome da Cidade digitada na


consulta no existir na lista de cidades digitadas inicialmente (Max. 20)

- Durante a digitao dos Nomes das Cidades e Distncias,


consistir:

* O Nome da Cidade dever ser de preenchimento obrigatrio

* A distncia at Belo Horizonte dever ser no mnimo 500 km.

Professor Msc. Vincius Tolentino 33


Na prxima aula...
Trataremos sobre:

Estudaremos sub-rotinas em Java (mtodos).

Bons estudos!

Professor Msc. Vincius Tolentino 34


Referncias

RABELO, AIR; LTP2 Java, Apostila, Belo Horizonte:


Universidade FUMEC. 61p. 2014.

Notas de aulas: Prof. Vincius Tolentino

SILVEIRA, G.; Java e Orientao a Objetos, Apostila, So


Paulo: CAELUM. 2014.
(http://www.caelum.com.br/apostila-java-orientacao-objetos/,
acesso em 15/07/2015).

Você também pode gostar