Sei sulla pagina 1di 44

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

ESCOLA DE CINCIAS E TECNOLOGIA


COMPUTAO NUMRICA

Apostila para o Minicurso de


Introduo ao Scilab

Francisco Carlos G. da S. Segundo


Leonardo Vale de Araujo

Orientadores: Prof. Dr. Marconi Cmara Rodrigues


Prof. Dr. Diego Rodrigo Cabral Silva
Prof. Dr. Jos Josemar de Oliveira Jnior

Natal, RN, setembro de 2013

SUMRIO
1.

INTRODUO AO SCILAB ...................................................................................................... 3

2.

O AMBIENTE DO SCILAB ........................................................................................................ 5


2.1.

Introduo ..................................................................................................................... 5

2.2.

O Ambiente Grfico do Scilab ....................................................................................... 6

2.3.

Variveis Especiais......................................................................................................... 7

3.

OPERAES BSICAS............................................................................................................. 8
3.1.

Operaes Matemticas e Lgicas ................................................................................ 8

3.2.

Formato de Visualizao dos Nmeros ....................................................................... 11

3.3.

Lista de Comandos e Funes Matemticas ............................................................... 12

3.4.

Nmeros Complexos ................................................................................................... 14

3.5.

Strings .......................................................................................................................... 14

Exerccios Propostos............................................................................................................ 16
4.

POLINMIOS ....................................................................................................................... 17
Exerccios propostos............................................................................................................ 19

5.

VETORES .............................................................................................................................. 20
Exerccios propostos............................................................................................................ 23

6.

MATRIZES ............................................................................................................................ 24
Exerccios propostos............................................................................................................ 26

7.

CONTROLE DE FLUXO .......................................................................................................... 28


7.1. Comandos para Iteraes................................................................................................. 28
7.1.1.O Loop for................................................................................................................... 29
7.1.2. O Loop while .............................................................................................................. 30
7.2. Comandos Condicionais ................................................................................................... 32
7.2.1. Comandos if-then-else .............................................................................................. 32
7.2.2. Comandos select-case ............................................................................................... 34

8.

FUNES ............................................................................................................................. 36
8.1. Funes definidas pelo usurio ........................................................................................ 37

9.

GRFICOS ............................................................................................................................ 38
9.1. Grficos Bidimensionais ................................................................................................... 39
9.2. Grficos Tridimensionais .................................................................................................. 41

10.

REFERNCIAS BIBLIOGRFICAS ....................................................................................... 44

1. INTRODUO AO SCILAB

O Scilab um ambiente voltado para o desenvolvimento de software para


resoluo de problemas numricos. O Scilab foi criado em 1990 por um grupo
de pesquisadores do INRIA Institut de Recherch e em Informatique e tem
Automatique e do ENPC3 cole National e desPonts et Chausses.
Desde 1994, quando passou a ser disponvel na Internet, Scilab
gratuito, free software, e distribudo com o cdigo fonte, open source software.
Alm da distribuio com o cdigo fonte, existem, tambm, distribuies prcompiladas do Scilab para vrios sistemas operacionais. Na verso atual,
Scilab est disponvel para as seguintesplataformas:

Plataforma GNU/Linux:
- Scilab 5.4.1 Linux 32 bits;
- Scilab 5.4.1 Linux 64 bits.

Plataforma Windows XP, Vista, 7, 8:


- Scilab 5.4.1 Windows 32 bits;
- Scilab 5.4.1 Windows 64 bits.

Plataforma Mac OS X:
- Scilab 5.4.1 Mac OS X.

Embora seja apresentado pelos seus mantenedores como um software


CASCD Computer Aided Control System Design - Projeto de Sistemas de
Controle

Auxiliado

por

Computador,

Scilab

um

ambiente

para

desenvolvimento ou prototipao de software numrico de propsitogeral.


O objetivo principal deste trabalho apresentar o ambiente do Scilab
atravs de um texto escritoem portugus com o objetivo de constituir um
3

material de referncia para a disciplina Computao Numrica. Com este


objetivo em mente, a nfase maior dada na apresentao das caractersticas
do ambiente que sero utilizadas para a disciplina. Para esta apostila parte-se
do princpio que o leitor j possua conhecimentos prticos, mesmo
rudimentares, sobre programao.
O objetivo secundrio, tambm relevante, mostrar que a utilizao de
software livre e de cdigo aberto, free/open source software, do ponto de vista
do usurio, traz grandes vantagens como:

A ltima verso do software est sempre disponvel, geralmente


atravs da Internet;

O software pode ser legalmente utilizado, copiado, distribudo,


modificado;

Os resultados obtidos podem ser divulgados sem nenhuma restrio;

Os programas desenvolvidos podem ser transferidos para outras


pessoas sem imposiesou constrangimentos de quaisquer natureza;

O acesso ao cdigo fonte, evitando surpresas desagradveis;

O acesso informao de alta qualidade, e

A certeza de estar participando de uma comunidade cujo principal valor


