Qu es Octave?
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Introduccin a la programacin en Octave o o
Ana Echavarr Uribe a
Universidad EAFIT
Febrero, 2012
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Agenda
1 2 3 4 5 6 7
Qu es Octave? e Octave vs. Matlab Primeros pasos con Octave Funciones Arreglos Strings Recomendaciones
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Qu es Octave? e
GNU Octave es un lenguaje de programacin principalmente o enfocado a computaciones numricas. Este lenguaje tiene e capacidad para la solucin de problemas lineales y no lineales. o El programa generalmente se manipula a travs de su interfaz tipo e consola donde se pueden ejecutar diferentes comandos para la ejecucin de sus programas. o El lenguaje de Octave es similar al leguaje de Matlab por lo que la mayor de sus programas pueden ser fcilmente ejecutados en a a Matlab.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Qu es Octave? e
GNU Octave es un lenguaje de programacin principalmente o enfocado a computaciones numricas. Este lenguaje tiene e capacidad para la solucin de problemas lineales y no lineales. o El programa generalmente se manipula a travs de su interfaz tipo e consola donde se pueden ejecutar diferentes comandos para la ejecucin de sus programas. o El lenguaje de Octave es similar al leguaje de Matlab por lo que la mayor de sus programas pueden ser fcilmente ejecutados en a a Matlab.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Qu es Octave? e
GNU Octave es un lenguaje de programacin principalmente o enfocado a computaciones numricas. Este lenguaje tiene e capacidad para la solucin de problemas lineales y no lineales. o El programa generalmente se manipula a travs de su interfaz tipo e consola donde se pueden ejecutar diferentes comandos para la ejecucin de sus programas. o El lenguaje de Octave es similar al leguaje de Matlab por lo que la mayor de sus programas pueden ser fcilmente ejecutados en a a Matlab.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Octave vs. Matlab - Precio
El principal problema de Matlab es su precio. Una licencia de Matlab cuesta alrededor de USD$ 10,000 y cada toolbox adicional cuesta alrededor de USD $ 100. Sin embargo, una alternativa de software libre es Octave, que permite realizar programas similares a los de Matlab pero sin tener que invertir dinero en la licencia.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Octave vs. Matlab - Funcionalidades
Como Octave es un software gratuito no es adecuado hacer comparaciones directas entre las funcionalidades de Octave y Matlab. Sin embargo, para el uso comn (el que necesitarn para u a el curso) Octave proporciona todas las funciones necesarias.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Octave vs. Matlab - Interfaz
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Octave vs. Matlab - Ejemplo
Comparar Matlab y Octave es como comparar Oce y Open Oce. Para usuarios bsicos los dos tienen las mismas a funcionalidades pero uno de ellos es libre y el para el otro se necesita comprar una licencia.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Abriendo Octave
1 2
Instalar y abrir Octave Cambiar al directorio (carpeta) donde se va a trabajar cd ~/Documents/Universidad/Monitoria/
Escribir comandos en la consola: Funciones predenidas Nombre de archivos .m (guardados en el mismo directorio) Funciones hechas por el usuario. Escribir el comando edit para abrir la ventana del editor y escribir all un programa.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Programacin bsica en Octave o a
Sabemos que al programar se utilizan ciclos y decisiones. Veamos cmo se escriben estos en Octave. o
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ciclos
As se representan los ciclos en Octave: Ciclos Pseudocdigo: o para i desde 1 hasta n a = a + 1 fin Cdigo: o for i = 1 : 1 : n a = a + 1; end
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Decisiones
As se representan las decisiones en Octave: Decisiones Pseudocdigo: o si i < n a = a + 1 sino a = 0 fin Cdigo: o if (i < n) a = a + 1; else a = 0; end
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Operadores lgicos o
Los operadores lgicos en Octave se representan as o : Operadores lgicos o Matemticamente: a a<b ab a=b a=b a b (a y b) a b (a o b) a (no a)
En cdigo: o a < b a <= b a == b a = b a && b a || b a
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ciclos mientras
Ciclos mientras En pseudocdigo: o mientras i n y a < 10 a = a + 1 fin
En cdigo: o while (i <= n && a < 10) a = a + 1; end
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicios
Programar y ejecutar en Octave los siguientes programas: Ejercicio 1 n = 100, suma = 0 para i desde 1 hasta n suma = suma + i fin muestre suma Ejercicio 2 n = 100, i = 1, suma = 0 mientras que i n suma = suma + i i = i + 1 fin muestre suma
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicios
Programar y ejecutar en Octave los siguientes programas: Ejercicio 1 n = 100, suma = 0 para i desde 1 hasta n suma = suma + i fin muestre suma Ejercicio 2 n = 100, i = 1, suma = 0 mientras que i n suma = suma + i i = i + 1 fin muestre suma
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Reexin o
Preguntas
1
Los dos programas hacen lo mismo?
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Reexin o
Preguntas
1
Los dos programas hacen lo mismo? Respuesta: S los dos calculan la suma de los nmeros del 1 , u al 100
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Reexin o
Preguntas
1
Los dos programas hacen lo mismo? Respuesta: S los dos calculan la suma de los nmeros del 1 , u al 100 Cul es el valor nal de la variable suma? a
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Reexin o
Preguntas
1
Los dos programas hacen lo mismo? Respuesta: S los dos calculan la suma de los nmeros del 1 , u al 100 Cul es el valor nal de la variable suma? a Respuesta: suma = 5050. En general suma =
n(n+1) 2
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Funciones
Acabamos de escribir programas como una secuencia de instrucciones que no recibe parmetros y luego lo ejecutamos en la a ventana de Octave escribiendo el nombre del archivo. Sin embargo hay otra forma de ejecutar los programas entregndole algunos a valores como parmetros. Esta forma se logra escribiendo el a programa como una funcin. o
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Funciones
Ejemplo La siguiente funcin toma dos nmeros a y b y retorna su suma y o u su producto. function [suma, producto] = f(a, b) suma = a + b; producto = a * b; end function [suma, producto] = f(a, b) Se van a retornar los valores de las variables suma y producto. function [suma, producto] = f(a, b) La funcin va a o ser llamada por el nombre f. function [suma, producto] = f(a, b) La funcin o recibe dos parmetros que se van a llamar a y b. a
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Funciones
Ejemplo La siguiente funcin toma dos nmeros a y b y retorna su suma y o u su producto. function [suma, producto] = f(a, b) suma = a + b; producto = a * b; end function [suma, producto] = f(a, b) Se van a retornar los valores de las variables suma y producto. function [suma, producto] = f(a, b) La funcin va a o ser llamada por el nombre f. function [suma, producto] = f(a, b) La funcin o recibe dos parmetros que se van a llamar a y b. a
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Funciones
Cmo se ejecutan las funciones? o El archivo en el cual est guardada la funcin y la funcin deben a o o tener el mismo nombre. Luego se llama a la funcin as o . Ejemplo El resultado de f(5, 3) se guarda en las variables sum y prod. [sum, prod] = f(5, 3) sum = 8 prod = 15 Nota: Las funciones pueden ser llamadas tanto desde la ventana de comandos como desde otros programas guardados en el mismo directorio.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicio
Ejercicio 3 Escriba una funcin que, dado n, retorne la suma de los nmeros o u de 1 hasta n.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicio
Ejercicio 3 Escriba una funcin que, dado n, retorne la suma de los nmeros o u de 1 hasta n. Solucin o Una de las posibles soluciones ser a: function suma = sumar_hasta_n (n) suma = n * (n + 1) / 2; end
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Arreglos
En programacin existe una estructura de datos muy util que se o llama arreglo. Veamos cmo se representan los arreglos en Octave. o
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Inicializacin de arreglos o
Para crear un arreglo es necesario denir su nombre y su tamao n con una funcin de inicializacin. o o Inicializacin de arreglos o A = zeros(n, m) Inicializa el vector (o matriz) A en un tamao de n las y m columnas llenas de ceros. n A = ones(n, m) Inicializa el vector (o matriz) A en un tamao de n las y m columnas llenas de unos. n A = eye(n, m) Inicializa la matriz A como la matriz identidad de n las y m columnas (Matriz de ceros con unos en la diagonal). B = 1 : n Inicializa el vector B con los nmeros u consecutivos de 1 a n. Nota: Tambin se pueden inicializar matrices k-dimensionales e
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Inicializacin de arreglos o
El resultado de aplicar las funciones de inicializacin es un arreglo o del tamao especicado. n Ejemplos A = ones(2, 3) A= 1 1 1 1 1 1
A = [ 1 3 2 6; 4 8 -9 17; 3.5 12 11 8 ] 1 4 3.5 3 8 12 2 -9 11 6 17 8
A=
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Accediendo a posiciones de arreglos
Los arreglos en Octave empiezan con el nmero 1 y enumerando u primero las las y luego las columnas: Arreglos Para una matriz de n m a11 a21 A = a31 . . . an1 a12 a22 a32 . . . an2 a13 a23 a33 . . . an3 .. . a1m a2m a3m . . . anm
Para un vector de tamao n n B = b1 b2 b3 bn
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Accediendo a posiciones de arreglos
Se puede entonces acceder a una posicin de un arreglo basta con o llamarlo por su nombre y especicar los ndices del elemento al cual se quiere tener acceso ya sea para leer o alterar su valor. Arreglos var = A(i,j) asigna a la variable var el valor almacenado en la celda aij . A(i,j) = var reemplaza el valor guardado en aij por el valor de var. v = A(i,:) asigna al vector v el valor almacenado en la la i de la matriz A. A(:,j) = n : -1 : 1 reemplaza el valor de la columna j de A por el de los nmeros de 1 a n en orden descendente. u
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicio
Ejercicio 4 Realice un programa que, dado un nmero n 1, retorne un u arreglo cuya posicin i sea la suma de los nmeros de 1 a i. o u
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicio
Ejercicio 4 Realice un programa que, dado un nmero n 1, retorne un u arreglo cuya posicin i sea la suma de los nmeros de 1 a i. o u Solucin o function sumas = suma_en_vector(n) sumas = ones(n, 1); for i = 2 : n sumas(i) = sumas(i - 1) + i; end end
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Qu es un String? e
Un String es una palabra que en el computador se representa como un vector de caracteres (letras). Por ser vectores tienen las mismas propiedades que los arreglos numricos pero su inicializacin es e o diferente.
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Representacin de un String en Octave o
Los Strings se representan en Octave con las comillas simple ( ) as : Ejemplo s =Hola mundo Mi nombre es Ana
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Preguntas
Preguntas Sea s = Bienvenidos Cul es el resultado del comando s(1)? a
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Preguntas
Preguntas Sea s = Bienvenidos Cul es el resultado del comando s(1)? a B Cul es el resultado del comando s(1:4)? a
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Preguntas
Preguntas Sea s = Bienvenidos Cul es el resultado del comando s(1)? a B Cul es el resultado del comando s(1:4)? a Bien
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicio
Ejercicio 5 Teniendo el cuenta el resultado del ejercicio 3 modique el programa para que verique que n 1. En caso de que no sea as el programa debe mostrar un String que diga El nmero ingresado deber ser mayor o igual a 1. u
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Ejercicio
Ejercicio 5 Teniendo el cuenta el resultado del ejercicio 3 modique el programa para que verique que n 1. En caso de que no sea as el programa debe mostrar un String que diga El nmero ingresado deber ser mayor o igual a 1. u Solucin o function suma = sumar_hasta_n2 (n) if (n < 1) error = El nmero ingresado deber ser mayor u o igual a 1 suma = NaN; else suma = n * (n + 1) / 2; end end
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Recomendaciones nales
Algunos consejos para cuando se va a programar 1 Tener siempre un cdigo organizado, de tal manera que otra o persona que lo vaya a ver entienda qu es lo que se e est haciendo. Algunos consejos son: a
Tener el cdigo identado o Usar nombres claros para las variables Usar subfunciones como apoyo para una funcin muy grande o Comentar qu hace el cdigo, qu parmetros recibe y e o e a qu retorna y adems si hay una parte muy compleja explicar e a qu es lo se hace en ese pedazo del cdigo. En Octave se e o utiliza el s mbolo % para los comentarios
2
Saber cmo funciona el mtodo que se implement, o e o independientemente de qu persona de grupo lo program. e o Probar que sus mtodos funcionen ejecutndolo con casos de e a prueba para los que ya se sabe la respuesta (en el libro se presentan muchos casos en muchos ejemplos resueltos).
Qu es Octave? e
Octave vs. Matlab
Primeros pasos con Octave
Funciones
Arreglos
Strings
Recomendaciones
Prxima sesin o o
En la prxima sesin se aprendern algunos comandos de Octave o o a como: Entrada y salida de datos y mensajes. Manejo de funciones con el comando inline. Grca de funciones a Otros comandos utiles