Você está na página 1de 8

UniversidadeEstadualPaulistaFEBDEE

Laboratrio02 ConceitosbsicossobreProgramaoemMatlab

1. Objetivos Aps realizar as atividades propostas neste roteiro, o aluno dever: Criar e executar funes e scripts. Manipular e utilizar operaes lgicas. Utilizar estruturas de deciso e repetio.

2. Introduo Os arquivos de programa do Matlab tm extenso do tipo .m e so usualmente denominados m-files. Os programas em Matlab podem ser divididos em dois tipo; Scripts e Funes. Script uma seqncia de comandos executados que utiliza variveis do Workspace, mas que no admite parmetros de entrada nem de sada. Funo uma seqncia de comandos, mas diferentemente dos Scripts, aceita parmetros de entrada e de sada. Utilizam espao prprio de memria para armazenar as variveis locais.

3. Procedimento O ambiente de programao ou editor de programas pode ser acionado digitando >>edit na linha de comando ou atravs do menu (File => New => M-file). No editor de programas, linhas que iniciam com o smbolo % so linhas de comentrios. Linhas que terminam com ... indicam que o comando continua na linha seguinte. As cores do texto durante a digitao do programa identificam diferentes elementos como, por exemplo, palavras reservadas, texto de comentrios, comandos do sistema operacional, funes, variveis, etc... O aluno deve reproduzir os exemplos seguindo as explicaes em sala de aula.

UniversidadeEstadualPaulistaFEBDEE

3.1. Scripts e Funes Aps abrir o editor de programa crie o Script apresentado da figura abaixo e salve-o com o nome Script1.m. O programa Script1 cria um vetor de valores para x no intervalo entre -2 e 2, calcula a funo produto sen(x) ex gerando o grfico em uma figura por meio do comando plot. O comando title utilizado para estabelecer o ttulo do grfico na parte central superior da figura. O Script pode ser executado digitando o nome do Script na linha de comando da janela command window. Execute o Script criado (Script1.m) diversas vezes alterando alguns valores e verifique o resultado.
Grfico Exemplo

%Exemplodearquivoscript %desenhaogrficof(x)=sin(x)*exp(x), 2*pi<x<2*pi x=2*pi:0.1:2*pi; plot(x,sin(x).*exp(x)); title('GrficoExemplo');

20

-20

-40

-60

-80

-100

-120

-140

-160

-180 -8

-6

-4

-2

O exemplo seguinte ilustra a criao e execuo de uma Funo. A funo calcula a mesma funo produto sen(x) ex utilizada no Script anterior, entretanto, requer o estabelecimento dos parmetros de entrada (inicio, incremento e final) e de sada (y). Crie a Funo do exemplo e salve-a com o nome funcao1.m. Observe que na funo existem parmetros de entrada e sada. Execute o a funo criada (funcao1.m) diversas vezes procurando mudar os parmetros de entrada e seu reflexo na sada.

UniversidadeEstadualPaulistaFEBDEE
%Exemplodearquivodefuncao %desenhaogrficof(x)=sin(x)*exp(x), inicio<x<final %parametrosdeentrada: %incicio:iniciodointervalo %final:finaldointervalo %parametrosdesaida: %y=vetorresultadosin(x)*exp(x) %Exemplo:y=funcao1(0,0.1,10); functiony=funcao1 (inicio,incremento,final) x=inicio:incremento:final; y=sin(x).*exp(x); plot(x,y); title('Grficosin(x)*exp(x)')
Grfico sin(x)*exp(x) 4000

2000

-2000

-4000

-6000

-8000

-10000

-12000

10

A sntese bsica da definio de uma funo segue o formato: function [ Ps1, ... , Psn] = nome_funcao (Pe1, ... Pem) onde Psi e Pei correspondem aos parmetros de sada e entrada respectivamente. A chamada ou execuo da funo segue o formato: [Ps1, ... , Psn]=nome_funcao(Pe1, ... Pem) O exemplo seguinte ilustra a criao e execuo de uma funo de duas variveis. Esta funo fornece a posio e a velocidade de um ponto em movimento uniformemente variado por meio das equaes bsica da cinemtica. Identifique os parmetros de entrada (posio inicial, velocidade inicial, acelerao e tempo) e de sada (posio e velocidade). Crie a funo salvando-a com o nome muv.m.
%muv.m:MovimentoUniformementeVariado %[s,v]=muv(s0,v0,a,t) %Parametrosdeentrada %s0:espacoinicial %v0:velocidadeinicial %a:aceleracao %t:vetorintervalodetempo %Parametrosdesaida %s:vetorespacodadopors=s0+v0*t+(a/2)*t^2 %v:vetorvelocidadedadoporv=v0+a*t %(cotinuaaonoquadroaolado) %Exemplodechamadadafuncao %t=0:0.1:10; %[s,v]=muv(0,1,1,t); function[s,v]=muv(s0,v0,a,t) s=s0+v0*t*a/2*t.*t; v=v0+a*t; >>t=0,0.1,10; >>[s,v]=muv(0,2,1,t); >>plot(t,s) >>figure >>plot(t,v)

UniversidadeEstadualPaulistaFEBDEE

posio x tempo 70
12 velocidade x tempo 11

60
10

50

posio (m)

40

velocidade (m/s)

30

20

10
3

5 tempo (s)

10

5 tempo (s)

10

