Sei sulla pagina 1di 46

IntroduoaoScilab

(Aula 3)
ContedoGeral

Aula1
OqueoScilab
PrincipaisCaractersticasdoambienteScilab
OperaesBsicas

Aula2
Polinmios,VetoreseMatrizes

Aula3
Listas
ProgramaocomScilab

Aula4
GrficosemScilab
IntroduoaoScicos
Aula3

Aula3

1Listas
ProgramaocomScilab
2CaractersticasdalinguagemScilab
3ComandosparaIteraes
3.1Olaofor
3.2Olaowhile
4ComandosCondicionais
4.1Ifthenelse
4.2Selectcase

Aula3(cont.)

Aula3(cont.)

5Scripts
6Funes
6.1Variveisglobaisxlocais
7Exerccios
1Listas

Umalistaumagrupamentodeobjetosnonecessariamentedo
mesmotipo.

UmalistasimplesdefinidanoScilabpelocomandolist,que
possuiestaformageral:
list(a1,a2,...,an)

ondea1,a2,...,ansooselementosdalista
1Listas(cont.)
Paraexemplificarcriouseumalistacompostadonmero23,
ocaracterqeumamatrizidentidade2x2.

L=23 , q ,
[ ]
1 0
0 1

>L=list(23,'q',eye(2,2))
L=
L(1)//elemento1=23
23.
L(2)//elemento2=q
q
L(3)//elemento3=matrizidentidade2x2
1.0.
0.1.
1Listas(cont.)
Criandosublistas:
Podemoscriarsublistas,ouseja,listasdentrodelistas.Para
exemplificartransformamososegundoelementodalistaLemuma
listadedoiselementos.Reparequeoprimeiroelementocontinua
sendoocaracterqmasosegundoelementopassaaseruma
stringabc.

L=23 , q ,
[ ]
1 0
0 1
L=23 ,q , abc ,
[ ]
1 0
0 1

1Listas(cont.)
>L(2)=list('q','abc')//fazL(2)=(q,abc)
L=
L(1)
23.
L(2)

L(2)(1)
q
L(2)(2)
abc
L(3)
1.0.
0.1.
1Listas(cont.)
Acessoaelementosdeumalista:
Ex.1:acessandooprimeiroelemento:
>L(1)
ans=
23.
Ex.2:acessandoosegundoelementodasublistadentrodeL(2):

>L(2)(2)
ans=

abc
ProgramaocomScilab
2CaractersticasdaLinguagemScilab

OScilabuminterpretadordecomandoseporissoocdigo
geradonoprecisasercompilado.

Facilidadeesimplicidadedalinguagemestruturada.

Nohnecessidadededeclaraoprviadasvariveis.

3ComandosparaIterao

ExistemduasestruturasdecontroleiterativonoScilab:o
laoforeocomandowhile.

3ComandosparaIterao
3.1Olaofor

Formageral:
forvariavel=vetor_linhaoulista
instrucao_1
instrucao_2
instrucao_3
end

Ocomportamentodasiteraesbaseadonovetorlinhaouna
lista.Seovetortem3elementos,existiro3iteraes.
3ComandosparaIterao(cont.)
3.1Olaofor

Ex.1(usandovariveltipovetor):
m=1:3;
for k=m
a=k+1
end
>m=1:3;
>fork=m
>a=k+1
>end
a=
2.
a=
3.
a=
4.
3ComandosparaIterao(cont.)
3.1Olaofor

Ex.2(usandovariveltipovetor):
y=0;
m=3:5;
fork=m, y=y+k,end

>y=0;
>fork=3:5,y=y+k,end
y=
3.
y=
7.
y=
12.
3ComandosparaIterao(cont.)
3.1Olaofor

Ex.3(usandovariveltipolista):
L=list(2,[24;68],'exemplo');
fork=L,disp(k),end

>L=list(2,[24;68],'exemplo');
>fork=L,disp(k),end//
2.

2.4.

6.8.

exemplo
3ComandosparaIterao(cont.)
3.2Olaowhile

Formageral:
whilecondicao
instrucao_1
instrucao_2
......
instrucao_n
end
Olaowhilerepeteumaseqnciadeinstruesenquantouma
condioforsatisfeita.
tilquandonosesabeonmerodeiteraes.
3ComandosparaIterao(cont.)
3.2Olaowhile

