32
Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa [email protected] P r o f . Y a n d r e M a l d o n a d o - 1 Universidade Estadual de Maringá - UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação

Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa [email protected] Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Embed Size (px)

Citation preview

Page 1: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo e Heterogêneo

Prof. Yandre Maldonado e Gomes da Costa

[email protected]

Pro

f. Yan

dre M

aldo

nad

o - 1

Universidade Estadual de Maringá - UEMCentro de Tecnologia - CTCDepartamento de Informática - DINFundamentos da Computação

Page 2: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Até agora os problemas eram resolvidos com tipos de dados simples (ou primitivos);

• Agora estudaremos os tipos de dados estruturados;

• Tipos de Dados Estruturados:– Agregados homogêneos (seqüência de

valores de um mesmo tipo);– Agregados heterogêneos (seqüência de

valores de diferentes tipos);

Pro

f. Yan

dre M

aldo

nad

o - 2

Agregado Homogêneo

Page 3: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Agregado homogêneo: é uma seqüência de dados do mesmo tipo que podem ser associada à um único identificador;

• Para utilizarmos um agregado homogêneo, devemos declará-lo estabelecendo o tipo de seus componentes, e o seu número máximo de componentes;

Pro

f. Yan

dre M

aldo

nad

o - 3

Agregado Homogêneo

Page 4: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Agregados homogêneos também são conhecidos como:– Array– Vetor

Pro

f. Yan

dre M

aldo

nad

o - 4

Page 5: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Declaração de um vetor em Pascal:nome_vetor: array [1..Tam] of tipo_simples;

Tipo dos dados do conjunto

Dimensão, ou tamanho máximo do conjunto

Palavra chave usada para identificar a declaração de um conjunto (ou array, vetor, matriz,...)

Identificador ou nome do conjunto

Pro

f. Yan

dre M

aldo

nad

o - 5

Page 6: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Exemplo: declaração de um vetor para armazenar 10 valores numéricos inteiros;vetor_int: array [1..10] of integer;

• Exemplo de manipulação:vetor_int[3]:=50;

1 42

50

3 765 8 9 10ÍndiceConteúdo

vetor_int

Pro

f. Yan

dre M

aldo

nad

o - 6

Page 7: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo• Exemplo: um algoritmo para armazenar a nota

bimestral de um total de 30 alunos e ao final informar todas as notas em seqüência.

Program Vetor;Var vet_notas: array [1..30] of real; i: integer;

Begin for i:=1 to 30 do begin write ('Digite a nota: '); readln (vet_notas[i]); end; for i:=1 to 30 do writeln ('Nota [',i,']: ', vet_notas[i]); readkey;End.

Pro

f. Yan

dre M

aldo

nad

o - 7

Page 8: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

1. Faça um algoritmo que armazene as temperaturas diárias colhidas em um período de 20 dias. Ao final, o algoritmo deverá informar em quantos dias a temperatura foi negativa.

2. Faça um programa em Pascal que permita ao usuário cadastrar o preço de compra e o preço de venda de 10 produtos. Ao final, o algoritmo deverá informar o valor do lucro obtido com a venda de uma unidade de cada um dos 10 produtos.

Pro

f. Yan

dre M

aldo

nad

o - 8

Page 9: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Cadeia de Caracteres– É um outro tipo de estrutura de dados homogênea;– Também conhecidas como strings, são estruturas

homogêneas que permitem especificamente o armazenamento de seqüências de caracteres;

– O tamanho máximo da seqüência de caracteres a ser armazenada deve ser definido na declaração da cadeia;

– Exemplo:

s: string[12];Se armazenássemos a palavra computador nesta estrutura teríamos:

C O M P U T A D O R

Pro

f. Yan

dre M

aldo

nad

o - 9

Neste caso diz-se que o tamanho físico da estrutura é 12 e o tamanho lógico é 10.

Agregado Homogêneo

Page 10: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Em pascal as cadeias são declaradas como string e têm tamanho máximo de 255 caracteres;

