Buscar

Apostila SCILAB - ALGORITMOS E LÓGICA DE PROGRAMAÇÃO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 92 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 92 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 92 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
	
  
CENTRO	
  UNIVERSITÁRIO	
  UNA	
  
INSTITUTO POLITÉCNICO 
 
 
 
 
 
 
1ALGORITMOS E LÓGICA DE PROGRAMAÇÃO 
PRÁTICAS DE LABORATÓRIO 
2014/2 
 
	
  
	
  
	
  
 
 
1 Rafael Pinheiro Amantéa – Núcleo de Algoritmos e Lógica de Programação. 
rafael.amantea@prof.una.br 
 
 
 
2 
Sumário	
  
LINK	
  PARA	
  DOWNLOAD	
  DO	
  SOFTWARE	
  SCILAB	
   4	
  
INTRODUÇÃO	
   4	
  
O	
  AMBIENTE	
  SCILAB	
   4	
  
A	
  JANELA	
  CONSOLE	
  SCILAB	
   4	
  
JANELA	
  DE	
  COMANDO	
   5	
  
A	
  JANELA	
  HISTÓRICO	
  DE	
  COMANDOS	
   6	
  
SCINOTES	
   6	
  
NAVEGADOR	
  DE	
  VARIÁVEIS	
   7	
  
NAVEGADOR	
  AJUDA	
   8	
  
DESENVOLVENDO	
  ARQUIVOS	
  .SCE	
   8	
  
DECLARAÇÃO	
  DE	
  VARIÁVEIS	
  E	
  CONSTANTES	
   9	
  
COMANDOS	
  BÁSICOS	
  DE	
  ENTRADA	
  E	
  SAÍDA	
   9	
  
COMANDO	
  DE	
  SAÍDA	
   9	
  
COMANDOS	
  DE	
  ENTRADA	
   11	
  
OPERADORES	
   11	
  
1.	
   ESTRUTURA	
  SEQUENCIAL	
   17	
  
EXERCÍCIOS	
  –	
  ESTRUTURA	
  SEQUENCIAL:	
   19	
  
PROJETO	
  FINAL	
  1	
  :	
  CÁLCULO	
  DE	
  CARGA	
  TÉRMICA	
  PARA	
  UMA	
  CÂMARA	
  DE	
  
RESFRIAMENTO.	
   23	
  
2.	
   ESTRUTURA	
  CONDICIONAL	
   26	
  
O	
  COMANDO	
  IF	
  –	
  ELSE.	
   26	
  
ESTRUTURA	
  CONDICIONAL	
  -­‐	
  IF-­‐ELSEIF-­‐ELSE	
   27	
  
EXERCÍCIOS	
  –	
  ESTRUTURA	
  CONDICIONAL:	
   29	
  
PROJETO	
  FINAL	
  2	
  :	
  DESENVOLVIMENTO	
  DE	
  UM	
  CONVERSOR	
  DE	
  UNIDADES.	
   34	
  
3.	
   ESTRUTURAS	
  DE	
  REPETIÇÃO	
   37	
  
3.1	
  	
  	
  	
  O	
  COMANDO	
  “FOR”	
   37	
  
3.2	
  	
  	
  	
  O	
  COMANDO	
  “WHILE”	
   44	
  
EXERCÍCIOS	
  –	
  LAÇOS	
  DE	
  REPETIÇÃO	
   48	
  
 
 
3 
4.	
   VETORES	
  E	
  GRÁFICOS	
   51	
  
INSERINDO	
  VALORES	
  EM	
  UM	
  VETOR	
   53	
  
INSERÇÃO	
  DIRETA	
   53	
  
INSERÇÃO	
  POR	
  MEIO	
  DE	
  UM	
  USUÁRIO	
   53	
  
MOSTRANDO	
  OS	
  VALORES	
  DE	
  UM	
  VETOR	
  (SAÍDA	
  DE	
  DADOS)	
   53	
  
SAÍDA	
  DIRETA	
   53	
  
SAÍDA	
  POR	
  LAÇO	
  DE	
  REPETIÇÃO	
   53	
  
CONSTRUINDO	
  GRÁFICOS	
   54	
  
CONSTRUINDO	
  GRÁFICOS	
  2D	
   54	
  
AJUSTANDO	
  TÍTULOS	
  E	
  EIXOS	
   56	
  
EXERCÍCIOS	
  -­‐	
  VETOR	
   64	
  
PROJETO	
  FINAL	
  3	
  :	
  SIMULAÇÃO	
  !	
   66	
  
5.	
   MATRIZ	
   68	
  
INSERINDO	
  VALORES	
  EM	
  UMA	
  MATRIZ	
   70	
  
INSERÇÃO	
  DIRETA	
   70	
  
INSERÇÃO	
  POR	
  MEIO	
  DE	
  UM	
  USUÁRIO	
   70	
  
MOSTRANDO	
  OS	
  VALORES	
  DE	
  UMA	
  MATRIZ	
  (SAÍDA	
  DE	
  DADOS)	
   71	
  
SAÍDA	
  DIRETA	
   71	
  
SAÍDA	
  POR	
  LAÇO	
  DE	
  REPETIÇÃO	
   71	
  
PROJETO	
  FINAL	
  4	
  :	
  COMPREENDENDO	
  MATRIZES	
  PARA	
  A	
  GERAÇÃO	
  DE	
  GRÁFICOS	
  
TRIDIMENSIONAIS	
   77	
  
APENDICE	
  1	
  –	
  GERAÇÃO	
  DE	
  NÚMEROS	
  ALEATÓRIOS	
   84	
  
APENDICE	
  2	
  –	
  LISTA	
  DE	
  COMANDOS	
  ÚTEIS	
  EM	
  SCILAB	
   89	
  
 
 
 
4 
Link	
  para	
  download	
  do	
  software	
  SCILAB	
  
http://www.scilab.org 
Introdução	
  
Existem várias abordagens para se ensinar os fundamentos do SCILAB. Este 
material tem como objetivo fazer uma introdução ao SCILAB do ponto de 
vista de um usuário da linguagem C. 
Como C/C++ e outras linguagens de programação, o SCILAB, possui 
operadores: aritméticos, lógicos, condicionais, repetição e outros mais. 
Este capítulo vai introduzir a ferramenta SCILAB e explorar os seguintes 
conceitos: 
O	
  ambiente	
  SCILAB	
  
Com o passar dos anos o SCILAB vêm se popularizando não apenas pela 
versatilidade, mas também pela sua interface, que permite um ambiente 
amigável e interativo em que algoritmos básicos e avançados, envolvendo 
cálculos e simulações podem ser facilmente executados. 
O SCILAB apresenta várias janelas que ajudam e permitem que todas as 
atividades sejam realizadas pelo usuário. As janelas possuem funções 
distintas e serão exemplificadas e explicadas nas seções a seguir. 
A	
  janela	
  console	
  SCILAB	
  
A janela principal é chamada de console. Esta é a janela inicial onde as 
principais interações no SCILAB acontecem. A janela console gerencia as 
sub-janelas associadas a ela. Estas sub-janelas estão localizadas e visíveis 
junto da janela console. 
 
 
5 
 
Figura 1 Janela console SCILAB 
Janela	
  de	
  comando	
  
A janela de comando é uma sub-janela em que o usuário pode digitar 
comandos ou instruções a serem processadas no SCILAB. A janela de 
comando vai mostrar o prompt --> , sinal que simboliza que o SCILAB está 
pronto para receber instruções. Uma vez digitada a instrução e a tecla enter 
for digitada, a instrução é imediatamente executada. 
 
Figura 2 Janela de comando SCILAB. 
 
 
6 
A	
  janela	
  Histórico	
  de	
  Comandos	
  
A janela de histórico contém todos os comandos ou estruturas anteriormente 
executadas na janela de comando. 
 
Figura 3 Janela histórico de comandos 
SciNotes	
  
A janela SciNotes (editor) disponibiliza um espaço onde os arquivos .sci 
poderão ser criados e editados para a execução. Arquivos .sci também 
podem ser abertos ou re-editados e executados. Para ter acesso ao SciNotes 
basta clicar na opção aplicativos da janela (principal) console SCILAB. 
 
 
7 
 
Figura 4 Janela do editor SciNotes 
Navegador	
  de	
  variáveis	
  
É a sub-janela onde são carregadas, consultadas e salvas as variáveis. 
 
