You are on page 1of 92

Centro Universitrio de Belo Horizonte

Instituto de Engenharia e Tecnologia - IET

ALGORITMO E ESTRUTURAS DE DADOS


PRTICAS DE LABORATRIO
2014/2

Rafael Pinheiro Amanta


1

Sumrio
LINK PARA DOWNLOAD DO SOFTWARE SCILAB

INTRODUO

O AMBIENTE SCILAB

A JANELA CONSOLE SCILAB

JANELA DE COMANDO

A JANELA HISTRICO DE COMANDOS

SCINOTES

NAVEGADOR DE VARIVEIS

NAVEGADOR AJUDA

DESENVOLVENDO ARQUIVOS .SCE

DECLARAO DE VARIVEIS E CONSTANTES

COMANDOS BSICOS DE ENTRADA E SADA

COMANDO DE SADA

COMANDOS DE ENTRADA

11

OPERADORES

11

1. ESTRUTURA SEQUENCIAL

17

EXERCCIOS ESTRUTURA SEQUENCIAL:

19

PROJETO FINAL 1 : CLCULO DE CARGA TRMICA PARA UMA


CMARA DE RESFRIAMENTO.

23

2. ESTRUTURA CONDICIONAL

26

O COMANDO IF ELSE.

26

ESTRUTURA CONDICIONAL - IF-ELSEIF-ELSE

27

EXERCCIOS ESTRUTURA CONDICIONAL:

29

PROJETO FINAL 2 : DESENVOLVIMENTO DE UM CONVERSOR DE


UNIDADES.

34

3. ESTRUTURAS DE REPETIO

37

3.1 O COMANDO FOR

37

3.2 O COMANDO WHILE

44

EXERCCIOS LAOS DE REPETIO

48

4. VETORES E GRFICOS

51

INSERINDO VALORES EM UM VETOR

53

INSERO DIRETA

53

INSERO POR MEIO DE UM USURIO

53

MOSTRANDO OS VALORES DE UM VETOR (SADA DE DADOS)

53

SADA DIRETA

53

SADA POR LAO DE REPETIO

53

CONSTRUINDO GRFICOS

54

CONSTRUINDO GRFICOS 2D

54

AJUSTANDO TTULOS E EIXOS

56

EXERCCIOS - VETOR

64

PROJETO FINAL 3 : SIMULAO !

66

5. MATRIZ

68

INSERINDO VALORES EM UMA MATRIZ

70

INSERO DIRETA

70

INSERO POR MEIO DE UM USURIO

70

MOSTRANDO OS VALORES DE UMA MATRIZ (SADA DE DADOS)

70

SADA DIRETA

70

SADA POR LAO DE REPETIO

70

PROJETO FINAL 4 : COMPREENDENDO MATRIZES PARA A GERAO DE GRFICOS


TRIDIMENSIONAIS

77

APENDICE 1 GERAO DE NMEROS ALEATRIOS

84

APENDICE 2 LISTA DE COMANDOS TEIS EM SCILAB

89

Link para download do software SCILAB


http://www.scilab.org

Introduo
Existem vrias abordagens para se ensinar os fundamentos do SCILAB. Este
material tem como objetivo fazer uma introduo ao SCILAB do ponto de
vista de um usurio da linguagem C.
Como C/C++ e outras linguagens de programao, o SCILAB, possui
operadores: aritmticos, lgicos, condicionais, repetio e outros mais.
Este captulo vai introduzir a ferramenta SCILAB e explorar os seguintes
conceitos:

O ambiente SCILAB
Com o passar dos anos o SCILAB vm se popularizando no apenas pela
versatilidade, mas tambm pela sua interface, que permite um ambiente
amigvel e interativo em que algoritmos bsicos e avanados, envolvendo
clculos e simulaes podem ser facilmente executados.
O SCILAB apresenta vrias janelas que ajudam e permitem que todas as
atividades sejam realizadas pelo usurio. As janelas possuem funes
distintas e sero exemplificadas e explicadas nas sees a seguir.

A janela console SCILAB


A janela principal chamada de console. Esta a janela inicial onde as
principais interaes no SCILAB acontecem. A janela console gerencia as
sub-janelas associadas a ela. Estas sub-janelas esto localizadas e visveis
junto da janela console.

Figura 1 Janela console SCILAB

Janela de comando
A janela de comando uma sub-janela em que o usurio pode digitar
comandos ou instrues a serem processadas no SCILAB. A janela de
comando vai mostrar o prompt --> , sinal que simboliza que o SCILAB est
pronto para receber instrues. Uma vez digitada a instruo e a tecla enter
for digitada, a instruo imediatamente executada.

Figura 2 Janela de comando SCILAB.

A janela Histrico de Comandos


A janela de histrico contm todos os comandos ou estruturas anteriormente
executadas na janela de comando.

Figura 3 Janela histrico de comandos

SciNotes
A janela SciNotes (editor) disponibiliza um espao onde os arquivos .sci
podero ser criados e editados para a execuo. Arquivos .sci tambm
podem ser abertos ou re-editados e executados. Para ter acesso ao SciNotes
basta clicar na opo aplicativos da janela (principal) console SCILAB.

Figura 4 Janela do editor SciNotes

Navegador de variveis
a sub-janela onde so carregadas, consultadas e salvas as variveis.

Figura 5 Janela navegador de variveis

Perceba na figura acima que todas as variveis que foram criadas, foram
listadas e classificadas quanto ao seu tipo, dimenso e visibilidade. Um duplo
clique em cada uma destas variveis, na janela navegador de variveis,
permitir que voc acesse o contedo da varivel selecionada.

Navegador Ajuda
A janela ajuda permite acesso a todo o contedo de ajuda do SCILAB. Voc
pode fazer a busca por informao de ajuda por diretrios organizados por
pacotes de aplicao, ou fazer uma busca por nome de comando, funo ou
at mesmo aplicao desejada. Para acessar o contedo ajuda, basta clicar
no cone

da janela principal (console SCILAB). importante salientar

que o help possui a descrio de todos os comandos e trechos prticos de


implementao, que podem ser copiados e colados no SciNotes e em
seguida executados.

Figura 6 Janela Ajuda.

Desenvolvendo arquivos .sce


Digitar um pequeno nmero de instrues na janela de comando pode ser
fcil e conveniente. Porm o aumento do nmero de instrues, ou o uso
aplicaes mais complexas comprometem toda a praticidade e facilidade da
abordagem utilizando o prompt de comando ( --> ). Uma maneira mais
adequada descrever estas instrues em um arquivo texto, onde a edio
mais simples e depois solicitar ao SCILAB para carregar este arquivo e
executar estas instrues como se estivessem sido digitadas na janela de
8

comando. Desta maneira fica mais fcil para o usurio editar e modificar os
programas e identificar possveis erros na execuo. Este tipo de arquivo
texto contendo as instrues ao ( SCILAB ) chamado de arquivo .sce. O
arquivo ganha este nome devido a extenso

do nome do arquivo a ser

reconhecido pelo SCILAB ser .sce . Todo o nosso contedo ser


trabalhado utilizando os arquivos .sce.

Declarao de variveis e constantes


Assim como C/C++, o SCILAB possui algumas regras para a escolha dos
nomes na declarao de variveis e constantes. Estas limitaes devem ser
consideradas e esto descritas a seguir:
Os nomes de variveis e constantes devem ser compostos por letras,
nmeros e / ou underscores. Os nomes tambm devem sempre
iniciar com letras.
As variveis ou constantes que por ventura vierem a ter palavras
compostas no podem ter espaos entre as palavras. Neste caso
aconselha-se fazer uso do underscore entre as palavras.
O SCILAB case sensitive (difere letras maisculas de letras
minsculas), portanto a varivel de nome numero distinta da
varivel Numero.

Comandos bsicos de entrada e sada


Comando de sada
O comando de sada utilizado ser o mprintf(). Ele permite mostrar
mensagens, valores de variveis e/ou a combinao de ambos no prompt de
comando.
Sequncia de chamada
mprintf(< texto >,< varivel >)

O campo texto pode ser qualquer caracter, texto, equao ou uma


informao qualquer. A impresso do valor de uma varivel pode ser feita por
meio da escolha do formato do tipo de dado seguido pelo nome da varivel.
Veja o exemplo:
mprintf(O valor da presso calculada %5.3f. \n,pressao)

O formato de uso deste comando semelhante ao formato utilizado para o


comando printf em C. No exemplo acima, o especificador de formato
%5.3f. Podemos interpretar este especificador como sendo:
%

Deve ser includo toda vez que se deseja especificar o formato

de uma varivel.
Esta parte do comando

Tamanho (5 ou qualquer nmero)

opcional e indica o tamanho total do valor mostrado, incluindo o ponto


decimal.
Preciso (3 ou qualquer nmero)

Define a quantidade de casas

decimais que sero mostradas na sada.


Tipo de dado (d,f,e,g,c,s)

Este tipo de informao

necessria e as letras indicam o tipo de dado da varivel como


indicado na tabela a seguir:

Tabela 1 Tipos de especificadores

Especificador

Sada

%d

Inteiro

%f

Real

%e

Exponencial

%g

Menor formato possvel

%c

Caractere

%s

String

10

Tabela 2 Caracteres de controle

Caracteres

Significado

\b

backspace

\n

Nova linha

\t

Tab

\\

Mostrar o caractere \

%%

Mostrar o caractere %

Uma alternativa para mostrar mensagens no prompt de comando o


comando disp(),ao contrrio do comando mprintf() ele no permite
que valores de variveis sejam mostrados conjugados com mensagens na
tela. Ao optar pelo comando disp(),voc dever optar por mostrar a
mensagem ou o valor da varivel, apenas um por comando. Veja no exemplo
a seguir:
disp( A temperatura medida no motor de 25 graus )

Comandos de entrada
O comando de entrada de dados utilizado no SCILAB o comando
input(). Este comando permite que mensagens de texto sejam utilizadas
para indicar a entrada de valores para uma varivel indicada. Veja um
exemplo:
temperatura=input(Digite a temperatura de ajuste do forno: )

Aps digitado um valor pelo usurio, este valor ser atribudo varivel
temperatura.

Operadores
Aps atribuir valores por meio do comando input() , o prximo passo
ento processar os valores por meio das seguintes opes de operadores.

11

Tabela 3 Operadores Aritmticos

Smbolo

Significado

Adio

Subtrao

Multiplicao

Diviso

Potncia

Atribuio

()

Parnteses ( utilize-o
para impor regras)

Tabela 4 Operadores relacionais

Smbolo

Significado

>

Maior

>=

Maior ou igual

<

Menor

<=

Menor ou igual

==

Igualdade

~=

Diferena

12

Tabela 5 Operadores lgicos

Smbolo

Significado

&

Operador e

Operador ou

Negao

Para saber mais sobre a implementao de funes complexas (nmeros


complexos), exponenciais (raiz quadrada e logaritmos), trigonomtricas
(seno, cosseno, tangente), etc; v at o menu ajuda e consulte como feito o
uso da funo de sua necessidade. Veja como fcil:

Exemplo de como utilizar o ajuda em busca de uma funo


desconhecida
Eu gostaria de saber como eu fao para implementar o seno de um nmero
e a raiz quadrada de um nmero
Passo 1: V at a janela principal do SCILAB e clique no boto ajuda
Passo 2: Na janela que se abrir voc visualizar esquerda da janela de
ajuda o seguinte menu de opes.

13

Figura 7 Pacotes de funes especficas do menu ajuda.

Passo 3: Escolha a pasta Funes Elementares. Voc dever visualizar as


novas opes de funes como na figura a seguir. Observe que voc ter um
conjunto de funes relacionadas para diversos contedos como: nmeros
complexos, funes exponenciais, operaes com matrizes, ordenao e
procura de valores, trigonometria, etc.

14

Figura 8 Conjunto de funes elementares do menu ajuda.

Passo 4: Para visualizar como implementar o seno de um nmero vamos


abrir a pasta trigonometria e selecionar a funo sin. Ao escolher a funo
seno voc dever visualizar a seguinte janela;

15

Figura 9 Tela de ajuda para a funo seno.

A janela apresentada na figura 9, possui informaes do tipo nome,


sequncia de chamamento, parmetros, descrio e exemplos que podem
ser copiados, colados e executados no scinote.
Passo 5: Para calcular o seno de um nmero ou uma varivel a partir das
informaes encontradas no menu ajuda, devemos ento executar o seguinte
comando:
y = sin(x);
Passo 6: Se executarmos os passos de 1 a 3 e selecionarmos a pasta
exponencial vamos chegar a seguinte informao para calcular a raiz
quadrada de um nmero.
y = sqrt(x);

