Buscar

FC_IntroduçãoScilab_FURTADO

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

Introdução ao Scilab e à 
Programação de Computadores 
Cursos de Engenharia 
Versão 1.1 
 
 
 
Daniel A. Furtado 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Uberlândia 
2014 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Esta apostila foi escrita por Daniel A. Furtado e não pode ser reproduzida ou apropriada, total ou 
parcialmente, sem a permissão do autor. 
 
 
SUMÁRIO 
 
C A P Í T U L O 1 INTRODUÇÃO AO SCILAB ........................................................................................................... 4 
1.1 AMBIENTE DE TRABALHO E CONSOLE ................................................................................................................................. 4 
1.2 OPERAÇÕES E EXPRESSÕES MATEMÁTICAS ......................................................................................................................... 5 
1.3 PRECEDÊNCIA DOS OPERADORES ...................................................................................................................................... 6 
EXERCÍCIOS PROPOSTOS ....................................................................................................................................................... 7 
1.4 VARIÁVEIS .................................................................................................................................................................... 8 
1.5 VARIÁVEIS ESPECIAIS DO SCILAB ....................................................................................................................................... 9 
1.6 NOMES DE VARIÁVEIS..................................................................................................................................................... 9 
EXERCÍCIOS PROPOSTOS ....................................................................................................................................................... 9 
1.7 FUNÇÕES PREDEFINIDAS ................................................................................................................................................. 9 
EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 12 
C A P Í T U L O 2 INTRODUÇÃO A ALGORITMOS .................................................................................................13 
2.1 ALGORITMO COMO UMA DESCRIÇÃO NARRATIVA .............................................................................................................. 14 
2.2 ALGORITMO EM FLUXOGRAMA....................................................................................................................................... 15 
2.2.1 Estrutura Condicional em Fluxograma ............................................................................................................ 17 
C A P Í T U L O 3 ENTRADA E SAÍDA UTILIZANDO O SCINOTES ............................................................................19 
3.1 FUNÇÕES INPUT E DISP .................................................................................................................................................. 20 
3.2 FUNÇÃO PRINTF .......................................................................................................................................................... 21 
3.3 COMENTÁRIOS ............................................................................................................................................................ 22 
EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 23 
C A P Í T U L O 4 ESTRUTURA CONDICIONAL IF-THEN-ELSE .................................................................................24 
4.1 ESTRUTURA CONDICIONAL SIMPLES ................................................................................................................................ 26 
4.2 ESTRUTURA CONDICIONAL ANINHADA ............................................................................................................................. 26 
4.3 OPERADORES RELACIONAIS ........................................................................................................................................... 28 
4.4 OPERADORES LÓGICOS ................................................................................................................................................. 28 
EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 29 
C A P Í T U L O 5 OPERAÇÕES COM VETORES ......................................................................................................31 
5.1 ACESSANDO OS ELEMENTOS DE UM VETOR ....................................................................................................................... 31 
5.2 MODIFICANDO UM VETOR ............................................................................................................................................ 32 
5.3 UTILIZANDO O OPERADOR “:” PARA DEFINIR VETORES ....................................................................................................... 32 
5.4 UTILIZANDO A FUNÇÃO LINSPACE .................................................................................................................................... 33 
5.5 OPERAÇÕES COM VETORES ............................................................................................................................................ 34 
5.6 OUTRAS FUNÇÕES APLICADAS A VETORES ........................................................................................................................ 34 
EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 35 
C A P Í T U L O 6 CONSTRUÇÃO DE GRÁFICOS .....................................................................................................36 
6.1 GRÁFICOS DE FUNÇÕES ................................................................................................................................................. 36 
6.1.1 Opções do Gráfico ........................................................................................................................................... 37 
6.1.2 Título, Rótulos dos Eixos, Legenda e Linhas de Grade ..................................................................................... 39 
6.1.3 Outras Opções do Gráfico ............................................................................................................................... 40 
6.2 O COMANDO SUBPLOT ................................................................................................................................................. 42 
6.3 OUTROS TIPOS DE GRÁFICOS ......................................................................................................................................... 45 
C A P Í T U L O 7 OPERAÇÕES COM MATRIZES ....................................................................................................47 
7.1 ACESSO AOS ELEMENTOS DA MATRIZ .............................................................................................................................. 48 
7.2 ADICIONANDO E REMOVENDO LINHAS E COLUNAS ............................................................................................................. 49 
7.3 OPERAÇÕES DE SOMA, SUBTRAÇÃO E MULTIPLICAÇÃO ....................................................................................................... 50 
7.4 OUTRAS FUNÇÕES APLICADAS A MATRIZES .......................................................................................................................51 
7.5 RESOLUÇÃO DE SISTEMAS LINEARES ................................................................................................................................ 53 
C A P Í T U L O 8 ESTRUTURAS DE REPETIÇÃO.....................................................................................................55 
8.1 ESTRUTURA DE REPETIÇÃO WHILE (ENQUANTO) ................................................................................................................. 55 
8.2 ESTRUTURA DE REPETIÇÃO FOR (“REPITA PARA”) ............................................................................................................... 58 
 
 4 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
Capítulo 1 
Introdução ao Scilab 
Scilab é um software livre, de computação numérica, que oferece um poderoso ambiente 
computacional para aplicações científicas e de engenharia. O software é mantido e 
distribuído pela Scilab Enterprises e pode ser baixado gratuitamente pela Internet 
(www.scilab.org). Atualmente, o Scilab é utilizado em diversos centros educacionais e 
industriais pelo mundo. Algumas das várias atividades que podem ser realizadas no Scilab 
são: 
 Operações e simulações matemáticas, 
 Operações com polinômios, 
 Construção de gráficos, 
 Processamento de sinais, 
 Cálculos estatísticos, 
 Operações com matrizes, 
 Resolução de equações diferenciais, 
 Interpolação e aproximação, 
 Projeto e análise de sistemas de controle. 
1.1 Ambiente de Trabalho e Console 
O ambiente de trabalho padrão da versão 5.4.0 do Scilab é apresentado a seguir. O ambiente 
é organizado em um conjunto de janelas menores que são encaixadas na janela principal. São 
elas: Navegador de arquivos, Console do Scilab, Navegador de variáveis e Histórico de comandos. A 
janela Console do Scilab é utilizada para a execução de operações diversas. 
http://www.scilab-enterprises.com/
http://www.scilab.org/
 5 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
 
Figura 1.1 - Tela inicial do Scilab 
O sinal de prontidão “-->” indica que o Scilab aguarda a digitação de um comando ou 
expressão, que deve ser finalizado pela tecla ENTER. Exemplos: 
-->5+10 
 ans = 
 15. 
-->10/4 
 ans = 
 2.5 
Observe que o resultado é precedido por “ans” de answer (resposta). 
1.2 Operações e Expressões Matemáticas 
As operações básicas da matemática podem ser realizadas no Scilab por meio dos seguintes 
operadores: 
+ Soma 
- Subtração 
* Multiplicação 
/ Divisão 
^ Potenciação ( 
 Exemplos: 
-->2*6 
 ans = 
 12. 
 
 6 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
 
-->2^3 
 ans = 
 8. 
-->3+5-1 
 ans = 
 7. 
Se necessário, o comando clc (de clear console) pode ser utilizado para limpar o console. 
1.3 Precedência dos Operadores 
Quando uma expressão envolve diversos operadores, o Scilab considera a ordem de 
precedência dos mesmos para avaliar a expressão: 
Prioridade Operação 
1ª Potenciação: ^ 
2ª Multiplicação e divisão: *, / 
3ª Soma e subtração: +, - 
Exemplos: 
-->4*3^2 
 ans = 
 36. 
Como o operador de potenciação tem maior prioridade em relação ao 
de multiplicação, a operação 3^2 é avaliada primeiro e o seu resultado 
(9) é multiplicado por 4. 
-->10+4/2 
 ans = 
 12. 
4/2 é avaliado primeiro, pois o operador de divisão tem prioridade 
sobre o de adição. O resultado é então somado com 10. 
-->2+3*4-1 
 ans = 
 13. 
3*4 é avaliado primeiro. 
A ordem de avaliação das operações pode ser definida utilizando-se os parênteses. Por 
exemplo, caso seja necessário resolver a expressão matemática a seguir, os parênteses se 
tornam essenciais. 
Expressão matemática: 
 
 
 Expressão equivalente no Scilab: -->(10+4)/2 
Repare que, se os parênteses não fossem utilizados, a expressão 10+4/2 no Scilab seria 
equivalente à expressão matemática 
 
 
, que é diferente da expressão anterior (a primeira 
expressão resulta em 7, enquanto a segunda resulta em 12). 
 
 
 
 7 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
Outros exemplos: 
Expressão Matemática Expressão correspondente no Scilab 
 
 
 
 
 
 
 
 
 -->1/2 + 3/5 - 5/8 
 
 
 -->(3+2^5)/5 
 
 
 -->(5*(4+2)–1)/(10+3^2) 
 
 
 -->(2^4+2^6)/(2^5-1)+20 
 
Quando uma expressão envolve operadores de mesma prioridade, o Scilab avalia primeiro a 
operação mais à esquerda. Por exemplo, na expressão 5-3+1, os operadores de soma e 
subtração possuem a mesma prioridade. Assim, a operação 5-3 é calculada primeiro e o 
resultado (2) é então somado com 1, resultando em 3. Repare que o resultado seria diferente 
caso a operação de adição fosse feita antes da subtração. O mesmo acontece com expressão 
10/5*2. A operação 10/5 é calculada primeiro, pois está mais à esquerda, e o resultado é 
multiplicado por 2. Esta regra é denominada de associatividade à esquerda. 
Exercícios Propostos 
Elabore expressões no SciLab correspondentes às expressões matemáticas a seguir. Utilize o 
menor número de parênteses possível. 
a) 10 + 20 
b) 2 ∙ 45 
c) (resp: 7,2) 
d) + 1 (resp: 17) 
e) (resp: 32) 
f) 
 
 
 
 
 
 (resp: 0,9) 
g) 
 
 
 (resp: 2,2) 
h) 
 
 
 + 7 (resp: 53,5) 
i) 
 
 
 (resp: 1,538...) 
j) 
 
 
 
 8 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