a irrestrita difuso do conhecimento.

2. O AMBIENTE DO SCILAB

Neste Captulo, so apresentadas algumas caractersticas do ambiente


Scilab em plataforma. Em seguida, so mostrados exemplos de manipulao
de arquivos e de diretrios apartir desse ambiente. O objetivo a familiarizao
com o software.

2.1.

Introduo

O Scilab um ambiente de programao numrica bastante flexvel. Suas


principais caractersticas so:

um software de distribuio gratuita, com cdigo fonte disponvel.


Sua linguagem simples e de fcil aprendizado;

Possui um sistema de auxlio ao usurio (help);

um ambiente poderoso para gerao de grficos bidimensionais e


tridimensionais, inclusive com animao;

Implementa diversas funes para manipulao de matrizes. As


operaes de concatenao, acesso e extrao de elementos,
transposio, adio e multiplicao de matrizes sofacilmente
realizadas;

Permite trabalhar com polinmios, funes de transferncia, sistemas


lineares e grafos;

Apresenta facilidades para a definio de funes;

Permite o acesso a rotinas escritas nas linguagens FORTRAN ou C;

Pode ser acessado por programas de computao simblica como o


Maple, que um software comercial, ou o MuPAD, que livre para uso
em instituies de ensino/pesquisa;

Suporta o desenvolvimento de conjuntos de funes voltadas para


aplicaes especficas, os chamados toolboxes.

2.2.

O Ambiente Grfico do Scilab

Aps a realizao dos procedimentos de instalao, possvel comear a


trabalhar com Scilab. A tela inicial do Scilab apresentada na Figura 2.1.

Figura 2.1 Tela inicial do Scilab.

Podemos observar o prompt inicial, representado pelo smbolo -->, que


faz a marcao da linha de comando e o cursor, ao lado do prompt. Nesse
espao, podem ser realizados clculos e compilados programas sem serem
salvas alteraes. atravs dele tambm que pode ser acessado o help do
programa, atravs do comando help digitado no prompt. Ser aberta uma
janela depois de o comando ser executado (apertando a tecla ENTER),
contento uma lista de todas as funes presentes.
Ainda na tela inicial esto presentes os menus dropdown com as opes
Arquivo,

Editar,

Controle,

Aplicativos

?.

Cada

menu

possui

as

seguintesopes:

Arquivo: Executar, Abrir um arquivo, Carregar ambiente, Salvar


ambiente, Alterar o diretrio atual, Exibir o diretrio atual, Configurao
de pgina, Imprimir e Sair.

Editar: Recortar, Copiar, Colar, Esvaziar a rea de transferncia,


Selecionar tudo, Mostrar/esconder a barra de ferramentas, Limpar
histrico, Limpar o console e Preferncias.

Controle: Retomar, Abortar e Interromper.

Aplicativos:SciNotes,

Xcos,

Tradutor

de

Matlab

para

Scilab,

Gerenciador de mdulos ATOMS, Navegador de variveis, Histrico


de comandos e Navegador de arquivos.

?: Ajuda do Scilab, Demonstraes do Scilab, Links da Web,


ScilabEnterprises e Sobre o Scilab.

2.3.

Variveis Especiais

Existem variveis que assumem valores predefinidos no Scilab. Elas


podem ser vistas atravs do comando who ou what. Essas variveis so
protegidas e no podem ser apagadas. Algumas destas variveis so
prefixadas com o caractere %. A Figura 2.2 mostra o resultado desse comando.

Figura 2.2 Sada do comando who.

3. OPERAES BSICAS

Scilab um ambiente de programao numrica. Desse modo, existem


duas formas de interao com o software: digitao diretamente no prompt, em
que se tem uso de uma poderosssima mquina de clculo, ou como
programao numrica propriamente dita, em que se delineiam linhas de
cdigo. Neste captulo ser abordada a primeira forma.
A primeira instruo a respeito do prompt quanto ao uso do ponto e
vrgula: ele faz com que o compilador interprete o fim da execuo da linha de
comando e esteja pronto para receber outra linha. Neste caso, o resultado da
operao fica mascarado para o usurio. Se no for escrito o ponto e vrgula, a
quebra de linha vai denotar fim da execuo, mas o resultado ser exibido para
o usurio. Ambas as formas tm sua aplicao. Quando se est trabalhando
com vetores de muitos elementos, no conveniente esquecer o ponto e
vrgula, pois isto pode acarretar perda de tempo e travamento da mquina (o
Scilab tem uma ferramenta til para evitar esse infortnio: em algumas linhas
de exibio, aparece uma mensagem perguntando se se desejacontinuar a
exibio); j quando se quer testar uma operao, debugar um programa ou se
as variveis usadas forem de baixa ordem, o ponto e vrgula por vezes
necessrio (no mnimo, facultativo).
Outra observao importante que o Scilab case sensitive. Quando
oprogramador definir uma varivel com letras maisculas e minsculas, devese lembrar de manter a caixa das letras.

