matrizes_1aSerie_2013_VisualG

9
Curso Técnico em Informática 52 Tabelas em Memória Vamos agora estudar uma técnica de programação que permitirá trabalhar com o agrupamento de várias informações dentro de uma mesma variável. Vale salientar que este agrupamento ocorrerá obedecendo sempre ao mesmo tipo de dado. O tipo de dado homogêneo recebe diversos outros nomes, tais como: variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays. A denominação mais comum, no entanto, é a utilização do termo matriz. As matrizes (tabelas em memória) são tipos de dados que podem ser “construídos” a medida que se fazem necessários, pois não é sempre que os tipos básicos (real, inteiro, caractere e lógico) e/ou variáveis simples são suficientes para representar a estrutura de dados utilizada em um programa. Matrizes de uma Dimensão ou Vetores Esse tipo de estrutura, em particular, é também denominado por alguns profissionais como matrizes unidimensionais. Sua utilização mais comum está vinculada à criação de tabelas. Caracteriza-se por ser definida uma única variável dimensionada com um determinado tamanho. A dimensão de uma matriz é construída por constantes inteiras e positivas. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados em variáveis simples. Para se ter uma ideia de como utilizar matrizes em uma determinada situação, considera o seguinte problema: “Calcular e apresentar a média geral de uma turma de 8 alunos. A média a ser obtida deve ser a media geral das médias de cada aluno obtida durante o ano letivo”. Desta forma, será necessário somar todas as médias e dividi-las por 8. A tabela a seguir, apresenta o numero de alunos, suas notas bimestrais e respectivas médias anuais. É da média de cada aluno que será efetuado o cálculo da média da turma. Aluno Nota 1 Nota 2 Nota 3 Nota 4 Média 1 4,0 6,0 5,0 3,0 4,5 2 6,0 7,0 5,0 8,0 6,5 3 9,0 8,0 9,0 6,0 8,0 4 3,0 5,0 4,0 2,0 3,5 5 4,0 6,0 6,0 8,0 6,0 6 7,0 7,0 7,0 7,0 7,0 7 8,0 7,0 6,0 5,0 6,5 8 6,0 7,0 2,0 9,0 6,0 Agora basta escrever um programa para efetuar o cálculo das 8 médias. Para representar a média do primeiro aluno será utilizada a variável MD1, para o segundo MD2, e assim por diante: MD1 = 4.5 MD2 = 6.5 MD3 = 8.0 MD4 = 3.5 MD5 = 6.0 MD6 = 7.0 MD7 = 6.5 MD8 = 6.0 Com o conhecimento adquirido até aqui, seria então elaborado um programa que efetuaria a leitura de cada nota, a soma das mesmas e a divisão do valor da soma por 8, obtendo-se desta forma a média, conforme exemplo abaixo:

Transcript of matrizes_1aSerie_2013_VisualG

Page 1: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

52

Tabelas em Memória Vamos agora estudar uma técnica de programação que permitirá trabalhar com o agrupamento de várias

informações dentro de uma mesma variável. Vale salientar que este agrupamento ocorrerá obedecendo sempre

ao mesmo tipo de dado.

O tipo de dado homogêneo recebe diversos outros nomes, tais como: variáveis indexadas, variáveis

compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays. A denominação mais

comum, no entanto, é a utilização do termo matriz.

As matrizes (tabelas em memória) são tipos de dados que podem ser “construídos” a medida que se

fazem necessários, pois não é sempre que os tipos básicos (real, inteiro, caractere e lógico) e/ou variáveis simples

são suficientes para representar a estrutura de dados utilizada em um programa.

Matrizes de uma Dimensão ou Vetores

Esse tipo de estrutura, em particular, é também denominado por alguns profissionais como matrizes

unidimensionais. Sua utilização mais comum está vinculada à criação de tabelas. Caracteriza-se por ser definida

uma única variável dimensionada com um determinado tamanho. A dimensão de uma matriz é construída por

constantes inteiras e positivas. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados em

variáveis simples.

Para se ter uma ideia de como utilizar matrizes em uma determinada situação, considera o seguinte

problema: “Calcular e apresentar a média geral de uma turma de 8 alunos. A média a ser obtida deve ser a media