Figura 5 Janela navegador de variáveis 
Perceba na figura acima que todas as variáveis que foram criadas, foram 
listadas e classificadas quanto ao seu tipo, dimensão e visibilidade. Um duplo 
clique em cada uma destas variáveis, na janela navegador de variáveis, 
permitirá que você acesse o conteúdo da variável selecionada. 
 
 
 
8 
Navegador	
  Ajuda	
  
A janela ajuda permite acesso a todo o conteúdo de ajuda do SCILAB. Você 
pode fazer a busca por informação de ajuda por diretórios organizados por 
pacotes de aplicação, ou fazer uma busca por nome de comando, função ou 
até mesmo aplicação desejada. Para acessar o conteúdo ajuda, basta clicar 
no ícone da janela principal (console SCILAB). É importante salientar 
que o help possui a descrição de todos os comandos e trechos práticos de 
implementação, que podem ser copiados e colados no SciNotes e em 
seguida executados. 
 
Figura 6 Janela Ajuda. 
Desenvolvendo	
  arquivos	
  .sce	
  
Digitar um pequeno número de instruções na janela de comando pode ser 
fácil e conveniente. Porém o aumento do número de instruções, ou o uso 
aplicações mais complexas comprometem toda a praticidade e facilidade da 
abordagem utilizando o prompt de comando ( --> ). Uma maneira mais 
adequada é descrever estas instruções em um “arquivo texto”, onde a edição 
é mais simples e depois solicitar ao SCILAB para carregar este arquivo e 
executar estas instruções como se estivessem sido digitadas na janela de 
 
 
9 
comando. Desta maneira fica mais fácil para o usuário editar e modificar os 
programas e identificar possíveis erros na execução. Este tipo de arquivo 
texto contendo as instruções ao ( SCILAB ) é chamado de arquivo .sce. O 
arquivo ganha este nome devido a extensão do nome do arquivo a ser 
reconhecido pelo SCILAB ser “ .sce ”. Todo o nosso conteúdo será 
trabalhado utilizando os arquivos “.sce”. 
 
Declaração	
  de	
  variáveis	
  e	
  constantes	
  
Assim como C/C++, o SCILAB possui algumas regras para a escolha dos 
nomesna declaração de variáveis e constantes. Estas limitações devem ser 
consideradas e estão descritas a seguir: 
• Os nomes de variáveis e constantes devem ser compostos por letras, 
números e / ou “underscores”. Os nomes também devem sempre 
iniciar com letras. 
• As variáveis ou constantes que por ventura vierem a ter palavras 
compostas não podem ter espaços entre as palavras. Neste caso 
aconselha-se fazer uso do “underscore” entre as palavras. 
• O SCILAB é “case sensitive” (difere letras maiúsculas de letras 
minúsculas), portanto a variável de nome “numero” é distinta da 
variável “Numero”. 
Comandos	
  básicos	
  de	
  entrada	
  e	
  saída	
  
Comando	
  de	
  saída	
  
O comando de saída utilizado será o mprintf(). Ele permite mostrar 
mensagens, valores de variáveis e/ou a combinação de ambos no prompt de 
comando. 
Sequência de chamada 
mprintf(< texto >,< variável >) 
 
 
 
10 
O campo texto pode ser qualquer caracter, texto, equação ou uma 
informação qualquer. A impressão do valor de uma variável pode ser feita por 
meio da escolha do formato do tipo de dado seguido pelo nome da variável. 
Veja o exemplo: 
mprintf(“O valor da pressão 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 incluído toda vez que se deseja especificar o formato 
de uma variável. 
• Tamanho (5 ou qualquer número) à Esta parte do comando é 
opcional e indica o tamanho total do valor mostrado, incluindo o ponto 
decimal. 
• Precisão (3 ou qualquer número) à Define a quantidade de casas 
decimais que serão mostradas na saída. 
• Tipo de dado (d,f,e,g,c,s) à Este tipo de informação é 
necessária e as letras indicam o tipo de dado da variável como 
indicado na tabela a seguir: 
 
Tabela 1 Tipos de especificadores 
Especificador Saída 
%d Inteiro 
%f Real 
%e Exponencial 
%g Menor formato possível 
%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 contrário do comando mprintf() ele não permite 
que valores de variáveis sejam mostrados conjugados com mensagens na 
tela. Ao optar pelo comando disp(),você deverá optar por mostrar a 
mensagem ou o valor da variável, 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 variável indicada. Veja um 
exemplo: 
temperatura=input(“Digite a temperatura de ajuste do forno: ”) 
Após digitado um valor pelo usuário, este valor será atribuído à variável 
temperatura. 
Operadores	
  
Após atribuir valores por meio do comando input() , o próximo passo é 
então processar os valores por meio das seguintes opções de operadores. 
 
 
 
12 
Tabela 3 Operadores Aritméticos 
Símbolo Significado 
+ Adição 
- Subtração 
* Multiplicação 
/ Divisão 
^ Potência 
= Atribuição 
( ) Parênteses ( utilize-o 
para impor regras) 
 
Tabela 4 Operadores relacionais 
Símbolo Significado 
> Maior 
>= Maior ou igual 
< Menor 
<= Menor ou igual 
== Igualdade 
~= Diferença 
 
 
 
 
 
 
 
13 
Tabela 5 Operadores lógicos 
Símbolo Significado 
& Operador e 
| Operador ou 
~ Negação 
Para saber mais sobre a implementação de funções complexas (números 
complexos), exponenciais (raiz quadrada e logaritmos), trigonométricas 
(seno, cosseno, tangente), etc; vá até o menu ajuda e consulte como é feito o 
uso da função de sua necessidade. Veja como é fácil: 
 
Exemplo de como utilizar o ajuda em busca de uma função 
desconhecida 
“ Eu gostaria de saber como eu faço para implementar o seno de um número 
e a raiz quadrada de um número” 
Passo 1: Vá até a janela principal do SCILAB e clique no botão ajuda 
Passo 2: Na janela que se abrir você visualizará à esquerda da janela de 
ajuda o seguinte menu de opções. 
 
 
14 
 
Figura 7 Pacotes de funções específicas do menu ajuda. 
 
Passo 3: Escolha a pasta Funções Elementares. Você deverá visualizar as 
novas opções de funções como na figura a seguir. Observe que você terá um 
conjunto de funções relacionadas para diversos conteúdos como: números 
complexos, funções exponenciais, operações com matrizes, ordenação e 
procura de valores, trigonometria, etc. 
 
 
15 
 
Figura 8 Conjunto de funções elementares do menu ajuda. 
Passo 4: Para visualizar como implementar o seno de um número vamos 
abrir a pasta trigonometria e selecionar a função sin. Ao escolher a função 
seno você deverá visualizar a seguinte janela; 
 
 
16 
 
Figura 9 Tela de ajuda para a função seno. 
A janela apresentada na figura 9, possui informações do tipo nome, 
sequência de chamamento, parâmetros, descrição e exemplos que podem 
ser copiados, colados e executados no scinote. 
Passo 5: Para calcular o seno de um número ou uma variável a partir das 
informações encontradas no menu ajuda, devemos então 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 informação para calcular a raiz 
quadrada de um número. 
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 números 
 
 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 memória do sistema. 
Linha 2: O comando clc limpa a janela de saída do SCILAB. 
Linhas 3 Mensagem para digitar 2 números 
Linhas 4 e 5 : A função input() solicita dois valores ao usuário e armazena 
os valores nas variáveis num1 e num2. 
Linha 6: As duas variáveis são processadas utilizando o sinal + para realizar 
a soma gerando um resultado, o qual é armazenado na variável soma. 
Linha 7: O comando mprintf() mostra a mensagem de saída e o valor da 
variável soma. 
 
Comentários: Uma prática comum na programação em softwares de 
computação científica é a utilização dos comandos clear e clc. Aconselhamos 
a você a sempre utilizar esses dois comandos ao iniciar um novo programa! 
 
 
 
18 
 
Resumo do capítulo 
Você aprendeu diversos recursos importantes do SCILAB neste capítulo, 
incluindo a exibição de informações na tela do console, entrada de dados 
pelo teclado e realização de cálculos. Após a leitura deste capítulo você 
deverá será capaz de: 
• Conhecer o Ambiente SCILAB e identificar as telas principais e suas 
funções. 
• Utilizar a Ajuda para consultar funções diversas e como utilizá-las. 
• Inserir comentários para documentar programas e aprimorar sua 
legibilidade. 
• Identificar de maneira coerente os tipos das variáveis a serem 
utilizadas. 
• Escolher e declarar nomes coerentes para as variáveis. O SCILAB é 
case-sensitive (diferencia letras maiúsculas de minúsculas). 
• Realizar a saída de informações através da tela do consolepor meio 
dos comandos mprintf e disp. 
• Realizar a leitura de informações a partir do comando de entrada 
input. 
• Utilizar de maneira correta os operadores aritméticos (tabela 3 – 
pág12). 
• Utilizar os parênteses para estabelecer uma hierarquia de operações 
a serem realizadas. (Ex: Se uma operação tiver parênteses 
aninhados, o conjunto mais interno dentro dos parênteses é avaliado 
primeiro). 
• Desenvolver algoritmos em SCILAB utilizando a estrutura de entrada, 
processamento e saída. 
 
 
 
 
 
19 
 
Exercícios	
  –	
  estrutura	
  sequencial:	
  
 
Exercício 1. Determine se cada um dos exemplos é verdadeiro ou falso. Se 
falso explique por quê. 
a) Os comentários fazem com que o computador imprima o texto depois 
de // na tela quando o programa executa. 
b) O SCILAB considera que as variáveis numero e NuMeRo são 
idênticas. 
c) Os operadores aritméticos * , / , + e – têm todos, o mesmo nível de 
precedência. 
Exercício 2 Escreva instruções para cada uma das tarefas a seguir: 
a) Solicite que o usuário digite um número. 
b) Inserir um inteiro e atribuir o valor à variável valor. 
c) Mostrar na tela “Este é um programa em SCILAB”. 
Exercício 3 Escreva instruções ou comentários que realizam cada uma das 
tarefas a seguir. 
a) Solicite ao usuário que leia um número e o armazene-o na variável x. 
b) Solicite ao usuário que leia um numero e armazene-o na variável y. 
c) Solicite ao usuário que leia um numero inteiro e armazene-o na 
variável z. 
d) Compute o produto dos três inteiros contidos nas variáveis x, y e z e 
atribua à variável produto. 
e) Exiba a mensagem “O produto das três números é” seguida pelo valor 
da variável produto. 
 