3.1.

Operaes Matemticas e Lgicas

De um modo geral, as variveis matemticas usadas no Scilab so


vetores complexos. O nmero imaginrio denotado por %i e, seguindo a
notao padro de um nmero complexo z = a+bi, tem-se as seguintes
operaes possveis:

Adio representado por +;

Subtrao representado por -;


8

Multiplicao representado por *;

Diviso Direita representado por /;

Diviso Esquerda representado por \

Potenciao representado por ^ ou **.

Exerccio: Digite no console os seguintes comandos e visualize os


resultados:

a) 5 + 7
b) 15 25
c) 9/2
d) 9\2
e) 3^2
f) 3**2

Os operadores lgicos tambm so bastante importantes que so dados


por:

a&b representa E lgico (AND);

a|b representa OU lgico (OR);

~a representa NO lgico (NOT);

a==b as duas variveis so iguais.

a~=b ou a<>b as duas variveis so diferentes.

a<b a menor que b.

a>b a maior que b.

a<=b a menor ou igual a b.

a>=b a maior ou igual a b.

Exerccio: Digite no console os seguintes comandos e visualize os


resultados.
9

Para a = %T e b = (0==1):

a) a&b
b) a|b
c) ~a

Para a = 5 e b = 8:

d) a==b
e) a~=b
f) a<b
g) a>b

Outro ponto importante a ser considerado nas operaes matemticas a


ordem de precedncia. A Tabela 3.1 mostra qual a ordem de prioridade
utilizada pelo Scilab.
Tabela 3.1 Ordem de prioridade do Scilab.

Prioridade

Operaes

1a

Resolver parnteses

2a

Avaliar funo

3a

Potenciao

4a

Menos e mais unrio

5a

Multiplicao e diviso

6a

Adio e subtrao

Vale salientar que para a mesma prioridade resolve-se a expresso mais


esquerda.

Exerccio: Digite no console os seguintes comandos e visualize os


resultados.

10

a) A = 1 + 2/3 + 4
b) B = (1 + 2)/(3 + 4)
c) C = 1 + 2/(3 + (4+1)/2)
d) D = 3*2/5
e) E = 5^2/10

3.2.

Formato de Visualizao dos Nmeros

O comando format modifica a quantidade de dgitos com que os nmeros


so mostradosno Scilab. Por exemplo, o comando:

-->format(5)

far com que todas os nmeros sejam visualizados em 5 posies (incluindo o


pontodecimal e um espao para o sinal). Por exemplo:

-->sqrt(3)
ans =
1.73

Para aumentar o nmero de posies para 16, usa-se:

-->format(16)
-->sqrt(3)
ans =
1.7320508075689

A raiz de 3 foi mostrada ocupando 16 posies (sendo uma posio para


o ponto, umespao reservado para o sinal, uma posio para a parte inteira e
13 posies para a partefracionria).
O comando format('e') mostra os nmeros em notao cientfica. Por
exemplo:
11

-->format('e')
-->2*%pi/10
ans =
6.283185307E-01
6.283185307E-01 significa 6.283185307x10-1. Para retornar ao formato
inicial usa-se:

-->format('v')
que chamado de formato de varivel. Existem outras formas de usar o
comandoformat:

-->format('v',10)

mostra os nmeros em formato de varivel com 10 posies.

-->format('e',8)

mostra os nmeros em notao cientfica com 8 posies.

3.3.

Lista de Comandos e Funes Matemticas

importante que os usurios do Scilab conheam algumas das funes


bsicas. A Tabela 3.2 mostra alguns comandos para a melhor utilizao do
Espao de Trabalho e para o gerenciamento de arquivos em diretrios. J a
Tabela 3.3 mostra uma lista de funes matemticas normalmente utilizadas
pelos usurios.

12

Tabela 3.2 Comandos utilizados no Scilab.

Comandos

Funcionalidade

clc

Limpa a tela do console

clear

Limpa as variveis armazenadas

help

Ajuda do Scilab

pwd

Mostra o diretrio de trabalho

chdir

Muda de diretrio

dir

Mostra o que tem no diretrio

save

Salva variveis para uso posterior

load

Carrega o arquivo salvo

Tabela 3.3 Funes matemticas do Scilab.

Exerccio: Digite no console os seguintes comandos e visualize os


resultados.

a) cos(2*%pi)
b) %e^2
c) abs(-5)
d) modulo(8,3)
e) modulo(6,3)
f) sign(-4)
13

g) sign(5)

3.4.

Nmeros Complexos

No necessrio manuseio especial em Scilab para nmeros complexos.


As operaescom nmeros complexos so to fceis como nos reais. A
unidade imaginria representada por %i, ou seja, %i igual a sqrt(-1).
Exemplos:

x = 3 + 4*%i
y = 1 - %i
z1 = x - y
z2 = x * y
z3 = x / y
real(z1)

// Parte real de z1

imag(z1)

// Parte imaginria de z1

abs(x)

// Valor absoluto do nmero complexo