geral das médias de cada aluno obtida durante o ano letivo”. Desta forma, será necessário somar todas as médias

e dividi-las por 8. A tabela a seguir, apresenta o numero de alunos, suas notas bimestrais e respectivas médias

anuais. É da média de cada aluno que será efetuado o cálculo da média da turma.

Aluno Nota 1 Nota 2 Nota 3 Nota 4 Média

1 4,0 6,0 5,0 3,0 4,5

2 6,0 7,0 5,0 8,0 6,5

3 9,0 8,0 9,0 6,0 8,0

4 3,0 5,0 4,0 2,0 3,5

5 4,0 6,0 6,0 8,0 6,0

6 7,0 7,0 7,0 7,0 7,0

7 8,0 7,0 6,0 5,0 6,5

8 6,0 7,0 2,0 9,0 6,0

Agora basta escrever um programa para efetuar o cálculo das 8 médias. Para representar a média do

primeiro aluno será utilizada a variável MD1, para o segundo MD2, e assim por diante:

MD1 = 4.5

MD2 = 6.5

MD3 = 8.0

MD4 = 3.5

MD5 = 6.0

MD6 = 7.0

MD7 = 6.5

MD8 = 6.0

Com o conhecimento adquirido até aqui, seria então elaborado um programa que efetuaria a leitura de

cada nota, a soma das mesmas e a divisão do valor da soma por 8, obtendo-se desta forma a média, conforme

exemplo abaixo:

Page 2: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

53

Perceba que para receber a média foram utilizadas 8 variáveis. Com a técnica de matrizes poderá ser

utilizada apenas uma variável com a capacidade de armazenar 8 valores.

Operações com Matrizes do Tipo Vetor

Uma matriz com apenas uma coluna (linha vertical) é chamada de vetor. É representada por seu nome,

tamanho (dimensão) entre colchetes e seu tipo, tendo assim, a seguinte sintaxe:

<Identificador>: vetor [<tamanho>] de <tipo>

Tamanho [VI..VF] � VI = valor inicial do índice e VF = valor final do índice

Onde:

<identificador> - nome atribuído à matriz

<tipo> - é o tipo de elemento armazenado (inteiro, real, etc.)

No caso do exemplo anterior, onde se calculava a média de uma turma com 8 alunos, para armazenar a

média dos 8 alunos poderíamos declarar um vetor como:

MD : vetor [ 1..8] de REAL

Assim seriam criadas 8 variáveis em memória, conforme segue:

MD[1]

MD[2]

MD[3]

MD[4]

MD[5]

MD[6]

MD[7]

MD[8]

Observe que o nome é um só, o que muda é a informação indicada dentro dos colchetes. Nosso programa

ficaria, então, da seguinte forma:

Page 3: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

54

É bastante comum percorrer os elementos de um vetor – seja na atribuição de um valor a elemento do

mesmo, seja através da leitura do valor contido nesse elemento – através de uma estrutura de repetição

(enquanto... faca, repita... ate, para... faca).

Exemplo 1: Vamos utilizar a estrutura de repetição para o exemplo anterior, que lia 8 médias dos alunos de uma

turma e calcula a média geral da turma.

Exercício Proposto

Desenvolva o exemplo 1 com as estruturas repita... ate e para... faca.

Exemplo 2: Desenvolver 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 índice for par, o valor deverá ser

multiplicado por 5; sendo ímpar deverá ser somado com 5. Ao final, mostrar os conteúdos das duas matrizes.

Algoritmo

1. Iniciar o contador do índice, variável I com 1 em um contador até 10;

Page 4: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

55

2. Ler os 10 valores, um a um.

3. Verificar se o índice é par, se sim, multiplicar por 5, se não, soma 5. Criar a matriz B;

4. Apresentar o conteúdo das duas matrizes.

Exemplo 3: Desenvolver um programa que efetue a leitura de 5 elementos da matriz A do tipo vetor. No final,

apresente a soma de todos os elementos que sejam ímpares.

Algoritmo

1. Iniciar o contador de índice, variável I como 1 em um contador até 5;

2. Ler os 5 valores, um a um;