Exercício 4. Faça um programa que solicite como entrada um valor de 
temperatura em graus Celsius (oC). Após realizada a entrada faça a 
conversão da temperatura para Kelvin (K). Após realizada a conversão 
mostre na saída do seu programa a temperatura em Kelvin e a temperatura 
 
 
20 
em graus Celsius. Para realizar a conversão utilize a relação: K = °C + 
273,15; 
Veja um exemplo de como pode ser feita a saída do seu programa ! 
 
 
Figura 10 Solução exercício 1 
 
Exercício 5: É hora de dar mais um passo a frente. Com base no seu 
programa anterior, acrescente a ele a conversão da temperatura em graus 
Celsius para Kelvin e graus Celsius para grau Fahrenheit. Mantenha o 
mesmo padrão de saída sugerido, acrescentando a conversão para graus 
Fahrenheit. Para realizar a conversão utilize a relação: K = °C + 273,15; °F = 
°C × 1,8 + 32 
 
Exercício 6: Suponha que a altura h(t) de uma bola seja dada pela seguinte 
função; 
h(t) = v0t −
gt2
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 
 
 
21 
 
Escreva um programa que calculará a altura de uma bola em um 
determinado tempo t. Esteja certo de usar nomes adequados para variáveis e 
para todos os símbolos da fórmula. 
 
Dica: Quais são as entradas deste problema? ( Que tipo de informação eu 
preciso do usuário 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 saída deste programa? Veja um exemplo ! 
 
 
 
Exercício 7: Uma aproximação ainda mais real pode ser feita para o 
problema apresentado no exercício número 2. Desta vez temos uma equação 
que descreve a altura e outra equação que descreve a velocidade após o 
lançamento. 
 
Suponha que uma bola de massa qualquer seja arremessada para cima 
numa velocidade v0 . Qual é a velocidade v(t) e sua altura acima do 
lançamento h(t) no instante t? A resposta, se desprezamos a resistência do 
ar e um conjunto de outras pequenas influências, é 
 
 
22 
v(t) = v0 − gt
h(t) = v0t −
gt2
2
 
Onde = 9,81 m/s2 é a aceleração da gravidade na superfície da terra. 
Escrevamos um código em SCILAB que solicita e t e então informa as 
particularidades da bola (velocidade e altura). 
Exercício 8. Consideremos um problema da eletrônica. Suponha que nós 
tenhamos três resistores elétricos montados em paralelos, como mostrado na 
figura abaixo, e gostaríamos de tratá-lo como um simples resistor. Criemos 
um algoritmo para calcular a resistência equivalente dos três resistores 
paralelos, mas tratado como um. 
 
 
 
 
 
A lei de Ohm diz que a corrente Ii através do i-ésimo resistor é proporcional 
à queda da tensão V sobre o resistor, assim estas quantidades são 
associadas por V = RiIi onde Ri é chamada a resistência do resistor. A 
corrente total passando pelos três resistores é justamente a soma das três 
correntes e a queda da tensão é a mesma para todos os três, assim: 
Itotal =
V
R1
+
V
R2
+
V
R3
=V 1R1
+
1
R2
+
1
R3
!
"
#
$
%
& 
Consequentemente, a lei de Ohm se aplica ao grupo completo de três 
resistores, com a resistência Rparalela dada por: 
1
Rparalela
=
1
R1
+
1
R2
+
1
R3
 
 
 
23 
Observe que tivemos que analisar o problema antes que pudéssemos 
escrever qualquer código; frequentemente este é o caso, e a análise do 
problema e a confecção da solução são usualmente mais difíceis do que a 
implementação. 
Escrevamos um código em SCILAB que solicita ao usuário os valores das 
três resistências (R1 , R2 , R3) e retorna a resistência dos três em paralelo 
(Rparalela). 
 
PROJETO	
  FINAL	
  1	
  :	
  CÁLCULO	
  DE	
  CARGA	
  TÉRMICA	
  PARA	
  UMA	
  CÂMARA	
  
DE	
  RESFRIAMENTO.	
  
A parcela de carga térmica englobada sob o título de diversos, é devida aos 
equipamentos mecânicos, iluminação, pessoas e, demais elementos que 
constituem fonte de calor no interior das câmaras. 
Os equipamentos mecânicos são normalmente, os ventiladores dos UNIT 
COOLERS cuja potência é 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 situação: 
Motor e carga no interior da câmara; 
Qmotor =
Pc.v
ηmotor
632τ kcal / dia 
em que: 
“ ” é o número de horas de funcionamento por dia de equipamento; 
“ ” é o rendimento do motor elétrico de acionamento. 
 
A dissipação provocada pela iluminação é dada por; 
Qiluminação = 0,86wτA kcal / dia 
τ
ηmotor
 
 
24 
em que ; 
“ W “ é a potencia da lâmpada (W/m2) 
“ ” é o número de horas de funcionamento por dia de equipamento; 
“A” é a área da câmara. 
 
As pessoas por sua vez liberam pelo seu metabolismo, uma quantidade de 
calor que nos é dada por: 
Qpessoas = n ⋅q ⋅τ kcal / dia 
 
em que: 
"n"é o número de pessoas; 
"q" o calor liberado por pessoa e por hora, o qual cresce com o 
abaixamento de temperatura. 
 
Prática ! 
Você deve ter percebido que as informações necessárias para o cálculo de 
carga térmica devido a fatores diversos leva em consideração a quantidade 
de pessoas, máquinas e lâmpadas no interior da câmara. Que tal 
construirmos um programa em SCILAB para realizar estes cálculos? Para 
isto leia com atenção o enunciado a seguir. 
Elabore um programa para calcular a carga térmica de uma câmara frigorifica 
com as seguintes características: 
• Área da câmara 200 m2. 
• Para realizar o transporte de carga dentro da câmara serão 
necessários 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 potência de 10 c.v. e eficiência 0,85. 
• No interior da câmara teremos lâmpadas fluorescente especialpara 
baixas temperaturas na proporção de 10 W/m2 (acendimento 4 
horas/dia). 
• Serão previstas também lâmpadas germicidas na proporção de 2 
W/m2 (acendimento 24 horas). 
 
Utilize a saída a seguir como forma de conferir os seus resultados! 
Após desenvolver o seu programa e verificar o funcionamento, realize 
pequenas simulações variando a quantidade de pessoas, empilhadeiras ou 
lâmpadas. Veja dentre estes três fatores qual é o responsável por dissipar 
maior quantidade de calor dentro da câmara2. 
 
 
Figura 11 Solução, projeto câmara de resfriamento. 
 
2 Toda a formulação para o cálculo de carga térmica foi adaptada de COSTA, 
ENNIO CRUZ da. Refrigeração. Editora Edgard Blucher, 3 edição, 2011. 
 
 
26 
2. ESTRUTURA	
  CONDICIONAL	
  
A estrutura condicional permite que o programa usufrua de um mecanismo de 
seleção e um conjunto de instruções em um processo qualquer. 
O	
  comando	
  if	
  –	
  else.	
  
Na indústria de um modo geral, ambientes com temperatura e umidade 
relativa controlados são necessários para a manutenção da qualidade de 
processos de fabricação e armazenamento. 
Na indústria de refratários especificamente, a manutenção da umidade 
relativa em baixos teores faz-se necessária no processo de composição de 
moldes, tendo em vista que altas umidades relativas no ambiente podem 
ocasionar danos significativos no processo de produção (lembre-se do saleiro 
na sua casa em semanas chuvosas). Portanto, a direção da fábrica solicitou 
ao engenheiro responsável que desenvolvesse uma lógica de controle de 
umidade relativa no ambiente de composição de moldes da fábrica. Para que 
os moldes atendessem aos padrões de qualidade da fábrica era necessário 
que a umidade relativa ambiente fosse mantida abaixo de 40%. Caso 
contrário uma mensagem de alerta deveria ser exibida. 
O engenheiro responsável 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 padrões de qualidade da 
fábrica. 
Veja o código 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 padrões"); 
7 else 
8 mprintf("\n -----ALERTA !!! ------ALERTA !!!! -------"); 
9 mprintf("\n UMIDADE RELATIVA FORA DOS PADRÕES !!!"); 
10 end 
11 mprintf("\n Fim de programa"); 
Linha 1: O comando clear limpa a memória do sistema. 
Linha 2: O comando clc limpa a janela de saída do SCILAB. 
Linha 3: Mostra mensagem na tela por meio do comando mprintf(). 
Linha 4: A função input() solicita o valor da umidade relativa e armazena o 
valor na variável umidade . 
Linhas 5 e 6: Verifica se a variável umidade possui um valor armazenado 
menor ou igual a 0.4. Quando esta condição for verdadeira a mensagem é 
mostrada. 
Linhas 7 a 10: Caso a condição imposta na linha 5 seja falsa as mensagens 
de alerta são mostradas na tela. 
Estrutura	
  condicional	
  -­‐	
  if-­‐elseif-­‐else	
  
Um exemplo prático da utilização deste comando pode ser encontrado no 
menu ajuda do SCILAB. Veja um trecho de código 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 comparação com 
viscosidades de outros líquidos. Se eu encher o mesmo copo com água, por 
exemplo, o copo irá drenar mais rapidamente. 
 
 
28 
 
A viscosidade descreve a fricção 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 também varia em função da 
temperatura com ilustra a tabela a seguir: 
Tabela 6 Variação 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 informações sobre a viscosidade dos fluidos, desenvolva um 
programa em SCILAB que receba como entrada a temperatura do fluido e 
mostre na saída a sua viscosidade. Veja o exemplo 2.2 a seguir. 
1 mprintf("------------Cálculo 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 inválido !!! "); 
15 end 
 
linhas 7, 9, 11: Por meio do comando elseif() as condições de temperatura 
do fluido são verificadas. Repare que o operador lógico & foi necessário para 
esta verificação. 
 
 
Figura 12 Tela de saída para exemplo de cálculo de viscosidade 
Resumo do capítulo 
Neste capítulo mostramos as estruturas de condição única if e instrução de 
condição composta if - else. Após a leitura deste capítulo você deverá 
ser capaz de: 
• Identificar a necessidade de uso de uma instrução do tipo condicional. 
• Implementar por meio do SCILAB uma instrução do tipo condicional. 
• Saber diferenciar as estruturas condicionais simples das estruturas 
condicionais compostas e identificar aplicações diversas. 
• Saber ler e interpretar as tabelas de operadores relacionais e lógicos 
(tabelas 4 e 5 páginas 12 e 13). 
• Utilizar os operadores relacionais e lógicos e criar condições simples e 
ou compostas em estruturas condicionais. 
 
Exercícios	
  –	
  estrutura	
  condicional:	
  
Exercício 1: Escreva instruções para cada uma das tarefas a seguir: 
 
 
30 
a) Solicite que o usuário digite um número. 
b) Inserir um inteiro e atribuir o valor à variável valor. 
c) Escreva a mensagem “O número digitado é maior ou igual 
a zero” Se a variável valor for maior ou igual a zero. 
 
