Você está na página 1de 27

Estruturas de Dados

Docente: Dikiefu Fabiano, Msc

Sumrio
1. 2.

Introduo Variveis Compostas Homogneas


1. Variveis compostas unidimensionais (Vectores) 2. Variveis compostas multidimensionais (Matrizes)

3.

Variveis Compostas Heterogneas


1. Registos 2. Registos de conjuntos 3. Conjunto de registos

Introduo
A quantidade de tipos de dados estipulados ( tipos primitivos) no suficiente para representar toda e qualquer informao que possa surgir. Portanto, em muitas situaes esses recursos de representao so escassos, o que poderia ser suprido se existissem mais tipo de dados ou, ainda melhor, se esses tipos pudessem ser construdos, criados, medida que se fizessem necessrio. Construiremos novos tipos, denominados tipos construdos, a partir da composio de tipos primitivos. Esses novos tipos tm um formato denominado estrutura de dados, que define como os tipos primitivos esto organizados.

Variveis Compostas Homogneas


Uma varivel homognea uma estrutura de dados composta de variveis do mesmo tipo. Variveis compostas homogneas so divididas em duas subcategorias: Variveis compostas unidimensionais (Vectores) Variveis compostas multidimensionais (Matrizes)

Variveis compostas unidimensionais


Nomearemos as estruturas unidimensionais homognea de vectores (arrays). Exemplo:
VAR nota: vetor[1..40] de reais // declarao da varivel de tipo vector de reais aluno: vetor[0..25] de caracteres
10.5
1
Joo 1

15.0
2
Miguel 2

8.9 5.7 17.0


3
Alice 3

8.9
39
Andr 24

12.0
40
Gabriela 25

4
Ana 4

5
Joaquina 5

Manipulao de vectores
Os vectores so compostos por diversos dados e, como podem existir muitos vectores, torna-se necessrio determinar primeiro o nome vector que contm o dado desejado e, depois, especificar a posio em que se encontra. nota[3]
10.5
0

15.0
1

8.9 5.7 17.0


2 3 4

8.9
38

6.0
39

ndices (posio) O nome do vector determinado por meio do identificador utilizado na declarao de variveis, e a posio, por meio da constante, da expresso aritmtica ou da varivel que estiver dentro do colchete, tambm denominado ndice.

Podemos manipular cada elemento do vector atravs de qualquer operao de entrada, sada ou atribuio. Exemplo 1: nota[2] 15 // atribudo ao vector nota na posio 2 o valor 15 leia (nota[2]) // l o valor a partir do teclado para o vector nota
// na posio 2

escreva(nota[2])

// Imprime na tela o contedo que est na // posio 2 do vector nota

Exemplo 2: Construir um algoritmo que calcule a mdia aritmtica geral de uma turma com dez alunos e imprimir a quantidade de notas acima da mdia.

Algoritmo media_vector VAR nota: vetor[1..10] de real soma, media: real notaAcima, x: inteiro

inicio soma0.0 notaAcima 0 para x de 1 at 10 passo 1 faa leia(nota[x]) fimpara para x de 1 at 10 passo 1 faa soma soma + nota[x] fimpara

media soma/10; para x de 1 at 10 passo 1 faa se (nota[x] > media) ento notaAcima notaAcima +1 fimse fimpara escreva (notaAcima) fimalgoritmo

TPC: Resolve o exemplo acima usando subprograma

Exemplo 3: Elabore um algoritmo que leia, some e imprima o resultado da soma entre dois vectores inteiros de tamanho 50.

ALGORITMO "soma_vectores" VAR va, vb, vr: vetor[1..50] de inteiro procedimento leiaVector Var i:inteiro inicio para i de 1 ate 50 passo 1 faca leia (va[i],vb[i]) fimpara fimprocedimento procedimento somaVector VAR i:inteiro inicio para i de 1 ate 50 passo 1 faca vr[i] <- va[i] + vb[i] fimpara fimprocedimento

procedimento mostraVector VAR i:inteiro inicio para i de 1 ate 50 passo 1 faca escreva (vr[i]) fimpara fimprocedimento inicio escreval(introduza os elementos das matrizes A e B) leiaVector somaVector escreval(o vector resultante :) mostravector fimalgoritmo

Manipulao de vectores
Exemplo 4: Construa um algoritmo que preencha um vector de 100 elementos inteiros, colocando 1 na posio correspondente a um nmero par e 0 a um nmero mpar. ALGORITMO soma_vectores VAR A :vetor[1..100] de inteiro i: inteiro inicio para i de 1 at 50 passo 1 faa se (( i MOD 2) <> 0) ento A[i] 1 seno A[I] 0 fimse fimpara fimalgoritmo

Vectores - Exerccios propostos

Variveis compostas multidimensionais


Os vectores tm como principal caracterstica a necessidade de apenas um ndice para endereamento so estruturas unidimensionais. Uma estrutura que precisa de mais de um ndice denominada estrutura composta multidimensional. Denominaremos as estruturas compostas homogneas multidimensionais como sendo matrizes. Exemplos: VAR mat: matriz [1..3, 2..4, 3..4] de real msala: matriz[1..4, 1..4] de inteiro

Matrizes - Manipulao
Considerando uma estrutura bidimensional(dois ndices), o primeiro ndice indica a linha e o segundo, a coluna.
1 1 2 2 3 4 ndices de coluna

3
4 msala ndices de linha

msala[2, 3]

Matrizes - Manipulao

mat 2 3 4 1 2 3 3 1 2 3 4 2 3 4 mat[2, 3, 4]

