Sei sulla pagina 1di 92

1

Centro Universitrio de Belo Horizonte


Instituto de Engenharia e Tecnologia - IET






1
ALGORITMO E ESTRUTURAS DE DADOS
PRTICAS DE LABORATRIO
2014/2




1
Rafael Pinheiro Amanta


2
Sumrio
LINK PARA DOWNLOAD DO SOFTWARE SCILAB 4
INTRODUO 4
O AMBIENTE SCILAB 4
A JANELA CONSOLE SCILAB 4
JANELA DE COMANDO 5
A JANELA HISTRICO DE COMANDOS 6
SCINOTES 6
NAVEGADOR DE VARIVEIS 7
NAVEGADOR AJUDA 8
DESENVOLVENDO ARQUIVOS .SCE 8
DECLARAO DE VARIVEIS E CONSTANTES 9
COMANDOS BSICOS DE ENTRADA E SADA 9
COMANDO DE SADA 9
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
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



4
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.


5

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.


6
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.


7

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.



8
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


9
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 >)



10
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.
- Tamanho (5 ou qualquer nmero) Esta parte do comando
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



11
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.



12
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







13
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.


14

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.


15

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;


16

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);



17
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

1 clear;
2 clc;
3 mprintf("Entre com dois numeros. \n");
4 num1 = input(" Primeiro numero: ");
5 num2 = input(" Segundo numero: ");
6 soma = num1 + num2;
7 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!



18

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.





19

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 (
o
C). 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


20
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;
h(t) v
0
t
gt
2
2

em que:
V
0
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/s
2



21

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
v
0
. 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,


22
v(t) v
0
gt
h(t) v
0
t
gt
2
2

Onde = 9,81 m/s
2
a acelerao da gravidade na superfcie da terra.
Escrevamos um cdigo em SCILAB que solicita V
0
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.





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 R
i
I
i
onde R
i
chamada a resistncia do resistor. A
corrente total passando pelos trs resistores justamente a soma das trs
correntes e a queda da tenso a mesma para todos os trs, assim:
I
total

V
R
1
+
V
R
2
+
V
R
3
V
1
R
1
+
1
R
2
+
1
R
3


Consequentemente, a lei de Ohm se aplica ao grupo completo de trs
resistores, com a resistncia R
paralela
dada por:
1
R
paralela

1
R
1
+
1
R
2
+
1
R
3

Figura 11 Holloway e Holloway (2006).


23
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 (R
1
, R
2
, R
3
) e retorna a resistncia dos trs em paralelo
(R
paralela
).

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;
Q
motor

P
c.v

motor
632 kcal / dia
em que:
o nmero de horas de funcionamento por dia de equipamento;
o rendimento do motor eltrico de acionamento.

A dissipao provocada pela iluminao dada por;
Q
iluminao
0, 86w A kcal / dia

motor


24
em que ;
W a potencia da lmpada (W/m
2
)
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:
Q
pessoas
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 m
2
.
- 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)



25
- 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/m
2
(acendimento 4
horas/dia).
- Sero previstas tambm lmpadas germicidas na proporo de 2
W/m
2
(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.

2
Toda a formulao para o clculo de carga trmica foi adaptada de COSTA,
ENNIO CRUZ da. Refrigerao. Editora Edgard Blucher, 3 edio, 2011.


26
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:








27

1 clear;
2 clc;
3 mprintf("------------Software para controle de umidade relativa---- ");
4 umidade=input(" Digite a umidade relativa atual em decimal : ");
5 if (umidade<=0.4) then
6 mprintf("\n Umidade relativa dentro dos padres");
7 else
8 mprintf("\n -----ALERTA !!! ------ALERTA !!!! -------");
9 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.


28

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 (
o
F) 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 if (temperatura>=0 & temperatura<50) then
4 mprintf("\n Viscosidade do fluido = 242 (lb/ft/hr) ");
5 elseif(temperatura>=50 & temperatura<100) then
6 mprintf("\n Viscosidade do fluido = 82.1 (lb/ft/hr) ");
7 elseif(temperatura>=100 & temperatura<150) then
8 mprintf("\n Viscosidade do fluido = 30.5 (lb/ft/hr) ");
9 elseif(temperatura>=150 & temperatura<200) then
10 mprintf("\n Viscosidade do fluido = 12.6 (lb/ft/hr) ");
11 elseif (temperatura>=200)
12 mprintf("\n Viscosidade do fluido = 5.7 (lb/ft/hr) ");


29
13 else
14 mprintf("\n Valor invlido !!! ");
15 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:


30
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)


