Módulo 1: Introdução ao MatLab. (scripts e functions) Interfaces Gráficas (GUIs)

Documentos relacionados
O Ambiente GUIDE do MATLAB

Módulo 1a: Introdução ao Visual Basic for Applications (VBA)

INTRODUÇÃO. JavaScript PROF. ME. HÉLIO ESPERIDIÃO

Construção de Interfaces Gráficas Programa/Utilizador

COMPUTAÇÃO E PROGRAMAÇÃO

1 - Ambiente de desenvolvimento

Computação e Programação Exame Resolvido 1ª Época

Programando em linguagem-c com o LabWindows/CVI

Integração por Web Services

Computação e Programação Exame 2ª Época

Programação em VB.Net 4.0 com Mobile Apps

Computação II MAB EPT/EP1. Interface Gráfica - Tkinter. Brunno Goldstein.

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Gestão de Base de dados Formulários

MATLAB - CRIANDO INTERFACE GRÁFICA (Prof.: Michael Klug) GUI - Graphical User Interface

Tutorial de Extensibilidade

Programação em C#.Net 4.0 com Mobile Apps

Fundamentos Programação

Construção de Sites 2. Prof. Christiano Lima Santos

MESTRADO EM MACROECONOMIA e FINANÇAS Disciplina de Computação. Aula 01. Prof. Dr. Marco Antonio Leonel Caetano

I-3 Introdução ao Matlab

Utilização de Base de Dados com BluePlant. Sumário

Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico

Capítulo 4. Programação em ASP

Introdução a Javascript

5 Mini Casos. 5.1.Campos Numéricos Interface e Especificação

JavaScript (Elementos de Programação e Programação Básica)

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

MATLAB. Programação básica

FERRAMENTA DE COMPRESSÃO E CIFRAGEM

Introdução à programação em C#

UNIVERSIDADE FEDERAL DE ITAJUBÁ

Introdução ao SolidWorks (V): Tabelas de Desenho

Escrito por Adriano Neres Rodrigues Qua, 30 de Dezembro de :00 - Última atualização Qua, 30 de Dezembro de :01

Ambiente de Programação, rastreamento e entrada de dados. MCG114 Programação de Computadores I. Interpretador de Comandos. Interpretador de Comandos

O que é o JavaScript?

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

Introdução ao SolidWorks (V): Tabelas de Desenho

Minicurso de MATLAB. Programa de Educação Tutorial de Engenharia Elétrica. lmax Rodrigues. lcaroline Pereira. lnayara Medeiros

3.1 - Funções para manipular dados de entrada e saída padrão

File: Este menu permite começar novas tabelas de verdade, abrir ficheiros com tabelas, gravar tabelas e imprimir tabelas.

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem:

Introdução à linguagem JavaScript

Aplicações de Programação CNC/ISO com Microcomputador. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Guia de Usuário LEITOR MIFARE TWN4 NFC-P

Introdução ao SolidWorks (V): Tabelas de Desenho. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

Aulas Anteriores. Detalhes da linguagem de programação

PROGRAMAÇÃO DE COMPUTADORES

Compilador de LP3 para C3E e P3

Tarefa Orientada 4 Aplic. Manutenção de Produtos - ComboBox

PROGRAMAÇÃO JAVA. Parte 3

Breve Introdução à Programação em Scilab 6.0

Dicas de VBA - Personalizar o Friso I

Manual Software Hotel

Introdução ao EES Engineering Equation Solver

Computação e Programação. Exame Época Normal

2-Introdução e Conceitos Básicos das TIC

Aula 4 Objetos e Classes com BlueJ. Prof. Pedro Baesse

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Criação de Aplicações GUI. Java JFC / Swing

Java: Linguagem de programação (OOP) JavaScipt: Linguagem de scripts (OOP)

Transcrição:

Módulo 1: Introdução ao MatLab Programação II Programação II (scripts e functions) Interfaces Gráficas (GUIs)

Programação Anonymous functions São funções definidas de um modo ad-hoq, numa linha de comando. Podem ser guardadas, tal como as variáveis, nos ficheiros '*.mat' Síntaxe: <function handle> = @([<var1>, <var2>,...]) <function_def([<var1>,<var2>,...])> Exemplo: Criar uma função que calcule a distância entre 2 pontos (x1,y1)-(x2,y2): Dist = @(x1,y1,x2,y2) sqrt((x1-x2).^2+(y1-y2).^2) % criar a function handle 'Dist' Invocar a função: A = Dist(1,1,2,2) % invocar a function como se fosse uma função nativa do MatLab

