PROF. MARCIO FERREIRA DE JESUS 1
MODULO 4
7. ESTRTUTURAS DE DADOS HOMEGENIAS... 2
7.1 MATRIZES DE UMA DIMENSÃO OU VETORES ... 2
7.2 MATRIZ DE UMA DIMENSÃO OU VETORES ... 2
7.2.1 CRIANDO A MATRIZ NA ÁREA DE VARIÁVEIS ... 2
7.3 ESCRITA DE DADOS DE UMA MATRIZ ... 3
7.4 CLASSIFICAÇÃO DOS ELEMENTOS DE UMA MATRIZ ... 5
PROF. MARCIO FERREIRA DE JESUS 2
7 - ESTRUTURAS DE DADOS HOMOGÊNIAS
7.1 - MATRIZES DE UMA DIMENSAO OU VETORES
Também denominado por alguns profissionais como matrizes unidimensionais. Sua utilização esta vinculada a criação de tabelas. Caracteriza-se por ser definida uma única variável dimensionada com um determinado tamanho. A dimensão de uma matriz e constituída por constantes inteiras e positivas. Os nomes dados as matrizes seguem as mesmas regras de nomes utilizados para indicar as variáveis simples.
Exemplo:
Criar um algoritmo para calcular a media de 8 notas de um aluno. ALGORITMO MEDIA_TURMA
VAR
NT1,NT2,NT3,NT4,NT5,NT5,NT6,NT7,NT8,MEDIA:REAL INCIO
ESCREVA “Digite a primeira nota:”;LEIA NT1 ESCREVA “Digite a segunda nota:”;LEIA NT2 ESCREVA “Digite a terceira nota:”;LEIA NT3 ESCREVA “Digite a quarta nota:”;LEIA NT4 ESCREVA “Digite a quinta nota:”;LEIA NT5 ESCREVA “Digite a sexta nota:”;LEIA NT6 ESCREVA “Digite a setima nota:”;LEIA NT67 ESCREVA “Digite a oitava nota:”;LEIA NT8
MEDIA ← (NT1 + NT2 + NT3 + NT4 + NT5 + NT6 + NT7 + NT8 ) 8 ESCREVA “A Media do aluno e:”,MEDIA
FIM
7.2 - MATRIZ DE UMA DIMENSAO OU VETORES
7.2.1 - CRIANDO A MATRIZ NA ÁREA DE VARIÁVEIS:
VAR
MD:CONJUNTO[1..8] DE REAL
<matriz>:CONJUNTO[dimensão] DE <tipo de dado> ONDE:
<matriz> - o nome atribuído a matriz
<dimensão> - o tamanho da matriz, em numero de elementos <tipo de dado> - o tipo de elemento armazenado (inteiro, real, etc..)
PROF. MARCIO FERREIRA DE JESUS 3 Em Pascal
MD:ARRAY[1..8] OF REAL;
Vamos criar o mesmo programa agora utilizando matriz de uma dimensão. ALGORITMO MEDIA_TURMA VAR MD:CONJUNTO[1..8] DE REAL SOMA,MEDIA:REAL I:INTEIRO INICIO
PARA I DE 1 ATE 8 FACA
ESCREVA “Digite a “,I,”a NOTA DO ALUNO:”;LEIA MD[I] SOMA ← SOMA + MD[I]
FIM-PARA
MEDIA ← SOMA / 8
ESCREVA “A Media do aluno e:”,MEDIA FIM
Veja que o programa ficou mais compacto, alem de possibilitar uma mobilidade maior, pois se houver a necessidade de efetuar o calculo para um numero maior de notas basta dimensionar a matriz e mudar o valor final da instrução PARA. Observe que no exemplo acima, a leitura e processada uma por vez. Desta forma, a matriz e controlada pelo numero do índice que faz com que cada entrada aconteça um uma posição diferente da outra. Assim sendo, a matriz passa a Ter todas as notas. A tabela a seguir, mostra como ficarão os valores armazenados na matriz:
Matriz MD INDICE ELEMENTO 1 4,5 2 6,5 3 8,0 4 3,4 5 6,0 6 7,0 7 6,5 8 6,0
Tem cuidado para não confundir o índice com o elemento. Índice e o endereço de alocação de uma unidade da matriz, enquanto elemento e o conteúdo armazenado em um determinado endereço.
7.3 - ESCRITA DOS DADOS DE UMA MATRIZ
O processo de escrita e bastante parecido com o processo de leitura de seus elementos. Para esta ocorrência devera ser utilizada a instrução ESCREVA seguida da indicação da variável e seu índice. Supondo que após a leitura das 8 notas, houvesse a necessidade de apresentar cada nota?
PROF. MARCIO FERREIRA DE JESUS 4 ALGORITMO MEDIA_TURMA VAR MD:CONJUNTO[1..8] DE REAL SOMA,MEDIA:REAL I:INTEIRO INICIO
PARA I DE 1 ATE 8 FACA
ESCREVA “Digite a “,I,”a NOTA DO ALUNO:”;LEIA MD[I] SOMA ← SOMA + MD[I]
FIM-PARA
MEDIA ← SOMA / 8 PARA I DE 1 ATE 8 FACA
ESCREVA “As notas são:”,MD[I] FIM-PARA
ESCREVA “A Media do aluno e:”,MEDIA FIM
Criar um programa que efetue a leitura de 10 elementos de uma matriz A tipo vetor. Construir uma matriz B de mesmo tipo, observando a seguinte lei de formação: Se o valor do índice for par, o valor devera ser multiplicado por 5, sendo impar devera ser somado com 5. Ao final mostrar os conteúdos das duas matrizes.
ALGORITMO INDICE_PAR_OU_IMPAR VAR A,B:CONJUNTO[1..10] DE REAL I:INTEIRO INICIO
PARA I DE 1 ATE 10 FACA
ESCREVA “Digite o “,I,”o VALOR DA MATRIZ:”;LEIA A[I] FIM-PARA
PARA I DE 1 ATE 10 FACA SE (I MOD 2) = 0 ENTÃO B[I] ← A[I] * 5 SENÃO B[I] ← A[I] + 5 FIM-SE FIM-PARA
PARA I DE 1 ATE 10 FAÇA
ESCREVA “O conteúdo da 1a. matriz é:”,A[I], “O conteúdo da segunda matriz é:”,B[I] FIM-PARA
FIM
Criar um algoritmo para ler 20 nomes, ao final da leitura liste os 20 nomes. ALGORITMO LISTA_NOMES
VAR
NOME:CONJUNTO[1..20] DE TEXTO I:INTEIRO
PROF. MARCIO FERREIRA DE JESUS 5 INICIO
PARA I DE 1 ATE 20 FAÇA
ESCREVA “Digite o “,I,”º NOME:”;LEIA NOME[I] FIM-PARA
PARA I DE 1 ATE 20 FAÇA
ESCREVA “O nome é:”,NOME[I] FIM-PARA
FIM
7.4 - CLASSIFICAÇÃO DOS ELEMENTOS DE UMA MATRIZ
Tendo feito o programa anterior séria muito útil que antes de apresentá-los, o programa efetuasse o processamento da classificação alfabética, apresentando os nomes em ordem independente daquela em que foram informados, facilitando desta forma a localização de algum nome, quando for efetuada uma pesquisa visual.
Existem vários métodos para se obter ordenação de elementos de uma matriz. Vamos observar um método muito simples. Este método de ordenação 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 que o atual, este será trocado de posição com o outro. A ordenação considerada é alfabética, devendo esta ser crescente, ou seja de A até Z.
Vamos supor a tabela abaixo:
QUANDO I FOR J SERÁ
1 2,3,4,5,6,7,8,9...20 2 3,4,5,6,7,8,9...20 3 4,5,6,7,8,9...20 4 5,6,7,8,9...20 5 6,7,8,9...20 6 7,8,9...20 7 8,9...20 8 9...20 .. ....,20 19 20
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 para como Ide 1, e no segundo pela instrução para que está sendo encadeada à primeira e iniciando a variável J como J de I + 1. Isto implica na segunda seqüência, observe que somente quando a variável J atinge o valor de 20 é que este looping se encerra, retornando ao looping da variável I, acrescentando mais um em I até que atinja o seu limite e ambos os looping sejam encerrados.
Quando a variável I for 1, a variável J será 2 e contará até 20. Ao final deste ciclo, a variável I é acrescentada de mais 1 tornando-se 2, assim sendo a variável J passa a ser 3. Quando a variável J voltar a ser 20 novamente, a variável I passa a ser 3 e a variável J passa a ser 4. Este ciclo irá ser executado até que por fim a variável I seja 19 e a variável J seja 20, onde será comparado o penúltimo elemento com o seu elemento subseqüente, no caso, o último.
PROF. MARCIO FERREIRA DE JESUS 6 O segundo ponto a ser observado é o fato da utilização do algoritmo de troca, utilizado junto da instrução de decisão, conforme observado abaixo:
X ← NOME[I]
NOME[I] ← NOME[J] NOME[J] ← X
Vamos refazer o algoritmo anterior, ordenando os nomes e imprimindo a matriz ordenada. ALGORITMO LISTA_NOME_ORDENADA VAR NOME:CONJUNTO[1..20] DE TEXTO I,J:INTEIRO X: TEXTO INICIO
{Rotina de entrada de Dados} PARA I DE 1 ATE 20 FAÇA
ESCREVA “Digite o “,I,”º NOME:”;LEIA NOME[I] FIM-PARA
{Rotina de processamento de ordenação} PARA I DE 1 ATE 19 FAÇA
PARA J DE I + 1 ATE 20 FAÇA SE (NOME[I] > NOME[J] ENTÃO X ← NOME[I] NOME[I] ← NOME[J] NOME[J] ← X FIM-SE FIM-PARA FIM-PARA
{Rotina de saída com dados ordenados} PARA I DE 1 ATE 20 FAÇA
ESCREVA “O nome é:”,NOME[I] FIM-PARA
PROF. MARCIO FERREIRA DE JESUS 7
7.5 - EXERCÍCIOS
1 – Criar um algoritmo para ler dez elementos de matriz. Imprima os dez elementos.
2 – Criar um algoritmo para ler oito elementos de uma matriz A, construir uma matriz B de mesma dimensão com os elementos da matriz A multiplicados por 3. Apresentar a matriz B
3 – Criar um algoritmo para ler duas matrizes A e B com vinte elementos. Construir uma matriz C, onde cada elemento de C é a subtração do elemento corresponde de A com B, atenção não poderá existir resultados negativos.
4 – Criar um algoritmo para ler duas matrizes A e B com quinze elementos cada. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá ter o dobro de elementos de A e B.
5 – Criar um algoritmo par ler 8 elementos de uma matriz, colocá-los em ordem decrescente e apresenta os elementos ordenados.
6 – Ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma dimensão com os mesmos elementos de A, sendo que estes deverão estar invertidos, ou seja, o primeiro elemento de A passa a ser o último de B, o segundo elemento de A passa a ser o penúltimo de B e assim por diante. Apresentar as matrizes A e B.
7 – Ler 15 elementos de uma matriz A do tipo vetor. Construir uma matriz B de mesmo tipo, observando a seguinte lei de formação: “Todo elemento de B deverá ser o quadrado do elemento de A correspondente”. Apresentar a matriz B.
8 – Ler duas matrizes do tipo vetor A com 20 elementos e B com 30 elementos. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá ter a capacidade de armazenar 50 elementos. Apresentar a matriz C.
9 - Ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B do mesmo tipo, sendo que cada elemento de matriz B seja o fatorial do elemento correspondente da matriz A . Apresentar a matriz B.