16

1. ESTRUTURA SEQUENCIAL
Chegou a hora de tentarmos apresentar alguns exemplos e desenvolver
pequenos programas aplicando o que vimos anteriormente.
Veja o exemplo 1.1:
Desenvolva um programa que realize a soma entre dois nmeros

clear;

clc;

mprintf("Entre com dois numeros. \n");

num1 = input(" Primeiro numero: ");

num2 = input(" Segundo numero: ");

soma = num1 + num2;

mprintf("\n O resultado da soma %f ",soma);

Linha 1: O comando clear limpa a memria do sistema.


Linha 2: O comando clc limpa a janela de sada do SCILAB.
Linhas 3 Mensagem para digitar 2 nmeros
Linhas 4 e 5 : A funo input() solicita dois valores ao usurio e armazena
os valores nas variveis num1 e num2.
Linha 6: As duas variveis so processadas utilizando o sinal + para realizar
a soma gerando um resultado, o qual armazenado na varivel soma.
Linha 7: O comando mprintf() mostra a mensagem de sada e o valor da
varivel soma.

Comentrios:

Uma prtica comum na programao em softwares de

computao cientfica a utilizao dos comandos clear e clc. Aconselhamos


a voc a sempre utilizar esses dois comandos ao iniciar um novo programa!

17

Resumo do captulo
Voc aprendeu diversos recursos importantes do SCILAB neste captulo,
incluindo a exibio de informaes na tela do console, entrada de dados
pelo teclado e realizao de clculos. Aps a leitura deste captulo voc
dever ser capaz de:
Conhecer o Ambiente SCILAB e identificar as telas principais e suas
funes.
Utilizar a Ajuda para consultar funes diversas e como utiliz-las.
Inserir comentrios para documentar programas e aprimorar sua
legibilidade.
Identificar de maneira coerente os tipos das variveis a serem
utilizadas.
Escolher e declarar nomes coerentes para as variveis. O SCILAB
case-sensitive (diferencia letras maisculas de minsculas).
Realizar a sada de informaes atravs da tela do console por meio
dos comandos mprintf e disp.
Realizar a leitura de informaes a partir do comando de entrada
input.
Utilizar de maneira correta os operadores aritmticos (tabela 3
pg12).
Utilizar os parnteses para estabelecer uma hierarquia de operaes
a serem realizadas. (Ex: Se uma operao tiver parnteses
aninhados, o conjunto mais interno dentro dos parnteses avaliado
primeiro).
Desenvolver algoritmos em SCILAB utilizando a estrutura de entrada,
processamento e sada.

18

Exerccios estrutura sequencial:

Exerccio 1. Determine se cada um dos exemplos verdadeiro ou falso. Se


falso explique por qu.
a) Os comentrios fazem com que o computador imprima o texto depois
de // na tela quando o programa executa.
b) O SCILAB considera que as variveis numero e NuMeRo so
idnticas.
c) Os operadores aritmticos * , / , + e tm todos, o mesmo nvel de
precedncia.
Exerccio 2 Escreva instrues para cada uma das tarefas a seguir:
a) Solicite que o usurio digite um nmero.
b) Inserir um inteiro e atribuir o valor varivel valor.
c) Mostrar na tela Este um programa em SCILAB.
Exerccio 3 Escreva instrues ou comentrios que realizam cada uma das
tarefas a seguir.
a) Solicite ao usurio que leia um nmero e o armazene-o na varivel x.
b) Solicite ao usurio que leia um numero e armazene-o na varivel y.
c) Solicite ao usurio que leia um numero inteiro e armazene-o na
varivel z.
d) Compute o produto dos trs inteiros contidos nas variveis x, y e z e
atribua varivel produto.
e) Exiba a mensagem O produto das trs nmeros seguida pelo valor
da varivel produto.

Exerccio 4. Faa um programa que solicite como entrada um valor de


temperatura em graus Celsius ( oC). Aps realizada a entrada faa a
converso da temperatura para Kelvin (K). Aps realizada a

converso

mostre na sada do seu programa a temperatura em Kelvin e a temperatura


19

em graus Celsius. Para realizar a converso utilize a relao: K = C +


273,15;
Veja um exemplo de como pode ser feita a sada do seu programa !

Figura 10 Soluo exerccio 1

Exerccio 5: hora de dar mais um passo a frente. Com base no seu


programa anterior, acrescente a ele a converso da temperatura em graus
Celsius para Kelvin e graus Celsius para grau Fahrenheit. Mantenha o
mesmo padro de sada sugerido, acrescentando a converso para graus
Fahrenheit. Para realizar a converso utilize a relao: K = C + 273,15; F =
C 1,8 + 32

Exerccio 6: Adaptado de Holloway e Holloway (2006). Suponha que a


altura h(t) de uma bola seja dada pela seguinte funo;

gt 2
h(t) = v0t
2
em que:
V0 a velocidade inicial da bola em metros por segundo (m/s);
t

o tempo em segundos (s);

g a gravidade da terra = 9,81 m/s2


20

Escreva um programa que calcular a altura de uma bola em um


determinado tempo t. Esteja certo de usar nomes adequados para variveis e
para todos os smbolos da frmula.

Dica: Quais so as entradas deste problema? ( Que tipo de informao eu


preciso do usurio para que eu possa calcular a altura da bola?)
O que dever ser feito como processamento? ( O que este programa deve
fazer?)
O que voc espera como sada deste programa? Veja um exemplo !

Exerccio 7, proposto por Holloway e Holloway (2006): Uma aproximao


ainda mais real pode ser feita para o problema apresentado no exerccio
nmero 2. Desta vez temos uma equao que descreve a altura e outra
equao que descreve a velocidade aps o lanamento.

Suponha que uma bola de massa qualquer seja arremessada para cima
numa velocidade

v0

. Qual a velocidade v(t) e sua altura acima do

lanamento h(t) no instante t? A resposta, se desprezamos a resistncia do


ar e um conjunto de outras pequenas influncias,

21

v(t) = v0 gt
gt 2
h(t) = v0 t
2
Onde

= 9,81 m/s2 a acelerao da gravidade na superfcie da terra.

Escrevamos um cdigo em SCILAB que solicita V0 e t e ento informa as


particularidades da bola (velocidade e altura).
Exerccio 8, proposto por Holloway e Holloway (2006). Consideremos um
problema da eletrnica. Suponha que ns tenhamos trs resistores eltricos
montados em paralelos, como mostrado na figura abaixo, e gostaramos de
trat-lo como um simples resistor. Criemos um algoritmo para calcular a
resistncia equivalente dos trs resistores paralelos, mas tratado como um.

Figura 11 Holloway e Holloway (2006).

A lei de Ohm diz que a corrente I i atravs do i-simo resistor proporcional


queda da tenso V sobre o resistor, assim estas quantidades so
associadas por V = Ri I i onde Ri chamada a resistncia do resistor. A
corrente total passando pelos trs resistores justamente a soma das trs
correntes e a queda da tenso

I total =

a mesma para todos os trs, assim:

V V V
1 1 1
+ + =V
+ +
R1 R2 R3
R1 R2 R3

Consequentemente, a lei de Ohm se aplica ao grupo completo de trs


resistores, com a resistncia Rparalela dada por:

1
Rparalela

1 1 1
+ +
R1 R2 R3
22

Observe que tivemos que analisar o problema antes que pudssemos


escrever qualquer cdigo; frequentemente este o caso, e a anlise do
problema e a confeco da soluo so usualmente mais difceis do que a
implementao.
Escrevamos um cdigo em SCILAB que solicita ao usurio os valores das
trs resistncias (R1 , R2 , R3) e retorna a resistncia dos trs em paralelo
(Rparalela).

PROJETO FINAL 1 : CLCULO DE CARGA TRMICA PARA UMA CMARA


DE RESFRIAMENTO.
A parcela de carga trmica englobada sob o ttulo de diversos, devida aos
equipamentos mecnicos, iluminao, pessoas e, demais elementos que
constituem fonte de calor no interior das cmaras.
Os equipamentos mecnicos so normalmente, os ventiladores dos UNIT
COOLERS cuja potncia da ordem de 0,5 a 1 c.v. por cada T.R bombas,
empilhadeiras, etc.
O calor dissipado pelos mesmos pode ser calculado como segue,
dependendo da situao:
Motor e carga no interior da cmara;

Qmotor =

Pc.v

632

kcal / dia

motor

em que:
o nmero de horas de funcionamento por dia de equipamento;

motor o rendimento do motor eltrico de acionamento.

A dissipao provocada pela iluminao dada por;

Qilumin ao = 0,86w A kcal / dia


23

em que ;
W a potencia da lmpada (W/m2)
o nmero de horas de funcionamento por dia de equipamento;
A a rea da cmara.

As pessoas por sua vez liberam pelo seu metabolismo, uma quantidade de
calor que nos dada por:

Qpessoas = nq

kcal / dia

em que:

"n" o nmero de pessoas;


"q" o calor liberado por pessoa e por hora, o qual cresce com o
abaixamento de temperatura.

Prtica !
Voc deve ter percebido que as informaes necessrias para o clculo de
carga trmica devido a fatores diversos leva em considerao a quantidade
de pessoas, mquinas e lmpadas no interior da cmara. Que tal
construirmos um programa em SCILAB para realizar estes clculos? Para
isto leia com ateno o enunciado a seguir.
Elabore um programa para calcular a carga trmica de uma cmara frigorifica
com as seguintes caractersticas:
rea da cmara 200 m2.
Para realizar o transporte de carga dentro da cmara sero
necessrios 10 homens/hora por 24 horas. (Utilize como 300 kcal/hora
o calor liberado por pessoa)

24

Uma empilhadeira ser utilizada 2 horas por dia. Ela possui um motor
com potncia de 10 c.v. e eficincia 0,85.
No interior da cmara teremos lmpadas fluorescente especial para
baixas temperaturas na proporo de 10 W/m2 (acendimento 4
horas/dia).
Sero previstas tambm lmpadas germicidas na proporo de 2
W/m2 (acendimento 24 horas).

Utilize a sada a seguir como forma de conferir os seus resultados!


Aps desenvolver o seu programa e verificar o funcionamento, realize
pequenas simulaes variando a quantidade de pessoas, empilhadeiras ou
lmpadas. Veja dentre estes trs fatores qual o responsvel por dissipar
maior quantidade de calor dentro da cmara 2.

Figura 12 Soluo, projeto cmara de resfriamento.

Toda a formulao para o clculo de carga trmica foi adaptada de COSTA,

ENNIO CRUZ da. Refrigerao. Editora Edgard Blucher, 3 edio, 2011.


25

2. ESTRUTURA CONDICIONAL
A estrutura condicional permite que o programa usufrua de um mecanismo de
seleo e um conjunto de instrues em um processo qualquer.

O comando if else.
Na indstria de um modo geral, ambientes com temperatura e umidade
relativa controlados so necessrios para a manuteno da qualidade de
processos de fabricao e armazenamento.
Na indstria de refratrios especificamente, a manuteno da umidade
relativa em baixos teores faz-se necessria no processo de composio de
moldes, tendo em vista que altas umidades relativas no ambiente podem
ocasionar danos significativos no processo de produo (lembre-se do saleiro
na sua casa em semanas chuvosas). Portanto, a direo da fbrica solicitou
ao engenheiro responsvel que desenvolvesse uma lgica de controle de
umidade relativa no ambiente de composio de moldes da fbrica. Para que
os moldes atendessem aos padres de qualidade da fbrica era necessrio
que a umidade relativa ambiente fosse mantida abaixo de 40%. Caso
contrrio uma mensagem de alerta deveria ser exibida.
O engenheiro responsvel desenvolveu um programa em SCILAB que
recebia como entrada o valor da umidade relativa no ambiente e exibia uma
mensagem de alerta caso ela estivesse fora dos padres de qualidade da
fbrica.
Veja o cdigo no exemplo 2.1 a seguir:

26

clear;

clc;

mprintf("------------Software para controle de umidade relativa---- ");

umidade=input(" Digite a umidade relativa atual em decimal : ");

if (umidade<=0.4) then

6
7

mprintf("\n Umidade relativa dentro dos padres");


else

mprintf("\n -----ALERTA !!! ------ALERTA !!!! -------");

mprintf("\n UMIDADE RELATIVA FORA DOS PADRES !!!");

10

end

11

mprintf("\n Fim de programa");

Linha 1: O comando clear limpa a memria do sistema.


