slides computação e programação memec+lean · são criadas no ambiente de trabalho base as...
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