· Web viewNeste capítulo, vamos apresentar alguns elementos básicos da linguagem Scilab. No...

21
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 coluna 2 coluna 3 coluna 4 linha 1 a 11 a 12 a 13 a 14 linha 2 a 21 a 22 a 23 a 24 1

Transcript of  · Web viewNeste capítulo, vamos apresentar alguns elementos básicos da linguagem Scilab. No...

Page 1:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: 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 MatrizesA 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 coluna 2 coluna 3 coluna 4linha 1 a11 a12 a13 a14linha 2 a21 a22 a23 a24linha 3 a31 a32 a33 a34linha 4 a41 a42 a43 a44

Figura 2.1 - Uma matriz A é uma coleção de valores de dados organizados em linhas e colunas

1

Page 2:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

Por exemplo, os tamanhos das matrizes a seguir são:Matriz Tamanho

a=[1 23 45 6 ] Esta é uma matriz 3x2 que contém 6 elementos.

v1= [1.1 2.13.1 3.2 ] Esta é uma matriz 1x4, conhecida como vetor-linha; contém 4 elementos.

vetor=[ 4.228.750.876325.9 ] Esta é uma matriz 3x1, conhecida como vetor-coluna;

contém 3 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 vetor-coluna, 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 total_de_alunos#funcionarios %valor ?#_

por exemplo, nomes inválidos: 1Aluno (o primeiro caractere é um algarismo) total de alunos (tem espaços) José (é acentuado)

2

Page 3:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: 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çãoSempre 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çãoCrie 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çãoVerifique 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

Page 4:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

Comando Explicaçãomassa = 58 Cria a variável massa com o valor inteiro 58.Media = 6.8 Cria a variável Media com o valor real 6.8.

C1 = 10 - 4iCria a variável C1 com o complexo cuja parte real é 10 e a parte imaginária é -4i.A letra i é o símbolo que representa √−1

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

letra = 'a' Cria a variável letra com a cadeia de de um caractere a.

nome1 = 'Bart' Cria a variável nome1 com a cadeia de 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 ScilabVariá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; e3. 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çãoA 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

Page 5:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

Declaração de Atribuição Explicação

var = 40i; Cria e armazena na variável var o número imaginário 40i

var2 = var / 5; Cria a variável var2 e armazena o resultado da expressão var/5 nela

Array = [10 2 5 88]; Cria a variável array e armazena nela um vetor linha de 4 elementos

x = 1; y = 2;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 Explicação

[ 3.4 ]Esta expressão cria uma matriz 1x1 (um escalar) que contém o valor 3,4. Os colchetes são necessários neste caso.

[1.0 2.0 3.0]Esta expressão cria uma matriz 1x3 que contém o vetor linha [1 2 3].

[1.0; 2.0; 3.0]Esta expressão cria uma matriz 3x1 com o vetor

coluna [123].5

Page 6:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

[1, 2, 3; 4, 5, 6]Esta expressão cria uma matriz 2x3 que contém a

matriz [1 2 34 5 6].

[11, 22, 33 44 55 66]

Esta expressão cria uma matriz 2x3 que contém a