3. Verificar se o elemento é impar, se sim, efetuar a soma dos elementos;

4. Apresentar o total somado de todos os elementos ímpares da matriz.

Page 5: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

56

Observe que, diferente do exemplo 2, verificamos se o elemento – e não o índice – do vetor é ímpar.

Verifique atentamente a diferença entre a linha 11 do programa deste exemplo, com a linha 14 do programa do

exemplo 2.

Leitura de uma lista de nomes

A utilização de matrizes em programação é bastante ampla. Podem ser utilizada em diversas situações,

tornando bastante útil e versátil esta técnica de programação. Para se ter uma outra ideia, considere um

programa que necessite ler e apresentar o nome de 10 pessoas. O programa em questão fará a leitura e em

seguida o nome de 10 pessoas.

Page 6: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

57

Exercícios

Elaborar os seguintes programas utilizando a linguagem de programação Java:

84. Ler 10 elementos de uma matriz tipo vetor.

85. Ler 8 elementos em uma matriz A do tipo vetor. Construir uma matriz B de mesma dimensão com os

elementos da matriz A multiplicados por 3. Apresentar a matriz B.

86. Ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B de mesmo tipo, sendo que cada

elemento da matriz B seja a fatorial do elemento correspondente da matriz A.

87. Ler duas matrizes A e B do tipo vetor com 20 elementos. 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.

88. 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.

89. 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 da matriz A deverá ser o quadrado do elemento A correspondente.

90. 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

elemento de B, o segundo elemento de A passa a ser o penúltimo de B e assim por diante. Apresentar as duas

matrizes.

91. Ler 12 elementos de uma matriz A tipo vetor coloca-los em ordem decrescente e apresentar os elementos

ordenados.

92. Ler 8 elementos de uma matriz A tipo vetor. Construir uma matriz B de mesma dimensão com os elementos

da matriz multiplicados por 5.

93. Ler uma matriz A do tipo vetor 15 elementos. Construir uma matriz B de mesmo tipo, sendo que cada

elemento da matriz B seja a fatorial do elemento correspondente da matriz A. Apresentar os elementos da matriz

B ordenados de forma crescente.

94. Ler uma matriz A com 12 elementos. Após sua leitura, colocar os seus elementos em ordem crescente. Depois

ler uma matriz B também com 12 elementos, colocar os elementos de B em ordem crescente. Depois ler uma

matriz B também com 12 elementos, colocar os elementos de B em ordem crescente. Construir uma matriz C,

onde cada elemento de C é a soma do elemento correspondente de A com B. Colocar em ordem crescente a

matriz C e apresentar seus valores.

Page 7: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

58

95. 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 os elementos da matriz C em ordem decrescente.

96. Ler 30 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 cubo do elemento de A correspondente.

97. Ler 20 elementos de uma matriz A do tipo vetor e construir uma matriz B de mesma dimensão com os

mesmos elementos de A acrescentados de mais 2.

Matrizes com mais de uma dimensão

Com o conhecimento adquirido até este ponto, você teria condições suficientes para 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 de matrizes unidimensionais. Porém, há de se considerar que o trabalho

seria grande, uma vez que se necessitaria manter um controle de cada índice em cada matriz para um mesmo

aluno.

Para facilitar o trabalho com estruturas deste porte é que serão utilizadas matrizes com mais dimensões.

A mais comum é a matriz de duas dimensões por se relacionar diretamente com a utilização de tabelas. Matrizes

com mais de duas dimensões são utilizadas com menos frequência, mas poderão ocorrer momentos em que se

necessite trabalhar com um número maior de dimensões, porém estas serão fáceis de ser utilizadas se você

dominar bem a utilização de uma matriz com duas dimensões.

Em matrizes de mais de uma dimensão, os seus elementos serão também manipulados de forma

individualizada, sendo a referência feita sempre através de dois índices: o primeiro indica a linha, o segundo

indica a coluna. Dessa forma, TABELA[2,3] indica que está sendo feita uma 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 que foi utilizado anteriormente para as matrizes de uma dimensão.

Operações com Matrizes de Duas Dimensões

Uma matriz de duas dimensões estará sempre fazendo menção a linhas e colunas e será representa por