Operadorespermitidos:
==ou=(iguala)
<(menorque)
>(maiorque)
<=(menorouigual)
>=(maiorouigual)
<>ou~=(diferente)
3ComandosparaIterao(cont.)
3.2Olaowhile
Ex.1:x=1;
whilex<14
x=2*x
end
>x=1;
>whilex<14//enquantoxformenorque14
>x=2*x//instrucao:facax=2x
>end
x=
2.//x=1*2=2
x=
4.//x=2*2=4
x=
8.//x=4*2=8
x=
16.//x=8*2=16.Comox>14olooptermina.
4ComandosCondicionais

Comandoscondicionaissousadosparaexecutar
seqnciasdeinstruesapartirdaavaliaodecondies
booleanas.

4ComandosCondicionais
4.1ifthenelse

Formasimples:
ifcondicao_1then
sequencia_1
else
sequencia_2
end

Avaliaacondicao_1seelaforverdadeira(T,true)executaa
sequencia_1,casocontrrioexecutaasequencia_2.
4ComandosCondicionais(cont.)
4.1ifthenelse
Formageral:
ifcondicao_1then
sequencia_1
elseifcondicao_2
sequencia_2
else
sequencia_3
end

Seacondicao_1forverdadeiraexecutaasequencia_1.
Seacondicao_1forfalsaavaliaacondicao_2eassimpordiante.
Setodasascondiessofalsasexecutaasequencia_3.
4ComandosCondicionais(cont.)
4.1ifthenelse
Ex.1(formasimples):

>x=1;

>ifx<0then//sexformenorque0
>y=x;//facay=x
>else//casocontrario
>y=x;//facax=x
>end
>disp(y)//mostravalordey

1.
4ComandosCondicionais(cont.)
4.1ifthenelse
Ex.2(formageral):

>x=10;
>ifx<0then
>y=x;
>elseifx==1
>y=2*x;
>elseifx==2
>y=3*x;
>elseifx==3
>y=4*x;
>else
>y=5*x;
>end
>disp(y)
50.
4ComandosCondicionais(cont.)
4.2selectcase
Formageral:
selectvariavel_de_teste
caseexpressao_1
sequencia_1
caseexpressao_n
sequencia_n
else
sequencia_n+1
end
Ovalordavariavel_de_testecomparadosexpresses.
Seosvaloressoiguais,aseqnciacorrespondente
executada.

4ComandosCondicionais(cont.)
4.2selectcase
Ex.:

>M=['a''b'];//definematrizsimbolica
>selectM(1,2)//selecionaelemento(1,2)deM

>case'a'//seoelemento(1,2)=a
>disp('letraaencontrada')//escreve'letraa...'

>case'b'//seoelemento(1,2)=b
>disp('letrabencontrada')//escreve'letrab...'

>end
5Scripts

Osscriptssoarquivosdetextopuroquecontmcomandosque
seriamusadosemumpromptdoScilab.

Porconvenoestesarquivospossuemextenso.sce

OsarquivossocriadosnoeditordetextodoScilab,oScipad(ou
emqualqueroutroeditordetexto).
OsarquivossoexecutadosnoScilab:
comocomandoexec,ou
comomenuFile>FileOperationsselecionandoo
arquivoeclicandonobotoexec
5Scripts(cont.)

Ex.1scriptquecalculaasrazesquadradasdosnmeros
inteirosde10a10.
Obs.:Estescriptdeveserdigitadoemumeditordetextosesalvo
comaextenso.sce

//scriptquecalcularaizesdosnumerosinteiros
//de10a10
n=0;
forx=10:10
n=n+1;
y(n)=sqrt(x);
end
y
5Scripts(cont.)
Paraexecutarestescriptuseocomandoexecnome_do_script.sce
nopromptdoScilab:
>execraizes.sce//chamandooscriptraizes.sce
>//scriptquecalculaasrazesquadradasdosnmeros
inteirosde10a10.
>n=0;
>forx=10:10
>n=n+1;
>y(n)=sqrt(x);
>end
>y
y=
3.1622777i
3.i
2.8284271i
2.6457513i
...
5Scripts(cont.)
Casoocomandoexecsejaexecutadocom';'(pontoevrgula)no
fimapenasosresultadossoapresentados:
>execraizes.sce;
y=
3.1622777i
3.i
2.8284271i
2.6457513i
2.4494897i
2.236068i
2.i
1.7320508i
1.4142136i
i
0
1.
...
6Funes

possveldefinirnovasfunesnoScilab;

Oquedistingueumafunodeumscriptqueafunopossui
umambientelocal,separadodoglobal,masquesecomunica
atravsdeargumentosdeentradaesada;