Exercício 2 Escreva instruções ou comentários que realizam cada uma das 
tarefas a seguir. 
a) Solicite ao usuário que leia um número e o armazene-o na variável x. 
b) Solicite ao usuário que leia um numero e armazene-o na variável 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 estão fora dos intervalos especificados 
nas letras c) e d) e escreva na tela o valor de x e o valor de y. 
 
Exercício 3: Questão adaptada de (IFTRN). 
Sendo v1 = 15, v2 = 10, v3 = 5, v4 = 0, defina qual será a resposta 
(verdadeiro ou falso) para as sentenças lógicas 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 
Exercício 4: Desenvolva um programa em SCILAB que receba como entrada 
a temperatura do fluido e mostre na saída 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). 
Exercício 5: Desenvolva um programa em SCILAB que recebe como entrada 
um valor de temperatura em graus Celsius (oC) e retorne como saída a fase 
que se encontraria a água nesta temperatura (sólido, líquido ou gasoso). 
Exercício 6: O número de Reynolds pode ser utilizado para caracterizar 
diferentes regimes de escoamento, tais como laminar, transição ou 
turbulento. O escoamento laminar ocorre para baixos números de Reynolds (
Re ≤ 2100 ), onde as forças viscosas são dominantes, e é caracterizado por 
suave movimento do fluido. O fluxo turbulento ocorre em um elevado número 
de Reynolds (Re > 4000 ) e é dominado por forças de inércia, que tendem a 
produzir redemoinhos aleatórios, vórtices e instabilidades. Para valores entre 
2100 e 4000, classificamos o escoamento como escoamento em transição. 
Diante das informações sobre o número de Reynolds desenvolva um 
programa em SCILAB que classifique um escoamento dado o número de 
Reynolds. 
Exercício 7: Implemente um algoritmo em SCILAB que retorne o valor da 
função abaixo após receber um valor qualquer de entrada. 
( )
⎪
⎭
⎪
⎬
⎫
⎪
⎩
⎪
⎨
⎧
≤−
<≤−
−<+
=
xx
x
xx
xf
3,
32,3
2,22
 
Exercício 8: Vamos recordar o problema proposto no exercício 3 da 
unidade1. 
Suponha que uma bola de massa qualquer seja arremessada para cima 
numa velocidade v0 . Qual é a velocidade v(t) e sua altura acima do 
 
 
32 
lançamento h(t) no instante t? A resposta, se desprezamos a resistência do 
ar e um conjunto de outras pequenas influências, é 
v(t) = v0 − gt
h(t) = v0t −
gt2
2
 
Onde = 9,81 m/s2 é a aceleração da gravidade na superfície da terra. 
O que aconteceria se jogássemos esta bola em outro planeta? Como 
poderíamos fazer este tipo de estudo? 
Que tal implementarmos um menu de opções e deixarmos que o usuário 
escolha o planeta em que esta bola será jogada!? 
Escrevamos um código em SCILAB que permita que o usuário escolha um 
planeta em que quer jogar a bola e solicita v0 e t e então informa as 
particularidades da bola (velocidade e altura). Aproveite o seu programa para 
verificar qual a relação existente entre a gravidade, altura da bola e 
velocidade da bola. Utilize a tabela a seguir para a sua implementação. 
Tabela 7 Gravidade dos planetas do sistema solar. 
Planeta Gravidade (m/s2) 
Mercúrio 3,7 
Vênus 8,8 
Terra 9,8 
Marte 3,8 
Júpter 26,4 
Saturno 11,5 
Urano 9,3 
Netuno 12,2 
Plutão 0,6 
 
 
 
33 
Veja um exemplo do menu de opções ! 
 
