0% acharam este documento útil (0 voto)
4 visualizações46 páginas

Introdução à Programação em MATLAB

O documento aborda a programação em MATLAB, incluindo classes sintáticas, variáveis, e boas práticas de programação. Ele detalha o uso do editor de programas, execução de código, depuração, e estruturas de controle. Além disso, discute a recuperação de erros e fornece orientações sobre a definição e uso de funções.

Enviado por

legor99909
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações46 páginas

Introdução à Programação em MATLAB

O documento aborda a programação em MATLAB, incluindo classes sintáticas, variáveis, e boas práticas de programação. Ele detalha o uso do editor de programas, execução de código, depuração, e estruturas de controle. Além disso, discute a recuperação de erros e fornece orientações sobre a definição e uso de funções.

Enviado por

legor99909
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Ponta Grossa

MatLab – Programação

Taysa Millena Banik


taysabanik@[Link]
Max Mauro Santos Dias
maxsantos@[Link]
Vinicius Antunes
[Link]@[Link]
Sumário

1. Introdução
2. Classes Sintáticas e Classe de Variáveis
3. Editor de Programas - Edit
4. Elementos de Programação
5. Estatística de Execução de Programa
6. Boas Práticas de Programação
Introdução

• Apresentação dos utilitários disponíveis no “edit”;


• Principais estruturas de controle de fluxo de algoritmo.

Linguagem e Bibliotecas
MATLAB

+
Programação
(Seus M-Files)

Aplicações
(2006 Toyota Endo concept car, built
with MATLAB)
Classes Sintáticas e Classes de Variáveis

• Definições das palavras que compõem a linguagem de programação do


Matlab:
• Classes Sintáticas;
• Classes de Variáveis.
Classes Sintáticas

• Palavras reservadas: palavras que fazem parte do vocabulário de


instruções da linguagem de programação e não podem ser usadas
como nome de variáveis. Por exemplo: function, if, then, else, while,
for;
• Identificadores: palavras utilizadas como nomes de função ou
variável;
• Operadores: sinais de operadores, por exemplo: =,+,-,*,/,[],{};
• Números: números e símbolos (Inf, NaN) e constantes (eps,pi);
• Cadeia de caracteres: textos codificados entre ‘ ‘;
• Texto de comentário: texto procedidos pelo sinal %;
• Texto de comentário delimitador de seção de código: texto precedido
pelo %%.
Classes de Variáveis

• Duas grandes classes: numérica e não numérica;


Classe Numérica Descrição Tamanho em
Bytes
double Precisão dupla 8
• Os nomes das classes
também são nomes de
single Precisão simples 4
funções de conversão.
int8 Inteiro 8bits com 1
sinal
uint8 Inteiro 8bits sem 1
sinal
Int16 Inteiro 16bits com 2
sinal
uint16 Inteiro 16bits sem 2
sinal
int32 Inteiro 32bits com 4
sinal
uint32 Inteiro 32bits sem 4
sinal
int64 Inteiro 64bits com 8
sinal
uint64 Inteiro 64bits sem 8
sinal
Classes de Variáveis

Classe NÃO Numérica Descrição Tamanho em Bytes

Logical Lógica(0 ou 1)/(falso ou 8


verdadeiro)
Char Alfanumérica 1

Cell Cell array Variável

Struct Struct Variável

Function_handle Identificador de função 16

• Para saber a classe de uma variável – função class:


Classe de Variáveis – Funções Lógicas de Informação

Sintaxe Típica Retorna VERDADEIRO se a variável

L = isa(var, classe) For da classe

L = iscell (var) For cell array

L = isempty (var) Tiver conteúdo vazio

L = isfloat (var) For numérica com ponto flutuante


(double ou single)
L = isglobal (var) For variável global

L = isinteger (var) For número inteiro (int ou uint)

L = iskeyword (var) For palavra reservada da linguagem


Matlab
L = islogical (var) For variável lógica