Linha 2: O comando clc limpa a janela de sada do SCILAB.
Linha 3: Mostra mensagem na tela por meio do comando mprintf().
Linha 4: A funo input() solicita o valor da umidade relativa e armazena o
valor na varivel umidade .
Linhas 5 e 6: Verifica se a varivel umidade possui um valor armazenado
menor ou igual a 0.4. Quando esta condio for verdadeira a mensagem
mostrada.
Linhas 7 a 10: Caso a condio imposta na linha 5 seja falsa as mensagens
de alerta so mostradas na tela.

Estrutura condicional - if-elseif-else


Um exemplo prtico da utilizao deste comando pode ser encontrado no
menu ajuda do SCILAB. Veja um trecho de cdigo disponibilizado:
Imagine um copo de isopor com um buraco no fundo. Se voc, em seguida,
derramar mel no copo voc vai achar que o copo drena muito lentamente.
Isso porque a viscosidade do mel grande em comparao com
viscosidades de outros lquidos. Se eu encher o mesmo copo com gua, por
exemplo, o copo ir drenar mais rapidamente.
27

A viscosidade descreve a frico interna de um fluido em movimento. Um


fluido com grande viscosidade resiste ao movimento. Um fluido com baixa
viscosidade flui facilmente.
A viscosidade uma propriedade dos fluidos que tambm varia em funo da
temperatura com ilustra a tabela a seguir:
Tabela 6 Variao da viscosidade com a temperatura.

Temperatura (oF)

Viscosidade (lb/ft/hr)

0 Temperatura < 50

242

50 Temperatura < 100

82,1

100 Temperatura <150

30,5

150 Temperatura < 200

12,6

Temperatura 200

5,7

Diante das informaes sobre a viscosidade dos fluidos, desenvolva um


programa em SCILAB que receba como entrada a temperatura do fluido e
mostre na sada a sua viscosidade. Veja o exemplo 2.2 a seguir.
1

mprintf("------------Clculo da viscosidade de um fluido----------------");

2 temperatura=input(" Digite a temperatura do fluido em graus fahrenheit (F) 5: ");


3
4
5
6
7
8
9
10
11
12

if (temperatura>=0 & temperatura<50) then


mprintf("\n Viscosidade do fluido = 242 (lb/ft/hr) ");
elseif(temperatura>=50 & temperatura<100) then
mprintf("\n Viscosidade do fluido = 82.1 (lb/ft/hr) ");
elseif(temperatura>=100 & temperatura<150) then
mprintf("\n Viscosidade do fluido = 30.5 (lb/ft/hr) ");
elseif(temperatura>=150 & temperatura<200) then
mprintf("\n Viscosidade do fluido = 12.6 (lb/ft/hr) ");
elseif (temperatura>=200)
mprintf("\n Viscosidade do fluido = 5.7 (lb/ft/hr) ");
28

13

else

14
15

mprintf("\n Valor invlido !!! ");


end

linhas 7, 9, 11: Por meio do comando elseif() as condies de temperatura


do fluido so verificadas. Repare que o operador lgico & foi necessrio para
esta verificao.

Figura 13 Tela de sada para exemplo de clculo de viscosidade

Resumo do captulo
Neste captulo mostramos as estruturas de condio nica if e instruo de
condio composta if - else. Aps a leitura deste captulo voc dever
ser capaz de:
Identificar a necessidade de uso de uma instruo do tipo condicional.
Implementar por meio do SCILAB uma instruo do tipo condicional.
Saber diferenciar as estruturas condicionais simples das estruturas
condicionais compostas e identificar aplicaes diversas.
Saber ler e interpretar as tabelas de operadores relacionais e lgicos
(tabelas 4 e 5 pginas 12 e 13).
Utilizar os operadores relacionais e lgicos e criar condies simples e
ou compostas em estruturas condicionais.

Exerccios estrutura condicional:


Exerccio 1: Escreva instrues para cada uma das tarefas a seguir:
29

a) Solicite que o usurio digite um nmero.


b) Inserir um inteiro e atribuir o valor varivel valor.
c) Escreva a mensagem O nmero digitado maior ou igual
a zero Se a varivel valor for maior ou igual a zero.

Exerccio 2 Escreva instrues ou comentrios que realizam cada uma das


tarefas a seguir.
a) Solicite ao usurio que leia um nmero e o armazene-o na varivel x.
b) Solicite ao usurio que leia um numero e armazene-o na varivel y.
c) Verifique se o valor de x maior que -3 ou valor de y menor que 0 e
escreva a mensagem O valor de x menor que 3 ou o
valor de y menor que zero.
d) Verifique se o valor de x maior que -3 e valor de y menor que 0 e
escreva a mensagem O valor de x menor que 3 e o
valor de y menor que zero.
e) Verifique se o valor de x e y esto fora dos intervalos especificados
nas letras c) e d) e escreva na tela o valor de x e o valor de y.

Exerccio 3: Questo adaptada de (IFTRN).


Sendo v1 = 15, v2 = 10, v3 = 5, v4 = 0, defina qual ser a resposta
(verdadeiro ou falso) para as sentenas lgicas abaixo.
I)

(v1 = 10) E (v2 = 10)

II)

(v1 = 15) E (v2 = 10)

III)

(v1 = 15) E (v3 = v2)

IV)

(v2 > 5) OU (v3 < 10)

V)

(v4 = 1) OU (v3 = 4)

VI)

(v2 = 10) OU (v4 = 5)

VII)

(v1 > 10 E v2 < 15) E (v3 < 10 E v4 = 0)

VIII)

(v1 < 10 E v2 > 15) OU (v3 > 5 OU v4 = 0)

30

Exerccio 4: Desenvolva um programa em SCILAB que receba como entrada


a temperatura do fluido e mostre na sada a viscosidade do fluido. Utilize a
tabela mostrada no exemplo 2 desta unidade. Voc dever fazer a leitura da
temperatura do fluido em graus Celsius na entrada ( oC ).
Dica: Tenha cuidado com as unidades. Observe que a tabela que voc vai
utilizar est em graus Fahrenheit ( oF) mas voc dever fazer a entrada em
graus Celsius (oC).
Exerccio 5: Adaptado de Raymond e Kapuno Jr (2008). Desenvolva um
programa em SCILAB que recebe como entrada um valor de temperatura em
graus Celsius (oC) e retorne como sada a fase que se encontraria a gua
nesta temperatura (slido, lquido ou gasoso).
Exerccio 6: Adaptado de Raymond e Kapuno Jr (2008). O nmero de
Reynolds pode ser utilizado para caracterizar diferentes regimes de
escoamento, tais como laminar, transio ou turbulento. O escoamento
laminar ocorre para baixos nmeros de Reynolds ( Re 2100 ), onde as foras
viscosas so dominantes, e caracterizado por suave movimento do fluido.
O fluxo turbulento ocorre em um elevado nmero de Reynolds ( Re > 4000 ) e
dominado por foras de inrcia, que tendem a produzir redemoinhos
aleatrios, vrtices e instabilidades. Para valores entre 2100 e 4000,
classificamos o escoamento como escoamento em transio.
Diante das informaes sobre o nmero de Reynolds desenvolva um
programa em SCILAB que classifique um escoamento dado o nmero de
Reynolds.
Exerccio 7: Implemente um algoritmo em SCILAB que retorne o valor da
funo abaixo aps receber um valor qualquer de entrada.

f x

2 x 2,
3,

2
x 3

x,

Exerccio 8: Vamos recordar o problema proposto no exerccio 3 da


unidade1.
31

Suponha que uma bola de massa qualquer seja arremessada para cima
numa velocidade

v0 .

Qual a velocidade

v(t) e sua altura acima do

lanamento h(t) no instante t? A resposta, se desprezamos a resistncia do


ar e um conjunto de outras pequenas influncias,

v(t) = v0 gt
gt 2
h(t) = v0 t
2
Onde

= 9,81 m/s2 a acelerao da gravidade na superfcie da terra.

O que aconteceria se jogssemos esta bola em outro planeta? Como


poderamos fazer este tipo de estudo?
Que tal implementarmos um menu de opes e deixarmos que o usurio
escolha o planeta em que esta bola ser jogada!?
Escrevamos um cdigo em SCILAB que permita que o usurio escolha um
planeta em que quer jogar a bola e solicita v0 e t e ento informa as
particularidades da bola (velocidade e altura). Aproveite o seu programa para
verificar qual a relao existente entre a gravidade, altura da bola e
velocidade da bola. Utilize a tabela a seguir para a sua implementao.
Tabela 7 Gravidade dos planetas do sistema solar.

Planeta

Gravidade (m/s2)

Mercrio

3,7

Vnus

8,8

Terra

9,8

Marte

3,8

Jpter

26,4

Saturno

11,5

Urano

9,3

32

Netuno

12,2

Pluto

0,6

Veja um exemplo do menu de opes !

Figura 14 Exemplo menu de opes.

Exerccio 9: Olimpada Brasileira de Informtica OBI2005 Modalidade


Programao Nvel 1
A Companhia de Taxi Tabajara (CTT) uma das maiores empresas de
transporte do pas. Possui uma vasta frota de carros e opera em todas as
grandes cidades. Recentemente a CTT modernizou a sua frota, adquirindo
um lote de 500 carros bicombustveis (carros que podem utilizar como
combustvel tanto lcool quanto gasolina). Alm do maior conforto para os
passageiros e o menor gasto com manuteno, com os novos carros
possvel uma reduo adicional de custo: como o preo da gasolina est
sujeito a variaes muito bruscas e pode ser vantagem, em certos
momentos, utilizar lcool como combustvel. Entretanto, os carros possuem
um melhor desempenho utilizando gasolina, ou seja, em geral, um carro
percorre mais quilmetros por litro de gasolina do que por litro de lcool.
TAREFA
Voc deve escrever um programa que, dados o preo do litro de lcool, o
preo do litro de gasolina e os quilmetros por litro que um carro
33

bicombustvel realiza com cada um desses combustveis, determine se


mais econmico abastecer os carros da CTT com lcool ou com gasolina. No
caso de no haver diferena de custo entre abastecer com lcool ou gasolina
a CTT prefere utilizar gasolina.
ENTRADA
A entrada composta por uma linha contendo quatro nmeros reais com
preciso de duas casas decimais A, G, Ra e Rg, representando
respectivamente o preo por litro do lcool, o preo por litro da gasolina, o
rendimento (km/l) do carro utilizando lcool e o rendimento (km/l) do carro
utilizando gasolina. A entrada deve ser lida do dispositivo de entrada padro
(normalmente o teclado).
SADA
A sada deve ser composta por uma nica linha contendo o caractere A se
mais econmico abastecera frota com lcool ou o caractere G se mais
econmico ou indiferente abastecer a frota com gasolina.
A sada deve ser escrita no dispositivo de sada padro (normalmente a tela).
RESTRIES
0.01 A 10.00
0.01 G 10.00
0.01 Ra 20.00
0.01 Rg 20.00

PROJETO FINAL 2 : DESENVOLVIMENTO DE UM CONVERSOR DE


UNIDADES.

Caro aluno, a seguir apresentaremos algumas informaes importantes


para o desenvolvimento do seu conversor de unidades.

34

Algumas relaes de converso de unidades:


Fora:

1 N = 0,102 kgf= 0,2249 lbf


1 N = 1 kg m / s2

Presso:

1Pa = 1 N / m2 = 0,102 kgf / m2 = 0,000145 lbf / pol2


1 atm = 101.325 Pa
1 bar = 105 Pa
1 lbf / pol2 = 1 psi (pounds per square inch)

Energia:

1 J = 0,0009478 BTU = 0,00023884 kcal


1 BTU = 252 cal

Potncia:
HP

1 W = 3,412 BTU / h = 0,85984 kcal / h = 0,001359 CV = 0,001341

Prtica!
hora de desenvolver o seu prprio conversor de unidades. Voc dever
utilizar as informaes fornecidas no texto sobre converso de unidades. O
seu conversor dever ter um menu inicial com as seguintes opes
Temperatura
Fora
Presso
Energia
Potncia
O usurio dever escolher qual o tipo de unidade ele quer realizar a
converso. Aps o usurio realizar a escolha, ele dever escolher em
qual unidade o valor a ser convertido vai ser digitado.

Exemplo:
Caso o usurio escolha converter temperaturas ele vai selecionar a
opo referente temperatura no menu;

35

Aps ter selecionado temperatura ele dever escolher em qual


unidade de temperatura ser feita a entrada; Celsius, Kelvin ou
Fahrenheit.
Como sada o programa dever ento mostrar a temperatura digitada
pelo usurio em todas as trs unidades de temperatura.
Veja como exemplo a tela de sada aps utilizar o conversor

