Diferenças entre edições de "Programas"

De GNU Octave
Ir para: navegação, pesquisa
Linha 34: Linha 34:
 
A área é: 10800
 
A área é: 10800
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m. Confirme, dentro do Octave que o programa existe e está na pasta atual, fazendo:
 +
 +
<syntaxhighlight>
 +
dir *.m
 +
</syntaxhighlight>
 +
  
 
===== Análise do código =====
 
===== Análise do código =====
Linha 57: Linha 64:
 
Na [[Definição de funções]] voltamos a falar de comentários, pois também podem ser utilizados para explicar ao utilizador o que faz uma função.
 
Na [[Definição de funções]] voltamos a falar de comentários, pois também podem ser utilizados para explicar ao utilizador o que faz uma função.
  
=== Edição de scripts (em Windows) ===
+
<!--
 
+
Para editar as scripts, pode-se usar um editor simples como o Notepad. Confirme que as script estão a ser gravadas com a extensão .m. Confirme sempre, dentro do Octave que as scripts existem, fazendo:
+
<syntaxhighlight>
+
dir *.m
+
</syntaxhighlight>
+
 
+
 
==== Octave GUI para Windows ====
 
==== Octave GUI para Windows ====
  
Linha 86: Linha 87:
  
 
No Linux, sugere-se a utilização do QtOctave.
 
No Linux, sugere-se a utilização do QtOctave.
 +
 +
-->
  
 
=== Exercícios ===
 
=== Exercícios ===

Revisão das 01h19min de 29 de outubro de 2013

Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos no prompt do Octave, podemos agrupar esses mesmos comandos num programa. Na literatura do Octave (e do MATLAB) chamam scripts a estes programas. Ou seja, uma script é esta sequência de comandos guardados. Nesta documentação vamos usar o termo programa para designar uma script.

Os programas estão prontos a serem executados a qualquer momento e podem-se enviar para outros colegas, para executarem o mesmo programa. Os comandos são guardados num documento com a extensão .m. Tudo o que se escreve no prompt, pode-se escrever num programa.

Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.

Um programa é invocado pelo seu nome, sem a extensão .m. Ao ser invocado, todas as instruções são processadas, como se tivessem sido lançadas no prompt do Octave.

Exemplo

O primeiro programa que vamos escrever sistematiza o cálculo da área de um retângulo. Obviamente é um cálculo muito simples, mas a ideia é começar com um programa (uma script) muito pequeno.

# o meu primeiro programa em octave
# para executar o programa, basta fazer no prompt do octave:
# arearetangulo
#
largura = input("Largura?\n");
comprimento = input("Comprimento?\n");
area = largura * comprimento;
printf("A área é: %g\n", area);

Em primeiro lugar, é preciso escrever as instruções apresentadas num editor de texto qualquer. Qualquer editor serve, desde que guarde o documento em formato de texto. TEM QUE FICAR GUARDADO COM O NOME arearetangulo.m e obrigatoriamente na pasta onde está a executar o Octave.

Depois de guardada a script na pasta atual do Octave (reveja a forma de saber e mudar a pasta atual) inicia-se a mesma utilizando o nome (sem a extensão). Exemplo:

octave:2> arearetangulo
Largura?
90
Comprimento?
120
A área é: 10800

Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m. Confirme, dentro do Octave que o programa existe e está na pasta atual, fazendo:

dir *.m


Análise do código

Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.

  1. Pode-se (e deve-se!) acrescentar comentários. Os comentários são escritos após o símbolo '#' ou '%'. Após este símbolo e até ao fim da linha, é considerado comentário.
  2. As variáveis são GLOBAIS, isto é, se já existir uma variável area a mesma é alterada ao executar esta script, e perde-se o valor anterior.
  3. Ao executar a script, usa-se ';' no final das instruções para suprimir a apresentação desse resultado. O mesmo acontece quando se usa a linha de comandos. Experimente a diferença entre usar ou não o ';' no fim das instruções.
octave:1> b=10
b =  10
octave:2> b=b+20;
octave:3>
Importância dos comentários

Os comentários incluídos nos programas são fundamentais. Todas as linguagens de programação incluem o suporte à inclusão de comentários porque... os programas geralmente são complexos e difíceis de ler! Os comentários são apenas para serem interpretados pelos humanos e não pelo computador. Por isso, devem ser legíveis e explicar o que faz o programa e como o faz.

Até os programadores têm dificuldade em ler o seu próprio código após algum tempo. Por isso, é fundamental escrever comentários na altura em que se escreve o código e justificar as decisões tomadas.

Na Definição de funções voltamos a falar de comentários, pois também podem ser utilizados para explicar ao utilizador o que faz uma função.


Exercícios

  1. Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.
  2. Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento
  3. Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.

Âmbito das variáveis

Na seguinte script idade.m, utiliza-se uma variável idade que tem o mesmo nome que a script. Neste caso, temos uma sobreposição que é vivamente desaconselhada. No caso concreto, depois de correr a script, a mesma não poderá ser novamente executada, porque idade passa a ser uma referência para a variável e não para a script.

# idade.m
# script octave
# calcular a idade de uma pessoa
#
# ESTA SCRIPT TEM UM ERRO.
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.
#
# Desta forma, só se consegue chamar a script uma vez
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.
ano = input("Ano de nascimento?\n");
idade = 2012 - ano;
printf("Você tem %d anos de idade\n", idade);