Buscar

Programação em VBA e Matlab (resumo)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.

Continue navegando