1.4 Variáveis 
Em computação, uma variável corresponde a uma posição na memória do computador que é 
associada a um nome de identificação. As variáveis são comumente utilizadas para armazenar 
dados temporariamente, como números, resultados de expressões, cadeia de caracteres ou 
valores lógicos. No Scilab, as variáveis podem ser definidas e utilizadas diretamente no 
console. Veja o exemplo: 
-->a = 10 
 a = 
 10. 
A expressão “a = 10” é utilizada para definir uma variável de nome “a” a fim de 
armazenar o valor 10. O símbolo de igualdade é denominado de operador de atribuição, uma 
vez que atribui (armazena) o valor à variável. Após ser definida, a variável permanece 
disponível até que o Scilab seja fechado ou até que o usuário apague a mesma manualmente 
(pode-se digitar o comando clear seguido do nome da variável). 
Outros exemplos: 
-->b = 2 + 3 
 b = 
 5. 
Define uma variável de nome b para armazenar o resultado da 
expressão 2 + 3. 
-->b 
 b = 
 5. 
Acessa o conteúdo da variável b, definida anteriormente. 
-->c = 2*b + 1 
 c = 
 11. 
Define uma nova variável c para armazenar o resultado de (2*b + 1), 
que resulta em 11. 
-->soma = b + c 
 soma = 
 16. 
Define uma nova variável de nome soma para armazenar a soma das 
variáveis b e c. 
-->b = b + 1 
 b = 
 6. 
Altera o valor da variável b, adicionando 1 ao seu conteúdo. 
-->t = 'teste' 
 t = 
 teste 
Também é possível criar variáveis para armazenar cadeias de 
caracteres (strings), desde que eles sejam especificados entre aspas. 
-->d = 30; 
 
 
Define a variável d. OBS: O ponto-e-vírgula é utilizado para suprimir 
a resposta imediata do Scilab. 
-->d Mostrar o conteúdo da variável d 
-->clear b Apaga apenas a variável b. 
-->clear Apaga todas as variáveis definidas pelo usuário. 
 9 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
1.5 Variáveis Especiais do Scilab 
O Scilab disponibiliza ao usuário um conjunto de variáveis pré-definidas. Algumas delas são 
as variáveis %pi e %e que armazenam os valores da constante matemática e do número de 
Euler, respectivamente: 
-->%pi 
 %pi = 
 3.1415927 
-->%e 
 %e = 
 2.7182818 
1.6 Nomes de Variáveis 
Os nomes das variáveis devem ser escolhidos com atenção. Algumas regras são: 
 O nome da variável não deve começar com um algarismo; 
 Não são permitidos acentos, espaços ou caracteres especiais como: ç, !, ?, @ , etc; 
 Entretanto, o caractere sublinha “_” é permitido; 
 O Scilab faz distinção entre letras minúsculase maiúsculas. 
Exemplos de nomes inválidos para variáveis: &a, 5_a, +2, área, núm, var@, área total. 
Exercícios Propostos 
1. Defina uma variável de nome x para armazenar o valor 8. 
2. Acesse o conteúdo da variável x. 
3. Defina uma variável de nome y como sendo igual a 2x + 1. 
4. Atualize a variável y acrescentando 2 ao seu conteúdo. 
5. Acesse o conteúdo da variável y. 
6. Defina três variáveis a, b e c para armazenar valores de sua escolha. 
7. Defina uma variável de nome delta para armazenar o resultado de 
8. Defina uma variável z como sendo igual ao produto de x por y. Utilize o ponto-e-
vírgula no final da expressão e verifique a diferença entre utilizá-lo ou não. 
1.7 Funções Predefinidas 
O Scilab disponibiliza ao usuário uma vasta coleção de funções que realizam cálculos 
diversos e podem ser utilizadas diretamente no console. Por exemplo, a função sqrt calcula a 
raiz quadrada de um número (do inglês, square root - sqrt): 
-->sqrt(9) 
 ans = 
 3. 
 10 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
-->y = sqrt(49) 
 y = 
 7. 
Outros exemplos são as funções trigonométricas sin e cos que calculam o seno e o cosseno, 
respectivamente, de um ângulo em radianos. 
Exemplos: 
-->cos(%pi) 
 ans = 
 - 1. 
-->sin(%pi/2) 
 ans = 
 1. 
Para executar uma função no Scilab, utiliza-se frequentemente a seguinte sintaxe: 
nomeDaFunção ( argumentos_de_entrada ) 
Observe que os argumentos de entrada da função devem ser passados entre parênteses, logo 
após o nome da função. No Scilab, há funções que operam sobre zero, um ou vários 
argumentos de entrada. A função sqrt apresentada anteriormente exige um único 
argumento. Já a função max, responsável por calcular o maior dentre dois ou mais números, 
é capaz de operar sobre diversos argumentos de entrada. Neste caso, eles devem ser 
separados por vírgula: 
-->max(3,4) 
 ans = 
 4. 
-->max(6,3,5) 
 ans = 
 6. 
-->max(2,6,3,5,12,8) 
 ans = 
 12. 
Outros exemplos de funções: 
Função Descrição Exemplos 
abs Calcula o valor absoluto de um número 
ou expressão. 
-->abs(-5) 
 ans = 
 5. 
round Arredonda um número para o inteiro 
mais próximo. 
-->round(5.1) 
 ans = 
 5. 
-->round(7.6) 
 ans = 
 8. 
-->round(2.5) 
 ans = 3. 
 11 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
floor Arredonda um número para o próximo 
inteiro menor. Se o valor já for inteiro, 
retorna o próprio. 
-->floor(5.1) 
 ans = 
 5. 
-->floor(7.6) 
 ans = 
 7. 
-->floor(12) 
 ans = 
 12. 
-->floor(-4.9) 
 ans = 
 -5. 
ceil Arredonda um número para o próximo 
inteiro maior. Se o valor já for inteiro, 
retorna o próprio. 
-->ceil(5.1) 
 ans = 
 6. 
-->ceil(7.6) 
 ans = 
 8. 
-->ceil(12) 
 ans = 
 12. 
min Calcula o menor número de uma lista de 
números. 
-->min(3,8,5,2,7) 
 ans = 
 2. 
sin, cos, tan Calculam, respectivamente, o seno, o 
cosseno e a tangente de um ângulo (em 
radianos). 
-->sin(%pi/2) 
 ans = 
 1. 
-->cos(%pi) 
 ans = 
 -1. 
-->tan(45 * %pi/180) 
 ans = 
 1. 
sind, cosd, 
tand 
Calculam, respectivamente, o seno, o 
cosseno e a tangente de um ângulo em 
graus. 
-->sind(90) 
 ans = 
 1. 
asin, acos, 
atan 
Calculam, respectivamente, o arco-seno, 
o arco-cosseno e o arco-tangente, com o 
resultado em radianos. 
-->asin(1) 
 ans = 
 1.5707963 
log, log10, 
log2 
Calculam, respectivamente, o logaritmo 
de um número na base e (logaritmo 
natural), na base 10 e na base 2. 
-->log(%e) 
 ans = 
 1. 
-->log10(100) 
 ans = 
 2. 
modulo Calcula o resto da divisão inteira de um 
número por outro. 
-->modulo(6,2) 
 ans = 
 0. 
-->modulo(5,2) 
 ans = 
 1. 
 
 
 
 
 12 
 
Introdução ao Scilab Prof. Dr. Daniel A. Furtado 
 
Exercícios Propostos 
1. Elabore expressões no Scilab que sejam equivalentes às expressões matemáticas a seguir: 
a) √ Resp.: 16 
b) Resp.: 2.4771213 
c) Resp.: 9 
d) Resp.: 3.2188758 
e) Resp.: 0.9396926 
f) Resp.: 0.8660254 
g) Resp.: 6.2831853 
h) Resp.: 1 
i) 
 
 
 Resp.: 0.7071068 
j) 
 
 
 Resp.: 1 
k) Resp.: 145 
l) 
 
 
 Resp.: 166.5 
m) 
 
√ 
 Resp.: -484.99032 
n) |√ | Resp.: 120.52786 
o) 
 
 
 
 
 
 
√ 
 √ 
 Resp.: 14.202356 
p) 
√ 
 
 
 (
 
 
) Resp.: 27.897856 
2. Calcule o resto da divisão inteira de 25 por 7. Resp.: 4 
3. Calcule o resto da divisão inteira de 11 por 2. Resp.: 1 
4. Forneça a expressão para arredondar o número 9.75 para o inteiro mais próximo. 
5. Forneça a expressão para arredondar o número 9.75 para 9. 
 13 
 
Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado 
 
Capítulo 2 
Introdução a Algoritmos 
Os programas de computador podem ser desenvolvidos para solucionar problemas de 
diversas áreas do conhecimento. Durante o desenvolvimento desses programas, é sempre 
desejável a busca por soluções eficientes, que possam ser executadas pelo computador de 
forma a atender os requisitos do problema e ao mesmo tempo minimizar o uso de recursos, 
como o processador e a memória da máquina. Neste contexto, é comum a busca pelas 
soluções que envolvam os melhores algoritmos. 
Embora não exista uma definição formal universalmente aceita para algoritmo, o termo pode 
ser definido informalmente como uma sequência de instruções que levam à solução de um 
dado problema. Por exemplo, uma simples sequência de passos que descreve o processo de 
preparação de um sanduíche pode ser vista como um algoritmo, pois tais passos 
correspondem às instruções que devem ser seguidas para que o problema “fazer o 
sanduíche” seja resolvido. No mundo real, muitos problemas de engenharia e de 
computação são resolvidos desenvolvendo-se, inicialmente, um ou um conjunto de 
algoritmos que solucionam o problema em questão. Posteriormente, tais algoritmos são 
implementados em software utilizando-se uma linguagem de programação, como C++, C# 
ou Java. 
Conforme verificado por Donald Knuth, um algoritmo deve ter cinco 
propriedades/capacidades: 
1) Finitude. Um algoritmo deve sempre terminar após um número finito de instruções. 
2) Clareza. Cada passo do algoritmo deve ser especificado com clareza, precisão e sem 
ambiguidade. 
3) Entrada. Um algoritmo geralmente possui um ou mais elementos de entrada, que 
devem ser fornecidos para a execução adequada das instruções. 
4) Saída. Um algoritmo produz um ou mais elementos de saída (ou resultado). 
 14 
 
Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado 
 