L = isnumeric (var) For classe numérica

L = ispermanent (var) For variável permanente

L = isreal (var) For número real

L = isstruct (var) For struct

L = isvarname (var) Contiver um texto que pode ser nome de


variável
Editor de Programas : Edit

• Acionar:
• Aba Home – New Script/New/Open;
• Command History – Creat Script;
• Digitando edit + nome do arquivo (abrir um programa).

Obs.: o editor pode carregar vários arquivos, simultaneamente, abrindo uma aba
para cada um deles.
Apoio à Codificação

O Edit provê os seguintes recursos de apoio à codificação:


• Numeração de linha;
• Continuidade de instrução na próxima linha;
• Exibição de texto com cor diferente de acordo com sua classe sintática;
• Verificação de balanceamento de parênteses;
• Indicação de presença de erro de sintaxe;
• Explicação do erro e sugestão de correção.

Identação Automática ou;


Smart-Indenting – Identação em
trechos já escrito.
Execução de Código por Seção: Cell Mode

• No Edit, o conjunto de caracteres ‘%%’ divide o código de programação em seções


de código (code section) ou células de código (cell code);
• Essas divisões permitem que o programa seja executado célula a célula. A
execução das células de código é controlada por meio dos ícones disponíveis na
aba [Editor].
• [Run and Advance]: aciona a execução da célula de código corrente e passa
para a próxima;
• [Run Section]: aciona a execução da célula de código corrente e não passa
para a próxima;
• [Advance]: aciona a passagem para a próxima célula;
• [Run]: aciona a execução do código completo.
Depuração de Programa: Debug Mode

• O processo de debug do programa é definido pela marcação de pontos de


interrupção de execução (breakpoints) ao longo do código;
• Nos breakpoints é possível inspecionar o conteúdo de variáveis, conferir seus
valores e, desta forma, descobrir e solucionar erros de programação.
• Eles são definidos quando indicados na margem direita do editor, na linha de
código desejada. A linha com breakpoint é marcada com um círculo vermelho;
• Para desmarcar breakpoints, basta clicar no círculo vermelho;
• Depois de configurar os breakpoints no editor, a próxima execução do programa
ou chamada da função será executada em debug mode, isto é, em modo de
depuração.

Obs.: o sinal ‘k>>’ indica que a função foi chamada em modo de depuração e que a
execução foi suspensa no 1° breakpoint.
Elementos de Programação

• Programas Matlab (m-files):


• Script-file: armazena uma sequência de comandos Matlab que serve para
automatizar processos repetitivos. Não possuem parâmetros e acessam
diretamente o Workspace do Matlab.
• Function/Program file: armazena uma ou mais funções do Matlab, que
aceitam parâmetros de entrada e saída e possuem escopo de variável
próprio, ou seja, trabalham com variáveis locais que ocupam área de
memória separada e não acessam o Workspace do Matlab.
Definição de Função

Sintaxe:
function [Saida1,...,SaidaN] = Funcao (Entrada1,..., EntradaM)
<Expr 1>
...
<Expr P>
Com relação ao fornecimento de parâmetros de saída na chamada da função:
• Se nenhum parâmetro de saída for solicitado, a função retorna apenas o primeiro
parâmetro;
• Se forem solicitados menos parâmetros de saída do que o declarado, a função
retorna apenas os parâmetros solicitados;
• O sinal ‘~’ é utilizado para indicar a posição de um parâmetro de saída cujo
conteúdo não será necessário;
• Se forem solicitados mais parâmetros de saída do que o declarado, a função
retorna erro.
Definição de Função

• 4 formas diferentes
de chamada da
função max, que
retorna dois
parâmetros de
saída.
Definição de Função - Variáveis Locais

• São utilizadas dentro de funções e ficam armazenadas em áreas de memórias


