Você está na página 1de 13

1.

Sub-rotinas e scripts
Considerando uma sub-rotina simples no VBA:

Enquanto no Matlab:

2.

Aqui, o script (a sub-rotina equivalente do Matlab) no precisa ser


introduzida, nem as variveis no precisam ser dimensionadas.

Variveis
Como no necessrio dimensionar as variveis no Matlab, resta-nos definir os
tipos de variveis no VBA:

Alm das variveis numricas e de texto, podemos dimensionar intervalos


de clulas (Range) como matrizes, mas vamos falar disso posteriormente.
o Foco: Integer, Double, String e Range.
o Quando uma varivel no dimensionada, ela automaticamente
definida como Variant.

3. Manipulao de valores
a. Armazenamento de valores em uma varivel (Array):
VBA

Nesse caso, escrevemos Application para trazer funes da planilha


para o VBA. Se quisermos ser ainda mais especficos, poderamos
ter escrito Application.WorksheetFunction, nesse caso, o Excel
mostraria todas as funes disponveis (porm em ingls).
Matlab

b. Resto do divisor
VBA

Matlab

Em ambos os casos, a varivel resto retornar o resto da diviso de


a quando dividido por b. No Matlab, possvel usar duas funes
semelhantes: mod e rem. No exemplo, fcil ver que ele retornar
o valor 0.

c. Converso de dados
No caso do VBA, pela grande variedade de tipos de variveis,
existem funes que transformam ou garantem que determinado
tipo numrico 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 so restritos, existem duas que
merecem destaque: str2num e num2str.
str2num: converte uma string para um nmero.

num2str: converte um nmero para uma string.

4. Funes de input e output

VBA

Input

Matlab

A sintaxe s indica que o valor desse input que se atribudo na varivel


str, necessariamente ser uma string (texto).

A funo inputdlg a funo 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 variveis dentro da msgbox:

Matlab
fprintf(___)
display(X)
Para atribuir variveis dentro do fprintf:

Assim, o Matlab retornar:


o %d utilizado para referenciar variveis numricas, ou
doubles, enquanto %s utilizado para referenciar variveis
de texto, ou strings.

5. Estruturas de Deciso
As estruturas de deciso executam o cdigo a partir de dada condio.
Serve para quando temos que avaliar um valor ou um resultado para
tomar decises diferentes de acordo com ele.

a. Operadores lgicos

6. Estruturas de Lao
Uma estrutura de lao uma maneira de executar um conjunto de aes
no cdigo de forma repetida. Permite automatizar os cdigos e realizar
tarefas repetidamente.
VBA
For Next
Ele comea com um valor inicial para um contador e este vai at
um nmero final especificado. Durante o bloco de comandos, esse
valor do contador pode realizar alguma funo. Para incrementar
um contador e voltar a execuo ao incio do bloco, basta digitar
Next (soma o contador automaticamente).

Do While Loop (Faa enquanto esta condio for verdadeira)


Ela repete um bloco de comandos continuamente, mas mais
indicado quando se quer iterar um nmero de vezes indeterminado.
Se esta condio for verdadeira, ele vai continuar executando at
que ela seja falsa.

Do Until Loop (Faa at que esta condio seja verdadeira)