5) Eficácia. Um algoritmo deve ser eficaz. Todas as suas instruções devem ser passíveis 
de execução em tempo finito. 
Um algoritmo pode ser especificado de três formas principais, que são: (1) descrição 
narrativa, (2) fluxograma e (3) linguagem algorítmica (pseudocódigo). Cada uma dessas 
formas apresenta suas próprias vantagens e desvantagens e a escolha adequada pode 
depender do tipo e da complexidade do problema a ser resolvido. Nesta capítulo, 
apresentamos brevemente as formas (1) e (2). 
2.1 Algoritmo como uma Descrição Narrativa 
Quando um algoritmo é especificado na forma de uma descrição narrativa, utiliza-se a 
linguagem natural (o próprio português) para descrever os seus passos. 
Exemplo 1. Considere o problema “preparar um misto quente”. A sequência de passos a 
seguir constitui um algoritmo em descrição narrativa que o soluciona: 
1) Preparar os ingredientes: manteiga, duas fatias de pão, uma de queijo e uma de 
presunto; 
2) Passar a manteiga em ambas as fatias de pão; 
3) Colocar o presunto sobre uma fatia de pão e o queijo sobre a outra; 
4) Juntar as duas fatias, fechando o sanduíche; 
5)Colocar o sanduíche em uma sanduicheira e aguardar até o pão tostar; 
6) Retirar o sanduíche da sanduicheira. 
Repare que o algoritmo é composto por um conjunto finito de passos e tem um início e um 
fim. Os elementos de entrada são os ingredientes (manteiga, pão, queijo e presunto) e a saída 
é o sanduíche pronto. Os passos são claros e passíveis de realização. 
Exemplo 2. Considere o problema “Dadas as dimensões (em metros) de uma piscina 
retangular, calcule a sua capacidade em litros de água”. Um algoritmo que o soluciona é: 
1) Receber as três dimensões da piscina: largura, comprimento e profundidade; 
2) Calcular o volume da piscina, em metros cúbicos, multiplicando: largura x 
comprimento x profundidade; 
3) Calcular o volume da piscina em litros, multiplicando o volume em m3 por 1000; 
4) Apresentar o volume em litros. 
Exemplo 3. Considere o seguinte problema: 
“Dadas as três notas de um aluno correspondentes a três provas semestrais, calcular a sua nota final 
(somatório das três notas) e apresentar a sua situação, que pode ser: APROVADO, caso a nota final 
seja maior ou igual a 70; ou REPROVADO, caso a nota final seja inferior a 70.” 
A sequência de passos a seguir constitui um algoritmo que o soluciona: 
 15 
 
Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado 
 
1) Receber as três notas do aluno; 
2) Calcular a nota final do aluno somando as três notas recebidas; 
3) Verificar se a nota final é maior ou igual a 70; 
4) Caso a nota final seja maior ou igual a 70, apresentar a mensagem APROVADO; 
5) Caso contrário (ou seja, nota final menor que 70), apresentar a mensagem 
REPROVADO. 
As principais vantagens e desvantagens de um algoritmo em descrição narrativa são: 
Vantagem 
 Utiliza a linguagem natural, já conhecida. 
Desvantagens 
 Impreciso, 
 Possível ambiguidade, 
 Extenso. 
2.2 Algoritmo em Fluxograma 
Um algoritmo também pode ser especificado por meio de um diagrama. Neste caso, vários 
símbolos gráficos são utilizados para a sua composição: 
Nome Símbolo Significado 
Oval (início/fim) 
 
Indica o início ou o fim do algoritmo. 
Retângulo (processo) 
 
Indica um processo ou operação do 
algoritmo. 
Losango (decisão) 
 
Indica que uma decisão deve ser tomada e 
que a execução deve seguir por uma de duas 
possíveis direções. 
Paralelograma 
(entrada/saída) 
Indica uma operação de entrada ou saída. 
Círculo (conector) Utilizado como ponto de junção de dois ou 
mais ramos de execução. 
Seta Indica a direção do fluxo de operações. 
O algoritmo do Exemplo 1 apresentado anteriormente pode ser especificado, em fluxograma, 
da seguinte forma: 
 16 
 
Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado 
 
 
O algoritmo do Exemplo 2, já apresentado em descrição narrativa, pode ser especificado em 
fluxograma da seguinte forma: 
 
Início 
 Fim 
Entrada: comprimento, largura e 
profundidade da piscina 
VolumeM3 comprimento * largura * profundidade 
VolumeL VolumeM3 * 1000 
 
Saída: VolumeL 
Início 
 Fim 
Entrada: manteiga, 2 fatias de pão, 1 
fatia de queijo e 1 de presunto 
Passar a manteiga em ambas as fatias de pão 
Colocar o presunto sobre uma fatia de pão e o queijo sobre a outra 
Juntar as duas fatias, fechando o sanduíche 
Colocar o sanduíche em uma sanduicheira e aguardar até o pão tostar 
Retirar o sanduíche da sanduicheira 
Saída: sanduíche pronto 
 17 
 
Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado 
 
No fluxograma anterior, a etapa “Entrada: comprimento, largura, profundidade” é utilizada 
para expressar o fato de, nesse momento, as três dimensões da piscina precisam ser 
fornecidas, de alguma forma, para que a execução do algoritmo possa prosseguir. A partir 
desse passo, as três medidas de dimensões serão representadas pelos termos comprimento, 
largura e profundidade. 
Ao invés de “Entrada: comprimento, largura, profundidade”, também é comum o uso da 
expressão “LEIA comprimento, largura, profundidade”, a qual mantém o mesmo significado. 
Observe o passo: 
 
A seta para a esquerda () é empregada para indicar que, a partir desse ponto no algoritmo, 
o termo VolumeM3 representará o resultado da expressão comprimento * largura * profundidade. 
Esse termo é utilizado no passo seguinte, onde o volume em litros é calculado a partir do 
volume em metros cúbicos: 
 
2.2.1 Estrutura Condicional em Fluxograma 
Um algoritmo em fluxograma correspondente ao Exemplo 3 (problema para determinar a 
situação final de um aluno) é apresentado a seguir. Neste caso, utilizamos o símbolo 
condicional losango ( ). Este símbolo deve ser empregado quando uma decisão precisa 
ser tomada com base na análise de uma condição. No exemplo citado, o losango indica que a 
condição “NotaFinal ≥ 70?” deve ser avaliada. Caso ela seja verdadeira, então a execução do 
algoritmo deve seguir pelo ramo indicado pela seta “SIM”. Caso contrário (condição falsa), 
então a execução deve seguir pelo ramo indicado pela seta “NÃO”. 
VolumeM3 comprimento * largura * profundidade 
 
VolumeL  VolumeM3 * 1000 
 
 18 
 
Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado 
 
 
Exemplo 4. Desenvolver um algoritmo, em fluxograma, para calcular e apresentar as raízes 
de uma equação do segundo grau (ax2 + bx + c = 0). O algoritmo deve receber os três 
coeficientes da equação, a, b e c, e apresentar mensagens adequadas de acordo com as 
possíveis raízes. 
 
 Fim 
Mostrar mensagem 
“Raízes distintas:”, x1, x2 
Início 
LEIA a, b, c 
D  b2 – 4 · a · c 
 D > 0? 
 SIM 
NÃO 
 D = 0? 
SIM 
NÃO 
x1  (-b + √ ) / (2· a) 
x2  (-b - √ ) / (2· a) x  (-b) / (2· a) 
Mostrar mensagem 
“Raízes iguais:”, x 
Mostrar mensagem 
“Não há raízes reais” 
Início 
 Fim 
Entrada: nota1, nota2, nota3 
NotaFinal  nota1 + nota2 + nota3 
NotaFinal ≥ 70? Mostrar “Aprovado” 
Mostrar “Reprovado” 
SIM 
NÃO 
 19 
 
Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado 
 
Capítulo 3 
Entrada e Saída utilizando o SciNotes 
Todas as operações e funções apresentadas no Capítulo 1 foram executadas utilizando o 
console do Scilab. Em geral, o console é utilizado quando se deseja executar sequências de 
operações não muito complexas ou extensas, ou quando se deseja obter um resultado 
imediato dessas operações. Entretanto, há situações em que é necessário executar uma série 
de operações envolvendo testes lógicos, repetições de cálculos e interações com o usuário. 
Nesses casos, pode ser necessário o desenvolvimento de um programa propriamente dito, 
que poderá ser salvo em um arquivo e executado quando necessário. No Scilab, tais 
programas (ou scripts) podem ser feitos utilizando o seu próprio editor de textos, o SciNotes. 
Para abrir o SciNotes, clique na janela do console e depois no ícone (ver Figura 3.1). 
 
Figura 3.1 – Abrindo o editor SciNotes 
 20 
 
Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado 
 
 
Figura 3.2 - Editor SciNotes 
Assim que o SciNotes é aberto, pode-se escrever a sequência de comandos correspondente ao 
programa e executá-lo (basta clicar no ícone ou pressionar a tecla F5). 
3.1 Funções input e disp 
Antes de apresentar um primeiro programa como exemplo, é importante descrever duas 
funções básicas que são utilizadas com frequência no SciNotes: 
 input – realiza uma operação de entrada de dados. Possibilita que um dado seja 
solicitado ao usuário do programa (para que seja processado). 
 disp – realiza uma operação de saída de dados. Permite exibir mensagens de texto na 
tela ou valores de variáveis (geralmente os resultados obtidos). 
O programa a seguir solicita ao usuário a medida do lado de um quadrado e então calcula e 
apresenta a sua área. Para testá-lo, copie os comandos para o editor SciNotes, salve o arquivo 
e clique em executar . Em seguida, ative a janela do console do Scilab para acompanhar a 
sua execução. Forneça um valor qualquer e pressioneENTER. 
Exemplo 1a. Programa para calcular a área de um quadrado. 
lado = input("Informe a medida do lado de um quadrado: "); 
area = lado * lado; 
disp("A área do quadrado é: "); 
disp(area); 
 21 
 
Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado 
 
