Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões •...

14
Programação T. 07 – Arrays Mestrado Integrado em Engenharia Aeronáutica – 1º ano, 1º semestre

Transcript of Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões •...

Page 1: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

Programação

T. 07 – Arrays

Mestrado Integrado em Engenharia Aeronáutica – 1º ano, 1º semestre

Page 2: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

Sumário:T.07 Arrays

2

Page 3: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 4: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 5: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 6: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 7: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

Arrays (ouTabelas)

nometipo [ ]tamanho ;

}val1, val2, …, valN= {

5

4

7

X[0]

X[1]

X[2]

X

7

T.07 Arrays

Page 8: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 9: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 10: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 11: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 12: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 13: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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

Page 14: Apresentação do PowerPoint - UBIsebastiao/Ensino/UBI/2017-2018/PROG/Teoric… · Conclusões • O que já sabíamos antes deste capítulo: • Ao passar uma variável para uma

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