Ele serve tambm para repetir um bloco de comandos
continuamente, mas mais indicado quando se quer iterar um
nmero de vezes indeterminado. Se esta condio for falsa, ele vai
continuar executando at que ela seja verdadeira. (Interpretao
contrria da Do While Loop.

Matlab
Diferente do VBA, o Matlab no possui uma variedade de estruturas
de lao. No caso que se segue, existem apenas duas estruturas
anlogas 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. Forar sada do Loop


Caso haja necessidade de forar uma sada do loop caso o cdigo
entrar em alguma condio especfica, possvel colocar comandos
que realizam esse trabalho:
VBA: Para a estrutura For Next, utiliza-se o comando Exit For. J
para os Dos, utiliza-se o comando Exit Do.
Matlab: Nesse caso, s existe um comando: break.

7. Matrizes
VBA
No caso, do VBA, imprescindvel o dimensionamento das matrizes para
sua futura manipulao.

Nesse exemplo, criei uma varivel RandMatrix que me retornar uma


matriz na planilha com valores aleatrios. Para isso, dimensionei ela como
uma varivel 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 funes Rows.Count e Columns.Count contam o nmero de
colunas e de linhas presentes na minha matriz.
Aps isso, usando a estrutura For Next, percorri todos os elementos da
minha matriz e fazendo com que cada elemento recebesse um valor
aleatrio atravs das funes Cells e Rnd.

Se eu no especificasse onde a funo Cells ia randomizar os


valores, ela comearia 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 prpria matriz:
Cells(lLinha, lColuna) RandMatrix.Cells(lLinha, lColuna)
Funo Application.Inputbox

Essa funo permite ao usurio definir a matriz na planilha


manualmente:

Definida a matriz, o resto do cdigo permanece o mesmo.

Matlab
J no Matlab, como no h necessidade de dimensionar a matriz, basta
apenas definir o nmero de linhas e de colunas para gerar a matriz que quiser.
No exemplo, farei o mesmo caso do VBA, gerando uma matriz aleatria.

Nesse caso, todos os elementos da matriz A percorrido e cada um recebe um


valor aleatrio entre 0 e 1 (pela funo rand).
Uma outra maneira de se fazer a mesma coisa, seria usando a funo randi:

A = randi([imin,imax], nmero de linhas, nmero de


colunas)

Diferente do caso anterior, essa funo retornar uma matriz com valores
aleatrios definidos entre as bandas de mnimo e mximo especificadas.

A utilizao da estrutura For de forma aninhada para percorrer a matriz til


para fazer inferncias sobre os elementos, como:

Somar;
Tirar a mdia;
Testar se determinados elementos esto em determinadas
posies...

8. Strings
VBA
Para manipular strings, existem algumas funes importantes:
Len(string)
o Retorna o nmero de caracteres de um texto (palavra ou
frase).
Mid(string, onde comea, tamanho do bloco)
o Essa funo corta uma string em blocos, comeando em um
ponto (geralmente varivel), 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 percorrendo todos os caracteres de uma varivel


chamada texto e cortando ela em blocos variveis do tamanho da
palavra que eu estou procurando. Quando o bloco cortado for igual
palavra que estou procurando, ento somar 1 na minha varivel j. Assim,
o valor final de j ser o nmero de vezes que essa palavra aparece no meu
texto.
Matlab
Para manipular strings, existem algumas funes importantes:
length(string)
o Retorna o nmero de caracteres de um texto (palavra ou
frase).
strfind(string, palavra)
o Retorna o nmero de vezes que a varivel palavra se
encontra dentro da varivel string.
No Matlab, o processo de encontrar o nmero de vezes que uma string se
encontra dentro de outra muito mais simples:

Assim, a varivel j contar todas as vezes que isso acontecer. No


necessrio percorrer todos os caracteres, cortando em blocos, como no
VBA.

9. Consideraes finais
a. Comparao de strings
No Matlab, a comparao de strings no funciona, como no exemplo a
seguir:

Para corrigir esse problema, basta usar a funo strcmp. O equivalente


acima seria:

Ou seja, a funo vai comparar a varivel resp com a string Sim. Se resp
for igual a Sim, ento a funo vai receber valor 1. Caso contrrio, isto
, se resp for diferente de Sim, receber valor 0.

b. Teste numrico/texto
Algumas vezes pode ser conveniente testar se alguns valores ou
variveis so de fato nmeros ou strings. Para isso, o Matlab dispe
de duas funes que fazem esse teste: isnumeric() e ischar()
Teste numrico
Teste de texto

Ou seja, isnumeric() retorna 1 para valores numricos e 0


para no numricos, e ischar() retorna 1 para valores de texto
e 0 para valores no textuais.

Você também pode gostar