vetor_matriz
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
— | vetor_matriz [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Vetores e Matrizes ====== | ||
+ | ===== Definindo Vetores ===== | ||
+ | |||
+ | Sintaxe: | ||
+ | |||
+ | '' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Define-se como **vetor** uma variável que possui várias ocorrências de um mesmo tipo. Cada ocorrência é acessada através de um índice. Os vetores também são chamados de matrizes unidimensionais por possuírem somente um índice. | ||
+ | |||
+ | Para definir um vetor em C deve-se indicar a quantidade de ocorrência que o mesmo irá ter colocando na sua definição o valor entre '' | ||
+ | |||
+ | Os índices de um vetor em C irão sempre começar de zero, fato que deve ser lembrado pois geralmente este detalhe é um grande causador de problemas. Portanto, para se acessar a primeira ocorrência de um vetor deve-se indicar o índice zero. | ||
+ | |||
+ | <code c> | ||
+ | /* programa vetor_matriz_1.c */ | ||
+ | |||
+ | #include < | ||
+ | #define TAMANHO | ||
+ | |||
+ | int main (void) | ||
+ | { | ||
+ | int i; | ||
+ | int iValor_a; | ||
+ | int iSoma; | ||
+ | int iVetor [TAMANHO]; | ||
+ | |||
+ | for (i=0; i < TAMANHO; i++) /* na linguagem C, um vetor sempre começa em zero */ | ||
+ | { | ||
+ | printf (" | ||
+ | scanf (" | ||
+ | iVetor [i] = iValor_a; | ||
+ | } | ||
+ | |||
+ | iSoma = 0; | ||
+ | |||
+ | for (i=0; i < TAMANHO; i++) | ||
+ | { | ||
+ | iSoma += iVetor[i]; | ||
+ | } | ||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Definindo Matrizes ===== | ||
+ | |||
+ | Sintaxe: | ||
+ | |||
+ | '' | ||
+ | |||
+ | ---- | ||
+ | Para se definir matrizes basta adicionar mais uma dimensão na definição da variável. Por compatibilidade com a matemática a primeira dimensão é chamada de linha e a segunda de colunas. | ||
+ | |||
+ | Para se acessar um item de uma matriz deve-se indicar os dois índices. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | |||
+ | <code c> | ||
+ | /* programa vetor_matriz_2.c */ | ||
+ | |||
+ | #include < | ||
+ | #define TAMANHO | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int i,j; | ||
+ | int iDeterminante; | ||
+ | int iValor_a; | ||
+ | int iMatriz [TAMANHO][TAMANHO]; | ||
+ | |||
+ | | ||
+ | { | ||
+ | for(j=0; j < TAMANHO; j++) | ||
+ | { | ||
+ | | ||
+ | scanf (" | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Matrizes n-Dimensionais ===== | ||
+ | |||
+ | Sintaxe: | ||
+ | '' | ||
+ | |||
+ | ---- | ||
+ | O conceito de dimensão pode ser estendido para mais de duas dimensões, criando-se matrizes **n-dimensionais**. Apesar de terem pouco uso prático deve-se lembrar que sempre cada dimensão definida irá ter o índice começando de zero e terminando em uma unidade antes do tamanho especificado para aquela dimensão. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | |||
+ | <code c> | ||
+ | /* programa vetor_matriz_3.c */ | ||
+ | |||
+ | #include < | ||
+ | #define DIMENSAO_1 | ||
+ | #define DIMENSAO_2 | ||
+ | #define DIMENSAO_3 | ||
+ | #define DIMENSAO_4 | ||
+ | |||
+ | int main (void) | ||
+ | { | ||
+ | int i,j,k,l; | ||
+ | int iMatriz[DIMENSAO_1][DIMENSAO_2][DIMENSAO_3][DIMENSAO_4]; | ||
+ | |||
+ | /* Codigo para zerar uma iMatriz de 4 dimensoes */ | ||
+ | for (i=0; i < DIMENSAO_1; i++) | ||
+ | { | ||
+ | for (j=0; j < DIMENSAO_2; j++) | ||
+ | { | ||
+ | for (k=0; k < DIMENSAO_3; k++) | ||
+ | { | ||
+ | for (l=0; l < DIMENSAO_4; l++) | ||
+ | { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /* Uma regra que pode-se sempre levar sempre em consideração: | ||
+ | Se houver 4 dimensões, então haverá 4 laços. | ||
+ | for (i=0; i < DIMENSAO_1; i++) | ||
+ | { | ||
+ | for (j=0; j < DIMENSAO_2; j++) | ||
+ | { | ||
+ | for (k=0; k < DIMENSAO_3; k++) | ||
+ | { | ||
+ | for (l=0; l < DIMENSAO_4; l++) | ||
+ | { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Inicializando Matrizes ===== | ||
+ | |||
+ | Sintaxe: | ||
+ | |||
+ | * Para vetores | ||
+ | '' | ||
+ | |||
+ | * Para Matrizes | ||
+ | '' | ||
+ | |||
+ | ---- | ||
+ | Pode-se, ao mesmo tempo em que se define a matriz, inicializá-la com valores, utilizando a seguinte sintaxe. | ||
+ | * Os valores devem ser colocados de acordo com as dimensões | ||
+ | * Cada dimensão deve ser colocada dentro de '' | ||
+ | * Não pode pular valores, todos os valores devem ser colocados. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | |||
+ | <code c> | ||
+ | /* programa vetor_matriz_4.c */ | ||
+ | |||
+ | #include < | ||
+ | int main (void) | ||
+ | { | ||
+ | int i,j, k; | ||
+ | int iMatriz_1 [5] = {1, 2, 3, 4, 5}; | ||
+ | int iMatriz_2 [3][3] = {{11, 12, 13}, | ||
+ | {21, 22, 23}, | ||
+ | {31, 32, 33}}; | ||
+ | int iMatriz_3 [3][2][2] = {{{111, 112}, | ||
+ | {121, 122}}, | ||
+ | {{211, 212}, | ||
+ | {221, 222}}, | ||
+ | {{311, 312}, | ||
+ | {321, 322}}}; | ||
+ | |||
+ | | ||
+ | for (i=0; i < 5; i++) | ||
+ | { | ||
+ | printf ("%d ", iMatriz_1 [i]); | ||
+ | } | ||
+ | | ||
+ | |||
+ | | ||
+ | for (i=0; i < 3; i++) | ||
+ | { | ||
+ | for (j=0; j < 3; j++) | ||
+ | { | ||
+ | | ||
+ | } | ||
+ | printf(" | ||
+ | } | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | { | ||
+ | for (j=0; j < 2; j++) | ||
+ | { | ||
+ | for (k=0; k < 2; k++) | ||
+ | { | ||
+ | printf(" | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | printf(" | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Matrizes como Parâmetros ===== | ||
+ | |||
+ | Quando se coloca um vetor como parâmetro, a Linguagem C passa somente o seu endereço, não fazendo uma cópia na pilha. Portanto, pode-se definir o parâmetro sem a quantidade de elementos, pois como só será recebido o endereço pode-se acessar toda a matriz através deste endereço. | ||
+ | |||
+ | A mesma regra se aplica a matrizes para o caso da primeira dimensão. Pode-se não informar a quantidade de elementos da primeira dimensão. Devido á construção sintática da linguagem, deve-se porém informar as demais dimensões para que o compilador gere o código corretamente. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | <code c> | ||
+ | /* programa vetor_matriz_5.c */ | ||
+ | #include < | ||
+ | |||
+ | void imprime_1(int iVetor[]) /* Não é preciso informar o tamanho do índice.... */ | ||
+ | { | ||
+ | int i; | ||
+ | | ||
+ | for (i=0; i < 5; i++) | ||
+ | { | ||
+ | printf(" | ||
+ | | ||
+ | } | ||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | |||
+ | void imprime_2(int iMatriz[][3]) /* Para a primeira dimensão, não é necessário informar a quantidade de índices. Mas para a demais é necessário. */ | ||
+ | { | ||
+ | int i,j; | ||
+ | | ||
+ | for (i=0; i < 3; i++) | ||
+ | { | ||
+ | for (j=0; j < 3; j++) | ||
+ | { | ||
+ | | ||
+ | } | ||
+ | printf(" | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int iVetor[5] = {1, 2, 3, 4, 5}; | ||
+ | int iMatriz[3][3] = {{11, 12, 13}, | ||
+ | {21, 22, 23}, | ||
+ | {31, 32, 33}}; | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | --- // |
vetor_matriz.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1