Figura 15 Exemplo de sada para o programa conversor de unidades

36

3. ESTRUTURAS DE REPETIO
3.1 O comando for
O comando for repete um conjunto de instrues a partir de um nmero
conhecido de repeties. Este comando segue o seguinte formato:

for varivel = incio : incremento : fim


Bloco de comandos
end

Exemplo
Em um exerccio do roteiro anterior analisamos a importncia do termo
gravidade (g), no modelo proposto;

v(t) = v0 gt
h(t) = v0t gt 2 / 2
Analisaremos agora, qual o comportamento da velocidade e da altura diante
da variao do tempo. Perceba que tanto a velocidade v(t) , quanto a altura

h(t) , so em funo do tempo. Este tipo de anlise semelhante a


questionarmos; o que acontecer com a velocidade e altura da bola no
intervalo de tempo de 0 a 2 segundos? Mostre o comportamento a cada 0,5
segundos. Utilize como v0 = 15 (m/s).
Se voc fosse fazer esta anlise no seu caderno voc seria orientado pelo
seu professor de clculo a desenvolver o seguinte raciocnio:

37

Tabela 8 Exemplo de clculo manual.

T (s)

v(t) - (m/s)

h(t) (m)

15

0.5

10,095

6,274

5,190

10,095

1.5

0,285

11,464

-4.620

10,380

Este tipo de tratamento (manual), s vivel quando o nmero de repeties


pequeno. Imagine se precisarmos de observar o comportamento das
variveis diante de um nmero grande de repeties ? Veja o exemplo a
seguir !
O que acontecer com a velocidade e altura da bola no intervalo de tempo de
0 a 2 segundos? Mostre o comportamento a cada 0,1 segundos. Utilize como
v0 = 15 (m/s). Desenvolva um programa em SCILAB que mostre o resultado
da velocidade e da altura da bola para cada iterao. (exemplo 3.1)
1

clear;

clc;

g=9.81;

mprintf("Simulao do arremeo de uma bola no planeta terra \n\n");

v0 = input(" Digite a velocidade inicial do arremeo (m/s) : ");

mprintf("\n t (s) h(t) (m)

for t=0:0.1:2

altura= v0*t - (g*(t^2))/2;

velocidade = v0 - g*t;

10

mprintf("\n %2.2f

11

mprintf("\n");

12

v(t) (m/s)")

%2.2f

%2.2f ",t,altura,velocidade);

end

38

linha 7 Observe a estrutura do comando for. A varivel t a varivel de


controle. Ela foi inicializada com o valor 0, ser incrementada a cada 0,1
segundos at que t alcance o valor de 2 segundos.
linhas 8 a 11 Estas linhas constituem o bloco de comandos que ser
executado a cada iterao. Portanto a cada iterao os clculos so
efetuados nas linhas 8 e 9 e mostrados nas linhas 10 e 11.
Veja a sada dos resultados a seguir:

Figura 16 Tabela de soluo utilizando comando for

Como voc pode perceber, de maneira rpida e segura os clculos foram


efetuados e a simulao nos permite visualizar alguns resultados
interessantes.
A primeira observao que os resultados acima nos permitem fazer que as
equaes conseguem descrever o movimento de subida e decida da bola.
Veja os valores de altura durante a simulao. Do tempo 0 ao tempo 1,5 a
bola vai ganhando altura, at que no tempo = 1,5 segundos ela atinge a sua
altura mxima ! Aps 1,5 segundos a bola ento comea a perder altura.

39

De maneira semelhante a mesma anlise pode ser feita quanto a velocidade


da bola. Veja que no tempo 0 a bola sai com a velocidade mxima, a
velocidade v0 (15 m/s). A partir do tempo zero a velocidade vai diminuindo
at chegar ao tempo 1,5 segundos em que a sua velocidade igual a 0,29
(m/s) . A partir do tempo igual a 1,5 segundos a bola volta a ganhar
velocidade, desta vez com sinal negativo, ela est agora em uma trajetria
descendente, caindo !

Exemplo 2 : Somatrios
O uso de somatrios abrange diversas reas do conhecimento. Possui
aplicaes variadas em estatstica, cincia da computao, engenharias,
matemtica, fsica, qumica, etc.
Observe a tabela a seguir.
Tabela 9 Representao matemtica e em SCILAB para um somatrio

S=

for i:1:n

i=0

s = s+i;
end

A tabela acima apresenta um paralelo entre a representao matemtica de


um somatrio e a sua implementao em SCILAB. Veja a seguir um exemplo
da implementao desta estrutura.
A temperatura ambiente de uma regio pode ser obtida a partir de um ajuste
de dados experimentais por uma srie de Fourier (DUCHON e HALE 2012).
A equao a seguir foi obtida a partir dos dados experimentais de
temperatura da cidade de Belo Horizonte no ms de agosto de 2013.

40

T(t) =19, 06 + 0, 211cos ( 0, 08721t ) +[ 5.51sen(0, 08721t)]


em que:
T = Temperatura ambiente ( oC );
t = tempo em horas.
Utilizando o modelo proposto para estimar a temperatura a partir da hora
fornecida desenvolva um programa em SCILAB que calcule a temperatura
mdia do ms de agosto. (Exemplo 3.2)
1
2
3
4
5
6
7
8
9
10

clear;
clc;
mprintf("Clculo da temperatura mdia no ms de agosto - 2013 \n\n");
soma = 0;
for t=0:720
temperatura = 19.06 + (0.211*cos(0.08721*t)) + (-5.51*sin(0.08721*t))
soma = soma + temperatura;
end
media = soma/720;
mprintf("\n A temperatura mdia do ms de agosto-2013 em BH foi de
%2.2f (C) ",media);

linha 4 Inicializa a varivel soma.


linha 5 A varivel t a varivel de controle. Ela foi inicializada com o valor 0,
ser incrementada a cada 1 hora at que t alcance o valor de 720 horas.
Perceba que quando o incremento for feito de 1 em 1 no necessrio
ajustar o incremento. Lembre-se t final foi ajustado como 720 horas, afinal em
um ms temos 30 dias de 24 horas.
linha 6 A varivel temperatura guarda o resultado da temperatura calculada
para a hora t.
linha 7 Nesta linha temos a implementao do somatrio. Em diversos livros
de algoritmos voc ir encontrar esta estrutura tambm chamada de
acumulador.
linha 9 A mdia calculada por meio da diviso do somatrio das
temperaturas pela quantidade de amostras.
linha 10 Mostra a mdia calculada.
41

Figura 17 Tela de sada aps processamento da mdia.

Resumo do item 3.1


Nesta seo mostramos a estrutura de repetio for. Aps a leitura deste
captulo voc dever ser capaz de:
Identificar a necessidade de uso da estrutura de repetio for.
Identificar os parmetros que compem o comando for (incio,
incremento e fim) e implementar o comando for por meio do SCILAB.
Identificar quando e como implementar somatrios.

Exerccios Laos de repetio comando for


Exerccio 1 Escreva uma instruo em SCILAB ou um conjunto de instrues
em SCILAB para realizar cada uma das seguintes tarefas:
a) Imprima os inteiros de 1 a 20 utilizando o comando for.
b) Imprima os nmeros mpares entre 1 e 9 utilizando o comando for.
Realize esta tarefa ajustando apenas os parmetros de inicio,
incremento e fim do comando for.
c) Mostre a soma dos nmeros pertencentes ao intervalo 45 e 55
inclusive.
Exerccio 2 Faa um programa em SCILAB que faa a leitura de 3 valores e
mostre os valores digitados pelo usurio. Voc dever utilizar o comando
for. Utilize como referncia a tela de sada a seguir.

42

Figura 18 Exemplo de entrada e sada de dados utilizando estrutura de repetio

Exerccio 3 Desenvolva um programa em SCILAB que calcule a


exponenciao entre dois nmeros x e y escolhidos pelo usurio (xy). Para
realizar os clculos voc no poder utilizar o comando (^).
Dica: A operao 53 deve ser feita da seguinte maneira: 5 x 5 x 5 = 125. A
operao de multiplicao foi repetida 3 vezes. Quais sero as entradas
deste programa ?
Exerccio 4 Vimos no exemplo que ilustra a utilizao de somatrios que a
temperatura ambiente de uma regio pode ser obtida a partir de um ajuste de
dados experimentais por uma srie de Fourier. A funo a seguir foi obtida a
partir dos dados experimentais de temperatura da cidade de Belo Horizonte
no ms de agosto de 2013.

T(t) =19, 06 + 0, 211cos ( 0, 08721t ) +[ 5.51sen(0, 08721t)]


em que:
T = Temperatura ambiente ( oC );
t = tempo em horas.
Utilizando o modelo proposto para estimar a temperatura a partir da hora
fornecida desenvolva um programa em SCILAB que calcule e mostre as
seguintes informaes sobre a temperatura em Belo Horizonte nas primeiras
48 horas de agosto:
a)

A temperatura mdia do perodo


43

b)

A maior temperatura registrada no perodo

c)

A menor temperatura registrada no perodo

d)

Quantas horas a temperatura ficou acima de 19 oC.

e)

Quantas horas a temperatura ficou abaixo de 16 oC.

3.2 O Comando While


O comando while ou (enquanto em pseudocdigo) um comando de
repetio indicado para situaes em que no se conhece o nmero de
repeties a serem realizadas. Sua sintaxe em SCILAB a seguinte:
while (condio)
Bloco de comandos
end
Exemplo
Um programa foi desenvolvido para ler um conjunto no determinado de
valores e mostrar na sada;
a) o valor lido;
b) o quadrado do nmero lido;
c) o cubo do nmero lido;
d) a raiz quadrada do nmero lido;
e) se par ou mpar.
Para encerrar a digitao um nmero menor ou igual a zero dever ser
digitado.
Veja uma sugesto de implementao para este problema no cdigo a
seguir:

44

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