Os comandos que compõem um programa feito no SciNotes serão executados pelo 
computador sequencialmente, na ordem de suas linhas. Por exemplo, quando o programa 
anterior for executado, o computador começará processando a expressão: 
lado = input("Informe a medida do lado de um quadrado: "); 
Tal expressão é responsável pela operação de entrada de dados que solicita a medida do lado 
do quadrado ao usuário. Essa operação envolve três ações básicas: 
1. Exibe a mensagem “Informe a medida do lado de um quadrado” na tela; 
2. Aguarda até que o usuário informe um dado e pressione a tecla ENTER; 
3. Armazena o dado informado pelo usuário na variável lado. 
Quando o usuário pressionar ENTER, o computador prosseguirá com a execução do 
programa. A segunda linha é responsável pelo cálculo da área em si, cujo resultado é 
armazenado na variável area. As duas últimas linhas foram utilizadas para a apresentação 
do resultado obtido (operação de saída). Na terceira linha, a função disp tem o papel de 
exibir a mensagem “A área do quadrado é:”. Em seguida, ela é utilizada para apresentar o 
conteúdo da variável area. 
3.2 Função printf 
No programa do Exemplo 1a, poderíamos ter utilizado a função printf ao invés da função 
disp. Vejo o exemplo: 
Exemplo 1b. Utilizando a função printf. 
lado = input("Informe a medida do lado de um quadrado: "); 
area = lado * lado; 
printf("A área do quadrado é: %f", area); 
A diferença é que, com a função printf, podemos apresentar a mensagem de texto juntamente 
com o valor da variável, de maneira formatada e utilizando um único comando. O termo %f 
foi utilizado para que o valor da variável area pudesse ser adicionado à mensagem. 
Poderíamos apresentar ao usuário uma mensagem de resultado um pouco mais elaborada, 
incluindo, por exemplo, a medida do lado do quadrado para o qual a área foi calculada. 
Execute o programa a seguir e observe a alteração. 
Exemplo 1c. 
lado = input("Informe a medida do lado de um quadrado: "); 
area = lado * lado; 
printf("A área do quadrado de lado %f é %f", lado, area); 
Observe que, neste caso, foi necessário colocar o termo %f em dois locais da mensagem, 
exatamente onde se deseja inserir os valores das variáveis. Entretanto, as variáveis em si 
devem ser especificadas após o fechamento das aspas, na ordem adequada. Para cada %f 
 22 
 
Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado 
 
inserido na mensagem de texto, é necessário especificar uma variável ou expressão que o 
substituirá na mensagem final: 
printf("A área do quadrado de lado %f é %f", lado, area); 
Além de %f, outras formas comuns são: 
 %d – utilizado quando a variável ou expressão resulta em um número inteiro (ou 
quando se deseja apresentar apenas a parte inteira de um número com casas 
decimais) 
 %.2f – o número será apresentado com duas casas decimais (ao invés de seis casas, 
quantidade padrão quando se utilizada apenas %f). 
Exemplo 2a. Programa que solicita ao usuário as medidas de uma sala retangular, em 
metros, e calcula e apresenta a sua área, em metros quadrados. 
l = input("Informe a largura da sala, em metros: "); 
c = input("Informe o comprimento da sala, em metros: "); 
a = l * c; 
printf("A área da sala de largura %.2f e comprimento %.2f é %.2f m2", l, c, a); 
Exemplo 3. Programa que solicita ao usuário as medidas de uma piscina retangular, em 
metros, e calcula e apresenta a sua capacidade, em litros. 
l = input("Informe a largura da piscina, em metros: "); 
c = input("Informe o comprimento da piscina, em metros: "); 
p = input("Informe a profundidade da piscina, em metros: "); 
v = l * c * p * 1000; 
printf("A capacidade da pisc. de dimensões %.2f x %.2f x %.2f é %.2f L.", l,c,p,v); 
3.3 Comentários 
Comentários são utilizados para documentar o programa, pois eles não são avaliados pelo 
computador durante a sua execução. No Scilab, todo o texto que é colocado à frente de “//” 
é tido como um comentário de linha. O programa a seguir desempenha a mesma função 
daquele do Exemplo 2a, mas com a diferença de possuir alguns comentários que o descreve. 
Exemplo 2b. 
// Programa que solicita ao usuário as medidas de uma sala retangular, 
// em metros, e calcula e apresenta a sua área, em metros quadrados. 
l = input("Informe a largura da sala, em metros: "); 
c = input("Informe o comprimento da sala, em metros: "); 
a = l * c; // faz o cálculo da área 
printf("A área da sala de largura %.2f e comprimento %.2f é %.2f m2", l, c, a); 
 
 23 
 
Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado 
 
Exercícios Propostos 
Resolva os exercícios a seguir utilizando o editor SciNotes do Scilab. 
1. Faça um programa que receba do usuário uma medida de temperatura, em Fahrenheit, e 
converta para graus Celsius. Utilize a fórmula 
 
 
. 
2. Faça um programa que receba do usuário as medidas da base e da altura de um triângulo 
retângulo e calcule e apresente a sua área. 
3. Faça um programa que receba do usuário a medida do raio de um círculo e calcule e 
apresente a sua área. 
4. Faça um programa que receba do usuário o diâmetro e a profundidade (em metros) de 
uma piscina redonda. O programa deve calcular e apresentar o volume da piscina em 
metros cúbicos e em litros ( , onde 
 e 
 ). 
5. Faça um programa que receba do usuário a largura, o comprimento e a profundidade de 
uma piscina retangular (em metros) e calcule e apresente a quantidade total de azulejos 
(em m2) necessária para cobrir a superfície interna da piscina. 
 24 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
Capítulo 4 
Estrutura Condicional if-then-else 
A estrutura condicional if-then-else (if = se; then = então; else = senão) é utilizada quando se 
deseja executar um bloco de operações ou outro, dependendo de uma condição ser 
verdadeira ou falsa, respectivamente. A sua forma geral no Scilab é ilustrada a seguir: 
if (cond) then 
 Comando C1; 
 Comando C2; 
 ⁞ 
Comando Cn; 
else 
 Comando D1; 
Comando D2; 
 ⁞ 
Comando Dm; 
end 
Os termos C1, C2, ..., Cn e D1, D2, ..., Dm no código acima representam comandos quaisquer, 
como uma operação de soma ou um cálculo de raiz quadrada e o termo cond representa uma 
condição lógica qualquer, como raio > 0. A estrutura if-then-else indica que os comandos C1, 
C2, ..., Cn devem ser executados pelo computador apenas quando a condição cond for 
verdadeira e que os comandos D1, D2, ..., Dm devem ser executados apenas quando a 
condição cond for falsa. 
E outras palavras, ao executar um programa contendo o código anterior, o computador irá 
verificar se a condição cond é verdadeira ou falsa. Se cond for verdadeira então (then) o 
computador partirá para a execução do primeiro bloco de comandos (C1, C2, ..., Cn – os 
comandos que antecedem a palavra else). Mas se cond for falsa, o computador executará apenas o 
segundo bloco de comandos (D1, D2, ..., Dm − os comandos que estão entre a palavra else 
e a palavra end (fim)). 
 25 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
Exemplo 1. Deseja-se elaborar um programa que receba do usuário a medida do lado de uma 
sala quadrada e calcule e apresente a sua área. Entretanto, o programa deve calcular a área da 
sala apenas quando o valor informado pelo usuário for maior do que zero, pois não há sala com lado 
negativo ou nulo. Caso o usuário informe um valor inválido (negativo ou zero), o programa 
deve apenas apresentar uma mensagem notificando o fato. 
lado = input("Informe a medida do lado da sala: "); 
if (lado > 0) then 
 area= lado * lado; 
 printf("A area da sala é %f", area); 
else 
 printf("O valor informado é inválido! "); 
end 
Execute o programa anterior pelo menos duas vezes. Na primeira execução, informe um 
valor positivo e verá a área calculada. Da segunda vez, informe um valor negativo (ou zero), 
e receberá apenas uma mensagem notificando a medida incorreta. 
Ao ser executado, o programa inicialmente solicita a medida ao usuário (linha 1). Assim que 
o usuário digita o valor e pressiona a tecla ENTER, o computador armazena esse dado na 
variável lado. Na sequência, o computador testará a condição lado > 0. Se o usuário digitou 
um valor positivo, tal condição será verdadeira. Assim, os comandos: 
 area = lado * lado; (faz o cálculo da área e armazena na var. area) 
 printf("A area da sala é %f", area); (mostra na tela o resultado) 
serão executados e o programa será encerrado. Por outro lado, se o usuário informar um 
valor negativo, então os dois comandos do bloco then NÃO serão executados, mas sim o 
único comando do bloco else-end (pois a condição lado > 0 passa a ser falsa). 
Exemplo 2. Programa que recebe do usuário dois números quaisquer e em seguida verifica 
se os números fornecidos são iguais ou não. 
n1 = input("Informe o primeiro número: "); 
n2 = input("Informe o segundo número: "); 
if (n1 == n2) then 
 printf("Os números fornecidos são iguais"); 
else 
 printf("Os números fornecidos são diferentes"); 
end 
Observe que foi utilizado o operador relacional de igualdade do Scilab (“==”) para verificar 
se os valores das variáveis n1 e n2 são iguais. Diferente do operador de atribuição (que tem 
um único “=”), dois iguais são utilizados para fins de comparação. 
 26 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
4.1 Estrutura Condicional Simples 
O bloco else da estrutura if não é obrigatório. Há situações em que é necessário executar uma 
série de comandos caso uma condição seja verdadeira, mas que não é necessário executar 
nada em especial caso essa condição seja falsa. Considere, por exemplo, que seja preciso 
calcular a área de um quadrado quando o lado informado pelo usuário for válido, mas que 
não seja necessário apresentar nenhuma mensagem caso o usuário digite um valor inválido. 
Isto é feito no código a seguir. Neste caso, não colocamos o bloco else. 
lado = input("Informe a medida do lado da sala: "); 
if (lado > 0) then 
 area = lado * lado; 
 printf("A area da sala é %f", area); 
