Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Sub-rotinas e scripts Considerando uma sub-rotina simples no VBA: Enquanto no Matlab: Aqui, o script (a sub-rotina equivalente do Matlab) não precisa ser introduzida, nem as variáveis não precisam ser dimensionadas. 2. Variáveis Como não é necessário dimensionar as variáveis no Matlab, resta-nos definir os tipos de variáveis no VBA: Além das variáveis numéricas e de texto, podemos dimensionar intervalos de células (Range) como matrizes, mas vamos falar disso posteriormente. o Foco: Integer, Double, String e Range. o Quando uma variável não é dimensionada, ela automaticamente é definida como Variant. 3. Manipulação de valores a. Armazenamento de valores em uma variável (Array): VBA Nesse caso, escrevemos Application para trazer funções da planilha para o VBA. Se quisermos ser ainda mais específicos, poderíamos ter escrito Application.WorksheetFunction, nesse caso, o Excel mostraria todas as funções disponíveis (porém em inglês). Matlab b. Resto do divisor VBA Matlab Em ambos os casos, a variável resto retornará o resto da divisão de a quando dividido por b. No Matlab, é possível usar duas funções semelhantes: mod e rem. No exemplo, é fácil ver que ele retornará o valor 0. c. Conversão de dados No caso do VBA, pela grande variedade de tipos de variáveis, existem funções que transformam ou garantem que determinado tipo numérico ou de texto seja verdade. Por exemplo: o Foco: CDbl (converte um valor a uma double) e CStr (converte um valor a uma string). Já no Matlab, como os tipos são restritos, existem duas que merecem destaque: str2num e num2str. str2num: converte uma string para um número. num2str: converte um número para uma string. 4. Funções de input e output Input VBA Matlab A sintaxe ‘s’ indica que o valor desse input que se atribuído na variável str, necessariamente será uma string (texto). A função inputdlg é a função que mais se assemelha ao inputbox do VBA, uma vez que faz aparecer uma caixinha para digitar o valor do input. Output VBA MsgBox(prompt[, buttons] [, title] [, helpfile, context]) Para atribuir variáveis dentro da msgbox: Matlab fprintf(___) display(X) Para atribuir variáveis dentro do fprintf: Assim, o Matlab retornará: o %d é utilizado para referenciar variáveis numéricas, ou doubles, enquanto %s é utilizado para referenciar variáveis de texto, ou strings. 5. Estruturas de Decisão As estruturas de decisão executam o código a partir de dada condição. Serve para quando temos que avaliar um valor ou um resultado para tomar decisões diferentes de acordo com ele. a. Operadores lógicos 6. Estruturas de Laço Uma estrutura de laço é uma maneira de executar um conjunto de ações no código de forma repetida. Permite automatizar os códigos e realizar tarefas repetidamente. VBA For Next Ele começa com um valor inicial para um contador e este vai até um número final especificado. Durante o bloco de comandos, esse valor do contador pode realizar alguma função. Para incrementar um contador e voltar a execução ao início do bloco, basta digitar Next (soma o contador automaticamente). Do While Loop (“‘Faça enquanto esta condição for verdadeira”) Ela repete um bloco de comandos continuamente, mas é mais indicado quando se quer iterar um número de vezes indeterminado. Se esta condição for verdadeira, ele vai continuar executando até que ela seja falsa. Do Until Loop (“Faça até que esta condição seja verdadeira”) Ele serve também para repetir um bloco de comandos continuamente, mas é mais indicado quando se quer iterar um número de vezes indeterminado. Se esta condição for falsa, ele vai continuar executando até que ela seja verdadeira. (Interpretação contrária à da Do While Loop. Matlab Diferente do VBA, o Matlab não possui uma variedade de estruturas de laço. No caso que se segue, existem apenas duas estruturas análogas e equivalentes ao For Next e Do While Loop do VBA for end (equivalente ao For Next do VBA) while loop (equivalente ao Do While Loop do VBA) a. Forçar saída do Loop Caso haja necessidade de forçar uma saída do loop caso o código entrar em alguma condição específica, é possível colocar comandos que realizam esse trabalho: VBA: Para a estrutura For Next, utiliza-se o comando Exit For. Já para os Do’s, utiliza-se o comando Exit Do. Matlab: Nesse caso, só existe um comando: break. 7. Matrizes VBA No caso, do VBA, é imprescindível o dimensionamento das matrizes para sua futura manipulação. Nesse exemplo, criei uma variável RandMatrix que me retornará uma matriz na planilha com valores aleatórios. Para isso, dimensionei ela como uma variável Range. Para que eu consiga definir o intervalo que a minha matriz irá receber, é preciso usar o comando Set, ou seja, eu defini que a minha RandMatrix receberá o intervalo definido. As funções Rows.Count e Columns.Count contam o número de colunas e de linhas presentes na minha matriz. Após isso, usando a estrutura For Next, percorri todos os elementos da minha matriz e fazendo com que cada elemento recebesse um valor aleatório através das funções Cells e Rnd. Se eu não especificasse onde a função Cells ia randomizar os valores, ela começaria a partir da primeira linha e coluna da planilha. Como eu especifiquei que é para ela fazer esse trabalho somente com os elementos da minha matriz, a primeira linha e coluna será, agora, da minha própria matriz: Cells(lLinha, lColuna) ≠ RandMatrix.Cells(lLinha, lColuna) Função Application.Inputbox Essa função permite ao usuário definir a matriz na planilha manualmente: Definida a matriz, o resto do código permanece o mesmo. Matlab Já no Matlab, como não há necessidade de dimensionar a matriz, basta apenas definir o número de linhas e de colunas para gerar a matriz que quiser. No exemplo, farei o mesmo caso do VBA, gerando uma matriz aleatória. Nesse caso, todos os elementos da matriz A é percorrido e cada um recebe um valor aleatório entre 0 e 1 (pela função rand). Uma outra maneira de se fazer a mesma coisa, seria usando a função randi: A = randi([imin,imax], número de linhas, número de colunas) Diferente do caso anterior, essa função retornará uma matriz com valores aleatórios definidos entre as bandas de mínimo e máximo especificadas. A utilização da estrutura For de forma aninhada para percorrer a matriz é útil para fazer inferências sobre os elementos, como: Somar; Tirar a média; Testar se determinados elementos estão em determinadas posições... 8. Strings VBA Para manipular strings, existem algumas funções importantes: Len(string) o Retorna o número de caracteres de um texto (palavra ou frase). Mid(string, onde começa, tamanho do bloco) o Essa função corta uma string em blocos, começando em um ponto (geralmente variável), com um tamanho definido. Para procurar algum caractere ou palavra dentro de um texto, basta percorrer as letras da string com a estrutura For: Nesse exemplo, estou percorrendotodos os caracteres de uma variável chamada “texto” e cortando ela em blocos variáveis do tamanho da palavra que eu estou procurando. Quando o bloco cortado for igual à palavra que estou procurando, então somará 1 na minha variável j. Assim, o valor final de j será o número de vezes que essa palavra aparece no meu texto. Matlab Para manipular strings, existem algumas funções importantes: length(string) o Retorna o número de caracteres de um texto (palavra ou frase). strfind(string, palavra) o Retorna o número de vezes que a variável palavra se encontra dentro da variável string. No Matlab, o processo de encontrar o número de vezes que uma string se encontra dentro de outra é muito mais simples: Assim, a variável j contará todas as vezes que isso acontecer. Não é necessário percorrer todos os caracteres, cortando em blocos, como no VBA. 9. Considerações finais a. Comparação de strings No Matlab, a comparação de strings não funciona, como no exemplo a seguir: Para corrigir esse problema, basta usar a função strcmp. O equivalente acima seria: Ou seja, a função vai comparar a variável resp com a string ‘Sim’. Se resp for igual a ‘Sim’, então a função vai receber valor 1. Caso contrário, isto é, se resp for diferente de ‘Sim”, receberá valor 0. b. Teste numérico/texto Algumas vezes pode ser conveniente testar se alguns valores ou variáveis são de fato números ou strings. Para isso, o Matlab dispõe de duas funções que fazem esse teste: isnumeric() e ischar() Teste numérico Teste de texto Ou seja, isnumeric() retorna 1 para valores numéricos e 0 para não numéricos, e ischar() retorna 1 para valores de texto e 0 para valores não textuais.
Compartilhar