clear;
clc;
numero=input("Digite um nmero inteiro");
while numero>0
quadrado=numero^2;
mprintf("\n O Quadrado de %d = %2.2f",numero,quadrado);
cubo=numero^3;
mprintf("\n O cubo de %d
= %2.2f",numero,cubo);
raiz=sqrt(numero);
mprintf("\n A raiz quadrada de %d = %2.2f",numero,raiz);
if modulo(numero,2)==0 then
mprintf("\n O numero %d par ",numero);
else
mprintf("\n O nmero %d mpar ",numero);
end
mprintf("\n\n\n");
numero=input("Digite um nmero inteiro");
end

linhas 1 e 2 Limpa a memria e tela


linha 3 Inicializao da varivel numero.
Linha 4 Incio do bloco de repeties. importante destacar a inicializao
da varivel numero feita na linha 3. O valor atribudo a esta varivel quem
vai decidir se o algoritmo executar o bloco de repeties ou no. Lembrando
que o comando de repetio while composto por uma condio. Caso a
condio seja verdadeira as instrues pertencentes ao corpo do comando
sero executadas, caso contrrio o comando de repetio no executado.
Na linha 4 em especfico se a varivel numero conter um valor igual ou
inferior a zero o comando while no ser executado.
linha 11 Para verificar se um nmero par ou no utilizou-se o comando
modulo(numero,2). Este comando retorna o resto da diviso de numero
por 2. Consequentemente se o resto retornado for igual a zero, podemos
afirmar que a varivel nmero contm um valor par.
Linhas 17 Uma nova leitura para a varivel numero deve ser feita. Nesta
linha que o programa possibilita ao usurio escolher um novo nmero para
uma nova sequncia de processamento ou escolher um valor para terminar
lao de repetio.
45

Veja um exemplo de aplicao.


Nas indstrias qumica, agrcola e de alimentos muito comum o uso de
equaes empricas para estimar a secagem de diversos produtos. Estas
equaes so vlidas para determinadas faixas de temperaturas e umidades
relativas. O objetivo destas equaes estimar aps um determinado tempo
de secagem qual o teor de umidade do produto. Estas equaes possuem
formas diversificadas, uma das formas mais utilizadas conhecida pelo
seguinte formato (BROOKER et al, 1992):

U(t) = e

kt n

em que :
U(t) o teor de gua do produto,
t o tempo de secagem em horas,
k e n so parmetros que dependem do produto;
3

Um engenheiro qumico gostaria de conhecer o comportamento da secagem

de um determinado produto e decidiu elaborar um programa em SCILAB que


faa a simulao da secagem de um produto enquanto o teor de gua do
mesmo seja maior ou igual a 0,13. Mostre na tela a cada hora o valor do teor
de gua do produto. Utilize para a implementao os valores de 0,365 para k
e 0,663 para n. (Exemplo 3.3)
1
2
3
4
5
6
7
8

clear;
clc;
k=0.365;
n=0.663;
t=0;
teor_umidade=1;
mprintf("-------Simulao de secagem--------- \n\n");
mprintf("\n\t\t t(h)\t\t U(%%) ");

Informao o estudo da cintica de secagem de gros e alimentos de extrema

importncia para a manuteno da qualidade do produto e para o projeto de secadores.

46

9
10
11
12

while(teor_umidade>=0.13)
teor_umidade= exp(-k*(t^n));
mprintf("\n\t\t %2.3f\t\t %2.2f ",t,teor_umidade*100);
t=t+1;

13

end

linhas 3 a 5 Inicializao das variveis.


linha 6 A varivel teor de umidade foi inicializada em 1 (equivalente a 100%).
Basta voc ver que para o tempo igual a zero a equao vale 1. Perceba a
importncia desta inicializao, esta inicializao que permite o programa
executar as instrues no bloco de comandos do comando while. Em outras
palavras esta inicializao torna a condio no comando while verdadeira e
assim permite a repetio do bloco de comandos.
Linhas 9 a 12 Bloco de comandos pertencente ao comando while. O teor de
umidade calculado, mostrado na tela e o tempo incrementado. Na linha 12
surge uma estrutura conhecida por muitos autores como contador. O
contador incrementado em 1 toda vez que um clculo efetuado e logo
aps mostrado na tela.
Veja a sada da simulao feita em SCILAB

Figura 19 Tela de sada para simulao de secagem.

importante lembrar que o modelo proposto para a simulao da secagem neste material est em

uma forma extremamente simplificada. A simulao de secagem em modelos complexos pode envolver
programas com diversas variveis e funes, podendo levar at dias para se obter os resultados
simulados.

47

Observe que a tabela de resultados mostrada na sada indica que, para o


produto simulado secar at 13% de umidade, precisaramos de 15 horas de
secagem.
Ser que voc saberia explicar, por que o ltimo resultado t = 15 horas
e U = 12,25% apareceu na lista de resultados ??? Este resultado deveria
ter aparecido ???

Resumo do item 3.2


Neste captulo mostramos a estrutura de repetio while. Aps a leitura
desta seo voc dever ser capaz de:
Identificar a necessidade de uso da estrutura de repetio while.
Implementar o comando while por meio do SCILAB.
Utilizar contadores e somatrios.

Exerccios Laos de Repetio

Exerccio 1
Faa um programa em SCILAB que faa a leitura de 5 valores e mostre os
valores digitados pelo usurio. Voc dever utilizar o comando while.
Exerccio 2 Adaptado de Raymond e Kapuno Jr (2008)
Desenvolva um programa em SCILAB que receba como entrada o valor de
potncia em Watt (W) e converta este valor para BTU/h. Mostre na tela o
resultado da converso e em seguida pergunte ao usurio se ele deseja
realizar uma nova converso. O usurio dever digitar 0 (zero) para terminar
o programa. Veja na figura a seguir um exemplo de sada para este
programa.

48

Figura 20 Sada para converso de potncia

Exerccio 3
Escreva um programa que mostre todos os nmeros divisveis por um
nmero indicado pelo usurio dentro de um intervalo tambm indicado pelo
usurio. O usurio deve entrar com um valor correspondente ao divisor e em
seguida ele ir fornecer o valor inicial e final do intervalo. Veja a tela de sada
a seguir.

Figura 21 Sada exemplo para o exerccio 3

Exerccio 4
Devido ao uso frequente, a descarga da bateria de equipamentos eletrnicos
pode se comportar de acordo com a funo proposta a seguir;

y(t) = y0 2(

0,1)t

em que;
y0 a carga inicial da bateria;
y(t) a quantidade de carga aps t horas de uso.

49

a) Desenvolva um programa em SCILAB, que tenha como entrada a


carga inicial da bateria e mostre como sada a carga da bateria a cada
hora enquanto a carga fique maior ou igual a 1%.
b) Acrescente ao programa feito na letra a) um sistema de aviso que
obedea a seguinte tabela:
Carga (%)

Aviso

10% < carga 20%

Bateria fraca !

1% carga 10%

Conecte ao carregador

Dica: Procure identificar qual lao de repetio utilizar. Existe algum critrio
de parada ?
Veja um exemplo de sada para o exemplo 1

Figura 22 Exemplo de sada para o exerccio 1 - descarga de bateria

50

4. VETORES E GRFICOS
Um vetor um tipo de varivel que pode armazenar um ou mais valores do
mesmo tipo de dado.
Vejamos como isto funciona na prtica. Imagine que voc precisa armazenar
os valores 15, 23, 40, 12, 37. At ento voc faria o seguinte raciocnio para
armazenar estes valores:

clear;
clc;
num1=15;
num2=23;
num3=40;
num4=12;
num5=37;
mprintf("\n Valor armazenado na varivel num1 = %i",num1);
mprintf("\n Valor armazenado na varivel num2 = %i",num2);
mprintf("\n Valor armazenado na varivel num3 = %i",num3);
mprintf("\n Valor armazenado na varivel num4 = %i",num4);
mprintf("\n Valor armazenado na varivel num5 = %i",num5);
Perceba que at ento no havia outra alternativa para voc armazenar estes
5 valores a no ser criando 5 variveis distintas para guardar o mesmo tipo
de valor. Perceba tambm que para mostrar os 5 valores na sada voc
precisaria de novas 5 linhas de comando para mostrar os 5 valores distintos
na sada do programa. Veja a sada aps a execuo do cdigo acima.

Figura 23 Exemplo de sada para diferentes variveis.

Este tipo de abordagem torna-se invivel na medida em que a quantidade de


dados a serem armazenados aumenta. Imagine se voc precisar armazenar
centenas ou milhes de dados do mesmo tipo ? (Isto ocorre com frequncia
na engenharia) O que voc faria ? Criar centenas ou milhes de variveis
51

para armazenar cada valor ser invivel. Nesta situao, a utilizao de um


vetor a sada mais indicada.
Que tal ento tentarmos armazenar os nossos 5 valores do exemplo
apresentado anteriormente em um vetor ? Deixe-me te mostrar como isto
ser feito. Observe o exemplo a seguir: (Exemplo 4.1)

1 clear;
2 clc;
3 num=[15 23 40 12 37];
4 for i=1:5
5

mprintf("\n O valor %i esta armazenado na posio %i do vetor num",num(i),i);

6 end
Vamos comear pela linha 3 do cdigo acima. Na linha 3 os nossos 5 valores
foram guardados em uma nica varivel chamada num. Isto um vetor ! Veja
a ilustrao abaixo:
num

15

23

40

12

37

A varivel num comporta-se como a ilustrao acima. Cada um dos 5 valores


ganhou um espao na varivel num e cada espao possui um ndice
responsvel por identificar em qual posio do vetor o valor foi armazenado.
Portanto o valor 15 est armazenado na posio 1; o valor 23 est
armazenado na posio 2; o valor 40 est armazenado na posio 3 ; o valor
12 est armazenado na posio 4 e o valor 37 est armazenado na posio
5.
Para compreender melhor esta associao entre posies e valores observe
as linhas 4 a 6 do cdigo acima. Para fazer a sada dos valores do vetor
num, utilizamos uma estrutura de repetio. A estrutura definida na linha 4
utiliza a varivel i como controle. Aproveitaremos ento a varivel i para
percorrer todo o vetor, executando o comando de sada, mostrando na tela o
valor armazenado

num(i) para cada posio

i como mostra a figura a

seguir.
52

Figura 24 Exemplo de sada de valores de um vetor

Inserindo valores em um vetor


A insero de valores em um vetor pode ser feita de diferentes maneiras. A
seguir apresentaremos as mais usuais.

Insero direta
num = [ 5 10 12 32 45 48 23 64 ... ];

Insero por meio de um usurio


for i=1:5
mprintf("Digite um valor para a posio %i do vetor",i);
num(i)=input("");
end

Mostrando os valores de um vetor (Sada de dados)


Sada direta
disp(num);

Sada por lao de repetio


for i=1:5
mprintf("\n O valor %i esta armazenado na posio %i ",vetor(i),i);
end

53

Construindo Grficos
Construindo grficos 2D
A construo de um grfico 2D em SCILAB pode ser feita por meio da funo
plot( ) . O forma bsica para o comando ;
plot(x,y)
em que x um vetor que contm os valores para a coordenada-x do grfico e
y o vetor que contm os valores para a coordenada-y do grfico.
Exemplo: Plote o grfico da funo

f (x) = 3x2 + 4x+1 . Faa x variar no

intervalo de -5 a 4 com incrementos de 0,5. Veja o cdigo em SCILAB a


seguir;
Opo 1: Na opo 1 o vetor x declarado de maneira direta. Repare que o
vetor y automaticamente criado pelo SCILAB.

Basta atribuir a y a

expresso da funo desejada e o SCILAB realiza o clculo de y para cada


posio do vetor x. Em seguida a funo plot ( ) e os vetores x e y foram
utilizados para fazer o grfico da funo.

clear;
clc;
x = [-5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4];
y = 3*x^2 + 4*x + 1;
plot(x,y);
Opo 2: A opo 2 apenas se difere da opo 1 quanto a criao do vetor x.
O vetor x foi criado a partir da funo linspace(valor 1, valor2 ,

valor 3 ). A funo linspace() funciona da seguinte maneira: o


primeiro valor dentro do parnteses representa o valor inicial do vetor a ser
criado, o segundo valor representa o fim do intervalo a ser criado e o ltimo
valor dentro do parnteses representa o nmero de elementos que sero
criados para este vetor.

clear;
clc;
x = linspace(-5,4,19);
y = 3*x^2 + 4*x + 1;
54

plot(x,y);
Opo 3. A opo 3 apresenta uma estrutura de criao dos vetores por
meio de laos de repetio. Os vetores x e y vo sendo criados na medida
em que as iteraes, ou repeties, vo acontecendo. Perceba que o
contador i a cada iterao utilizado para calcular um novo valor de x e um
novo valor de y para a posio i.

clear;
clc;
i=1;
x(1)=-5;
y(1)=3*x(1)^2 + 4*x(1) + 1;
while x(i)<4
i=i+1;
x(i)=x(i-1)+0.5;
y(i)= 3*x(i)^2 + 4*x(i) + 1;
end
plot(x,y);
O grfico a seguir

foi gerado para a funo proposta no exemplo.

Independente da opo escolhida pelo usurio para criar grfico da funo


proposta o resultado esperado o apresentado a seguir.

55

Figura 25 Janela de sada grfica.

Ajustando Ttulos e eixos


O SCILAB permite que faamos ajustes nos ttulos e eixos dos grficos. Veja
as opes disponveis:
title() Ajusta o ttulo na parte superior do grfico.
xlabel() Ajusta o ttulo para o eixo x.
ylabel() Ajusta o ttulo do eixo y.
Veja o cdigo e a nova figura aps a incluso dos comandos de formatao
de eixos e ttulos.

clear;
clc;
i=1;
x(1)=-5;
y(1)=3*x(1)^2 + 4*x(1) + 1;
while x(i)<=4
i=i+1;
x(i)=x(i-1)+0.5;
y(i)= 3*x(i)^2 + 4*x(i) + 1;
56

end
plot(x,y);
title("Grfico de f(x)= 3*x^2 + 4*x + 1");
xlabel("Eixo x");
ylabel("Eixo y");

Figura 26 Novo grfico aps formatao de ttulo e eixos.

DICA: Ajuda sobre diferentes estilos de linhas, cores e formataes


podem ser encontrados no menu ajuda ou clicando no menu editar aps
aparecer a janela do grfico. A figura a seguir ilustra o menu editar.

57

Figura 27 Opes de configurao de grfico

Figura 28 Editor de grfico.

58

Dica: para plotar um grfico com vrias curvas, siga o exemplo a


seguir:
Como plotar um grfico da funo f (x) = ax+ b para diferentes
valores de a = ( 1, 3, 5, 7) e b = 1, no intervalo 0 x 10? Estude o
cdigo a seguir !
clear;
clc;
i=1;
b=1;
x(1)=0;
y1(1)=1*x + b;
y2(1)=3*x + b;
y3(1)=5*x + b;
y4(1)=7*x + b;
incremento=0.1;
while x(i)<10
i=i+1;
x(i)=x(i-1)+incremento;
y1(i)=1*x(i) + b;
y2(i)=3*x(i) + b;
y3(i)=5*x(i) + b;
y4(i)=7*x(i) + b;
end
plot(x,[y1 y2 y3]);
title("Grfico de f(x)= a*x^2 + b");
xlabel("X");
ylabel("Y");