Matrizes - Manipulao
Para utilizar o vector, inserimos uma nica estrutura de repetio, fazendo com que haja variao em seu ndice. Como a estrutura multidimensional possui mais que um ndice, faz-se necessria a utilizao de mais estrutura de repetio, em mesmo nmero do que o nmero de dimenses da matriz. As matrizes mais utilizadas so as bidimensionais, devido sua relao directa com muitas aplicaes, por exemplo, tabelas, que devem possuir duas estruturas de repetio.

Exemplo 1: Construa um algoritmo que efectue a leitura, a soma e a impresso do resultado entre duas matrizes inteiras que comportem 25 elementos.
Algoritmo soma_matrizes VAR MA, MB, MR: matriz[ 1..5, 1..5] de INTEIRO i, j: INTEIRO inicio escreval(Escreva a matriz) para i de 1 at 5 passo 1 faa para j de 1 at 5 passo 1 faa leia(MA[i, j], MB[i, j]) MR[i, j] MA[i, j] +MB[i, j] fimpara fimpara para i de 1 at 5 passo 1 faa para j de 1 at 5 passo 1 faa escreva(MR[i, j]) fimpara fimpara fimalgoritmo TPC:
Resolva o exemplo anterior usando subalgoritmo

Exemplo 2: Elabore um algoritmo que leia duas matrizes internas A e B, do tipo (3X3) e calcule em uma matriz R sua multiplicao, ou seja, R[i, j]=A[i, k]*B[k, j]
Algoritmo produto_matrizes tipo M = matriz[ 1..3, 1..3]:INTEIRO VAR MA, MB, MR: M i, j, k: INTEIRO INICIO para i de 1 at 3 passo 1 faa para j de 1 at 3 passo 1 faa leia(MA[i, j]) fimpara fimpara para i de 1 at 3 passo 1 faa para j de 1 at 3 passo 1 faa leia(MB[i, j]) fimpara fimpara para i de 1 at 3 passo 1 faa para j de 1 at 3 passo 1 faa MR[i, j] 0 para k de 1 at 3 passo 1 faa MR[i, j] MR[i, j] + MA[i, j] + MB[i, j] fimpara fimpara fimpara para i de 1 at 3 passo 1 faa para j de 1 at 3 passo 1 faa escreva (MR[i, j]) fimpara fimpara fimalgoritmo

TPC: Resolva o exemplo anterior usando subalgoritmo

Matrizes - Exerccios

Matrizes Exerccios (cont)

Variveis Compostas Heterogneas

O conjunto homogneo de dados composto de variveis do mesmo tipo primitivo, logo, se tivssemos um conjunto em que os elementos no so do mesmo tipo, teramos, ento, um conjunto heterogneo de dados.

Registo
Uma das principais estruturas de dados o registo. Existem muitos exemplos prticos de registos(bi, carto eleitoral, carta de conduo, etc.). O registo carto eleitoral formada por um conjunto de informaes logicamente relacionadas, porm, de tipos diferentes, tais como n de registo(inteiro), nome (caractere), grupo(inteiro)data de nascimento (data), etc., tambm chamadas de campos. Registo composto por campos que so partes que especificam cada uma das informaes que o compe. Uma varivel de tipo registo uma varivel composta, pois engloba um conjunto de dados, e heterognea, pois cada campo pode ser de um tipo primitivo diferente.

Registo

Para usarmos um registo precisamos, primeiramente, definir em detalhes como constitudo o tipo construdo, especificando todos os campos e, depois, declarar uma ou mais variveis, associando os identificadores de variveis ao identificador do tipo registo. Exemplo: tipo DPessoal = registo num: inteiro nome: caractere sexo: caratere idade: inteiro altura: real fimregisto Var pessoa: DPessoal

Registo - Manipulao

Quando acedamos o registo genericamente, estamos referenciando obrigatoriamente todos os campos por ele envolvidos. Exemplo leia(pessoa) escreva(pessoa)

Para utilizar um campo especfico do registo devemos utilizar o carcter . (ponto), a fim de estabelecer a separao do nome do registo do nome do campo. Exemplo leia(pessoa.none) escreva(pessoa.idade)

Registo de conjuntos

Os registos visto at agora possuam em seus campos apenas dados de tipo primitivos, entretanto, podemos dispor tambm de campos que so compostos. Exemplo tipo DATA = registo dia: INTEIRO ms: INTEIRO ano: INTEIRO fimregisto
tipo DPessoal = registo

num: Inteiro nome: caractere sexo: caractere idade: Inteiro altura: Real data_nasc: DATA fimregisto Var pessoa: DPessoal

Conjunto de registos

Na estrutura homogneas (vectores e matrizes) utilizamos tipos de dados primitivos como sendo os elementos dessas estruturas. Agora utilizaremos como componentes dessa estrutura no apenas tipo primitivo mas tambm registos.

Conjunto de registos - Exemplo


tipo DATA = registo dia: INTEIRO mes: INTEIRO ano: INTEIRO fimregisto tipo DPessoal = registo num: Inteiro nome: caractere sexo: caractere idade: Inteiro altura: Real data_nasc: DATA fimregisto Var pessoal: DPessoal listapessoa: vetor[1..50] de DPessoal

Conjunto de registos - manipulao

Para acessar as informaes contidas em um conjunto de registos, procedemos utilizando o modo de acesso caracterstico de cada estrutura que forma conjunto, seja ela um registo, uma matriz ou um vector.

Você também pode gostar