end 
4.2 Estrutura Condicional Aninhada 
É possível utilizar a estrutura condicional if dentro de outra, tanto no bloco then quando no 
bloco else. Uma vez iniciado outro if, bastar seguir as mesmas regras descritas anteriormente. 
Exemplo 3. Deseja-se elaborar um programa para calcular as raízes reais de uma equação do 
2º grau, caso elas existam. O programa deve solicitar ao usuário os coeficientes a, b e c que 
definem a equação ( . 
Neste exemplo, há três possibilidades para se tratar: 
1. A equação pode ter duas raízes distintas; 
2. A equação pode ter duas raízes iguais (uma raiz distinta); 
3. A equação pode não ter raízes reais 
Portanto, será necessário o emprego de duas estruturas condicionais: 
a = input("Informe o coeficiente a da equação: "); 
b = input("Informe o coeficiente b da equação: "); 
c = input("Informe o coeficiente c da equação: "); 
delta = b^2 – 4*a*c; 
if (delta > 0) then 
 // Neste caso, há duas raízes que precisam ser calculadas 
 x1 = (-b + sqrt(delta))/(2*a); 
 x2 = (-b - sqrt(delta))/(2*a); 
 printf("As raízes da equação são %.2f e %.2f", x1, x2); 
else 
if (delta == 0) then 
 // Neste caso, há apenas uma raiz distinta 
 x = (-b)/(2*a); 
 printf("Duas raízes iguais: %.2f", x); 
else 
 printf("Não existem raízes reais!"); 
end 
end 
 27 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
O programa apresentado solicita os três coeficientes ao usuário e em seguida calcula o valor 
do discriminante ( , que é armazenado na variável delta. Na sequência, a primeira 
estrutura if verifica se a condição delta > 0 é verdadeira. Caso seja, então as duas raízes são 
calculadas e o resultado é apresentado. Caso contrário (else), tem-se ainda duas 
possibilidades (delta = 0 ou delta < 0) e para trata-las utilizou-se o segundo if. 
É importante observar que as condições tratadas no programa anterior poderiam ter sido 
verificadas em uma ordem diferente, desde que a sequência lógica das operações se 
mantivesse correta. O código a seguir ilustra outra possibilidade: 
a = input("Informe o coeficiente a da equação: "); 
b = input("Informe o coeficiente b da equação: "); 
c = input("Informe o coeficiente c da equação: "); 
delta = b^2 – 4*a*c; 
if (delta < 0) then 
 // Neste caso, não há raízes reais 
printf("Não existem raízes reais!"); 
else 
if (delta == 0) then 
 // Neste caso, há apenas uma raiz distinta 
 x = (-b)/(2*a); 
 printf("Duas raízes iguais: %.2f", x); 
else 
 // Neste caso, temos duas raízes distintas 
 x1 = (-b + sqrt(delta))/(2*a); 
 x2 = (-b - sqrt(delta))/(2*a); 
 printf("As raízes da equação são %.2f e %.2f", x1, x2); 
end 
end 
Exemplo 4. Deseja-se elaborar um programa que receba do usuário a altura e o sexo de uma 
pessoa e calcule e apresente o seu peso ideal. As seguintes fórmulas devem ser utilizadas 
(onde h é a altura em metros): 
 Para homens: peso ideal = (72.7 * h) – 58 
 Para mulheres: peso ideal = (62.1 * h) – 44.7 
Para indicar o sexo masculino, o usuário deverá informar o número 1. Para indicar o 
feminino, o usuário deverá informar o número 2. Caso um valor diferente de 1 e 2 seja 
fornecido, então o programa deverá apresentar uma mensagem notificando o dado inválido. 
O programa também deverá verificar se a altura informada pelo usuário é válida (maior do 
que zero). 
 
 
 
 
 28 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
Solução: 
clc; 
h = input("Informe a altura da pessoa, em metros: "); 
if (h > 0) then 
sexo = input("Informe 1 para masculino ou 2 para feminino: "); 
if (sexo == 1) then 
 pesoIdealM = (72.7 * h) – 58; 
 printf("O peso ideal é: %.2f", pesoIdealM); 
else 
 if (sexo == 2) then 
 pesoIdealF = (62.1 * h) – 44.7; 
 printf("O peso ideal é: %.2f", pesoIdealF); 
 else 
 printf("Valor inválido para o sexo!"); 
 end 
end 
else 
printf("Altura inválida!"); 
end 
4.3 Operadores Relacionais 
O Scilab disponibiliza ao usuário um conjunto de operadores relacionais, que inclui os já 
utilizados == e >. Esses operadores são ilustrados na Erro! Fonte de referência não encontrada.. 
Operador Significado 
== Igual a 
~= Diferente de 
> Maior que 
>= Maior ou igual a 
< Menor que 
<= Menor ou igual a 
Tabela 4.1 - Operadores relacionais do Scilab 
4.4 Operadores Lógicos 
Em todos os exemplos anteriores, na estrutura condicional if, utilizou-se uma expressão 
lógica simples (if delta > 0, if n1 == n2, etc.). Entretanto, os operadores lógicos do Scilab 
podem ser utilizados para a formação de expressões lógicas mais complexas (que envolvem, 
por exemplo, duas ou mais condições). Tais operadores são apresentados na Tabela 4.2. 
 
 
 
 29 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
Operador Lógico Significado Exemplo Significado 
& “e” lógico if (a > 0 & a < 10)... Verifica se o valor da variável a é 
maior que 0 e menor que 10. 
| “ou” lógico if (a == 0 | b == 0) ... Verifica se alguma das variáveis 
(a ou b) tem valor igual a zero. 
~ Negação if ~(a < 0) ... Verifica se o valor da variável a 
NÃO é menor que zero. Isto é 
equivalente à condição a >= 0 
Tabela 4.2 - Operadores lógicos do Scilab 
A B A & B A | B ~A 
V V V V F 
V F F V F 
F V F V V 
F F F F V 
Tabela 4.3 - Tabela verdade dos operadores lógicos 
Exercícios Propostos 
1) Faça um programa para calcular a situação finalde um aluno com base nas suas três 
notas semestrais. O programa deve solicitar as três notas, soma-las e informar se o aluno 
está aprovado (quando a soma das notas é maior ou igual a 70) ou reprovado (soma das 
inferior a 70). 
2) Faça um programa que receba do usuário dois números e apresente o menor deles. 
3) Faça um programa que receba do usuário dois números e em seguida apresente esses 
números na ordem crescente. 
4) Analise os programas a seguir (sem executá-los no computador) e informe qual seria a 
sua saída caso fossem executados. 
a) a = 2; b = 3; c = 1; 
if (a > b) then 
 printf("%d",a); 
else 
 if (b > c) then 
 printf("%d",b); 
 else 
 printf("%d",c); 
 end 
end 
b) a = 10; b = 20; c = 10; 
if (a == b | a == c) then 
 printf("%d",a); 
else 
 printf("%d",b); 
end 
 30 
 
Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado 
 
c) a = 10; b = 10; c = 20; 
if (a == b & a == c) then 
 printf("%d",a); 
else 
 printf("%d",c); 
end 
d) a = 1; b = 2; c = 3; 
if (a < b & b > c) then 
 printf("%d",a); 
 printf("%d",b); 
else 
 if (b < c) then 
 d = b + c; 
 printf("%d",d); 
 else 
 printf("%d",c); 
 end 
 printf("%d",a); 
end 
e = a + b + c; 
printf("%d",e); 
 
 
 
 
 31 
 
Operações com Vetores Prof. Dr. Daniel A. Furtado 
Capítulo 5 
Operações com Vetores 
No Scilab, os vetores (arrays) são utilizados para armazenar uma lista de elementos, como 
números ou caracteres, os quais podem ser acessados por meio de um índice. Um vetor pode 
ser do tipo linha ou do tipo coluna e pode ser definido por meio dos caracteres [ e ]. No caso 
de um vetor linha, os elementos devem ser separados por vírgula ou espaço. Já um vetor 
coluna deve ter os elementos separados por ponto-e-vírgula. 
Exemplos: 
-->a = [1 2 3 4] (define um vetor linha de nome a contendo 4 elementos) 
a = 
1. 2. 3. 4. 
___________________________________________________________________________________ 
-->b = [10, 20, 30] (define um vetor linha de nome b contendo 3 elementos) 
b = 
10. 20. 30. 
___________________________________________________________________________________ 
-->v1 = [5; 8; 1] (define um vetor coluna de nome v1 contendo 3 elementos) 
v1 = 
5. 
8. 
1. 
5.1 Acessando os Elementos de um Vetor 
Os elementos de um vetor linha ou coluna podem ser acessados individualmente por meio 
de um índice. Deve-se colocar o nome do vetor seguido da posição do elemento entre 
parênteses. 
Exemplos: 
-->a = [7, 4, 12, 9] (define um vetor) 
 
a = 
7. 4. 12. 9. 
 32 
 
Operações com Vetores Prof. Dr. Daniel A. Furtado 
-->a(3) (acessa o terceiro elemento do vetor) 
ans = 
 12. 
___________________________________________________________________________________ 
-->a(1) (acessa o primeiro elemento do vetor) 
ans = 
 7. 
5.2 Modificando um Vetor 
Também é possível modificar os elementos de um vetor, adicionar novos elementos ou até 
mesmo excluí-los. 
Exemplos: 
-->a = [6 4 8 3] (define um vetor linha de nome a contendo 4 elementos) 
a = 
6. 4. 8. 3. 
___________________________________________________________________________________ 
-->a(4) = 15 (altera o quarto elemento do vetor a para o valor 15) 
a = 
 6. 4. 8. 15. 
___________________________________________________________________________________ 
-->a(1) = a(1) + 2 (adiciona 2 ao primeiro elemento do vetor a) 
a = 
 8. 4. 8. 15. 
___________________________________________________________________________________ 
-->a = [a, 17] (adiciona o elemento 17 no final do vetor a) 
a = 
 8. 4. 8. 15. 17. 
___________________________________________________________________________________ 
-->a = [13, a] (adiciona o elemento 13 no início do vetor a) 
a = 
 13. 8. 4. 8. 15. 17. 
___________________________________________________________________________________ 
-->a(7) = 6 (adiciona o elemento 6 no final do vetor a (outra forma)) 
a = 
 13. 8. 4. 8. 15. 17. 6. 
___________________________________________________________________________________ 
-->a(3) = [] (apaga o terceiro elemento do vetor a) 
a = 
 13. 8. 8. 15. 17. 6. 
5.3 Utilizando o Operador “:” para Definir Vetores 
Vetores com elementos sequenciais podem ser definidos por meio do operador “:” (dois 
pontos). Neste caso, deve-se especificar o incremento ou o decremento desejado para que os 
elementos do vetor sejam calculados automaticamente. Sua forma geral é: 
[inicio : incremento (ou decremento) : valor limite ] 
 33 
 
Operações com Vetores Prof. Dr. Daniel A. Furtado 
 
