Buscar

ESTRUTURA DE DADO1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

ESTRUTURA DE DADOS, VETOR E MATRIZ
	Com os estudos realizados até agora, aprendemos que para toda informação que necessitamos para um determinado processamento, é necessário ter uma variável para levar e ou trazer a informação para/da memória principal. Percebe-se que se essa fosse a única maneira de trabalhar com informações, a solução de alguns problemas ficaria muito difícil de descrever. Imaginemos todos os alunos de uma turma, e que queiramos listá-los com as respectivas notas em ordem alfabética. A solução deste problema, independente do número de alunos da turma, necessitará que armazenemos o nome de todos os alunos para depois ordená-los.
	Para resolver o problema acima, e outros que necessitem que trabalhemos com grande quantidade de informações, introduziremos o conceito de estrutura que dados que nada mais é do que um conjunto de informações. 
	
VETOR
	É um conjunto de informações de mesmo tipo, ou seja, as informações vão para a MP ou vem da MP através de uma única variável. Vetores são estruturas de dados homogêneas (mesmo tipo) de apenas uma dimensão (unidimensional). A figura abaixo representa graficamente um vetor.
	
Ou seja;
	Índice
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	elemento
	1°
	2°
	3°
	4°
	5°
	6°
	7°
	8°
	9°
	10°
	variável
	NOME[1]
	NOME[2]
	NOME[3]
	NOME[4]
	NOME[5]
	NOME[6]
	NOME[7]
	NOME[8]
	NOME[9]
	NOME[10]
	informação
	Vivi
	Abel
	Juca
	Zeca
	Lulu
	Beto
	Nico
	Mane
	Zico
	Lili
	
A notação que será utilizada para trabalhar com vetores nos algoritmos, tomando o exemplo da figura será:
VAR NOME: vetor[1..10] de caractere[10] 
{a variável NOME é um vetor de 10 informações do tipo caractere cujos índices serão 1,2,3,4,5,6,7,8,9,10}
Início
 NOME[ 1 ] ←´Vivi´ {leve para a MP Vivi na primeira posição do vetor}
.
.
 Mostre NOME[ 7 ] {irá mostrar Zico}
ÍNDICE
	O índice indica em qual posição do vetor a informação ficará armazenada. Fazendo uma analogia com uma rua teríamos que, o nome da rua seria o nome do vetor, os números das casas seriam os índices e as pessoas nas casas seriam as informações, ou seja, para chegar à informação, preciso do nome da rua (vetor) e o número da casa (índice).
	O índice tem que ser uma informação de tipo numérica inteira.
	O índice pode ser indicado por:
Uma constante; NOTA [5] ← 87;
Uma variável; leia nota [a];
Uma expressão; FREQ [ no1 div 10] ← FREQ [ no1 div 10] + 1(cujo resultado tem que ser um número inteiro);
Outro vetor; mostre dezena[ vet [3] ] ( 1° verifica qual o conteúdo da 3ª posição do vetor vet, para depois mostrar o conteúdo do vetor dezena indicado por vet).
	Exemplo: 
FUP que leia dez números e mostre-os na ordem inversa da leitura.
Solução sem o conceito de estrutura de dados:
Var a,b,d,e,f,c,g,h,i,j : inteiro { 10 variáveis, uma para cada número}
Início
 Leia a,b,c,d,e,f,g,h,i,j { lê os 10 números e leva para MP associando as variáveis}
 Mostre j,i,h,g,f,e,d,c,b,a { Mostra o conteúdo da MP na ordem inversa da leitura}
Fim
 
	A solução apresentada acima ficaria inviável se a quantidade de números a serem lidas fosse muito grande (dez mil, por exemplo).
Solução com o conceito de estrutura de dados (VETOR)
Var num: vetor[1..10] de inteiro {declara que a variável num, é um vetor de 10 posições com índices variando de 1 até 10}
 a,b:inteiro
 Início
 faça de a ←1até 10
 leia num[a] {lê os 10 num. e leva para MP colocando cada num. em uma posição da variável num}
 faça de b ←10 até 1 de -1
 mostre num[b] {mostra o conteúdo da MP na ordem inversa pois começa por num[10]}
