Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Capítulo 2 - Scilab Básico
Neste capítulo, vamos apresentar alguns elementos básicos da linguagem
Scilab. No final, você deve ser capaz de escrever programas Scilab simples, porém
funcionais.
2.1 - Variáveis e Matrizes
A unidade fundamental de dados, em qualquer programa Scilab, é a matriz.
Matriz é uma coleção de valores de dados organizados em linhas e colunas, conhecidos
por um nome único (ver Fig 2.1). Valores individuais de dados em uma matriz são
acessados por meio do nome da matriz, seguindo de índices entre parênteses que
identificam a linha e a coluna do valor particular. Mesmo os escalares são tratados como
matrizes no Scilab - eles são simplesmente matrizes com somente uma linha e uma
coluna.
Matrizes podem ser classificadas como vetores ou matrizes propriamente
ditas. O termo "vetor" geralmente descreve uma matriz com somente uma dimensão,
enquanto o termo "matriz" costuma ser utilizado para descrever matrizes com duas ou
mais dimensões. Neste texto, vamos usar os termos "vetor" na discussão de matrizes
unidimensionais, e "matriz" na discussão de matrizes com duas ou mias dimensões. Se
uma discussão em particular se aplicar aos dois tipos de matrizes, usaremos também o
termo genérico "matriz" (do inglês array).
O tamanho de uma matriz é especificado pelo número de linhas e de colunas,
sendo o número de linhas apresentado antes. O número total de elementos da matriz será
o produto do número de linhas e o número de colunas.
coluna 1
linha 1
a11
coluna 2
a12
coluna 3
a13
coluna 4
a14
linha 2
a21
a22
a23
a24
linha 3
a31
a32
a33
a34
linha 4
a41
a42
a43
a44
Figura 2.1 - Uma matriz A é uma coleção de valores de dados organizados em linhas e colunas
1
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Por exemplo, os tamanhos das matrizes a seguir são:
Matriz
Tamanho
Esta é uma matriz 3x2 que contém 6 elementos.
Esta é uma matriz 1x4, conhecida como vetor-linha;
contém 4 elementos.
Esta é uma matriz 4x1, conhecida como vetor-coluna;
contém 4 elementos.
Elementos individuais na matriz são identificados pelo nome da matriz seguido
da linha e da coluna do elemento em particular. Se a matriz é um vetor-linha ou um vetorcoluna, somente um índice é requerido. Por exemplo, nas matrizes acima, a(2,1) = 3 e
vetor(2) = 8.75.
Uma variável Scilab é uma região de memória que contém uma matriz,
conhecida por um nome especificado pelo usuário. O conteúdo de uma matriz pode ser
utilizado ou modificado a qualquer momento pela inclusão de seu nome em um comando
Scilab apropriado.
Os nomes de variáveis Scilab precisam iniciar com uma letra seguida de
combinações de letras, números e símbolos, da seguinte forma:
 os nomes de variáveis não podem ter caracteres acentuados.
 o primeiro caractere de um nome de variável deve ser uma letra, ou um dos
caracteres:
#

$
%
_
?
os demais caracteres podem ser alfanuméricos, dígitos, ou os caracteres:
#
$
_
?
!

os nomes de variáveis são sensíveis aos caracteres maiúsculos e minúsculos. Por
exemplo, variável Alpha é diferente das variáveis ALPHA, alpha e AlPhA.

a escolha de nomes significativos para as variáveis ajuda ao programador
entender o que o programa faz e a prevenir erros.
por exemplo, nomes válidos:

a
A
Jose
#funcionarios
total_de_alunos
%valor
?#_

