http://octave.di.uminho.pt/api.php?action=feedcontributions&user=RafaelPereira&feedformat=atomGNU Octave - Contribuições do utilizador [pt]2024-03-28T14:44:15ZContribuições do utilizadorMediaWiki 1.25.2http://octave.di.uminho.pt/index.php?title=Programas&diff=8676Programas2014-10-07T19:33:55Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>[[Ficheiro:Steve jobs how to think.png]]<br />
<br />
Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos um a um, podemos agrupar esses mesmos comandos num '''programa'''. Na literatura inglesa 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.<br />
<br />
Os comandos são guardados num documento com a extensão ''.m''. Tudo o que se escreve na linha de comandos do Octave, pode-se escrever num programa. Depois de prontos, os programas podem ser executados quantas vezes se quiser, e podem ser enviados para outros colegas, para executarem o mesmo programa. <br />
<br />
Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.<br />
<br />
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 na linha de comandos do Octave.<br />
<br />
==== Exemplo ====<br />
<br />
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.<br />
<br />
<syntaxhighlight><br />
# calcula a area de um retangulo, dada a largura e o comprimento<br />
# para executar o programa, basta escrever:<br />
# arearetangulo<br />
#<br />
largura = input("Largura?\n");<br />
comprimento = input("Comprimento?\n");<br />
area = largura * comprimento;<br />
printf("A área é: %g\n", area);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Depois de guardado o programa na pasta atual do Octave, executa-se o mesmo escrevendo apenas o nome (sem a extensão). Exemplo:<br />
<br />
<syntaxhighlight><br />
>> arearetangulo<br />
Largura?<br />
90<br />
Comprimento?<br />
120<br />
A área é: 10800<br />
</syntaxhighlight><br />
<br />
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m e está na pasta atual. Para tal, da mesma forma que temos os comandos <syntaxhighlight enclose="none">who</syntaxhighlight> e <syntaxhighlight enclose="none">whos</syntaxhighlight> para ver que variáveis estão definidas, temos um comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão definidos.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>><br />
</syntaxhighlight><br />
<br />
Alternativamente, pode usar os comandos mais genéricos para saber qual a pasta atual (reveja a forma de [[Gestão de ficheiros | saber e mudar a pasta atual]]) e depois inspecionar os ficheiros .m da pasta fazendo:<br />
<br />
<syntaxhighlight><br />
dir *.m<br />
</syntaxhighlight><br />
<br />
Se precisar, pode descarregar a versão deste programa <code>arearetangulo.m</code> disponível em http://octave.di.uminho.pt/images/files/.<br />
<br />
===== Análise do código =====<br />
<br />
Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.<br />
<br />
# 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.<br />
# As variáveis são GLOBAIS. Isto é, NUNCA use o nome do programa para uma variável ou vice versa. Este perigo está explicado de forma detalhada na seção [[#Âmbito das variáveis]].<br />
# 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.<br />
<syntaxhighlight><br />
octave:1> b=10<br />
b = 10<br />
octave:2> b=b+20;<br />
octave:3><br />
</syntaxhighlight><br />
<br />
===== Importância dos comentários =====<br />
<br />
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.<br />
<br />
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.<br />
<br />
O Octave tira partido dos comentários para dar alguma informação sobre o que faz um programa.<br />
<br />
Neste primeiro programa, começámos por por alguns comentários. Por isso, geralmente depois de usar o comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão disponíveis, usamos o comando <syntaxhighlight enclose="none">help</syntaxhighlight> para saber o que faz um dado programa.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>> help arearetangulo<br />
`arearetangulo' is a script from the file /home/jgr/Documentos/Aulas/13141S/OCV/arearetangulo.m<br />
<br />
calcula a area de um retangulo, dada a largura e o comprimento<br />
para executar o programa, basta escrever:<br />
arearetangulo<br />
<br />
<br />
Additional help for built-in functions and operators is<br />
available in the on-line version of the manual. Use the command<br />
`doc <topic>' to search the manual index.<br />
<br />
Help and information about Octave is also available on the WWW<br />
at http://www.octave.org and via the help@octave.org<br />
mailing list.<br />
>><br />
</syntaxhighlight><br />
<br />
Repare que o Octave mostra os comentários colocados no início do programa. Por isso, comece sempre os programas com alguns comentários.<br />
<br />
<!--<br />
==== Octave GUI para Windows ====<br />
<br />
Se quiser investir um pouco de tempo, explore a GUI (interface gráfica) existente para Windows. Em vez de arrancar o Octave com o atalho ''Octave 3.6.2'', escolha no menu iniciar, dentro de ''Todos os Programas'', e depois dentro de ''GNU Octave (3.6.2)'' a programa ''Octave 3.6.2 (Graphical User-Interface)''.<br />
<br />
É uma interface ainda pouco robusta, mas que inclui um editor. Esse editor é sensível à sintaxe do Octave. Na imagem seguinte, mostra-se esta GUI, com o editor de scripts aberto.<br />
<br />
[[Ficheiro:Octave gui com editor.png]]<br />
<br />
==== QtOctave para Windows ====<br />
<br />
Existe uma outra alternativa que é o QtOctave, que pode ser descarregado a partir do [http://www.outsch.org/2011/01/29/qtoctave-0-10-1-for-windows/ blog do autor].<br />
<br />
Depois de descarregar o ficheiro qtoctave-0.10.1-win32.zip, com o rato sobre o mesmo, escolha a opção 'Extrair Todos...' para o descompactar.<br />
Destro da nova pasta, e dentro da pasta bin, execute o qtoctave.exe.<br />
<br />
Pode criar um atalho no ambiente de trabalho. Escolher Enviar para -> Ambiente de trabalho (criar atalho).<br />
<br />
Na primeira vez que é executado, é necessário definir onde está o octave. Para isso, tem que se ir Config->General configuration e depois selecionar Octave. O executável deverá estar em C:\Program Files\Octave-3.6.2\bin\octave-3.6.2.exe.<br />
<br />
=== Edição de scripts (em Linux) ===<br />
<br />
No Linux, sugere-se a utilização do QtOctave.<br />
<br />
--><br />
<br />
=== Exercícios ===<br />
<br />
# Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.<br />
<syntaxhighlight><br />
# quero calcular a velocidade sabendo a:<br />
# distancia (km)<br />
# tempo (minutos)<br />
distancia = input("Indique os Kms percorridos: ");<br />
tempo = input("Indique os minutos gastos: ");<br />
# preciso de transformar minutos em horas<br />
horas = tempo/60;<br />
velocidade = distancia/horas;<br />
printf("Os %d Km foram percorridos a %.2f Km/h\n", distancia, velocidade);<br />
</syntaxhighlight><br />
# Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento. Sugestão: use <syntaxhighlight>str2num(datestr(now, "YYYY"))</syntaxhighlight> para ir buscar o ano atual.<br />
# Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.<br />
# Escreva uma script que realize a conversão de polegadas para centímetros<br />
# Dado um valor em libras, escreva uma script que calcule o valor correspondente em quilos<br />
# Escreva um programa que receba uma palavra e coloque todos os caracteres da palavra em maiúsculas. Usar a função "toupper"<br />
# Desenvolva uma script que receba uma palavra como parâmetro e retorne o número de vogais desta palavra. Usar a função "regexpi"<br />
# Escreva uma script que leia um vetor e calcule seu desvio padrão usando apenas as funções "sum" e "length"<br />
<br />
=== Âmbito das variáveis ===<br />
<br />
Na seguinte script <syntaxhighlight enclose="none">idade.m</syntaxhighlight>, utiliza-se uma variável <syntaxhighlight enclose="none">idade</syntaxhighlight> 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 <syntaxhighlight enclose="none">idade</syntaxhighlight> passa a ser uma referência para a variável e não para a script.<br />
<br />
<syntaxhighlight><br />
# idade.m<br />
# script octave<br />
# calcular a idade de uma pessoa<br />
#<br />
# ESTA SCRIPT TEM UM ERRO.<br />
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.<br />
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.<br />
#<br />
# Desta forma, só se consegue chamar a script uma vez<br />
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.<br />
ano = input("Ano de nascimento?\n");<br />
idade = 2012 - ano;<br />
printf("Você tem %d anos de idade\n", idade);<br />
</syntaxhighlight></div>RafaelPereirahttp://octave.di.uminho.pt/index.php?title=Programas&diff=8675Programas2014-10-07T19:28:43Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>[[Ficheiro:Steve jobs how to think.png]]<br />
<br />
Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos um a um, podemos agrupar esses mesmos comandos num '''programa'''. Na literatura inglesa 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.<br />
<br />
Os comandos são guardados num documento com a extensão ''.m''. Tudo o que se escreve na linha de comandos do Octave, pode-se escrever num programa. Depois de prontos, os programas podem ser executados quantas vezes se quiser, e podem ser enviados para outros colegas, para executarem o mesmo programa. <br />
<br />
Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.<br />
<br />
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 na linha de comandos do Octave.<br />
<br />
==== Exemplo ====<br />
<br />
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.<br />
<br />
<syntaxhighlight><br />
# calcula a area de um retangulo, dada a largura e o comprimento<br />
# para executar o programa, basta escrever:<br />
# arearetangulo<br />
#<br />
largura = input("Largura?\n");<br />
comprimento = input("Comprimento?\n");<br />
area = largura * comprimento;<br />
printf("A área é: %g\n", area);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Depois de guardado o programa na pasta atual do Octave, executa-se o mesmo escrevendo apenas o nome (sem a extensão). Exemplo:<br />
<br />
<syntaxhighlight><br />
>> arearetangulo<br />
Largura?<br />
90<br />
Comprimento?<br />
120<br />
A área é: 10800<br />
</syntaxhighlight><br />
<br />
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m e está na pasta atual. Para tal, da mesma forma que temos os comandos <syntaxhighlight enclose="none">who</syntaxhighlight> e <syntaxhighlight enclose="none">whos</syntaxhighlight> para ver que variáveis estão definidas, temos um comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão definidos.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>><br />
</syntaxhighlight><br />
<br />
Alternativamente, pode usar os comandos mais genéricos para saber qual a pasta atual (reveja a forma de [[Gestão de ficheiros | saber e mudar a pasta atual]]) e depois inspecionar os ficheiros .m da pasta fazendo:<br />
<br />
<syntaxhighlight><br />
dir *.m<br />
</syntaxhighlight><br />
<br />
Se precisar, pode descarregar a versão deste programa <code>arearetangulo.m</code> disponível em http://octave.di.uminho.pt/images/files/.<br />
<br />
===== Análise do código =====<br />
<br />
Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.<br />
<br />
# 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.<br />
# As variáveis são GLOBAIS. Isto é, NUNCA use o nome do programa para uma variável ou vice versa. Este perigo está explicado de forma detalhada na seção [[#Âmbito das variáveis]].<br />
# 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.<br />
<syntaxhighlight><br />
octave:1> b=10<br />
b = 10<br />
octave:2> b=b+20;<br />
octave:3><br />
</syntaxhighlight><br />
<br />
===== Importância dos comentários =====<br />
<br />
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.<br />
<br />
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.<br />
<br />
O Octave tira partido dos comentários para dar alguma informação sobre o que faz um programa.<br />
<br />
Neste primeiro programa, começámos por por alguns comentários. Por isso, geralmente depois de usar o comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão disponíveis, usamos o comando <syntaxhighlight enclose="none">help</syntaxhighlight> para saber o que faz um dado programa.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>> help arearetangulo<br />
`arearetangulo' is a script from the file /home/jgr/Documentos/Aulas/13141S/OCV/arearetangulo.m<br />
<br />
calcula a area de um retangulo, dada a largura e o comprimento<br />
para executar o programa, basta escrever:<br />
arearetangulo<br />
<br />
<br />
Additional help for built-in functions and operators is<br />
available in the on-line version of the manual. Use the command<br />
`doc <topic>' to search the manual index.<br />
<br />
Help and information about Octave is also available on the WWW<br />
at http://www.octave.org and via the help@octave.org<br />
mailing list.<br />
>><br />
</syntaxhighlight><br />
<br />
Repare que o Octave mostra os comentários colocados no início do programa. Por isso, comece sempre os programas com alguns comentários.<br />
<br />
<!--<br />
==== Octave GUI para Windows ====<br />
<br />
Se quiser investir um pouco de tempo, explore a GUI (interface gráfica) existente para Windows. Em vez de arrancar o Octave com o atalho ''Octave 3.6.2'', escolha no menu iniciar, dentro de ''Todos os Programas'', e depois dentro de ''GNU Octave (3.6.2)'' a programa ''Octave 3.6.2 (Graphical User-Interface)''.<br />
<br />
É uma interface ainda pouco robusta, mas que inclui um editor. Esse editor é sensível à sintaxe do Octave. Na imagem seguinte, mostra-se esta GUI, com o editor de scripts aberto.<br />
<br />
[[Ficheiro:Octave gui com editor.png]]<br />
<br />
==== QtOctave para Windows ====<br />
<br />
Existe uma outra alternativa que é o QtOctave, que pode ser descarregado a partir do [http://www.outsch.org/2011/01/29/qtoctave-0-10-1-for-windows/ blog do autor].<br />
<br />
Depois de descarregar o ficheiro qtoctave-0.10.1-win32.zip, com o rato sobre o mesmo, escolha a opção 'Extrair Todos...' para o descompactar.<br />
Destro da nova pasta, e dentro da pasta bin, execute o qtoctave.exe.<br />
<br />
Pode criar um atalho no ambiente de trabalho. Escolher Enviar para -> Ambiente de trabalho (criar atalho).<br />
<br />
Na primeira vez que é executado, é necessário definir onde está o octave. Para isso, tem que se ir Config->General configuration e depois selecionar Octave. O executável deverá estar em C:\Program Files\Octave-3.6.2\bin\octave-3.6.2.exe.<br />
<br />
=== Edição de scripts (em Linux) ===<br />
<br />
No Linux, sugere-se a utilização do QtOctave.<br />
<br />
--><br />
<br />
=== Exercícios ===<br />
<br />
# Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.<br />
<syntaxhighlight><br />
# quero calcular a velocidade sabendo a:<br />
# distancia (km)<br />
# tempo (minutos)<br />
distancia = input("Indique os Kms percorridos: ");<br />
tempo = input("Indique os minutos gastos: ");<br />
# preciso de transformar minutos em horas<br />
horas = tempo/60;<br />
velocidade = distancia/horas;<br />
printf("Os %d Km foram percorridos a %.2f Km/h\n", distancia, velocidade);<br />
</syntaxhighlight><br />
# Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento. Sugestão: use <syntaxhighlight>str2num(datestr(now, "YYYY"))</syntaxhighlight> para ir buscar o ano atual.<br />
# Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.<br />
# Escreva uma script que realize a conversão de polegadas para centímetros<br />
# Dado um valor em libras, escreva uma script que calcule o valor correspondente em quilos<br />
# Escreva um programa que receba uma palavra e coloque todos os caracteres da palavra em maiúsculas. Usar a função "upper"<br />
# Desenvolva uma script que receba uma palavra como parâmetro e retorne o número de vogais desta palavra. Usar a função "regexpi"<br />
# Escreva uma script que leia um vetor e calcule seu desvio padrão usando apenas as funções "sum" e "length"<br />
<br />
=== Âmbito das variáveis ===<br />
<br />
Na seguinte script <syntaxhighlight enclose="none">idade.m</syntaxhighlight>, utiliza-se uma variável <syntaxhighlight enclose="none">idade</syntaxhighlight> 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 <syntaxhighlight enclose="none">idade</syntaxhighlight> passa a ser uma referência para a variável e não para a script.<br />
<br />
<syntaxhighlight><br />
# idade.m<br />
# script octave<br />
# calcular a idade de uma pessoa<br />
#<br />
# ESTA SCRIPT TEM UM ERRO.<br />
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.<br />
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.<br />
#<br />
# Desta forma, só se consegue chamar a script uma vez<br />
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.<br />
ano = input("Ano de nascimento?\n");<br />
idade = 2012 - ano;<br />
printf("Você tem %d anos de idade\n", idade);<br />
</syntaxhighlight></div>RafaelPereirahttp://octave.di.uminho.pt/index.php?title=Programas&diff=8674Programas2014-10-07T19:27:05Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>[[Ficheiro:Steve jobs how to think.png]]<br />
<br />
Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos um a um, podemos agrupar esses mesmos comandos num '''programa'''. Na literatura inglesa 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.<br />
<br />
Os comandos são guardados num documento com a extensão ''.m''. Tudo o que se escreve na linha de comandos do Octave, pode-se escrever num programa. Depois de prontos, os programas podem ser executados quantas vezes se quiser, e podem ser enviados para outros colegas, para executarem o mesmo programa. <br />
<br />
Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.<br />
<br />
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 na linha de comandos do Octave.<br />
<br />
==== Exemplo ====<br />
<br />
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.<br />
<br />
<syntaxhighlight><br />
# calcula a area de um retangulo, dada a largura e o comprimento<br />
# para executar o programa, basta escrever:<br />
# arearetangulo<br />
#<br />
largura = input("Largura?\n");<br />
comprimento = input("Comprimento?\n");<br />
area = largura * comprimento;<br />
printf("A área é: %g\n", area);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Depois de guardado o programa na pasta atual do Octave, executa-se o mesmo escrevendo apenas o nome (sem a extensão). Exemplo:<br />
<br />
<syntaxhighlight><br />
>> arearetangulo<br />
Largura?<br />
90<br />
Comprimento?<br />
120<br />
A área é: 10800<br />
</syntaxhighlight><br />
<br />
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m e está na pasta atual. Para tal, da mesma forma que temos os comandos <syntaxhighlight enclose="none">who</syntaxhighlight> e <syntaxhighlight enclose="none">whos</syntaxhighlight> para ver que variáveis estão definidas, temos um comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão definidos.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>><br />
</syntaxhighlight><br />
<br />
Alternativamente, pode usar os comandos mais genéricos para saber qual a pasta atual (reveja a forma de [[Gestão de ficheiros | saber e mudar a pasta atual]]) e depois inspecionar os ficheiros .m da pasta fazendo:<br />
<br />
<syntaxhighlight><br />
dir *.m<br />
</syntaxhighlight><br />
<br />
Se precisar, pode descarregar a versão deste programa <code>arearetangulo.m</code> disponível em http://octave.di.uminho.pt/images/files/.<br />
<br />
===== Análise do código =====<br />
<br />
Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.<br />
<br />
# 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.<br />
# As variáveis são GLOBAIS. Isto é, NUNCA use o nome do programa para uma variável ou vice versa. Este perigo está explicado de forma detalhada na seção [[#Âmbito das variáveis]].<br />
# 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.<br />
<syntaxhighlight><br />
octave:1> b=10<br />
b = 10<br />
octave:2> b=b+20;<br />
octave:3><br />
</syntaxhighlight><br />
<br />
===== Importância dos comentários =====<br />
<br />
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.<br />
<br />
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.<br />
<br />
O Octave tira partido dos comentários para dar alguma informação sobre o que faz um programa.<br />
<br />
Neste primeiro programa, começámos por por alguns comentários. Por isso, geralmente depois de usar o comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão disponíveis, usamos o comando <syntaxhighlight enclose="none">help</syntaxhighlight> para saber o que faz um dado programa.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>> help arearetangulo<br />
`arearetangulo' is a script from the file /home/jgr/Documentos/Aulas/13141S/OCV/arearetangulo.m<br />
<br />
calcula a area de um retangulo, dada a largura e o comprimento<br />
para executar o programa, basta escrever:<br />
arearetangulo<br />
<br />
<br />
Additional help for built-in functions and operators is<br />
available in the on-line version of the manual. Use the command<br />
`doc <topic>' to search the manual index.<br />
<br />
Help and information about Octave is also available on the WWW<br />
at http://www.octave.org and via the help@octave.org<br />
mailing list.<br />
>><br />
</syntaxhighlight><br />
<br />
Repare que o Octave mostra os comentários colocados no início do programa. Por isso, comece sempre os programas com alguns comentários.<br />
<br />
<!--<br />
==== Octave GUI para Windows ====<br />
<br />
Se quiser investir um pouco de tempo, explore a GUI (interface gráfica) existente para Windows. Em vez de arrancar o Octave com o atalho ''Octave 3.6.2'', escolha no menu iniciar, dentro de ''Todos os Programas'', e depois dentro de ''GNU Octave (3.6.2)'' a programa ''Octave 3.6.2 (Graphical User-Interface)''.<br />
<br />
É uma interface ainda pouco robusta, mas que inclui um editor. Esse editor é sensível à sintaxe do Octave. Na imagem seguinte, mostra-se esta GUI, com o editor de scripts aberto.<br />
<br />
[[Ficheiro:Octave gui com editor.png]]<br />
<br />
==== QtOctave para Windows ====<br />
<br />
Existe uma outra alternativa que é o QtOctave, que pode ser descarregado a partir do [http://www.outsch.org/2011/01/29/qtoctave-0-10-1-for-windows/ blog do autor].<br />
<br />
Depois de descarregar o ficheiro qtoctave-0.10.1-win32.zip, com o rato sobre o mesmo, escolha a opção 'Extrair Todos...' para o descompactar.<br />
Destro da nova pasta, e dentro da pasta bin, execute o qtoctave.exe.<br />
<br />
Pode criar um atalho no ambiente de trabalho. Escolher Enviar para -> Ambiente de trabalho (criar atalho).<br />
<br />
Na primeira vez que é executado, é necessário definir onde está o octave. Para isso, tem que se ir Config->General configuration e depois selecionar Octave. O executável deverá estar em C:\Program Files\Octave-3.6.2\bin\octave-3.6.2.exe.<br />
<br />
=== Edição de scripts (em Linux) ===<br />
<br />
No Linux, sugere-se a utilização do QtOctave.<br />
<br />
--><br />
<br />
=== Exercícios ===<br />
<br />
# Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.<br />
<syntaxhighlight><br />
# quero calcular a velocidade sabendo a:<br />
# distancia (km)<br />
# tempo (minutos)<br />
distancia = input("Indique os Kms percorridos: ");<br />
tempo = input("Indique os minutos gastos: ");<br />
# preciso de transformar minutos em horas<br />
horas = tempo/60;<br />
velocidade = distancia/horas;<br />
printf("Os %d Km foram percorridos a %.2f Km/h\n", distancia, velocidade);<br />
</syntaxhighlight><br />
# Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento. Sugestão: use <syntaxhighlight>str2num(datestr(now, "YYYY"))</syntaxhighlight> para ir buscar o ano atual.<br />
# Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.<br />
# Escreva uma script que realize a conversão de polegadas para centímetros<br />
# Dado um valor em libras, escreva uma script que calcule o valor correspondente em quills<br />
# Escreva um programa que receba uma palavra e coloque todos os caracteres da palavra em maiúsculas<br />
# Desenvolva uma script que receba uma palavra como parâmetro e retorne o número de vogais desta palavra. Usar a função "regexpi"<br />
# Escreva uma script que leia um vetor e calcule seu desvio padrão usando apenas as funções "sum" e "length"<br />
<br />
=== Âmbito das variáveis ===<br />
<br />
Na seguinte script <syntaxhighlight enclose="none">idade.m</syntaxhighlight>, utiliza-se uma variável <syntaxhighlight enclose="none">idade</syntaxhighlight> 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 <syntaxhighlight enclose="none">idade</syntaxhighlight> passa a ser uma referência para a variável e não para a script.<br />
<br />
<syntaxhighlight><br />
# idade.m<br />
# script octave<br />
# calcular a idade de uma pessoa<br />
#<br />
# ESTA SCRIPT TEM UM ERRO.<br />
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.<br />
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.<br />
#<br />
# Desta forma, só se consegue chamar a script uma vez<br />
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.<br />
ano = input("Ano de nascimento?\n");<br />
idade = 2012 - ano;<br />
printf("Você tem %d anos de idade\n", idade);<br />
</syntaxhighlight></div>RafaelPereirahttp://octave.di.uminho.pt/index.php?title=Programas&diff=8673Programas2014-10-07T19:25:51Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>[[Ficheiro:Steve jobs how to think.png]]<br />
<br />
Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos um a um, podemos agrupar esses mesmos comandos num '''programa'''. Na literatura inglesa 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.<br />
<br />
Os comandos são guardados num documento com a extensão ''.m''. Tudo o que se escreve na linha de comandos do Octave, pode-se escrever num programa. Depois de prontos, os programas podem ser executados quantas vezes se quiser, e podem ser enviados para outros colegas, para executarem o mesmo programa. <br />
<br />
Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.<br />
<br />
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 na linha de comandos do Octave.<br />
<br />
==== Exemplo ====<br />
<br />
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.<br />
<br />
<syntaxhighlight><br />
# calcula a area de um retangulo, dada a largura e o comprimento<br />
# para executar o programa, basta escrever:<br />
# arearetangulo<br />
#<br />
largura = input("Largura?\n");<br />
comprimento = input("Comprimento?\n");<br />
area = largura * comprimento;<br />
printf("A área é: %g\n", area);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Depois de guardado o programa na pasta atual do Octave, executa-se o mesmo escrevendo apenas o nome (sem a extensão). Exemplo:<br />
<br />
<syntaxhighlight><br />
>> arearetangulo<br />
Largura?<br />
90<br />
Comprimento?<br />
120<br />
A área é: 10800<br />
</syntaxhighlight><br />
<br />
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m e está na pasta atual. Para tal, da mesma forma que temos os comandos <syntaxhighlight enclose="none">who</syntaxhighlight> e <syntaxhighlight enclose="none">whos</syntaxhighlight> para ver que variáveis estão definidas, temos um comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão definidos.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>><br />
</syntaxhighlight><br />
<br />
Alternativamente, pode usar os comandos mais genéricos para saber qual a pasta atual (reveja a forma de [[Gestão de ficheiros | saber e mudar a pasta atual]]) e depois inspecionar os ficheiros .m da pasta fazendo:<br />
<br />
<syntaxhighlight><br />
dir *.m<br />
</syntaxhighlight><br />
<br />
Se precisar, pode descarregar a versão deste programa <code>arearetangulo.m</code> disponível em http://octave.di.uminho.pt/images/files/.<br />
<br />
===== Análise do código =====<br />
<br />
Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.<br />
<br />
# 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.<br />
# As variáveis são GLOBAIS. Isto é, NUNCA use o nome do programa para uma variável ou vice versa. Este perigo está explicado de forma detalhada na seção [[#Âmbito das variáveis]].<br />
# 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.<br />
<syntaxhighlight><br />
octave:1> b=10<br />
b = 10<br />
octave:2> b=b+20;<br />
octave:3><br />
</syntaxhighlight><br />
<br />
===== Importância dos comentários =====<br />
<br />
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.<br />
<br />
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.<br />
<br />
O Octave tira partido dos comentários para dar alguma informação sobre o que faz um programa.<br />
<br />
Neste primeiro programa, começámos por por alguns comentários. Por isso, geralmente depois de usar o comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão disponíveis, usamos o comando <syntaxhighlight enclose="none">help</syntaxhighlight> para saber o que faz um dado programa.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>> help arearetangulo<br />
`arearetangulo' is a script from the file /home/jgr/Documentos/Aulas/13141S/OCV/arearetangulo.m<br />
<br />
calcula a area de um retangulo, dada a largura e o comprimento<br />
para executar o programa, basta escrever:<br />
arearetangulo<br />
<br />
<br />
Additional help for built-in functions and operators is<br />
available in the on-line version of the manual. Use the command<br />
`doc <topic>' to search the manual index.<br />
<br />
Help and information about Octave is also available on the WWW<br />
at http://www.octave.org and via the help@octave.org<br />
mailing list.<br />
>><br />
</syntaxhighlight><br />
<br />
Repare que o Octave mostra os comentários colocados no início do programa. Por isso, comece sempre os programas com alguns comentários.<br />
<br />
<!--<br />
==== Octave GUI para Windows ====<br />
<br />
Se quiser investir um pouco de tempo, explore a GUI (interface gráfica) existente para Windows. Em vez de arrancar o Octave com o atalho ''Octave 3.6.2'', escolha no menu iniciar, dentro de ''Todos os Programas'', e depois dentro de ''GNU Octave (3.6.2)'' a programa ''Octave 3.6.2 (Graphical User-Interface)''.<br />
<br />
É uma interface ainda pouco robusta, mas que inclui um editor. Esse editor é sensível à sintaxe do Octave. Na imagem seguinte, mostra-se esta GUI, com o editor de scripts aberto.<br />
<br />
[[Ficheiro:Octave gui com editor.png]]<br />
<br />
==== QtOctave para Windows ====<br />
<br />
Existe uma outra alternativa que é o QtOctave, que pode ser descarregado a partir do [http://www.outsch.org/2011/01/29/qtoctave-0-10-1-for-windows/ blog do autor].<br />
<br />
Depois de descarregar o ficheiro qtoctave-0.10.1-win32.zip, com o rato sobre o mesmo, escolha a opção 'Extrair Todos...' para o descompactar.<br />
Destro da nova pasta, e dentro da pasta bin, execute o qtoctave.exe.<br />
<br />
Pode criar um atalho no ambiente de trabalho. Escolher Enviar para -> Ambiente de trabalho (criar atalho).<br />
<br />
Na primeira vez que é executado, é necessário definir onde está o octave. Para isso, tem que se ir Config->General configuration e depois selecionar Octave. O executável deverá estar em C:\Program Files\Octave-3.6.2\bin\octave-3.6.2.exe.<br />
<br />
=== Edição de scripts (em Linux) ===<br />
<br />
No Linux, sugere-se a utilização do QtOctave.<br />
<br />
--><br />
<br />
=== Exercícios ===<br />
<br />
# Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.<br />
<syntaxhighlight><br />
# quero calcular a velocidade sabendo a:<br />
# distancia (km)<br />
# tempo (minutos)<br />
distancia = input("Indique os Kms percorridos: ");<br />
tempo = input("Indique os minutos gastos: ");<br />
# preciso de transformar minutos em horas<br />
horas = tempo/60;<br />
velocidade = distancia/horas;<br />
printf("Os %d Km foram percorridos a %.2f Km/h\n", distancia, velocidade);<br />
</syntaxhighlight><br />
# Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento. Sugestão: use <syntaxhighlight>str2num(datestr(now, "YYYY"))</syntaxhighlight> para ir buscar o ano atual.<br />
# Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.<br />
# Escreva uma script que realize a conversão de polegadas para centímetros<br />
# Dado um valor em libras, escreva uma script que calcule o valor correspondente em quills<br />
# Escreva um programa que receba uma palavra e coloque todos os caracteres da palavra em maiúsculas<br />
# Desenvolva uma script que receba uma palavra como parâmetro e retorne o número de vogais desta palavra<br />
# Escreva uma script que leia um vetor e calcule seu desvio padrão usando apenas as funções "sum" e "length"<br />
<br />
=== Âmbito das variáveis ===<br />
<br />
Na seguinte script <syntaxhighlight enclose="none">idade.m</syntaxhighlight>, utiliza-se uma variável <syntaxhighlight enclose="none">idade</syntaxhighlight> 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 <syntaxhighlight enclose="none">idade</syntaxhighlight> passa a ser uma referência para a variável e não para a script.<br />
<br />
<syntaxhighlight><br />
# idade.m<br />
# script octave<br />
# calcular a idade de uma pessoa<br />
#<br />
# ESTA SCRIPT TEM UM ERRO.<br />
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.<br />
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.<br />
#<br />
# Desta forma, só se consegue chamar a script uma vez<br />
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.<br />
ano = input("Ano de nascimento?\n");<br />
idade = 2012 - ano;<br />
printf("Você tem %d anos de idade\n", idade);<br />
</syntaxhighlight></div>RafaelPereirahttp://octave.di.uminho.pt/index.php?title=Programas&diff=8672Programas2014-10-07T15:54:23Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>[[Ficheiro:Steve jobs how to think.png]]<br />
<br />
Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos um a um, podemos agrupar esses mesmos comandos num '''programa'''. Na literatura inglesa 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.<br />
<br />
Os comandos são guardados num documento com a extensão ''.m''. Tudo o que se escreve na linha de comandos do Octave, pode-se escrever num programa. Depois de prontos, os programas podem ser executados quantas vezes se quiser, e podem ser enviados para outros colegas, para executarem o mesmo programa. <br />
<br />
Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.<br />
<br />
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 na linha de comandos do Octave.<br />
<br />
==== Exemplo ====<br />
<br />
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.<br />
<br />
<syntaxhighlight><br />
# calcula a area de um retangulo, dada a largura e o comprimento<br />
# para executar o programa, basta escrever:<br />
# arearetangulo<br />
#<br />
largura = input("Largura?\n");<br />
comprimento = input("Comprimento?\n");<br />
area = largura * comprimento;<br />
printf("A área é: %g\n", area);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Depois de guardado o programa na pasta atual do Octave, executa-se o mesmo escrevendo apenas o nome (sem a extensão). Exemplo:<br />
<br />
<syntaxhighlight><br />
>> arearetangulo<br />
Largura?<br />
90<br />
Comprimento?<br />
120<br />
A área é: 10800<br />
</syntaxhighlight><br />
<br />
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m e está na pasta atual. Para tal, da mesma forma que temos os comandos <syntaxhighlight enclose="none">who</syntaxhighlight> e <syntaxhighlight enclose="none">whos</syntaxhighlight> para ver que variáveis estão definidas, temos um comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão definidos.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>><br />
</syntaxhighlight><br />
<br />
Alternativamente, pode usar os comandos mais genéricos para saber qual a pasta atual (reveja a forma de [[Gestão de ficheiros | saber e mudar a pasta atual]]) e depois inspecionar os ficheiros .m da pasta fazendo:<br />
<br />
<syntaxhighlight><br />
dir *.m<br />
</syntaxhighlight><br />
<br />
Se precisar, pode descarregar a versão deste programa <code>arearetangulo.m</code> disponível em http://octave.di.uminho.pt/images/files/.<br />
<br />
===== Análise do código =====<br />
<br />
Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.<br />
<br />
# 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.<br />
# As variáveis são GLOBAIS. Isto é, NUNCA use o nome do programa para uma variável ou vice versa. Este perigo está explicado de forma detalhada na seção [[#Âmbito das variáveis]].<br />
# 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.<br />
<syntaxhighlight><br />
octave:1> b=10<br />
b = 10<br />
octave:2> b=b+20;<br />
octave:3><br />
</syntaxhighlight><br />
<br />
===== Importância dos comentários =====<br />
<br />
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.<br />
<br />
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.<br />
<br />
O Octave tira partido dos comentários para dar alguma informação sobre o que faz um programa.<br />
<br />
Neste primeiro programa, começámos por por alguns comentários. Por isso, geralmente depois de usar o comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão disponíveis, usamos o comando <syntaxhighlight enclose="none">help</syntaxhighlight> para saber o que faz um dado programa.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>> help arearetangulo<br />
`arearetangulo' is a script from the file /home/jgr/Documentos/Aulas/13141S/OCV/arearetangulo.m<br />
<br />
calcula a area de um retangulo, dada a largura e o comprimento<br />
para executar o programa, basta escrever:<br />
arearetangulo<br />
<br />
<br />
Additional help for built-in functions and operators is<br />
available in the on-line version of the manual. Use the command<br />
`doc <topic>' to search the manual index.<br />
<br />
Help and information about Octave is also available on the WWW<br />
at http://www.octave.org and via the help@octave.org<br />
mailing list.<br />
>><br />
</syntaxhighlight><br />
<br />
Repare que o Octave mostra os comentários colocados no início do programa. Por isso, comece sempre os programas com alguns comentários.<br />
<br />
<!--<br />
==== Octave GUI para Windows ====<br />
<br />
Se quiser investir um pouco de tempo, explore a GUI (interface gráfica) existente para Windows. Em vez de arrancar o Octave com o atalho ''Octave 3.6.2'', escolha no menu iniciar, dentro de ''Todos os Programas'', e depois dentro de ''GNU Octave (3.6.2)'' a programa ''Octave 3.6.2 (Graphical User-Interface)''.<br />
<br />
É uma interface ainda pouco robusta, mas que inclui um editor. Esse editor é sensível à sintaxe do Octave. Na imagem seguinte, mostra-se esta GUI, com o editor de scripts aberto.<br />
<br />
[[Ficheiro:Octave gui com editor.png]]<br />
<br />
==== QtOctave para Windows ====<br />
<br />
Existe uma outra alternativa que é o QtOctave, que pode ser descarregado a partir do [http://www.outsch.org/2011/01/29/qtoctave-0-10-1-for-windows/ blog do autor].<br />
<br />
Depois de descarregar o ficheiro qtoctave-0.10.1-win32.zip, com o rato sobre o mesmo, escolha a opção 'Extrair Todos...' para o descompactar.<br />
Destro da nova pasta, e dentro da pasta bin, execute o qtoctave.exe.<br />
<br />
Pode criar um atalho no ambiente de trabalho. Escolher Enviar para -> Ambiente de trabalho (criar atalho).<br />
<br />
Na primeira vez que é executado, é necessário definir onde está o octave. Para isso, tem que se ir Config->General configuration e depois selecionar Octave. O executável deverá estar em C:\Program Files\Octave-3.6.2\bin\octave-3.6.2.exe.<br />
<br />
=== Edição de scripts (em Linux) ===<br />
<br />
No Linux, sugere-se a utilização do QtOctave.<br />
<br />
--><br />
<br />
=== Exercícios ===<br />
<br />
# Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.<br />
<syntaxhighlight><br />
# quero calcular a velocidade sabendo a:<br />
# distancia (km)<br />
# tempo (minutos)<br />
distancia = input("Indique os Kms percorridos: ");<br />
tempo = input("Indique os minutos gastos: ");<br />
# preciso de transformar minutos em horas<br />
horas = tempo/60;<br />
velocidade = distancia/horas;<br />
printf("Os %d Km foram percorridos a %.2f Km/h\n", distancia, velocidade);<br />
</syntaxhighlight><br />
# Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento. Sugestão: use <syntaxhighlight>str2num(datestr(now, "YYYY"))</syntaxhighlight> para ir buscar o ano atual.<br />
# Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.<br />
# Escreva uma script que realize a conversão de polegadas para centímetros<br />
# Dado um valor em libras, escreva uma script que calcule o valor correspondente em quilos<br />
# Escreva uma script que leia um vetor e calcule seu desvio padrão usando apenas as funções "sum" e "length"<br />
<br />
=== Âmbito das variáveis ===<br />
<br />
Na seguinte script <syntaxhighlight enclose="none">idade.m</syntaxhighlight>, utiliza-se uma variável <syntaxhighlight enclose="none">idade</syntaxhighlight> 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 <syntaxhighlight enclose="none">idade</syntaxhighlight> passa a ser uma referência para a variável e não para a script.<br />
<br />
<syntaxhighlight><br />
# idade.m<br />
# script octave<br />
# calcular a idade de uma pessoa<br />
#<br />
# ESTA SCRIPT TEM UM ERRO.<br />
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.<br />
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.<br />
#<br />
# Desta forma, só se consegue chamar a script uma vez<br />
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.<br />
ano = input("Ano de nascimento?\n");<br />
idade = 2012 - ano;<br />
printf("Você tem %d anos de idade\n", idade);<br />
</syntaxhighlight></div>RafaelPereirahttp://octave.di.uminho.pt/index.php?title=Manipula%C3%A7%C3%A3o_de_vetores&diff=8671Manipulação de vetores2014-10-07T15:35:06Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>Existem muitas formas de manipular vetores no Octave.<br />
<br />
=== Definição de um vetor ===<br />
<br />
A forma mais simples de definir um vetor em Octave é listando os valores do mesmo entre '[' e ']'. Pode separar cada um dos elementos com vírgulas ou com espaços.<br />
<br />
<syntaxhighlight><br />
>> vel = [ 50 50 70 90 120 ]<br />
vel =<br />
50 50 70 90 120<br />
>> peso = [ 82.4, 82.7, 82.5]<br />
peso =<br />
82.400 82.700 82.500<br />
</syntaxhighlight><br />
<br />
===== Notação =====<br />
<br />
O vetor anterior poderá ser apresentado numa notação ligeiramente diferente, em que todos os números são multiplicados por 10 (1.0e+01), da seguinte forma:<br />
<br />
<syntaxhighlight><br />
>> peso = [82.4, 82.7, 82.5]<br />
peso =<br />
<br />
1.0e+01 *<br />
<br />
8.24000 8.27000 8.25000<br />
</syntaxhighlight><br />
<br />
Para usar a notação normal, usa-se a definição <code>format long g</code> (ou a função <code>fixed_point_format</code>). Mais informação sobre [http://www.gnu.org/software/octave/doc/interpreter/Terminal-Output.html formatos].<br />
<br />
<syntaxhighlight><br />
>> format long g<br />
>> peso = [82.4, 82.7, 82.5]<br />
peso =<br />
82.4 82.7 82.5<br />
>><br />
</syntaxhighlight><br />
<br />
=== Definição de um vetor por compreensão ===<br />
<br />
Pode-se definir um vetor sem ter que enumerar todos os seus elementos. Uma forma muito simpática de o fazer é através da indicação do valor inicial, um incremento e o limite. O operador usa-se da seguinte forma:<br />
<br />
''valor inicial: incremento: limite''<br />
<br />
<syntaxhighlight><br />
>> 1:1/3:3<br />
ans =<br />
1.0000 1.3333 1.6667 2.0000 2.3333 2.6667 3.0000<br />
</syntaxhighlight><br />
<br />
Desta forma é muito fácil, por exemplo, calcular os valores da função y = 2 * x - 3 para os valores de 1 a 10.<br />
<br />
<syntaxhighlight><br />
>> x = 1:1:10<br />
x =<br />
1 2 3 4 5 6 7 8 9 10<br />
>> y = 2*x-3<br />
y =<br />
-1 1 3 5 7 9 11 13 15 17<br />
</syntaxhighlight><br />
<br />
Pode ser abreviado para ''valor inicial: limite'' assumindo-se que o incremento é 1. Pode-se fazer, por exemplo:<br />
<br />
<syntaxhighlight><br />
>> 15:20<br />
ans =<br />
<br />
15 16 17 18 19 20<br />
</syntaxhighlight><br />
<br />
Alternativamente, pode-se usar a função <code>linspace</code> para gerar um vetor com N elementos, igualmente espaçados entre o valor inicial e final, usando a sintaxe:<br />
<br />
<syntaxhighlight><br />
linspace(inicial,final,N)<br />
</syntaxhighlight><br />
<br />
Para obter um vetor com 6 elementos, igualmente espaçados entre 1 e 10, escreve-se:<br />
<br />
<syntaxhighlight><br />
>> linspace(1,10,6)<br />
ans =<br />
<br />
1.0000 2.8000 4.6000 6.4000 8.2000 10.0000<br />
<br />
</syntaxhighlight><br />
<br />
=== Feedback ===<br />
<br />
Quando se define um vetor, o octave apresenta imediatamente o mesmo, como aconteceu nos exercícios anteriores. Caso não se pretenda ter esse feedback, termina-se a instrução com <code>;</code>. No exemplo seguinte define-se um vetor x com e sem <code>;</code> no fim da instrução.<br />
<br />
<syntaxhighlight><br />
>> x = 1:10<br />
x =<br />
1 2 3 4 5 6 7 8 9 10<br />
>> x = 1:10;<br />
</syntaxhighlight><br />
<br />
=== Operações ===<br />
<br />
Se aplicar um operador normal, como a multiplicação, a um argumento do tipo vetor, o mesmo é aplicado a todos os elementos do vetor.<br />
<br />
<syntaxhighlight><br />
>> val = [1 2 3 4 5]<br />
val =<br />
1 2 3 4 5<br />
>> val*2<br />
ans =<br />
2 4 6 8 10<br />
</syntaxhighlight><br />
<br />
Da mesma forma, pode aplicar uma função a todos os elementos de um vetor.<br />
<br />
<syntaxhighlight><br />
>> valores = [0 pi/2 pi]<br />
valores =<br />
0.00000 1.57080 3.14159<br />
>> sin(valores)<br />
ans =<br />
0.00000 1.00000 0.00000<br />
</syntaxhighlight><br />
<br />
Operadores sobre os elementos dos vectores<br />
<br />
<syntaxhighlight><br />
>> x = [4 5 6 7 8]<br />
x =<br />
4 5 6 7 8<br />
>> x^2<br />
error: for A^b, A must be square<br />
>> x.^2<br />
ans =<br />
<br />
16 25 36 49 64<br />
</syntaxhighlight><br />
<br />
=== Exercícios ===<br />
<br />
# Crie um vetor com todos os múltiplos de 3, entre 1 e 100.<br />
# Seja x = [1 2 3 4 5].<br />
## Calcule os valores da função y = -3x^2 +4x -1, para os valores de x.<br />
## Calcule o máximo valor de y (no domínio definido por x).<br />
# Considere os seguintes dados. Tem 3 artigos diferentes, cada um com o seu preço unitário, e quer adquirir determinadas quantidades de cada um desses artigos.<br />
#* Seja preco = [ 2.45, 3.95, 8]<br />
#* Seja quantidade = [2 6 3]<br />
## Calcule o preço a pagar por cada um dos artigos, atendendo à quantidade.<br />
## Calcule valor total, isto é o valor apagar por todos os artigos multiplicados pelas respectivas quantidades.<br />
# Crie um vetor com todos os múltiplos de 5 ou 7 entre 100 e 200<br />
<br />
{| class="collapsible collapsed wikitable"<br />
|-<br />
! Soluções dos exercícios<br />
! Resumo<br />
! Resposta<br />
|-<br />
| 1<br />
| Múltiplos de 3<br />
| <syntaxhighlight>3:3:100</syntaxhighlight><br />
|-<br />
| 2<br />
| Dados do problema<br />
| <syntaxhighlight>x = [1 2 3 4 5]</syntaxhighlight><br />
|-<br />
| 2.1<br />
| Calcular os valores da função y<br />
| <syntaxhighlight>y = -3*x.^2 + 4*x -1<br />
y =<br />
0 -5 -16 -33 -56<br />
</syntaxhighlight><br />
|-<br />
| 2.2<br />
| Máximo de y<br />
| <syntaxhighlight>max(y)<br />
ans = 0<br />
</syntaxhighlight><br />
|-<br />
| 3<br />
| Dados do problema<br />
| <syntaxhighlight>preco = [ 2.45, 3.95, 8 ]<br />
quantidade = [2 6 3]<br />
</syntaxhighlight><br />
|-<br />
| 3.1<br />
| Valor a pagar por cada artigo (preço x quantidade)<br />
| <syntaxhighlight>preco .* quantidade<br />
ans =<br />
4.9000 23.7000 24.0000<br />
</syntaxhighlight><br />
|-<br />
|rowspan="3"|3.2<br />
| Valor total a pagar<br />
| <syntaxhighlight>sum(preco .* quantidade)<br />
ans = 52.600<br />
</syntaxhighlight><br />
|-<br />
| Valor total a pagar<br />
| <syntaxhighlight>preco * quantidade'<br />
ans = 52.600<br />
</syntaxhighlight><br />
|-<br />
| Valor total a pagar<br />
| <syntaxhighlight>dot(preco,quantidade)<br />
ans = 52.600<br />
</syntaxhighlight><br />
|-<br />
| 4<br />
| Múltiplos de 5 ou 7 entre 100 e 200<br />
| <syntaxhighlight>num = 100:200;<br />
mult = num(or(mod(num, 5) == 0, mod(num, 7) == 0))<br />
</syntaxhighlight><br />
|}<br />
<br />
=== Grandes vetores ===<br />
No Octave pode-se guardar uma ou mais variáveis num documento para posterior utilização. No documento <code>heartrate.m</code>, disponível em http://octave.di.uminho.pt/images/files/ tem a definição de um vetor chamado <code>bpm</code>.<br />
Descarregue o documento, e depois leia o vetor <code>bpm</code> do documento <code>heartrate.m</code>.<br />
<br />
<syntaxhighlight><br />
>> load heartrate.m bpm<br />
<br />
>> load "C:/Users/jgr/Downloads/heartrate.m"<br />
>> who<br />
Variables in the current scope:<br />
ans bpm<br />
>> bpm<br />
</syntaxhighlight><br />
<br />
Neste vetor estão registados os batimentos cardíacos (batimentos por minuto) registados com intervalos de 5 segundos. O registo começou às 08:40:19 do dia 2012-10-03.<br />
<br />
i) Diga quantos valores tem o vetor <code>bpm</code>, ou seja, qual o comprimento ou dimensão do vetor <code>bpm</code>.<br />
<br />
<syntaxhighlight><br />
length(bpm)<br />
</syntaxhighlight><br />
<br />
ii) Diga qual o valor mínimo do vetor.<br />
<br />
<syntaxhighlight><br />
min(bpm)<br />
</syntaxhighlight><br />
<br />
ii) Diga qual o valor máximo do vetor.<br />
<br />
<syntaxhighlight><br />
max(bpm)<br />
</syntaxhighlight><br />
<br />
iii) Diga quantas vezes se registaram batimentos acima dos 160.<br />
<br />
<syntaxhighlight><br />
fortes = bpm(bpm > 160);<br />
length(fortes)<br />
</syntaxhighlight><br />
<br />
iv) Diga qual a média dos batimentos cardíacos.<br />
<br />
<syntaxhighlight><br />
mean(bpm)<br />
</syntaxhighlight><br />
ou<br />
<syntaxhighlight><br />
sum(bpm)/length(bpm)<br />
</syntaxhighlight><br />
<br />
v) Mostre apenas os primeiros 5 elementos do vetor <code>bpm</code>.<br />
<br />
<syntaxhighlight><br />
bpm(1:5)<br />
</syntaxhighlight></div>RafaelPereirahttp://octave.di.uminho.pt/index.php?title=Programas&diff=8670Programas2014-10-07T14:48:42Z<p>RafaelPereira: /* Exercícios */</p>
<hr />
<div>[[Ficheiro:Steve jobs how to think.png]]<br />
<br />
Para resolver problemas mais ou menos complexos, em vez de se escreverem os comandos um a um, podemos agrupar esses mesmos comandos num '''programa'''. Na literatura inglesa 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.<br />
<br />
Os comandos são guardados num documento com a extensão ''.m''. Tudo o que se escreve na linha de comandos do Octave, pode-se escrever num programa. Depois de prontos, os programas podem ser executados quantas vezes se quiser, e podem ser enviados para outros colegas, para executarem o mesmo programa. <br />
<br />
Portanto, sempre que haja necessidade de repetir diversas vezes as mesmas operações, torna-se mais interessante juntar essas operações num programa.<br />
<br />
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 na linha de comandos do Octave.<br />
<br />
==== Exemplo ====<br />
<br />
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.<br />
<br />
<syntaxhighlight><br />
# calcula a area de um retangulo, dada a largura e o comprimento<br />
# para executar o programa, basta escrever:<br />
# arearetangulo<br />
#<br />
largura = input("Largura?\n");<br />
comprimento = input("Comprimento?\n");<br />
area = largura * comprimento;<br />
printf("A área é: %g\n", area);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Depois de guardado o programa na pasta atual do Octave, executa-se o mesmo escrevendo apenas o nome (sem a extensão). Exemplo:<br />
<br />
<syntaxhighlight><br />
>> arearetangulo<br />
Largura?<br />
90<br />
Comprimento?<br />
120<br />
A área é: 10800<br />
</syntaxhighlight><br />
<br />
Se o programa não correr, confirme que o mesmo está a ser gravado com a extensão .m e está na pasta atual. Para tal, da mesma forma que temos os comandos <syntaxhighlight enclose="none">who</syntaxhighlight> e <syntaxhighlight enclose="none">whos</syntaxhighlight> para ver que variáveis estão definidas, temos um comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão definidos.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>><br />
</syntaxhighlight><br />
<br />
Alternativamente, pode usar os comandos mais genéricos para saber qual a pasta atual (reveja a forma de [[Gestão de ficheiros | saber e mudar a pasta atual]]) e depois inspecionar os ficheiros .m da pasta fazendo:<br />
<br />
<syntaxhighlight><br />
dir *.m<br />
</syntaxhighlight><br />
<br />
Se precisar, pode descarregar a versão deste programa <code>arearetangulo.m</code> disponível em http://octave.di.uminho.pt/images/files/.<br />
<br />
===== Análise do código =====<br />
<br />
Analisando a script anterior, podemos desde já salientar alguns aspectos importantes.<br />
<br />
# 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.<br />
# As variáveis são GLOBAIS. Isto é, NUNCA use o nome do programa para uma variável ou vice versa. Este perigo está explicado de forma detalhada na seção [[#Âmbito das variáveis]].<br />
# 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.<br />
<syntaxhighlight><br />
octave:1> b=10<br />
b = 10<br />
octave:2> b=b+20;<br />
octave:3><br />
</syntaxhighlight><br />
<br />
===== Importância dos comentários =====<br />
<br />
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.<br />
<br />
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.<br />
<br />
O Octave tira partido dos comentários para dar alguma informação sobre o que faz um programa.<br />
<br />
Neste primeiro programa, começámos por por alguns comentários. Por isso, geralmente depois de usar o comando <syntaxhighlight enclose="none">what</syntaxhighlight> para saber que programas estão disponíveis, usamos o comando <syntaxhighlight enclose="none">help</syntaxhighlight> para saber o que faz um dado programa.<br />
<br />
<syntaxhighlight><br />
>> what<br />
M-files in directory /home/jgr/Documentos/Aulas/13141S/OCV:<br />
<br />
arearetangulo.m espiral.m ocv.m<br />
calculavelocidade.m idade.m unnamed2.m<br />
>> help arearetangulo<br />
`arearetangulo' is a script from the file /home/jgr/Documentos/Aulas/13141S/OCV/arearetangulo.m<br />
<br />
calcula a area de um retangulo, dada a largura e o comprimento<br />
para executar o programa, basta escrever:<br />
arearetangulo<br />
<br />
<br />
Additional help for built-in functions and operators is<br />
available in the on-line version of the manual. Use the command<br />
`doc <topic>' to search the manual index.<br />
<br />
Help and information about Octave is also available on the WWW<br />
at http://www.octave.org and via the help@octave.org<br />
mailing list.<br />
>><br />
</syntaxhighlight><br />
<br />
Repare que o Octave mostra os comentários colocados no início do programa. Por isso, comece sempre os programas com alguns comentários.<br />
<br />
<!--<br />
==== Octave GUI para Windows ====<br />
<br />
Se quiser investir um pouco de tempo, explore a GUI (interface gráfica) existente para Windows. Em vez de arrancar o Octave com o atalho ''Octave 3.6.2'', escolha no menu iniciar, dentro de ''Todos os Programas'', e depois dentro de ''GNU Octave (3.6.2)'' a programa ''Octave 3.6.2 (Graphical User-Interface)''.<br />
<br />
É uma interface ainda pouco robusta, mas que inclui um editor. Esse editor é sensível à sintaxe do Octave. Na imagem seguinte, mostra-se esta GUI, com o editor de scripts aberto.<br />
<br />
[[Ficheiro:Octave gui com editor.png]]<br />
<br />
==== QtOctave para Windows ====<br />
<br />
Existe uma outra alternativa que é o QtOctave, que pode ser descarregado a partir do [http://www.outsch.org/2011/01/29/qtoctave-0-10-1-for-windows/ blog do autor].<br />
<br />
Depois de descarregar o ficheiro qtoctave-0.10.1-win32.zip, com o rato sobre o mesmo, escolha a opção 'Extrair Todos...' para o descompactar.<br />
Destro da nova pasta, e dentro da pasta bin, execute o qtoctave.exe.<br />
<br />
Pode criar um atalho no ambiente de trabalho. Escolher Enviar para -> Ambiente de trabalho (criar atalho).<br />
<br />
Na primeira vez que é executado, é necessário definir onde está o octave. Para isso, tem que se ir Config->General configuration e depois selecionar Octave. O executável deverá estar em C:\Program Files\Octave-3.6.2\bin\octave-3.6.2.exe.<br />
<br />
=== Edição de scripts (em Linux) ===<br />
<br />
No Linux, sugere-se a utilização do QtOctave.<br />
<br />
--><br />
<br />
=== Exercícios ===<br />
<br />
# Escreva uma script para calcular a velocidade de um veículo, dada a distância percorrida em Km e o tempo em minutos.<br />
<syntaxhighlight><br />
# quero calcular a velocidade sabendo a:<br />
# distancia (km)<br />
# tempo (minutos)<br />
distancia = input("Indique os Kms percorridos: ");<br />
tempo = input("Indique os minutos gastos: ");<br />
# preciso de transformar minutos em horas<br />
horas = tempo/60;<br />
velocidade = distancia/horas;<br />
printf("Os %d Km foram percorridos a %.2f Km/h\n", distancia, velocidade);<br />
</syntaxhighlight><br />
# Escreva uma script que calcula a idade de uma pessoa, sabendo o ano de nascimento<br />
# Dado o valor em Fahreneit, calcule a correspondente temperatura em Celcius, escrevendo uma script para o efeito.<br />
# Escreva uma script que realize a conversão de polegadas para centímetros<br />
# Dado um valor em libras, escreva uma script que calcule o valor correspondente em quilos<br />
# Escreva uma script que leia um vetor e calcule seu desvio padrão usando apenas as funções "sum" e "length"<br />
<br />
=== Âmbito das variáveis ===<br />
<br />
Na seguinte script <syntaxhighlight enclose="none">idade.m</syntaxhighlight>, utiliza-se uma variável <syntaxhighlight enclose="none">idade</syntaxhighlight> 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 <syntaxhighlight enclose="none">idade</syntaxhighlight> passa a ser uma referência para a variável e não para a script.<br />
<br />
<syntaxhighlight><br />
# idade.m<br />
# script octave<br />
# calcular a idade de uma pessoa<br />
#<br />
# ESTA SCRIPT TEM UM ERRO.<br />
# Esta script usa uma variável global 'idade' que é igual ao nome da script 'idade.m'.<br />
# Não se deve usar variáveis em scripts iguais aos nomes das scripts.<br />
#<br />
# Desta forma, só se consegue chamar a script uma vez<br />
# Depois disso, 'idade' passa a ser uma referência para a variável e não para a script.<br />
ano = input("Ano de nascimento?\n");<br />
idade = 2012 - ano;<br />
printf("Você tem %d anos de idade\n", idade);<br />
</syntaxhighlight></div>RafaelPereira