1 1 Introducción a la Informática ITBA Teoría 5 2 Octave Lenguaje de programación de alto nivel orientado al procesamiento numérico. Permite resolver problemas de álgebra lineal, integrar funciones numéricamente, manipular polinomios, operar con matrices, etc.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
1
Introducción a la Informática
ITBATeoría 5
2
OctaveLenguaje de programación de alto nivelorientado al procesamiento numérico. Permite resolver problemas de álgebra lineal, integrar funciones numéricamente, manipularpolinomios, operar con matrices, etc.
2
3
Características
• Dirección www.octave.org.
• Parte del proyecto GNU con licencia GPL.
• Versiones para Windows, Mac y Linux.
• Es un programa de consola o sea no tieneintefaz gráfica .
Octave
4
Características
Permite ejecutar procesos:Dentro del programa mediante al ingreso de comandos por teclados.A través de archivos con funciones (definidos con extensión “<nombre de archivo>.m”)Mediante a scripts de bash
Octave
3
5
Ejecución
En linux desde la línea de comandos ingresar el comando ´octave´.Luego del mensaje inicial, se puede ingresar cualquier comando en el promptIngresar ‘quit’ o ‘exit’ para salir.Mediante a la función atexit se pueden agregar acciones a realizar al momento de salir
Octave
6
Ayuda
El comando ‘help’ sirve para ver la lista de operandos, comandos y funciones.‘help <nombre>' muestra la ayuda del comando (o función) con ese nombre. Ejemplo: ‘help help’ comenta como se usa el comando helpEl manual completo se encuentra online en: http://www.gnu.org/software/octave/doc/interpreter/index.html
No poner espacios entre la i y el numero que la precede
Los operadores que aplican a estos tipos de número son + - / * ^
8
Strings
Cadenas de caracteres que permiten guardar texto legible por los usuarios.Se delimitan con comillas dobles o simples (preferiblemente dobles).Se puede operar sobre los strings mediante a funciones especiales.
Octave
5
9
EscapesOctave
Vertical tab\v
Tab\t
Nueva linea\n
Comillas simples\'
Comillas dobles\"
Barra invertida\\
Escapes
10
Se define entre corchetesLa coma (o espacios) separa elementos de una fila.El punto y coma separa elementos de una columna.
VectoresOctave
octave:1> [ 21, 35, 67]ans = 21 35 67
octave:1> [ 21; 35; 67]ans = 21
3567
6
11
Matrices
Combinación de filas y columnas
Octave
octave:1> [ 10, 5, 8 ; 3, 4, 1]ans = 10 5 8
3 4 1
Se accede a los elemento utilizando ()
octave:1> [ 10, 5, 8 ; 3, 4, 1] (2, :)ans = 3 4 1
octave:1> [ 10, 5, 8 ; 3, 4, 1] (2, 2)ans = 4
El “:” indica toda la fila.
12
El operador :Genera un vector que contiene una secuencia de númerosEl comando a:b crea el vector
ones(N) crea una matriz de NxN con todos sus elementos igual a unoones(F,C) crea una matriz de FxC con todos unoszeros(N) y zeros(F,C) crea una matriz de NxN o FxC de ceroseye(N) y eye(F,C) crea una matriz identidad de tamaño NxN o FxCrand(N) y rand(F,C) crea una matriz de tamaño NxN o FxC con valores aletorios entre 0 y 1
Octave
14
Operaciones entre elementos
Al aplicar los operadores se debe tener en cuenta que la operación tenga sentido matemático. Por ejemplo:
Para que sea posible multiplicar dos matrices la primera matriz debe tener tantas columnas como la segunda filas.Para sumar matrices y/o vectores ambos operandosdeben tener la misma cantidad de elementos.
Si los operandos son mixtos, la operación es elemento a elemento.
Octave
8
15
Resumen de Operadores AritméticosOctave
Suma y resta de escalares Suma y resta de matrices
a + b a - b
Potencia de los elementos de una matriza.^ b
Potencia de un escalar o una matriza ^ b
Producto y división de matrices elemento a elementoa.* b a./ b
Producto y división de dos escalares Producto y división de dos matrices
a * b a / b
Suma y resta de matrices elemento a elementoa.+ b a.- b
16
Resumen de Operadores RelacionalesOctave
1 si a es mayor o igual a ba >= b
1 si a es menor o igual a ba <= b
1 si a es mayor a ba > b
1 si a es menor a ba < b
Desigualdad, la respuesta es 1 si a es distinto a b, ó 0 en caso contrario
a ~= b a <> b a != b
Igualdad, la respuesta es 1 si a es igual a b, ó0 en caso contrario
a == b
9
17
Resumen de Operadores Lógicos
Octave
And, 1 si a y b son distintos de 0a & b
a && b
Or, 1 si a ó b es distinto de 0a | b
a || b
Not, 1 si x es 0 y 0 si x es distinto de 0
!x
~x
18
La matriz TranspuestaOctaveAplicando el operador ' a una matriz se obtiene la matriz traspuesta
octave:1> [ 1 2 3; 4 5 6]
ans = 1 2 3 4 5 6
octave:2> [ 1 2 3; 4 5 6] '
ans = 1 4 2 5 3 6
10
19
Variables
Los nombres de variables responden a la expresión regular [a-zA-Z_][a-zA-Z_0-9]*Los nombres de variables son case-sensitivePara asignarle un valor a una variable se utiliza el símbolo '='Para utilizar su valor basta con indicar su nombre Los comandos who y whos permiten ver las variables
definidas.
Octave
octave:1> respuesta = 3 + 5 * 2respuesta = 13
octave:2>X = (3 + 5) * 2X = 16
octave:3> Y = 3 * X + 4Y = 52
20
Variables predefinidas
Hay algunas variables predefinidas que son utiles:
Octave
Contiene la respuesta a la ultimaoperación no asignadaans
0false
1true
Infinf
2.7183e
3.1416pi
11
21
Acceso a los elementos de una matriz con :Octave
•X(a:b,c:d) devolverá una matriz con los elementos de X que estén entre las filas a y b, y las columnas c y d
Devuelve true si todos los caracteres son letrasisalpha (s) Devuelve true si el string representa a un numeroisdigit (s) Pasa todos los caracteres a mayusculastoupper (s) Pasa todos los caracteres a minusculastolower (s) Corta el string s desde la posición beg y len carasubstr (s, beg, len) Reemplaza en s las ocurrecias de x por el string ystrrep (s, x, y) Indica si los strings son igualesstrcmp (s1, s2)
Divide el string s en n partes usando t como separador
split (s, t, n) Devuelve la ultima posición de t en srindex (s, t) Devuelve la primera posición de t en sindex (s, t)
Devuelve un vector con las ocurrencias de t en soverlap indica si las respuestas pueden sobreponerse
findstr (s, t, overlap)
Quita los espacios al final de un stringdeblank (s)
15
29
Funciones para StringsOctavefindstr ("ababab", "a") => [ 1, 3, 5 ] index ("Teststring", "t") => 4 rindex ("Teststring", "t") => 6 split ("Test string", "t") => "Tes " " s " "ring" split ("Test string", "t", 2) => "Tes " " string" strrep ("This is a test string", "is", "&%$") => "Th&%$ &%$ a test string" substr ("This is a test string", 6, 9) => "is a test" isalpha ("!Q@WERT^Y&") => [ 0, 1, 0, 1, 1, 1, 1, 0, 1, 0 ] Isdigit(“f2/0231a9?”) => [ 0, 1, 0, 1, 1, 1, 1, 0, 1, 0 ] olower ("MiXeD cAsE 123") => "mixed case 123" toupper ("MiXeD cAsE 123") => "MIXED CASE 123"
30
Entrada y SalidaOctave
octave:1> disp ("The value of pi is:"), disp (pi)the value of pi is: 3.1416
El comando ‘disp(x)’ permite escribir en la pantalla el contenido del parametro x. Siempre agrega un carácter de nueva linea al terminar.
octave:1> input ("Pick a number, any number! ")
El comando ‘input(x)’ imprime el mensaje x y espera que el usuario ingrese una expresión que evalua y resuelve
16
31
Gráficos
Octave no cuenta con una interfase gráfica. Para generargráficos se basa en la aplicación gnuPlot.
Octave
32
Gráficos en dos dimensiones
• Se utiliza el comando plot.
• En su versión más simple el comando plot(x) grafica los elementos del vector x.octave:1> X = sin(0:0.1:2*pi);octave:2> plot(X)
Octave
17
33
Gráficos en dos dimensiones
Agregando un segundo parámetro, plot(x,y)realiza un gráfico del vector y, en función del vector x.Los vectores x e y deben ser del mismo tamaño.Cada punto n de la curva tiene las coordenadas (x(n), y(n))
Octave
34
Gráficos en dos dimensiones
octave:1> X = 0:0.1:2*pi;octave:2> plot(X,sin(X))
Octave
18
35
Formato de gráficos en dos dimensiones
Agregando un tercer parámetro, plot(x,y,fmt) realiza un gráfico del vector y, en función del vector x con el formato especificado en fmt
El formato es una cadena de caracteres que especifica, el tipo de punto, su color y el nombre de la serie.
”*g;Coseno de X;”Los puntos se indican con un
asteriscoLos puntos son de color verde
(green)
Título de la serie(encerrado entre ; )
Octave
36
Formato de gráficos en dos dimensiones
Formato del punto:“-” grafica una línea que une los puntos“.” grafica puntos“+” grafica los puntos con forma de +“*” grafica los puntos con forma de *“o” grafica los puntos con forma de o“^” grafica impulsos
Octave permite que el usuario escriba sus propias funciones. A diferencia de los scripts, pueden recibir parámetros y/o retornar valoresCada función se escribe en un archivoEl archivo debe llamarse igual que la función con extensión ".m“Ejemplo de invocación con pasaje de parámetro:
Ejecutar : OctaveDentro del contexto de octave ejecutar :
CalcularRaiz (8)
Octave
26
51
Declaración de funciones
function ans = MiFuncion(parm1, param2)ans = param1 + param2;
El archivo se debe llamar MiFuncion.mEsta función recibe dos parámetros parm1 y parm2Al finalizar la ejecución la función devuelve el valor de la variable ans
Octave
52
Comentarios
Documentación para el comando help
function ans = sigma(x)
% Función que calcula el valor de sigma de x.
% si x es un vector o una matriz calcula el
% valor de sigma para cada uno de sus
% elementos.
den = 1+exp(-x); % Calcula el denominador
ans = 1./den; % Usa ./ para que funcione % si den es una matriz
Octave
27
53
El condicional ifif( condicion ),
% Comandos a ejecutar si la% condicion es cierta
else
% Comandos a ejecutar si la% condicion es falsa
end
% validación de la edad
if( edad > 18 & edad < 20 ),
% entonces tiene 19
disp(“usted tiene 19 años”);
end
Octave
54
Más ejemplos de iffunction ans = escalon(x);
% función escalón
% Devuelve 0 para todo x menor a 0
% 1 en caso contrario
if( x < 0 ),
% si x es negativo vale 0
ans = 0;
else
% 1 si es 0 o positivo
ans = 1;
end
Octave
28
55
El condicional switch
switch variable
case etiqueta1
% comandos para etiqueta1
case { etiqueta2, etiqueta3 }
% comandos para etiqueta2
…
otherwise
% comandos para valores imprevistos
end
Octave
56
Ejemplo de switch
function str=comentarNota(nota)% retorna un string con un comentario de la nota% si es un vector retorna “error”if(length(nota)==1), %verifica que nota sea escalar
switch(nota)case 10
str=“excelente”;case { 9, 8, 7 }
str=“bien”;case { 6, 5, 4 }
str=“regular”;case { 3, 2, 1 }
str=“mal”;otherwise
str=“entrada invalida”;end
elsestr=“error”;
end
Octave
29
57
Ciclo forfor variable = expresion
% comandos del ciclo
end
% impresión de potencias
for a = 0:9
disp(a^2);
end
La variable toma en cada ciclo cada uno de los valores de la expresión.
Octave
58
Más ejemplos de forfunction sum = miSuma(x)% miSuma(x) suma todos los elementos de x% Si x es una matriz devuelve 0
if(rows(x)==1 || columns(x)==1) % valida% si no es una matrizsum = 0; % inicializa en 0
%suma acumuladafor val = x
sum = sum + val;end
else% si es una matrizsum = 0;
end
Octave
30
59
Ciclo whilewhile( condicion )
% comandos del cicloend
Mientras la condición sea verdadera se ejecutan los comandos del ciclo
% impresión de potencias
a = 0;
while (a < 10)
disp(a^2);
a = a + 1;
end
Octave
60
Ejemplo de whilefunction n = buscarSuma(x)% n=buscarSuma(x) retorna el cuantos números se deben sumar% para alcanzar el valor x, x=(1+2+3+…+n)
if(length(x)==1), % valida que x sea un escalar
% inicializa las variablesn=1;acum = n; % suma acumulada
%suma acumuladawhile(acum < x)
n = n + 1;acum = acum + n;
endelse
% si no es un escalarn = 0;
end
Octave
31
61
Consejos de programación
DocumentarNombres relacionados al contenido de las variables y las funcionesFunciones cortas y clarasValidar los parámetros de entradaMensajes de error claros