atan(imag(x),real(x)) // Argumento do nmero complexo


conj(z2)

// Conjugado

sin(x)

// Seno de um nmero complexo

3.5.

Strings

Strings so usados para toda e qualquer informao composta de


caracteres alfanumricose/ou caracteres especiais (exemplo, #, $, &, %, ?, !,
@, <, ~, etc). Os strings so envolvidos por aspas duplas ou simples.
Exemplos:

-->a = "abcd"
a=
abcd

14

-->b = 'efgh'
b=
efgh

-->c = "Maria e Jose"


c=
Maria e Jose

Uma das atividades mais comuns em programao a concatenao de


strings. Concatenao a juno de dois ou mais strings. Isto pode ser feito
com o operador +.

-->a + b // Concatena abcd com efgh


ans =
abcdefgh

-->n = "Pedro"
n=
Pedro

-->m = "Paulo"
m=
Paulo

-->m + n // Concatena Paulo com Pedro sem espao entre eles


ans =
PauloPedro

-->m + " e " + n // Concatena Paulo com Pedro inserindo espao entre eles
ans =
Paulo e Pedro

Muitas vezes precisamos armazenar informaes que contm as aspas.


Isto pode serfeito repetindo as aspas. Exemplos:
15

-->n = "O orculo disse ""conhea-te a ti mesmo"" para Socrtes."


n=
O orculo disse "conhea-te a ti mesmo" para Socrtes.

Algumas funes para manipulao de strings so mostradas da Tabela


3.4. Exemplos:
Tabela 3.4 Funes para manipulao de strings do Scilab.

Exerccios Propostos

1 Para os valores de h = 0.25, d = 2, p = 3, a = 5 e b = -1 quais so os


valores das expresses abaixo:

2 Para os valores de A = 11, B = 5, C = -4 e D = 2 quais so os valores


das expresses abaixo:
16

3 Faa um programa no editor que a partir da temperatura fornecida


pelo usurio, o programa converta a temperatura de graus Celsius para
Fahrenheit. A frmula dada por: F = 9*C/5 + 32. Na sada, apresente no
console o texto: A temperatura __ F.
4 Elabore um programa para calcular a resistncia equivalente entre
dois resistores R1 e R2 em paralelo. A frmula dada por: Req =
(R1*R2)/(R1+R2). Apresente o resultado usando o comando disp.

4. POLINMIOS

Os polinmios so criados no Scilab atravs da utilizao da funo


poly. Vale salientar quepolinmios de mesma varivel podem ser somados,
subtrados, multiplicados e divididos entresi. Por exemplo, o polinmio p = s2
3s + 2, que possui razes 1 e 2, pode ser criado atravs do comando:

-->// Polinomio definido pelas suas raizes


-->p = poly([1 2], s)
p=
2 - 3s + s2

Com a funo roots, comprova-se que as razes de p so, realmente, 1 e


2:

-->roots(p)
17

ans =
! 1. !
! 2. !

Um polinmio tambm pode ser criado a partir da especificao de seus


coeficientes. Porexemplo, o polinmio q = 2s + 1 criado atravs do comando:

-->// Polinomio definido pelos seus coeficientes


-->q = poly([1 2], s, coeff)
q=
1 + 2s

-->roots(q) // Obtendo as raizes do polinomio q


ans =
- 0.5

Para complementar o exemplo, os dois polinmios podem ser


multiplicados, divididos, somados ou subtrados como mostra a sequncia de
comandos:

-->p * q // Multiplicacao
ans =
2 + s - 5s2 + 2s3

-->p / q // Divisao
ans =
2 - 3s + s2
-----------1 + 2s

-->[r, q] = pdiv(p,q) // Efetuando a divisao: q=quociente, r=resto


q=
- 1.75 + 0.5s
r=
18

3.75

-->p + q // Adicao
ans =
3 - s + s2

-->p - q // Subtracao
ans =
1 - 5s + s2

Para obter valores de polinmios, utiliza-se a funo horner:


-->x = poly(0, x)
x=
x

-->p = x^2 - 3*x + 5 // definindo o polinomio


p=
5 - 3x + x2

-->horner(p, 2) // avaliando o polinomio em x = 2


ans =
3.

Exerccios propostos

1 Calcule as razes dos seguintes polinmios:

19

2 Calcule os valores das operaes abaixo:

5. VETORES

Considerando R o conjunto dos nmeros reais. possvel dizer que x


um vetor de dimenso n em R, indicado por x Rn, se, e somente se,
1
2
=

Nessa definio, cada um dos elementos do vetor x, xi, pertence a R,


xi R
O elemento xi o i-simo elemento do vetor x.O vetor x definido
anteriormente um vetor coluna.
No Scilab, os vetores so criados colocando-se seus componentes entre
colchetes. Oselementos de um vetor coluna so separados por ponto e vrgula.
Assim:

-->x = [ 1; 2; 3] // vetor coluna. Elementos separados por ;


x=
! 1. !
20