• Quando seu tamanho não for definido na declaração, o tamanho máximo será assumido;

• Exemplo: algoritmo em Pascal que pergunta o nome do usuário e em seguida escreve na tela Olá “nome do usuário”.

Program Nome;Var str: string[30]; Begin write ('Digite o seu nome: '); readln (str); writeln ('Ola: ', str); End.

Pro

f. Yan

dre M

aldo

nad

o - 10

Agregado Homogêneo

Page 11: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Algoritmo para armazenar uma palavra com no máximo 15 caracteres a ser digitada pelo usuário, e informar a quantidade de caracteres ‘a’ que aparece na palavra:

Program Conta_a;Var str: string[15]; i, cont: integer; Begin cont:=0; write ('Digite uma palavra: '); readln (str); for i:=1 to length(str) do if str[i]='a' then cont:=cont+1; writeln ('Ocorrencias de a: ', cont); End.

Pro

f. Yan

dre M

aldo

nad

o - 11

Agregado Homogêneo

Page 12: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Pode-se criar vetores de cadeias;– Exemplo: algoritmo que permite ao usuário digitar 10 nomes e

depois exibe a seqüência em ordem invertida;

Program Inverte_Sequencia;Var vet_nomes: array [1..10] of string[30]; i: integer; Begin for i:=1 to 10 do begin write ('Digite um nome: '); readln (vet_nomes[i]); end; for i:=10 downto 1 do writeln ('Nome [',i,']: ', vet_nomes[i]); End.

Pro

f. Yan

dre M

aldo

nad

o - 12

Agregado Homogêneo

Page 13: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

• Exercício: faça um programa em Pascal que permita ao usuário armazenar 15 nomes de pessoas e, ao final, exiba na tela todos os nome de pessoas que começam com a letra c (minúscula ou maiúscula).

Agregado Homogêneo

Pro

f. Yan

dre M

aldo

nad

o - 13

Page 14: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Agregado Homogêneo Multidimensional– Sinônimos:

• Matriz (bidimensional)• Conjunto multidimensional• Vetor multidimensional• Array multidimensional

– Um conjunto de dados pode ter mais de uma dimensão;

– É um agregado homogêneo de dados estruturado em mais de uma dimensão. O mais utilizado é o agregado bidimensional (aquele que possui duas dimensões);

Pro

f. Yan

dre M

aldo

nad

o - 14

Page 15: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Desta forma, podemos descrever agora todos os atributos de um agregado homogêneo de dados:– Nome do identificador: nome pelo qual são feitas

referências à estrutura;– O tamanho físico da estrutura: determina a

quantidade máxima de dados que podem ser armazenados na estrutura;

– Tamanho lógico da estrutura: determina a quantidade de dados que estão associados ao identificador;

Pro

f. Yan

dre M

aldo

nad

o - 15

Page 16: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

– Valor de dado: o conteúdo associado a cada célula da estrutura;

– Tipo de dado: tipo simples de dado que pode ser armazenado nas células da estrutura;

– Dimensão da estrutura: determina a forma de organização dos dados na estrutura.

• Os dados de uma estrutura são referenciados pelos índices que identificam suas células.

Pro

f. Yan

dre M

aldo

nad

o - 16

Page 17: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo• Exemplos:

– Declaração de uma matriz (estrutura bidimensional) com 10 linhas e 5 colunas, cujo nome é matriz e que pode armazenar valores reais:

matriz: array [1..10, 1..5] of real;

Exemplo de atribuição:matriz [5, 2] := 3.31;

1 2 3 4 5

1

2

3

4

5 3.31

6

7

8

9

10

Pro

f. Yan

dre M

aldo

nad

o - 17

Page 18: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Manipulação de estruturas:– Pode-se manipular as células de uma estrutura da

mesma forma que pode-se manipular um objeto do tipo simples de dado que ela foi declarada;

