slides computação e programação memec+lean · são criadas no ambiente de trabalho base as...

20
06/10/2015 1 D.E.M. – Área Científica de Controlo Automação e Informática Industrial Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 Aula Teórica 7 Matrizes como imagens Funções definidas pelo programador: Âmbito das variáveis Apresentação do projecto Quais as estruturas de repetição do MATLAB? for while Quando se utiliza uma e outra? for quando se pretende que o programa execute a repetição um número pré-determinado de vezes while quando o número de repetições a executar depende de alguma condição lógica e não pode ser previsto à partida elo programa Computação e Programação 2015 / 2016 2 Wrap Up da última aula

Upload: vuongkhanh

Post on 12-Dec-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

06/10/2015

1

D.E.M. – Área Científica de Controlo Automação e Informática Industrial

Computação e ProgramaçãoMEMec, LEAN - 1º Semestre 2015-2016

Aula Teórica 7

• Matrizes como imagens• Funções definidas pelo programador:

• Âmbito das variáveis• Apresentação do projecto

Quais as estruturas de repetição do

MATLAB?

• for

• while

Quando se utiliza uma e

outra?

• for quando se pretende que o programa execute a repetição um número pré-determinado de vezes

• while quando o número de repetições a executar depende de alguma condição lógica e não pode ser previsto à partida elo programa

Computação e Programação 2015 / 2016 2

Wrap Up da última aula

06/10/2015

2

Para que serve a instrução break

• Serve para interromper um ciclo while nalgum ponto da sequência a ser repetida, permitindo executar a 1ª parte dessa sequência pelo menos uma vez

O que é um ciclo infinito?

• É um problema que pode ocorrer nos ciclos whilequando a condição de paragem nunca é satisfeita

Computação e Programação 2015 / 2016 3

Wrap Up da última aula

Alinhamento da AT 7

• Matrizes como imagens

• Funções definidas pelo programador:

• Âmbito das variáveis

Computação e Programação 2015 / 2016 4

06/10/2015

3

Computação e Programação 2015 / 2016

Descrição: Representa uma matriz na forma de uma imagem

Sintaxe: image(C)

image(C,'Propriedade',Valor,...)

Função pré-definida image

>> A = [0:10:60; 10:10:70; 20:10:80]

A =

0 10 20 30 40 50 60

10 20 30 40 50 60 70

20 30 40 50 60 70 80

>> image(A)

5

Computação e Programação 2015 / 2016

Descrição: Escolhe uma tabela de cores para representação de matrizes

Sintaxe: colormap(map)

Existem várias tabelas de cores

pré-definidas no Matlab, embora

seja fácil ao utilizador definir a sua

própria tabela.

Função pré-definida colormap

6

06/10/2015

4

Computação e Programação 2015 / 2016

Exemplo

>> A = [0:5:100; 10:5:110; 20:5:120];

>> image(A)

>> imagesc(A)

>> colormap(bone)

>> colormap(winter)

>> colormap(hot)

Semelhante a image, mas ajusta a tabela de

cores aos valores máximo e mínimo da matriz

7

Computação e Programação 2015 / 2016

Descrição: Lê uma imagem de um ficheiro para uma matriz(nos formatos suportados)

Sintaxe: imread(ficheiro)

imread(ficheiro,formato)

Função pré-definida imread

>> B = imread('koala.jpg');

>> image(B)

8

06/10/2015

5

Computação e Programação 2015 / 2016

Descrição: Grava uma matriz como imagem (nos formatossuportados, ver ajuda da função)

Sintaxe: imwrite(matriz,ficheiro)

imwrite(matriz,ficheiro,formato)

Função pré-definida imwrite

>> B(:,:,1:2) = 0;

>> image(B)

>> imwrite(B,'koala_azul.jpg')

9

Computação e Programação 2015 / 2016

Trabalhar com o Plot Edit Mode

Adicionar legenda, texto e setasBotão para modo de edição

Click para seleccionar

objecto

Posicionar rótulos e outros

objectos por click

e arrasto

Click no botão direito do rato para aceder às

propriedades do objecto

Barra de ferramentas

de edição

10

06/10/2015

6

Computação e Programação 2015 / 2016

Trabalhar com o Ploting Tools

Figure

Pallete

Property

Inspector

Property

Editor

Adicionar dados

Activar as Ploting ToolsSubplots

Figura

Plot

Browser