próprias, independentes do Workspace do Matlab;
• Não são reconhecidas fora do escopo das funções nas quais foram definidas, e
variáveis do Workspace não são reconhecidas dentro de funções;
• Podem ser do tipo ‘permanente’ (persistente variable), isto é, que mantém seu
conteúdo da execução de uma função para outra, dentro de uma mesma sessão
de execução do Matlab. Uma variável ‘permanente’ deve ser explicitamente
declarada como ‘persistente’ no corpo da função.

function Saida = Funcao (Entrada)


Persistent Var_p
Definição de Função - Variáveis Globais

• Devem ser declaradas como global tanto na linha de comando do Matlab


quanto dentro do corpo da função;
• Desta forma, conseguem ser reconhecidas dentro e fora do escopo das
funções nas quais foram definidas.

Function Saida = Funcao (Entrada)


Global Var_g
Escopo de Funções

• Função Primária ou Principal: contém o código da rotina principal e deve ter o mesmo
nome do arquivo no qual está codificada;
• Função Auxiliar (subfunction): um arquivo de programa pode conter várias funções
desde que apenas uma seja a principal (a função que tiver o mesmo nome que o
arquivo) e as demais sejam auxiliares. As palavras reservadas function e end indicam,
respectivamente, início e final de definição de funções auxiliares. Cada função auxiliar
possui seu próprio Workspace. Seu escopo é o próprio arquivo, ou seja, ela só é
reconhecida por outras funções que estiverem no mesmo arquivo;
• Função aninhada (nested function): uma função pode conter várias funções
aninhadas.
• Função particular (private function): uma função particular é uma função auxiliar
armazenada em um arquivo diferente da rotina principal. Os arquivos de funções
particulares devem ser armazenados em um subdiretório denominado ‘private’. Esse
tipo e função é utilizado no caso em que várias rotinas principais utilizam uma
mesma função particular.
Função Usada como Parâmetro de Entrada

• Funções solvers que resolvem numericamente equações diferenciais – o nome


da função deve ser passado entre ‘ ‘ como parâmetro de entrada da função
solver;
• Objeto identificador de função – function handle
sintaxe: handle = @<nome da funcao>
@(<lista de argumentos>)<nome da funcao>(lista de argumentos)

• Funções que calculam numericamente integral de funções e funções de


otimização utilizam handle function

A integral da função seno entre


[0, π].
Função Usada como Parâmetro de Entrada

• O sinal ‘@’ também pode ser usado para definir funções anônimas (anonymous
functions) – funções sem nome, compostas apenas por uma linha de comando;
sintaxe: @(<lista de comandos>) <comando>

A função 𝑥𝑥 2 como anonymous function e o


cálculo da integral dessa função entre
[0,1]:
Expressões Lógicas

• O Matlab possui características de linguagem de programação estruturada e


emprega expressões lógicas nos testes utilizados pelas estruturas de seleção e
repetição;
• Os resultados de testes lógicos são armazenados em logical arrays – vetores de
bits (0 ou 1):
• 0 (zero) ou nil (nulo, vazio) indica condição falsa (false);
• 1 (um) ou diferente de 0 (zero) indica condição verdadeira (true).
Expressões Lógicas

Teste de tipo Matriz:


Sintaxe Típica Teste Retorna Verdadeiro Se:

Isempty (M) A matriz M é vazia

Isnumeric (M) A matriz M é numérica

Issparse (M) A matriz M é esparsa

Teste de tipo de Dado:

Sintaxe Típica Teste Retorna Verdadeiro Se:

Iscell(A) A é célula

Iscellstr (A) A é célula de cadeia de caracteres

Isfield (S,F) F é campo da estrutura S

Isstruct (S) S é estrutura


Expressões Lógicas

Teste de tipo Numérico:

Sintaxe Típica Teste Retorna Verdadeiro Se:

Isfinite (N) N é finito

Isinf (N) N é infinito

Isnan (N) N é NaN

Isreal (N) N é número real


Estruturas de Seleção