59

Figura 29 Exemplo de grfico com mltiplos comportamentos.

Exemplo de aplicao: (exemplo 4.2)


Um engenheiro decidiu acompanhar o funcionamento do secador de gros
representado pela figura abaixo.

Figura 30 Secador de gros (RODRIGUES, 2010)

Para realizar esta inspeo, o engenheiro instalou um sensor de temperatura


na cmara de aquecimento de ar e um tubo de pitot para medir a velocidade
60

do ar na entrada da cmara de aquecimento. Para coletar as informaes de


temperatura e velocidade do ar durante s dez horas de funcionamento o
engenheiro desenvolveu um programa em SCILAB que fosse capaz de
coletar estas informaes a cada 0,5horas (meia hora) e mostrar:
a temperatura mdia na cmara de secagem;
a velocidade mdia do ar de secagem;
A maior temperatura e velocidade registradas durante as 10 horas;
A menor temperatura e velocidade do ar registradas durante as 10
horas;
Os grficos mostrando o comportamento da temperatura e velocidade
do ar durante as 10 horas.
Veja o cdigo fonte comentado e os resultados a seguir.

1 clear;
2 clc;
3 tempo(1)=0;
4 temperatura(1)=grand(1,"nor",70,5);
5 velocidade(1)=grand(1,"nor",1.5,0.1);
6 i=1;
7 while tempo(i)<10
8
i=i+1;
9
tempo(i)=tempo(i-1)+0.5;
10 temperatura(i)=grand(1,"nor",70,2.5);
11 velocidade(i)=grand(1,"nor",1.5,0.05);
12 end
13 scf(1);
14 title("Variao da velocidade durante 10 horas");
15 xlabel("Tempo (h)");
16 ylabel("Velocidade (m/s)");
17 plot(tempo,velocidade,'bo-');
18 scf(2);
19 title("Variao da Temperatura durante 10 horas");
20 xlabel("Tempo (h)");
21 ylabel("Temperatura (Celsius)");
22 plot(tempo,temperatura,'r-');
61

23 temperatura_media=mean(temperatura);
24 velocidade_media=mean(velocidade);
25 maior_temperatura=max(temperatura);
26 menor_temperatura=min(temperatura);
27 maior_velocidade=max(velocidade);
28 menor_velocidade=min(velocidade);
29 mprintf("\n ------Relatorio de experimento------------");
30 mprintf("\n A temperatura media durante as dez horas foi de %2.2f
31Celsius",temperatura_media);
32 mprintf("\n A velocidade media durante as dez horas foi de %2.2f
m/s",velocidade_media);
33 mprintf("\n A maior temperatura atingida durante as dez horas foi de %2.2f
Celsius", maior_temperatura);
34 mprintf("\n A menor temperatura atingida durante as dez horas foi de %2.2f
Celsius",menor_temperatura);
35 mprintf("\n A maior velocidade atingida durante as dez horas foi de %2.2f m/s",
maior_velocidade);
36 mprintf("\n A menor velocidade atingida durante as dez horas foi de %2.2f
m/s",menor_velocidade);
linhas 3 a 6 Observe que nestas linhas os vetores temperatura, tempo e velocidade so
inicializados na sua primeira posio (posio 1) com os valores de tempo inicial.
linhas 7 a 12 Nesta parte do cdigo feita a simulao da aquisio de dados a cada
tempo. Para isto foi utilizado o comando grand(1, distribuio normal, media, desvio
padro) , este comando gera nmeros aleatrios obedecendo uma distribuio normal,
uma mdia e um desvio padro pr definidos. Para cada tempo simulado valores de
temperatura e velocidade so gerados e armazenados em seus respectivos vetores. A
varivel i incrementada a cada iterao at que o critrio de parada (tempo<10) for
alcanado.
linhas 13 a 22. Nesta parte do cdigo so executados os comandos para a gerao dos
grficos (plot), ttulos das figuras (title) e ttulo das eixos (xlabel e ylabel). Os
comandos scf( ) do nome s janelas de grficos, identificando-os e permitindo criar
figuras distintas uma das outras.
linhas 23 a 28 Neste trecho foram calculadas as mdias atravs do comando mean( ),
os maiores e menores valores dos vetores, por meio dos comandos max( ) para o
maior valor e min( ) para o menor valor.
Sadas

62

Figura 31 Tela de sada em SCILAB para exemplo1 vetor.

Figura 32 Variao da velocidade do ar de secagem.

63

Figura 33 Variao da temperatura de secagem na cmara de secagem

Resumo do captulo 4
Neste captulo mostramos o uso de vetores. Aps a leitura deste captulo
voc dever ser capaz de:
Identificar a necessidade de uso de vetores.
Inicializar um vetor de maneira direta ou por meio do usurio.
Realizar a sada de dados de um vetor.
Implementar operaes de soma e busca de valores em um vetor.
Plotar grficos para as mais diversas aplicaes.

Exerccios - Vetor
Exerccio 1 Determine se cada um dos seguintes verdadeiro ou falso. Se
falso justifique.

64

a) Para referir-se a uma localizao particular ou elemento dentro de um


vetor, especificamos o nome do vetor e o valor do elemento particular.
b) Um algoritmo que inicializa os elementos de um vetor de 15 elementos
como zero deve conter pelo menos uma instruo for.
Escreva instrues em SCILAB para realizar cada uma das

Exerccio 2

seguintes tarefas:
a) Exiba o valor do stimo elemento de um vetor.
b) Inicialize cada um dos cinco elementos de um vetor como 8.
c) Copie o vetor A de 11 elementos para as primeiras 11 posies de um
vetor B que contm 34 elementos.
Exerccio 3 Faa um programa em SCILAB que solicite ao usurio a
digitao de 10 nmeros distintos. Armazene estes valores em um vetor. A
sada do seu programa dever mostrar ao usurio o valor digitado e as
posies em que estes valores foram armazenados no vetor.
Faa um programa em SCILAB para gerar o grfico das

Exerccio 4

seguintes funes, obedecendo os intervalos propostos. Voc saberia


interpret-los ?
a) seno(x); - x ;
b) cosseno(x); - x ;
c) ln(x); 0,001 x 10
d) ex; 0 x 10
e) f (x) =1x2 + 2x+1 ; qual intervalo utilizar ? Existe algum critrio para
escolher o intervalo ?

t +1 0 t < 1
f)

f (t) =

0 1 t<2
2 t 2 t<3
0 t 3

65

Exerccio 5 Utilize o cdigo do programa em SCILAB desenvolvido no


exemplo de aplicao (secador de gros) e calcule novamente a temperatura
mdia, a velocidade mdia, a maior temperatura, a menor temperatura, e
maior velocidade e a menor velocidade. Desta vez voc no poder utilizar
as funes mean( ), max( ) e min( ). Voc dever desenvolver toda a lgica
para efetuar os clculos. Voc poder utilizar as funes mean( ), max( ) e
min( ) apenas para comparar os seus resultados obtidos com os resultados
obtidos pelas funes.

PROJETO FINAL 3 : Simulao !


No instante t=0 (min) um tanque contm Q0 (lb) de sal dissolvido em 100 (gal)
(cerca de 455 litros). Suponha que gua contendo 1/4 (lb) (cerca de 113g de
sal por galo) est entrando no tanque a uma taxa de r gales por minuto, e
que o lquido, bem misturado, est saindo do tanque mesma taxa. O
fenmeno ilustrado pela figura abaixo.

Figura 34 Tanque de gua com misturador. (Boyce e Diprima, 2012)

A funo a seguir expressa a quantidade de sal Q(t) no tanque em qualquer


estante t.

Q(t) = 25+ (Q0 25)e

r t/100

Desenvolva um programa em SCILAB que simule a quantidade de sal


presente no tanque durante 100 minutos.

66

a) Como sada voc dever mostrar a quantidade de sal presente no


tanque e o tempo de simulao a cada 10 minutos. Utilize Q0 = 50 lb e
r = 3.
b) Faa um grfico mostrando o comportamento da quantidade de sal no
tanque durante os 100 minutos. Utilize Q0 = 50 lb e r = 3.
c) Faa um nico grfico contendo 4 curvas com as seguintes condies:
Curva 1: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q0 = 50 lb.
Curva 2: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q0 = 40 lb.
Curva 3: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q0 = 25 lb.
Curva 4: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q0 = 10 lb.
Interprete o fenmeno ilustrado pelo grfico !
d) O que aconteceria se o valor da taxa de fluxo aumentasse para 5 aps
20 minutos de simulao ? Utilize como condio de simulao Q 0 =
50 lb. Mostre o grfico da simulao e interprete-o.
e) Qual seria a taxa de fluxo necessria (r) para que o valor de t no
exceda 45 minutos para alcanar o equilbrio ? Utilize Q0 = 50 lb.
Dica: O sistema entra em equilbrio quando Q(t) = 25.

67

5. MATRIZ
Uma matriz um tipo de varivel que pode armazenar um ou mais valores do
mesmo tipo de dado, porm este armazenamento pode estar associado a
duas propriedades distintas. Esta associao para muitos chamada de
dimenso. Em vetores, associvamos o armazenamento de informao a
apenas uma propriedade, uma dimenso. Por exemplo, associa-se que o
vetor idade armazena diferentes idades; o vetor temperatura armazena
diferentes temperaturas, o vetor velocidade diferentes valores de velocidade,
etc. Quando tratamos de matrizes associamos os valores da matriz a duas ou
mais propriedades ou duas ou mais dimenses.
Veja um exemplo: (Exemplo 5.1)
Um engenheiro resolveu montar um sistema de aquisio de dados para
coletar os dados de presso do gs refrigerante e temperatura do gs
refrigerante em um sistema de refrigerao. Para isto o engenheiro instalou
em diferentes pontos do sistema trs sensores de presso e temperatura. O
engenheiro desenvolveu um programa em SCILAB que durante cinco horas
coletava as informaes dos sensores e armazenava as informaes a cada
hora. Veja o cdigo desenvolvido pelo engenheiro;
clear;
clc;
for tempo=1:5
for sensor=1:3
temperatura(tempo,sensor)=grand(1,"nor",70,2.5); //simula os sensores de
temperatura
pressao(tempo,sensor)=grand(1,"nor",250000,10000); //simula os sensores de
velocidade
end
end
disp("Matriz Temperatura (C)");
disp(temperatura);
disp("Matriz Pressao (Pa)");
disp(pressao);
A lgica utilizada pelo engenheiro foi de armazenar em uma matriz chamada
temperatura os dados dos trs sensores a cada hora durante 5 horas.
68

Veja a disposio dos valores como ficaria em formato de matriz.


Tabela 10 Matriz Temperatura

Tempo (h)

Sensor de

Sensor de

Sensor de

Temperatura (1)

Temperatura (2)

Temperatura (3)

1hora
2horas
3horas
4horas
5horas

A matriz temperatura foi organizada da seguinte maneira: para cada hora


foram registradas trs temperaturas distintas, uma para cada sensor.
Portanto a nossa matriz de duas dimenses (tempo,sensor) uma matriz
5x3 (5 linhas e 3 colunas). O mesmo raciocnio foi aplicado ao sensor de
presso.
Veja a sada aps executarmos o programa em SCILAB;

Figura 35 Sada das matrizes temperatura e presso

69

Inserindo valores em uma matriz


A insero de valores em uma matriz pode ser feita de diferentes maneiras. A
seguir apresentaremos as mais usuais.

Insero direta
Inicializando de maneira direta uma matriz 3 x 3.

matriz = [ 5 2 7; 1 0 -3; 3 10 -9];


Observe que o ; foi utilizado para distinguir uma linha de outra da
matriz.

Insero por meio de um usurio


Inicializando por meio de um usurio uma matriz 3 x 3.
for i=1:3
for j=1:3
mprintf("\n Digite um valor para a matriz na posicao linha %i coluna %i ",i,j);
matriz(i,j)=input(" ");
end
end

Mostrando os valores de uma matriz (Sada de dados)


Sada direta
disp(matriz);

Sada por lao de repetio


