Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
1. 2.
3.
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.
15.0
2
Miguel 2
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
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])
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
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
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
Matrizes - Exerccios
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.
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.