31
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 (
o
C ).
Dica: Tenha cuidado com as unidades. Observe que a tabela que voc vai
utilizar est em graus Fahrenheit (
o
F) mas voc dever fazer a entrada em
graus Celsius (
o
C).
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 (
o
C) 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.
( )

s
< s
< +
=
x x
x
x x
x f
3 ,
3 2 , 3
2 , 2 2

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


32
Suponha que uma bola de massa qualquer seja arremessada para cima
numa velocidade
v
0
. 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) v
0
gt
h(t) v
0
t
gt
2
2

Onde = 9,81 m/s
2
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 v
0
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/s
2
)
Mercrio 3,7
Vnus 8,8
Terra 9,8
Marte 3,8
Jpter 26,4
Saturno 11,5
Urano 9,3


33
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


34
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.



35
Algumas relaes de converso de unidades:
Fora: 1 N = 0,102 kgf= 0,2249 lbf
1 N = 1 kg m / s
2

Presso: 1Pa = 1 N / m
2
= 0,102 kgf / m
2
= 0,000145 lbf / pol
2

1 atm = 101.325 Pa
1 bar = 10
5

Pa
1 lbf / pol
2
= 1 psi (pounds per square inch)
Energia: 1 J = 0,0009478 BTU = 0,00023884 kcal
1 BTU = 252 cal
Potncia: 1 W = 3,412 BTU / h = 0,85984 kcal / h = 0,001359 CV = 0,001341
HP

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;


36
- 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


37
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) v
0
gt
h(t) v
0
t 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 v
0
= 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:





38
Tabela 8 Exemplo de clculo manual.
T (s) v(t) - (m/s) h(t) (m)
0 15 0
0.5 10,095 6,274
1 5,190 10,095
1.5 0,285 11,464
2 -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
v
0
= 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;
2 clc;
3 g=9.81;
4 mprintf("Simulao do arremeo de uma bola no planeta terra \n\n");
5 v0 = input(" Digite a velocidade inicial do arremeo (m/s) : ");
6 mprintf("\n t (s) h(t) (m) v(t) (m/s)")
7 for t=0:0.1:2
8 altura= v0*t - (g*(t^2))/2;
9 velocidade = v0 - g*t;
10 mprintf("\n %2.2f %2.2f %2.2f ",t,altura,velocidade);
11 mprintf("\n");
12 end



39
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.


40
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 v
0
(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 i
i 0
n




for i:1:n
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.


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

em que:
T = Temperatura ambiente (
o
C );
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 clear;
2 clc;
3 mprintf("Clculo da temperatura mdia no ms de agosto - 2013 \n\n");
4 soma = 0;
5 for t=0:720
6 temperatura = 19.06 + (0.211*cos(0.08721*t)) + (-5.51*sin(0.08721*t))
7 soma = soma + temperatura;
8 end
9 media = soma/720;
10 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.


42

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.


43

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 (x
y
). Para
realizar os clculos voc no poder utilizar o comando (^).
Dica: A operao 5
3
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 (
o
C );
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


44
b) A maior temperatura registrada no perodo
c) A menor temperatura registrada no perodo
d) Quantas horas a temperatura ficou acima de 19
o
C.
e) Quantas horas a temperatura ficou abaixo de 16
o
C.

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:




45
1 clear;
2 clc;
3 numero=input("Digite um nmero inteiro");
4 while numero>0
5 quadrado=numero^2;
6 mprintf("\n O Quadrado de %d = %2.2f",numero,quadrado);
7 cubo=numero^3;
8 mprintf("\n O cubo de %d = %2.2f",numero,cubo);
9 raiz=sqrt(numero);
10 mprintf("\n A raiz quadrada de %d = %2.2f",numero,raiz);
11 if modulo(numero,2)==0 then
12 mprintf("\n O numero %d par ",numero);
13 else
14 mprintf("\n O nmero %d mpar ",numero);
15 end
16 mprintf("\n\n\n");
17 numero=input("Digite um nmero inteiro");
18 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.


