Você está na página 1de 23

Sumrio / Programa

Vector vs Matriz
Definio Declarao Atribuio de valores Acesso aos valores Nas funes
Programao - Eng. Automvel 1

Vector - Definio
Permite armazenar um conjunto de valores todos do mesmo tipo. Exemplos:
float int

Guardar as notas dos alunos de programao. Guardar o estado de ocupao dos quartos de uma penso. Guardar as letras do alfabeto.
Programao - Eng. Automvel 2

char

Vector - Declarao
Tipo_Dados NomeVariavel [n de elementos]; Exemplo: Vector que guarde a nota final de cada aluno da disciplina XPTO (40 alunos). int alunos_XPTO [40];

Programao - Eng. Automvel

Vector - Inicializao
Os valores de inicializao na declarao so colocados entre { } e separados por ,. Exemplo:
int alunos_XPTO [40] = { 12, 9, 19, 15, 15, 7, ..., 12, 14 };
As reticncias no se aplicam em C. Indicam apenas que faltam valores (no total devero existir 40 notas).

alunos_XPTO

12 0

9 1

19 2

15 3

15 4

7 5

... ...

12 38

14 39
4

Programao - Eng. Automvel

Vector - Inicializao
Se os valores de inicializao, na declarao, no forem todos colocados as restantes posies ficaram com o valor:
0 para o tipo de dados int ou float. (espao em branco) para o tipo de dados char.

Exemplo:
int alunos_XPTO [40] = { 12, 9, 19, 15, 15, 7 };
alunos_XPTO

12 0

9 1

19 2

15 3

15 4

7 5

0 ...

0 38

0 39
5

Programao - Eng. Automvel

Vector Atribuio de valor


NomeVariavel [posio] = Valor; Posio: indica o nmero que corresponde posio ou ao ndice no vector. A posio pode variar entre 0 e o N de elementos 1.

Programao - Eng. Automvel

Vector Atribuio de valor


Exemplo: alterar a nota do aluno na posio 1 para 14. alunos_XPTO[1] = 14;
alunos_XPTO

12 0 12 0

9 1 14 1

19 2 19 2

15 3 15 3

15 4 15 4

7 5 7 5

0 ... 0 ...

0 38 0 38

0 39 0 39
7

alunos_XPTO

Programao - Eng. Automvel

Vector Aceder a um valor


NomeVariavel [posio] Exemplo 1: Obter a nota do aluno 2. int nota_aluno = alunos_XPTO [2];
A varivel nota_aluno tomar o valor 19.

Resultado no ecr: Nota do aluno 5 = 7

Exemplo 2: Escrever a nota do aluno 5;

printf(Nota do aluno 5 = %d, alunos_XPTO[5]);


Programao - Eng. Automvel 8

Vector na Entrada das Funes


Quando um vector passado como parmetro para uma funo, se os seus valores forem alterados, esta alterao manter-se- Passagem por referncia. Para os restantes parmetros (variveis simples) as alteraes apenas so reconhecidas dentro da prpria funo Passagem por valor.
Programao - Eng. Automvel 9

Vector na Entrada das Funes


Exemplo 1:
void main (void){ int a = 6; a=6 funcao (a); a=6 printf(%d, a); } num = 6 =6 void funcao (int num){ num += 2; num = 8 }
num

void main (void){ int a[1] = {6}; a = {6} funcao (a); a[0] = 8 printf(%d, a[0]); } num = {6} void funcao (int num[1]){ num [0] += 2; num[ 0]= 8 }
10

num = {8}

Programao - Eng. Automvel

Vector na Entrada das Funes


Exemplo 2:
void escreve_Notas (int notas[40]){ int i; for (i=0; i < 40; i++)
Resultado no ecr: Aluno 0 12

Aluno 1 14 Aluno 2 19 Aluno 3 15 ....

printf(aluno %d - %d\n, i, notas[i]); }


Programao - Eng. Automvel 11

Vector na Chamada da Funo


Na chamada da funo APENAS se indica o NOME do vector. Exemplo:
void main (void){ int alunos_XPTO[40] = { 12, 9, 19, 15, 15, 7}; escreve_Notas(alunos_XPTO); }
Programao - Eng. Automvel 12

Matriz - Definio
Permite armazenar um conjunto de valores todos do mesmo tipo. Representa um vector de x dimenses Exemplos:
Jogo do galo vector de duas dimenses OU vector bidimensional (3 linhas x 3 colunas). Totoloto vector de trs dimenses OU vector tridimensional (1 linha x 49 colunas x 10 profundidade), ou seja (1 linha x 49 nmeros x 10 apostas)
Programao - Eng. Automvel 13

Matriz Declarao Bidimensional


Tipo_Dados NomeVariavel [n de elem] [n de elem]; Exemplo: Matriz que guarde a nota final de cada aluno dos dois turnos da disciplina XPTO (20 alunos em cada turno). int alunos_XPTO [2] [20]; OU int alunos_XPTO [20] [2];
Programao - Eng. Automvel 14