• As estruturas de seleção usam expressões lógicas para determinar o trecho de


código a ser executado;
Sintaxe Típica Descrição

If<[Link]> Se a expressão lógica <[Link]> for


<código1> verdadeira, executa o trecho de código
else <código1>; caso contrário, executa
<código2> <código2>.
end
If <[Link].1> Implementa encadeamento de
<codigo1> estruturas de if, else
elseif <[Link].2>
<codigo2>
else
<codigo3>
end
Switch <valor_teste> Executa trecho de código de acordo com
Case<expr_case1> o valor contido em uma variável de teste
<código1>
Case<expr_case2>
<codigo2>
....
Estruturas de Seleção

• Estrutura if/else
Estrutura de Seleção

• Estrutura if/elseif
Estruturas de Seleção

• Estrutura com switch


Estruturas de Repetição

• As estruturas de repetição utilizam expressões lógicas como critério de repetição de


execução de um determinado trecho de código.

Sintaxe Típica Descrição

While <[Link]> Executa o trecho do código <código>


<código> enquanto a expressão lógica <[Link]>
End for verdadeira
For V=<inic>:<incr>:<fim> Para cada valor da variável V (de <inic>
<codigo> até <fim>, com incremento <incr>),
end executa o trecho de código <código>.

O próximo exemplo trará


uma função que retorna
uma matriz triangular
inferior contendo o
desenvolvimento do
Triângulo de Pascal:
Estruturas de Repetição

Programação

Execução
Estatística de Execução de Programa

• O comando profile permite extrair relatórios com informações estatísticas


detalhadas sobre os tempos de execução de programas:

O relatório exibe as operações


em ordem decrescente de
tempo de execução.
Boas Práticas de Programação

• Escolher nomes significativos para variáveis e funções;


• Usar Identação para destacar o nível de aninhamento das estruturas de
programação;
• Iniciar todo arquivo de programa com texto de comentário contendo a
descrição e identificação de seu conteúdo;
• Incluir comentários explicativos ao longo do código.
Recuperação de Erro

• Um bom programa deve ter alta tolerância a falhas e capacidade de


recuperação de erros;
• O Matlab possui uma estrutura de dados específica: MWException

Campo Descrição

identifier Código de identificação interna do erro

message Mensagem de erro

cause Causa específica do erro

stack Subestrutura composta por 3 campos:


File: nome do arquivo onde o erro
ocorreu
Name: nome da função onde o erro
ocorreu
Line: número da linha onde o erro
ocorreu

• A função lasterror retorna uma estrutura MWException com a descrição


do último erro ocorrido.
Recuperação do Erro - mecanismos

• Programação try/catch:

Sintaxe Típica Descrição

Try Em caso de ocorrência de erro na


<código1> execução do trecho <código1>:
Catch Var 1. A execução é suspensa;
<código2> 2. A variável Var recebe uma estrutura
end de dados do tipo MWException
contendo a descrição do erro;
3. O trecho <código2> é executado.
Recuperação de Erro – try/catch

Função

Execução Incorreta

Execução Correta
Consulta ao Ambiente Operacional

• O MatLab possui funções que acessam informações de sistema que podem ser
utilizadas para criar programas que funcionem em ambientes operacionais
diferentes.

Sintaxe Típica Ação/Retorno

tp =computer Tipo de computador


• ‘PCWIN’: plataforma MS-Windows
32 bit
• ‘PCWIN64’: plataforma MS-Windows
64 bits
• ‘GLNXA64’:plataforma Linux 64 bits
• ‘MACI64’: plataforma Apple
Macintosh 64 bits
txt = filesep Separador de nome de arquivo da
plataforma
txt = getenv (‘var’) Variável de ambiente ‘var’. Caso a
variável não exista, a função retorna
cadeia de caracteres vazia ‘’.
Setenv (‘var’, txt) Configura variável de ambiente ‘var’,
com valor txt.
Consulta ao Ambiente Operacional