– Pode-se também, em algumas linguagens (não é o caso de Pascal), atribuir uma estrutura de dados à outra, que equivale a fazer uma cópia dos conteúdos de uma estrutura em outra estrutura. Mas, para isto, as estruturas envolvidas devem possuir:

• Mesmo tipo de dado;• Devem ter o mesmo número de dimensões;• E a estrutura que receber a cópia deve possuir dimensões

com tamanho no mínimo igual ao das dimensões da estrutura que possui os dados que ela recebe.

Pro

f. Yan

dre M

aldo

nad

o - 18

Page 19: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo• Exemplos:

– Considere o conjunto bidimensional do slide 16:matriz: conjunto [1..10, 1..5] de real;

– E o conjunto matriz1, declarado como a seguir:matriz1: conjunto [1..5, 1..3] de real;

– Neste caso seria possível atribuir matriz1 a matriz, pois os pré-requisitos são satisfeitos. Já o contrário não poderia ser feito.

Exemplo de atribuição:

matriz1 [3, 3] := 18;

1 2 3 4 5

1

2

3

4

5 3.31

6

7

8

9

10

5

4

183

2

1

321

Pro

f. Yan

dre M

aldo

nad

o - 19 Exemplo de atribuição:

matriz [5, 2] := 3.31;

Page 20: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Exemplo de atribuição de uma estrutura à outra:

matriz ← matriz1;matrizmatriz1

10

9

8

7

6

3.315

4

3

2

1

54321

5

4

183

2

1

321

10

9

8

7

6

5

4

183

2

1

54321

Pro

f. Yan

dre M

aldo

nad

o - 20

Page 21: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Exemplo de algoritmo com estrutura bidimensional:– Um algoritmo para armazenar as

temperaturas médias dos três turnos (manhã, tarde e noite) para um período de 30 dias;

• Neste caso poderia ser utilizada uma matriz com tamanho 30x3;

Pro

f. Yan

dre M

aldo

nad

o - 21

Page 22: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado HomogêneoProgram Temperaturas_Periodos;Var MatTemp: array [1..30, 1..3] of real; i: integer;Begin for i:=1 to 30 do begin write ('Digite a temperatura media da manha: '); readln (MatTemp[i,1]); write ('Digite a temperatura media da tarde: '); readln (MatTemp[i,2]); write ('Digite a temperatura media da noite: '); readln (MatTemp[i,3]); end;End.

Pro

f. Yan

dre M

aldo

nad

o - 22

Page 23: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Homogêneo

• Exercício– Faça um algoritmo em Pascal que permita ao

usuário informar as quatro notas bimestrais de 30 alunos em uma disciplina. Ao final, o algoritmo deverá informar a média anual final de cada um dos trinta alunos e o número de alunos cuja nota do terceiro bimestre ficou entre 3,0 e 6,0.

Pro

f. Yan

dre M

aldo

nad

o - 23

Page 24: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Com as estruturas estudadas até o momento, só é possível armazenar diferentes dados referentes a uma mesma entidade em objetos distintos.

• Exemplo: se quisermos armazenar nome, idade, sexo(m/f), telefone e endereço de uma pessoa, temos que criar os objetos:– Nome: cadeia[20];– Idade: inteiro;– Sexo: caracter;– Telefone: cadeia[18];– Endereço: cadeia [30];

Pro

f. Yan

dre M

aldo

nad

o - 24

Page 25: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Observe que trata-se de dados de diferentes natureza, e, por isso, de diferentes tipos primitivos;

• O conceito de agregado de dados heterogêneos nos permite envolver em uma única estrutura, dados de tipos primitivos diferentes.

Pro

f. Yan

dre M

aldo

nad

o - 25

Page 26: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Assim, poderíamos criar a seguinte estrutura para armazenar informações pertinentes à uma pessoa:

Pro

f. Yan

dre M

aldo

nad

o - 26

Nome: string[20];

Idade: integer;

Sexo: char;

Telefone: string[18];

Endereço: string[30];

Pessoa

type

