Programação em MATLAB Estruturas de Selecção (conclusão) Caso de Estudo: Cálculo de Áreas Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Estruturas genéricas de selecção Determina a instrução, ou conjunto de instruções, a executar: se condição acção... se condição n acção n caso contrário acção terminar 2
Estruturas de selecção no MATLAB Funções pré-definidas disponíveis no MATLAB: Estruturas de selecção: instruções if instruções if-else instruções if-else encadeadas instruções switch Expressões lógicas específicas de execução eficiente: funções is* 3 Função if-else Descrição: determina a instrução, ou conjunto de instruções, a ser executada. Sintaxe: if expression statements_ else statements_2 end Se expressão lógica = verdade Caso contrário 4 2
Função if-else >> aleatorio num =.23 It was less than.5! >> aleatorio num =.668 It was not less than.5! >> aleatorio num =.486 It was less than.5! 5 Função if-else >> checkradius Please enter the radius: -4 Sorry; -4. is not a valid radius >> checkradius Please enter the radius: 5.5 For a circle with a radius of 5.5, the area is 95.3 6 3
Função if-else encadeada 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_ statements_ elseif expression_2 statements_2 elseif expression_3 statements_3... else statements_n end 7 Função if-else encadeada >> calcy(-2) >> calcy(.5).25 >> calcy(3) 4 8 4
Exemplos Determinar se argumento de entrada é escalar, vector ou matriz. >> findargtype( rand ) scalar >> findargtype( zeros(,5) ) vector >> findargtype( ones(5) ) matrix 9 Exemplos >> pauta_if(2) Valor inválido! >> pauta_if(8) RE >> pauta_if(9.5) >> pauta_if(8) 8 5
Função switch 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, switch_expr é igual a case_expr? statement(s) case {case_expr, case_expr2,...} statement(s)... otherwise, statement(s) end operando contável (por exemplo, dos tipos inteiro, lógico ou carácter) switch_expr pertence a {case_expr, case_expr2,...}? Exemplos >> aleatorio_sw num =.23 It was less than.5! >> aleatorio_sw num =.668 It was not less than.5! >> aleatorio_sw num =.486 It was less than.5! 2 6
Exemplos >> pauta_sw(2) Valor inválido! >> pauta_sw(8) RE >> pauta_sw(9.5) >> pauta_sw(8) 8 3 Exemplos >> diasmes('fevereiro') 28 ou 29 dias >> m_actual = 'Novembro ; >> dias = diasmes(m_actual) dias = 3 dias >> diasmes('mai')??? Error using ==> diasmes Mês inválido! 4 7
Função menu Descrição: apresenta uma janela com opções de menu. Sintaxe: option = menu(header,label,label2,...) ou labels = {label,label2,...} option = menu(header,labels) >> opcoes = {'um','dois','três'}; >> option = menu('menu de Opções',opcoes) 3 option = {... 3} option = 5 Função menu >> pickpizza mypick = 3 Order a sausage pizza >> pickpizza mypick = No pizza for us today 6 8
Conjunto de funções is* 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') >> isletter('a') >> meu_isletter('a') >> isletter('4') 7 Exemplos >> x = 4; isint(x) >> x = 3.9999; isint(x) >> x = 3.9999999999999999999999999999; >> isint(x) Erro de arredondamento! Alternativa: x == int32(x) 8 9
Exemplos de funções is* Comando ischar isdir isempty isequal isfinite isfloat ishold isinf isinteger Descrição Determine if input is character array Determine if input is directory Determine if input is empty array Determine if arrays are numerically equal Detect finite elements of array Determine if input is floating-point array Determine if graphics hold state is on Detect infinite elements of array Determine if input is integer array 9 Exemplos de funções is* Comando iskeyword islogical isnan isnumeric isreal isscalar isspace isvector Descrição Determine if input is MATLAB keyword Determine if input is logical array Detect elements of array that are not a number (NaN) Determine if input is numeric array Determine if all array elements are real numbers Determine if input is scalar Detect space characters in array Determine if input is vector 2
Exemplos >> x=6; >> ischar(x) >> isempty(x) >> isequal(x,6) >> isfinite(x) >> isfloat(x) >> isinf(x) >> isinteger(x) >> islogical(x) >> isnumeric(x) >> isreal(x) >> isscalar(x) >> isvector(x) 2 Exemplos >> vector = []; isempty(vector) >> vector = [4;5;6]; isempty(vector) >> clear; isempty(vector)??? Reference to a cleared variable vector. 22
Palavras reservadas do MATLAB >> iskeyword('sin') >> iskeyword('switch') >> iskeyword 'break' 'case' 'catch' 'continue' 'else' 'elseif' 'end' 'for' 'function' 'global' 'if' 'otherwise' 'persistent' 'return' 'switch' 'try' 'while' 23 Palavras reservadas do MATLAB >> iskeyword('pi') >> pi 3.46 >> pi = -3-3 >> iskeyword('case') >> case = -3??? case = -3 Error: Illegal use of reserved keyword "case". 24 2
Referências Capítulo 3 de Stormy Attaway (29), Matlab: A Practical Introduction to Programming and Problem Solving, Elsevier. 25 3