Capitulo 6
Capitulo 6
Abel Gomes
(agomes@di.ubi.pt)
Cap.6:
Tabelas (Arrays)
1
Sumário
Classificação de tipos de dados
Características gerais de tipos de dados compostos
Definição de tabela (array)
Características específicas duma tabela
Exemplos
Reticulados e funções: passagem de parâmetros por referência
Exemplo de ordenação duma tabela
Dimensão duma tabela
Exemplo de soma de matrizes
2
Classificação
de tipos de dados
Tipos de Dados
* enum
♦ Composição
É um conjunto de dados
Exemplo (inteiros):
int x[3] = {5,4,7};
4
Tabelas (arrays):
definição
♦ Definição
É um conjunto de elementos
(ou variáveis) do mesmo tipo numa zona
contígua de memória. x[0] 5
Exemplo (declaração dum array de inteiros): x[1] 4 x
int x[3] = {5,4,7}; x[2] 7
♦ Diagrama de sintaxe
Representação diagramática
i→ 0 1 2
i→ 0 1 2
j
↓
0 x[0][0] x[0][1] x[0][2]
scanf(“%f%f”,&p[0],&p[1]); // lê 1º vector
scanf(“%f%f”,&q[0],&q[1]); // lê 2º vector
scanf(“%f%f”,&p[0],&p[1]);
scanf(“%f%f”,&q[0],&q[1]);
m[0] = (p[0]+q[0])/2;
m[1] = (p[1]+q[1])/2;
printf(“Matriz soma:\n”);
printf(“%f %f\n”,s[0][0],s[0][1]);
printf(“%f %f\n”,s[1][0],s[1][1]);
} 10
Exemplo: média dos elementos
duma matriz 2x2
#include <stdio.h>
main()
{
float m[2][2]; // matriz 2x2
float soma=0;
scanf(“%f%f%f%f”,&m[0][0],&m[0][1],&m[1][0],&m[1][1]);
for (i=0;i<=1;i++)
for (j=0;j<=1;j++)
soma = soma + m[i][j];
printf(“Media = %f\n”,soma/4);
}
11
Passagem de tabelas (arrays)
para funções
− A passagem dum array para uma função é feita através do seu nome.
12
Exemplo: cálculo do valor
máximo dum array
#include <stdio.h> int maximo( int a[], int N )
int maximo( int x[], int N ); {
int i, max=a[0];
int main(void) for ( i=1; i<N; i++)
{ if (a[i]>max)
int x[5] = {6,3,4,8,12}; max = a[i];
int m; return max;
m = maximo(x,5); }
printf(“Maximo = %d\n”, m);
return 0; NOTA:
}
A função maximo funciona para
qualquer array,
independentemente do seu
tamanho.
13
Exemplo: média dos elementos
duma matriz 2x2
#include <stdio.h> int soma(int a[][],int N,int M)
main() {
{ int i,j,s=0;
float m[2][2]; for (i=0;i<=N-1;i++)
for (j=0;j<=M-1;j++)
float media; s=s+a[i][j];
return s;
scanf(“%f”,&m[0][0]); }
scanf(“%f”,&m[0][1]);
scanf(“%f”,&m[1][0]); NOTA:
scanf(“%f”,&m[1][1]);
A função soma funciona para
media = soma(m,2,2)/4; qualquer array bi-dimensional,
independentemente do seu
printf(“Media = %f\n”,media); tamanho.
}
14 FIM