pessoa = record

nome: string[20];

idade: integer;

sexo: char;

telefone: string[18];

endereço: string[30];

end;

var

aluno: pessoa;

...

Page 27: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Para se criar uma estrutura heterogênea, cria-se um novo tipo de dado (registro). A partir disto, pode-se declarar variáveis como sendo deste novo tipo criado e utilizar dentro do algoritmo;

• Este tipo de estrutura também é conhecida como registro, e cada um dos dados armazenados dentro de um registro é chamado de campo;

Pro

f. Yan

dre M

aldo

nad

o - 27

Page 28: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Considerando a declaração do slide 26, poderíamos ter as seguintes referências a um campo:– Entrada de dados:

• Read (aluno.nome);

– Saída de dados:• Write (aluno.nome);

– Atribuição:• aluno.nome :=“José da Silva”;

Pro

f. Yan

dre M

aldo

nad

o - 28

Page 29: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Pode-se criar vetores de registros:– Exemplo: armazenar um conjunto de dados de 40

pessoas com as características descritas no slide 26;Var

Vetor_alunos: array [1..40] of pessoa;1 2 3 4 5 6 7 8 9 ... 40

Nome

Idade

Sexo

Telefone

Endereço

Pessoa

Pro

f. Yan

dre M

aldo

nad

o - 29

Page 30: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado Heterogêneo

• Exercícios resolvidos:1. Faça um algoritmo que permita armazenar os

nomes e as quatro notas bimestrais para um total de 20 alunos. Depois de armazenadas as informações, o algoritmo deverá fazer uma varredura sobre as mesma a fim de identificar qual dos alunos obteve a maior nota no 3º bimestre e informar o seu nome.

2. Faça um algoritmo que armazene as seguintes informações sobre um conjunto de no máximo 30 carros que estão a venda: modelo, ano, preço, e placa. Ao final, o algoritmo deve percorrer as informações a fim de descobrir qual dos carros é o mais barato, e deve informar seu modelo e ano.

Pro

f. Yan

dre M

aldo

nad

o - 30

Page 31: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado HeterogêneoExercício 1

type

cad_aluno = record

nome: string [20];

notas: array [1..4] of real;

end;

var

alunos: array [1..20] of cad_aluno;

i, j, aluno_nota: integer;

mnt: real;

begin

mnt := 0;

aluno_nota := 0;

...

...for i:=1 to 20 do begin

conheça (alunos[i].nome);for i:=1 to 4 do begin write (‘Digite a nota: ‘); readln (alunos[i].notas[j]); end;

for i:=1 to 20 doif (alunos[i].notas[3] > mnt) then begin mnt alunos[i].notas[3]; aluno_nota i; end;

write (‘O aluno de maior nota no terceiro bimestre é: ‘, alunos[aluno_nota].nome);end.

Pro

f. Yan

dre M

aldo

nad

o - 31

Page 32: Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 1 Universidade Estadual de Maringá

Agregado HeterogêneoExercício 2type cad_carro = record

modelo: string [15]; ano: integer; preco: real; placa: string [7];end;

var carros: array [1..30] of cad_carro; i, j, carro_barato: integer; mpc: real;begin mpc := 1000000; carro_barato := 0;...

Pro

f. Yan

dre M

aldo

nad

o - 32

...para i := 1 to 30 do begin

write (‘Digite o modelo do carro: ‘); readln(carros[i].modelo);

write (‘Digite o ano do carro: ‘); readln(carros[i].ano);

write (‘Digite o preço do carro: ‘); readln(carros[i].preco);

write (‘Digite a placa do carro: ‘); readln(carros[i].placa); end;

for i:= 1 to 30 do begin if (carros[i].preço < mpc) then begin mpc := carros[i].preço;

carro_barato := i; end;

writeln (‘O modelo do carro mais barato e: ‘,carros[carro_barato].modelo); writeln (‘O ano do carro mais barato e: ‘,carros[carro_barato].ano);end.