Sie sind auf Seite 1von 26

Prof. MSc. Flvio Barros flathbarros@gmail.

com

Parnaba-PI

Contedo
Unid. IV - Estruturas de Dados Simples em PASCAL
Vetores Registro

MSc. Flvio Barros

Estruturas de Dados em PASCAL

Estruturas de Dados Simples

Contextualizao
Existem situaes que precisamos usar um grupo de variveis do mesmo tipo, mas que possam ser referenciadas pelo conjunto ou, individualmente, com o mesmo nome.

Situao
Algoritmo que soma DEZ nmeros e, depois de mostrar o resultado, imprime os nmeros lidos na ordem inversa da leitura;

MSc. Flvio Barros

Estruturas de Dados em PASCAL

Estruturas de Dados Simples


Program soma_10; Var x1, x2, ... , x10, soma : integer; Begin readln (x1); readln (x2); ... readln (x10); soma := x1 + x2 + . . . + x10; writeln (Soma eh: ,soma); writeln (Ordem inversa eh: x10, ... ,x1); End.
MSc. Flvio Barros

Situao: Se em vez de DEZ nmeros fossem 100. O programa ficaria com a escrita imensa, alm de ocupar um espao de memria da mquina muito grande. Soluo: VETOR e MATRIZ seriam considerados uma varivel de memria indexada, ou com ndices, um agregado homogneo de dados , ou seja, um grupo de variveis do mesmo tipo que recebem o mesmo nome e so individualizadas por um ndice.

Estruturas de Dados em PASCAL

Estruturas de Dados Simples


Sintaxe
Li Limite inferior

variavel_vetor : array [ Li .. Ls ] of tipo;


Ls Limite superior Um vetor unidimensional (ou simplesmente vetor) declarado atravs da seguinte sintaxe; onde o Limite inferior Li, e o Limite superior Ls, so constantes de um tipo ordenado e limitam os possveis valores para os ndices das componentes, fixando tambm o nmero mximo destas componentes. Evidentemente, devemos ter Li Ls; O tipo de dado da sintaxe fixar o tipo de dado das componentes do vetor podendo ser de qualquer tipo.
MSc. Flvio Barros

Estruturas de Dados em PASCAL

Definio [1]
Um vetor um conjunto de variveis de um mesmo tipo as quais so acessadas atravs de ndices apostos ao identificador do vetor, ndices que devem ser de um tipo ordenado: integer, char, boolean, etc. Por exemplo, a declarao: var Vetor : array [ 1. .10 ] of integer
definir um conjunto de dez variveis do tipo integer

var Cadeia : array [ 11..100 ] of char


definir um conjunto de noventa variveis do tipo char

var Frequencia : array [ 'A' .. 'Z ] of integer


reservar um conjunto de vinte e seis variveis do tipo integer
MSc. Flvio Barros

Estruturas de Dados em PASCAL

Definio [2]

Um array ou vetor uma estrutura de dados utilizada para armazenar uma coleo de itens; Cada item identificado atravs de seu ndice; Podemos imaginar um array como sendo um armrio com um determinado nmero de gavetas e cada gaveta possui um rtulo com um nmero de identificao.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

Analogia [ Vetor ]
Quando criamos um array devemos informar qual o tipo de dado que ele ir armazenar em cada posio; Na analogia com o armrio, seria como se tivssemos que definir o qu o armrio ir guardar; Por exemplo, se definirmos que um armrio deve guardar livros, ento poderemos guardar apenas livros; No poderemos tentar guardar revistas ou jornais.
MSc. Flvio Barros

Estruturas de Dados em PASCAL

Vamos praticar ... Array [..]


Program soma_10; Var i : integer; num : array [ 1 .. 10 ] of integer; soma : integer; Begin writeln (Insira 10 nmeros : ); soma := 0; for i := 1 to 10 do begin readln ( num [ i ] ); soma := soma + num [ i ]; end;
MSc. Flvio Barros

writeln (Soma eh: ,soma); write (Ordem Inversa eh: ); for i := 10 downto 1 do write ( num [ i ], ); End.

Estruturas de Dados em PASCAL

Atividade
Questo 01 Faa um programa que leia 10 nmeros do usurio e posteriormente calcule a soma, o maior e o menor entre todos os nmeros inseridos; Questo 02 Faa um programa pea ao usurio o tamanho do vetor que ser efetivamente utilizado. Depois o programa deve ler todos os campos do vetor e calcular quantos nmeros menores que zero foram armazenados nesse vetor.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

10

Definindo um tipo vetor

Para a utilizao de um vetor como um parmetro de um subprograma, prefervel que se use um tipo de dado definido pelo usurio.

Li Limite inferior

type identificador = array [ Li .. Ls ] of tipo_de_dados;


Ls Limite superior

MSc. Flvio Barros

Estruturas de Dados em PASCAL

11

Definindo um tipo Vetor


type TVetor = array [ 1..10 ] of integer; Pode-se ter uma declarao do tipo: var Vetor : Tvetor; Com esta declarao Vetor ser um conjunto de 10 variveis do tipo integer da mesma maneira que se tivssemos a seguinte declarao: var Vetor : array [ 1..10 ] of integer;
V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8] V[9] V[10]

