segunda-feira, 25 de agosto de 2008

Definindo uma Estrutura de Registro

Para exemplificar, imagine uma passagem de ônibus, que é formada por um conjunto de informações logicamente relacionadas, porém de tipos diferentes, tais como: número da passagem (inteiro), origem e destino (caracter), data (caracter), horário (caracter), poltrona (inteiro), distância (real), fumante (lógico), que são subdivisões (elementos de conjunto) do registro, também chamadas de campos. Logo, um registro é composto por campos que são partes que especificam cada uma das informações.

Exemplo: Conhecer um passageiro e imprimir.

Tipo
registro: RegPassagem
inteiro: número, poltrona;
caracter: origem, destino, data, horário;
lógico: fumante;
real: distância
fimregistro;
variáveis
regpassagem: passagem;
início
leia(passagem.número, passagem.poltrona);
leia(passagem.origem, passagem.destino);
leia(passagem.data, passagem.horário);
leia(passagem.distância, passagem.fumante);
escreva(passagem.número, passagem.poltrona);
escreva(passagem.origem, passagem.destino);
escreva(passagem.data, passagem.horário);
escreva(passagem.distância, passagem.fumante);
fim.

Registros

Já sabemos que um conjunto homogêneo de dados é composto por variáveis do mesmo tipo primitivo; porém, se tivéssemos um conjunto em que os elementos não são do mesmo tipo, teríamos então um conjunto heterogêneo de dados.

Um registro é uma estrutura de dados que agrupa dados de tipos distintos ou, mais
raramente, do mesmo tipo. Um registro de dados é composto por um certo número
de campos de dado, que são itens de dados individuais. Por exemplo, suponha que
desejemos criar um algoritmo para manter um cadastro dos empregados de uma dada
companhia. Neste cadastro, temos os seguintes dados para cada empregado:

• Nome do empregado.
• CPF do empregado.
• Salário do empregado.
• Se o empregado possui ou não dependentes.

Então, cada ficha deste cadastro pode ser representada por um registro que contém os
campos nome, CPF, salário e indicação de existência de dependentes. Neste caso, a
natureza dos campos é bem diversificada, pois nome pode ser representado por uma
cadeia, CPF e salário por valores numéricos e existência de dependentes por um valor
lógico.

Operações Básicas com Matrizes

Do mesmo modo que acontece com os vetores, não é possível operar diretamente com o conjunto completo, mas com cada um de seus componentes isoladamente.
O acesso individual a cada componente de uma matriz é realizado pela especificação de sua posição na mesma por meio do seu índice. No exemplo abaixo

Ex.: VAR
M : MATRIZ [1 .. 5 , 1 .. 10] DE INTEIRO

foi definida uma variável M capaz de armazenar 10 número inteiros em cada uma das 5 linhas. Para acessar um elemento desta matriz deve-se fornecer o nome da mesma e o índice da linha e da coluna do componente desejado da matriz (um número de 1 a 5 para a linha e um número de 1 a 10 para a coluna, neste caso).
Por exemplo, M[1,1] indica o primeiro elemento da primeira linha da matriz, M[1,2] indica o segundo elemento da primeira linha da matriz, M[1,10] indica o último elemento da primeira linha da matriz e M[5,10] indica o último elemento da última linha da matriz
Da mesma forma como vetores, não é possível operar diretamente sobre matrizes como um todo, mas apenas sobre seus componentes, um por vez. Por exemplo, para somar duas matrizes é necessário somar cada um de seus componentes dois a dois. Da mesma forma as operações de atribuição, leitura e escrita de matrizes devem ser feitas elemento a elemento.


Referência www.apostilando.com

Matrizes- Parte II

Os vetores têm como principal característica a necessidade de apenas um índice para endereçamento - estruturas unidimensionais. Uma estrutura que precisasse de mais de um índice, como no caso específico, dividido em apartamentos, seria então denominada estrutura composta multidimensional (agregado), neste caso, de duas dimensões (bidimensional).

Tipo
IDENTIFICADOR = matriz [LI1 .. LF1, LI2 .. LF2, .., LIN .. LFN] de ;
variáveis
variável : IDENTIFICADOR;

Onde:
*LIN, LFN - são os limites dos intervalos de variação dos índices da variável, onde cada par de limites está associado a um índice. O número de dimensões é igual ao número de intervalos;
* - qualquer um dos tipos primitivos, ou ainda um outro tipo que pode ser construído.

Primeiramente criaremos um novo tipo e lhe daremos um nome, após isso podemos usá-lo para declarar as variáveis que serão utilizados dentro do programa.

Exemplo:
Construa um algoritmo que efetue a leitura, a soma e a impressão do resultado, entre duas matrizes inteiras que comportem 25 elementos;