Figura 13 Exemplo menu de opções. 
Exercício 9: Olimpíada Brasileira de Informática – OBI2005 – Modalidade 
Programação Nível 1 
A Companhia de Taxi Tabajara (CTT) é uma das maiores empresas de 
transporte do país. 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 bicombustíveis (carros que podem utilizar como 
combustível tanto álcool quanto gasolina). Além do maior conforto para os 
passageiros e o menor gasto com manutenção, com os novos carros é 
possível uma redução adicional de custo: como o preço da gasolina está 
sujeito a variações muito bruscas e pode ser vantagem, em certos 
momentos, utilizar álcool como combustível. Entretanto, os carros possuem 
um melhor desempenho utilizando gasolina, ou seja, em geral, um carro 
percorre mais quilômetros por litro de gasolina do que por litro de álcool. 
TAREFA 
Você deve escrever um programa que, dados o preço do litro de álcool, o 
preço do litro de gasolina e os quilômetros por litro que um carro 
bicombustível realiza com cada um desses combustíveis, determine se é 
mais econômico abastecer os carros da CTT com álcool ou com gasolina. No 
caso de não haver diferença de custo entre abastecer com álcool ou gasolina 
a CTT prefere utilizar gasolina. 
 
 
34 
ENTRADA 
A entrada é composta por uma linha contendo quatro números reais com 
precisão de duas casas decimais A, G, Ra e Rg, representando 
respectivamente o preço por litro do álcool, o preço 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 padrão 
(normalmente o teclado). 
SAÍDA 
A saída deve ser composta por uma única linha contendo o caractere ‘A’ se é 
mais econômico abastecera frota com álcool ou o caractere ‘G’ se é mais 
econômico ou indiferente abastecer a frota com gasolina. 
A saída deve ser escrita no dispositivo de saída padrão (normalmente a tela). 
RESTRIÇÕES 
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 informações importantes 
para o desenvolvimento do seu conversor de unidades. 
 
Algumas relações de conversão de unidades: 
Força: 1 N = 0,102 kgf= 0,2249 lbf 
 1 N = 1 kg m / s2 
 
 
 
35 
Pressão: 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 
Potência: 1 W = 3,412 BTU / h = 0,85984 kcal / h = 0,001359 CV = 0,001341 
HP 
 
Prática! 
É hora de desenvolver o seu próprio conversor de unidades. Você deverá 
utilizar as informações fornecidas no texto sobre conversão de unidades. O 
seu conversor deverá ter um menu inicial com as seguintes opções 
• Temperatura 
• Força 
• Pressão 
• Energia 
• Potência 
O usuário deverá escolher qual o tipo de unidade ele quer realizar a 
conversão. Após o usuário realizar a escolha, ele deverá escolher em 
qual unidade o valor a ser convertido vai ser digitado. 
 
Exemplo: 
• Caso o usuário escolha converter temperaturas ele vai selecionar a 
opção referente à temperatura no menu; 
• Após ter selecionado temperatura ele deverá escolher em qual 
unidade de temperatura será feita a entrada; Celsius, Kelvin ou 
Fahrenheit. 
 
 
36 
• Como saída o programa deverá então mostrar a temperatura digitada 
pelo usuário em todas as três unidades de temperatura. 
Veja como exemplo a tela de saída após utilizar o conversor 
 
Figura 14 Exemplo de saída para o programa conversor de unidades 
 
 
37 
3. ESTRUTURAS	
  DE	
  REPETIÇÃO	
  
3.1	
  	
  	
  	
  O	
  comando	
  “for”	
  
O comando “for” repete um conjunto de instruções a partir de um número 
conhecido de repetições. Este comando segue o seguinte formato: 
 
for variável = início : incremento : fim 
 Bloco de comandos 
end 
 
Exemplo 
Em um exercício do roteiro anterior analisamos a importância do termo 
“gravidade” (g), no modelo proposto; 
v(t) = v0 − gt
h(t) = v0t − gt2 / 2
 
Analisaremos agora, qual o comportamento da velocidade e da altura diante 
da variação do tempo. Perceba que tanto a velocidade v(t) , quanto a altura 
h(t) , são em função do tempo. Este tipo de análise é semelhante a 
questionarmos; o que acontecerá com a velocidade e altura da bola no 
intervalo de tempo de0 a 2 segundos? Mostre o comportamento a cada 0,5 
segundos. Utilize como v0 = 15 (m/s). 
Se você fosse fazer esta análise no seu caderno você seria orientado pelo 
seu professor de cálculo a desenvolver o seguinte raciocínio: 
 
 
 
 
 
38 
Tabela 8 Exemplo de cálculo 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ó é viável quando o número de repetições 
é pequeno. Imagine se precisarmos de observar o comportamento das 
variáveis diante de um número grande de repetições ? 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 iteração. (exemplo 3.1) 
1 clear; 
2 clc; 
3 g=9.81; 
4 mprintf("Simulação do arremeço de uma bola no planeta terra \n\n"); 
5 v0 = input(" Digite a velocidade inicial do arremeço (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 variável t é a variável 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 iteração. Portanto a cada iteração os cálculos são 
efetuados nas linhas 8 e 9 e mostrados nas linhas 10 e 11. 
Veja a saída dos resultados a seguir: 
 
Figura 15 Tabela de solução utilizando comando for 
Como você pode perceber, de maneira rápida e segura os cálculos foram 
efetuados e a simulação nos permite visualizar alguns resultados 
interessantes. 
A primeira observação que os resultados acima nos permitem fazer é que as 
equações conseguem descrever o movimento de subida e decida da bola. 
Veja os valores de altura durante a simulação. Do tempo 0 ao tempo 1,5 a 
bola vai ganhando altura, até que no tempo = 1,5 segundos ela atinge a sua 
altura máxima ! Após 1,5 segundos a bola então começa a perder altura. 
 
 
40 
De maneira semelhante a mesma análise pode ser feita quanto a velocidade 
da bola. Veja que no tempo 0 a bola sai com a velocidade máxima, 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 trajetória 
descendente, caindo ! 
 
Exemplo 2 : Somatórios 
O uso de somatórios abrange diversas áreas do conhecimento. Possui 
aplicações variadas em estatística, ciência da computação, engenharias, 
matemática, física, química, etc. 
Observe a tabela a seguir. 
Tabela 9 Representação matemática e em SCILAB para um somatório 
S = i
i=0
n
∑
 
 
 
for i:1:n 
 s = s+i; 
end 
 
A tabela acima apresenta um paralelo entre a representação matemática de 
um somatório e a sua implementação em SCILAB. Veja a seguir um exemplo 
da implementação desta estrutura. 
A temperatura ambiente de uma região pode ser obtida a partir de um ajuste 
de dados experimentais por uma série de Fourier. A equação a seguir foi 
obtida a partir dos dados experimentais de temperatura da cidade de Belo 
Horizonte no mês de agosto de 2013. 
 
 
41 
T (t) =19,06+ 0,211cos 0, 08721⋅ t( )+[−5.51sen(0, 08721⋅ t)] 
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 
média do mês de agosto. (Exemplo 3.2) 
1 clear; 
2 clc; 
3 mprintf("Cálculo da temperatura média no mês 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 média do mês de agosto-2013 em BH foi de
 %2.2f (C) ",media); 
 
linha 4 Inicializa a variável soma. 
linha 5 A variável t é a variável 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” não é necessário 
ajustar o incremento. Lembre-se t final foi ajustado como 720 horas, afinal em 
um mês temos 30 dias de 24 horas. 
linha 6 A variável temperatura guarda o resultado da temperatura calculada 
para a hora t. 
linha 7 Nesta linha temos a implementação do somatório. Em diversos livros 
de algoritmos você irá encontrar esta estrutura também chamada de 
acumulador. 
linha 9 A média é calculada por meio da divisão do somatório das 
temperaturas pela quantidade de amostras. 
linha 10 Mostra a média calculada. 
 
 
42 
 
Figura 16 Tela de saída após processamento da média. 
Resumo do item 3.1 
Nesta seção mostramos a estrutura de repetição for. Após a leitura deste 
capítulo você deverá ser capaz de: 
• Identificar a necessidade de uso da estrutura de repetição for. 
• Identificar os parâmetros que compõem o comando for (início, 
incremento e fim) e implementar o comando for por meio do SCILAB. 
• Identificar quando e como implementar somatórios. 
 
Exercícios – Laços de repetição comando for 
Exercício 1 Escreva uma instrução em SCILAB ou um conjunto de instruções 
em SCILAB para realizar cada uma das seguintes tarefas: 
a) Imprima os inteiros de 1 a 20 utilizando o comando for. 
b) Imprima os números ímpares entre 1 e 9 utilizando o comando for. 
Realize esta tarefa ajustando apenas os parâmetros de inicio, 
incremento e fim do comando for. 
c) Mostre a soma dos números pertencentes ao intervalo 45 e 55 
inclusive. 
Exercício 2 Faça um programa em SCILAB que faça a leitura de 3 valores e 
mostre os valores digitados pelo usuário. Você deverá utilizar o comando 
for. Utilize como referência a tela de saída a seguir. 
 
 
43 
 
