vetor

Propaganda
Lógica de Programação
Capítulo 4
Estruturas de Dados
Lógica de Programação –
Forbellone / Eberspacher
Estruturas de Dados
Neste capítulo
Vetores
Matrizes
Registros
Registro de Conjuntos
Conjuntos de Registros
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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.
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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 :
nomeVetor = 40*[0.0]
Onde:
nomeVetor: nome da variável criada com o tipo construído
40: tamanho do vetor que desejamos criar
0.0 : valor nulo ou padrão do tipo primitivo base do vetor Ex.: 0
→ inteiro (int)
0.0 → real (float)
“” → cadeia de caracteres (str)
False
→ lógico (bool)
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Vetores
Manipulação:
nomeVetor = 40*[0.0]
nomeVetor [ 6 ] = 6.5
nomeVetor [ 1 ] = 7.8
nomeVetor [ 3 ] = 5.3
a = int(input(“valor do índice: ”)) # supondo que foi informado 5
nomeVetor [ a ] = 9.8
nomeVetor [ a­1 ] = 9.1
# supondo que foi informado 4.7
nomeVetor [ a+3 ] = float(input(“Novo valor: “)) nomeVetor
7.8
0
1
5.3
2
3
9.1
9.8
6.5
4
5
6
4.7
7
8
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
37
38
39
Vetores
Algoritmo 4.2 – Notas acima da média usando variáveis simples
notasAcima = 0
a = float(input()); b = float(input()); c = float(input()); d = float(input()); e = float(input()); f = float(input()); g = float(input()); h = float(input()); i = float(input()); j = float(input());
media = (a + b + c + d + e + f + g + h + i + j) / 10.0 if (a > media):
notasAcima = notasAcima + 1
if (b > media):
notaAcima = NotaAcima + 1;
. . .
if (j > media):
notasAcima = notasAcima + 1
print (“Quantidade de notas acima da média:”, notasAcima)
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Vetores
Algoritmo 4.3 – Notas acima da média usando vetor
nota = 10*[0.0]
soma = 0.0
notasAcima = 0
for x in range(10):
nota [ x ] = float(input())
soma = soma + nota [ x ]
# fim do para
media = soma / 10.0
for x in range(10):
if ( nota[X] > media ):
notasAcima = notasAcima + 1
print ( “Notas acima da média”, notasAcima )
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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:
sala = [4*[0] for i in range(4)]
Onde:
0: Tipo primitivo base da matriz. Vide exemplo de vetores
sala: Nome da variável criada com o tipo construído
4: tamanho da primeira e da segunda dimensão
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Matrizes
Manipulação:
SALA
0
sala [ 1 ][ 2 ] = 5
sala [ 2 ][ 1 ] = 6
sala [ 0 ][ 1 ] = 7
a = 3
b = 2
sala [ a ][ b­1 ] = 8
sala [ a ][ b­2 ] = 9
sala [ a­2 ][ b­3 ] = 10
sala [ b ][ a ] = 11
sala [ b ][ a ] = 12
10
2
3
2
7
0
1
1
12
5
6
9
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
3
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
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Matrizes
Algoritmo 4.5 – Loteria Esportiva, jogo mais marcado
int main() {
char Loteria[14][3];
int i, j, maisMar, nJogo, marLin;
maisMar = 0;
for ( i=0; i<14; i=i+1 ) {
marLin = 0;
for ( j=0; j<3; j=j+1 ) {
if ( mLoteria [ i ][ j ] =‘x’;
marLin = marLin + 1;
}
if ( marLin > maisMar ) {
maisMar = marLin;
nJogo = i;
}
}
printf (“Jogo mais marcado: %d com %d“, nJogo, maisMar);
}
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Matrizes
Algoritmo 4.6 – Loteria Esportiva, coluna mais marcada
int main() {
char Loteria[14][3];
int i, j, maisMar, nColuna, marCol;
maisMar = 0;
for ( j=0; j<3; j=j+1 ) {
marCol = 0;
for ( i=0; i<14; i=i+1) {
if ( mLoteria[ I, J] =‘x’ )
marCol = marCol + 1;
}
if (marCol > maisMar) {
maisMar = marCol;
nColuna = j;
}
}
printf (“Coluna mais marcada: %d com %d“, nColuna, maisMar);
}
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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;
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
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;
Lógica de
Programação – Forbellone / Eberspacher – Capítulo 4
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: ____________ Distância: ____________ km
44
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Conjunto de Registros
Declaração:
struct regPassagem{
int numero;
char origem, destino, data, horario;
int poltrona;
float distancia;
}
struct regPassagem onibus [44];
Manipulação:
scanf(“%d”, &passagem [ 7 ].numero );
printf (“%d”, passagem [ 4 ].numero );
scanf (“%c”, &passagem [12].origem );
printf (“%c”, passagem [21].destino );
passagem[34].distancia = 500;
Lógica de Programação – Forbellone / Eberspacher – Capítulo 4
Download