terça-feira, 26 de agosto de 2008

Atribuição de uma matriz de duas dimensões

Uma matriz de duas dimensões é atribuìda pela instrução matriz. A sintaxe para este tipo de matriz ( que é semelhante ao da matriz tipo vetor ) é:


Onde dimensão 1 e dimensão 2 indica o tamanho da tabela e "tipo de dado" representa o tipo da matriz , que poderá ser formada por valores reais, inteiros, lógicos ou caracteres.Exemplo: Definição de uma matriz com 8 linhas e 5 colunas.


Fontes: MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;






sábado, 23 de agosto de 2008

Operações básicas com matrizes de duas dimensões

Uma matriz de duas dimensões está sempre fazendo menção a linha e colunas e é representada por seu nome e seu tamanho (dimensão) entre colchetes. Desta forma é uma matriz de duas dimensões TABELA [1..7,1..5], onde seu nome é TABELA, e possui um tamanho de 7 linhas (de 1 a 7) e 5 colunas(de 1 a 5), ou seja, é uma matriz de 7 por 5(7*5). E isso significa que podem ser armazenados em TABELA até 35 elementos. A figura abaixo apresenta a matriz TABELA com a indicação dos endereços (posições) que podem ser utilizadas para armazenamento de seus elemento.


Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;

terça-feira, 19 de agosto de 2008

Matrizes com mais de uma dimensão

Nesta postagem faremos o uso de matrizes com duas dimensões, conhecidas também por matrizes bidimensionais ou arranjos (arrays).

Pelo fato de utilizar-se de uma estrutura de dados homogênea, todos os elementos de uma matriz deverão ser do mesmo tipo.


Até o momento você teve contato com o uso de uma única variável indexada com apenas uma dimensão (uma coluna e várias linhas), quando foi utilizado o exemplo para efetuar o cálculo da média geral dos oito alunos. Serão apresentadas então tabelas com mais colunas, sendo assim, teremos variáveis no sentido horizontal e vertical.

Ficaria muito difícil elaborar um programa que efetuasse a leitura das notas dos alunos, o cálculo da média de cada aluno e no final apresentar a média do grupo, utilizando-se apenas matrizes unidimensionais.Uma vez que se necessita manter um controle de cada índice em cada matriz para o mesmo aluno.

Para facilitar o trabalho com estruturas deste porte é que serão usadas matrizes com duas dimensões, por se relacionar diretamente com a utilização de tabelas.
Um importante aspecto a ser considerado é que a manipulação de uma matriz do tipo vetor é utilizada uma única instrução de looping (enquanto, para ou repita ). No caso de matrizes com mais dimensões , deverá ser utilizado o número de loopings relativo ao tamanho de sua dimensão.Desta forma, uma matriz de duas dimensões deverá ser controlada por dois loopings, de três dimensões deverá ser controlada por três loopings e assim sucessivamente.

Em matrizes de mais de uma dimensão os seus elementos são também manipulados de forma individual, sendo a referência feita sempre por meio de dois índices: o primeiro para indicar a linha e o segundo para indicar a coluna. Desta forma, TABELA[2,3], indica que está sendo feita a referência ao elemento armazenado na linha 2 coluna 3. Pode-se considerar que uma matriz com mais de uma dimensão é também um vetor,sendo válido para este tipo de matriz tudo o que já foi utilizado anteriormente para as matrizes de uma dimensão.



Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;

domingo, 10 de agosto de 2008

Programa prometido na última postagem

Atente para o detalhe das instruções enquanto encadeadas. Lembre-se de que no caso de encadeamento, será executada primeiro a rotina mais interna, no caso a rotina de contagem da variável J, passando o processamento para a rotina mais externa, quando a rotina mais interna fechar o seu ciclo.


Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;

quinta-feira, 7 de agosto de 2008

Continuação de Classificação de Elementos

Mostraremos agora como ordenar os 20 nomes do programa da penúltima postagem, atente para dois pontos:
O primeiro a ser observado é a utilização de uma segunda variável para controlar o índice subseqüente no processo de ordenação, no caso a variável J.Observe que a variável I é iniciada pela instrução enquanto com I = 1, e no segundo pela instrução enquanto que está sendo encadeada à primeira e iniciando a variável J, como J = I +1. Isto implica no seguinte:


Observe que somente quando a variável J atinge o valor 20 é que este looping se encerra, retomando ao looping da variável I, acrescentando mais um em I até que I atinja o seu limite e ambos os looping sejam encerrados.