Programação Scripts Scripts são listas de instruções. - São gravadas em formato ASCII, num ficheiro com extensão "*.m" - Não têm variáveis internas - Manipulam as variáveis do workspace Exemplo 1: - Fazer um script para perguntar ao utilizador um item de tabuada de 1 a 10, de uma forma aleatória

Programação Scripts Exemplo 1: %Script "Tabuada" clc; % limpa o comand window a = randi(10); % gera um n. inteiro aleatório entre 1 e 10 b = randi(10); % idem c = a.*b; % faz a multiplicação Mess=sprintf ('Qual o resultado de %.0f x %.0f?',a,b); % "string print formatted" % alternativa: Mess=['Qual o resultado de ',num2str(a),' x ',num2str(b),'?']; disp (Mess) % apresenta a pergunta Resp=input('Resposta: '); % aguarda a resposta if Resp==c % testa a resposta Mess='A resposta está correcta.'; else Mess=['A resposta está errada (a resposta certa seria ', num2str(c),')']; % alternativa: Mess=sprintf ('A resposta está errada (a resposta certa seria %.0f)',c); end disp( Mess) % apresenta a mensagem adequada %Fim do Script "Tabuada"

Programação Functions Functions são estruturas de programação com código fechado. - São gravadas em formato ASCII, num ficheiro <fname> com extensão "*.m" - Têm cabeçalho: function[[<outvars>]]=<fname>([<invars>]) <outvars> - lista de variáveis de saída <invars> - lista de variáveis de entrada - As variáveis locais são internas (não mexem no workspace) - A informação é passada de e para o exterior apenas através das <outvars> e <invars> - A function é invocada no programa principal com a síntaxe: [<var1>,<var2>,...]=<fname>([<varx>, <vary>,...]) O nome da (primeira) function deve coincidir com o nome do ficheiro. Exemplo 2: - Fazer uma function que forneça o resultado para a multiplicação de dois quaisquer números de 1 a 10 Variável de saída: Mess (mensagem string com o resultado) Variáveis de entrada: a, b - números a multiplicar

Programação Functions Exemplo 2: function [Mess] = f_tabuada(a,b) % function "f_tabuada" % calcula a tabuada clc; c=a.*b; Para invocar a function : num1=4; num2=6; num3=f_tabuada(num1,num2) Mess=sprintf ('O produto de %.0f por %.0f é %.0f',a,b,c); % alternativa: Mess=['O produto de ',num2str(a),' por ', num2str(b),' é ',num2str(c)]; end Exemplo 3: Function sem troca de informação com o exterior: function [] = f_dummy() % function sem troca de informação com o exterior... M='Ora bolas!'; clc disp(m); end Para invocar a function: f_dummy

Graphical User Interfaces GUIs são interfaces gráficas de interacção com o utilizador. Têm o aspecto de uma janela do Windows ( ). São constituídas por duas componentes (dois ficheiros): - Uma parte gráfica (ficheiro com extensão '.fig') - Uma parte funcional (ficheiro com extensão '.m')

Parte gráfica A parte gráfica é construída num editor próprio: GUIDE GUI Design Environment (file > new > GUI > Blank GUI) Pode ser constituída por elementos de 14 espécies diferentes: Push button Radio button Edit text Pop-up menu Toggle button Axes (graph) Button group Slider Check box Static text List box Table Panel ActiveX control

Parte gráfica Cada elemento tem vários atributos, acedidos através de duplo clique. São categorizados a seguinte forma:

Parte gráfica As base properties tem os seguintes atributos: Controla o nome que aparece na parte funcional Controla se o item é visível Atributo Valor

Parte gráfica A data tem os seguintes atributos: Controla o que aparece na apresentação/conteúdo do item Valor que aparece por defeito (no início)

Parte gráfica A style/appearance tem os seguintes atributos: Controla a font Valor por defeito (no início)

