TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Tipos Estruturados

Monografias: Tipos Estruturados. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  4/6/2013  •  1.712 Palavras (7 Páginas)  •  433 Visualizações

Página 1 de 7

TIPOS ESTRUTURADOS

Os tipos estruturados permitem fazer referência a um conjunto de informações através de um identificador. Temos os tipos estruturados homogêneos e heterogêneos. Os tipos homogêneos são conjunto de informações de um mesmo tipo, tais como: array unidimensional e multidimensional . Os tipos heterogêneos são conjuntos de caracteres não necessariamente de um mesmo tipo, tais como: file e record.

ARRAY

Correspondem a conjuntos de elementos de um mesmo tipo. Para identificar um elemento do conjunto é necessário especificar o nome do array seguido de um ou mais índices que definem sua posição no array. Podem ser dos tipos unidimensional ou multidimensional.

ARRAY UNIDIMENSIONAL

São vetores ou conjuntos de elementos que podem ser identificados pelo seu nome e apenas um índice. Para criar variáveis do tipo array unidimensional basta declarar:

var lista de identificadores: array[1..k] of tipo;

onde:

lista de identificadores: são os nomes associados às variáveis;

array of: são palavras reservadas com significado predefinidos em Turbo Pascal;

1..k: quantidade de elementos do array;

tipo: é o tipo dos elementos do array (integer, real, char, string[]).

Ex: Var NOME: array[1..10] of string[25];

Neste caso temos que NOME é um vetor que pode conter no máximo 10 nomes de até 25 caracteres cada um. O índice que varia de 1 a 10 indica a posição do nome no vetor.

NOME[1]:=’Patrícia de Queiroz’;

NOME[2]:=’Fabrício Silva e Souza’;

NOME[3]:=’Clementina da Paixão’;

.

.

NOME[10]:=’Fabiana Barroso’;

Ex: Var A,B: array[1..50] of real;

Neste caso temos 2 vetores de no máximo 50 valores reais.

A[1]:=5.7; B[1]:=9.7;

A[2]:=3.5; B[2]:=-2.6;

. .

. .

A[50]:=4.5; B[50]:=1.9;

ARRAY MULTIDIMENSIONAL

São as variáveis que utilizam mais que um índice para a definição da posição de seus elementos. Com duas dimensões temos as matrizes ou tabelas. Para criar variáveis do tipo array com duas dimensões basta declarar:

var lista de identificadores: array[1..k1,1..k2] of tipo;

onde: lista de identificadores: são os nomes associados às variáveis;

array of: são palavras reservadas com significado predefinidos em Turbo Pascal;

1..k1: quantidade de linhas do array;

1..k2: quantidade de colunas do array;

tipo: é o tipo dos elementos do array.

Ex: Var PRECOS: array[1..30,1..4] of real;

Produto Padaria 1 Padaria 2 Padaria 3 Padaria 4

Chocolate 9.45 9.30 10.43 9.50

Pó de Café 3.10 2.75 2.80 3.10

Leite 0.68 0.86 0.72 0.89

.

.

Pão francês 0.16 0.18 0.15 0.15

A variável PRECOS poderá conter apenas os preços dos produtos. A referência ao preço do Pó de Café na Padaria 3 é feita através do nome do array e as posições ocupadas no array, ou seja: PRECOS[2,3], que contém o valor 2.80.

Ex1: Sejam dois vetores, cada um contendo 10 valores numéricos reais, armazenar em um terceiro vetor a média aritmética entre os valores dos dois primeiros e calcular a média dos valores do terceiro vetor.

program array01;

uses crt;

var V1,V2,MedArit: array[1..10] of real;

Soma,MedGeral: real;

k: byte;

begin

textbackground(15);

textcolor(5);

clrscr;

gotoxy(15,2); write('CALCULO DA MEDIA E SITUACAO DA MEDIA');

gotoxy(15,5); write('1º VALOR 2º VALOR MEDIA SITUACAO');

Soma:=0;

for k:=1 to 10 do

begin

gotoxy(15,k+6); readln(V1[k]);

gotoxy(25,k+6); readln(V2[k]);

MedArit[k]:=(V1[k]+V2[k])/2;

gotoxy(35,k+6); write(MedArit[k]:4:1);

Soma:=Soma+MedArit[k];

end;

MedGeral:=Soma/10;

for k:=1 to 10 do

begin

gotoxy(45,k+6);

if MedArit[k]>MedGeral

then write('Acima da Media')

else if MedArit[k]=MedGeral

then write('Igual a Media')

else write('Abaixo da Media');

end;

gotoxy(50,20); write('Tecle algo...');

repeat until keypressed;

end.

Ex2: Seja uma matriz quadrada 5x5, calcular a soma dos elementos da diagonal principal.

program array02;

uses crt;

const n=5;

var m: array[1..n,1..n] of real;

soma: real;

lin, col, i, j: integer;

begin

clrscr;

gotoxy(20,3); write('Soma Diagonal');

soma:=0;

lin:=6;

for i:=1 to n do

begin

col:=10;

for j:=1 to n do

begin

gotoxy(col,lin); readln(m[i,j]);

if i=j then soma:=soma+m[i,j];

col:=col+10;

end;

lin:=lin+2;

