ESTRUTURAS DE DADOS
Algoritmos – Aula 04
Estruturas de Dados
Tópicos
Vetores
Matrizes
Registros
Registro
de Conjuntos
Conjuntos de Registros
Estruturas de Dados
Os tipos primitivos (inteiro, real, caracter e lógico) não são
suficientes para representar todos os tipos de informação.
Particularmente quando temos mais de uma informação
relacionada. Ex: Lista dos nomes dos alunos de uma sala,
endereço de alguém etc.
Utilizaremos os tipos primitivos para construir outras estruturas
de dados mais complexas.
Vetores
Também denominados Estruturas compostas homogêneas
unidimensionais
Permitem a manipulação de um conjunto de informações de
um mesmo tipo primitivo
Declaração :
tipo CLASSE = vetor [1 .. 40] de reais;
CLASSE: VCLASSE;
Onde:
CLASSE: Nome do tipo que está sendo construído
1: Limite inicial do vetor
40: Limite final do vetor
reais: Tipo primitivo base do vetor
VCLASSE: Nome da variável criada cf o tipo construído
Vetores
Manipulação:
inteiro: A;
VCLASSE [ 7 ] 6,5;
VCLASSE [ 2 ] 7,8;
VCLASSE [ 4 ] 5,3;
leia (A); // supondo que foi informado 6
VCLASSE [ A ] 9,8;
VCLASSE [ A-1 ] 9,1;
leia ( VCLASSE [ A+3 ] ); // supondo que foi informado 4,7
VCLASSE
7,8
1
2
5,3
3
4
9,1
5
9,8
6,5
6
7
4,7
8
9
38
39
40
Vetores
Algoritmo 4.1 – Notas acima da média usando variáveis simples
início
inteiro: NotaAcima;
real: A, B, C, D, E, F, G, H, I, J, Média;
NotaAcima 0;
leia (A,B,C,D,E,F,G,H,I,J);
Média (A + B + C + D + E + F + G + H + I + J)/10;
se (A > Média)
então NotaAcima NotaAcima + 1;
fimse;
se (B > Média)
então NotaAcima NotaAcima + 1;
fimse;
...
se (J > Média)
então NotaAcima NotaAcima + 1;
fimse;
escreva (NotaAcima);
fim.
Vetores
Algoritmo 4.2 – Notas acima da média usando vetor
início
tipo Classe = vetor [1 .. 10] de reais;
Classe: VClasse;
inteiro: NotaAcima, X;
real: Soma, Média;
Soma 0;
NotaAcima 0;
para X de 1 até 10 passo 1 faça
leia ( VClasse[X] );
Soma Soma + VClasse[X];
fimpara;
Média Soma / 10;
para X de 1 até 10 passo 1 faça
se ( VClasse[X] > Média )
então NotaAcima NotaAcima + 1;
fimse;
fimpara;
escreva (NotaAcima);
fim.
Matrizes
Também denominadas Estruturas compostas homogêneas
multidimensionais
Permitem a manipulação de um conjunto de informações de
um mesmo tipo primitivo
Declaração:
int SALA [4][5];
Onde:
SALA: Nome da matriz
4: capacidade da primeira dimensão
5: capacidade da segunda divisão.
int: Tipo primitivo base da matriz
Matrizes
Manipulação:
Int A, B;
SALA [ 1][2] = 5;
SALA [ 2][1]= 6;
SALA [ 0][1 ] = 7;
A = 3;
B = 2;
SALA [ A][B ] = 8;
SALA [ A ][B-2 ] = 9;
SALA [ A-2 ][B-2 ] = 10;
SALA [ B ][ A ] = 11;
SALA [ B-2 ][ A ] = 12;
MSALA
0
0
1
7
1 10
2
3 9
2
3
12
5
6
11
8
Matrizes
Exemplo: Cartão da Loteria Esportiva
Jg
Coluna 1
Ept
Coluna 2
1
Santos
Corinthians
2
Flamengo
Fluminense
3
Palmeiras
São Paulo
4
Vasco
Botafogo
5
Portuguesa
XV de jaú
6
São Caetano
XV de Piracicaba
7
Grêmio
Internacional
8
Havaí
Figueirense
9
Coritiba
Atlético-PR
10
Paysandú
Juventude
11
Atlético-MG
Cruzeiro
12
Brasiliense
Ponte Preta
13
Fortaleza
Goiás
14
Esportivo
Londrina
Matrizes
Algoritmo 4.3 – Loteria Esportiva, jogo mais marcado
int Loteria[14][3];
int I, J, maisMar, nJogo, marLin;
maisMar = 0;
for(int I = 0; i<14; i++){
marLin = 0;
for( int J = 0; j <3; j++){
if(mLoteria[I][J] ==1){
marLin = marLin + 1;
}
}
if(marLin > maisMar} {
maisMar = marLin;
nJogo = I;
}
}
cout << “Jogo mais marcado: " <<
maisMar;
nJogo <<
"com " <<
Matrizes
Algoritmo 4.4 – Loteria Esportiva, coluna mais marcada
int Loteria [14][ 3];
inteiro I, J, maisMar, nColuna, marCol;
maisMar = 0;
for(int J=0; J<3; J++){
marCol=0;
for(int I=0 ; I<14; I++){
if(mLoteria[ I][J] == 1){
marCol = marCol + 1;
}
}
if(marCol > maisMar){
maisMar = marCol;
nColuna = J;
}
}
cout << "Coluna mais marcada: " << nColuna << "com " <<
maisMar;
Registros
Também denominadas Estruturas compostas heterogêneas
Permitem a manipulação de um conjunto de informações de tipos
primitivos diferentes
Exemplo: Passagem de ônibus
Número: 0001
De: ____________________ Para: _______________________
Data: ____ / ____ / _______ Horário: ________ : _________
Poltrona: ____________
Distância: ____________ km
Registros
Declaração:
tipo regPassagem = registro
inteiro: Número;
caracter: Origem, Destino, Data, Horário;
inteiro: Poltrona;
real: Distância;
fimregistro;
regPassagem: Passagem;
Manipulação:
leia (Passagem);
escreva (Passagem);
leia (Passagem.Origem);
escreva (Passagem.Destino);
Passagem.Distância 500;
Registro de Conjuntos
Combinação de estruturas heterogêneas com homogêneas
Podem ser obtidas ao incluir num registro outro tipo de dados
construído
Exemplo: Registro de Estoque com Baixa semanal
Nome: _____________________________________________
Código: ___________________ Preço: __________________
Baixa
1
2
3
4
5
6
Registro de Conjuntos
Declaração:
tipo vDias = vetor [ 1 .. 6 ] de inteiros;
tipo regProd = registro
caracter: Nome;
inteiro: Código;
real: Preço;
vDias: Baixa;
fimregistro;
regProduto: Produto;
Manipulação:
escreva (Produto.Nome);
escreva (Produto.Código);
escreva (Produto.Preço);
escreva (Produto.Baixa [ 1 ]);
Produto.Baixa [ 4 ] 500;
Conjunto de Registros
Combinação de estruturas homogêneas com heterogêneas
Podem ser obtidas ao formar um conjunto com outro tipo de dados
construído
Exemplo: Ônibus formado por Passagem
1
Número: 0001
2
De: ____________________ Para: _______________________
3
Data: ____ / ____ / _______ Horário: ________ : _________
4
Poltrona: ____________
44
Distância: ____________ km
Conjunto de Registros
Declaração:
tipo regPassagem = registro
inteiro: Número;
caracter: Origem, Destino, Data, Horário;
inteiro: Poltrona;
real: Distância;
fimregistro;
Tipo vetPassagem = vetor [ 1 .. 44 ] de regPassagem;
vetPassagem: Ônibus;
Manipulação:
leia (Passagem [ 7 ]);
escreva (Passagem [ 4 ]);
leia (Passagem [12].Origem);
escreva (Passagem [21].Destino);
Passagem [34].Distância 500;