Parte funcional A parte funcional é gerada automáticamente quando se grava a parte gráfica. É constituída por um conjunto de funções. Dessas, apenas algumas devem ser modificadas pelo programador: As funções que se relacionam com atributos dos items gráficos ex.: Callback Por exemplo, se queremos programar um push-button cuja tag é 'pushbutton1' para fechar a GUI, procuramos a função pushbutton1_callback e acrescentamos a instrução 'close [<nome da GUI>]' Por exemplo, para fazer o seguinte: 1. Quando é pressionado o pushbutton cuja tag é pushbutton1' deve 2. Ler o que está numa edit text cuja tag é 'edit1' e 3. Colocar o que foi lido na static text cuja tag é 'text1'. Procuramos a função pushbutton1_callback e acrescentamos as instruções: H=guidata(<nome da GUI>); % Coloca em 'H' o handling da GUI leitura=get(h.edit1,'string'); % coloca em 'leitura' o que está em 'edit1' set(h.text1,'string',leitura); % coloca em 'text1' o que está em 'leitura'

Parte funcional Mais exemplos... Por exemplo, para fazer o seguinte: 1. Se a 'checkbox1' estiver marcada, fazer o plot de y=x 2 (-10<x<10) em 'axes1'. 2. Se a 'checkbox1' estiver desmarcada, fazer o plot de y=x 3 (-10<x<10) em 'axes1'. Procuramos a função checkbox1_callback e acrescentamos as instruções: H=guidata(<nome da GUI>); % Coloca em 'H' o handling da GUI leitura=get(h.checkbox1,'value'); % coloca em 'leitura' o que está no atributo %'value' da 'checkbox1' if leitura==1 %testa se a 'checkbox1' está marcada (sim = 1) dados=[[-10:10]',[-10:10]'.^2]; % sim else dados=[[-10:10]',[-10:10]'.^3]; % não end plot(h.axes1,dados(:,1),dados(:,2)); % põe o gráfico em 'axes1'

Mais exemplos... tag: 'Numero' tag: 'Ler' Criar uma nova GUI tag: 'Msg' Funcionamento pretendido: tag: 'Escrever' tag: 'Fim' - Se clicar em OK, pretende-se que a GUI passe o número para uma variável de nome 'Resultado' que será criada no workspace. - Se clicar em WS, pretende-se que a GUI passe o número que estiver na variável de nome 'Resultado' presente no workspace, para a edit-text. - Se clicar em Cancel, a GUI deverá fechar.

Na parte funcional... tag: 'Numero' tag: 'Ler' Localizar Escrever_Callback e acrescentar as instruções: tag: 'Msg' tag: 'Escrever' tag: 'Fim' myhandles = guidata(<nome da GUI>); % Variável de handling da GUI 'GuiWS' é a 'myhandles' Txt= get(myhandles.numero,'string'); % Lê na GUI, no item cuja tag é 'Numero', o atributo 'string' e põe na variável interna Txt Txt=str2num(Txt); set(myhandles.numero,'string',txt); assignin('base', 'Resultado', Txt); % converte 'Txt' para número % coloca o valor de Txt no atributo 'string' do item cuja tag é Numero. Não-números dão. % Manda para o Workspace ('base') a variável 'Resultado' com o valor de 'Txt'.

Na parte funcional... tag: 'Numero' tag: 'Ler' Localizar Ler_Callback e acrescentar as instruções: tag: 'Msg' tag: 'Escrever' tag: 'Fim' myhandles = guidata(<nome da GUI>); try %tenta ler a var 'Resultado' Txt=evalin('base','Resultado'); catch %se dá erro (não existe) então cria a variável assignin('base', 'Resultado', ''); end Num=str2num(num2str(evalin('base','Resultado'))); % filtragem para ter apenas números set(myhandles.numero,'string',num2str(num)); % Coloca na string de tag 'Numero' o valor de 'Num'. Localizar Fim_Callback e acrescentar: close [<nome da GUI>]

Parte funcional Notas finais... 1. Todas as variáveis criadas dentro de uma function são variáveis locais. 2. Para passar variáveis entre functions, elas devem ser declaradas como "globais", logo após o cabeçalho, nessas functions: function <nometag1>_callback(hobject, eventdata, handles) global var1 var2 var3 var3=var1+var2... function <nometag2>_callback(hobject, eventdata, handles) global var1 var2 var3 var2=var1.*var3...

- Resolução da ficha n.º 4