Ler e apresentar dados

De GNU Octave
Revisão em 16h16min de 7 de janeiro de 2013 por Jgrocha (Discussão | contribs) (Apresentar dados formatados)

(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Ir para: navegação, pesquisa

O Octave permite interagir com o utilizador através de funções de input (leitura de dados) e output (apresentação de dados).

Ler dados

A forma mais simples de ler dados do utilizador, é através da instruções input.

octave:8> numero = input ("Escolha um número entre 1 e 100! ")
Escolha um número entre 1 e 100! 25
numero =  25

A instrução input apresenta a mensagem e fica a aguardar que seja introduzido algo seguido de Enter.

O valor lido é atribuído à variável numero, como apresentado no exemplo.

Outros valores

Com a instrução input podem-se ler outros valores, como vetores ou matrizes.

octave:15> v = input("Introduza as temperaturas desta semana: ")
Introduza as temperaturas desta semana: [23 22 24 26 23 22 21]
v =
   23   22   24   26   23   22   21

O Octave tenta converter o valor lido para número, vetor ou matriz. Se quiser ler uma string, isto é, se quiser que a string seja atribuída à variável (e não o número que ela representa), acrescente o parâmetro "s". Ou seja,

octave:19> nome = input("Diga o seu nome ", "s")
Diga o seu nome Camilo Castelo Branco
nome = Camilo Castelo Branco

Exercícios

  1. Leia dois números e multiplique-os.
  2. Leia o ano de nascimento e calcule a idade
  3. Leia o nome de um filme e calcule o comprimento do mesmo.
  4. Leia um número e um vetor, e multiplique o número pelo vetor.
  5. Leia um vetor e uma matriz, e multiplique um pelo outro.

Menus

O Octave permite de uma forma muito simples apresentar um menu.

octave:5> sexo = menu("Sexo", "Masculino", "Feminino")
Sexo
 
  [ 1] Masculino
  [ 2] Feminino
 
pick a number, any number: 2
sexo=  2

Um menu pode ter quantas opções desejar.

Um simples Sim ou não

octave:2> continuar = yes_or_no("Quer continuar? ")
Quer continuar? (yes or no) yes
continuar =  1
octave:3> continuar = yes_or_no("Quer continuar? ")
Quer continuar? (yes or no) no
continuar = 0
octave:4>

Exercícios

  1. Apresente um menu para escolher entre graus ou radianos.
octave:4> unidade = menu("Indique a unidade para ângulos", "Graus", "Radianos")
Indique a unidade para ângulos
 
  [ 1] Graus
  [ 2] Radianos
 
pick a number, any number: 2
unidade =  2
  1. Apresente um menu para escolher o dia da semana.
octave:1> dia = menu("Indique o dia da semana", "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado")
Indique o dia da semana
 
  [ 1] Domingo
  [ 2] Segunda-feira
  [ 3] Terça-feira
  [ 4] Quarta-feira
  [ 5] Quinta-feira
  [ 6] Sexta-feira
  [ 7] Sábado
 
pick a number, any number: 6
dia =  6

Apresentar dados formatados

Das várias formas de apresentar resultados em Octave, a instrução printf é aquela que nos dá mais flexibilidade.

A instrução printf recebe uma template, e os valores a apresentar. Exemplo:

octave:4> x = 18;
octave:5> printf("Eu tenho %d anos de idade.", x);
Eu tenho 18 anos de idade.octave:6>

No exemplo anterior, a template inclui a indicação %d onde será apresentado o valor (inteiro) da variável x.

Repare que o prompt do Octave octave:6> apareceu logo a seguir à mensagem. Se acrescentar na mensagem o carater especial \n está a acrescentar uma mudança de linha.

octave:6> printf("Eu tenho %d anos de idade.\n", x);
Eu tenho 18 anos de idade.
octave:7>


Na mesma instrução, podem-se apresentar vários dados. Exemplo:

octave:15> largura = 3;
octave:16> comprimento = 4;
octave:17> printf("A área de um rectângulo com %d de largura e %d de comprimento é %d.\n", largura, comprimento, largura*comprimento);
A área de um rectângulo com 3 de largura e 4 de comprimento é 12.

Além de %d para inteiros, usa-se frequentemente o %f para reais, %s para strings e %% para escrever o símbolo %.

Pode-se também acrescentar outras opções, como o número de casas decimais a apresentar.

octave:12> printf("O Rui tem %d anos e gosta do %.2f\n", x, pi);
O Rui tem 18 anos e gosta do 3.14
octave:13>