Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(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).
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.