11

Computação e Programação 2015 / 2016

>> x = -pi:pi/10:pi;

>> y = tan(sin(x)) - sin(tan(x));

>> plot(x,y,'rs--','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10)

Formatação avançada de gráficos

12

06/10/2015

7

Implementação de Algoritmos em MATLAB

• Sequenciação

• Selecção

• Repetição

• Módulos

Ficheiros script

Estruturas: if

if – else

if – elseif

switch – case

Estruturas: for

while

Funções definidas pelo programador

Computação e Programação 2015 / 2016 13

Alinhamento da AT 7

• Matrizes como imagens

• Funções definidas pelo programador:

• Âmbito das variáveis

Computação e Programação 2015 / 2016 14

06/10/2015

8

• Há dois aspectos distintos a ter em conta nas funções:

• A sua definição: onde é criado um nome para a função, definidos os seus argumentos de entrada e de saída, e descrito na forma de código fonte o processo de computação que essa função terá que executar

• A sua aplicação (ou chamada à função): em que o processo de computação é realizado para valores particulares dos argumentos de entrada, produzindo um resultado concreto.

Funções

Computação e Programação 2015 / 2016 15

• Uma função é uma sequência de instruções de MATLAB armazenada num ficheiro de texto (um M-file, i.e., um ficheiro de texto com extensão .m)

• Uma função destingue-se de um script essencialmente de três formas

1. O código fonte começa com um cabeçalho específico

2. O âmbito das variáveis não é partilhado com o Ambiente de Trabalho

3. A chamada da função envolve, em geral, a passagem de argumentos

Definição de Funções

Computação e Programação 2015 / 2016 16

06/10/2015

9

Descrição: declaração de um M-file como função

Sintaxe: function [lista_out] = nome_funcao(lista_in)

onde

lista_out: lista de argumentos de saída separados por vírgulas

lista_in: lista de argumentos de entrada separados por vírgulas

Cabeçalho da função

NOTA: o nome do M-file deve ser igual ao nome da função, acrescido da extensão .m

Computação e Programação 2015 / 2016 17

Definição e aplicação

• Chamadas à função

>> minha_area = calcarea(0.2)

minha_area =

0.1257

>> meu_raio = 1.5;

>> minha_area = calcarea(meu_raio)

minha_area =

7.0686

Computação e Programação 2015 / 2016 18

• Definição da função

06/10/2015

10

Alinhamento da AT 7

• Matrizes como imagens

• Funções definidas pelo programador:

• Âmbito das variáveis

Computação e Programação 2015 / 2016 19

Variáveis

• Cada função tem um ambiente próprio para as suas variáveis, ao contrário do script

• As trocas de informação com o exterior fazem-se através dos argumentos da função

• No MATLAB as variáveis locais da função são criadas quando esta é iniciada, e destruídas quando esta termina*

* - com a excepção das variáveis persistentes e globais

Computação e Programação 2015 / 2016 20

Ambiente de trabalho (Base)

Função

Argumentosde Entrada

Argumentosde Saída

Script

06/10/2015

11

Computação e Programação 2015 / 2016 21

Execução da função no MATLAB

No ambiente de trabalho base não são criadas as variáveis area e

rad pertencentes à função, apenas é criada a variável ans (dado que

não houve atribuição do resultado).

Chamada à função

Computação e Programação 2015 / 2016 22

Scripts como drivers para funções

06/10/2015

12

Computação e Programação 2015 / 2016 23

Execução no MATLAB

São criadas no ambiente de trabalho base as variáveis area e radius do script,

mas não as da função

Execução do script

• O âmbito de uma variável (scope) é o ambiente de trabalho em que ela é válida.

(informalmente pode dizer-se que é a “parte” do nosso programa, ou do ambiente do Matlab, onde essa variável está definida, é reconhecida, e pode ser utilizada)

• O ambiente de trabalho da Command Window é chamado Ambiente de trabalho Base (Base

Workspace) e é partilhado com os scripts.

• Cada função tem o seu ambiente de trabalho próprio e todas as suas variáveis estão definidas apenas nesse ambiente.

Âmbito das variáveis

Computação e Programação 2015 / 2016 24

06/10/2015

13

• Regras de âmbito de uma variável:

1. Se uma variável for criada através da Command Window

pertencerá ao Ambiente de trabalho Base, e pode ser utilizada na Command Window e em qualquer script.

Âmbito das variáveis

Computação e Programação 2015 / 2016 25

Command Window Script (ex: programa.m) Função (ex: func.m)

e = 2;

• Regras de âmbito de uma variável:

2. Se uma variável for criada dentro de um script será partilhada com o Ambiente de trabalho Base, e pode ser utilizada a partir do ponto em que foi definida no código fonte do script, na Command Window e em qualquer outro script.

Âmbito das variáveis

Computação e Programação 2015 / 2016 26

Script (ex: programa.m) Função (ex: func.m)

a = 12;

Command Window

06/10/2015

14

• Regras de âmbito de uma variável:

3. Se uma variável for definida como argumento de entrada ou de saída de uma função o seu ambiente tem o mesmo nome da função, e pode ser utilizada apenas no código fonte dessa função em qualquer parte do código.

Conceito de âmbito (scope)

Computação e Programação 2015 / 2016 27

Script (ex: programa.m) Função (ex: func.m)

function ... = func (c)

Command Window

• Regras de âmbito de uma variável:

4. Se uma variável for criada dentro de uma função o seu ambiente tem o mesmo nome da função, e pode ser utilizada apenas no código fonte dessa função e apenas a partir do ponto em que foi definida.

Conceito de âmbito (scope)

Computação e Programação 2015 / 2016 28

Script (ex: programa.m) Função (ex: func.m)

d = 1;

function d = func (...)

Command Window

06/10/2015

15

Computação e Programação 2015 / 2016 29

Exemplo: função desigualdade

Computação e Programação 2015 / 2016 30

Definição da função desigualdade

Cabeçalho

Corpo da função

Comentários Ajuda da funçãoque aparece na

Command Window

quando é usado o comando help

Código fonteda função

06/10/2015

16

Computação e Programação 2015 / 2016 31

Definição da função desigualdade

Cabeçalho

Palavra reservada

Argumento de saída Nome da função

Argumentos de entrada

Computação e Programação 2015 / 2016 32

Driver para a função desigualdade

06/10/2015

17

Computação e Programação 2015 / 2016 33

Visualização do âmbito das variáveis

NOTA: colocar um breakpoint na função desigualdade.m e correr o script

driverDesigualdade.m (quando em modo debug carregar na tecla F10 para avançar a execução)

Computação e Programação 2015 / 2016 34

Âmbito Base do MATLAB

Âmbito: Base

(Ambiente de trabalhodo MATLAB)

Variáveis:V

Vmax

Vmin

BaseMATLAB

Função:

desigualdade.m

Script:

driverDesigualdade.m

06/10/2015

18

Computação e Programação 2015 / 2016 35

Âmbito do script driverDesigualdade

Âmbito:driverDesigualdade

Variáveis:V

Vmax

Vmin

Função:

desigualdade.m

Script:

driverDesigualdade.mBase

MATLAB

Âmbito da função desigualdade

Âmbito: desigualdade

Variáveis:X

Xmax

Xmin

MATLABFunção:

desigualdade.m

Script:

driverDesigualdade.m

Computação e Programação 2015 / 2016 36

06/10/2015

19

Computação e Programação 2015 / 2016 37

Exemplo de execução

>> driverDesigualdade

Introduza o valor de V: 10

Introduza o valor de Vmin: 1

Introduza o valor de Vmax: 9

10.00 não pertence a [1.00,9.00]

>>

• Usar o mesmo nome para a função e para o ficheiro onde ela esta guardada (é um erro comum não o fazer!)

• Se os argumentos forem passados à função na sua chamada, não substituir estes valores por input dentro da função

• As funções que executam cálculos normalmente não os apresentam ao utilizador. Crie funções distintas estas tarefas.

• Evitar criar funções demasiados longas (mais de uma página)

• Faça a depuração de erros lógicos das funções uma-a-uma de forma independente do programa principal. Integre as funções no programa só depois de garantir que estão a realizar a sua tarefa correctamente.

Boas práticas de Programação

Computação e Programação 2015 / 2016 38

06/10/2015

20

As aulas teóricas contêm contribuições dos profs. José Borges e Miguel Silva

Computação e Programação 2015 / 2016 39

Referências

• Capítulo 6 de Stormy Attaway (2012), “Matlab: A Practical

Introduction to Programming and Problem Solving”, Elsevier.

• Getting started with MATLAB: http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/getstart.pdf