Exemplos: 
-->a = [0:2:10] (cria um vetor a partir de zero, de dois em dois, até 10) 
a = 
0. 2. 4. 6. 8. 10. 
___________________________________________________________________________________ 
-->b = [1:5:28] (a partir de um, de cinco em cinco, limitado por 28) 
b = 
1. 6. 11. 16. 21. 26. 
___________________________________________________________________________________ 
-->c = [-1:0.2:1] (a partir de -1, com espaçamento de 0.2, até 1) 
c = 
 - 1. -0.8 -0.6 -0.4 -0.2 0. 0.2 0.4 0.6 0.8 1. 
___________________________________________________________________________________ 
-->d = [5:-1:1] (de 5, com decremento de -1, até 1) 
b = 
5. 4. 3. 2. 1. 
Entretanto, o incremento pode ser omitido quando se deseja o valor 1. Exemplos: 
-->a = [2:6] (a partir de 2, de um em um, até 6) 
a = 
2. 3. 4. 5. 6. 
___________________________________________________________________________________ 
-->b = [-2:2] (a partir de -2, de um em um, até 2) 
b = 
 -2. -1. 0. 1. 2. 
5.4 Utilizando a Função linspace 
A função linspace do Scilab pode ser utilizada para definir vetores contendo um número 
específico de elementos igualmente espaçados dentro de um intervalo. Neste caso, não é 
necessário saber o incremento (ou decremento), pois o mesmo será calculado 
automaticamente. Sua forma geral é: 
linspace(início, fim, número_de_elementos) 
Exemplos: 
-->x1=linspace(1, 3, 5) (vetor com 5 elementos igualmente espaçados de 1 a 3) 
x1 = 
1. 1.5 2. 2.5 3. 
___________________________________________________________________________________ 
-->x2=linspace(-5, 5, 30) (vetor de 30 elementos igualmente espaçados de -5 a 5) 
x2 = 
 -5. -4.6 -4.3 -3.9 -3.6 ... 3.9 4.3 4.6 5. 
___________________________________________________________________________________ 
-->x3=linspace(-%pi, %pi, 40) (vetor com 40 elementos espaçados de - a ) 
x3 = 
-3.14 -2.98 ... 2.98 3.14 
 34 
 
Operações com Vetores Prof. Dr. Daniel A. Furtado 
5.5 Operações com Vetores 
Os operados matemáticos e diversas funções do Scilab também podem ser aplicados a 
vetores. O resultado das operações dependerá do contexto empregado. 
OBS: Para os casos de operações de potenciação, multiplicação e divisão por escalares, 
recomenda-se adicionar o ponto antes do operador (.^, .*, ./). Isto deixa claro para o Scilab 
que a operação deve ser executada para cada elemento do vetor. 
Exemplos: 
 -->a = [1 2 3 4] (define um vetor de nome a) 
a = 
1. 2. 3. 4. 
-->b = 2.*a (cada elemento do vetor b terá o dobro do respectivo elemento de a) 
b = 
 2. 4. 6. 8 
-->c = a + b (os respectivos elementos são somados para a composição do vetor c) 
c = 
 3. 6. 9. 12. 
-->d = 2.*a + 1 (cada elemento do vetor a é multiplicado por dois e somado com 1) 
d = 
 3. 5. 7. 9. 
__________________________________________________________________________________ 
-->x = [-3:3] 
x = 
 -3. -2. -1. 0. 1. 2. 3. 
-->y = x.^2 
y = 
 9. 4. 1. 0. 1. 4. 9. 
___________________________________________________________________________________ 
-->x = [-%pi/2, 0, %pi/2] 
x = 
 -1.57 0 1.57 
-->y = sin(x) (a função seno será aplicada a cada valor de x) 
y = 
 -1 0 1 
5.6 Outras Funções Aplicadas a Vetores 
O Scilab disponibiliza um conjunto defunções que podem ser aplicadas a vetores. Algumas 
dessas funções são: 
 length – retorna o número de elementos de um vetor. 
 sum – calcula o somatório dos elementos de um vetor. 
 prod – calcula o produto dos elementos de um vetor. 
 norm – calcula a norma de um vetor. 
 
 35 
 
Operações com Vetores Prof. Dr. Daniel A. Furtado 
 
Exercícios Propostos 
1. Defina um vetor linha de nome para conter os valores 3, 8, 1, 5, 2. 
2. Aplique a função matemática a todos os elementos do vetor x definido 
anteriormente e armazene o resultado em um vetor y1. 
3. Aplique a função a todos os elementos de x e armazene o resultado em 
um vetor y2. 
4. Defina um vetor coluna de nome x2 contendo os elementos 1, 10, 100, 1000. 
5. Aplique a função aos elementos de x2 e armazene o resultado no vetor y2. 
6. Defina um vetor de nome v1 contendo os números inteiros no intervalo [5, 100]. 
7. Defina um vetor de nome v2 contendo a sequência de números 1, 4, 7, 10, 13, ..., 97. 
Utilize os recursos adequados. 
8. Defina um vetor de nome v3 contendo a sequência de números 90, 84, 78, 72, ..., 12. 
Utilize os recursos adequados. 
9. Defina um vetor de nome v4 contendo números de – a espaçados de 0.15. 
10. Defina um vetor de nome v5 contendo 80 números igualmente espaçados no intervalo 
[ ]. Utilize os recursos adequados. 
 
 
 
 36 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
Capítulo 6 
Construção de Gráficos 
O Scilab disponibiliza uma série de recursos que possibilitam a construção de diversos tipos 
de gráficos, incluindo gráficos de funções matemáticas, gráficos de barras e gráficos do tipo 
pizza. Este capítulo faz uma breve introdução a alguns desses recursos. 
6.1 Gráficos de Funções 
Gráficos de funções de uma variável podem ser construídos no Scilab por meio da função 
plot. Os valores das abcissas (x) e os valores das ordenadas (y) a serem utilizados no gráfico 
podem ser especificados em vetores. Por exemplo, o gráfico da função para os 
valores de apresentados na tabela a seguir, pode ser construído pela sequência de 
comandos do Exemplo 1. 
 p1 p2 p3 p4 p5 p6 p7 
 -3 -2 -1 0 1 2 3 
 9 4 1 0 1 4 9 
Exemplo 1. Construção de um gráfico pela especificação de uma série de pares ordenados. 
x = [-3, -2, -1, 0, 1, 2, 3]; 
y = [9, 4, 1, 0, 1, 4, 9]; 
plot(x, y); 
Ao executar tal sequência de comandos, seja no console ou no SciNotes, é criada uma janela 
gráfica, conforme ilustrado na Figura 6.1. A função plot pressupõe que os elementos das 
respectivas posições dos dois vetores constituem os pares ordenados, os quais são 
interligados por uma linha. 
Antes de executar novamente o comando plot, pode ser necessário limpar a janela gráfica 
para evitar que os gráficos se sobreponham. Isto pode ser feito com o comando clf (de clear 
figure). A janela gráfica pode ser fechada pelo comando close. 
 37 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
 
Figura 6.1 – Gráfico da função construído com a função plot do Scilab. Foram considerados 
7 pontos no intervalo [-3, 3]. 
Uma maneira mais prática de construir o gráfico de uma função é utilizar os recursos do 
Scilab de definição e manipulação de vetores, ao invés de definir explicitamente todos os 
pontos em x e y. O gráfico pode ser criado em três passos: 
1. Cria-se um vetor para armazenar os pontos de interesse em x utilizando o operador 
“:” ou a função linspace; 
2. Aplica-se a função matemática de interesse sobre o vetor x, o que permitirá a 
obtenção do vetor y; 
3. Utiliza-se a função plot em conjunto com os vetores x e y criados anteriormente. 
Por exemplo, o gráfico anterior poderia ter sido criado pela sequência de comandos: 
x = [-3:3]; // define o vetor x. Neste caso, com pontos de -3 a 3, espaçados de 1. 
y = x.^2; // o valores de y são calculados a partir de x 
plot(x, y); 
6.1.1 Opções do Gráfico 
É possível alterar diversas características do gráfico, como o tipo de linha, a cor e o tipo de 
marcador. Tais opções são comumente especificadas entre aspas, da seguinte forma: 
plot(vetor x, vetor y, 'opções') 
onde “opções” representa um conjunto caracteres que define os detalhes do gráfico. 
Algumas das opções aceitas pelo Scilab são apresentadas na Tabela 6.1. Elas podem ser 
especificadas em qualquer ordem, desde que estejam dentro das aspas. 
 
 
 
 38 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
 Símbolo Significado 
Marcador 
* Asterisco. 
+ Símbolo + 
o Círculo (Letra „o‟) 
d Losango – diamond 
s Quadrado – square 
^,>,< ou v Tipos de triângulos 
Linha 
- Linha sólida 
-- Linha tracejada 
: Linha pontilhada 
Cor 
r Cor vermelha - red 
g Cor verde – green 
b Cor azul – blue 
y Cor amazela - yellow 
k Cor preta – black 
Tabela 6.1 - Algumas opções da função plot 
 
Exemplo Descrição Resultado 
x = [-5:0.5:5]; 
y = x.^2; 
plot(x, y, '*'); 
Os pontos aparecem com o 
marcador *. Não há linha. Cor 
azul (padrão). 
 
x = [-5:0.5:5]; 
y = x.^2; 
plot(x, y, '*-') 
Gráfico com o marcador * e 
com linha sólida conectando os 
pontos. 
 
 
 39 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
Exemplos Descrição Resultado 
x = [-5:0.5:5]; 
y = x.^2; 
plot(x, y, '--ro'); 
Linha tracejada, na cor 
vermelha, com o marcador 
„o‟. 
 
x = [-%pi:0.2:%pi]; 
y1 = sin(x); 
plot(x,y1,'-*g'); 
y2 = cos(x); 
plot(x,y2,'-dr'); 
Dois gráficos sobrepostos 
utilizando duas vezes o 
comando plot. Função seno 
(verde) e cosseno 
(vermelho). Valores de x no 
intervalo [ ], 
espaçados de 0.2. 
 
x=linspace(1,10,50); 
y = log2(x); 
plot(x,y,'-sk'); 
Gráfico da função 
 para 50 
pontos igualmente 
espaçados no intervalo 
[1,10]. Marcador 
„quadrado‟ e cor preta. 
 