MSc. Flvio Barros

Estruturas de Dados em PASCAL

12

Analogia [ Matriz ]

Arrays Multidimensionais
Voltando analogia que fizemos com um armrio cheio de gavetas, seria como se pudssemos guardar dentro da gaveta de um armrio um outro armrio com gavetas.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

13

Exemplo [ Matriz ] = Arrays Multidimensionais

MSc. Flvio Barros

Estruturas de Dados em PASCAL

14

Definindo um tipo Matriz


type Tmatriz = array [ 1..10, 1..2 ] of integer; Pode-se ter uma declarao do tipo: var Matriz : Tmatriz; Com esta declarao Matriz ser um conjunto de 10 x 2 variveis do tipo integer da mesma maneira que se tivssemos a seguinte declarao: var Matriz : array [ 1..10, 1..2 ] of integer;
M[1][1] M[2][1] M[1][2] M[2][2] M[1][3] M[2][3] M[1][4] M[2][4] M[1][5] M[2][5] M[1][6] M[2][6] M[1][7] M[2][7] M[1][8] M[1][9] M[2][8] M[2][9]
M[1][10] M[2][10]

MSc. Flvio Barros

Estruturas de Dados em PASCAL

15

Atividade 2
Questo 01
Escreva algoritmo em Pascal que faa o cadastro de 5 pessoas e suas respectivas idades. [usar ARRAY] Mostrar os nomes e as idades das pessoas com menos de 18 anos.

Questo 02
Faa um programa que possua dois vetores de mesmo tamanho n chamados nomes e salarios, dos tipos string e real, respectivamente, onde n inserido pelo usurio. O vetor nomes ir armazenar nomes de funcionrios, enquanto salarios armazenar o respectivo salrio. O programa dever listar os nomes dos funcionrios em ordem decrescente em relao ao salrio recebido.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

16

Atividade 2
Questo 03
Crie um programa que armazene 10 nmeros inteiros em um array. Preencha todas as posies do array com valores sequnciais e em seguida imprima-os na tela. Em seguida, escolha duas posies aleatoriamente e troque os valores de uma posio pelo da outra. Ao final, imprima o array novamente. Dica: para visualizar melhor o resultado, imprima uma linha entre a primeira e a segunda impresso do array.

Questo 04
Crie um programa que armazene 10 nmeros inteiros em um array. Preencha todas as posies do array com valores aleatrios e em seguida imprima-os na tela. Aps imprimir o array, ordene o array do menor valor para o maior. Ao final, imprima o array ordenado.
MSc. Flvio Barros

Estruturas de Dados em PASCAL

17

Desafio...
Crie um programa que utilize arrays para representar o estado inicial de um tabuleiro do jogo Damas. O tabuleiro possui 64 casas dispostas no formato de um quadrado de 8x8 casas.