! 2. !
! 3. !

Um vetor linha, y, de dimenso n em R pode ser escrito na forma:


= 1

No Scilab, os componentes de um vetor linha so separados por espao


ou por vrgula.

-->y = [ 1 2 3] // vetor linha; Elementos separados por espaco


y=
! 1. 2. 3. !

-->z = [ 4, 5, 6] // vetor linha; Elementos separados por virgula


z=
! 4. 5. 6. !

Vetores podem ser multiplicados ou divididos por quantidades escalares.


Vetoresde mesma dimenso podem ser somados ou subtrados. Para
exemplificar algumas dessas operaes, so considerados os vetores:
4
1
= 2 e = 5
3
6
-->x = [ 1; 2; 3] // Definindo o vetor x
x=
! 1. !
! 2. !
! 3. !

-->y = [ 4; 5; 6] // Definindo o vetor y


y=

21

! 4. !
! 5. !
! 6. !

-->size(x) // Dimensao do vetor x


ans =
! 3. 1. !

-->size(y) // Dimensao do vetor y


ans =
! 3. 1. !

-->3 * x // Multiplicando o vetor x por uma constante


ans =
! 3. !
! 6. !
! 9. !

-->x / 2 // Dividindo o vetor x por uma constante


ans =
! 0.5 !
! 1. !
! 1.5 !

-->x + y // Somando os dois vetores


ans =
! 5. !
! 7. !
! 9. !

22

Exerccios propostos

1 Construa um vetor com elementos crescentes que comea em 10 e


termina em 20, com passo de 5.
2 Construa um vetor com elementos crescentes que comea em 10 e
termina em 70 com 7 elementos.
3 Gere uma sequncia de nmeros pares comeando em 4 e no
ultrapassando 15.
4 Crie um vetor A de 15 elementos aleatrios e a partir deste, crie
outros vetores de acordo com os seguintes critrios:

a) B1 = Conter somente os elementos de A maiores que 0,5. Calcule


quantos elementos so.
b) B2 = Conter somente os elementos de A menores que 0.2. Calcule
quantos elementos so.
c) B3 = Conter os elementos de A em Ordem Crescente.
d) B4 = Conter os elementos de A em Ordem Decrescente.

Obs.: use o comando apropos para encontrar o comando que ordena o


vetor em ordem crescente ou decrescente.
5 Extraia os quatro ltimos elementos do vetor a e armazene na varivel
c:

a = [1 30 100 3 10 30 90 12 3 4 5 30 30 0.5]

Obs.: Use o comando length e $.

23

6 Crie uma expresso que calcule o valor de y para as equaes


abaixo. Defina x variando de 2 a 19 espaados de 5 em 5 unidades.

Obs.: Use o comando disp para mostrar os resultados no formato y (para


os valores de x iguais a __) = resultado.

6. MATRIZES

Matrizes usam dois ndices para individualizar elementos. Elas so


construdas utilizando colchetes. Cada linha da matriz separada por um ponto
e vrgula e cada elemento de uma linha separado por espao(ou vrgula). Por
exemplo, a seguinte matriz:

2 3
4 5

4
2

Poderia ser construda pelo comando:

-->a = [2 3 4; 4 5 2]
a=
! 2. 3. 4. !
24

! 4. 5. 2. !

Nos exemplos a seguir, para fixar conceitos, a matriz A digitada com


os elementos de suas linhas separados por espaos enquanto a matriz B
digitada com os elementos de suas linhas separados por vrgula. Assim,

-->// Matriz A - Elementos das linhas separados por espao


-->A = [1 2 3; 5 -8 9]
A=
! 1. 2. 3. !
! 5. - 8. 9. !

-->// Matriz B - Elementos das linhas separados por virgulas


-->B = [1, 2, 3; 4, 5, 6]
B=
! 1. 2. 3. !
! 4. 5. 6. !

-->size(A) // Dimensao da matriz A


ans =
! 2. 3. !

-->size(B) // Dimensao da matriz B


ans =
! 2. 3. !

A Tabela 6.1 mostra uma lista com as possveis operaes utilizando


matrizes e a Tabela 6.2 apresenta uma lista de comandos normalmente
utilizados quando trabalha-se com matrizes:

25

Tabela 6.1 Operaes matemticas com matrizes.

Operao

Comando

Adio

A+B

Subtrao

AB

Multiplicao

A*B

Diviso pela direita

B/A

Diviso pela esquerda

A\B

Exponenciao

A^3

Multiplicao individual

A.*B

Diviso individual

A./B

Exponenciao individual

A.^3

Tabela 6.2 Operaes matriciais.

Operao

Comando

Determinante

det(A)

Transposta

Inversa

inv(A)

Diagonal

diag(A)

Trao

trace(A)

Exerccios propostos

1 Encontrar o valor de x1, x2 e x3.

26

2 Um construtor tem contratos para construir 3 estilos de

casa:

moderno, mediterrneo e colonial. A quantidade de material empregada em


