• Nenhum resultado encontrado

Programação em MATLAB

N/A
N/A
Protected

Academic year: 2021

Share "Programação em MATLAB"

Copied!
13
0
0

Texto

(1)

Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII

Programação em MATLAB

•Estruturas de Selecção (conclusão)

•Caso de Estudo: Cálculo de Áreas

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Estruturas genéricas de selecção

2222

Determina a instrução, ou conjunto de instruções, a executar:

se condição 1 acção 1 ...

se condição n acção n caso contrário

acção terminar

(2)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Estruturas de selecção no MATLAB

3333

Funções pré-definidas disponíveis no MATLAB:

Estruturas de selecção:

instruções if

instruções if-else

instruções if-elseencadeadas

instruções switch

Expressões lógicas específicas de execução eficiente:

funções is*

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função if-else

4444

Descrição: determina a instrução, ou conjunto de instruções, a ser executada.

Sintaxe: if expression statements_1 else

statements_2 end

Se expressão lógica = verdade

Caso contrário

(3)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função if-else

5555

>> aleatorio num =

0.2311

It was less than .5!

>> aleatorio num =

0.6068

It was not less than .5!

>> aleatorio num =

0.4860

It was less than .5!

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função if-else

6666

>> checkradius

Please enter the radius: -4

Sorry; -4.00 is not a valid radius

>> checkradius

Please enter the radius: 5.5

For a circle with a radius of 5.50, the area is 95.03

(4)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função if-else encadeada

7777

Descrição: determina a instrução, ou conjunto de instruções, a ser executada de entre um conjunto de opções possíveis.

Sintaxe: if expression_1 statements_1 elseif expression_2

statements_2 elseif expression_3

statements_3 . . .

else

statements_n end

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função if-else encadeada

8888

>> calcy(-2) ans =

1

>> calcy(0.5) ans =

0.2500

>> calcy(3) ans =

4

(5)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

9999

Determinar se argumento de entrada é escalar, vector ou matriz.

>> findargtype( rand ) ans =

scalar

>> findargtype( zeros(1,5) ) ans =

vector

>> findargtype( ones(5) ) ans =

matrix

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

10 1010 10

>> pauta_if(21) ans =

Valor inválido!

>> pauta_if(8) ans =

RE

>> pauta_if(9.5) ans =

10

>> pauta_if(18) ans =

18

(6)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função switch

11 1111 11

Descrição: determina a instrução, ou conjunto de instruções, a ser executada de entre um conjunto de opções possíveis.

Sintaxe: switch switch_expr case case_expr,

statement(s)

case {case_expr1, case_expr2, ...}

statement(s) ...

otherwise, statement(s) end

switch_expr é igual a case_expr?

switch_expr pertence a {case_expr1, case_expr2,...}?

operando contável (por exemplo, dos tipos inteiro, lógico ou carácter)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

12 1212 12

>> aleatorio_sw num =

0.2311

It was less than .5!

>> aleatorio_sw num =

0.6068

It was not less than .5!

>> aleatorio_sw num =

0.4860

It was less than .5!

(7)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

13 1313 13

>> pauta_sw(21) ans =

Valor inválido!

>> pauta_sw(8) ans =

RE

>> pauta_sw(9.5) ans =

10

>> pauta_sw(18) ans =

18

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

14 1414 14

>> diasmes('Fevereiro') ans =

28 ou 29 dias

>> m_actual = 'Novembro‘;

>> dias = diasmes(m_actual) dias =

30 dias

>> diasmes('Mai')

??? Error using ==> diasmes Mês inválido!

(8)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função menu

15 1515 15

Descrição: apresenta uma janela com opções de menu.

Sintaxe: option = menu(header,label1,label2,...) ou

labels = {label1,label2,...}

option = menu(header,labels)

>> opcoes = {'um','dois','três'};

>> option = menu('Menu de Opções',opcoes) ans =

3

option = 0

option = {1 ... 3}

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Função menu

16 1616 16

>> pickpizza mypick =

3

Order a sausage pizza

>> pickpizza mypick =

0

No pizza for us today

(9)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Conjunto de funções is*

17 1717 17