tipo
m = matriz [1 .. 5, 1 .. 5] de inteiros;
variáveis
m: ma, mb, mc ;
inteiro: i,j;
início
i ← 1;
enquanto i <= 5 faça
início
j ← 1;
enquanto j <= 5 faça
início
conheça (ma[i,j] , mb[i,j]); mc[i,j] <— ma[i,j] + mb[i,j]; j <— j + 1;
fim;
i <— i + 1;
fim;
j <— 1;
enquanto j <= 5 faça
início
i <— 1;
enquanto i <= 5 faça
início
informe (mc[i,j]);
i <— i + 1;
fim;
j <— j + 1;
fim;
fim.



Referência: www.apostilando.com

segunda-feira, 18 de agosto de 2008

Matrizes

Os vetores que estudamos até então são todos unidimensionais. Mas, podemos declarar
e manipular vetores com mais de uma dimensão, os quais denominamos matrizes. Por
exemplo, podemos definir uma estrutura de dados matriz 4 por 5 (uma tabela com 4
linhas e 5 colunas).

Este tipo de estrutura também tem sua principal utilização vinculada à criação de tabelas. Caracteriza-se por ser definida uma única variável vinculada dimensionada com um determinado tamanho. A dimensão de uma matriz é constituída por constantes inteiras e positivas. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados para indicar as variáveis simples.

A sintaxe do comando de definição de matrizes de duas dimensões é a seguinte:

Var : MATRIZ [ .. , .. ] DE ...

Ex.: VAR M : MATRIZ [1 .. 5 , 1 .. 10] DE INTEIRO

Também é possível definir matrizes com várias dimensões, por exemplo:

Ex.: VAR
N : MATRIZ [1 .. 4] DE INTEIRO
O : MATRIZ [1 .. 50 , 1 .. 4] DE INTEIRO
P : MATRIZ [1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO
Q : MATRIZ [1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO
R : MATRIZ [1 .. 2 , 1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO
S : MATRIZ [1 .. 2 , 1 .. 2 , 1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO

A utilidade de matrizes desta forma é muito grande. No exemplo acima, cada matriz pode ser utilizada para armazenar uma quantidade maior de informações:
a matriz N pode ser utilizada para armazenar 4 notas de um aluno
a matriz O pode ser utilizada para armazenar 4 notas de 50 alunos.
a matriz P pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas.
a matriz Q pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas, de 3 turmas.
a matriz R pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas, de 3 turmas, de 2 colégios.
a matriz S pode ser utilizada para armazenar 4 notas de 50 alunos de 5 disciplinas, de 3 turmas, de 2 colégios, de 2 cidades

Nas próximas postagens continuaremos a abordar o assunto Matrizes.

Referências: www.apostilando.com

Exercícios de vetores

Caro leitor

Nesta postagem, propomos que os leitores tentem resolver algumas questões sobre vetores para verificar assimilação do conteúdo.
Assim sendo, segue questões abaixo. Nas próximas postagens informaremos as respectivas respostas.

Exercício 01

Qual será o valor de Y a ser impresso no algoritmo abaixo?

início
real:Y;
tipo v: vetor[1..5] real;
v: V;
inteiro: I;
V[1] ← 2;
V[2] ← 4;
V[3] ← 1;
V[4] ←3;
V[5] ←5;
Y ← V[1] + V[5];
imprima (Y);
Y ← V[2] - V[5];
imprima (Y);
Y ← V[4] * V[1] - Y;
imprima (Y);
I ← 3;
Y ← V[I];
imprima (Y);
X ← V[I] / [V[1]];
imprima (Y);
fim.

Exercício 02

Uma professora tem uma classe composta de 80 alunos e deseja calcular e imprimir a nota de cada aluno seguida da média da turma. qual a sua sugestão para resolução deste algoritmo?

Exercício 03

Leia um vetor de 12 posições e em seguida ler também dois valores X e Y quaisquer correspondentes a duas posições no vetor.


*Referência Bibliográficas e sugestões de consulta
Lages, Guimarães. Algoritmos e estruturas de dados.
Farrer, H. e outros. Algoritmos estruturados.

sexta-feira, 15 de agosto de 2008

Nota:

Caro leitor, verificamos a presença de um pequeno erro em nossa postagem "Revisão- Vetores", quando afirmamos que "(...) E a contagem dos índices se inicia com o zero". Na verdade, o início da contagem do índice pode começar ou não do zero, a depender do programa.
Portanto, se o leitor encontrar em vetores, índices que não iniciem com o zero, lembre-se do explicado acima.
Agradecemos a compreensão.
Até a próxima postagem!!