for i=1:3
for j=1:3
mprintf("\n Valor digitado para a matriz na posicao linha %i coluna %i =
%i",i,j,matriz(i,j));
end
end

70

Exemplo 5.2 Desenvolva em SCILAB um programa que permita ao usurio


preencher 2 matrizes quadradas A e B. Aps preencher as matrizes A e B o
usurio dever escolher de acordo com as opes abaixo, qual tipo de
operao ir realizar com as matrizes A e B para gerar uma matriz C com a
resposta da operao selecionada. Veja as opes:
1) Adio
2) Subtrao
Soluo
1 clc;
2 clear;
3 dimensao = input ('Informe a dimenso das duas matrizes quadradas: ');
4 mprintf("Para a matriz A ");
5 mprintf("\n\n");
6 for linha = 1:dimensao
7 for coluna = 1:dimensao
8
mprintf ("Elemento da matriz A posio A(%i,%i): ",linha,coluna);
9
A(linha,coluna) = input ("");
10 end
11 end
12
13 mprintf("Para a matriz B.");
14 for linha = 1:dimensao
15 for coluna = 1:dimensao
16
mprintf ("Elemento da matriz B posio B(%i,%i): ",linha,coluna);
17
B(linha,coluna) = input (" ");
18 end
19 end
20 mprintf("\n Matriz A ");
21 disp(A);
22 mprintf("\n Matriz B ");
23 disp(B);
24 mprintf("\n ______________________________________");
25 mprintf("\n 1) Adio ");
26 mprintf("\n 2) Subtrao ");
27 mprintf("\n\n");
28
29 operacao=input("Escolha a operao: ");
30
31 if operacao==1 then
32 for i=1:dimensao
33
for j=1:dimensao
34
C(i,j)=A(i,j)+B(i,j);
35
end
71

36 end
37 mprintf("\n Matriz C ");
38 disp(C);
39 elseif operacao==2 then
40 for i=1:dimensao
41
for j=1:dimensao
42
C(i,j)=A(i,j)-B(i,j);
43
end
44 end
45 mprintf("\n Matriz C ");
46 disp(C);
47 else
48 mprintf("\n Escolha invlida");
49 end

linha 3 A varivel dimenso armazena a dimenso das matrizes A e B. Este


valor escolhido pelo usurio.
linhas 6 a 19 Neste bloco de comandos do programa so feitas as leituras de
valores para as matrizes A e B. Observe que para realizar a operao de
leitura elemento por elemento necessrio o uso de dois laos de repetio.
O primeiro lao varia da posio 1 ao nmero de linhas. O segundo lao varia
da posio 1 ao nmero de colunas. Os ndices linha e coluna so
controlados pelos laos de repetio.
linhas 20 a 23 Nesta parte do programa so mostradas as matrizes A e B.
Observe que o comando disp( ) foi utilizado para realizar esta tarefa. Este
comando permite que as matrizes e vetores sejam mostrados na tela sem o
uso de laos de repetio.
linhas 24 a 30 Menu de opes para que o usurio escolha qual operao
deseja realizar com as matrizes A e B.
Linhas 31 a 49 Bloco de comandos responsveis por realizar as operaes
com as matrizes de acordo com a opo escolhida pelo usurio.
Veja um exemplo de soluo a seguir:

72

Figura 36 Sada exemplo 1 matriz.

Resumo do captulo 5
Neste captulo mostramos o uso de matrizes. Aps a leitura deste captulo
voc dever ser capaz de:
Identificar a necessidade de uso de matrizes.
Inicializar uma matriz de maneira direta ou por meio do usurio.
Realizar a sada de dados de uma matriz.
Implementar operaes matemticas e busca de valores em uma
matriz.
Plotar grficos de superfcie para as mais diversas aplicaes.

Exerccios Matriz
Exerccio 1 Determine se cada um dos seguintes verdadeiro ou falso. Se
falso justifique.
73

a) Para referir-se a uma localizao particular ou elemento dentro de uma


matriz, especificamos o nome do vetor e o valor do elemento
particular.
b) Um algoritmo que inicializa os elementos de uma matriz de dimenses
3x3 como zero deve conter pelo menos uma instruo for.
c) Um algoritmo que soma os elementos de uma matriz deve conter
instrues for aninhadas.
Exerccio 2 Considere uma matriz de dimenses 2 x 3;
a) Escreva uma instruo para criar esta matriz 2 x 3.
b) Quantas linhas possui esta matriz ?
c) Quantas colunas possui esta matriz ?
d) Quantos elementos possui esta matriz ?
e) Escreva todos os elementos da segunda linha desta matriz.
f) Escreva todos os elementos da terceira coluna desta matriz.
g) Escreva uma nica instruo que configura o elemento desta matriz na
linha 1 e coluna 2 como zero.
h) Escreva uma instruo for aninhada que inicializa cada elemento da
matriz como 0.
i) Escreva uma instruo for aninhada que insere os valores da matriz
a partir do usurio.

Exerccio 3 Desenvolva em SCILAB um algoritmo que faa a leitura de


valores para uma matriz 2 x 2. Aps a insero dos valores mostre;
a matriz digitada pelo usurio,
o maior valor da matriz,
o menor valor da matriz.
Exerccio 4 Escreva um programa em SCILAB que mostre na tela uma
tabela de converso de temperaturas. Esta tabela deve mostrar a converso
de temperaturas em graus Celsius na faixa de 150 oC a 350 oC com
74

incrementos de 50

C. Faa as converses de Celsius para Kelvin e

Fahrenheit. Veja um modelo de sada esperada.

Figura 37 Exemplo de sada exerccio 2 matriz.

Exerccio 5 Para que duas ou mais matrizes sejam consideradas iguais elas
devem obedecer a algumas regras:
Devem ter a mesma ordem, ou seja, o mesmo nmero de linhas e o
mesmo nmero de colunas.
Os elementos devem ser iguais aos seus correspondentes.
A partir dos conceitos acima, elabore um programa em SCILAB que solicite
ao usurio a digitao de duas matrizes 2x2. Aps a digitao das matrizes
verifique se as matrizes digitadas so iguais ou no.
Exerccio 6 (Olimpadas Nacionais de Informtica ; Portugal 2008)
Finalmente, o local do novo aeroporto de Lisboa est escolhido: Alcochete. O
aeroporto ter um imenso volume de avies sempre a decolar e a aterrizar.
Gerir todo este trfego areo no nada fcil. A misso dos controladores de
trfego areo precisamente garantir um fluxo de avies seguro. So eles
que, a partir da torre de controle, fornecem indicaes e autorizaes de vo,
de acordo com as caractersticas da aeronave e do contexto do momento.
Podem pedir aos pilotos para alterar fatores como a rota, a altitude ou a
velocidade. Programas de computador muito elaborados auxiliam os
controladores e garantem a eficcia do sistema.
Uma empresa que faz software de controle areo te contratou. Um dos
muitos sistemas instalados avisa do perigo de coliso entre dois avies. Se
dois avies estiverem prximos, um alarme dispara imediatamente.
75

Basicamente, a empresa quer que voc programe uma maneira eficiente de


detectar isto, descobrindo no meio de todo o trfego areo quais so os dois
avies mais prximos um do outro. Como simplificao, as posies dos
avies so dadas como em coordenadas (X,Y), em relao a uma
determinada origem. A altitude, direo e velocidade do avio podem ser
ignoradas. Se dois avies tiverem posies (X1,Y1) e (X2,Y2), a distncia entre
eles dada pela frmula ( X1 X2 )2 + (Y1 Y2 )2 .
O trecho de cdigo a seguir gera uma matriz com as coordenadas (x,y) para
a posio de 4 avies no espao areo.
for i=1:4
for j=1:2
coordenadas(i,j)=rand()*10;
end
mprintf("\n Coordenadas do avio %d ( %2.2f , %2.2f )",i,coordenadas(i,1),coordenadas(i,2));

end
A matriz foi organizada de modo que a linhas se referem ao avio e as
colunas se referem s suas coordenadas x e y.
Escreva um programa em SCILAB que dadas as localizaes (X,Y) de um
conjunto de avies, calcula qual o par de avies que est mais perto um do
outro. Utilize o trecho de cdigo disponibilizado acima para gerar a matriz que
contm as coordenadas dos quatro avies. Veja a seguir uma sugesto para
a tela de sada.

76

PROJETO FINAL 4 : Compreendendo matrizes para a gerao de


grficos tridimensionais
A gerao de grficos tridimensionais no uma tarefa trivial. Apesar do
SCILAB conseguir simplificar de maneira considervel a criao destes
grficos precisamos entender o conceito de matriz que est por trs dos
comandos em SCILAB que facilitam a criao destes grficos.
Vamos tomar como exemplo a funo u(x, y) = 5e

7
x+ y
3 .

Para plotarmos o

grfico desta funo a primeira coisa a fazer conhecer para quais valores
de x e y desejamos calcular u(x, y) . Vamos supor que desejamos saber o
valor de u(x, y) para 0

x 3 e 0 y 3 . timo, agora temos a funo que

queremos plotar o grfico e o intervalo definido para x e y. O passo seguinte


decidir em quais coordenadas (x,y) eu quero calcular o valor de u(x, y) .
Vamos supor que eu queira calcular o valor de u(x, y) em 5 pontos
igualmente espaados entre 0

x 3 e 0 y 3 , portanto os pontos que

queremos calcular o valor da funo so:

77

0,75

0,75

1,5

1,5

2,25

2,25

importante lembrar que a nossa funo, uma funo em duas dimenses,


portanto para cada coordenada x temos os pares com as coordenadas y
gerando assim o conjunto de pontos (malha) ilustrado a seguir (uma matriz !)

Tabela 11 Exemplo de uma subdiviso de pontos para uma funo bidimensional.

u(0,3)

u(0.75,3)

u(1.5, 3)

u(2.25,3)

u(3, 3)

u(0, 2.25)

u(0.75, 2.25)

u(1.5, 2.25)

u(2.25, 2.25)

u(3, 2.25)

u(0,1.5)

u(0.75,1.5)

u(1.5,1.5)

u(2.25,1.5)

u(3,1.5)

u(0, 0.75)

u(0.75, 0.75)

u(1.5, 0.75)

u(2.25, 0.75)

u(3, 0.75)

u(0, 0)

u(0.75, 0)

u(1.5, 0)

u(2.25, 0)

u(3, 0)

Finalmente aps a subdiviso dos pontos podemos ento calcular o valor da


funo nas coordenadas, conforme ilustrado a seguir.
Tabela 12 Matriz de soluo para a funo u(x,y).

5.0

2.36

1.11

0.52

0.2489

28.77

13.59

6.42

3.03

1.43

165.57

78.21

36.94

17.45

8.24

952.83

450.08

212.60

100.42

47.43

5483.16

2590.06

1223.45

577.92

272.99
78

Utilizando o SCILAB para gerar o grfico da funo u(x, y) = 5e

7
x+ y
3

Vamos agora aprender ento como executar todos os passos descritos


acima utilizando o SCILAB.
1. Para gerar os intervalos das funes ; 0

x 3 e 0 y 3 faremos uso

da funo linspace( ). Conforme explicado no captulo de vetores a


funo linspace(valor1, valor2, valor3 ) funciona da seguinte
maneira; o primeiro valor dentro do parnteses representa o valor
inicial do vetor a ser criado, o segundo valor representa o fim do
intervalo a ser criado e o ltimo valor dentro do parnteses representa
o nmero de elementos que sero criados para este vetor. Portanto se
quisermos 5 pontos dentro do intervalo 0
intervalo 0

x 3 e 5 pontos dentro do

y 3 utilizaremos o comando da seguinte forma;


intervalox=linspace(0,3,5);
intervaloy=linspace(0,3,5);

2. Para gerar a matriz ilustrada pela tabela 11 utilizaremos o comando


meshgrid(). O comando meshgrid() recebe os pontos gerados pelo
comando linspace( ) e gera as coordenadas x e y, conforme a tabela
11.
[x,y]=meshgrid(intervalox,intervaloy);

79

3. A partir das coordenadas geradas x e y podemos ento calcular o


valor da funo u(x, y) = 5e

7
x+ y
3

para cada ponto gerado.

for i=1:5
for j=1:5
u(i,j)= 5*exp(-x(i)+((7/3)*y(i)));
end
end
4. Finalmente por meio das matrizes x, y e u podemos gerar o grfico
para a funo proposta. Veja um exemplo utilizando o comando
mesh().
intervalox=linspace(0,3,5);
intervaloy=linspace(0,3,5);
[x,y]=meshgrid(intervalox,intervaloy);
for i=1:5
for j=1:5
u(i,j)= 5*exp(-x(i,j)+((7/3)*y(i,j)));
end
end
mesh(x,y,u);

80

Figura 38 Exemplo de grfico 3d utilizando o comando mesh().

5. Que tal aumentarmos o nmero de pontos para 100 ao invs de 5 ?


Veja o resultado desta modificao !

Figura 39 Exemplo de grfico 3d com 100 pontos

PRTICA !!!
Exerccio 1. Utilize a metodologia descrita acima para plotar o grfico das
seguintes funes.
81