Fim
	Se for necessário aumentar para dez mil números, bastaria substituir todos os 10 da solução acima, por 10000.
	MATRIZ
	Suponha que queiramos levar para MP o nome de todos os alunos do turno da manhã de uma determinada escola, por sala. Para acessar depois qualquer um dos alunos, não basta apenas saber qual a posição dele dentro de uma sala, é necessário também, saber em qual das salas ele está.
	Para que a solução do problema fique mais fácil, usaremos dois índices para individualizar a informação (aluno), um índice indicará a sala e o outro a posição do aluno dentro da sala.
	Sempre que o vetor possuir mais de um índice, diremos que é uma matriz, logo, matriz é uma estrutura de dados homogênea (informações de mesmo tipo) que possui mais de um índice para individualizar a informação
NOME
	
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	11
	12
	13
	14
	15
	1
	Zé
	Juca
	Mané
	Lelé
	Lalá
	Bela
	Eva
	Ivo
	Nino
	Raí
	Pepe
	Xico
	Abel
	Boco
	Cara
	2
	Mano
	Dida
	Fafá
	Giba
	Jaja
	Kaká
	Lico
	Manu
	Nana
	Oto
	Popo
	Rafa
	Tetê
	Tita
	Tata
	3
	Deda
	Lulu
	Lima
	Ava
	Xuxa
	Neno
	Bico
	Café
	Zaza
	Sasá
	Cipó
	Juba
	Dado
	Love
	Bida
	4
	Dedé
	Luma
	Céu
	Fofo
	Fofa
	Gato
	Gata
	Luca
	Capa
	Xuxu
	Velo
	Helio
	Helia
	Nona
	Pepeu
 
 Índices
	Como no exemplo de vetor, as informações estão em azul. A notação que será utilizada para trabalhar com vetores nos algoritmos, tomando o exemplo da figura acima será:
Var NOME: VETOR[1..4,1..15] DE CARACTERE[10] {matriz de 4 linhas por 15 colunas}
{A variável NOME é uma matriz que possui os índices
 	 1,1; 1,2; 1,3; 1,4; 1,5; 1,6; 1,7;...; 1,15
 2,1; 2,2; 2,3; 2,4; 2,5; 2,6; 2,7;...; 2,15
					 . . . . . . . . . . . . . . . . . . . . 
					 . . . . . . . . . . . . . . . . . . . . 
 4,1; 4,2; 4,3; 4,4; 4,5; 4,6; 4,7;...; 4,15}
Início
.
Nome[3,5] ← ´Xuxa´
.
Mostre nome[2,11] {será mostrado Popo}
	Generalizando, matriz é uma estrutura de dados homogênea (informações de mesmo tipo) que necessita de mais de um índice para individualizar a informação.
	Exemplo: FUP que gere uma matriz 10 x 6, sendo que cada elemento deve ser o resultado da multiplicação dos dois índices que indicam a sua posição dentro da matriz. Após gerar a matriz, mostrá-la.
Var mat: vetor[1..10,1..6] de inteiro
 a,b : inteiro
Início
 Faça de a ← 1 até 10
 Faça de b ← 1 até 6
 Mat[a,b] ← a*b
 Faça de b ← 1 até 10
 Faça de b ← 1 até 6
 Mostre Mat[a,b]
Fim 
	Supondo que se queira colocar, em uma única variável, o nome de qualquer aluno de um determinado Estado, identificados por sala, turno, campus, escola e cidade. Considerar que temos 30 cidades no Estado; 20 escolas, no máximo, por cidade; 10 campi, no máximo, por escola; 3 turnos; no máximo 20 salas por campi e no máximo 60 alunos por sala. A declaração da variável ficaria:
Var alun:vetor[1..30,1..20, 1..10, 1..3, 1..20, 1..60] de caractere
 Cid, esc, cam, tur, sal, alu: inteiro
Início
..
..
Alun[4,3,2,3,4,45] ← ´MARCELINO´
{ou seja, MARCELINO, seria o aluno na posição 45 da sala 4 do turno 3 do 2° prédio da 3ª escola da 4ª cidade}
Mostre alun[22,15,8,2,16,4]
{ou seja, ........................................................................................, individualize a informação seguindo o exemplo de MARCELINO (qual cidade, qual escola...)}
�
1�
2�
3�
4�
5�
6�
7�
8�
9�
10�
�
NOME�
Vivi�
Abel�
Juca�
Zeca�
Lulu�
Beto�
Nico�
Mane�
Zico�
Lili�
�
					
				Informações		Índices
Nome da variável que representa o vetor

Outros materiais