Un script es un conjunto de comandos de Sage guardados en un fichero .sage
para ser ejecutados posteriormente. Por ejemplo, imaginemos que queremos representar funciones con plot
al tiempo que se salvan en un fichero; podemos guardar la función plotNsave
en el fichero my_plots.sage
:
def plotNsave(f, a, b, file): """ Aqui se pone la descripcion de plotNsave Esta informacion se muestra al escribir: plotNsave? """ p = plot(f, (a, b)) show(p) p.save(file)
Este script puede ejecutarse en un libro Jupyter o una terminal de Sage:
sage: pwd # muestra la carpeta actual u'/home/user' sage: cd 'Escritorio' # cambio a una carpeta hija /home/user/Escritorio sage: ls # muestra el contenido ['my_plots.sage'] sage: load('my_plots.sage') sage: cd .. # vuelve a la carpeta padre
Cuando se trabaja en una hoja .sagews
de Cocalc, los comandos anteriores deben sustituirse por os.getcwd()
, os.chdir('Escritorio')
y os.listdir('.')
, respectivamente. Usando attach
en vez de load
, la terminal de Sage reconocerá automáticamente los cambios que hagamos en el fichero con un editor externo. Una vez cargado, su contenido puede ser usado normalmente:
sage: sage: f(x) = x^2 sage: plotNsave(f, 1, 2, 'p.png')
Funciones lambda
Las funciones lambda permiten crear funciones anónimas compuestas de una única expresión. Son, básicamente, una forma escueta de definir una función:
sage: h = lambda x,y: (x^2,y^2) sage: h(1,2) (1, 4)
Estructuras de control de flujo
El bucle for
ejecuta una serie de comandos para todos los valores de una lista:
fact = 1 for i in (2..10): fact = fact*i
Al final del bucle, fact
contendrá Los comandos internos al bucle se sangrarán con espacios en blanco. Los bucles pueden anidarse con sangrado creciente.
El bucle while
ejecuta una serie de comandos mientras se dé una condición:
suma = 0. n = 1 term = 1/n^4 while term > 1e-14: suma += term n += 1 term = 1/n^4
Al final del bucle, sum
contendrá una aproximación de , calculada sumando aquellos términos mayores que la tolerancia dada, 1e-14.
Sólo usaremos el bucle while
en vez de un for
cuando el número de iteraciones a realizar sea desconocido a priori.
Las estructuras if
permiten decidir en función de una o varias condiciones:
i = 0 # asignar a i un valor
if i>0:
print 'positivo'
elif i<0:
print 'negativo'
else:
print 'nulo'
El bloque elif
y else
son opcionales. Puede haber varios bloques elif
.
Otros comandos
El comando continue
interrumpe la ejecución de la iteración actual de un bucle for
o while
. El comando break
interrumpe la ejecución del bucle for
o while
más interno. Véase por ejemplo, la búsqueda del índice de la posición del primer elemento negativo de la lista x
:
x = [1,0,-1, 2] for i in range(len(x)): if x[i]<0: break print 'El indice es '+str(i)
El comando return
termina la ejecución de una función e indica el valor de su respuesta, como puede verse en la defición de la función f
en esta entrada.
Pingback: Expresiones simbólicas en Sage | fundmat