Figura 17 Exemplo de entrada e saída de dados utilizando estrutura de repetição 
Exercício 3 Desenvolva um programa em SCILAB que calcule a 
exponenciação entre dois números x e y escolhidos pelo usuário (xy). Para 
realizar os cálculos você não poderá utilizar o comando (^). 
Dica: A operação 53 deve ser feita da seguinte maneira: 5 x 5 x 5 = 125. A 
operação de multiplicação foi repetida 3 vezes. Quais serão as entradas 
deste programa ? 
Exercício 4 Vimos no exemplo que ilustra a utilização de somatórios que a 
temperatura ambiente de uma região pode ser obtida a partir de um ajuste de 
dados experimentais por uma série de Fourier. A função a seguir foi obtida a 
partir dos dados experimentais de temperatura da cidade de Belo Horizonte 
no mês de agosto de 2013. 
T (t) =19,06+ 0,211cos 0, 08721⋅ t( )+[−5.51sen(0, 08721⋅ t)] 
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 informações sobre a temperatura em Belo Horizonte nas primeiras 
48 horas de agosto: 
a) A temperatura média do período 
 
 
44 
b) A maior temperatura registrada no período 
c) A menor temperatura registrada no período 
d) Quantas horas a temperatura ficou acima de 19 oC. 
e) Quantas horasa temperatura ficou abaixo de 16 oC. 
 
3.2	
  	
  	
  	
  O	
  Comando	
  “While”	
  
O comando while ou (enquanto em pseudocódigo) é um comando de 
repetição indicado para situações em que não se conhece o número de 
repetições a serem realizadas. Sua sintaxe em SCILAB é a seguinte: 
while (condição) 
 Bloco de comandos 
end 
Exemplo 
Um programa foi desenvolvido para ler um conjunto não determinado de 
valores e mostrar na saída; 
a) o valor lido; 
b) o quadrado do número lido; 
c) o cubo do número lido; 
d) a raiz quadrada do número lido; 
e) se é par ou ímpar. 
Para encerrar a digitação um número menor ou igual a zero deverá ser 
digitado. 
Veja uma sugestão de implementação para este problema no código a 
seguir: 
 
 
 
 
45 
1 clear; 
2 clc; 
3 numero=input("Digite um número 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 número %d é ímpar ",numero); 
15 end 
16 mprintf("\n\n\n"); 
17 numero=input("Digite um número inteiro"); 
18 end 
 
linhas 1 e 2 Limpa a memória e tela 
linha 3 Inicialização da variável numero. 
Linha 4 Início do bloco de repetições. É importante destacar a inicialização 
da variável numero feita na linha 3. O valor atribuído a esta variável é quem 
vai decidir se o algoritmo executará o bloco de repetições ou não. Lembrando 
que o comando de repetição while é composto por uma condição. Caso a 
condição seja verdadeira as instruções pertencentes ao corpo do comando 
serão executadas, caso contrário o comando de repetição não é executado. 
Na linha 4 em específico se a variável numero conter um valor igual ou 
inferior a zero o comando while não será executado. 
linha 11 Para verificar se um número é par ou não utilizou-se o comando 
modulo(numero,2). Este comando retorna o resto da divisão de numero 
por 2. Consequentemente se o resto retornado for igual a zero, podemos 
afirmar que a variável número contém um valor par. 
Linhas 17 Uma nova leitura para a variável numero deve ser feita. Nesta 
linha é que o programa possibilita ao usuário escolher um novo número para 
uma nova sequência de processamento ou escolher um valor para terminar 
laço de repetição. 
 
 
46 
Veja um exemplo de aplicação. 
Nas indústrias química, agrícola e de alimentos é muito comum o uso de 
equações empíricas para estimar a secagem de diversos produtos. Estas 
equações são válidas para determinadas faixas de temperaturas e umidades 
relativas. O objetivo destas equações é estimar após um determinado tempo 
de secagem qual o teor de umidade do produto. Estas equações possuem 
formas diversificadas, uma das formas mais utilizadas é conhecida pelo 
seguinte formato: 
U(t) = e−ktn 
em que : 
U(t) é o teor de água do produto, 
t é o tempo de secagem em horas, 
 k e n são parâmetros que dependem do produto; 
3Um engenheiro químico gostaria de conhecer o comportamento da secagem 
de um determinado produto e decidiu elaborar um programa em SCILAB que 
faça a simulação 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 implementação 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("-------Simulação de secagem--------- \n\n"); 
8 mprintf("\n\t\t t(h)\t\t U(%%) "); 
 
 
3 Informação o estudo da cinética de secagem de grãos e alimentos é de extrema 
importância para a manutenção 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 Inicialização das variáveis. 
linha 6 A variável teor de umidade foi inicializada em 1 (equivalente a 100%). 
Basta você ver que para o tempo igual a zero a equação vale 1. Perceba a 
importância desta inicialização, é esta inicialização que permite o programa 
executar as instruções no bloco de comandos do comando while. Em outras 
palavras esta inicialização torna a condição no comando while verdadeira e 
assim permite a repetição 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 cálculo é efetuado e logo 
após mostrado na tela. 
Veja a saída da simulação feita em SCILAB 
 
Figura 18 Tela de saída para simulação de secagem.4 
 
4 É importante lembrar que o modelo proposto para a simulação da secagem neste material está em 
uma forma extremamente simplificada. A simulação de secagem em modelos complexos pode envolver 
programas com diversas variáveis e funções, podendo levar até dias para se obter os resultados 
simulados. 
 
 
48 
Observe que a tabela de resultados mostrada na saída indica que, para o 
produto simulado secar até 13% de umidade, precisaríamos 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 capítulo mostramos a estrutura de repetição while. Após a leitura 
desta seção você deverá será capaz de: 
• Identificar a necessidade de uso da estrutura de repetição while. 
• Implementar o comando while por meio do SCILAB. 
• Utilizar contadores e somatórios. 
 
Exercícios	
  –	
  Laços	
  de	
  Repetição	
  
 
Exercício 1 
Faça um programa em SCILAB que faça a leitura de 5 valores e mostre os 
valores digitados pelo usuário. Você deverá utilizar o comando while. 
Exercício 2 
Desenvolva um programa em SCILAB que receba como entrada o valor de 
potência em Watt (W) e converta este valor para BTU/h. Mostre na tela o 
resultado da conversão e em seguida pergunte ao usuário se ele deseja 
realizar uma nova conversão. O usuário deverá digitar 0 (zero) para terminar 
o programa. Veja na figura a seguir um exemplo de saída para este 
programa. 
 
 
 
 
49 
 
Figura 19 Saída para conversão de potência 
Exercício 3 
Escreva um programa que mostre todos os números divisíveis por um 
número indicado pelo usuário dentro de um intervalo também indicado pelo 
usuário. O usuário 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 saída 
a seguir. 
 
Figura 20 Saída exemplo para o exercício 3 
 
Exercício 4 
Devido ao uso frequente, a descarga da bateria de equipamentos eletrônicos 
pode se comportar de acordo com a função proposta a seguir; 
y(t) = y0 ⋅2 −0,1( )t 
em que; 
y0 é a carga inicial da bateria; 
y(t) é a quantidade de carga após t horas de uso. 
 
 
50 
a) Desenvolva um programa em SCILAB, que tenha como entrada a 
carga inicial da bateria e mostre como saída a carga da bateria a cada 
hora enquanto a carga fique maiorou igual a 1%. 
b) Acrescente ao programa feito na letra a) um sistema de aviso que 
obedeça a seguinte tabela: 
Carga (%) Aviso 
10% < carga ≤ 20% Bateria fraca ! 
1% ≤ carga ≤ 10% Conecte ao carregador 
 
Dica: Procure identificar qual laço de repetição utilizar. Existe algum critério 
de parada ? 
Veja um exemplo de saída para o exemplo 1 
 
Figura 21 Exemplo de saída para o exercício 1 - descarga de bateria 
 
 
51 
4. VETORES	
  E	
  GRÁFICOS	
  
