Sunteți pe pagina 1din 2

1

Memento sobre Vetores e Matrizes


1. Vetores e Matrizes
Vetores e Matrizes so variveis que contm vrios valores de um mesmo tipo. Por exemplo, podemos criar o vetor Notas para armazenar as notas obtidas por 100 alunos em um exame, ou ento, utilizar uma matriz chamada gastos_mensais para anotar nossos gastos mensais ao longo dos 12 meses do ano. Podemos criar vetores ou matrizes para armazenar qualquer um dos tipos bsicos de variveis, como int, float e char. Cada valor armazenado separadamente em um elemento da matriz, e pode ser acessado e modificado a qualquer momento.

2. Diferena de uma matriz para um vetor


Um vetor um caso particular de uma matriz, quando possui apenas uma dimenso.

3. Declarao de matrizes
Para criar uma matriz, precisamos declarar trs atributos dela: O tipo de valor que vai ser armazenado na matriz O nome da matriz, para que possamos acess-la O nmero de elementos da matriz A declarao de uma matriz muito parecida com a declarao de uma varivel, bastando adicionar o nmero de elementos que desejamos que ela tenha. A sintaxe a seguinte: <tipo> <nome> [<numero de elementos>]; Por exemplo, caso quisssemos criar uma matriz chamada Manual para armazenar 200 inteiros, a declarao seria assim: int Manual [156]; Podemos utilizar qualquer tipo de variveis j estudadas anteriormente para criar uma matriz, como float, int, char. Uma vez criada uma matriz de um determinado tipo, ela s pode receber valores deste tipo. Note que precisamos definir um tipo para uma matriz: no possvel criar uma matriz genrica que aceite um tipo qualquer, ou vrios tipos. Isso acontece porque ao declarar uma matriz, o compilador aloca memria suficiente para conter o nmero de valores especificado de acordo com o tipo da matriz. Por exemplo, uma matriz de 100 elementos do tipo int normalmente ir requerer 100*sizeof(int) bytes de memria. Por outro lado, uma matriz de 100 elementos do tipo float ir requerer 100*sizeof(float) bytes. Na prtica, esses tamanhos vo depender da arquitetura do computador onde o programa estiver sendo executado. Assim como uma varivel normal, podemos atribuir valores para uma matriz no momento de sua declarao. Isto feito utilizando o operador de atribuio = seguido dos valores contidos entre chaves e separados por vrgulas. Por exemplo, considere a matriz de inteiros teste a seguir: int teste[5] = { 1, 2, 3, 4 , 5}; Tambm podemos atribuir apenas parte dos valores de uma matriz, por exemplo, podemos criar uma matriz que comporte 50 valores do tipo float e atribuir apenas 5 valores ela, deixando para atribuir o restante dos valores no decorrer do programa. float notas[50] = { 7.65, 8.48, 4.27, 6.78, 9.10 }; A linguagem C++, em princpio, faz com que toda matriz que no tenha sido inicializada ou que tenha sido parcialmente inicializada tenha seus valores restantes automaticamente transformados em zero. Assim, caso precisemos de uma matriz que s contenha zeros, podemos ou no inicializ-la ou apenas atribuir o primeiro elemento da matriz como zero e deixar que o compilador transforme os elementos restantes em zero, como vemos a seguir: int zeros[75]; ou int zeros[75] = {0}; Entretanto, para se evitar que algum esquecimento na programao de um compilador venha a complicar a vida do programador usurio daquela ferramenta, o ideal que toda matriz declarada seja inicializada. Quer ter certeza de que toda a sua matriz est zerada ? Faa uma instruo de repetio e zere cada posio da matriz.

4. Acessando Valores de uma Matriz


Aps criar uma matriz, podemos acessar qualquer valor dentro dela. Cada valor, ou elemento de uma matriz, possui um nmero prprio. Toda matriz comea no elemento 0. Precisamos ter isso em mente quando acessamos valores dentro de uma matriz, pois o primeiro elemento ser o elemento 0, o segundo elemento ser o elemento 1. Cada elemento de uma matriz tratado como uma varivel separada. Assim, podemos atribuir valor para um elemento, exib-lo na tela, utiliz-lo em operaes matemticas e em laos condicionais. O Programa a seguir, mostra exemplo de utilizao de vetor (matriz de uma dimenso).

2 #include <stdlib.h> #include <conio.h> #include <iostream.h> #define Max 5 // constante para facilitar a manuteno do programa no futuro. // trabalhando com vetores (matrizes de uma dimenso; int main() { float V[Max],Med, Acum; int i; for(i = 0; i<Max; i++) { cout<<"\nEntre com o valor de V["<<i+1<<"]: "; // ou printf("\nEntre com o valor de V[%2d]: ",i+1); scanf("%f",&V[i]); } Acum = 0; printf("\n"); for(i = 0; i<Max; i++) { Acum = Acum + V[i]; } Med = Acum/Max;20; printf("\n A media dos %d valores do vetor = %5.2f.",Max,Med); getch(); exit(1); }

5. Utilizando laos para percorrer matrizes


Uma das utilizaes mais teis dos laos condicionais o acesso a vrios (ou todos) elementos de uma matriz rapidamente. Podemos utilizar qualquer um dos laos que estudamos, mas sem dvida o lao for o mais prtico para se trabalhar com matrizes. Utilizamos a varivel de controle do lao para acessar cada um dos elementos desejados (lembre-se que a matriz sempre comea no elemento 0), como vimos no programa anterior que percorre os elementos de uma matriz, primeiro preenchendo a matriz com os dados entrados pelo usurio, depois acumulando-os na varivel Acum para futuro clculo da mdia entre eles.

6. Utilizando matrizes de duas dimenses (linhas e colunas)


Alm das matrizes simples de uma nica dimenso, C++ permite a criao de matrizes de mltiplas dimenses. As matrizes bidimensionais so sem dvida as mais utilizadas e as mais teis, pois comportam-se como tabelas com linhas e colunas. Ao declarar uma matriz multidimensional, adicionamos um conjunto de colchetes para cada dimenso extra. Entre os colchetes de cada dimenso, colocamos o nmero de elementos que aquela dimenso ter (ou uma varivel que represente o nmero de elementos). Assim, o prximo programa mostra o uso de uma matriz de dupla dimenso (as mais usadas). #include <stdio.h> #include <conio.h> #include <iostream.h> int main(){ int x[5][5] = { {4, 10, 403, 741, 8}, {9, 33, 584, 877, 1}, {1, 11, 333, 891, 4}, {3, 23, 242, 221, 1}, {8, 41, 347, 100, 17} }; // Imprime o valor 10 na tela do usurio. cout << x[0][1] << endl; // Imprime o valor 100 na tela no usurio. cout << x[4][3] << endl; getch(); return 0;

S-ar putea să vă placă și