53
1 Aula 03: - Funções e procedimentos - Vetores e matrizes MCTA028 – Programação Estruturada Prof. Jesús P. Mena-Chalco [email protected] 3Q-2017

Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

1

Aula 03: - Funções e procedimentos- Vetores e matrizes

MCTA028 – Programação Estruturada

Prof. Jesús P. Mena-Chalco

[email protected]

3Q-2017

Page 2: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

2

Funções

Page 3: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

3

Funções (modularidade)

Consiste em dividir uma atividade em componentes, rotulados e endereçáveis

Uma função devolve um valor.A função invocadora (main) é suspensa quando executar a outra função.

As variáveis locais nãosão conhecidas fora

da função

Page 4: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

4

Exercício 1

Crie uma função que permita calcular uma aproximação de PI usando a serie de Gregory:

A função deve aceitar um parâmetro que represente o número de termos a ser considerado na somatório.

4.0000003.0418403.1315933.141493

Page 5: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

5

Exercício 1

Crie uma função que permita calcular uma aproximação de PI usando a serie de Gregory:

A função deve aceitar um parâmetro que represente o número de termos a ser considerado na somatório.

4.0000003.0418403.1315933.140593

Page 6: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

6

Exercício 2

Modifique a função anterior de tal forma que faça a somatória dos termos maiores ou iguais a x.

A função deve aceitar um parâmetro que represente o valor x (precisão).

3.12159465263.1415924536

Page 7: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

7

Exercício 2

Modifique a função anterior de tal forma que faça a somatória dos termos maiores ou iguais a x.

A função deve aceitar um parâmetro que represente o valor x (precisão).

3.12159465263.1415924536 Desafio: Quantos termos são necessários?

Page 8: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

8

Procedimentos?

Page 9: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

9

Procedimentos

Na linguagem C existem apenas funções, mas saiba que existem outras linguagens que aceitam funções e procedimentos (em pascal: Function e Procedure):

Uma função devolve sempre um valor.Um procedimento não devolve qualquer valor.

A forma de invocar funções e procedimentos é diferente:Funções: x = pi(0.001)Procedimentos: printf(“%f”, x)

Page 10: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

10

Procedimentos

Uma função que devolve “void” é chamada de procedimento.

Page 11: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

11

Procedimento: exemplo

Page 12: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

12

Vetores

Page 13: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

13

Armazenar 10 inteiros em um programa...

Usando variáveis:

Usando um vetor:

Para acessar a um elemento, use um índice. a[0] → 6 a[4] → 100

Page 14: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

14

Vetores

Os elementos de um vetor são armazenados/alocados de forma consecutiva na memória.

Os elementos são acessados por seu índice dentro do vetor.

10 4 -95 37 2910X:= 0 1 2 3 4 …

Page 15: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

15

Memória (hardware)

RAM HDD SSD

......

Page 16: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

16

Memória (hardware)

Geralmente o endereço do “objeto“ é o endereço do 1ro byte.

0

N

Page 17: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

17

Terminologia

01010111

11000011

01100100

11100010

0x37FD00

0x37FD01

0x37FD02

0x37FD03

......

4 bytes

Page 18: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

18

Vetores

Declaração de uma variável que representa um vetor de 13 inteiros

10 4 -95 37 2910 -6vetor :=0 1 2 3 4 5 6 7 8 9 10 11 12

10 4 -95 37 2910 3 0

Índice / Deslocamento

1 2 3 4 5 6 7 8 9 10 11 12 13

PosiçãoO vetor contém 13 Elementos

Page 19: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

19

Vetores

Page 20: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

20

Vetores

1041957730­193931337632764004195696041953920­1939313152

0123456789101112

Page 21: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

21

Vetores

Page 22: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

22

Vetores

32741771953096327410­11041957730­169983576032764004195696041953920­1699835536327640

­5­4­3­2­101234567891011121314

Page 23: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

23

Em concreto

Um vetor é uma coleção de valores.

Três importantes características:

Os vetores representam um grupo de dados relacionados.

Todos os dados devem ter o mesmo tipo.

O tamanho do vetor é definido na sua criação/definição.

Page 24: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

24

Vetores

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 25: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

25

Vetores

Page 26: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

26

Vetores

4020801080

Page 27: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

27

Vetores

1010101010

Page 28: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

28

Matrizes

Page 29: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

29

Matriz bidimensional

.

.

.

linhas

colunas

0

1

2

3

0 1 2 3 4 5 ...

Page 30: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

30

Matriz bidimensional

matriz[2][0]

0

1

2

3

0 1 2 3 4 5

matriz[1][4]

Page 31: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

31

Matriz bidimensional

00000000000000000000000000000000000