6.1.2 Título, Rótulos dos Eixos, Legenda e Linhas de Grade 
O gráfico, seus eixos e as curvas podem receber rótulos de identificação por meio das funções: 
 xtitle – insere um título para o gráfico 
 xlabel – insere um rótulo para o eixo 
 Ylabel – insere um rótulo para o eixo 
 legend – insere uma legenda para identificação das séries 
 xgrid – insere linhas de grade horizontais e verticais 
 40 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
Exemplo: 
clf 
x = [0:0.1:4*%pi]; 
y1 = sin(x); 
y2 = cos(x); 
plot(x,y1,'-*b'); 
plot(x,y2,'-dr'); 
xtitle('Funções seno e cosseno'); // insere o título 
xlabel('Eixo X'); // insere o rótulo do eixo horizontal x 
ylabel('Eixo Y'); // insere o rótulo do eixo vertical y 
legend('Seno', 'Cosseno'); // insere uma legenda para identificar, 
 // na respectiva ordem, as duas curvas 
Resultado: 
 
OBS: É possível desenhar o gráfico de diversas funções utilizando o comando plot uma única 
vez. Para o exemplo anterior, poderíamos ter utilizado: 
plot(x,y1,'-*b', x,y2,'-dr'); 
6.1.3 Outras Opções do Gráfico 
Detalhes sobre os eixos podem ser especificados por meio da função gca (get current axes), 
que retorna uma variável especial para manipulação dos eixos do gráfico. Tal variável dá 
acesso às diversas propriedades dos eixos, que podem ser configuradas pelo usuário. 
Algumas dessas propriedades são: 
 x_location – posição do eixo x. Pode ser „top’, „middle’, „bottom’ ou „origin’; 
 y_location – posição do eixo y. Pode ser „left’, „middle’, „right’ ou „origin’; 
 41 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
 axes_visible – indica se os eixos devem ser mostrados ‘on’ ou não ‘off’; 
 isoview – utiliza escalas isométricas para os eixos. Pode ser „on’ ou „off’; 
Exemplo: 
clf 
x = [0:0.1:2*%pi]; 
y1 = sin(x); 
y2 = cos(x); 
plot(x,y1,'-*b', x,y2,'-dr'); 
xtitle('Funções seno e cosseno – Escalas isométricas'); 
legend('Seno', 'Cosseno'); 
a = gca(); // obtém o manipulador de eixos 
a.isoview = 'on'; // utilizaescalas isométricas 
a.x_location = 'middle'; // o eixo x será mostrado no centro 
Resultado: 
 
OBS: Para que os eixos X e Y sejam exibidos na posição natural do plano cartesiano, é 
necessário definir as propriedades x_location e x_location do gráfico para o valor 
„origin’: 
a = gca(); // obtém o manipulador de eixos 
a.x_location = 'origin'; // posiciona o eixo x na origem do sist. de coordenadas 
a.y_location = 'origin'; // posiciona o eixo y na origem do sist. de coordenadas 
Exemplo: 
clf 
x = [-3:0.1:3]; 
y = x .^ 2 + 2; 
plot(x,y,'-*r', x,y,'-*r'); 
xtitle('Função f(x) = x² + 2 – Eixos na origem'); 
a = gca(); // obtém o manipulador de eixos 
a.isoview = 'on'; // utiliza escalas isométricas 
a.x_location = 'origin'; // posiciona o eixo x na origem do sist. de coordenadas 
a.y_location = 'origin'; // posiciona o eixo y na origem do sist. de coordenadas 
xgrid // ativa as linhas de grade 
 42 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
Resultado: 
 
Algumas das propriedades dos eixos e de outros elementos do gráfico podem ser 
configuradas visualmente. Bastar acessar a opção Editar  Propriedades dos eixos da 
janela do gráfico. A janela de configuração exibida pelo Scilab é apresentada na Figura 6.2. 
6.2 O Comando subplot 
O comando subplot é utilizado para inserir diversos gráficos em uma mesma janela. O 
comando divide a janela gráfica em uma matriz de m x n células, onde em cada célula é 
possível inserir um gráfico. Sua forma de uso é: 
subplot(m, n, p) 
onde: 
 m – número de linhas em que se deseja dividir a janela gráfica 
 n – número de colunas em que se deseja dividir a janela gráfica 
 p – posição da matriz a ser ativada, contada da esquerda para a direita, linha a linha. 
Todos os comandos voltados para a inserção e configuração de gráficos terão efeito 
sobre o gráfico dessa posição. 
 43 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
 
Figura 6.2 - Janela de configuração das propriedades dos eixos 
No exemplo a seguir, seis gráficos são colocados em uma mesma janela gráfica. Eles são 
organizados em uma matriz de duas linhas e três colunas. Repare que a função subplot é 
utilizada diversas vezes para ativar cada uma das posições de plotagem. O número de linhas e 
o número de colunas permanecem inalterados (pois não desejamos alterar essa disposição), 
mas a posição ativa de plotagem é atualizada para cada novo gráfico. 
Exemplo: 
// vetor x 
x = [-3:0.1:3]; 
 
// Gráfico 1 
y1 = x.^2; 
subplot(2,3,1); // A janela será div. em 2 linhas e 3 colunas. A 1ª pos. é ativada 
plot(x,y1,'*-'); 
xtitle('Gráfico 1: função quadrática'); 
 
// Gráfico 2 
y2 = x.^3; 
subplot(2,3,2); // Ativa a segunda posição de plotagem 
plot(x,y2,'+-'); 
xtitle('Gráfico 2: função cúbica'); 
 
// Gráfico 3 
y3 = sin(x); 
subplot(2,3,3); 
plot(x,y3,'o-'); 
xtitle('Gráfico 3: função seno'); 
 
// Gráfico 4 
y4 = -x^2; 
subplot(2,3,4); 
 44 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
plot(x,y4,'d-'); 
xtitle('Gráfico 4: função quadrática 2'); 
 
// Gráfico 5 
y5 = -x.^3; 
subplot(2,3,5); 
plot(x,y5,'p-'); 
xtitle('Gráfico 5: função cúbica 2'); 
 
// Gráfico 6 
y6 = cos(x); 
subplot(2,3,6); 
plot(x,y6,'x-'); 
xtitle('Gráfico 6: função cosseno'); 
 
Resultado: 
 
Figura 6.3 - Inserindo diversos gráficos na mesma janela com a função subplot. 
 
 45 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
6.3 Outros Tipos de Gráficos 
O Scilab também disponibiliza funções para a construção de outros tipos de gráficos, 
incluindo gráficos de barras verticais, gráficos de barras horizontais e gráficos do tipo pizza. 
As funções são: 
 bar – para gráficos de barras verticais; 
 barh – para gráficos de barras horizontais; 
 pie – para gráficos do tipo pizza. 
Tais funções são comumente utilizadas da seguinte forma: 
bar(vetor_de_números, <largura_das_barras>) 
barh(vetor_de_números, <largura_das_barras>) 
pie(vetor_de_números, <espaçamento_fatias>, <rótulos_fatias>) 
onde: 
 vetor_de_números: vetor contendo os valores que definem, de maneira 
proporcional, o comprimento de cada barra (ou o tamanho de cada fatia da „pizza‟); 
 largura_das_barras: número entre 0 e 1 que determina a largura das barras (0 = 
largura mínima, 1 = largura máxima). Este dado é opcional. 
 espaçamento_fatias: vetor de números que especificam se a respectiva fatia da 
„pizza‟ deve aparecer afastada (número diferente de 0) ou „grudada‟ no centro da 
„pizza‟ (valor 0); 
 rótulos_fatias: vetor contendo os rótulos, entre aspas, correspondentes às fatias 
da „pizza‟. 
Exemplos: 
Comandos Gráfico Resultante 
clf; 
x = [1,2,3,4]; 
bar(x, 0.5); 
 
 46 
 
Construção de Gráficos Prof. Dr. Daniel A. Furtado 
clf; 
x = [1,2,3,2]; 
bar(x, 0.9); 
 
clf; 
x = [1,2,3,4]; 
barh(x, 0.5); 
 