cada tipo de casa dada pela tabela:

Faa um programa que armazene os valores da tabela acima em uma matriz


chamada material e que seja capaz de:

a) Perguntar quantas casas e de qual tipo se deseja construir (usar comando


input e armazenar no vetor qcasas).

b) Mostrar a quantidade de material de cada tipo a ser utilizado no projeto total.

c) O preo total do projeto de construo das casas, supondo que os preos


por unidade de ferro, madeira, vidro, tinta e tijolo sejam, respectivamente, 15, 8,
5, 1 e 10 (Armazenar esses preos no vetor preo).

d) Mostre tambm o preo unitrio de cada casa.

27

7. CONTROLE DE FLUXO

Uma das caractersticas mais importante do Scilab a facilidade com que


o usurio pode criar seus prprios programas.
Apesar de simples, a linguagem Scilab disponibiliza a maioria das
estruturas das linguagens de programao convencionais. A diferena principal
que, na programao Scilab, no h a necessidade da declarao prvia dos
tipos das variveis que sero utilizadas ao longo do programa.
Um fator a ser levado em considerao que Scilab um interpretador
de comandos. Os programas escritos na linguagem Scilab so, portanto,
normalmente executados em um tempo maior que os programas semelhantes
escritos em linguagens compilveis. Este fato mais relevante quando
precisamos desenvolver programas para a realizao de simulaes ou de
otimizaes. Nesses casos, pode ser conveniente escrever o cdigo
responsvel pela lentido do processamento em uma linguagem convencional
(no caso, C ou FORTRAN) e rodar esse cdigo dentro do ambiente Scilab.
Deve ser enfatizado, entretanto, que a vantagem na utilizao do Scilab
advm da facilidade de prototipao de programas e da disponibilidade de uma
poderosa biblioteca de funes grficas. Como sempre ocorre nessas
situaes, cabe ao usurio encontrar a sua soluo de compromisso.

7.1. Comandos para Iteraes

Existem dois comandos que permitem a realizao de iteraes, loops, no


Scilab: o loop implementado com o comando for e o loop implementado com o
comando while.

28

7.1.1.O Loop for

O comando for tem a forma geral:

For variavel = vetor_linha


instrucao_1
instrucao_2
... ...
instrucao_n
end

No ambiente Scilab, a forma acima equivalente a:

-->for variavel=vetor_linha
-->

instrucao_1

-->

instrucao_2

-->

instrucao_n

-->end

Como mostrado no exemplo:

-->Loop for em linha de comando


-->for k = 1:3
-->

a=k+1

-->end
a=
2.
a=
3.
a=
4.
Como possvel visualizar no exemplo, no loop foro comportamento das
iteraes baseado no contedo do vetor linha.
29

Exerccio: Elabore um programa para calcular o fatorial do valor digitado


pelo usurio. E no final mostre, O fatorial de ___ = ___. Obs.: Utilize os
comandos input e disp ou printf para inserir o valor a ser calculado do fatorial e
expor o resultado. Utilize o lao for.

7.1.2. O Loop while

O comando while tem a forma geral:

While condicao
instrucao_1
instrucao_2
... ...
instrucao_n
end

A forma acima equivalente forma:

-->while condicao
-->

instrucao_1

-->

instrucao_2

-->

instrucao_n

-->end

no ambiente Scilab.O loop baseado no while realiza uma sequncia de


instrues enquanto uma determinada condio estiver sendo satisfeita. A
condio geralmente inclui comparaes entre objetos. Na Tabela 7.1, so
apresentados os operadores que permitem fazer comparaes entre valores de
objetos no Scilab.
Tabela 7.1 Operadores condicionais.

30

A seguir, apresentado um exemplo da utilizao do loop baseado no


comando while:

-->x = 1;
-->while x < 14
-->x = x * 2
-->end
x=
2.
x=
4.
x=
8.
x=
16.

Exerccio: A srie de Fibonacci se define como tendo os dois primeiros


elementos iguais a um e cada elemento seguinte igual a soma dos dois
elementos imediatamente anteriores.
1,1,2,3,5,8,13,

Faa um programa que realize a srie at determinado nmero fornecido


pelo usurio.

31

7.2. Comandos Condicionais

O Scilab implementa dois tipos de comandos condicionais: if-then-else e


select-case.

7.2.1. Comandos if-then-else

O comando if-then-else tem duas formas. Na forma mais simples, o


comando escrito como:

if condicao_1 then
sequencia_de_instrucoes_1
else
sequencia_de_instrucoes_2
end

Enquanto na sua forma mais geral o comando escrito como:

if condicao_1 then
sequencia_de_instrucoes_1
elseif condicao_2
sequencia_de_instrucoes_2
... ... ... ... ... ...
elseifcondicao_n
sequencia_de_instrucoes_n
else
sequencia_de_instrucoes_n+1
end

A forma acima equivalente forma:

-->if condicao_1 then


32

-->

sequencia_de_instrucoes_1

-->elseif condicao_2
-->