Page 32: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

32

Declara uma matriz Mde 100 linhas

com 200 colunas(20mil inteiros)

Material adaptado da aula de Matrizes de Ronaldo F. Hashimoto e Carlos H. Morimoto (IME/USP)

A memória do computador é linear!

Page 33: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

33

Memória (hardware)

RAM HDD SSD

......

Page 34: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

34

Estrutura da matriz na memória do computador

Material adaptado da aula de Matrizes de Ronaldo F. Hashimoto e Carlos H. Morimoto (IME/USP)

Page 35: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

35Material adaptado da aula de Matrizes de Ronaldo F. Hashimoto e Carlos H. Morimoto (IME/USP)

Disposição dos 20mil elementos da matriz M na memória

Page 36: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

36

Matriz bidimensional (imagem em níveis de cinza)

Nível=18

Page 37: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

37

Matriz tridimensional (imagem em RGB)

{Red, Green, Blue}

Page 38: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

38

Matrizes

0

1

2

3

0 1 2 3 4 5

0

1

2

3

0

1

2

3

0 1 2 3 4 5

Matriz unidimensional(vetor/Array)

Matriz bidimensional(2D)

Matriz tridimensional(3D)

Page 39: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

39

Matrizes

0

1

2

3

0 1 2 3 4 5

0

1

2

3

0

1

2

3

0 1 2 3 4 5

Matriz unidimensional(vetor/Array)

Matriz bidimensional(2D)

Matriz tridimensional(3D)

M[2] M[2][4] M[2][5][2]

Page 40: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

40

Dimensões?

1002003

Page 41: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

41

Page 42: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

42

Processamento de imagens multiespectrais (imagens do mesmo objeto, mas capturadas com diferentes comprimentos de onda eletromagnéticas)Os aparelhos consideram diferentes comprimentos de onda para cada camada.

http://all-geo.org/volcan01010/2013/01/processing-arsf-remote-sensing-data-with-open-source-gis-tools/

Page 43: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

43

How do spaceborne sensors work?http://geosun.sjsu.edu/paula/285/285/as_sem.htm

Page 44: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

44

Atividade em aula

Page 45: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

45

Lista 1

Page 46: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

46

Page 47: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

47

Atividade em aula

Page 48: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

48

Questão 1 - a

printf("%d\n", funcao1(v1, 4));100

printf("%d\n", funcao1(v2, 5));80

Devolve o último elemento do vetor.

Page 49: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

49

Questão 1 - b

printf("%d\n", funcao2(v1, 4));0

printf("%d\n", funcao2(v2, 5));0

Devolve 0.

Page 50: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

50

Questão 1 - c

printf("%d\n", funcao3(v1, 4));0

printf("%d\n", funcao3(v2, 5));3

Devolve a quantidade de elementos iguais no vetor.

Page 51: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

51

Questão 2

printf("%d\n", funcao4(3, 4, M));1

Verifica se a quantidade de elementos negativos é igual à quantidade de números positivos.

Se for verdadeiro, devolve 1, caso contrário, devolve 0.

Page 52: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

52

Questão 3

Indique se são verdadeiras ou faltas as seguintes afirmações (resposta correta +0,5, incorreta -0,5)

(a) [ ] Uma função em C pode devolver simultaneamente mais do que um valor.

(b) [ ] Uma função em C tem que devolver sempre um inteiro.

(c) [ ] Os parâmetros das funções podem ser do tipo void.

(d) [ ] A instrução return, termina a execução de uma função apenas se for a

última instrução da função em que se encontra

(e) [ ] A instrução return, quando executada dentro da função main, termina o

programa.

(f) [ ] O nome de uma função é opcional.

Page 53: Aula 03: - Funções e procedimentos - Vetores e matrizesprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula03.pdf · 1 Aula 03: - Funções e procedimentos - Vetores e

53

Questão 3

Indique se são verdadeiras ou faltas as seguintes afirmações (resposta correta +0,5, incorreta -0,5)

(a) [ F ] Uma função em C pode devolver simultaneamente mais do que um valor.

(b) [ F ] Uma função em C tem que devolver sempre um inteiro.

(c) [ F ] Os parâmetros das funções podem ser do tipo void.

(d) [ F ] A instrução return, termina a execução de uma função apenas se for a

última instrução da função em que se encontra

(e) [ V ] A instrução return, quando executada dentro da função main, termina o

programa.

(f) [ F ] O nome de uma função é opcional.

Pode devolver qualquer tipo de dado básico ou ponteiro

Em C, uma função pode devolver apenas 1 valor (tipo básico ou ponteiro)

Não. Cada parâmetro deve ter um tipo de dado associado