clf; 
pie([18,4,3],[0,1,0],['Aprovados',
'Rep. por falta', 'Rep. por 
nota']); 
 
 47 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
Capítulo 7 
Operações com Matrizes 
Matrizes podem ser definidas no Scilab de maneira semelhante aos vetores. Os elementos 
devem ser especificados entre colchetes. As linhas podem ser separadas por ponto-e-vírgula 
ou ENTER e os elementos de uma mesma linha podem ser separados por vírgula ou espaço. 
Exemplos: 
 [
 
 
 
] [
 
 
 
] *
 
 
+ 
-->A = [1,2,3; 2,5,1; 7,4,9] 
 A = 
 1. 2. 3. 
 2. 5. 1. 
 7. 4. 9. 
-->B = [2 1; 3 2; 4 3] 
 B = 
 2. 1. 
 3. 2. 
 4. 3. 
 
-->C = [9 8 7 6 
-->1 2 3 4] 
 C = 
 9. 8. 7. 6. 
 1. 2. 3. 4. 
O operador “:” pode ser utilizado para especificar uma sequência de elementos dentro de 
uma mesma linha. Por exemplo, a matriz: 
 [
 
 
 
] 
pode ser definida pelo comando: 
--> D = [1:5; 6:10; 12:2:20] 
 48 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
7.1 Acesso aos Elementos da Matriz 
Após definir a matriz, um elemento específico pode ser acessado utilizando-se a notação 
 , onde A é o nome da matriz, i é o número da linha e j é número da coluna onde o 
elemento se encontra. 
Exemplos: 
-->M = [4,9,5; 7,3,8] (define uma matriz M) 
 M = 
 4. 9. 5. 
 7. 3. 8. 
 
-->M(1,3) (Acessa o elemento da 1ª linha e 3ª coluna de M) 
 ans = 
 5. 
 
-->x = M(2,1) (Acessa o elemento da 2ª linha e 1ª coluna de M e o armazena em x) 
 x = 
 7. 
 
-->M(1,2) = 10 (Altera o elemento da 1ª linha e 2ª coluna de M para o valor 10) 
 M = 
 
 4. 10. 5. 
 7. 3. 8. 
Acessando uma Linha Inteira 
Especifica-se o número da linha e coloca-se “:” para a coluna. 
-->M = [1,2,3; 4,5,6] (define uma matriz M) 
 M = 
 1. 2. 3. 
 4. 5. 6. 
 
-->M(2,:) (acessa toda a 2ª linha de M) 
 ans = 
 4. 5. 6. 
 
-->M(2,:) = [7,8,9] (altera toda a 2ª linha de M. Repare no novo vetor linha) 
M = 
 1. 2. 3. 
 7. 8. 9. 
Acessando uma Coluna Inteira 
Especifica-se o número da coluna e coloca-se “:” para a linha. 
-->M = [1,2,3; 4,5,6] (define uma matriz M) 
 M = 
 1. 2. 3. 
 4. 5. 6. 
 
 49 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
-->M(:,3) (acessa toda a 3ª coluna de M) 
ans = 
 3. 
 6. 
 
-->M(:,2) = [20; 30] (altera toda a 2ª coluna de M. [20;30] é um vetor coluna) 
 M = 
 1. 20. 3. 
 4. 30. 6. 
Acessando uma Submatriz 
Também é possível acessar uma parte da matriz envolvendo mais de uma linha ou coluna. 
Neste caso, deve-se especificar o intervalo de linhas e o intervalo de colunas que envolvem a 
parte desejada. No exemplo a seguir, acessamos a submatriz de A indicada pela linha 
tracejada. 
 [
 
 
 
 
] 
-->A= [1 9 6 0; 6 7 8 9; 5 1 6 8; 4 0 9 3] 
 A = 
 1. 9. 6. 0. 
 6. 7. 8. 9. 
 5. 1. 6. 8. 
 4. 0. 9. 3. 
 
-->A(1:3,2:4) (acessa a submatriz de A: da linha 1 à 3, da coluna 2 à 4) 
 ans = 
 9. 6. 0. 
 7. 8. 9. 
 1. 6. 8. 
7.2 Adicionando e Removendo Linhas e Colunas 
Adicionando Linhas à Matriz 
-->A = [3 2 1; 6 5 4] (define uma matriz A) 
 A = 
 3. 2. 1. 
 6. 5. 4. 
 
-->A = [A; [1,2,3]] (adiciona a linha [1,2,3] no final da matriz A) 
 A = 
 3. 2. 1. 
 6. 5. 4. 
 1. 2. 3. 
 
 
 
 50 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
-->A = [[5,5,5]; A] (adiciona a linha [5,5,5] no início da matriz A) 
 A = 
 5. 5. 5. 
 3. 2. 1. 
 6. 5. 4. 
 1. 2. 3. 
Adicionando uma Nova Coluna 
-->B = [1, 2; 3, 4] (define uma matriz B) 
 B = 
 1. 2. 
 3. 4. 
 
-->B = [B, [5;6]] (adiciona a coluna [5;6] no final da matriz B) 
 B = 
 1. 2. 5. 
 3. 4. 6. 
 
-->B = [[0;1], B] (adiciona a coluna [0;1] no início da matriz B) 
 B = 
 0. 1. 2. 5. 
 1. 3. 4. 6. 
Removendo uma Linha ou Coluna 
-->C = [1, 2; 3, 4; 5, 6] (define uma matriz C) 
 C = 
 1. 2. 
 3. 4. 
 5. 6. 
 
-->C(2,:) = [] (exclui a 2ª linha da matriz C) 
 C = 
 1. 2. 
 5. 6. 
 
-->C(:,1) = [] (exclui a 1ª coluna da matriz C) 
 C = 
 2. 
 6. 
Observe que quando uma linha ou coluna é excluída, as demais são reorganizadas para 
ocupar o seu lugar. 
7.3 Operações de Soma, Subtração e Multiplicação 
As operações de soma, subtração e multiplicação de matrizes podem ser realizadas com os 
próprios operadores matemáticos +, - e *, respectivamente. Entretanto, é preciso que as 
matrizes operadas sejam compatíveis, de acordo com as restrições matemáticas. 
Exemplos: 
 
 51 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
-->A = [1,2; 3,4] (define uma matriz A) 
 A = 
 1. 2. 
 3. 4. 
 
-->B = A (define uma matriz B igual à matriz A) 
 B = 
 1. 2. 
 3. 4. 
 
-->C = A + B (calcula a soma das matrizes A e B e armazena em C. 
C = As matrizes precisam ter as mesmas dimensões) 
 2. 4. 
 6. 8. 
 
-->D = A – B (calcula a diferença das matrizes A e B) 
 D = 
 0. 0. 
 0. 0. 
 
-->E = A * B (calcula o produto matricial de A por B. 
 E = O número de colunas da primeira deve ser igual ao 
 7. 10. número de linhas da segunda) 
 15. 22. 
 
-->F = 2 * A + 1 (operação com escalares. Cada elemento da matriz A é 
 F = multiplicado por 2 e somado com 1, resultando em uma 
 3. 5. nova matriz F) 
 7. 9. 
7.4 Outras Funções Aplicadas a Matrizes 
 length(A) – retorna o número total de elementos da matriz A; 
 sum(A) – calcula o somatório dos elementos de A; 
 det(A) – calcula o determinante da matriz quadrada A; 
 inv(A) – calcula a inversa da matriz quadrada A (se houver); 
 A' – calcula a matriz transposta de A; 
 diag(A) – retorna a diagonal principal da matriz A na forma de um vetor coluna; 
 size(A) – retorna as dimensões de A (o número de linhas e o número de colunas); 
 eye(m,n) – define uma matriz contendo 1‟s na diagonal principal e 0‟s nas 
demais posições (matriz identidade); 
 zeros(m,n) – define uma matriz nula de tamanho ; 
 ones(m,n) – define uma matriz onde todos os elementos são iguais a 1; 
 rand(m,n) – define uma matriz de números aleatórios entre 0 e 1. 
 
 
 
 52 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
Exemplos: 
-->A = [3,7,1;8,5,0] (define uma matriz A) 
 A = 
 3. 7. 1. 
 8. 5. 0. 
 
-->length(A) (obtém o número total de elementos de A) 
 ans = 
 6. 
 
-->size(A) (obtém o número de linhas e o número de colunas de A) 
 ans = 
 2. 3. 
 
-->[L,C]=size(A) (obtém as dimensões de A, armazenando nas vars. L e C) 
 C = 
 3. 
 L = 
 2. 
 
-->A = [A;[2,1,3]] (adiciona uma nova linha em A) 
 A = 
 3. 7. 1. 
 8. 5. 0. 
 2. 1. 3. 
 
-->det(A) (calcula o determinante de A) 
 ans = 
 - 125. 
 
-->A' (calcula a matriz transposta de A) 
 ans = 
 3. 8. 2. 
 7. 5. 1. 
 1. 0. 3. 
 
-->inv(A) (calcula a matriz inversa de A) 
 ans = 
 -0.12 0.16 0.04 
 0.192 -0.056 -0.064 
 0.016 -0.088 0.328 
 
-->eye(3,3) (matriz identidade 3 x 3) 
 ans = 
 1. 0. 0. 
 0. 1. 0. 
 0. 0. 1. 
 
-->ones(3,3) (matriz 3 x 3 contendo apenas o valor 1) 
 ans = 
 1. 1. 1. 
 1. 1. 1. 
 1. 1. 1. 
 
 
 53 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
-->zeros(3,3) (matriz nula 3 x 3) 
 ans = 
 
 0. 0. 0. 
 0. 0. 0. 
 0. 0. 0. 
 
-->rand(3,3) (matriz 3 x 3 de números aleatórios) 
 ans = 
 0.2113249 0.3303271 0.8497452 
 0.7560439 0.6653811 0.6857310 
 0.0002211 0.6283918 0.8782165 
7.5 Resolução de Sistemas Lineares 
Para resolver um sistema de equações lineares no Scilab, pode-se considerá-lo como uma 
multiplicação de matrizes e realizar o cálculo da matriz inversa. Por exemplo, considere o 
seguinte sistema: 
{
 
 
 
Esse sistema pode ser representado pela multiplicação de matrizes: 
(
 
 
) (
 
 ) (
 
 
) 
que pode ser representada, de forma sucinta, por: 
 
onde A é a matriz dos coeficientes, b é o vetor coluna dos termos independentes e s é o vetor 
solução (
 
 ). Ao multiplicar os dois lados da equação pela matriz inversa de A, obtemos: 
 
que resulta na equação: 
 
Assim, para encontrar o vetor solução de um sistema linear, pode-se multiplicar a inversa da 
matriz dos coeficientes do sistema (caso ela exista) pelo vetor coluna de seus termos 
independentes. Por exemplo, o sistema linear anterior pode ser resolvido pelo programa: 
A=[2,3;1,-1]; // define a matriz dos coeficientes 
b=[19;-3]; // define o vetor coluna dos termos independentes 
s=inv(A)*b; // resolve o sistema linear 
printf("x=%.1f, y=%.1f", s(1), s(2)); // apresenta a solução do sistema 
Entretanto, o sistema será possível e determinado apenas quando a matriz dos coeficientes 
possuir inversa, o que acontece quando o seu determinante é diferente de zero. Assim, 
convém verificar o determinante da matriz dos coeficientes antes de utilizar a função inv. 
Isto é feito no exemplo a seguir. 
 54 
 
Operações com Matrizes Prof. Dr. Daniel A. Furtado 
Exemplo 1. Faça um programa que receba do usuário uma matriz 3x3 correspondente aos 
coeficientes de um sistema linear e um vetor coluna correspondente aos termos 
independentes. O programa deve encontrar e apresentar a solução do respectivo sistema, 
caso ele seja possível e determinado. Caso contrário, uma mensagem adequada deve ser 
apresentada. 
A=input('Informe a matriz 3x3 dos coeficientes do sistema: '); 
b=input('Informe o vetor coluna dos termos independentes: '); 
if (det(A) ~= 0) then 
 s=inv(A)*b; 
 printf("x=%.1f, y=%.1f, z=%.1f", s(1), s(2), s(3)); 
else 
 printf('Sistema impossível ou indeterminado'); 
end 
Um sistema linear da forma também pode ser resolvido no Scilab utilizando-se o 
operador “\”. Neste caso, a solução é dada por: s = A \ b. 
 
 
 
 55 
 
Estruturas de Repetição Prof. Dr. Daniel. A. Furtado 
 
Capítulo 8 
Estruturas de Repetição 
8.1 Estrutura de Repetição while (enquanto) 
A estrutura de repetição while (em português, “enquanto”) é utilizada quando se deseja

Outros materiais