matriz [11 22 3344 55 66]. 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çãoO 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çãoa = [ 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çãoc(2, 3) = 5;

produzirá a matriz c=[0 0 00 0 5 ]. 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çãod(4) = 4;produzirá a matriz d = [ 1 2 0 4 ].

6

Page 7:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: 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çãoUse 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çãoSe 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

Page 8:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: 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 vetor-linha 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 π100

, 2π100

, 3 π100

,…,π 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ãof = [ 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 f=[1234]. De maneira similar, as expressões

g = 1:4;h = [ g’ g’ ]

produzem a matriz h=[ 12341234].

2.2.3 – Iniciando com Funções PredefinidasMatrizes 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

8

Page 9:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

ú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 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 = zeros(2);b = zeros(2, 3);c = [ 1 2; 3 4 ];d = zeros( size(c) );

Essas expressões geram as seguintes matrizes:

a=[0 00 0] b=[0 0 0

0 0 0]c=[1 2

3 4] d=[0 00 0]

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áveisFunçã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.

length(arr) Retorna o comprimento de um vetor ou a dimensão maior de uma matriz bidimensional.

size(arr) Retorna dois valores, especificando o número de linhas e o número de colunas em arr.

2.2.4 – Iniciando Variáveis com Entradas pelo Teclado9

Page 10:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

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 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.23armazena o valor 1.23 em entrada1, e a expressão--> entrada2 = input("Entre com o dado: ", ‘s’);Entre com o dado: 1.23armazena a cadeia de caracteres “1.23” em entrada2.

Teste 2.1Este 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.

c=[1.1 −3.20.6 1.11.3 0.6

3.4 0.6−0.6 3.15.5 0.0]

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 ]

10

Page 11:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

d)x = [ u’ v ]e)y(3, 3) = -7;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 EspeciaisO 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áveisFunção Propósito

%piRetorna o número de ponto-flutuante mais próximo do valor de π.

%i É a unidade imaginária usada nos números complexos; é o símbolo para √−1.

%inf Retorna uma representação para o infinito positivo; -%inf representa o infinito negativo.

%nan Retorna uma representação para um resultado não numérico (not a number).

clockEsta variável especial contém a data e a hora correntes na forma de um vetor-linha de 6 elementos, contento ano, mês, dia, hora, minuto e segundo.

date Contém a data corrente em formato de cadeia de caracteres, como 14-Out-2013.

%epsEste 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.

11

Page 12:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

2.6 - Exibindo Dados de SaídaExistem 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 dispOutra 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 = " + string(%pi) mensagem = o valor de pi = 3.1415927

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

12

Page 13:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

de dados deveria ser apresentado em formato de ponto flutuante naquele local da cadeia 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

Resultados

%dExibe o valor com inteiro. Por exemplo:--> printf("%d", 3.1415)3

%eExibe o valor em formato exponencial. Por exemplo:--> printf("%e", 3.1415)3.141500e+00

%fExibe o formato em ponto flutuante. Por exemplo:--> printf("%f", 3.1415)3.141500

%g

Exibe o valor em formato de ponto flutuante ou exponencial - o que for mais curto.--> printf("%g", 3.1415)3.1415

\n 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

13

Page 14:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

-->disp(x) 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çãoA 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 TemperaturaConstrua 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çãoA relação entre temperatura em graus Fahrenheit (ºF) e temperatura em Kelvin

(K) pode ser obtida de livros de Física. Ela é

T ( emKelvin )=( 59 T (em ºF )−32,0)+273,15 (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

14

Page 15:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

Ponto de sublimação do gelo seco: -110 ºF = 194,26 K

Nosso programa precisa efetuar os seguintes passos:1. pedir para o usuário digitar a temperatura de entrada em ºF;2. ler a temperatura de entrada;3. calcular a temperatura em Kelvin usando a equação (2.5);4. 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 temperaturatemp_f = input("Digite a temperatura em graus Fahrenheit: ");// conversão para Kelvintemp_k = (5/9) * (temp_f - 32) + 273.15;// escrevendo o resultadoprintf("%6.2f graus Fahrenheit = %6.2f Kelvin.\n", ... temp_f, temp_k);

A seguir, temos dois exemplos de execuções deste programa.

Exemplo 1Digite a temperatura em graus Fahrenheit: 212212.00 graus Fahrenheit = 373.15 Kelvin.

Exemplo 2Digite 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

Page 16:  · Web viewNeste 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.

Universidade Federal de Ouro Preto – UFOPInstituto de Ciências Exatas e Biológicas – ICEB

Departamento de Computação – DECOMResumo: Prof. Marcelo Luiz Silva

2013-2

Boa Prática de ProgramaçãoSempre 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