Matriz Declarao Bidimensional


Representao grfica:
int alunos_XPTO [2] [20];
0 12 9 19 15 15 7 0 1 2 3 4 5 ... 12 14 0 12 ... 18 19 0 0 12 1 9 2 19 3 15 4 15 5 7 ... ... 19 14 1 11 16 0 14 12 18 ... 12
15

1 11 16 0 14 12 18 ...

int alunos_XPTO [20] [2];


Programao - Eng. Automvel

Matriz - Inicializao
Cada linha da matriz colocada entre { } e os valores e as linhas separados por , . Toda a matriz envolvida tambm por { }. Exemplo:
int alunos_XPTO [2][20] = { {12, 9, 19, 15, 15, 7, ..., 12, 14}, {11,16, 0, 14, 12, 18, ..., 0, 12} };
alunos_XPTO 0 1 12 11 0 9 16 1 19 0 2 15 14 3 15 12 4 7 18 5 ... ... ... 12 0 18 14 12 19
16

Programao - Eng. Automvel

Matriz Atribuio de valor


NomeVariavel [posioLin] [posioCol] = Valor; posioLin: indica o nmero que corresponde posio ou ao ndice da linha na matriz. posioCol: indica o nmero que corresponde posio ou ao ndice da coluna na matriz. As posio pode variar entre 0 e o N de linhas 1 e 0 e o N de colunas 1 .
Programao - Eng. Automvel 17

Matriz Atribuio de valor


Exemplo: alterar a nota do 1 aluno do 2 turno para 14. alunos_XPTO [1][0] = 14;
alunos_XPTO 0 1 alunos_XPTO 0 1 12 14 0 9 19 15 15 16 0 14 12 1 Programao - Eng. Automvel 2 3 4 7 18 5 ... ... ... 12 0 18 14 12 19 12 11 0 9 16 1 19 0 2 15 14 3 15 12 4 7 18 5 ... ... ... 12 0 18 14 12 19

18

Matriz Aceder a um valor


NomeVariavel [posioLin] [posioCol] Exemplo 1: Obter a nota do ltimo aluno do 1 turno. int nota_aluno = alunos_XPTO [0][19];
A varivel nota_aluno tomar o valor 14.

Resultado no ecr: Nota do aluno - 14

Exemplo 2: Escrever no ecr a nota do aluno 1 aluno do 2 turno; printf(Nota do aluno - %d, alunos_XPTO[1][0]);
Programao - Eng. Automvel 19

Matriz na Entrada das Funes


Exemplo:
void escreve_Notas (int notas[2][20]){ int lin, col; for (lin=0; lin < 2; lin++){ printf(Turno %d: \n, lin + 1); for (col = 0; col < 20; col++) } }
Turno 2: Resultado no ecr: Turno 1: Aluno 0 12 Aluno 1 9 Aluno 2 19 Aluno 3 15 ....

Aluno 0 14 Aluno 1 16 printf(\taluno %d - %d\n, col, notas[lin][col]); Aluno 2 10 Aluno 3 14 ...


Programao - Eng. Automvel 20

Matriz na Chamada da Funo


Na chamada da funo APENAS se indica o NOME do vector. Exemplo:
void main (void){ int alunos_XPTO [2][20] = { {12, 9, 19, 15, 15, 7, ..., 12, 14}, {11,16, 0, 14, 12, 18, ..., 0, 12} }; escreve_Notas(alunos_XPTO); }
Programao - Eng. Automvel 21

Certo vs Errado
Exerccio 1 : Indique quais as instrues correctas e incorrectas e justifique-as.

Programao - Eng. Automvel

22

void main (void){ v1 1 2 3 3 4 5 int v1[5] = {1, 2, 3, 4, 5}, 0 1 2 3 4 v2[5], v2 1 lixo lixo lixo lixo lixo v3[2][2] = {{1, 2}, {2,1}};
0 1 2 v3 0 1 3 1 2 2 0 4 2 1 1

v2[0] = 1; v2[4] = v1[2]; v2 = v1;

O valor de v2[0] passa a ser 1. O valor de v2[4] passa a ser 3 (v1[2]).

Impossvel atribuir directamente os valores de um vector a outro. A posio 5 no pertence ao vector. O ndice mximo 4. O valor de v2[3] passa a ser 2 (v3[1][0]).

v2[5] = 10;

v2[3] = v3[1][0]; v1[2] = v3[2];

Para aceder a um valor de v3 falta indicar uma dimenso (linha ou coluna).

printf(Indique um novo valor de v1[0]); scanf(%d, &v1[0]); printf(%d, v2); }


Coloca na 1 posio de v1 o valor inserido pelo utilizador. Para se escrever um valor do vector tem de se indicar qual a posio a ser escrita.
Programao - Eng. Automvel 23

Você também pode gostar