View
0
Download
0
Category
Preview:
Citation preview
Programação
T. 07 – Arrays
Mestrado Integrado em Engenharia Aeronáutica – 1º ano, 1º semestre
Sumário:T.07 Arrays
2
3
Taxonomia de tipos de dados
Tipos de Dados
void Tipos Compostos
Tipos
Apontadores
char doubleint float
enum
Tipos
Enumerado
s
*
Tipos
Numéricos
Tipos Simples
structarray FILE
3
T.07 Arrays
Modelo de programação imperativa: dados + funções
#include <stdio.h>
int main()
{
int x;
float y;
um valor inteiro: ”);printf(“Escreva
scanf(“%d”,&x);
y=x+5.4;
printf(“O valor de y=%f¥n”,y);
}
printfyx
+
scanf
=
printf
5.4
funções
estruturas de dados
4
T.07 Arrays
Dados Simples
Dados Compostos Instruções Compostas
Instruções Simples
Programa Principal
Subprogramas
Estruturas de Dados
Modelo de programação imperativa (cont.)
Funções
5
T.07 Arrays
Características gerais dos tipos de dados compostos
#include <stdio.h>
int main()
{
int soma = 0;
int X[5]= {4,5,7,-14,20};
for (i=1;i<=5;i++)
soma = soma + X[i];
printf(“SOMA = %i\n”,soma);
return 0;
}
6
T.07 Arrays
Arrays (ouTabelas)
nometipo [ ]tamanho ;
}val1, val2, …, valN= {
5
4
7
X[0]
X[1]
X[2]
X
7
T.07 Arrays
Arrays: características específicas
5
4
7
X[0]
X[1]
X[2]
X
Acesso para escrita
Acesso para leitura
8
T.07 Arrays
Arrays: características específicas (cont.))
array 1-dimensionalx[0] x[1] x[2]
i 0 1 2
array 2-dimensional
1 2j
i 0
0
1
2
x[0][0] x[0][1] x[0][2]
x[1][0] x[1][1] x[1][2]
x[2][0] x[2][1] x[2][2]
9
T.07 Arrays
Exemplo: soma de 2 vectores em R2
#include <stdio.h>
int main()
{
float p[2], q[2];
float s[2];
// dois vectores
// vector soma
scanf(“%f%f”,&p[0],&p[1]);
scanf(“%f%f”,&q[0],&q[1]);
// lê 1º vector
// lê 2º vector
s[0] = p[0]+q[0]);
s[1] = p[1]+q[1];
// calcula elementos do
// vector soma
printf(“O vector soma=[%f %f]\n”,s[0],s[1]);
return 0;
}
10
T.07 Arrays
Exemplo: soma de 2 matrizes 2x2
#include <stdio.h>
int main()
{float p[2][2], q[2][2];
float s[2][2];
// duas matrizes
// matriz soma
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 elementos 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]);
return 0;
}
11
T.07 Arrays
Passagem de um array como argumento de uma função
ATENÇÃO:
O nome do array funciona como endereço do 1º
elemento do array, ou seja, a sua localização em
memória.
CONSEQUÊNCIA:
Quando se passa um array para uma função, o que
estamos a passar é o endereço do 1º elemento,não
o array no seu todo.
12
T.07 Arrays
Exemplo#include <stdio.h>
int maximo( int a[], int N );
int main(void)
{
int x[5] = {6,3,4,8,12};
int m;
m = maximo(x,5);
printf(“Maximo = %d\n”, m);
return 0;
}
int maximo( int a[], int N )
{
int i, max;
max=a[0];
for ( i=1; i<N; i++)
if (a[i]>max)
max = a[i];
return max;
}
13
T.07 Arrays
Conclusões
• O que já sabíamos antes deste capítulo:
• Ao passar uma variável para uma função, o que se passa é o seu valor.
• O que passámos a saber com este capítulo:
• Mas,se a variável representar um array,o que se passa é o seu endereço,ou seja,o endereço do seu 1º elemento.
• Neste caso, passamos a ter duas variáveis (uma em cada função) que representam o mesmo array.Portanto,o array pode ser acedido e,consequentemente,partilhado por duas funções diferentes.
FIM
14
T.07 Arrays
Recommended