sequencia_de_instrucoes_2

-->elseif condicao_n
-->

sequencia_de_instrucoes_n

-->else
-->

sequencia_de_instrucoes_n+1

-->end

no ambiente Scilab.A condicao_1 do comando if-then-else avalia uma


expresso. Se esta expresso for verdadeira, true, ser executada a instruo
ou instrues subsequentes. Se for falsa, false, ser executada a instruo ou
instrues aps o else ou o elseif, conforme o caso. Alguns exemplos da
utilizao do condicional if-then-else:

-->x = -1
x=
- 1.
-->if x < 0 then
-->

y = -x // apresenta a resposta

y=
1.
-->else
-->

y=x

-->end

-->// Outra forma


-->x = 1 // Inicializando
x=
1.
-->if x > 0 then, y = -x, else, y=x, end
y=
- 1.
-->x = -1
33

x=
- 1.

Exerccio: Faa um programa que receba o peso e altura de uma pessoa


e calcule o ndice de Massa Corporal (IMC) definido como:
= ()/()

O programa deve mostrar ao usurio a situao de Obesidade com a


Tabela da Associao Brasileira para o Estudo da Obesidade.

7.2.2. Comandos select-case

O condicional select-case tem a forma geral:

Select variavel_de_teste
case expressao_1
sequencia_de_instrucoes_1
case expressao_2
sequencia_de_instrucoes_2
... ... ... ... ... ... ... ...
Case expressao_n
sequencia_de_instrucoes_n
else
sequencia_de_instrucoes_n+1

34

end

A forma acima equivalente forma:

-->select variavel_de_teste
-->case expressao_1
-->

sequencia_de_instrucoes_1

-->case expressao_2
-->

sequencia_de_instrucoes_2

-->case expressao_n
-->

sequencia_de_instrucoes_n

-->else
-->

sequencia_de_instrucoes_n+1

-->end

O condicional select-case compara o valor de uma varivel de teste com


as vrias expresses dos case. Sero executadas as instrues que possurem
o valor da expresso do case igual ao valor da varivel de teste. Um exemplo
de utilizao do condicional select-case:

-->x = -1
x=
- 1.
-->select x
-->case 1
--> y = x + 5
-->case -1
--> y = sqrt(x)
y=
i
-->end

-->x = 1
x=
35

1.
-->select x, case 1, y = x+5, case -1, y = sqrt(x), end
y=
6

Exerccios: Uma mquina de caf automtica normalmente capaz de


preparar caf, cappuccino e chocolate quente. Faa um programa que
pergunte ao cliente qual o seu pedido, informe quais ingredientes misturou e
quando a operao terminar volte ao seu estado inicial. Caso o pedido no
exista informe ao usurio.
Ingredientes:

Caf gua, Caf, Acar

Capuccino gua, Caf, Leite e Acar

Chocolate Quente gua, Chocolate e Acar.

8. FUNES

Quando o tamanho de um programa estende-se a centenas de linhas, o


programa torna-se difcil de compreender e administrar. Por isso, dividir um
grande programa computacional em partes menores para facilitar a
compreenso (ou legibilidade) do problema umatarefa comum em
programao de computadores. No Scilab, este trecho menor do programa
chamado de funo. Funes so tambm chamadas de sub-rotinas, mdulos,
subprogramas ou subalgoritmos.
Funes so usadas tambm para evitar repetio do mesmo cdigo no
programa.Por exemplo, suponha que seu programa tenha a tarefa de por em
ordem crescente vrias listas de nmeros. Em vez de repetir o cdigo toda vez
que for realizar esta tarefa,voc escreve uma funo para ordenar listas
numricas e depois chama a mesma funo sempre que for ordenar uma lista.
Neste sentido, as funes apresentam as seguintes vantagens:

36

a) Voc escreve o cdigo somente uma vez;


b) Voc pode reutilizar a funo em outros programas;
c) Uma vez que voc tem corrigido todos os erros do programas
(i.e.,depurado o programa), ele funcionara corretamente no importa quantas
vezes voc usea funo.

Em resumo, funes so usadas para:

1. Dividir um grande programa em programas menores;


2. Repetir uma tarefa que realizada frequentemente sem ter que repetir
o mesmo cdigo em vrios lugares;
3. Aumentar a legibilidade do programa.

No Scilab j existem muitas funes prontas (pr-definidas), algumas


delas elementares (cos(x) e sin(x)) e outras especficas para aplicaes em
engenharia, matemtica,fsica, e na estatstica. O objeto de estudo deste
captulo so as funes definidas pelo usurio. Isto , funes que so
elaboradas pelos prprios usurios do Scilab.

8.1. Funes definidas pelo usurio


A forma geral de uma funo :

Em que,

function: Palavra reservada que indica o inicio de uma funo.


37

nomedafuncao: o nome da funo definido pelo usurio.

x1, x2, x3,..., xn: parmetros de entrada.

y1, y2, y3,..., ym: parmetros de sada.