Variveisdefinidasnoescopodafuno(variveislocais)no
permanecemnoambienteapsaexecuodafuno;
6Funes

Definio:

Umafunopodeserdefinidadetrsformas:
noambienteScilab;
usandoocomandodeffou
digitandootextonoScipadeclicandonomenuExecute,
opoloadintoScilab

6Funes
Definionoambiente:
function[y1,...,yn]=nome_da_funcao(x1,...,xm)
instrucao_1
instrucao_2
...
instrucao_p
endfunction

onde:
x1,...,xmsoosargumentosdeentrada;
y1,...,ynsoargumentosdesadae
instruco_1,...,instrucao_psoasinstruesexecutadaspela
funo.

6Funes(cont.)
Ex.(definionoambiente):
>function[y1]=funcao1(x1,x2)
>y1=x1+x2
>endfunction

>[a]=funcao1(1,2)//chamandoafuncao

a=

3.

>//ovalordafunoretornanavariavel'a'
6Funes(cont.)

Definiousandoocomandodeff:

deff('[y1,...,yn]=nome_da_funcao(x1,...,xm)','instrucao_1,...,instrucao_p')

onde:
x1,...,xmsoosargumentosdeentrada;
y1,...,ynsoargumentosdesadae
instruco1,...,instrucao_psoasinstruesexecutadaspela
funo.

6Funes(cont.)

Ex.(definiousandoocomandodeff):

>deff('[y1]=funcao2(x1,x2)','y1=x1+x2')

>[a]=funcao2(1,2)//chamandoafuncao

a=
3.
6Funes(cont.)
6.1variveisglobaisxvariveislocais

VariveisglobaissovlidasnoambienteScilab;
Variveislocaissovlidasapenasnoescopodeumafuno.
Ex.variveisglobais:

>x3=5;
>function[y1]=f(x1,x2)
>y1=x1+x2+x3
>endfunction
>[r1]=f(1,3)//entrada=(1,3),sada=[r1]
r1=
9.

6Funes(cont.)
6.1variveisglobaisxvariveislocais

Ex.variveislocais:

>function[y1]=f(x1,x2)
>y1=x1+x2
>endfunction
>[r1]=f(1,3)//entrada=(1,3),sada=[r1]
r1=
4.
>y1//y1naoexisteforadafuncao

!error4
undefinedvariable:y1

Exerccios
7Exerccios
7.1Exerccioscomscripts


CalcularusandoomtododeNewtonRaphson.
2

Araizdeumafuno,f(x)podeserobtidaatravsda
expresso:

f xi
x i1=x i
f ' xi
7Exerccios
7.1Scripts


2
Afunoquepermitecalcular:

2
f x =x 2

usandoafrmuladeNewtonRaphson:

2
x 2
x i1=x i
2x
7Exerccios
7.1Scripts

necessriaumaaproximaoinicial.Podemosdizero
resultadoserprximode1,entofazemosx0=1.

Faamosivariarde1a10,completando10iteraes.

Consideremosumerrode105.
7Exerccios
7.1Scripts
Scriptparacalculararaizde2atravsdomtododeNewton
Raphson*

N=10;//nmeromximodeiteraes
x0=1.0;//aproximaoinicial
erro=10^(5);

xn=x0;//valorinicialdaraiz
forn=1:N
xn1=xn(xn*xn2)/(2*xn);
ifabs((xn1xn)/xn1)<errothen
printf('Valordaraiz=%10.7f',xn1)
return
end

xn=xn1;
end
*estescriptfoiretiradodaapostilaIntroduoaoScilabverrefernciasnofimdestesslides
7Exerccios
7.1Exerccioscomscripts(cont).

Digite este script no editor do Scilab e executeo no ambiente Scilab


clicandoemExecute>LoadintoScilab';

Oresultadoesperado:

>Valordaraiz=1.4142136
7Exerccios
7.2Exerccioscomfunes

Calcularofatorialdeumnmerousandoumafunorecursiva:

Paracalcularofatorialdefiniremosafunofat(x).Dizemosqueela
recursivaporquechamaasimesma.
ParadefinirafunousamosoeditordoScilab:

functiony=fat(x)
ifx<=1then
y=1;
else
y=x*fat(x1);
end
endfunction
Referncias
Pires,P.S.M.(2004).IntroduoaoScilab,RioGrande
doNorte.
Noble,B.eDaniel,J.W.(1986).lgebraLinear
Aplicada,PrenticeHalldoBrasil,RiodeJaneiro.

Potrebbero piacerti anche