end;

lin:=lin+1;

gotoxy(20,lin); write('Soma = ',soma:10:2);

repeat until readkey=#13;

end.

Ex3: Seja uma matriz quadrada 5x5, armazenar em um vetor os elementos da diagonal principal, apresentá-los e calcular a soma destes elementos.

program array03;

uses crt;

var Mat: array[1..5,1..5] of byte;

Diagonal: array[1..5] of byte;

Soma,i,j: byte;

Begin

Clrscr;

Gotoxy(30,5); write('Soma Diagonal Principal da Matriz');

Soma:=0;

for i:=1 to 5 do

for j:=1 to 5 do

begin

gotoxy(j*5+30,i*2+6); readln(Mat[i,j]);

if i=j then Diagonal[i]:=Mat[i,j];

end;

gotoxy(10,20); write('Diagonal Principal -->');

for i:=1 to 5 do

begin

gotoxy(i*5+30,20); write(Diagonal[i]);

Soma:=Soma+Diagonal[i];

end;

gotoxy(10,22); write('Soma da diagonal principal --> ',soma);

repeat until keypressed;

end.

Ex4: Dados dois vetores numéricos de 6 posições cada um, efetuar as respectivas operações indicadas por um outro vetor de caracteres de 6 posições contendo as quatro operações aritméticas em qualquer combinação. Fazer um programa para calcular e exibir o vetor resultado.

Program array04;

uses crt;

const n=6;

type vet=array[1..n] of real;

car=array[1..n] of char;

var num1,num2,res: vet;

oper: car;

i,c,l: integer;

begin

clrscr;

gotoxy(20,2); write('< < < O P E R A D O R E S > > >');

gotoxy(10,4); write('operador');

gotoxy(70,4); write('resultado');

window(2,6,79,23);

textbackground(6);

textcolor(15);

clrscr;

c:=8;l:=1;

for i:=1 to n do

begin

{$i-}

repeat

gotoxy(c,l); clreol; readln(num1[i]);

until ioresult=0;

repeat

gotoxy(c+20,l); clreol; readln(num2[i]);

until ioresult=0;

{$i+}

repeat

gotoxy(c+40,l); clreol; readln(oper[i]);

until (oper[i] in ['+','-','*','/']);

case oper[i] of

'+':res[i]:=num1[i]+num2[i];

'-':res[i]:=num1[i]-num2[i];

'*':res[i]:=num1[i]*num2[i];

'/':begin

if num2[i]<>0

then res[i]:=num1[i]/num2[i]

else res[i]:=num1[i];

end;

end;

gotoxy(c+60,l); write(res[i]:7:2);

l:=l+2;

end;

window(1,1,80,25);

gotoxy(20,25);

write('tecle <enter> para terminar ..');

repeat until readkey=chr(13);

textbackground(0);

textcolor(15);

clrscr;

end.

Ex5: O programa abaixo lê 80 números quaisquer e classifica em ordem crescente.

Program array05;

Uses crt;

Const n=80;

Var I,j,col,lin :lnteger;

Aux :real;

Mat :array [1..n] of real;

Begin

Clrscr;

Gotoxy(10,2);write(‘Digite’,n,’ valores para serem ordenados’);

Col:=4; lin:=4;

For i:=1 to n do

Begin

Gotoxy(col,lin);readln(mat[i]);

lin:=lin + 1;

if lin=24 then

begin

col:=col + 15;

lin:=4;

end;

end;

for i:=1 to n-1 do

for j:= i+1 to n do

begin

if mat[i] > mat[j] then

begin

aux:=mat[i];

mat[i]:=mat[j];

mat[j]:=aux;

end;

end;

clrscr;

gotoxy(10,2);write(‘Valores Ordenados’);

lin:=4; col:=4;

for i:=1 to n do

begin

gotoxy(col,lin);write(i:2,’ ‘,mat[i]:10:2);

lin:=lin+1;

if lin=24 then

begin

col:=col+15;

lin:=4;

end;

end;

gotoxy(30,24);write(‘Tecle enter para sair. ‘);

repeat until readkey=chr(13);

end.

Ex6: O programa abaixo lê 20 nomes quaisquer até 30 caracteres e faz a classificação em ordem alfabética.

Program array06;

Uses crt;

Const n=20;

Var chave :boolean;

I :lnteger;

Aux :string[30];

Mat :array [1..n] of string[30];

Begin

Clrscr;

Gotoxy(10,2);write(‘Digite’,n,’ nomes para serem classificados’);

For i:=1 to n do

Begin

Gotoxy(10,i+3);readln(mat[i]);

end;

chave:=true;

while chave do

begin

chave:=false;

for i:=1 to n-1 do

begin

if mat[i] > mat[i+1] then

begin

aux:=mat[i];

mat[i]:=mat[i+1];

mat[i+1]:=aux;

chave:=true;

end;

end;

end;

clrscr;

gotoxy(10,2);write(‘Nomes Classificados’);

for i:=1 to n do

begin

gotoxy(10,i+3);write(mat[i]);

end;

gotoxy(30,24);write(‘Tecle enter para sair. ‘);

repeat until readkey=chr(13);

end.

...

Baixar como  txt (9 Kb)  
Continuar por mais 6 páginas »