• No caso de programas que fazem uso de arquivos temporários, uma prática


comum é criá-los no diretório temporário do sistema. Neste caso, as funções
getenv e filesep podem ser utilizadas para compor o nome do arquivo.

Exemplo:
Prealocação de Memória

• No Matlab, vetores e matrizes podem ser utilizados sem predefinição de


tamanho:

Isso é duplamente ineficiente


porque aumenta o tempo de
processamento e fragmenta a
memória.

Instrução Operação de Memória

a(1) = 10; Busca 8 bytes contíguos livres

a(2) = 20; Inutiliza os 8 bytes anteriores e busca 16


novos bytes contíguos livres.
a(5) = 50 Inutiliza os 16 bytes anteriores e busca
40 novos.
Prealocação de Memória

• No caso de vetores e matrizes grandes é recomendável predefinir suas dimensões,


o que equivale prealocar a quantidade de memória que será utilizada;
• A função triangulo_pascal é um exemplo de Prealocação, onde a quantidade de
memória necessária para armazenar a matriz a é prealocada pela função eye, que
cria uma matriz identidade n x n.

Mesma função sem Prealocação...


Prealocação de Memória

• Os comandos tic/toc podem ser usado para comparar os tempos de execução de


cada função e comprovar a melhoria ganha com a adoção de prealocação de
memória.
Sintaxe Típica Ação/Retorno

Tic Inicia a cronometragem

toc Encerra a cronometragem

Obs.: quanto maior o tamanho da matriz, mais acentuada é a diferença entre os


tempos de execução.
Barra de Tempo de Execução

• Função waitbar – exibe uma caixa de diálogo com barra de tempo de


execução.
Sintaxe Típica Ação/Retorno

h = waitbar(0, Msg) Cria a caixa de diálogo com barra de


tempo e retorna o identificador da caixa.
• Msg: mensagem
Waitbar(F,h) Atualiza a barra de tempo:
• F: fração de execução
• h:Identificador da caixa
Textos de Comentário e Publicação de Código

• ‘%%’ – publish-
Publicação de código
Proteção de Código

• O comando pcode cria uma versão codificada de programas Matlab para


proteger códigos-fonte. Extensão .p.
Gerenciamento de Arquivos de Programas

Com o auxílio de alguns utilitários, que produzem relatórios, é possível gerenciar


sistemas compostos por vários arquivos de programa.
• Code Analyzer Report: gera relatório de verificação de sintaxe de todos os arquivos
de programa contidos no diretório corrente. A análise é semelhante à realizada,
individualmente, para cada arquivo dentro do edit.
• TODO/FIXME Report: Esse utilitário supõe que os arquivos de programa estão em
processo de desenvolvimento e que, por este motivo, contêm o texto:
• TODO: para indicar algo que deve ser feito
• FIXME: para indicar algo que deve ser corrigido
• Help Report: gera relatório com o conteúdo do texto help de todos os arquivos
contidos no diretório. É útil para uniformizar os textos de help dos programas que
fazem parte do sistema.
• Contents Report: gera relatório com primeiro parágrafo do texto de help de todos
os arquivos contidos no diretório. É útil para criar um índice de conteúdo do
diretório.
Gerenciamento de Arquivos de Programa

• Dependency Report: gera relatório de dependência de funções (quem chama


quem, quem é chamado por quem) para todos os arquivos contidos no
diretório corrente. É muito útil para composição de documentação de sistema.
• Coverage Report: gera relatório sobre a porcentagem de código executado na
última contagem de tempo contabilizada pelo comando profile.
• Compare: gera relatório de comparação entre códigos contidos em dois
arquivos de programa. É útil para manutenção de versões de programa.
Próxima Aula:

Leitura e Gravação de Arquivos


Ponta Grossa

Obrigada

Taysa Millena Banik


taysabanik@[Link]

Você também pode gostar