Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf ·...

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

Transcript of Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf ·...

Page 1: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Homogêneo e Heterogêneo

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

Heterogêneo

Prof. Yandre Maldonado e Gomes da [email protected]

Pro

f. Yan

dre

Mald

on

ad

o -

1

Page 2: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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

• Agora estudaremos os tipos de dados

Agregado Homogêneo

• 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

Mald

on

ad

o -

2

Page 3: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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

Agregado Homogêneo

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

Mald

on

ad

o -

3

Page 4: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Homogêneo

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

Pro

f. Yan

dre

Mald

on

ad

o -

4

Page 5: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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

Mald

on

ad

o -

5

Page 6: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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

Mald

on

ad

o -

6

Page 7: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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

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

Program Vetor;

Var

vet_notas: array [1..10] of real;vet_notas: array [1..10] of real;

i: integer;

Begin

for i:=1 to 10 do

begin

write ('Digite a nota: ');

readln (vet_notas[i]);

end;

for i:=1 to 10 do

writeln ('Nota [',i,']: ', vet_notas[i]);

readkey;

End.

Pro

f. Yan

dre

Mald

on

ad

o -

7

Page 8: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Homogêneo

1. Faça um algoritmo que armazene as temperaturas diárias colhidas em um período de 12 dias. Ao final, o algoritmo deverá informar em quantos dias a temperatura foi negativa e qual foi a temperatura média no negativa e qual foi a temperatura média no período.

2. Faça um algoritmo que armazene as temperaturas diárias colhidas em um período de 12 dias. Ao final, o algoritmo deverá informar em quantos dias ocorreu uma temperatura igual a do último dia do período.

Pro

f. Yan

dre

Mald

on

ad

o -

8

Page 9: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

• 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

Agregado Homogêneo

– 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

Mald

on

ad

o -

9

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

Page 10: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

• 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

Agregado Homogêneo

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

Mald

on

ad

o -

10

Page 11: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

• 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

Agregado Homogêneo

Var

str: string[15];

i, cont: integer;

Begin

cont:=0;

write ('Digite uma palavra com ate 15 caracteres: ');

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

Mald

on

ad

o -

11

Page 12: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

• 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;Varvet_nomes: array [1..10] of string[30];

Agregado Homogêneo

vet_nomes: array [1..10] of string[30];i: integer;Beginfor i:=1 to 10 dobeginwrite ('Digite um nome [', i , ‘]: ');readln (vet_nomes[i]);end;for i:=10 downto 1 dowriteln ('Nome [',i,']: ', vet_nomes[i]);

End.

Pro

f. Yan

dre

Mald

on

ad

o -

12

Page 13: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

• Exercício: faça um programa em Pascal que permita ao usuário armazenar 10 nomes de pessoas e, ao final, exiba na tela todos os nomes de pessoas que

Agregado Homogêneo

tela todos os nomes de pessoas que começam com a letra c (minúscula ou maiúscula).

Pro

f. Yan

dre

Mald

on

ad

o -

13

Page 14: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Homogêneo

• Agregado Homogêneo Multidimensional– Sinônimos:

• Matriz (bidimensional)• Conjunto multidimensional• Vetor 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

Mald

on

ad

o -

14

Page 15: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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;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

Mald

on

ad

o -

15

Page 16: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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;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

Mald

on

ad

o -

16

Page 17: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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;1 2 3 4 5

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

Mald

on

ad

o -

17

Page 18: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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 – 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

Mald

on

ad

o -

18

Page 19: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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

Mald

on

ad

o -

19 Exemplo de atribuição:

matriz [5, 2] := 3.31;

Page 20: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Homogêneo

• Exemplo de atribuição de uma estrutura à outra:matriz := matriz1;

matrizmatriz1

54321

1

32154321

10

9

8

7

6

3.315

4

3

2

1

5

4

183

2

1

10

9

8

7

6

5

4

183

2

1

Pro

f. Yan

dre

Mald

on

ad

o -

20

Page 21: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Homogêneo

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

temperaturas médias dos três turnos (manhã, 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

Mald

on

ad

o -

21

Page 22: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado HomogêneoProgram Temperaturas_Periodos;VarMatTemp: array [1..30, 1..3] of real;i: integer;

Beginfor i:=1 to 30 dobeginwrite ('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

Mald

on

ad

o -

22

Page 23: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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 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

Mald

on

ad

o -

23

Page 24: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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,

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

Pro

f. Yan

dre

Mald

on

ad

o -

24

Page 25: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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 • O conceito de agregado de dados heterogêneos nos permite envolver em uma única estrutura, dados de tipos primitivos diferentes.

Pro

f. Yan

dre

Mald

on

ad

o -

25

Page 26: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Heterogêneo

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

Pessoa

type

pessoa = record

Pro

f. Yan

dre

Mald

on

ad

o -

26

Nome: string[20];

Idade: integer;

Sexo: char;

Telefone: string[18];

Endereço: string[30];

Pessoanome: string[20];

idade: integer;

sexo: char;

telefone: string[18];

endereco: string[30];

end;

var

aluno: pessoa;

...

Page 27: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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;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

Mald

on

ad

o -

27

Page 28: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Heterogêneo

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

• Read (aluno.nome);

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

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

Pro

f. Yan

dre

Mald

on

ad

o -

28

Page 29: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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;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

Mald

on

ad

o -

29

Page 30: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

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 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

Mald

on

ad

o -

30

Page 31: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado Heterogêneo

Exercício 1

type

cad_aluno = record

nome: string [20];

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

...for i:=1 to 20 do

beginwrite ('Digite o nome do aluno [',i,']: ');readln (alunos[i].nome);for j:=1 to 4 dobeginnotas: 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;

...

beginwrite ('Digite a nota: ');readln (alunos[i].notas[j]);

end;end;

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

beginmnt := 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

Mald

on

ad

o -

31

Page 32: Agregado Homogêneo e Heterogêneo - din.uem.bryandre/fundamentos_producao/agregado-grande.pdf · • Cadeia de Caracteres – É um outro tipo de estrutura de dados homogênea; –

Agregado HeterogêneoExercício 2type

cad_carro = recordmodelo: string [15];ano: integer;preco: real;placa: string [7];

end;

...for i := 1 to 30 do

beginwrite ('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: ');end;

varcarros: array [1..30] of cad_carro;i, j, carro_barato: integer;mpc: real;

beginmpc := 10000000;carro_barato := 0;

Pro

f. Yan

dre

Mald

on

ad

o -

32

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

end;for i:= 1 to 30 dobeginif (carros[i].preco < mpc) thenbegin

mpc := carros[i].preco;carro_barato := i;

end;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.