Descrição: funções pré-definidas no MATLAB que implementam expressões lógicas específicasde modo eficiente. São genericamente referenciadas pelo prefixo is*, seguido de um sufixo representativo da função.

>> isletter('a') ans =

1

>> meu_isletter('a') ans =

1

>> isletter('4') ans =

0

isletter('a')

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

18 1818 18

>> x = 4; isint(x) ans =

1

>> x = 3.9999; isint(x) ans =

0

>> x = 3.9999999999999999999999999999;

>> isint(x) ans =

1

Erro de arredondamento!

Alternativa: x == int32(x)

(10)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos de funções is*

19 1919 19

Comando Descrição

ischar Determine if input is character array isdir Determine if input is directory isempty Determine if input is empty array

isequal Determine if arrays are numerically equal isfinite Detect finite elements of array

isfloat Determine if input is floating-point array ishold Determine if graphics hold state is on isinf Detect infinite elements of array isinteger Determine if input is integer array

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos de funções is*

20 2020 20

Comando Descrição

iskeyword Determine if input is MATLAB keyword islogical Determine if input is logical array

isnan Detect elements of array that are not a number (NaN)

isnumeric Determine if input is numeric array

isreal Determine if all array elements are real numbers isscalar Determine if input is scalar

isspace Detect space characters in array isvector Determine if input is vector

(11)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

21 2121 21

>> x=6;

>> ischar(x) ans =

0

>> isempty(x) ans =

0

>> isequal(x,6) ans =

1

>> isfinite(x) ans =

1

>> isfloat(x) ans =

1

>> isinf(x) ans =

0

>> isinteger(x) ans =

0

>> islogical(x) ans =

0

>> isnumeric(x) ans =

1

>> isreal(x) ans =

1

>> isscalar(x) ans =

1

>> isvector(x) ans =

1

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Exemplos

22 2222 22

>> vector = []; isempty(vector) ans =

1

>> vector = [4;5;6]; isempty(vector) ans =

0

>> clear; isempty(vector)

??? Reference to a cleared variable vector.

(12)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Palavras reservadas do MATLAB

23 2323 23

>> iskeyword('sin') ans =

0

>> iskeyword('switch') ans =

1

>> iskeyword ans =

'break' 'case' 'catch' 'continue' 'else'

'elseif' 'end' 'for' 'function' 'global' 'if'

'otherwise' 'persistent' 'return' 'switch' 'try' 'while'

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Palavras reservadas do MATLAB

24 2424 24

>> iskeyword('pi') ans =

0

>> pi ans =

3.1416

>> pi = -3 ans =

-3

>> iskeyword('case') ans =

1

>> case = -3

??? case = -3

|

Error: Illegal use of reserved keyword "case".

(13)

José Borges

José Borges -- Miguel Miguel Pedro SilvaPedro Silva Computação e Programação 2009 / 2010Computação e Programação 2009 / 2010

Referências

25 2525 25

Capítulo 3 de Stormy Attaway (2009), “Matlab: A Practical Introduction to Programming and Problem Solving”, Elsevier.

Referências

Documentos relacionados

It was shown that there are high levels of genetic variability in two of the most important traits of grapevine and that those levels are different in different varieties and

Este artigo tem como justificativa levantar os principais pontos em relação aos temas acima abordados, para que assim sejam discutidas soluções não farmacológicas

Dito isto, as transformações de Möbius servem mais como uma ferra- menta para alcançar o verdadeiro objetivo deste texto, referido no parágrafo anterior: evidenciar as relações

Os exames imagiológicos convencionais 2D ainda são muito utilizados, como as radiografias periapicais, para avaliação de tratamentos, mas deve ser preterida em

Já a terceira seção, dos hábitos alimen- tares, engloba 11 variáveis que avaliam a freqüência de con- sumo alimentar em uma STN dos seguintes alimentos: frutas e sucos de

d) Determine the force acting on the particle, the equilibrium conditions, if any, and if they do exist, determine the frequency of particle oscillation in radial motion close to

Para além da gestão e monitorização dos perfis farmacoterapêuticos dos doentes, com o intuito de se atingir os efeitos clínicos e terapêuticos desejáveis, e a

The percentage of the population living in rural areas is used for determine the TL3 regions as: Predominantly Urban (PU), if less than 15% of the population is living