por exemplo, nomes inválidos:
1Aluno (o primeiro caractere é um algarismo)
total de alunos (tem espaços)
José (é acentuado)
2
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Ao escrever um programa, é importante escolher nomes com significado para
as variáveis. Nomes com significado tornam um programa muito mais fácil de ler e
manter. Nomes como dia, mes e ano são claros até mesmo para alguém que vê o
programa pela primeira vez. Como os espaços não podem ser utilizados em nomes de
variáveis Scilab, o caractere sublinhado pode ser utilizado para criar nomes compostos
com significado, por exemplo, taxa_de_cambio.
Boa Prática de Programação
Sempre use nomes descritivos e fáceis de lembrar para suas variáveis. Por
exemplo, uma taxa de câmbio poderia ser chamada de taxa_de_cambio; seria
confuso chamá-la de capital. Esta prática tornará seus programas mais claros e
fáceis de entender.
É também importante incluir um dicionário de dados no cabeçalho de
qualquer programa que você escrever. Este dicionário lista a definição de cada variável
usada em um programa. A definição deve incluir uma descrição do conteúdo e as
unidades de medida usadas. Um dicionário de dados pode parecer desnecessário
enquanto o programa está sendo escrito, mas é de grande valor quando você ou outra
pessoa precisa voltar para o programa e modificá-lo posteriormente.
Boa Prática de Programação
Crie um dicionário de dados para cada programa, a fim de tornar mais fácil a
manutenção.
A linguagem Scilab é sensível à capitalização, o que significa que letras
maiúsculas e minúsculas não são a mesma coisa. Assim, as variáveis name, NAME e
Name são diferentes. Você precisa ser cuidadoso quanto à utilização de capitalização ao
empregar uma variável. Embora não seja requerido, é usual utilizar caixa baixa para
nomes de variáveis ordinárias.
Boa Prática de Programação
Verifique se você capitaliza uma variável exatamente da mesma forma cada
vez que ela é utilizada. Uma boa prática é utilizar sempre caixa baixa em nomes de
variáveis.
Os valores numéricos alocados a variáveis Scilab podem ser inteiros, reais ou
complexos, por exemplo:
3
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Comando
massa = 58
Media = 6.8
Explicação
Cria a variável massa com o valor inteiro 58.
Cria a variável Media com o valor real 6.8.
Cria a variável C1 com o complexo cuja parte real é 10 e a
C1 = 10 – 4*%i
parte imaginária é -4i.
A letra i é o símbolo que representa
Podemos armazenar nas variáveis um caractere ou uma sequência de
caracteres, denominada string, para representar informações textuais, por exemplo:
Comando
Explicação
Cria a variável letra com a cadeia de de um
letra = 'a'
caractere a.
Cria a variável nome1 com a cadeia de
nome1 = 'Bart'
caracteres Bart.
nome_2 = "Lisa Simpson"
Cria a variável nome_2 com a cadeia de
caracteres Lisa Simpson.
Uma string pode ser delimitada por aspas simples ou duplas.
2.2 - Criando e Iniciando Variáveis no Scilab
Variáveis Scilab são criadas automaticamente quando iniciadas. Existem três
formas comuns de iniciar uma variável em Scilab.
1. associar dados à variável em uma atribuição;
2. fornecer dados à variável pelo teclado; e
3. ler dados de um arquivo.
As duas primeiras serão discutidas a seguir; a terceira na seção 2.x.
2.1.1 - Iniciando Variáveis em Expressões de Atribuição
A forma mais simples de criar e iniciar uma variável é associar um ou mais
valores uma declaração de atribuição. Uma declaração de atribuição tem a forma geral:
var = expressão;
onde var é o nome de uma variável e expressão é uma constante escalar, uma matriz
ou a combinação de constantes, outras variáveis e operações matemáticas (+, -, *, /, etc).
O valor da expressão é calculado por meio das regras normais da matemática, e o
resultado é armazenado na variável nomeada. O ponto e vírgula no final da declaração é
opcional. Se ele não estiver presente, o valor associado a var será ecoado na Janela do
Console. Se estiver presente, nada será mostrado nela, apesar de a atribuição ter
ocorrido.
A seguir, exemplos simples de variáveis iniciadas com declarações de
atribuição.
4
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Declaração de Atribuição
var = 40i;
var2 = var / 5;
Array = [10 2 5 88];
x = 1; y = 2;
Explicação
Cria e armazena na variável var o número
imaginário 40i
Cria a variável var2 e armazena o resultado da
expressão var/5 nela
Cria a variável array e armazena nela um vetor
linha de 4 elementos
Aqui, temos uma ilustração de múltiplas declarações
múltiplas de atribuição em uma mesma linha. observe
que cada declaração é separada por ponto e vírgula.
Quando uma variável já existe, antes da execução de uma declaração de
atribuição que a use, o conteúdo inicial dessa variável será perdido, por exemplo:
x = 10; y = 20; x = 1;
inicialmente, 10 é armazenado em x e 20 é armazenado em y. Após a execução da
declaração de atribuição x = 1, o valor 10 é destruído e o novo valor 1 é armazenado
em x.
Conforme mostra o terceiro exemplo, variáveis podem também ser iniciadas
com matrizes de dados. Essas matrizes são construídas com o uso de colchetes, [ e ],
da vírgula, e do ponto e vírgula. Todos os elementos de uma matriz são listados por
linha. Em outras palavras, os valores de cada linha são listados da esquerda para a
direita, com a linha de cima primeiro e a linha de baixo por último. Valores individuais em
uma linha são separados por brancos ou por vírgulas, e as linhas são separadas por
ponto e vírgula, ou por novas linhas. As expressões a seguir são todas matrizes
sintaticamente corretas que podem ser usadas para iniciar uma variável:
Matriz
[ 3.4 ]
[1.0 2.0 3.0]
Explicação
Esta expressão cria uma matriz 1x1 (um escalar) que
contém o valor 3,4. Os colchetes são necessários
neste caso.
Esta expressão cria uma matriz 1x3 que contém o
vetor linha [1 2 3].
Esta expressão cria uma matriz 3x1 com o vetor
[1.0; 2.0; 3.0]
coluna
.
5
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
[1, 2, 3; 4, 5, 6]
[11, 22, 33
44 55 66]
[ ]
Esta expressão cria uma matriz 2x3 que contém a
matriz
.
Esta expressão cria uma matriz 2x3 que contém a
matriz
. O final da primeira linha
encerra a primeira linha da matriz.
Esta expressão cria uma matriz vazia, que não
contém linhas nem colunas. Observe que isto não é a
mesma coisa que uma matriz com zeros.
Observe que o número de elementos em cada linha de uma matriz precisa ser
o mesmo. o número de elementos em cada coluna também. Uma expressão como
[1, 2, 3; 4, 5]
é ilegal, pois a linha 1 tem três elementos e a linha 2 tem somente dois.
Erros de Programação
O número de elementos em todas as linhas de uma matriz deve ser o mesmo,
e o número de elementos em todas as colunas também. Tentar definir uma matriz com
números diferentes de elementos nas linhas ou nas colunas produzirá um erro quando a
declaração for executada.
As expressões utilizadas para iniciar matrizes podem incluir operações
algébricas e a totalidade ou partes de matrizes previamente definidas. Por exemplo, as
declarações de atribuição
a = [ 0 1+7 ]
b = [ a(2) 7 a ]
definirão uma matriz a = [ 0 8 ] e uma matriz b = [ 8 7 0 8 ].
Nem todos os elementos de uma matriz precisam estar definidos quando ela é
criada. Se um elemento específico da matriz estiver definido e um ou mais elementos
antes dele não, os elementos anteriores serão automaticamente criados e iniciados com o
valor zero. Por exemplo, se c não foi previamente definido, a declaração
c(2, 3) = 5;
produzirá a matriz
. De maneira similar, uma matriz pode ser estendida
pela especificação de um valor para um elemento adiante do tamanho definido. Por
exemplo, suponha a matriz d = [ 1 2 ]. Então a declaração
d(4) = 4;
produzirá a matriz d = [ 1 2 0 4 ].
6
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
O ponto e vírgula no final de cada declaração de atribuição anterior temuma
função especial: ele suprime o eco automático de valores que ocorre normalmente
quando uma expressão é avaliada em uma declaração de atribuição. Se uma declaração
de atribuição é digitada sem o ponto e vírgula, os resultados da declaração são
automaticamente exibidos na Janela do Console. Por exemplo:
--> e = [1, 2, 3; 4, 5, 6]
e =
1 2 3
4 5 6
Se um ponto e vírgula é colocado no final da declaração, o eco desaparece. O
eco é uma forma excelente para verificar rapidamente seu trabalho, mas ele atrasa
seriamente a execução de programas Scilab. Por esta razão, normalmente suprimimos o
eco o tempo todo.
Ecoar os resultados de cálculos, entretanto, é uma ótima técnica prática de
depuração. Se você não está seguro a respeito dos resultados de uma declaração de
atribuição específica, simplesmente não coloque o ponto e vírgula; os resultados serão
exibidos na Janela do Console assim que a declaração for executada.
Boa Prática de Programação
Use um ponto e vírgula no final de todas as declarações de atribuição Scilab
para suprimir o eco de valores atribuídos na Janela do Console. Isto acelera muito a
execução dos programas.
Boa Prática de Programação
Se for preciso examinar os resultados de uma declaração durante a depuração
de um programa, você pode remover o ponto e vírgula daquela declaração para que seus
resultados sejam ecoados na Janela do Console.
2.2.2 – Iniciando com Expressões de Atalho
É simples criar pequenas matrizes listando explicitamente cada termo da
matriz, mas o que ocorre se a matriz contiver centenas ou mesmo milhares de
elementos? Não é prático escrever separadamente cada elemento da matriz!
O Scilab tem uma notação especial de atalho para essas circunstâncias,
utilizando o operador dois-pontos. Este operador determina uma série de valores pela
especificação do primeiro valor na série, o passo de incremento e o último valor na série.
A forma geral de um operador de dois-pontos é:
primeiro:incremento:último
7
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
onde primeiro é o primeiro valor da série, incremento é o passo de incremento e
último é o último valor da série. Se o incremento for um, ele pode ser omitido.
Essa expressão irá gerar uma matriz contendo os valores primeiro,
primeiro + incremento, primeiro + 2*incremento, primeiro +
3*incremento, etc. Por exemplo, a expressão 1:2:10 é um atalho para um vetorlinha 1x5 com os valores 1, 3, 5, 7 e 9. O próximo valor da série seria 11, mas este é
maior que 10, portanto, a série termina em 9.
-->x = 1:2:10
x =
1.
3.
5.
7.
9.
Com a notação de dois-pontos, uma matriz pode ser iniciada com os cem
valores
da seguinte maneira
--> angulos = (0.01:0.01:1.00) * %pi
Expressões de atalho podem ser combinadas com o operador de
transposição, ', para iniciar vetores coluna e matrizes mais complexas. O operador de
transposição troca linhas e colunas de qualquer matriz à qual ele seja aplicado. Assim, a
expressão
f = [ 1:4 ]’;
gera uma vetor-linha de quatro elementos [ 1 2 3 4 ], e depois transpõe esse vetor no
vetor-coluna de quatro elementos
. De maneira similar, as expressões
g = 1:4;
h = [ g’ g’ ]
produzem a matriz
.
2.2.3 – Iniciando com Funções Predefinidas
Matrizes também podem ser iniciadas por meio de funções predefinidas no
Scilab. Por exemplo, a função zeros pode ser utilizada para criar uma matriz de zeros
do tamanho desejado. Existem muitas formas de função zeros. Se a função tiver um
único argumento escalar, ela produzirá uma matriz quadrada utilizando o argumento único
como o número de linhas e de colunas da matriz. Se a função tiver dois argumentos
8
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
escalares, o primeiro será o número de linhas e o segundo, o número de colunas. Como a
função size retorna dois valores com o número de linhas e de colunas na matriz, ela
pode ser combinada com a função zeros para gerar uma matriz de zeros com o mesmo
tamanho de outra matriz. Alguns exemplos para utilização da função zeros são
apresentados a seguir:
a
b
c
d
=
=
=
=
zeros(2);
zeros(2, 3);
[ 1 2; 3 4 ];
zeros( size(c) );
Essas expressões geram as seguintes matrizes:
De maneira similar, a função ones pode ser utilizada para gerar matrizes que
contêm uns, e a função eye para gerar matrizes identidade, nas quais os elementos da
diagonal principal são uns e os outros elementos, zeros. A Tabela 2.1 apresenta uma lista
de funções Scilab comuns e úteis para iniciar variáveis.
Tabela 2.1 – Funções Scilab Úteis para Iniciar Variáveis
Função
Propósito
zeros(n)
Gera uma matriz n x n de zeros.
zeros(m, n)
Gera uma matriz m x n de zeros.
zeros(size(arr))
Gera uma matriz de zeros do mesmo tamanho que arr.
ones(n)
Gera uma matriz n x n de uns.
ones(m, n)
Gera uma matriz m x n de uns.
ones(size(arr))
Gera uma matriz de uns do mesmo tamanho que arr.
eye(n)
Gera uma matriz identidade n x n.
eye(m, n)
Gera uma matriz identidade m x n.
Retorna o comprimento de um vetor ou a dimensão maior de
length(arr)
uma matriz bidimensional.
Retorna dois valores, especificando o número de linhas e o
size(arr)
número de colunas em arr.
2.2.4 – Iniciando Variáveis com Entradas pelo Teclado
Também é possível iniciar uma variável com dados digitados diretamente no
teclado. Essa opção permite que um arquivo se script solicite ao usuário a entrada de
9
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
valores durante a execução. A função input exibe um marcador da Janela do Console
e espera o usuário digitar uma resposta. Por exemplo, considere a seguinte expressão:
meuValor = input(“Entre com um valor: ”);
Quando a expressão é executada, o Scilab escreve a cadeia “Entre com
um valor: ” e espera a resposta do usuário. Se o usuário fornece um único número,
ele pode ser simplesmente digitado. Mas se fornecer uma matriz, ela precisa ser cercada
por colchetes. De qualquer maneira, o que for digitado será armazenado na variável
meuValor quando a tecla <ENTER> for pressionada. Se apenas a tecla <ENTER> for
pressionada, uma matriz vazia será criada e armazenada na variável.
Se a função input tiver o caractere ‘s’ como segundo argumento, os
dados de entrada serão devolvidos para o usuário como uma cadeia de caracteres.
Assim, a expressão
--> entrada1 = input("Entre com o dado: ");
Entre com o dado: 1.23
armazena o valor 1.23 em entrada1, e a expressão
--> entrada2 = input("Entre com o dado: ", ‘s’);
Entre com o dado: 1.23
armazena a cadeia de caracteres “1.23” em entrada2.
Teste 2.1
Este teste apresenta uma verificação rápida do seu entendimento dos
conceitos apresentados nas Seções 2.1 e 2.2. Se você tiver problemas com o teste, releia
as seções, pergunte ao seu professor ou discuta o material com um colega.
1) Qual a diferença entre uma matriz e um vetor?
2) Responda as questões seguintes considerando a matriz abaixo.
a) Qual o tamanho de c ?
b) Qual o valor de c(2, 3) ?
c) Apresente os índices de todos os elementos cujo valor seja 0.6 .
3) Determine o tamanho das seguintes matrizes. Verifique suas respostas criando as
matrizes no Scilab. Observe que as últimas matrizes podem depender das definições de
matrizes definidas anteriormente neste exercício.
a) u = [ 10 20*%i 10+20 ]
b) v = [ -1; 20; 3 ]
c) w = [ 1 0 -9; 2 -2 0; 1 2 3 ]
d) x = [ u’ v ]
e) y(3, 3) = -7;
10
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
f) z = [ zeros(4, 1) ones(4, 1) zeros(1, 4)’ ];
g) v(4) = x(2, 1);
4) Qual o valor de w(2, 1) após a execução das declarações da questão 3?
5) Qual o valor de x(2, 1) após a execução das declarações da questão 3?
6) Qual o valor de y(2, 1) após a execução das declarações da questão 3?
7) Qual o valor de v(3)após a execução da declaração g) ?
2.5 - Valores Especiais
O Scilab tem diversos valores especiais predefinidos, que podem ser utilizados
a qualquer momento, sem terem sido iniciados antes. Uma lista dos valores predefinidos
mais comuns é dada na Tabela 2.2.
Esses valores predefinidos são armazenados em variáveis permanentes, as
quais não podem ser modificadas pelo programador.
Tabela 2.1 – Funções Scilab Úteis para Iniciar Variáveis
Função
Propósito
Retorna o número de ponto-flutuante mais próximo do valor
%pi
de π.
É a unidade imaginária usada nos números complexos; é o
%i
símbolo para
.
Retorna uma representação para o infinito positivo; -%inf
%inf
representa o infinito negativo.
Retorna uma representação para um resultado não numérico
%nan
(not a number).
Esta variável especial contém a data e a hora correntes na
clock
forma de um vetor-linha de 6 elementos, contento ano, mês,
dia, hora, minuto e segundo.
Contém a data corrente em formato de cadeia de caracteres,
date
como 14-Out-2013.
%eps
Este nome de variável abrevia epsílon. Ele representa a
menor diferença entre dois números que pode ser
representada no computador, ou seja, 2.220D-16.
ans
É uma variável especial, significa "resposta". A variável ans é
criada automaticamente quando expressões não são
atribuídas; ela contém a última expressão não-atribuída.
2.6 - Exibindo Dados de Saída
11
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Existem muitas maneira de exibir dados de saída no Scilab. A mais simples é
uma já vista - simplesmente não escreva o ponto e vírgula no final da declaração e eles
serão ecoados na Janela do Console. Iremos agora explorar algumas outras maneiras de
exibir dados.
2.6.2 - A Função disp
Outra maneira de exibir dados é a função disp. Ela aceita uma matriz como
argumento e exibe o valor da matriz na Janela do Console. Se a matriz for uma cadeia de
caracteres, então, a cadeia de caracteres contida na matriz é exibida, por exemplo:
--> nome = [ "Rajesh Koothrappali" ];
-->disp(nome)
Rajesh Koothrappali
Esta função é frequentemente combinada com a função string (que
converte um número em cadeia de caracteres) para criar mensagens exibidas na Janela
do Console. Por exemplo, as declarações Scilab a seguir exibem "O valor de pi
= 3.1416" na Janela do Console. A primeira declaração cria uma cadeia de
caracteres que contém a mensagem, e a segunda declaração exibe a mensagem.
-->mensagem = "o valor de pi = "
mensagem =
o valor de pi = 3.1415927
+
string(%pi)
Observação: quando se utiliza o operador + com cadeias de caracteres, tem-se como
resultado a concatenação das cadeias.
2.6.3 - Saída Estruturada Usando a Função printf
Uma forma ainda mais flexível de exibir dados é a função printf. Esta
função exibe um ou mais valores juntamente com o texto relacionado e permite ao
programador controlar a maneira como os valores são exibidos. Sua forma geral, quando
utilizada para exibir dados na Janela de Comandos, é:
printf(formato, dado)
onde formato é uma cadeia de caracteres descrevendo a maneira como os dados
devem ser exibidos, e dado é composto por um ou mais escalares ou matrizes para
exibição. A cadeia de caracteres formato contém o texto a ser apresentado, mais
caracteres especiais descrevendo o formato dos dados. Por exemplo, a função
printf("valor de pi = %f \n", %pi)
apresenta valor de pi = 3.141593, seguido de uma mudança de linha. Os
caracteres %f são denomindos caracteres de conversão; indicam que um valor na lista
de dados deveria ser apresentado em formato de ponto flutuante naquele local da cadeia
12
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
de formatação. Caracteres como o \n são denominados caracteres de escape. O
caracteres \n indica que uma mudança de linha deve ser incluída, para que o texto
seguinte inicie em uma nova linha. Alguns tipos de caracteres de conversão e de escape
são apresentados na Tabela 2.4.
Tabela 2.4 – Caracteres Especiais Comuns em Cadeias de Caracteres de Formatação
para o printf
Caracteres de
Formatação
%d
%e
%f
%g
\n
Resultados
Exibe o valor com inteiro. Por exemplo:
--> printf("%d", 3.1415)
3
Exibe o valor em formato exponencial. Por exemplo:
--> printf("%e", 3.1415)
3.141500e+00
Exibe o formato em ponto flutuante. Por exemplo:
--> printf("%f", 3.1415)
3.141500
Exibe o valor em formato de ponto flutuante ou exponencial o que for mais curto.
--> printf("%g", 3.1415)
3.1415
Muda de linha.
É também possível especificar a largura do campo de exibição de um número e
o número de casas decimais a serem exibidas. Isto é feito especificando-se a largura e a
precisão depois do sinal % e anes do f. Por exemplo, a função
printf("O valor de pi = %6.2f", %pi)
exibe O valor de pi =
3.14. Os caracteres de conversão %6.2f indicam
que o primeiro item de dados na função deveria ser apresentado em formato de ponto
flutuante em um campo com seis caracteres de largura, incluindo dois dígitos depois do
ponto decimal. Se o item de dados fosse negativo, o sinal também estaria incluído nos
seis caracteres.
Observe o trecho de programa:
--> x = 2 + 6*%i
x =
2. + 6.i
-->printf("Complexo = %f", x)
Complexo = 2.000000
-->disp(x)
13
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
2. + 6.i
A função printf tem uma limitação bastante significativa: ela somente exibe
a porção real de um valor complexo. Essa limitação pode levar a resultados enganosos
quando os cálculos produzem respostas complexas. Nesses casos, é melhor utilizar a
função disp para exibir as respostas.
No exemplo a seguir, as seguintes declarações calculam um valor complexo
C1 e exibem esse valor utilizando printf e disp:
--> C1 = 2 * (1 - 2*%i)^3;
-->texto = "disp: C1 = " + string(C1);
--->disp(texto)
disp: C1 = -22+%i*4
-->printf("printf: C1 = %8.4f", C1)
printf: C1 = -22.0000
Observação: a função printf ignorou a parte imaginária de C1.
Erros de Programação
A função printf exibe somente a parte real de um número complexo, que
pode produzir resultados enganosos quando se trabalha com valores complexos.
2.12 - Exemplos
2.3 - Conversão de Temperatura
Construa um programa Scilab que leia uma temperatura de entrada em graus
Fahrenheit, converta essa temperatura para um valor absoluto em Kelvin e escreva o
resultado.
Solução
A relação entre temperatura em graus Fahrenheit (ºF) e temperatura em Kelvin
(K) pode ser obtida de livros de Física. Ela é
(2.5)
Os livros de Física também nos dão valores de exemplo, nas duas escalas de
temperatura, que podemos usar para verificar a operação de nosso programa. Dois
desses valores são:
 Ponto de ebulição da água: 212 ºF = 373,15 K
 Ponto de sublimação do gelo seco: -110 ºF = 194,26 K