46
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 clear;
2 clc;
3 k=0.365;
4 n=0.663;
5 t=0;
6 teor_umidade=1;
7 mprintf("-------Simulao de secagem--------- \n\n");
8 mprintf("\n\t\t t(h)\t\t U(%%) ");


3
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.



47
9 while(teor_umidade>=0.13)
10 teor_umidade= exp(-k*(t^n));
11 mprintf("\n\t\t %2.3f\t\t %2.2f ",t,teor_umidade*100);
12 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.
4


4
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.


48
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.




49

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) y
0
2
0,1
( )
t

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


50
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


51
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


52
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
1 2 3 4 5
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.


53

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





54
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) 3x
2
+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;


55
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.


56

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;


57
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.


58

Figura 27 Opes de configurao de grfico

Figura 28 Editor de grfico.


59

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");


60

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


61
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-');


62

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



63

Figura 31 Tela de sada em SCILAB para exemplo1 vetor.

Figura 32 Variao da velocidade do ar de secagem.



64

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.


65
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.
Exerccio 2 Escreva instrues em SCILAB para realizar cada uma das
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.
Exerccio 4 Faa um programa em SCILAB para gerar o grfico das
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) e
x
; 0 x 10
e) f (x) 1x
2
+2x+1; qual intervalo utilizar ? Existe algum critrio para
escolher o intervalo ?
f) f (t)
t +1 0 t <1
0 1 t < 2
2 t 2 t < 3
0 t 3





66
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 Q
0
(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+(Q
0
25)e
r t/100

Desenvolva um programa em SCILAB que simule a quantidade de sal
presente no tanque durante 100 minutos.


67
a) Como sada voc dever mostrar a quantidade de sal presente no
tanque e o tempo de simulao a cada 10 minutos. Utilize Q
0
= 50 lb e
r = 3.
b) Faa um grfico mostrando o comportamento da quantidade de sal no
tanque durante os 100 minutos. Utilize Q
0
= 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 Q
0
= 50 lb.
- Curva 2: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q
0
= 40 lb.
- Curva 3: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q
0
= 25 lb.
- Curva 4: Dever representar a quantidade de sal em 100 minutos
com r = 3 e Q
0
= 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 Q
0
= 50 lb.
Dica: O sistema entra em equilbrio quando Q(t) =25.









68
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.


69
Veja a disposio dos valores como ficaria em formato de matriz.
Tabela 10 Matriz Temperatura
Tempo (h) Sensor de
Temperatura (1)
Sensor de
Temperatura (2)
Sensor de
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


70
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




71
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


72
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:


73

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.


74
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
o
C a 350
o
C com


75
incrementos de 50
o
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.


76
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 (X
1
,Y
1
) e (X
2
,Y
2
), a distncia entre
eles dada pela frmula X
1
X
2
( )
2
+ Y
1
Y
2
( )
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.


77

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
x+
7
3
y
. 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:



78
x y
0 0
0,75 0,75
1,5 1,5
2,25 2,25
3 3
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


79
Utilizando o SCILAB para gerar o grfico da funo u(x, y) 5e
x+
7
3
y

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 3faremos 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 x 3 e 5 pontos dentro do
intervalo 0 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);



80




3. A partir das coordenadas geradas x e y podemos ento calcular o
valor da funo u(x, y) 5e
x+
7
3
y
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);


81

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.


82
a) u(x, t) 5e
4
2
t
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
t
para 0 x 1 e t 0
d)
u(x, y) 5e
32 t
sen(4 x) 3e
128
2t
sen(8 x)+2e
200
2
t
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
( 1)
m
(2m+1)
2
sen[(2m+1) x]e
(2m+1)
2

2
t
m0
10


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


83
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 6
a
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.


84
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( )


85
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


86
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


87
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 vel ocidade.
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.



88





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( )



89
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.


90
disp( ) Exibio de variveis ou texto.
exp( ) Retorna o valor para a expresso e
x
.
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.


91
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.












92