View
215
Download
0
Category
Preview:
Citation preview
9/24/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 4
• Gráficos• Algoritmos simples e estruturas de controlo• Funções de Entrada / Saída• Scripts
Uma memória digital só guarda números inteiros
em base binária
• Valores reais, caracteres e outros tipos de dados devem ser armazenados como inteiros
Quando um programa acede (ou escreve) ao valor de uma variável em memória como pode então interpretá-lo?
• Cada variável está necessariamente associada a um tipo de dados, que diz ao programa como descodificar o valor inteiro guardado em memória
Quais são os tipos de dados básicos?
• Real
• Inteiro (com e sem sinal)
• Carácter
• Lógico
Computação e Programação 2015 / 2016 2
Wrap Up da última aula
9/24/2015
2
Como definir uma variável do tipo
char?
• Atribuindo-lhe um valor literal entre ‘ ’ (e.g.: x =’A’) ou convertendo um valor
numérico com a função char (e.g.: x = char(78))
Como definir variáveis de outros tipos básicos?
• Atribuindo-lhe o resultado de uma função com o nome do tipo (e.g.: x = uint16(200) x = single(1.23) x = logical(0)
E quando faço uma atribuição simples?
(e.g.: x = 2)
• Qualquer valor numérico é assumido pelo MATLAB como sendo do tipo double
Computação e Programação 2015 / 2016 3
Wrap Up da última aula
MATLAB <=> MATrix LABoratory
Escalares • São matrizes 1 x 1
Vetores
Matrizes
Computação e Programação 2015 / 2016 4
Wrap Up da última aula
• São matrizes 1 x m ou n x 1
• n x m
Matrizes (no contexto do MATLAB)
• Conjunto dados do mesmo tipo, que são agrupados numa única variável de acordo com uma dada lógica
9/24/2015
3
Alinhamento da AT 4
• Gráficos
• Algoritmos simples e estruturas de controlo
• Funções de Entrada / Saída
• Scripts
Computação e Programação 2015 / 2016 5
Tipos de gráficos 2D
6Computação e Programação 2015 / 2016
9/24/2015
4
Tipos de gráficos 3D
7Computação e Programação 2015 / 2016
Descrição: construção de gráficos 2D na Figure Window actual
Sintaxe: plot(Y)
plot(X,Y)
plot(X,Y,S)
Função pré-definida plot
>> x = 1:6;
>> y = [1 5 3 9 11 8];
>> plot(x,y)
8Computação e Programação 2015 / 2016
9/24/2015
5
Função pré-definida plot
Parameterização das características do gráfico:
' c
Cor
--
Tipo de linha
'd
Marcadores
S =
>> x = 1:6;
>> y = [1 5 3 9 11 8];
>> plot(x,y,'ro--')
9Computação e Programação 2015 / 2016
Parameterização da função plot
Cor Marcadores Tipo de linha
bcgkmry
bluecyangreenblackmagentaredyellow
odhp+.s*v<>^x
circlediamondhexagrampentagrampluspointsquarestardownleft triangleright triangleup trianglex-mark
---.:-
dasheddash dotdottedsolid
10Computação e Programação 2015 / 2016
9/24/2015
6
• Funções de formatação dos eixos
Funções adicionais
Comando Descrição
legend coloca a legenda na Figure Window
title coloca o titulo na Figure Window
xlabel coloca um rótulo no eixo das abcissas
ylabel coloca um rótulo no eixo das ordenadas
grid coloca uma grelha no background do gráfico
axis formata a gama de valores nos eixos do gráfico
11Computação e Programação 2015 / 2016
>> x = 11;
>> y = 48;
>> plot(x,y,'r*')
>> axis([9 12 35 55])
>> title('Time and Temp')
>> xlabel('Time')
>> ylabel('Temperature')
Propriedades dos gráficos
12Computação e Programação 2015 / 2016
9/24/2015
7
• Funções de controlo da figura
Funções adicionais
Comando Descrição
hold congela o grafico representado na Figure Window
clf apaga o gráfico na Figure Window corrente
close fecha a Figure Window corrente
figure abre/acede à Figure Window especificada
13Computação e Programação 2015 / 2016
• Exemplo
Representação de múltiplos gráficos
>>
>>
>>
>>
>>
>>
>>
>>
>>
14Computação e Programação 2015 / 2016
9/24/2015
8
• Criação de outros tipos de gráficos
Funções adicionais
Comando Descrição
bar construção de gráficos 2D de barras verticais
plot3 construção de gráficos 3D
barh construção de gráficos 2D de barras horizontais
stem construção de gráficos 2D do tipo discreto
stairs construção de gráficos 2D do tipo escada
15Computação e Programação 2015 / 2016
>> x = 1:5;
>> y1 = [2 11 6 9 3];
>> y2 = [4 5 8 6 2];
>> figure(1)
>> bar(x,y1)
>> figure(2)
>> plot(x,y1,'k')
>> hold on
>> plot(x,y2,'ko')
>> grid on
>> legend('y1','y2')
Gráficos de barras, grelha e legenda
16Computação e Programação 2015 / 2016
9/24/2015
9
Alinhamento da AT 4
• Gráficos
• Algoritmos simples e estruturas de controlo
• Funções de Entrada / Saída
• Scripts
Computação e Programação 2015 / 2016 17
Algoritmos simples
1) Repetir para as 3 garrafas
a) Carregar garrafa
b) Chegar ao semáforo
c) Se semáforo verde
i. Percorrer caminho curto
Caso contrário
i. Percorrer caminho longo
d) Entregar garrafa
e) Regressar ao armazém
18Computação e Programação 2015 / 2016
9/24/2015
10
Algoritmos simples
... 1) Repetir até ao fim do turno
a) Carregar garrafa
b) Chegar ao semáforo
c) Se semáforo verde
i. Percorrer caminho curto
Caso contrário
i. Percorrer caminho longo
d) Entregar garrafa
e) Regressar ao armazém
19Computação e Programação 2015 / 2016
Algoritmo: Definição e Estrutura
Algoritmo: uma sequência ordenada de
instruções bem definidas e não
ambíguas, que realiza uma dada
tarefa e que termina em tempo
finito.
Estruturas básicas:
• Sequenciação
• Selecção
• Repetição
1) Repetir até ao fim do turno
a) Carregar garrafa
b) Chegar ao semáforo
c) Se semáforo verde
i. Percorrer caminho curto
Caso contrário
i. Percorrer caminho longo
d) Entregar garrafa
e) Regressar ao armazém
20Computação e Programação 2015 / 2016
9/24/2015
11
Identificar Contexto, Entradas e Saídas
Contexto do problema (O que o programa faz? Em que meio? Quemo vai utilizar?)
• O programa destina-se a controlar um robô móvel
• É executado no próprio robô em ambiente industrial
• O sistema é totalmente automático, e não há interacção com outilizador.
Entradas (informação necessária, input):• Estado do semáforo
(assuma-se que o robô já possui comandos para ir de um sítio ao outro, e que não é
necessário detectar paredes nem medir distâncias, etc.)
Saídas (resultado produzido pelo programa, output):
• Sequência de comandos para o robô
21Computação e Programação 2015 / 2016
Identificar tarefas: abordagem Top-Down
Abastecimento de gás para
soldadura
Carregar
garrafa
Entregar
garrafa
Chegar ao
semáforo
Percorrer
caminho
curto
Percorrer
caminho
longo
Regressar ao
armazém
Dividir um problema em problemas mais simples eindependentes entre si
O segundo nível constitui uma lista de tarefas que podem, ou não, ter que ser ainda divididas em problemas mais simples!!!
22Computação e Programação 2015 / 2016
9/24/2015
12
Da abordagem Top-Down ao Algoritmo
Estruturas básicas:
• Sequenciação• Selecção• Repetição
1) Repetir até ao fim do turno
a) Carregar garrafa
b) Chegar ao semáforo
c) Se semáforo verde
i. Percorrer caminho curto
Caso contrário
i. Percorrer caminho longo
d) Entregar garrafa
e) Regressar ao armazém
Lista de tarefas:
• Carregar garrafa
• Entregar garrafa
• Chegar ao semáforo
• Percorrer caminho longo
• Percorrer caminho curto
• Regressar ao armazém
+=
23Computação e Programação 2015 / 2016
• O programa de computador não é mais do que a tradução do algoritmo para a linguagem de programação pretendida
• O algoritmo deve por isso ser escrito numa linguagem
suficientemente próxima das linguagens de programação de
alto nível, para evitar ambiguidades, mas independente das características de uma linguagem de programação específica (chama-se pseudo-código)
• A abordagem Top-Down conclui-se quando as tarefas são de implementação directa, e não precisam de algoritmos próprios
para serem especificadas
Notas sobre a criação de algoritmos
24Computação e Programação 2015 / 2016
9/24/2015
13
Alinhamento da AT 4
• Gráficos
• Algoritmos simples e estruturas de controlo
• Funções de Entrada / Saída
• Scripts
Computação e Programação 2015 / 2016 25
26
Entrada / Saída de dados
Comando Descrição
input entrada de dados pelo teclado, permite
incluir uma mensagem
disp apresenta o conteúdo de um vector no ecrã
fprintf escreve texto formatado no ecrã ou num ficheiro
save grava variáveis num ficheiro
(pode gravar identificador + conteúdo)
load lê variáveis a partir de um ficheiro
(pode ler identificador + conteúdo)
• Funções simples de entrada e saída de dados
Computação e Programação 2015 / 2016
9/24/2015
14
27
Função pré-definida input
Descrição: apresenta uma mensagem e solicita uma
entrada do utilizador pela linha de comandos
Sintaxe: user_entry = input('prompt')
user_entry = input('prompt', 's')
>> rad = input('Introduza o raio: ')Introduza o raio: 5rad =5>> letra = input('Introduza um carácter: ', 's')Introduza um carácter : gletra =g
Computação e Programação 2015 / 2016
28
Função pré-definida input
>> num = input('Introduza um número: ')Introduza um número: t??? Error using ==> inputUndefined function or variable 't'.
>> Nome_Aluno = input('Nome: ','s');
Nome: João Manuel
>> Nota_Aluno = input('Nota: ','s');
Nota: 10.5>> whosName Size Bytes Class Attributes
Nome_Aluno 1x11 22 char Nota_Aluno 1x4 8 char
Computação e Programação 2015 / 2016
9/24/2015
15
>> disp('Olá')
Olá
>> disp(4^3)
64
>> vec = 2:5
vec =
2 3 4 5
>> disp(vec)
2 3 4 5
29
Função pré-definida disp
Descrição: apresenta o conteúdo de um vector no ecrã
Sintaxe: disp(X)
Computação e Programação 2015 / 2016
30
Função pré-definida fprintf
Descrição: escreve o conteúdo formatado de uma
cadeia de caracteres no ecrã ou num ficheiro
Sintaxe: fprintf(text)
fprintf(format, var)
>> fprintf('Olá \n')
Olá
>> fprintf('Maio é o %dº mês do Ano.\n',5)
Maio é o 5º mês do Ano.
>> r = 1;
>> fprintf('Área circulo = %f m2.\n', pi*r^2)
Área circulo = 3.141593 m2.
Computação e Programação 2015 / 2016
9/24/2015
16
Função pré-definida fprintf
>> B = [ 9.9 8.8 7.7
9900 8800 7700];
>> fprintf('X é %6.2f metros ou %8.3f mm\n', B);
X é 9.90 metros ou 9900.000 mm
X é 8.80 metros ou 8800.000 mm
X é 7.70 metros ou 7700.000 mm
Notar que B foi percorrida por colunas
% 0- 12 .5 uInício da especificação
Flags Precisão
Carácter decontrolo
Tamanho da cadeia
Especificação da cadeia de formatação:
31Computação e Programação 2015 / 2016
32
Caracteres de formatação
Descrição Caracteres Descrição
Flags
Sinal -
Sinal +
Espaço
Zero
Alinhamento à esquerda
Escrita do carácter de sinal ("+" ou "-")
Insere espaço em branco
Enche espaço disponível com zeros
Caracteres
de
formatação
\n
\t
\b
%%
New line
Horizontal tab
Backspace
Símbolo de percentagem
Caracteres de
controlo
%c%d,%i%u%f%s
Carácter simplesValor inteiro de base decimal com sinalValor inteiro de base decimal sem sinalValor real em notação de ponto fixoCadeia de caracteres (string)
Computação e Programação 2015 / 2016
9/24/2015
17
Computação e Programação 2015 / 201633
Função pré-definida fprintf
Descrição: grava num ficheiro o conteúdo formatado
de uma cadeia de caracteres
Sintaxe: fprintf(fid,text)
fprintf(fid,format, var)
fid = fopen(nome, permissões)
fclose(fid)
>> fid = fopen('meu_ficheiro.txt', 'wt');
>> fprintf(fid, 'X é %6.2f metros ou %8.3f mm\n', B);
>> fclose(fid)
34
Função pré-definida save
Descrição: grava num ficheiro um conjunto de
variáveis sem formatação
Sintaxe: save
save NomeFicheiro Variáveis
save(NomeFicheiro, 'Variáveis')
>> save meu_ficheiro
>> save meu_ficheiro variavel_1 variavel_2
>> save meu_ficheiro v*
>> NomeFicheiro = 'meu_ficheiro';
>> save(NomeFicheiro, 'variavel_1')meu_ficheiro.mat
Computação e Programação 2015 / 2016
9/24/2015
18
35
Função pré-definida load
Descrição: carrega de um ficheiro para o workspace
um conjunto de variáveis sem formatação
Sintaxe: load
load NomeFicheiro Variáveis
load(NomeFicheiro, 'Variáveis')
>> load meu_ficheiro
>> load meu_ficheiro variavel_2
>> load meu_ficheiro var*
>> load ('meu_ficheiro', 'variavel_1');meu_ficheiro.mat
Computação e Programação 2015 / 2016
Alinhamento da AT 4
• Gráficos
• Algoritmos simples e estruturas de controlo
• Funções de Entrada / Saída
• Scripts
Computação e Programação 2015 / 2016 36
9/24/2015
19
37
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: forwhile
Funções definidas pelo
programador
Computação e Programação 2015 / 2016
38
Scripts
• Um script é 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)
• O script, ou seja, a sequência de intruções que
contém, pode ser executado introduzindo na linha de comandos o nome do ficheiro sem a extensão .m
• Os nomes de todos os M-files obedecem às mesmas
regras que os identificadores de variáveis
Computação e Programação 2015 / 2016
9/24/2015
20
39
Exemplo de script simples
Computação e Programação 2015 / 2016
40
Documentação Interna
• Os scripts constituem a forma mais simples de um programa em MATLAB, e devem ser internamente
documentados
• A Documentação Interna do código fonte de um
programa é feita através de linhas de comentário, e
faz parte da sua Documentação Técnica
Computação e Programação 2015 / 2016
9/24/2015
21
41
Documentação Interna
• A documentação interna do código fonte é
normalmente realizada através de:
• um cabeçalho nas primeiras linhas do ficheiro
contendo:
� Objectivos do programa (ou função)
� Descrição das entradas e saídas
� Autores e versão do programa (ou função)
• linhas de comentário espalhadas ao longo do código, explicando o seu funcionamento
Computação e Programação 2015 / 2016
42
Documentação Interna
• No MATLAB o comentário de cabeçalho (i.e., todas as
linhas comentadas no início de um script, ou
imediatamente a seguir ao cabeçalho de uma
função) é utilizado pela função help como texto de
ajuda, e pela função lookfor na sua busca
• Os comentários ao longo do código devem ser feitos de forma a clarificar a leitura do mesmo
• Fazer comentários por cada linha de código é desnecessário e dificulta a leitura
Computação e Programação 2015 / 2016
9/24/2015
22
43
Documentação Interna
• Exemplo de cabeçalho de script
Computação e Programação 2015 / 2016
44
Âmbito das variáveis
• Um script não tem um âmbito próprio, e trabalha no
Ambiente de Trabalho do MATLAB
• As variáveis criadas durante a execução do script
permanecem no Ambiente de Trabalho após o fim da
execução, a menos que sejam apagadas com a
instrução clear
Ambiente de Trabalho
Script
Computação e Programação 2015 / 2016
9/24/2015
23
45
Exemplo de script simples
Computação e Programação 2015 / 2016
46
Execução do script
Variáveis criadas pelo
script no ambiente de
trabalho do MATLAB
Invocação
do script
Computação e Programação 2015 / 2016
9/24/2015
24
47
Ferramentas de depuração (debug)
Detecção de erros sintácticos
Computação e Programação 2015 / 2016
Computação e Programação 2015 / 2016 48
Ferramentas de depuração (debug)
Detecção de erros sintácticos
9/24/2015
25
• Especialmente para scripts mais longos, e para funções,
comece por escrever o respectivo algoritmo
• Utilize linhas de comentário para documentar os scripts e
funções, incluindo sempre um comentário de cabeçalho
• Coloque sempre título e rótulos adequados nos eixos dos
gráficos
• Toda a informação fornecida pelo seu programa deve ser fácil
de ler, e descrita num estilo adequado ao contexto de
utilização do mesmo
Boas práticas de Programação
Computação e Programação 2015 / 2016 49
50
Referências
• Capítulo 2 de Stormy Attaway (2012), “Matlab: A Practical
Introduction to Programming and Problem Solving”, Elsevier.
• Demos relevantes:
• Writing a MATLAB Program (5 min, 45 sec)
• http://www.mathworks.com/videos/matlab/writing-a-matlab-program.html
• Using Basic Plotting Functions (5 min, 30 sec)
• http://www.mathworks.com/videos/matlab/using-basic-plotting-
functions.html
• Creating a Basic Plot Interactively (5 min, 12 sec)
• http://www.mathworks.com/videos/matlab/creating-a-basic-plot-
interactively.html
As aulas teóricas contêm contribuições dos profs. José Borges e Miguel Silva
Computação e Programação 2015 / 2016
Recommended