A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Agregado Homogêneo e Heterogêneo

Apresentações semelhantes


Apresentação em tema: "Agregado Homogêneo e Heterogêneo"— Transcrição da apresentação:

1 Agregado Homogêneo e Heterogêneo
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 Prof. Yandre Maldonado - 1

2 Agregado Homogêneo 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); Prof. Yandre Maldonado - 2

3 Agregado Homogêneo 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; Prof. Yandre Maldonado - 3

4 Agregado Homogêneo Agregados homogêneos também são conhecidos como:
Array Vetor Prof. Yandre Maldonado - 4

5 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 Prof. Yandre Maldonado - 5 Identificador ou nome do conjunto Palavra chave usada para identificar a declaração de um conjunto (ou array, vetor, matriz,...)

6 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; Prof. Yandre Maldonado - 6 1 4 2 50 3 7 6 5 8 9 10 Índice Conteúdo vetor_int

7 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; writeln ('Nota [',i,']: ', vet_notas[i]); readkey; End. Prof. Yandre Maldonado - 7

8 Agregado Homogêneo 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. 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. Prof. Yandre Maldonado - 8

9 Agregado Homogêneo Cadeia de Caracteres s: string[12];
É 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: Prof. Yandre Maldonado - 9 Neste caso diz-se que o tamanho físico da estrutura é 12 e o tamanho lógico é 10. C O M P U T A D O R

10 Agregado Homogêneo 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. Prof. Yandre Maldonado - 10

11 Agregado Homogêneo 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. Prof. Yandre Maldonado - 11

12 Agregado Homogêneo 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. Prof. Yandre Maldonado - 12

13 Agregado Homogêneo 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). Prof. Yandre Maldonado - 13

14 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); Prof. Yandre Maldonado - 14

15 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; Prof. Yandre Maldonado - 15

16 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. Prof. Yandre Maldonado - 16

17 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 3.31 6 7 8 9 10 Exemplo de atribuição: matriz [5, 2] := 3.31; Prof. Yandre Maldonado - 17

18 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. Prof. Yandre Maldonado - 18

19 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 3.31 6 7 8 9 10 5 4 18 3 2 1 Prof. Yandre Maldonado - 19 Exemplo de atribuição: matriz [5, 2] := 3.31;

20 Agregado Homogêneo Exemplo de atribuição de uma estrutura à outra:
matriz ← matriz1; matriz matriz1 10 9 8 7 6 3.31 5 4 3 2 1 18 Prof. Yandre Maldonado - 20

21 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; Prof. Yandre Maldonado - 21

22 Agregado Homogêneo Program 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. Prof. Yandre Maldonado - 22

23 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. Prof. Yandre Maldonado - 23

24 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]; Prof. Yandre Maldonado - 24

25 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. Prof. Yandre Maldonado - 25

26 Agregado Heterogêneo Assim, poderíamos criar a seguinte estrutura para armazenar informações pertinentes à uma pessoa: type pessoa = record nome: string[20]; idade: integer; sexo: char; telefone: string[18]; endereço: string[30]; end; var aluno: pessoa; ... Nome: string[20]; Idade: integer; Sexo: char; Telefone: string[18]; Endereço: string[30]; Pessoa Prof. Yandre Maldonado - 26

27 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; Prof. Yandre Maldonado - 27

28 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”; Prof. Yandre Maldonado - 28

29 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; Nome Idade Sexo Telefone Endereço Pessoa Prof. Yandre Maldonado - 29

30 Agregado Heterogêneo Exercícios resolvidos:
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. 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. Prof. Yandre Maldonado - 30

31 Agregado Heterogêneo Exercí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 write (‘Digite a nota: ‘); readln (alunos[i].notas[j]); end; if (alunos[i].notas[3] > mnt) then mnt  alunos[i].notas[3]; aluno_nota  i; write (‘O aluno de maior nota no terceiro bimestre é: ‘, alunos[aluno_nota].nome); end. Prof. Yandre Maldonado - 31

32 Agregado Heterogêneo Exercício 2 type cad_carro = record
... 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 if (carros[i].preço < mpc) then mpc := carros[i].preço; carro_barato := i; 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. Exercício 2 type 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 := ; carro_barato := 0; ... Prof. Yandre Maldonado - 32


Carregar ppt "Agregado Homogêneo e Heterogêneo"

Apresentações semelhantes


Anúncios Google