As funes trabalham com variveis locais armazenadas em rea de memria prpria e independente do workspace. Note que as variveis do workspace no so reconhecidas dentro das funes e que as variveis locais de funes no so reconhecidas no Matlab. Os parmetros de entrada e sada das funes nada mais so do que uma troca de dados entre os dados do workspace e os dados da memria local da funo. Outra forma de troca de dados entre workspace memria local da funo a utilizao de variveis globais. Ao definir uma varivel global, seu contedo ser automaticamente disponibilizado tanto no workspace quanto na memria local de programa. O exemplo abaixo ilustra uma funo na qual se utiliza varivel global. Crie e execute o programa observando a utilidade da varivel global.

3.2. Expresses booleanas Expresses booleanas no Matlab so similares s expresses booleanas utilizadas em linguagens de programao estruturada. No Matlab 0 (zero) ou nil (nulo, vazio) indica condio falsa (F false) enquanto 1 (um) ou diferente de zero indica condio verdadeira (T true). A tabela abaixo mostra os smbolos dos testes e operadores booleanos no Matlab.

Smbolo == (eq) ~= (ne) < (lt) > (gt) <= (le)

Tipo de Desigualdade ou Operador Lgico Igual Diferente Menor que Maior que Menor ou igual

exemplo I==J I~=J I<J I>J I<=J

UniversidadeEstadualPaulistaFEBDEE

>= (ge) ~ (not) & (and) | (or)

Maior ou igual Negao E OU

I>=J ~I I&J I|J

Reproduza os exemplos seguintes observando como os operadores booleanos podem ser utilizados.
>> i = 10; >> j = 15; >> i = = j ans = 0 >> i ~= j; ans = 1 >> i < j ans = 1 >> i = = j | i < 20 ans = 1 >> a=[1 2 3]; >> b=[1 3 3]; >> a = = b ans = 101 >> a ~= b ans = 010 >> a > b ans = 000 >> a<= b ans = 111

O Matlab tambm possui funes booleanas matriciais conforme ilustra a tabela abaixo. Reproduza os exemplos seguintes observando como as funes booleanas matriciais operam. Funo isempty isequal isnumeric ischar isspace Teste retorna verdadeiro se Matriz M vazia as matrizes forem numericamente iguais Matriz M numrica Matriz M alfanumrica Matriz M esparsa exemplo isempty(M) isequal(M1,M2) isnumeric(M) ischar(M) isspace(M)

Exemplos de utilizao de funes booleanas matriciais:


>> M= [ ] M = [] >> isempty(M) ans = 1 >> M1=[1 2; 3 4]; >> M2=[1 3; 5 6]; >> isequal(M1,M2) ans = 0

UniversidadeEstadualPaulistaFEBDEE

3.3. Estruturas de seleo Neste tpico so apresentadas as sintaxes e exemplos de estruturas de seleo.

if, elseif, else

% Sintaxe if <Expr.Bool.1> < Expresso1> elseif < Expr.Bool.2> < Expresso2> else < Expresso3> end

%Exemplo 1 if I == J diplay('igual') else diplay('diferente') end

% Exemplo 2 if I == J A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = -1 else A(I,J) = 0; end

switch

% Sintaxe Switch <Valor teste> case <Expr.case1> < Expresso1> case <Expr.case2> < Expresso2> otherwise < Expresso3> end

% Exemplo switch Val case 0 A(I,J) = 2; case 1 A(I,J) = -1 otherwise A(I,J) = 0; end

A funo exemplo seguinte ilustra diferentes tipos de variveis admitidas pela expresso case. Crie a funo do exemplo salvando-a com o nome de teste_switch.m e execute os testes indicados nos exemplos.

UniversidadeEstadualPaulistaFEBDEE

% Funo tipo = teste_switch (valor_teste)

% Exemplo de Execuo

switch valor_teste case 10 tipo = 'Numero 10'; case 100,200,300 tipo = 'Numero 100, 200 ou 300'; case 'Alfa' tipo = 'Texto Alfa'; case { 'Beta' 'Gama' 'Delta' } tipo = 'Texto Beta, Gama ou Delta'; otherwise tipo = 'valor_teste no reconhecido'; end

>> teste_switch(10) ans = Numero 10 >> teste_switch(100) ans = Numero 100 ,200 ou 300 >> teste_switch('Alfa') ans = TextoAlfa >> teste_switch('Delta') ans = TextoBeta,GamaouDelta >> teste_switch('123') ans = valor_testenoreconhecido

3.4. Estruturas de repetio Neste tpico so apresentadas as sintaxes e exemplos de estruturas de repetio. while % Exemplo while I < m % Sintaxe while <Expr.Bool.> < Expresso1> .. < ExpressoN> end if I == J A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = -1; else A(I,J) = 0; end I=I+1 end

UniversidadeEstadualPaulistaFEBDEE

for % Exemplo for I =1:m if I == J % Sintaxe for <Valor>=<Inic>:<Incr>:<Fim> < Expresso1> .. < ExpressoN> end end I=I+1 end Como exerccio, crie a funo indicada a seguir (funo mfaixa) e verifique o uso das estruturas de deciso e repetio.
% Funo mfaixa % mfaixa.m: A=mfaixa(m,n) % retorna, em A, uma matriz faixa, com % diagonal principal 2 e segunda diagonal -1 For I=1:m for J =1:n Val=abs(I-J); switch Val; case 0 A(I,J)=2; case 1 A(I,J)=-1; otherwise A(I,J)=0; end end

A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = -1; else A(I,J) = 0;

end