quarta-feira, 3 de novembro de 2010

Programando no MatLab

Programando no MatLab


Sou programador de C já faz um bom tempo (desde 1986). Recentemente fui apresentado ao MatLab de maneira meio por necessidade, e fiquei apavorado com a quantidade de arquivos pequenos que podem ser gerados, pois cada função tem que ter seu próprio arquivo ".m"

Se divido o meu fluxo de programa em sub-rotinas ou funções,  cada uma tem que ter seu próprio arquivo. Então a solução para manter o número de arquivos sob controle é colocar muitas coisas em uma única função. Para fazer isto de maneira ordenada no MatLab, que é uma linguagem interpretada, deve ser utilizado o comando "switch" com vários "case"s.

O MatLab permite passar um número variável de variáveis para uma rotina ou função. Então é viável utilizar algo desta maneira:

function [s1 s2] = faz_tudo(o_que, p1, p2, p3)
  switch o_que
    case 'plota'
        % p1 contém os dados a plotar, plot1 é a TAG do elemento onde deve ser plotado o gráfico.
         plot(handles.plot1, p1);
    case 'liste'
       % p1 contém a lista a ser mostrada
        % p2 é o "handle" que aponta para a matriz de elementos.
        set(p2.lista1, 'String', p1);
  end % fim do case
end  % fim da função.

Desta forma, cada pedacinho que seria uma função separada, fica dentro de um case. Basta chamar a função faz_tudo passando os parâmetros necessários para aquele "case".  Usa-se as primeiras variáveis (p1, p2, p3) e passa apenas a quantidade que precisar para cada caso ("case"). Desta forma só precisa de uma função faz_tudo, e cada "rotina" fica dentro do seu próprio "case", eliminando uma série de arquivos pequenos.

É claro que se a rotina crescer muito, poderá merecer o seu próprio arquivo, e não ser apenas um case no faz_tudo.

Utilizando a sugestão proposta acima, poderá ser criado uma espécie de biblioteca de funções úteis, tudo em um único arquivo. Cada função seria um case da função "biblioteca". Assim não será necessário re-escrever tudo (ou copiar diversos arquivos) para cada novo projeto. Basta copiar o arquivo "biblioteca" e já estará meio caminho andado para a conclusão de seu novo projeto.

Nenhum comentário:

Postar um comentário