a) u(x, t) = 5e

4 2t

sen(2 x) para 0 x 1 e t 0

b) u(x, t) = sen( x)cos( t) para 0 x 1 e t 0


c)

u(x, t) =1+ x e

d) u(x, y) = 5e

32 t

para 0 x 1 e t 0

sen(4 x) 3e

128 2t

sen(8 x)+ 2e

200 2t

sen(10 x)

Exerccio 2 A funo a seguir representa a distribuio de temperatura em


uma placa de 1cm de espessura durante o tempo (Hoffman,2001).

T(x, t) =

800
2

10

( 1)m

sen[(2m+1) x]e
2
m=0 (2m+1)

(2m+1)2 2 t

em que ;

T(x, t) a temperatura na posio x da placa no tempo t.


a condutividade trmica da placa.
Construa um grfico tridimensional com a distribuio de temperatura da
placa. Lembre-se a espessura de 1cm portanto seu intervalo para x ser
0 x 1 e 0 t 10

82

REFERNCIAS BIBLIOGRFICAS
ASCENCIO, A. F. G; CAMPOS, E. A. V. Fundamentos da Programao de
Computadores Algoritmos, Pascal, C/C++ e Java. 3 edio, Pearson,
2012.
BOYCE,W. E.; DIPRIMA, R. C. Elementary Differential Equations and
Boundary Value Problems. Wiley, 10th Edition, 2012.
BROOKER, D.B.; BAKKER-ARKEMA, F.W.; HALL, C.W. Drying and storage
of oilseeds, The AVI Publishing Company, New York, 1992. 450p
COSTA, E. Da Cruz . Refrigerao. Editora Edgard Blucher, 3 edio, 2011.
RODRIGUES, C. L. C. Sistema de controle automtico para um secador
de produtos agrcolas com reaproveitamento do ar de secagem. Tese de
Doutorado, Universidade Federal de Viosa, 2010.
DEITEL, H. M.; DEITEL, P. J. JAVA Como programar 6a edio. Pearson,
2005.
DUCHON, C.; HALE, R. Time series analysis in meteorology and
climatology. An introduction. Wiley, 2012.
HOFFMAN, J. D; FRANKEL, S. Numerical Methods for Engineers and
Scientists. CRC Press; 2 edition, 2001.
HOLLOWAY, J. P.; HOLLOWAY, J. P. Introduo Programao para
Engenharia - Resolvendo Problemas com Algoritmos. Editora Ltc, 2006.
KUO, B.C; GOLNARAGHI, F. Automatic Control Systems. Wiley; 8 edition
2002.
OLIMPADA BRASILEIRA DE INFORMTICA. http://olimpiada.ic.unicamp.br/.
Acesso em 03/08/2014.
OLIMPADAS NACIONAIS DE INFORMTICA http://oni.dcc.fc.up.pt/2014/.
Acesso em 03/08/2014.
RAYMOND, KAPUNO JR. R. Programming for Chemical Engineers Using
C, C++, and MATLAB. Jones & Bartlett Learning, 2008.

83

APENDICE 1 GERAO DE NMEROS ALEATRIOS


Em diversas reas do conhecimento o uso de nmeros aleatrios em
algoritmos uma prtica trivial. Especificamente no aprendizado de
algoritmos a utilizao de nmeros aleatrios pode nos ajudar a simular
cenrios diversificados e situaes inesperadas. A partir de tais situaes
podemos criar e avaliar lgicas de programao independente de valores
digitados pelo programador e ou usurio, que muitas vezes podem escolher
valores tendenciosos lgica implementada.
A seguir apresentaremos como podemos gerar nmeros aleatrios utilizando
duas funes disponveis em SCILAB, a funo rand( ) e a funo grand(
). importante lembrar que as informaes mais detalhadas sobre a
utilizao destes comandos esto disponveis no menu Ajuda do
SCILAB.
1. A funo rand( )
A funo rand( ) a primeira funo que apresentaremos para gerao de
nmeros aleatrios. O cdigo a seguir mostra na tela 5 nmeros gerados
aleatoriamente pela funo rand( ).
mprintf("\n Gerando 5 nmeros aleatrios com a funo rand() \n");
for i=1:5
mprintf("\n\n %f ",rand());
end
Veja a sada no console aps a execuo do cdigo acima.

Figura 40 Exemplo de aplicao do comando rand( )

84

Algumas observaes devem ser feitas quanto ao uso do comando rand( ).


Perceba que os cinco nmeros gerados esto entre 0 e 1. Esta a primeira
caracterstica do comando. Ao gerar os valores o computador sempre vai
trabalhar na faixa de valores entre 0 e 1. Outra caracterstica que devemos
observar que o SCILAB como j dito anteriormente trabalha com as
variveis numricas apenas em formato real, portanto todos os valores
gerados pela funo rand( )estaro no formato real.
a. Gerando valores aleatrios inteiros a partir do comando
rand( )
Conforme j definido os valores gerados estaro sempre no formato real.
Portanto para utilizarmos os valores no formato inteiro devemos utilizar uma
outra funo disponvel no SCILAB a funo int( ), veja como fcil. O
cdigo a seguir vai gerar 5 valores inteiros aleatrios.
clear;
clc;
mprintf("\n Gerando 5 nmeros aleatrios inteiros com a funo rand() \n");
for i=1:5
mprintf("\n\n %f ",int(rand()));
end
Veja a tela de sada a seguir.

Figura 41 Utilizando a funo int( ) e rand( )

Mas o que aconteceu !? Esto todos os valores zerados ? Vamos ver o por
que disso ?
Os nmeros gerados aleatoriamente pela funo rand( ) esto no intervalo
entre 0 e 1. Portanto quando utilizamos a funo int( ) ficamos apenas
85

com a parte inteira do nmero gerado que era zero ! Veja um exemplo; se o
numero gerado para a varivel x foi x=0.867 e em seguida aplicamos a
funo int(x), consequentemente o resultado ser 0.
Veja ento como faramos para gerar 5 nmeros inteiros aleatrios entre 0 e
100.
mprintf("\n Gerando 5 nmeros inteiros aleatrios com a funo rand() \n");
for i=1:5
mprintf("\n\n %f ",int(100*rand()));
end
Observe que a nica modificao feita foi multiplicar os nmeros gerados
aleatoriamente por 100. Veja a sada a seguir;

Figura 42 Gerando nmeros aleatrios inteiros entre 0 e 100.

b. Gerando vetores e matrizes aleatoriamente por meio da


funo rand( )
A funo rand( ) acrescida das informaes de quantidade de linhas e
colunas tambm nos possibilita gerar automaticamente vetores e matrizes
com valores aleatrios. Se desejarmos gerar um vetor de 7 posies com
valores aleatrios basta acrescentarmos as seguintes informaes no
comando rand( ) veja;
vetor=rand(7,1);
Para gerar o vetor de 7 posies com valores aleatrios foi necessrio
acrescentar as informaes de linhas e colunas. Portanto o comando
rand(7,1) gerou valores para uma matriz de 7 linhas e 1 coluna, ou um vetor
86

com 7 posies. Experimente gerar uma matriz de valores aleatrios com 3


linhas e 5 colunas !.

2. A funo grand( )
Existem situaes em que necessitamos de gerar valores aleatrios,
entretanto estes valores devem respeitar uma faixa de valores desejados.
Imagine que voc criou toda a lgica de funcionamento de um radar que foi
instalado na avenida Cristiano Machado. A lgica simples, porm voc
precisa testar se a lgica do seu radar est funcionando. Em outras palavras
voc precisa verificar se os carros que passam com velocidades maiores que
60 km/h so registrados. Para testar a sua lgica voc vai precisar de simular
a velocidade dos carros que passam onde foi instalado o seu radar. Sabemos
que a velocidade mdia dos carros na avenida de 60 km/h, mas pode
acontecer que automveis trafeguem acima ou abaixo desta velocidade.
Surge ento o seguinte questionamento, como vou simular estes veculos
? Como vou garantir que os valores simulados estejam nesta faixa para
tornar o meu teste o mais prximo possvel da realidade ?
Resposta:
Utilizaremos ento a funo grand( ), como um gerador de nmeros
aleatrios.
Para garantir que os valores estejam na faixa usual de trfego na avenida, a
funo grand( ) nos permite escolher o valor mdio dos nmeros gerados e
seu desvio padro, todos estes obedecendo a uma distribuio de
probabilidade. Enfim a gerao dos nmeros aleatrios ser feita a partir da
seguinte configurao grand(5,1,nor,60,5). Tal configurao pode
ser interpretada como a funo grand vai gerar uma matriz de 5 linhas e uma
coluna (vetor de 5 posies) com valores aleatrios, obedecendo a
distribuio normal, de mdia 60 e desvio padro 5.
Veja a seguir o cdigo e a tela de sada a ps a sua execuo.

87

clear;
clc;
carros=grand(5,1,"nor",60,10);
for i=1:5
mprintf("\n Velocidade do carro %d = %f (km/h)",i,carros(i));
if carros(i)>60 then
mprintf(" Multado !!!");
end
end

Figura 43 Exemplo de uso do gerador de nmeros aleatrios grand( )

Lembre-se que para gerar apenas um valor basta alterar o comando para
grand(1,1,nor,60,5), gerando apenas um valor, no mais um vetor.
Todas as configuraes feitas para o comando rand( ) so vlidas para o
comando grand( )

88

APENDICE 2 LISTA DE COMANDOS TEIS EM SCILAB


A seguir apresenta-se uma lista com alguns comandos usuais em
programao e engenharia. Maiores detalhes sobre a utilizao destes
podem ser facilmente encontrados na seo Ajuda do SCILAB.
Esta lista no tem inteno de substituir o menu Ajuda do SCILAB. O menu Ajuda
deve ser a sua principal fonte de busca durante suas implementaes.
%i Unidade imaginria utilizada para nmeros complexos.

%inf - Retorna uma representao para um nmero infinito. ( ).


%pi - Retorna um valor aproximado para o nmero pi ().
abs( )- Retorna o valor absoluto de um elemento.
acos( ) Arco-cosseno.
acosh( ) Arco-cosseno hiperblico.
asec( ) Arco secante.
asech( ) Arco-secante hiperblico.
asin( ) Arco-seno.
asinh( ) Arco-seno hiperblico.
atan( ) Arco-tangente.
atang( ) Arco-tangente hiperblico.
break - Dentro de um lao for ou while loop, o comando break fora o
fim do lao.
cos( ) Cosseno.
cosh( ) Cosseno hiperblico.
cotg( ) Cotangente.
coth( ) Cotangente hiperblica.
det( ) Calcula o determinante de uma matriz.
89

disp( ) Exibio de variveis ou texto.


exp( ) Retorna o valor para a expresso ex.
eye( ) Matriz identidade.
factorial( ) Retorna o fatorial de um nmero.
fix( ) Arredonda em direo zero.
floor(

retorna uma matriz de inteiros feita a partir de

"arredondamentos para baixo".


gsort( ) Ordenao em ordem decrescente.
imag( ) Retorna a parte imaginria de um nmero complexo.
input( ) Comando de entrada de dados via usurio.
int( ) - retorna a parte inteira de um nmero real. o mesmo que fix.
inv( ) Retorna a matriz inversa.
linsolve( ) Resolvedor de equaes lineares.
linspace( ) Retorna um vetor linearmente espaado.
log( ) Retorna o valor para ln.
log10( ) Retorna o valor para o logaritmo na base 10.
log2( ) Retorna o valor para o logaritmo na base 2.
max( ) Retorna o maior valor de um vetor ou matriz.
mean( ) Retorna a mdia dos elementos de um vetor / matriz.
min( ) Retorna o menor valor de um vetor ou matriz.
modulo( ) retorna o resto da diviso de x por y (x e y inteiros).
nthroot( ) Retorna a n-sima raiz de um nmero.
plot( ) Grfico em 2D.

90

primes( ) Retorna todos os nmeros primos de 1 ao valor atribudo


funo.
rand( ) Gerador de nmeros aleatrios.
real( ) Retorna a parte real de um nmero complexo.
round( ) - arredonda os elementos de x para os inteiros mais prximos.
sec( ) Secante.
sech( ) Secante hiperblica.
sin( ) Funo seno.
sinh( ) Seno hiperblico.
solve( ) Solucionador de sistemas lineares.
sqrt( ) Retorna o valor para a raiz quadrada de um nmero.
sum( ) Retorna a soma dos elementos de um vetor ou matriz.
tan( ) Tangente.
tanh( ) Tangente hiperblica.
zeros( ) Gera uma matriz feita de zeros.

91

92