Agregado Homogêneo e Heterogêneo

Documentos relacionados
ALGORITMOS + PASCAL. Estruturas de dados Heterogêneas

Subprogramação. Subprogramação. Subprogramação. A subprogramação é uma ferramenta que contribui com a tarefa de programar:

Exercícios. Resposta: a) var valor: real; i: integer. b)

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

1. [VETOR][SALA] Cálculo da média aritmética de 10 valores armazenados em um vetor.

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Estrutura de Dados. Struct (Registro) Lais Farias Alves

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

Lógica de Programação I. Gilson de Souza Carvalho

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Linguagem C Vetores, Matrizes e Strings

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Aula Anterior. Decomposição algorítmica (continuação)

Introdução à Ciência da Computação

Linguagem de programação: Pascal

Algoritmos e Estruturas de Dados. Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras PURO

Linguagem Pascal. Definição e Tipos de Dados. Professora Lara Popov Zambiasi Bazzi Oberderder. Linguagem PASCAL 1

Capítulo 7 Matriz. Roteiro

Lógica de Programação e Algoritmos

Fundamentos de Algoritmos (5175/31)

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Linguagem de Programação

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Linguagem de Programação Pascal - Introdução

Programação de Computadores II

Arrays. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

PROGRAMAÇÃO A. Vetores

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.

Elementos básicos das linguagens de programação

APÊNDICE A - FUNDAMENTOS DA LINGUAGEM DE PROGRAMAÇÃO PASCAL.

Algoritmos e Programação

Caracteres, Vetores e Matrizes

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Algoritmos e Técnicas de Programação

Vetores Unimensionais

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

ALGORITMOS E LÓGICA DE PROGRAMAÇÃO PRÉ AULA PRÉ AULA 02/11/2015

O que é um jogo digital?

Algoritmo e Programação Matemática

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

LISTA DE EXERCÍCIOS: 1ª Unidade

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: variáveis compostas homogêneas: Arrays Strings

Disciplina Programação Prof. Esp. Armando Hage. Programação em Turbo Pascal

Aula IV Vetores e Matrizes

Programação: Vetores

Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado?

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Organização de programas em Pascal

Arrays (Vetores) Arrays (Vetores) 28/04/ Índices. profs. } Ex1: Se eu preciso manipular 100 nomes de pessoas ao mesmo tempo... é melhor...

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Introdução à Programação. Vetores. Prof. José Honorato F. Nunes

Paradigmas de Linguagens

ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc.

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

ALGORITMOS VARIÁVEIS E OPERADORES. Prof. Angelo Augusto Frozza, M.Sc.

Transcrição:

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

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

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;

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

Declaração de um vetor em Pascal: nome_vetor: array [1..Tam] of tipo_simples; Prof. Yandre Maldonado - 5 Identificador ou nome do conjunto 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,...)

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 4 5 6 7 8 9 10 50

Exemplo: um algoritmo para armazenar a nota bimestral de um total de 10 alunos e ao final informar todas as notas em seqüência. Prof. Yandre Maldonado - 7 Program Vetor; Var 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.

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

Prof. Yandre Maldonado - 9 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 Neste caso diz-se que o tamanho físico da estrutura é 12 e o tamanho lógico é 10.

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.

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

Prof. Yandre Maldonado - 12 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 [', i, ]: '); readln (vet_nomes[i]); end; for i:=10 downto 1 do writeln ('Nome [',i,']: ', vet_nomes[i]); End.

Prof. Yandre Maldonado - 13 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 começam com a letra c (minúscula ou maiúscula).

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

Exemplos: Agregado Homogêneo 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 3 4 5 3.31 6 7 8 9 10 Exemplo de atribuição: matriz [5, 2] := 3.31;

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

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

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

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

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: string [20]; Idade: integer; Sexo: char; Telefone: string [18]; Endereço: string [30];

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

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

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

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

Agregado Heterogêneo Prof. Yandre Maldonado - 31 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 write ('Digite o nome do aluno [',i,']: '); readln (alunos[i].nome); for j:=1 to 4 do begin write ('Digite a nota: '); readln (alunos[i].notas[j]); end; 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 Prof. Yandre Maldonado - 32 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 := 10000000; carro_barato := 0;... for 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].preco < mpc) then begin 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.