seu nome e seu tamanho (dimensão) entre colchetes. Desta forma, seria uma matriz de duas dimensões

TABELA[1..8,1..5], onde seu nome é TABELA, possuindo um tamanho de 8 linhas (de 1 a 8) e 5 colunas (de 1 a 5),

ou seja, é uma matriz de 8 por 5 (8 x 5). Isto significa que poderão ser armazenados em uma TABELA até 40

elementos. A fig. 6.1 apresenta a matriz TABELA com a indicação dos endereços (posições) que poderão ser

utilizados para armazenamento de seus elementos.

Coluna 1 Coluna 2 Coluna 3 Coluna 4 Coluna 5

Linha 1 TABELA[1,1] TABELA[1,2] TABELA[1,3] TABELA[1,4] TABELA[1,5]

Linha 2

Linha 3

Linha 4

Linha 5 TABELA[5,4]

Linha 6

Linha 7

Linha 8 TABELA[8,5]

Uma matriz de duas dimensões é atribuída de forma semelhante à atribuição de uma matriz de uma

dimensão, sendo representada pelo seu nome, tamanho (dimensão de linhas e colunas) entre colchetes e seu

tipo, tendo assim, a seguinte sintaxe:

Page 8: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

59

<Identificador>: vetor [<dimensão linha>,<dimensão coluna>] de <tipo>

Tamanho [VI..VF] � VI = valor inicial do índice e VF = valor final do índice

Onde:

<identificador> - nome atribuído à matriz

<dimensão linha> - o tamanho da matriz, em número de linhas

<dimensão coluna> - o tamanho da matriz, em número de colunas

<tipo> - é o tipo de elemento armazenado (inteiro, real, etc.)

Exemplo 1: Considere o programa para entrada e saída de notas escolares. A leitura de uma matriz de duas

dimensões, assim como as matrizes de uma dimensão, é processada passo a passo.

Escreva um programa que leia 2 notas de 5 alunos. A tabela em questão conterá 10 elementos. Um

detalhe a ser considerado é a utilização de duas variáveis para controlar os dois índices de posicionamento de

dados na tabela.

Nota 1 (Coluna 1) Nota 2 (Coluna 2)

Aluno 1 (linha 1) (1,1) (1,2)

Aluno 2 (linha 2) (2,1) (2,2)

Aluno 3 (linha 3) (3,1) (3,2)

Aluno 4 (linha 4) (4,1) (4,2)

Aluno 5 (linha 5) (5,1) (5,2)

Vejamos o programa escrito no Visualg:

Exemplo 2: Escreva um programa que simule uma agenda telefônica. Esse programa deve ler o nome e o telefone

de 5 amigos seus.

Page 9: matrizes_1aSerie_2013_VisualG

Curso Técnico em Informática

60

Exercícios

98. Ler duas matrizes A e B, cada uma de duas dimensões com 5 linhas e 3 colunas. Construir uma matriz C de

mesma dimensão, onde C é formada pela soma dos elementos da matriz A com os elementos da matriz B.

Apresentar os valores da matriz C.

99. Ler duas matrizes A e B, cada uma com uma dimensão de 7 elementos. Construir a matriz C de duas

dimensões, onde a primeira coluna deverá ser formada pelos elementos da matriz A, e a segunda coluna deverá

ser formada pelos elementos da matriz B.

100. Ler 20 elementos para uma matriz qualquer, considerando que esta matriz tenha o tamanho de 4 linhas por

5 colunas.

101. Ler uma matriz A de uma dimensão com 10 elementos. Construir uma matriz B de duas dimensões com três

colunas, onde a primeira coluna da matriz B é formada pelos elementos da matriz A somados com mais 5, a

segunda coluna é formada pelo valor do cálculo da fatorial de cada elemento correspondente da matriz A e a

terceira e última coluna deverá ser formada pelos quadrados dos elementos correspondentes da matriz A.

102. Ler duas matrizes A e B, cada uma com dimensão para 12 elementos. Construir uma matriz C de duas

dimensões, onde a primeira coluna da matriz C deverá ser formada pelos elementos da matriz A multiplicados por

2 e a segunda coluna deverá ser formada peles elementos da matriz B subtraídos de 5.