0% acharam este documento útil (0 voto)
12 visualizações14 páginas

Capitulo 6

Enviado por

William Silva
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações14 páginas

Capitulo 6

Enviado por

William Silva
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 14

Prof. Dr.

Abel Gomes
(agomes@di.ubi.pt)

Cap.6:
Tabelas (Arrays)

Tipos de Dados Compostos I

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

void Tipos Simples Tipos Compostos

Tipos Tipos Tipos


Numéricos Apontadores Enumerados

* enum

array struct FILE


char int float double
3
Características gerais
dos tipos de dados compostos
♦ Definição pelo utilizador
Não pertencem ao léxico da linguagem
Requerem a utilização dum mecanismo sintáctico ou
duma palavra reservada ([ ], struct, FILE, ...)

♦ Composição
É um conjunto de dados
Exemplo (inteiros):
int x[3] = {5,4,7};

♦ Não têm ordem


Um conjunto não tem ordem ou escala
Exemplo (inteiros):
{5,4,7} < {6,8,3}
?

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

tipo nome [ tamanho ] ;

= { val1, val2, …, valN } 5


Tabelas (arrays): características
específicas
♦ Contiguidade
Ocupa uma zona contígua de memória

♦ Tem estrutura tipada


As componentes são todas do mesmo tipo de dados
Exemplo (inteiros):
int x[3] = {5,4,7};

♦ Acesso por indexação


Cada componente tem um índice
Índice ∈ [0,..., tamanho-1]
Exemplo (inteiros):
x[2] = x[0] + 45;

Acesso para Acesso para


escrita leitura
6
Tabelas (arrays): características
específicas (cont.)
♦ Dimensão
1 índice: 1-dimensional
2 índices: 2-dimensional
3 índices: 3-dimensional
etc.

Representação diagramática
i→ 0 1 2

x[0] x[1] x[2] tabela 1-dimensional

i→ 0 1 2
j

0 x[0][0] x[0][1] x[0][2]

1 x[1][0] x[1][1] x[1][2] tabela 2-dimensional


2
x[2][0] x[2][1] x[2][2]
7
Exemplo:
soma de dois vectores em R2
#include <stdio.h>
main()
{
float p[2], q[2]; // vectores dados
float s[2]; // vector soma a calcular

scanf(“%f%f”,&p[0],&p[1]); // lê 1º vector
scanf(“%f%f”,&q[0],&q[1]); // lê 2º vector

s[0] = p[0]+q[0]); // calcula componentes do


s[1] = p[1]+q[1]; // vector soma

printf(“O vector soma=[%f %f]\n”,s[0],s[1]);


}
8
Exemplo:
ponto médio em R2
#include <stdio.h>
main()
{
float p[2], q[2]; // pontos dados
float m[2]; // ponto medio a calcular

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(“O ponto medio=(%f,%f)\n”,m[0],m[1]);


}
9
Exemplo:
soma de duas matrizes 2x2
#include <stdio.h>
main()
{
float p[2][2], q[2][2];// matrizes dados
float s[2][2]; // matriz soma a calcular
scanf(“%f%f%f%f”,&p[0][0],&p[0][1],&p[1][0],&p[1][1]);
scanf(“%f%f%f%f”,&q[0][0],&q[0][1],&q[1][0],&q[1][1]);

s[0][0] = p[0][0]+q[0][0]); // calcula componentes do


s[0][1] = p[0][1]+q[0][1]); // vector soma
s[1][0] = p[1][0]+q[1][0]);
s[1][1] = p[1][1]+q[1][1]);

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.

− Quando um array é passado como argumento a uma função, o seu


tamanho é ignorado pelo compilador.

− Ao compilador só interessa saber o tipo de dados dos elementos do


array.

− O tamanho a considerar é da inteira responsabilidade do programador.

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

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy