Universidade Estadual de Maring UEM Centro de Tecnologia

  • Slides: 32
Download presentation
Universidade Estadual de Maringá - UEM Centro de Tecnologia - CTC Departamento de Informática

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 - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din. uem. br

Agregado Homogêneo Prof. Yandre Maldonado - 2 • Até agora os problemas eram resolvidos

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

Agregado Homogêneo Prof. Yandre Maldonado - 3 • Agregado homogêneo: é uma seqüência de

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

Agregado Homogêneo • Agregados homogêneos também são conhecidos como: – Array – Vetor Prof.

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

Agregado Homogêneo • Declaração de um vetor em Pascal: nome_vetor: array [1. . Tam]

Agregado Homogêneo • Declaração de um vetor em Pascal: nome_vetor: array [1. . Tam] of tipo_simples; Prof. Yandre Maldonado - 5 Tipo dos dados do conjunto Dimensão, ou tamanho máximo do conjunto Identificador ou nome do conjunto Palavra chave usada para identificar a declaração de um conjunto (ou array, vetor, matriz, . . . )

Agregado Homogêneo • Exemplo: declaração de um vetor para armazenar 10 valores numéricos inteiros;

Agregado Homogêneo • Exemplo: declaração de um vetor para armazenar 10 valores numéricos inteiros; vetor_int: array [1. . 10] of integer; Prof. Yandre Maldonado - 6 • Exemplo de manipulação: vetor_int[3]: =50; Índice Conteúdo vetor_int 1 2 3 50 4 5 6 7 8 9 10

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

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

Agregado Homogêneo Prof. Yandre Maldonado - 8 1. Faça um algoritmo que armazene as

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

Agregado Homogêneo • Cadeia de Caracteres Prof. Yandre Maldonado - 9 – É um

Agregado Homogêneo • Cadeia de Caracteres Prof. Yandre Maldonado - 9 – É 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 Neste caso diz-se que o tamanho físico da estrutura é 12 e o tamanho lógico é 10.

Agregado Homogêneo Prof. Yandre Maldonado - 10 • Em pascal as cadeias são declaradas

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

Agregado Homogêneo • Algoritmo para armazenar uma palavra com no máximo 15 caracteres a

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

Agregado Homogêneo • Pode-se criar vetores de cadeias; – Exemplo: algoritmo que permite ao

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

Agregado Homogêneo Prof. Yandre Maldonado - 13 • Exercício: faça um programa em Pascal

Agregado Homogêneo Prof. Yandre Maldonado - 13 • 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 • Agregado Homogêneo Multidimensional – Sinônimos: Prof. Yandre Maldonado - 14 •

Agregado Homogêneo • Agregado Homogêneo Multidimensional – Sinônimos: Prof. Yandre Maldonado - 14 • • 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);

Agregado Homogêneo • Desta forma, podemos descrever agora todos os atributos de um agregado

Agregado Homogêneo • Desta forma, podemos descrever agora todos os atributos de um agregado homogêneo de dados: Prof. Yandre Maldonado - 15 – 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;

Agregado Homogêneo Prof. Yandre Maldonado - 16 – Valor de dado: o conteúdo associado

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

Agregado Homogêneo • Exemplos: – Declaração de uma matriz (estrutura bidimensional) com 10 linhas

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

Agregado Homogêneo • Manipulação de estruturas: Prof. Yandre Maldonado - 18 – Pode-se manipular

Agregado Homogêneo • Manipulação de estruturas: Prof. Yandre Maldonado - 18 – 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.

Agregado Homogêneo • Exemplos: – Considere o conjunto bidimensional do slide 16: matriz: conjunto

Agregado Homogêneo • Exemplos: – Considere o conjunto bidimensional do slide 16: matriz: conjunto [1. . 10, 1. . 5] de real; – E o conjunto matriz 1, declarado como a seguir: matriz 1: conjunto [1. . 5, 1. . 3] de real; Prof. Yandre Maldonado - 19 – Neste caso seria possível atribuir matriz 1 a matriz, pois os prérequisitos são satisfeitos. Já o contrário não poderia ser feito. 1 2 3 4 5 Exemplo de atribuição: 1 matriz 1 [3, 3] : = 18; 2 1 3 2 3. 31 6 7 8 9 10 3 1 4 5 2 3 4 Exemplo de atribuição: matriz [5, 2] : = 3. 31; 5 18

Agregado Homogêneo • Exemplo de atribuição de uma estrutura à outra: matriz ← matriz

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

Agregado Homogêneo • Exemplo de algoritmo com estrutura bidimensional: Prof. Yandre Maldonado - 21

Agregado Homogêneo • Exemplo de algoritmo com estrutura bidimensional: Prof. Yandre Maldonado - 21 – 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 30 x 3;

Agregado Homogêneo Prof. Yandre Maldonado - 22 Program Temperaturas_Periodos; Var Mat. Temp: array [1.

Agregado Homogêneo Prof. Yandre Maldonado - 22 Program Temperaturas_Periodos; Var Mat. Temp: 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 (Mat. Temp[i, 1]); write ('Digite a temperatura media da tarde: '); readln (Mat. Temp[i, 2]); write ('Digite a temperatura media da noite: '); readln (Mat. Temp[i, 3]); end; End.

Agregado Homogêneo • Exercício Prof. Yandre Maldonado - 23 – Faça um algoritmo em

Agregado Homogêneo • Exercício Prof. Yandre Maldonado - 23 – 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.

Agregado Heterogêneo Prof. Yandre Maldonado - 24 • Com as estruturas estudadas até o

Agregado Heterogêneo Prof. Yandre Maldonado - 24 • 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];

Agregado Heterogêneo Prof. Yandre Maldonado - 25 • Observe que trata-se de dados de

Agregado Heterogêneo Prof. Yandre Maldonado - 25 • 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.

Agregado Heterogêneo • Assim, poderíamos criar a seguinte estrutura para armazenar informações pertinentes à

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

Agregado Heterogêneo Prof. Yandre Maldonado - 27 • Para se criar uma estrutura heterogênea,

Agregado Heterogêneo Prof. Yandre Maldonado - 27 • 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;

Agregado Heterogêneo • Considerando a declaração do slide 26, poderíamos ter as seguintes referências

Agregado Heterogêneo • Considerando a declaração do slide 26, poderíamos ter as seguintes referências a um campo: – Entrada de dados: Prof. Yandre Maldonado - 28 • Read (aluno. nome); – Saída de dados: • Write (aluno. nome); – Atribuição: • aluno. nome : =“José da Silva”;

Agregado Heterogêneo • Pode-se criar vetores de registros: – Exemplo: armazenar um conjunto de

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; Prof. Yandre Maldonado - 29 1 2 3 4 5 6 7 8 9 Pessoa Nome Idade Sexo Telefone Endereço . . . 40

Agregado Heterogêneo • Exercícios resolvidos: Prof. Yandre Maldonado - 30 1. Faça um algoritmo

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

Agregado Heterogêneo Exercício 1 type cad_aluno = record nome: string [20]; notas: array [1.

Agregado Heterogêneo Exercício 1 type cad_aluno = record nome: string [20]; notas: array [1. . 4] of real; end; Prof. Yandre Maldonado - 31 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 do if (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.

Agregado Heterogêneo Exercício 2 Prof. Yandre Maldonado - 32 type cad_carro = record modelo:

Agregado Heterogêneo Exercício 2 Prof. Yandre Maldonado - 32 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 : = 1000000; carro_barato : = 0; . . . 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.