Introdução às Estruturas de Dados/Vetores e Matrizes
De Wikiversidade
Índice |
[editar] Vetor (Array)
Em computação um Vetor (Array) ou Arranjo é o nome de uma matriz unidimensional considerada a mais simples das estruturas de dados. Geralmente é constituída por dados do mesmo tipo (homogêneos)e tamanho que são agrupados continuamente na memória e acessados por sua posição (indíce - geralmente um número inteiro) dentro do vetor. Na sua inicialização determina-se o seu tamanho que geralmente não se modifica mesmo que utilizemos menos elementos do que determinado à príncipio.
Abaixo temos o exemplo de um vetor. Os valores internos seriam os dados alocados no vetor , enquanto seu tamanho é dado pelo número de casas disponíveis (no caso 8) e o índice representa a posição do dado no vetor ( por exemplo podemos definir que 0 tem o índice 1, 2 tem índice 2, 8 tem índice 3 e assim sucessivamente).
| 0 | 2 | 8 | 9 | 10 | 11 | 15 | 18 |
- Declaração e inicialização de um vetor
A declaração de um vetor em português estruturado pode ser da seguinte forma:
Nome_Vetor:vetor[tamanho]tipo
Assim temos como exemplo de declarações:
VECTOR:vetor [10] numérico
MEDIA: vetor [3] numérico
Tomemos o primeiro exemplo (inteiro vector [10]) onde declaramos que estamos criando um vetor para números chamado de VECTOR com dez posições. Desta forma o computador entende que deve alocar 10 espaços para 10 números inteiros no computador que serão inseridos conforme especificado pelo programa . Por exemplo, vamos construir dois laços de repetição:
VECTOR:vetor [10] numérico
INDICE:numérico
INDICE<-0
para INDICE de 0 até VECTOR<9 passo 1 faça
exibe Escreva um número
recebe VECTOR [INDICE]
fecha_para
para INDICE de 0 até VECTOR<9 passo 1 faça
exibeVECTOR [INDICE]
recebe VECTOR [INDICE]
fecha_para
Conforme vimos, o primeiro laço para vai entender que ao entrar índice<-0 , quando o usuário digitar o primeiro valor será alocado este valor em vector[índice].Quando chegar ao final do para ele fará o teste. Se o índice continuar menor do que 10 ele entra no laço e recebe o segundo valor, chegando ao final do laço e fazendo novamente o processo até obter os dez valores quando sai do laço.
No segundo laço acessamos estes dados e exibimos na tela aplicando o mesmo príncipio do primeiro laço.
[editar] Operações com Vetores
Podemos trabalhar com vetores numéricos, executando operações sobre eles da mesma forma como executaríamos com variáveis numéricas comuns. Devemos assumir que ao declararmos um determinado vetor[índice], com um índice específico, estamos fazendo referência à um número.
[editar] Matrizes
Matrizes são arranjos ordenados que ao contrário dos vetores podem ter n dimensões, sendo que estas dimensões lhes dão o nome n-dimensional . Uma matriz de duas dimensões será chamada bi-dimensional, uma de três dimensões tri-dimensional e assim consecutivamente. Funciona praticamente da mesma forma que um vetor exceto que utilizaremos o número n de índices para acessar um dado que queremos. Para efeitos de estudo por enquanto nos limitaremos somente às matrizes bidimensionais (duas dimensões linha X colunas). Assim se possuimos uma matriz bidimensional de duas linhas e duas colunas:
3 4
5 6
Consideramos que para acessarmos o valor 3, localizamos o índice por sua linha (1) e coluna (1) , deste modo seu índice é (1,1). O valor quatro por exemplo será (1, 2).
- Declaração e inicialização de um matriz
A declaração de uma matriz em português estruturado pode ser da seguinte forma:
-
-
-
-
-
-
-
-
-
-
-
- tipo Nome_Matriz [tamanho_linha][tamanho_coluna]
-
-
-
-
-
-
-
-
-
-
Assim temos como exemplo de declarações:
inteiro matrix [10][10]
real media [3][3]
Em uma matriz como o inteiro matrix que criamos acima é criado espaço para 100 elementos (10x10).Criaremos abaixo um algoritmo em que o usuário digita 100 elementos e estes aparecem na tela.
-
-
-
-
-
-
-
-
-
-
- inteiro matrix [10][10]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro i , j (i será o índice linha e j o índice coluna)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<10 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<10 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- exibe Escreva um número
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- recebe matriz [i][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fecha_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fecha_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<10 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<10 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- exibe Estes são os números digitados:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- exibe matriz [i][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fecha_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fecha_para
-
-
-
-
-
-
-
-
-
-
-
-
[editar] Operações com matrizes
[editar] Soma e subtração entre matrizes
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_A [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_B [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_soma [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<2 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<10 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- matriz_soma[i][j]= matriz_A [i][j]+ matriz_B [i][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
[editar] Multiplicação por um escalar
-
-
-
-
-
-
-
-
-
-
- inteiro escalar
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_A [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_multiplicacao [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<2 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<2 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- matriz_multiplicacao[i][j]= escalar * matriz_B [i][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
[editar] Multiplicação entre matrizes
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_A [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_B [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_multiplicacao [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<2 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<2 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: k=0 fim k<2 alteraçãok+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- matriz_multiplicacao[i][j]= matriz_multiplicacao [i][j]+ matriz_A [i][k]*matriz_B[k][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
[editar] Calcular a diagonal e a transposta
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_A [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro diagonal=0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<2 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<10 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- se (i=j)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- diagonal= diagonal+ matriz_A [i][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_se
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro matriz_A [2][2]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro inversa=0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inteiro maximo=2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: i=0 fim i<2 alteraçãoi+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- para (início: j=0 fim j<2 alteraçãoj+1 )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- se (i+j=(maximo*2)-1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- inversa= inversa + matriz_A [i][j]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_se
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- fim_para
-
-
-
-
-
-
-
-
-
-
-
-
[editar] Resumo
[editar] Exercícios
Receber dez valores inteiros e positivos no vetor A.Costruir um vetor B com os elementos do vetor A negativos . Apresentar os elementos dos dois vetore