Matrizes e Vetores
Introdu��oUma matriz � uma cole��o de vari�veis de mesmo tipo, acess�veis com um �nico nome e armazenados contiguamente na mem�ria. A individualiza��o de cada vari�vel de um vetor � feita atrav�s do uso de �ndices. Os Vetores s�o matrizes de uma s� dimens�o. Declara��o de Matrizesint Vetor[5]; // declara um vetor de 5 posi��es int Matriz[5][3]; // declara uma matriz de 5 linhas e 3 colunas Acesso aos elementos do vetorPara acessar os elementos de um vetor usa-se �ndices. O �ndice define a posi��o da vari�vel dentro do vetor. Em todos os vetores tem o primeiro elemento na posi��o 0(zero). Assim, se tomarmos "K" como sendo o tamanho do vetor a �ltima posi��o � a de �ndice "K-1" Vetor[0] = 4; // Coloca
4 na primeira posi��o de "Vetor" Exemplos com Vetores int Vetor[5]; // declara um vetor de 5 posi��es int Matriz[5][3]; // declara uma matriz de 5 linhas e 3 colunas Vetor[0] = 9; // coloca 9 na primeira posi��o do vetor Matriz[0][1] = 15; // coloca 15 na c�lula que est� na primeira linha Preenchimento de um vetor com um dado for(i=0; i<5; i++) for(i=0; i<=4; i++) Colocar os n�meros de 1 a 5 em Vetor for(i=0; i<5; i++) Colocar os n�meros de 5 a 1 em Vetor for(i=0; i<5; i++) Uso de Constantes para definir o tamanho de um vetor #define TAM_MAX 10 double VetReais[TAM_MAX]; for(i=0; i<TAM_MAX; i++) Copiar os dados de um vetor para outro #define TAM_MAX 10 double VetReais[TAM_MAX], Copia[TAM_MAX]; for(i=0; i<TAM_MAX; i++) Copiar os dados de um VET1 para as primeiras 5 posi��es de COPIA e VET2 para as outras 5 #define TAM_MAX 10 // Note que a declara��o do vetor "C�pia" cria o dobro de posi��es for(i=0; i<TAM_MAX; i++) for(i=0; i<TAM_MAX; i++) // Copia os dados do segundo vetor // ****** Pergunta: Como fazer a c�pia usando um �nico comando for ? Leitura dos dados de um um vetor #define TAM_MAX 10 double Vet1[TAM_MAX]; for(i=0; i<TAM_MAX; i++) Encontrar o maior valor dentro de um vetor #define TAM_MAX 10 double Vet1[TAM_MAX]; for(i=0; i<TAM_MAX; i++) Maior = Vet1[0]; // assume que o primeiro � o maior printf("O maior elemento � %f\n",Maior); // ****** Pergunta: Como fazer a mesma busca e imprimir tamb�m a Crie um programa que copie para um vetor os elementos de outro em ordem crescente. // A ideia aqui � encontrar o menor elemento do vetor 1 e colocar no vetor 2. Tirar este n�mero de vet1, por exemplo, #define TAM_MAX 10 double Vet1[TAM_MAX],
VetOrdenado[TAM_MAX]; for(i=0; i<TAM_MAX; i++) PosMaior = 0; // assume que o maior est� na 1a. posi��o for(j=0; j<TAM_MAX;j++) } for(i=0; i<TAM_MAX;
i++) Passagem de Matrizes e Vetores como Par�metro Para passar uma matriz ou vetor como par�metro, basta declarar o par�metro da mesma forma que a matriz/vetor foi declarado. Por defini��o da linguagem C, um vetor � sempre passado por refer�ncia, logo, qualquer altera��o em seus elementos, altera a vari�vel usada como par�metro na chamada da rotina. #include <stdio.h> #define TAM_MAX 10 void ImprimeVet (int Tam, int Vet[TAM_MAX]) int main()
ImprimeVet(TAM_MAX, Notas); // Passa o vetor 'Notas' como return 0; } Exemplos com Matrizes
Preencher uma matriz com um dado for(i=0; i < NLIN; i++) Somar um n�mero a uma linha/coluna de uma matriz void SomaValorNaColuna(int Valor, int Matriz[NLIN][NCOL], int Coluna) Criar uma matriz identidade void CriaIdent(int Colunas, int linhas, int Matriz[NLIN][NCOL]) } Criar uma matriz transposta void CriaTransp(int Colunas, int linhas, } Cria uma rotina que some duas matrizes void SomaMatrizes(int Colunas, int linhas, } Cria uma rotina que multiplique duas matrizes void MultMatrizes(int Colunas, int linhas, } Acesso a uma linha de uma matriz Uma linha de uma matriz � vista, em C, como sendo um vetor. O acesso � linha � feito informando apenas a primeira das dimens�es da matriz. #include <stdio.h> Cuidados com os limites dos �ndices de Matrizes e Vetores A linguagem C n�o faz nenhum teste de verifica��o dos �ndices usados para acessar os elementos de um vetor. Isto significa que, se
estes limites n�o forem respeitados, resultados indesejados ser�o obtidos. No exemplo a seguir, a matriz int M[2][3] � acessada com �ndices fora dos limites corretos, o que gera um resultado diferente do esperado. #include <stdio.h> void
ImprimeVet(int Vet[3]) int main() int i; for(i = 0; i < 2; i++) { No caso deste exemplo, no primeiro for, ap�s atribuir um valor para a posi��o Matriz[0][2], o c�digo avan�a sobre os
dados da segunda linha, mesmo sendo a linha definida como 0, como se pode observar na sa�da do programa, apresentada a seguir: 0 1 2 Outro exemplo, desta vez usando strings, tamb�m ocorre o mesmo problema, neste caso porque a string colocada em cada
linha da matriz � maior do que os espa�o dispon�vel para armazen�-la. #include <string.h> void ImprimeVet(int Vet[3]) int main() int i; strcpy(Texto[0], "Aula de Programacao"); // esta string n�o cabe na linha da matrizstrcpy(Texto[1], "em linguagem C."); for(i = 0; i < 2; i++) { Aula de Programacem linguagem C. Passagem dos Elementos de Matrizes e Vetores como Par�metro (por valor) A passagem dos elementos de um vetor como par�metro � id�ntica � passagem de uma vari�vel. Ou seja, quando a passagem for por valor usa-se vet[i] e quando for por refer�ncia usa-se &vet[i]. #include <stdio.h>#include <string.h> void Imprime (int N) // fun��o com um par�metro por valor { printf("%d", N); } int main() int Vet[10]; for(i = 0; i < 10; i++) A sa�da do programa � : 0123456789 Sugere-se, antes da leitura das pr�ximas se��es, a consulta � p�gina sobre ponteiros. Passagem dos Elementos de Matrizes e Vetores como Par�metro (por refer�ncia) A passagem dos elementos de um vetor como par�metro � id�ntica � passagem de uma vari�vel. Ou seja, quando a passagem for por valor usa-se vet[i] e quando for por refer�ncia usa-se &vet[i]. #include <stdio.h> void Imprime (int N) // fun��o com um par�metro por valor void Set
(int *N, int i) // fun��o com um par�metro por refer�ncia int main() int Vet[10]; for (i=0; i< 10; i++)
Imprime(Vet[i]); // Note que N�O se deve colocar nada antes } return 0; } A sa�da do programa � : 0123456789 O que é um vetor é uma matriz como são declarados?Vetores e matrizes são coleções de variáveis contínuas na memória e acessadas através de um número de índice. A diferença entre vetores e matrizes é que vetores são de uma única dimensão, enquanto matrizes podem conter várias dimensões.
O que é uma matriz um conjunto de vetores de um único tipo?Uma matriz é uma coleção de variáveis de mesmo tipo, acessíveis com um único nome e armazenados contiguamente na memória. A individualização de cada variável de um vetor é feita através do uso de índices. Os Vetores são matrizes de uma só dimensão.
O que é um vetor na programação?Um vetor , ou arranjo (= array), é uma estrutura de dados que armazena uma sequência de objetos, todos do mesmo tipo, em posições consecutivas da memória RAM (= random access memory) do computador.
Como se declara um vetor?Para declarar um vetor chamado vetor , com cinco elementos inteiros, escrevemos: int vetor[5]; Note que a quantidade de elementos de um vetor não pode ser alterada depois que o vetor for declarado. Para criar vetores de tamanho dinâmico, podemos usar ponteiros, que serão abordados mais adiante.
|