Um vetor é um tipo de variável que pode armazenar um ou mais valores do 
mesmo tipo de dado. 
Vejamos como isto funciona na prática. Imagine que você precisa armazenar 
os valores 15, 23, 40, 12, 37. Até então você faria o seguinte raciocínio para 
armazenar estes valores: 
 clear; 
 clc; 
 num1=15; 
 num2=23; 
 num3=40; 
 num4=12; 
 num5=37; 
 
 mprintf("\n Valor armazenado na variável num1 = %i",num1); 
 mprintf("\n Valor armazenado na variável num2 = %i",num2); 
 mprintf("\n Valor armazenado na variável num3 = %i",num3); 
 mprintf("\n Valor armazenado na variável num4 = %i",num4); 
 mprintf("\n Valor armazenado na variável num5 = %i",num5); 
 
Perceba que até então não havia outra alternativa para você armazenar estes 
5 valores a não ser criando 5 variáveis distintas para guardar o mesmo tipo 
de valor. Perceba também que para mostrar os 5 valores na saída você 
precisaria de novas 5 linhas de comando para mostrar os 5 valores distintos 
na saída do programa. Veja a saída após a execução do código acima. 
 
Figura 22 Exemplo de saída para diferentes variáveis. 
Este tipo de abordagem torna-se inviável na medida em que a quantidade de 
dados a serem armazenados aumenta. Imagine se você precisar armazenar 
centenas ou milhões de dados do mesmo tipo ? (Isto ocorre com frequência 
na engenharia) O que você faria ? Criar centenas ou milhões de variáveis 
 
 
52 
para armazenar cada valor será inviável. Nesta situação, a utilização de um 
vetor é a saída mais indicada. 
Que tal então 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 posição %i do vetor num",num(i),i); 
6 end 
 
Vamos começar pela linha 3 do código acima. Na linha 3 os nossos 5 valores 
foram guardados em uma única variável chamada num. Isto é um vetor ! Veja 
a ilustração abaixo: 
num = 15 23 40 12 37 
 1 2 3 4 5 
A variável num comporta-se como a ilustração acima. Cada um dos 5 valores 
ganhou um espaço na variável num e cada espaço possui um índice 
responsável por identificar em qual posição do vetor o valor foi armazenado. 
Portanto o valor 15 está armazenado na posição 1; o valor 23 está 
armazenado na posição 2; o valor 40 está armazenado na posição 3 ; o valor 
12 está armazenado na posição 4 e o valor 37 está armazenado na posição 
5. 
Para compreender melhor esta associação entre posições e valores observe 
as linhas 4 a 6 do código acima. Para fazer a saída dos valores do vetor 
num, utilizamos uma estrutura de repetição. A estrutura definida na linha 4 
utiliza a variável i como controle. Aproveitaremos então a variável i para 
percorrer todo o vetor, executando o comando de saída, mostrando na tela o 
valor armazenado à num(i) para cada posição à i como mostra a figura a 
seguir. 
 
 
53 
 
Figura 23 Exemplo de saída de valores de um vetor 
Inserindo	
  valores	
  em	
  um	
  vetor	
  
A inserção de valores em um vetor pode ser feita de diferentes maneiras. A 
seguir apresentaremos as mais usuais. 
Inserção	
  direta	
  
num = [ 5 10 12 32 45 48 23 64 ... ]; 
Inserção	
  por	
  meio	
  de	
  um	
  usuário	
  
for i=1:5 
 mprintf("Digite um valor para a posição %i do vetor",i); 
 num(i)=input(""); 
 end 
 
Mostrando	
  os	
  valores	
  de	
  um	
  vetor	
  (Saída	
  de	
  dados)	
  
Saída	
  direta	
  
disp(num); 
Saída	
  por	
  laço	
  de	
  repetição	
  
for i=1:5 
 mprintf("\n O valor %i esta armazenado na posição %i ",vetor(i),i); 
 end 
 
 
 
 
 
54 
Construindo	
  Gráficos	
  
Construindo	
  gráficos	
  2D	
  
A construção de um gráfico 2D em SCILAB pode ser feita por meio da função 
plot( ) . O forma básica para o comando é; 
plot(x,y) 
em que x é um vetor que contém os valores para a coordenada-x do gráfico e 
y é o vetor que contém os valores para a coordenada-y do gráfico. 
Exemplo: Plote o gráfico da função f (x) = 3x2 + 4x +1 . Faça x variar no 
intervalo de -5 a 4 com incrementos de 0,5. Veja o código em SCILAB a 
seguir; 
Opção 1: Na opção 1 o vetor x é declarado de maneira direta. Repare que o 
vetor y é automaticamente criado pelo SCILAB. Basta atribuir a y a 
expressão da função desejada e o SCILAB realiza o cálculo de y para cada 
posição do vetor x. Em seguida a função plot ( ) e os vetores x e y foram 
utilizados para fazer o gráfico da função. 
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); 
 
Opção 2: A opção 2 apenas se difere da opção 1 quanto a criação do vetor x. 
O vetor x foi criado a partir da função linspace(valor 1, valor2 , 
valor 3 ). A função linspace() funciona da seguinte maneira: o 
primeiro valor dentro do parênteses 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 parênteses representa o número de elementos que serão 
criados para este vetor. 
clear; 
 clc; 
 x = linspace(-5,4,19); 
 y = 3*x^2 + 4*x + 1; 
 
 
55 
 plot(x,y); 
 
Opção 3. A opção 3 apresenta uma estrutura de criação dos vetores por 
meio de laços de repetição. Os vetores x e y vão sendo criados na medida 
em que as iterações, ou repetições, vão acontecendo. Perceba que o 
contador i a cada iteração é utilizado para calcular um novo valor de x e um 
novo valor de y para a posição 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 gráfico a seguir foi gerado para a função proposta no exemplo. 
Independente da opção escolhida pelo usuário para criar gráfico da função 
proposta o resultado esperado é o apresentado a seguir. 
 
 
56 
 
Figura 24 Janela de saída gráfica. 
Ajustando	
  Títulos	
  e	
  eixos	
  
O SCILAB permite que façamos ajustes nos títulos e eixos dos gráficos. Veja 
as opções disponíveis: 
title() Ajusta o título na parte superior do gráfico. 
xlabel() Ajusta o título para o eixo x. 
ylabel() Ajusta o título do eixo y. 
Veja o código e a nova figura após a inclusão dos comandos de formatação 
de eixos e títulos. 
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("Gráfico de f(x)= 3*x^2 + 4*x + 1"); 
 xlabel("Eixo x"); 
 ylabel("Eixo y"); 
 
Figura 25 Novo gráfico após formatação de título e eixos. 
DICA: Ajuda sobre diferentes estilos de linhas, cores e formatações 
podem ser encontrados no menu ajuda ou clicando no menu editar após 
aparecer a janela do gráfico. A figura a seguir ilustra o menu editar. 
 
 
58 
 
Figura 26 Opções de configuração de gráfico 
 
Figura 27 Editor de gráfico. 
 
 
59 
 
Dica: para plotar um gráfico com várias curvas, siga o exemplo a 
seguir: 
Como plotar um gráfico da função f (x) = ax + b para diferentesvalores de a = ( 1, 3, 5, 7) e b = 1, no intervalo 0 ≤ x ≤ 10? Estude o 
código 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("Gráfico de f(x)= a*x^2 + b"); 
 xlabel("X"); 
 ylabel("Y"); 
 
 
60 
 
Figura 28 Exemplo de gráfico com múltiplos comportamentos. 
Exemplo de aplicação: (exemplo 4.2) 
Um engenheiro decidiu acompanhar o funcionamento do secador de grãos 
representado pela figura abaixo. 
 
Figura 29 Secador de grãos. 
Para realizar esta inspeção, o engenheiro instalou um sensor de temperatura 
na câmara de aquecimento de ar e um tubo de pitot para medir a velocidade 
 
 
61 
do ar na entrada da câmara de aquecimento. Para coletar as informações 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 informações a cada 0,5horas (meia hora) e mostrar: 
• a temperatura média na câmara de secagem; 
• a velocidade média 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 gráficos mostrando o comportamento da temperatura e velocidade 
do ar durante as 10 horas. 
Veja o código 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("Variação da velocidade durante 10 horas"); 
15 xlabel("Tempo (h)"); 
16 ylabel("Velocidade (m/s)"); 
 