14
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
1.
2.
3.
4.
Nosso programa precisa efetuar os seguintes passos:
pedir para o usuário digitar a temperatura de entrada em ºF;
ler a temperatura de entrada;
calcular a temperatura em Kelvin usando a equação (2.5);
Escrever o resultado e terminar.
Usaremos a função input para obter a temperatura em graus Fahrenheit e a
função printf para escrever o resultado. Uma solução de programa é apresentada a
seguir.
// Variáveis do Programa - Dicionário de Dados
// temp_f : temperatura em graus Fahrenheit
// temp_k : temperatura em graus Kelvin
// Solicite ao usuário a entrada da temperatura
temp_f = input("Digite a temperatura em graus Fahrenheit: ");
// conversão para Kelvin
temp_k = (5/9) * (temp_f - 32) + 273.15;
// escrevendo o resultado
printf("%6.2f graus Fahrenheit = %6.2f Kelvin.\n", ...
temp_f, temp_k);
A seguir, temos dois exemplos de execuções deste programa.
Exemplo 1
Digite a temperatura em graus Fahrenheit: 212
212.00 graus Fahrenheit = 373.15 Kelvin.
Exemplo 2
Digite a temperatura em graus Fahrenheit: -110
-110.00 graus Fahrenheit = 194.26 Kelvin.
Neste programa, ecoamos os valores de entrada e escrevemos os valores de
saída juntamente com as unidades. Os resultados desse programa só fazem sentidos se
as unidades (graus Fahrenheit e Kelvin) forem incluídas com seus valores. Como regral
geral, as unidades associadas a um dados de entrada devem ser sempre apresentadas
junto com a solicitação de valor, e as unidade associadas a qualquer dado de saída
devem ser apresentadas junto com o valor.
15
Universidade Federal de Ouro Preto – UFOP
Instituto de Ciências Exatas e Biológicas – ICEB
Departamento de Computação – DECOM
Resumo: Prof. Marcelo Luiz Silva
2013-2
Boa Prática de Programação
Sempre inclua as unidades apropriadas junto com os valores que você ler ou
escrever em um programa.
O programa do exemplo anterior exibe boas práticas de programação. Ele tem
um dicionário de dados que define o significado de todas as variáveis no programa, utiliza
nomes descritivos de variáveis, e unidades apropriadas são associadas a todos os
valores apresentados.
16
Download

Capítulo 2 - Scilab Básico 2.1 - Variáveis e Matrizes - ICEB