Buscar

Vetores-Dados Homogêneos

Prévia do material em texto

Estruturas de Dados Homogêneas
Introdução à Ciência da Computação
Prof. Dr. Fábio Roberto Chavarette
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Objetivos
� Introdução
� Definição
� Necessidade de uso
� Operações básicas
� Exemplos
Página 2
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Introdução
Geralmente, os algoritmos são elaborados para manipulação de dados. 
Quando estes dados estão organizados (dispostos) de forma coerente, 
caracterizam uma forma, uma estrutura de dados. 
A organização dos dados é chamada de estrutura composta de dados
que se divide em duas formas fundamentais: 
- homogêneas (vetores e matrizes) 
- heterogêneas (registros).
Página 3
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Introdução
ESTRUTURA DE DADOS COMPOSTA HOMOGÊNEA
� As estruturas de dados homogêneas possibilitam o armazenamento de 
grupos de valores em uma única variável que será armazenada na 
memória do computador. Essas estruturas são ditas “homogêneas”
porque os valores que serão armazenados são de um mesmo tipo de 
dado.
� Estas estruturas homogêneas são divididas em unidimensionais e 
multidimensionais. 
� Normalmente, as estruturas unidimensionais são chamadas de vetores 
e as multidimensionais são chamadas de matrizes. De fato, um vetor 
também é uma matriz, porém varia em somente uma dimensão.
Página 4
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Introdução
ESTRUTURA DE DADOS COMPOSTA HOMOGÊNEA
algoritmo "alturas de atletas"
// Síntese
// Objetivo: armazenar 5 alturas de atletas de basquete
// Entrada: 5 alturas
// Saída: -
// Declarações
var
altura1,altura2,altura3,altura4,altura5 : real
inicio
escreva("Informe a altura do 1º atleta: ");
leia (altura1)
escreva("Informe a altura do 2º atleta: ")
leia (altura2)
escreva("Informe a altura do 3º atleta: ")
leia (altura3)
escreva("Informe a altura do 4º atleta: ")
leia (altura4)
escreva("Informe a altura do 5º atleta: ")
leia (altura5)
fimalgoritmo
Vetores – Unidimensional
Matrizes - Multidimensional
Página 5
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetores
Definição: 
Um vetor é uma coleção de elementos de um mesmo tipo. Cada um dos 
elementos é unicamente identificado por um número inteiro.
2
1
3
4
6
5
Página 6
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Representação Gráfica de um Vetor
num[1] ←←←← 4
4
num[1]
num[25]
Página 7
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetores
�O valor do índice não deve ser confundido com o conteúdo 
da posição do vetor. 
�O índice identifica o elemento dentro do conjunto. O índice 
tem de ser obrigatoriamente inteiro.
�O elemento do vetor pode ser um número inteiro, um 
número real, uma variável booleana, um caractere, uma 
string, ...
Página 8
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Analogia
� O índice de um vetor corresponde à numeração das casas numa rua.
� O número de uma casa nada tem a ver com o seu conteúdo.
Página 9
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Quando desejamos processar uma grande quantidade de informações 
fica extremamente complicado, ou praticamente impossível, criar e 
manter um conjunto grande de variáveis.
Página 10
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Podemos imaginar a situação onde, em um programa para manutenção 
do cadastro de um banco, os dados de cada cliente fossem 
armazenados em uma variável diferente. 
� O programa teria de lidar com milhares de variáveis. 
� Seria dificílimo, por exemplo, percorrer a lista de clientes e procurar pelo
cliente ‘Fernando Henrique Cardoso’
Página 11
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
Dificuldade de manipulação de informação relacionada 
armazenada em variáveis simples
{Calcular a média das idades de 5 crianças}
- início
- leia idadeA
- leia idadeB
- leia idadeC
- leia idadeD
- leia idadeE
- media ← (idadeA+ idadeB + idadeC +
- idadeD + idadeE)/5
- imprime media
- fim
Página 12
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
�Alternativa: informação armazenada em 
vetores
-início
- soma ← 0
- ...
-fim
Página 13
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
�Alternativa: informação armazenada em 
vetores
-início
- soma ← 0
- para i ← 1 até 5 faça
- ...
- próximo i
- ...
-fim
Página 14
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Alternativa: informação armazenada em vetores
-início
- soma ← 0
- para i ← 1 até 5 faça
- leia idade[i]
- ...
- próximo i
- ...
-fim
Página 15
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Alternativa: informação armazenada em vetores
-início
- soma ← 0
- para i ← 1 até 5 faça
- leia idade[i]
- soma ← soma + idade[i]
- próximo i
- ...
-fim
Página 16
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Alternativa: informação armazenada em vetores
-início
- soma ← 0
- para i ← 1 até 5 faça
- leia idade[i]
- soma ← soma + idade[i]
- próximo i
- media ← soma/5
- ...
-fim
Página 17
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Alternativa: informação armazenada em vetores
-início
- soma ← 0
- para i ← 1 até 5 faça
- leia idade[i]
- soma ← soma + idade[i]
- próximo i
- media ← soma/5
- imprime media
-fim
Página 18
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� E se fossem 1000 crianças?
Página 19
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Quando usar vetores?
� Alternativa: informação armazenada em vetores
-início
- soma ← 0
- para i ← 1 até 1000 faça
- leia idade[i]
- soma ← soma + idade[i]
- próximo i
- media ← soma/1000
- imprime media
-fim
Página 20
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetores e Laços
�Observe a construção:
- para i ← 1 até 1000 faça
- leia crianca[i]
- próximo i
�A grande força na utilização de um vetor consiste em
associá-lo a um laço.
�Com isso podemos facilmente percorrer um vetor para
consultas ou atualizações.
Página 21
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Exemplo: Inicializando e correndo um vetor
-início
- para i ← 1 até 5 faça
- leia carros[i]
- próximo i
- ...
-fim
Inicializando
Página 22
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Exemplo: Inicializando e correndo um vetor
-início
- para i ← 1 até 5 faça
- leia carros[i]
- próximo i
- para i ← 1 até 5 faça
- imprima 'carro',i,'quantidade:', carros[i]
- próximo i
-fim
Inicializando
Correndo
Página 23
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Exemplo: Inicializando e correndo um vetor
� Saída:
-carro 1 quantidade: 10
-carro 2 quantidade: 11
-carro 3 quantidade: 12
-carro 4 quantidade: 13
-carro 5 quantidade: 14
Valor digitado
Página 24
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Outro Exemplo
Leitura de uma tabela de 100 valores e impressão da tabela 
multiplicada por uma constante.
Página 25
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Outro Exemplo
-início
- {entrada de dados}
- para i ← 1 até 100 faça
- leia tab[i]
- próximo i
- ...
-fimPágina 26
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Outro Exemplo
-início
- {entrada de dados}
- para i ← 1 até 100 faça
- leia tab[i]
- próximo i
- {processamento}
- para i ← 1 até 100 faça
- tab[i] ← 3.1415*tab[i]
- próximo i
- ...
-fim
Página 27
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Outro Exemplo
-início
- {entrada de dados}
- para i ← 1 até 100 faça
- leia tab[i]
- próximo i
- {processamento}
- para i ← 1 até 100 faça
- tab[i] ← 3.1415*tab[i]
- próximo i
- {saída de dados}
- para i ← 1 até 100 faça
- imprima tab[i]
- próximo i
-fim
Página 28
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Outro Exemplo 2
Determinar o maior elemento de um vetor e a sua posição
Página 29
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Maior elemento de um vetor
-início
- {entrada de dados}
- para i ← 1 até 20 faça
- leia tabela[i]
- próximo i
- ...
-fim
Página 30
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Maior elemento de um vetor
-início
- {entrada de dados}
- para i ← 1 até 20 faça
- leia tabela[i]
- próximo i
- {assume que o primeiro elemento da }
- {tabela é o maior}
- maior ← tabela[1]
- pos ← 1
- ...
-fim
Página 31
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Maior elemento de um vetor
-início
- ...
- {assume que o primeiro elemento da }
- {tabela é o maior}
- maior ← tabela[1]
- pos ← 1
- {procura o maior}
- para i ← 2 até 20 faça
- se tabela[i] > maior então
- maior ← tabela[i]
- pos ← i
- fim se
- próximo i
- ...
-fim
Página 32
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Maior elemento de um vetor
-início
- ...
- {assume que o primeiro elemento da }
- {tabela é o maior}
- maior ← tabela[1]
- pos ← 1
- {procura o maior}
- para i ← 2 até 20 faça
- se tabela[i] > maior então
- maior ← tabela[i]
- pos ← i
- fim se
- próximo i
- imprima maior, pos
-fim
Página 33
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Constantes
�A declaração de constantes em algoritmos
-constante
- DIM = 100
Página 34
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Exemplo
-constante
- DIM = 100
-inicio
- para i ← 1 até DIM faça
- leia tab[i]
- próximo i
- para i ← 1 até DIM faça
- tab[i] ← 3.1415*tab[i]
- próximo i
- para i ← 1 até DIM faça
- imprima tab[i]
- próximo i
-fim
Página 35
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Constantes
� Vantagem na utilização de constantes: 
- Se houver necessidade de alterar a dimensão 
do vetor, basta alterar o valor da constante DIM.
Página 36
Processamento de Dados
Candidato: Fábio Roberto Chavarette
Estruturas de Dados Homogêneas
em C++
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++Vetor em C/C++Vetor em C/C++Vetor em C/C++
Um vetor é um conjunto unidimensional de variáveis. 
Um nome é associado ao vetor como um todo; cada 
elemento deste vetor é referenciado por um índice (ou 
subscrito), entre chaves, que acompanha o nome 
atribuído ao vetor.
O nome do vetor deve seguir as mesmas regras, já
vistas, para nomes de variáveis simples
Página 38
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++Vetor em C/C++Vetor em C/C++Vetor em C/C++
�Vetores
O índice que discrimina os elementos constituintes do vetor 
pode ser qualquer expressão do tipo inteiro.
Ex. Vetex
20.
1987.
4.6
-4.2
0.0
VETEX(1)
Nome do 
vetor Índice 
ou 
subscrito
VETEX(I)
(0)
(1)
(2)
(3)
(4)
Página 39
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++
� Vetores
Observações:
1. As variáveis indexadas, podem ter até 7 índices.
2. O índice de uma variável pode assumir valores 
inteiros quaisquer
3. Todos os elementos de um vetor têm o mesmo
tipo. O tipo é definido como no caso das variáveis 
simples.
4. Um elemento de um vetor pode ser usado numa 
expressão como uma variável.
5. Os índices utilizados na linguagem C/C++ para
identificar as posições de um vetor começam 
sempre em 0 (zero) e vão até o tamanho do vetor 
menos uma unidade.
Página 40
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++Vetor em C/C++Vetor em C/C++Vetor em C/C++
� Declaração de vetor
A declaração da variável é seguida por um par de colchetes contendo 
um número inteiro indicando o tamanho da matriz, podendo
também conteruma constante declarada anteriormente.
Exemplo:
int notas[5]; cinco elementos inteiros.
float corrente[2]; 2 elementos reais.
No exemplo acima, cada elemento é referenciado por um único índice, 
sendo estes iniciados por zero. Os elementos de uma matriz
são armazenados em seqüência contínua de memória.
• Obs.: C não avisa quando o limite de uma matriz foi excedido. 
Se você ultrapassar o valor do limite imposto na declaração da matriz, 
os valores sobressalentes irão sobrepor outros dados da
memória.
Página 41
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++
� Atribuindo valores ao vetor
Na declaração:
int dmes[12]={31,28,31,30,31,30,31,3,1,30,31,30,31};
No decorrer do programa:
As atribuições em vetor exigem que seja informada em qual de suas 
posições o valor ficará armazenado.
V[0]=1; atribui o valor 1 à primeira posição do vetor.
x[3]=‘b’; Atribui a letra b à quarta posição do vetor.
Página 42
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++
� Preenchendo um vetor
Preencher significa atribuir valores a todas as suas 
posições. Assim, deve implementar um mecanismo que 
controle o índice.
for (i=0; i<10; i++)
scanf(“%d”, vetor[i]);
ou
cin >> vetor[i] 
Neste caso, a estrutura de repetição FOR foi utilizada para 
garantir que a variável i assuma todos os valores 
possíveis para o índice do vetor (0 a 9). Assim, para 
cada execução da repetição, será utilizada uma 
posição diferente do vetor.
Página 43
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Vetor em C/C++Vetor em C/C++Vetor em C/C++Vetor em C/C++
� Mostrando elementos do vetor
Mostrar os valores contidos em um vetor também exige a 
utilização do índice.
for (i=0; i<10; i++)
printf(“%d \n”, vetor[i]);
ou
cout << vetor[i] 
Neste caso, a estrutura de repetição FOR foi utilizada para 
garantir que a variável i assuma todos os valores 
possíveis para o índice do vetor (0 a 9). Assim, para 
cada execução da repetição, será utilizada uma 
posição diferente do vetor.
Página 44
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Exemplo de Vetor em C/C++
Ler 100 números e imprimi-los em 
ordem inversa. Neste 
exemplo, os dados devem ser 
fornecidos um em cada linha; 
os resultados são 
impressos, também, um em 
cada linha.
#include <cstdlib>
#include <iostream>
#define indice 100
using namespace std;
int main(int argc, char *argv[ ])
{
int numero[indice], i;
for (i=0; i<indice; i++){
printf("Entre com o elemento %d: ", i+1);
scanf("%d", &numero[i]);
}
printf("\n \n");
for (i=indice-1;i >= 0; i - -)
printf("saida %d \n", numero[i]); 
system("PAUSE");
return EXIT_SUCCESS;
}
Define um índice fixo para o vetor
Leitura do vetor
Impressão do vetor
Página 45
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Exemplo 2 de Vetor em C/C++
Dado um vetor de NUMEL 
elementos, determinar o maior 
elemento do vetor. Os 
elementos do vetor devem ser 
fornecidos um em cada linha 
de entrada.
#include <cstdlib>
#include <iostream>
#define indice 5
using namespace std;
int main(intargc, char *argv[])
{
int numero[indice], i, maior; 
for (i=0; i<indice; i++){ //leitura do vetor
printf("Entre com o elemento %d: ", i+1);
scanf("%d", &numero[i]);
if (i==0) //verificação do maior
maior=numero[i];
else if (maior<numero[i])
maior=numero[i];
}
printf("O maior elemento do vetor e %d \n", maior);
system("PAUSE");
return EXIT_SUCCESS;
}
Página 46
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Os conjuntos com mais de uma dimensão, referenciados aqui como 
matrizes, também são representados com o uso de variáveis 
indexadas, só que agora com mais de um índice. Cada índice 
referencia uma dimensão.
49 19 58
30 13 2Matex(2,3)
2º índice(deve ser usado para indicar o 
número da coluna)
1º índice(deve ser usado para indicar o 
número da linha)
Nome da matriz
Página 47
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Declaração
Utiliza-se dois pares de colchetes. Cada par de colchetes adicionais 
obtemos matrizes com uma dimensão a mais. A lista de valores 
usada para inicializar a matriz é uma lista de constantes separadas 
por vírgulas e envolta por chaves.
Exemplo:
int soma[3][3];
float nota[2][3]={{9,8,7},{6.5,4,2}};
Da mesma maneira como, ocorre com os vetores, os índices 
começam sempre em 0 (zero). 
Página 48
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Exemplo:
char MAT[4][3];
MAT
0
1
2
3
0 1 2
Página 49
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Exemplo:
flot Y[2][4][3];
A declaração criou uma matriz chamada Y contendo:
2 linha (0 a 1) 
4 colunas (0 a 3)
3 profundidade (0 a 2)
Página 50
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Atribuindo valor a uma matriz:
X[1][4]=5; Atribui o valor 5 à posição identificada pelos índices 1 
(2ª linha) e 4 (5ª coluna).
5
X
0
1
0 1 2 3 4 5
Página 51
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Preenchendo uma Matriz
Preencher uma matriz significa percorrer todos os seus elementos, atribuindo-lhe 
um valor.
Exemplo para matriz bidimensional:
for (i=0; i<7; i++)
{
for (j=0; j<3; j++)
scanf(“%d”, MAT[i][j]);
}
Como a matriz possui sete linhas e três colunas, o for externo deve variar 
de 0 a 6 (percorrendo, assim, as sete linhas da matriz) e o for
interno deve variar de 0 a 2 (percorrendo, assim, as três colunas 
da matriz).
Linha
Coluna
Página 52
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
Exemplo
� A matriz BAR, mostra a seguir, apresenta os totais das vendas 
de três itens comercializados em um bar, em cada uma 
das quatro semanas de um mês
ITENS 1 2 3
SEMANAS (Cerveja) (Refrigerante) (Cachaça)
1º 15 7 10
2º 2 21 15
3º 20 3 5
4º 8 12 40
O trecho do programa seguinte calcula o total de itens vendidos por 
semana e o total de itens do mês.
Página 53
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br
Conjuntos Multidimensionais - MATRIZ
ITENS 1 2 3
SEMANA
S
(Cerveja) (Refrigera
nte)
(Cachaça)
1º 15 7 10
2º 2 21 15
3º 20 3 5
4º 8 12 40
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int bar[4][3]={{15,7,10},{2,21,15},{20,3,5},{8,12,40}};
int total, totalmes, i, j;
totalmes=0;
for (i=0;i<4;i++)
{
total=0;
for (j=0;j<3;j++)
total+=bar[i][j];
printf("O total para o semana %d e %d \n", i+1, total);
totalmes+=total;
}
printf("O total para do mes e %d \n", totalmes); 
system("PAUSE");
return EXIT_SUCCESS;
}
Página 54
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br Página 55
Algoritmos: Definição e Caracterização
Referencias 
�Harry Farrer, Christiano Goncalves Becker,Eduardo Chaves 
Faria, Helton Fabio de Matos, Marcos Augusto dos Santos e 
Miriam Lourenco Maia, “Algoritmos Estruturados", editora 
Guanabara Koogan.
�Marco A. F. Souza et al. “Algoritmos e lógica de 
programação”. Thompson, 2005.
�Harvey M. Deitel. “Java – Como programar”. Prentice Hall, 
2006.
Prof. Dr. Fábio Roberto Chavarette – fabioch@mat.feis.unesp.br Página 56
Introdução a Ciências da Computação
� Universidade Estadual Paulista “Julio 
de Mesquita Filho”
� Faculdade de Engenharia do Campus 
de Ilha Solteira
� Departamento de Matemática
Prof. Dr. Fábio Roberto Chavarette
E-Mail: fabioch@mat.feis.unesp.br
F I M

Continue navegando