17 plot(tempo,velocidade,'bo-'); 
18 scf(2); 
19 title("Variação 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 são 
inicializados na sua primeira posição (posição 1) com os valores de tempo inicial. 
 
linhas 7 a 12 Nesta parte do código é feita a simulação da aquisição de dados a cada 
tempo. Para isto foi utilizado o comando grand(1, distribuição normal, media, desvio 
padrão) , este comando gera números aleatórios obedecendo uma distribuição normal, 
uma média e um desvio padrão pré definidos. Para cada tempo simulado valores de 
temperatura e velocidade são gerados e armazenados em seus respectivos vetores. A 
variável i é incrementada a cada iteração até que o critério de parada (tempo<10) for 
alcançado. 
 
linhas 13 a 22. Nesta parte do código são executados os comandos para a geração dos 
gráficos (plot), títulos das figuras (title) e título das eixos (xlabel e ylabel). Os 
comandos scf( ) dão nome às janelas de gráficos, identificando-os e permitindo criar 
figuras distintas uma das outras. 
 
linhas 23 a 28 Neste trecho foram calculadas as médias através 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. 
 
Saídas 
 
 
 
63 
 
Figura 30 Tela de saída em SCILAB para exemplo1 vetor. 
 
Figura 31 Variação da velocidade do ar de secagem. 
 
 
 
64 
 
Figura 32 Variação da temperatura de secagem na câmara de secagem 
Resumo do capítulo 4 
Neste capítulo mostramos o uso de vetores. Após a leitura deste capítulo 
você deverá ser capaz de: 
• Identificar a necessidade de uso de vetores. 
• Inicializar um vetor de maneira direta ou por meio do usuário. 
• Realizar a saída de dados de um vetor. 
• Implementar operações de soma e busca de valores em um vetor. 
• Plotar gráficos para as mais diversas aplicações. 
 
Exercícios	
  -­‐	
  Vetor	
  
Exercício 1 Determine se cada um dos seguintes é verdadeiro ou falso. Se 
falso justifique. 
 
 
65 
a) Para referir-se a uma localização 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 instrução for. 
Exercício 2 Escreva instruções em SCILAB para realizar cada uma das 
seguintes tarefas: 
a) Exiba o valor do sétimo 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 posições de um 
vetor B que contém 34 elementos. 
Exercício 3 Faça um programa em SCILAB que solicite ao usuário a 
digitação de 10 números distintos. Armazene estes valores em um vetor. A 
saída do seu programa deverá mostrar ao usuário o valor digitado e as 
posições em que estes valores foram armazenados no vetor. 
Exercício 4 Faça um programa em SCILAB para gerar o gráfico das 
seguintes funções, 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 critério 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 
Exercício 5 Utilize o código do programa em SCILAB desenvolvido no 
exemplo de aplicação (secador de grãos) e calcule novamente a temperatura 
média, a velocidade média, a maior temperatura, a menor temperatura, e 
maior velocidade e a menor velocidade. Desta vez você não poderá utilizar 
as funções mean( ), max( ) e min( ). Você deverá desenvolver toda a lógica 
para efetuar os cálculos. Você poderá utilizar as funções mean( ), max( ) e 
min( ) apenas para comparar os seus resultados obtidos com os resultados 
obtidos pelas funções. 
 
PROJETO	
  FINAL	
  3	
  :	
  Simulação	
  !	
  
No instante t=0 (min) um tanque contém 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 galão) está entrando no tanque a uma taxa de r galões por minuto, e 
que o líquido, bem misturado, está saindo do tanque à mesma taxa. O 
fenômeno é ilustrado pela figura abaixo. 
 
Figura 33 Tanque de água com misturador. 
A função 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.67 
a) Como saída você deverá mostrar a quantidade de sal presente no 
tanque e o tempo de simulação a cada 10 minutos. Utilize Q0 = 50 lb e 
r = 3. 
b) Faça um gráfico mostrando o comportamento da quantidade de sal no 
tanque durante os 100 minutos. Utilize Q0 = 50 lb e r = 3. 
c) Faça um único gráfico contendo 4 curvas com as seguintes condições: 
• 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 fenômeno ilustrado pelo gráfico ! 
d) O que aconteceria se o valor da taxa de fluxo aumentasse para 5 após 
20 minutos de simulação ? Utilize como condição de simulação Q0 = 
50 lb. Mostre o gráfico da simulação e interprete-o. 
e) Qual seria a taxa de fluxo necessária (r) para que o valor de t não 
exceda 45 minutos para alcançar o equilíbrio ? Utilize Q0 = 50 lb. 
Dica: O sistema entra em equilíbrio quando Q(t) = 25. 
 
 
 
 
 
 
 
 
 
68 
 
 
5. MATRIZ	
  
Uma matriz é um tipo de variável que pode armazenar um ou mais valores do 
mesmo tipo de dado, porém este armazenamento pode estar associado a 
duas propriedades distintas. Esta associação para muitos é chamada de 
dimensão. Em vetores, associávamos o armazenamento de informação a 
apenas uma propriedade, “uma dimensão”. 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 dimensões. 
Veja um exemplo: (Exemplo 5.1) 
Um engenheiro resolveu montar um sistema de aquisição de dados para 
coletar os dados de pressão do gás refrigerante e temperatura do gás 
refrigerante em um sistema de refrigeração. Para isto o engenheiro instalou 
em diferentes pontos do sistema três sensores de pressão e temperatura. O 
engenheiro desenvolveu um programa em SCILAB que durante cinco horas 
coletava as informações dos sensores e armazenava as informações a cada 
hora. Veja o código 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); 
 
 
69 
 
A lógica utilizada pelo engenheiro foi de armazenar em uma matriz chamada 
temperatura os dados dos três sensores a cada hora durante 5 horas. 
Veja a disposição 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 três temperaturas distintas, uma para cada sensor. 
Portanto a nossa matriz de duas dimensões (tempo,sensor) é uma matriz 
5x3 (5 linhas e 3 colunas). O mesmo raciocínio foi aplicado ao sensor de 
pressão. 
Veja a saída após executarmos o programa em SCILAB; 
 
 
70 
 
Figura 34 Saída das matrizes temperatura e pressão 
Inserindo	
  valores	
  em	
  uma	
  matriz	
  
A inserção de valores em uma matriz pode ser feita de diferentes maneiras. A 
seguir apresentaremos as mais usuais. 
Inserção	
  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. 
Inserção	
  por	
  meio	
  de	
  um	
  usuário	
  
Inicializando por meio de um usuário 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 
 
 
 
71 
Mostrando	
  os	
  valores	
  de	
  uma	
  matriz	
  (Saída	
  de	
  dados)	
  
Saída	
  direta	
  
disp(matriz); 
Saída	
  por	
  laço	
  de	
  repetição	
  
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 
 
 
Exemplo 5.2 Desenvolva em SCILAB um programa que permita ao usuário 
preencher 2 matrizes quadradas A e B. Após preencher as matrizes A e B o 
usuário deverá escolher de acordo com as opções abaixo, qual tipo de 
operação irá realizar com as matrizes A e B para gerar uma matriz C com a 
resposta da operação selecionada. Veja as opções: 
1) Adição 
2) Subtração 
Solução 
1 clc; 
2 clear; 
3 dimensao = input ('Informe a dimensão 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 posição 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 posição B(%i,%i): ",linha,coluna); 
 
 
72 
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) Adição "); 
26 mprintf("\n 2) Subtração "); 
27 mprintf("\n\n"); 
28 
29 operacao=input("Escolha a operação: "); 
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 
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 inválida"); 
49 end 
 
linha 3 A variável dimensão armazena a dimensão das matrizes A e B. Este 
valor é escolhido pelo usuário. 
linhas 6 a 19 Neste bloco de comandos do programa são feitas as leituras de 
valores para as matrizes A e B. Observe que para realizar a operação de 
leitura elemento por elemento é necessário o uso de dois laços de repetição. 
O primeiro laço varia da posição 1 ao número de linhas. O segundo laço varia 
da posição 1 ao número de colunas. Os índices linha e coluna são 
controlados pelos laços de repetição. 
 
 
73 
linhas 20 a 23 Nesta parte do programa são 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 laços de repetição. 
linhas 24 a 30 Menu de opções para que o usuário escolha qual operação 
deseja realizar com as matrizes A e B. 
Linhas 31 a 49 Bloco de comandos responsáveis por realizar as operações 
com as matrizes de acordo com a opção escolhida pelo usuário. 
Veja um exemplo de solução a seguir: 
 
Figura 35 Saída exemplo 1 matriz. 
Resumo do capítulo 5 
Neste capítulo mostramos o uso de matrizes. Após a leitura deste capítulo 
você deverá ser capaz de: 
• Identificar a necessidade de uso de matrizes. 
 
 
74 
• Inicializar uma matriz de maneira direta ou por meio do usuário.

Outros materiais