Ex: array [ 1 .. 4, 1 .. 4 ] 4x4


MSc. Flvio Barros

Estruturas de Dados em PASCAL

18

Desafio...
No array utilize os caracteres * (asterisco) para representar as pedras vermelhas; e 0 (zero) para representar as brancas; Imprima o tabuleiro conforme o exemplo.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

19

Contedo
Unid. IV - Estruturas de Dados Simples em PASCAL
Vetores Registro

MSc. Flvio Barros

Estruturas de Dados em PASCAL

20

Registro = [ record ]

Contextualizao
Um registro um conjunto de variveis, denominadas campos, que podem ser de tipos diferentes; Desta forma, um registro um tipo estruturado heterogneo; A cada campo de um registro so associados um identificador e um tipo de dado.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

21

Registro = [ record ]
Sintaxe

type Identificador = record Id_do_campo 1 : tipo de dado; Id_do_campo 2 : tipo de dado; ... Id_do_campo n : tipo de dado; end;
onde tipo de dado pode ser qualquer tipo, simples ou estruturado (inclusive um outro registro).
MSc. Flvio Barros

Estruturas de Dados em PASCAL

22

Registro = [ record ]
Program ex_registro; Uses CRT; Var Clie : Record nome, ender : string [40]; fone : string [20]; sexo : char; sala rio : real; end; Begin ClrScr; writeln (Insira Dados do Cliente .....:); write ( Nome: '); readln (Clie.nome); write ( End: '); readln (Clie.ender);
MSc. Flvio Barros

write ( Fone: '); readln (Clie.fone); write ( Sexo: '); readln (Clie.sexo); write ( Salario: '); readln (Clie.salario); writeln; writeln (Dados Gravados com Sucesso!); writeln (Nome : ,clie.nome); writeln (End : ,clie.ender); writeln (Fone : ,clie.fone); writeln (Sexo : ,clie.sexo); writeln (Salario : ,clie.salario); End.
23

Estruturas de Dados em PASCAL

Registro = [ record ]
Type Tfuncionario = record Matr : string [8]; Nome : string [30]; Ender : record Rua : string [40]; Num : string [6] Bairro : string [20] CEP : string [9] end; Cargo : string [20]; NumDepend : integer; Salario : real DataAdm : string [8]; End;
MSc. Flvio Barros

Var

Func : Tfuncionario;

Begin Func . Matr := 1119310; Func . Nome := Vinicius de Moraes; Func . Ender . Rua := Rua Garota de Ipanema; Func . Ender . CEP := 65216-000; Func . NumDepend := 8;

End.
Estruturas de Dados em PASCAL
24

Desafio...

o programa para receber no mximo 10 matrculas, juntamente com nome, 4 notas para cada matricula e armazenar a mdia das 4 notas de cada aluno. Emitir um relatrio incluindo as matrculas, os nomes e as mdias calculadas. Observe que um dos campos do registro um vetor, o qual ser utilizado para armazenar as notas das avaliaes de cada aluno.

MSc. Flvio Barros

Estruturas de Dados em PASCAL

25

Referncias
FORBELLONE, Andr Luiz Villar. Lgica de Programao: a construo de algoritmos e estruturas de dados. 3 ed. So Paulo: Makron Books, 2005. MANZANO, Jos A. e YAMATUMI, Wilson. Programando em Turbo Pascal 7.0: guia prtico de orientao e desenvolvimento. So Paulo: rica, 2001. SALVETTI, Dirceu D.; BARBOSA, Lisbete M. Algoritmos. So Paulo:Makron Books, 2000. EVARISTO, Jaime. Programando com PASCAL: A linguagem do Turbo Pascal e do Delphi. Editora Book, 2002. RIOS, Eyder. Programao Pascal. Faculdade Piauiense. 2010. RODRIGUES, Srgio. Linguagem Pascal. 2010.
MSc. Flvio Barros

Estruturas de Dados em PASCAL

26

Das könnte Ihnen auch gefallen