<comandos>: Comandos do Scilab a serem executados pela funo.

A declarao:

function [y1,y2,...,ym] = nomedafuncao(x1,x2,x3,...,xn)

o cabealho da funo e serve, entre outras coisas, para dar o nome da


funo e definira lista de parmetros de entrada e sada (tambm chamados de
parmetros formais).Quando h apenas um parmetro de sada, os colchetes
podem ser omitidos.
Cada parmetro da lista de parmetros de sada de uma funo
necessrio aparecer a esquerda de pelo menos um comando de atribuio da
funo.Quando a funo termina, o valor contido nos parmetros de sada
retornado ao programa que chamou a funo.Uma chamada (ou ativao) de
funo a solicitao explcita para executar uma funo.

Exerccios:
1 Altere o programa do Fatorial feito anteriormente para funo.
2 Faa uma funo que inserida como parmetros de entrada 5
valores e nos parmetros de sada o resultado da soma desses valores e da
multiplicao.

9. GRFICOS

Neste captulo so apresentados alguns comandos que podem ser


utilizados para traar grficos bidimensionais e tridimensionais. Informaes
38

mais detalhadas sobre todos os comandos disponveis na biblioteca grfica do


Scilab podem ser acessadas atravs do navegador de help. A Tabela 9.1
mostra alguns desses comandos:
Tabela 9.1 Comandos utilizados para manipulao de grficos.

9.1. Grficos Bidimensionais


Grficos bidimensionais podem ser gerados atravs da utilizao da
funo plot. A forma mais simples da funo plot :

plot([x],y)

em que x e y podem ser matrizes ou vetores reais. Os colchetes, [ e ],


envolvendo x indicam que este parmetro opcional. Alguns pontos devem ser
considerados sobre os parmetros x e y:

1. Se x e y so vetores, a funo plot permite traar o grfico de y em


funo de x. importante observar que os dois vetores devem ter a mesma
dimenso, isto , os dois vetores devem ter o mesmo nmero de elementos;
2. Se x um vetor e y uma matriz, a funo plot permite traar o grfico
de cada coluna da matriz y em funo do vetor x. Neste caso, o nmero de
39

elementos das colunas da matriz y deve ser igual ao nmero de elementos do


vetor x;
3. Se x e y so matrizes, a funo plot permite traar o grfico de cada
coluna da matriz y em funo de cada coluna da matriz x. Neste caso, as
matrizes devem ter as mesmas dimenses;
4. Se y um vetor, a funo plot permite traar o grfico do vetor y em
funo do vetor [1:size(y)];
5. Se y uma matriz, a funo plot permite traar o grfico da matriz y em
funo do vetor [1:size(y)].

Existem alguns passos normalmente adotados para a criao de grficos:


1 Defina um vetor com nome t que varia de pi a pi com passo de
0.01.
2 Defina o vetor y igual ao seno de t.
3 Gere o grfico
4 Crie grade no grfico com o comando grid();

Nas figuras abaixo sero mostrados alguns exemplos com os cdigos


desenvolvidos e a forma de onda obtida.

Figura 9.1 Grfico da funo seno.

40

Figura 9.2 Mudana de cores.

Figura 9.3 Vrios grficos por janela.

9.2. Grficos Tridimensionais


O comando plot3d() permite traar grficos de superfcies:

z = f(x, y)
Na notao Scilab, as variveis independentes x e y so vetores de
dimenses n1 e n2,respectivamente, e a varivel dependente z uma matriz

41

de dimenson1xn2. Ento, por essa definio, o elemento z(i,j) o valor da


superfcie no ponto (x(i), y(j)).
Para exemplificar o uso de plot3d(), considere a funo:
cos sin
()

no intervalo [0, 2] com incremento igual a 0.3. Logo:

-->x = [0:0.3:2*%pi];
-->y = x;
-->z = cos(x) * sin(x);
-->plot3d(x, x, z)

gera o seguinte grfico:

Figura 9.4 Exemplo de grfico 3-D.

Alm da funo plot3d() as seguintes funes permitem traar grficos


tridimensionais especiais:
42

param3d - permite traar curvas paramtricas;

hist3d - permite traar histogramas 3-D;

contour - permite traar curvas de nnvel para uma funo 3-D.

43

10.

REFERNCIAS BIBLIOGRFICAS

[1] PIRES, Paulo Srgio da Motta. Introduo ao Scilab Verso 3.0. disponvel
em http://www.dca.ufrn.br/~pmotta/sciport-3.0.pdf.
[2] LACERDA, E. G. M. Programando com Scilab. Departamento de
Engenharia

de

Computao

Automao

UFRN.

Disponvel

em

http://www.dca.ufrn.br/~estefane/academica/progsci.pdf
[3] JNIOR, Vicente A. de Souza. Mini-Curso de Matlab. UFRN.
[4] DANUSIO, Gadelha Filho. Scilab 5.x. Universidade Federal do Cear
UFC.

44

Potrebbero piacerti anche