O segundo ponto a ser observado é o fato da utilização do algoritmo de troca, utilizando junto da instrução de decisão se NOME [I] > NOME [J] então. Após a verificação desta condição sendo o primeiro nome maior que o segundo, efetua-se então a sua troca com o algoritmo:


Considere o vetor NOME [I] com o valor "CARLOS" e o vetor NOME [J] com o valor "ALBERTO". Ao final NOME [I] deverá estar com "ALBERTO" e NOME [J] deverá estar com "CARLOS". Para se conseguir este efeito é necessária a utilização de uma variável de apoio, a qual será chamada X.

Para que o vetor NOME [I] fique livre para receber o valor NOME [J], X deverá ser implicado pelo valor do vetor NOME [I], assim sendo X passa a ser "CARLOS". Neste momento pode-se implicar o valor de NOME [J] em NOME [I]. Desta forma o vetor NOME [I] passa a possuir o valor "ALBERTO". Em seguida o vetor NOME [J] é implicado pelo valor que está em X. Ao final deste processo, ter-se-á NOME [I] com "ALBERTO" e NOME [J] com "CARLOS".

Para ficar o suspense esse programa só será mostrado (em Portugol) na próxima postagem.

Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;

terça-feira, 5 de agosto de 2008

Classificação dos Elementos de uma Matriz

Como foi dito na última postagem, um programa fica mais bem organizado quando seus elementos são ordenados, para o conforto de quem procura achar algum elemento em específico.


Existem vários métodos para se obter a ordenação de elementos de uma matriz. Uma forma bem simples é a de ordenação que consiste na comparação de cada elemento com todos os elementos subseqüentes existentes depois dele. Sendo o elemento comparado menor para ordenação decrescente, ou maior para ordenação crescente com o atual, este será trocado de posição com o outro. A ordenação alfabética é crescente de "A" até "Z".


Para exemplificar vamos partir de um problema pequeno: "Colocar em ordem crescente uma sequência de 3 números dados que são A[1] = 9,A[2] = 8,A[3] = 7; eles deverão ser apresentados assim 7,8,9.


Para efetuar o processo de troca é necessário aplicar o método de propriedade distributiva, sendo assim, o elemento que estiver em A[1] deverá ser comparado com os elementos que estiverem em A[2] e A[3]. Depois o elemento que estiver em A[2] não necessita ser comparado com o elemento que estiver em A[1], pois já foram anteriormente comparados, passando a ser comparado somente com o elemento que estiver em A[3].


No exemplo isso acontecerá da seguinte forma: na primeira comparação 9 troca de lugar com 8 por ser maior, daí a sequência fica 8,9,7; depois 8 é comparado com 7 e novamente trocam de lugar, pois 8 é maior que 7, então fica 7,9,8; agora 9 é comparado com 8 e como é maior troca de posição e a sequência fica 7,8,9 como esperado.


Na próxima postagem será mostrado como ordenar os elementos do programa da relação de 20 nomes, vindo como demonstração o programa em Portugol.

Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;

domingo, 3 de agosto de 2008

Aplicação Prática do Uso do Vetor

A utilização de matrizes em programação é bastante ampla. Podem ser utilizadas em diversas situações, tornando útil e versátil esta técnica de programação. Para se ter uma idéia, considere o seguinte programa: "Criar um programa que efetue a leitura dos nomes de 20 pessoas e em seguida apresentá-los na mesma ordem em que foram informados".
Esse programa ficará mais ou menos assim:

Esse programa ficaria bem melhor se antes de apresentar os nomes ele efetuasse o processamento da classificação alfabética, apresentando os nomes em ordem, independentemente daquela que foram informados, facilitando desta forma a localização de algum nome, quando for efetuada uma pesquisa visual. Na próxima postagem indicaremos como isso pode ser realizado.

Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;

Escrita de Dados de uma Matriz

O processo de escrita de uma matriz é bastante parecido com o processo de leitura de seus elementos. Para esta ocorrência deverá ser utilizada a instrução 'imprima' seguida da indicação da variável e seu índice. Supondo que após a leitura das 8 notas (programa média de notas), houvesse a necessidade de apresentá-las antes da apresentação do valor da média.

Abaixo é apresentado como ficaria o programa da escrita das notas dos 8 alunos antes de ser apresentado o cálculo da média:
Fonte : MANZANO, José Augusto N. G. e OLIVEIRA , Jayr Figueiredo. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores.São Paulo:Érica.2000;