Practica1 -- Sage

Anuncio
http://localhost:8000/home/admin/149/print
http://localhost:8000/home/admin/149/print
print S6
Practica1
IMD-I. Software
Práctica de laboratorio 1.
Introducción a SAGE
Comandos básicos.
Ejecutar el comando siguiente, pinchando en la ventana de comando y luego en "evaluate".
1+2+3+10
Como guardar su trabajo
Para guardar las modificaciones realizadas en la hoja de Sage en la cuál estamos trabajando,
pinchamos en el botón "Save" arriba a la derecha (hacerlo).
Digamos que quieres guardar este trabajo, para continuarlo más tarde en otro ordenador. Vamos a
guardarlo en un espacio personal del sitio de enseñanza virtual:
en el menú "File" arriba a la izquierda, pincha en "Save worksheet to a file...",
y elija la ubicación y el nombre del fichero a guardar. (por ejemplo "practica1".)
Luego, guarda "practica1" en tu espacio personal del sitio de enseñanza virtual de grupo de
IMD (https://ev2.us.es/webct/ - Mis herramientas -- Mis archivos -- obtener archivos). La
extensión ".sws" significa "Sage WorkSheet".
(No es para puntuar la práctica, esta primera práctica no se evalua. Es para aprender a guardar su
trabajo en algún sitio).
Ahora, queremos también guardar una copia pdf de esta hoja de Sage.
En una misma ventana de comando, podemos escribir varios comandos, pero solamente el ultimo
resultado se imprimará en la pantalla. (Ejecutar los comandos que siguen).
1+2+3+4
1+2+3+4+5
1+2+3+4+5+6
Pincha en "print" arriba al centro. Una copia html de la hoja de Sage aparece en una nueva
ventana del navegador.
En el menú "Archivo" del navegador elija "Imprimir"
En la ventana que aparece, elija la opción: PDF-Guardar como PDF.
Luego suba este fichero pdf al espacio en enseñanza virtual.
Pero podemos forzar la impresión de los resultados anteriores con "print". (Ejecutar los comandos
que siguen).
Bucles
print 1+2+3+4
print 1+2+3+4+5
print 1+2+3+4+5+6
Ahora queremos guardar los resultados de los cálculos anteriores en variables S4, S5, S6. Lo
hacemos de la manera siguiente (ejecutar los comandos).
S4=1+2+3+4
S5=1+2+3+4+5
S6=1+2+3+4+5+6
Podemos ahora utilizar estas variables (ejecutar los comandos).
print S4,S5
¿ Qué resultado dan los comandos siguientes ? (adivinar y luego comprobar ejecutandolos).
S0=0
S1=S0+1
S2=S1+2
S3=S2+3
S4=S3+4
S5=S4+5
S6=S5+6
S7=S6+7
print S1,S2,S3,S4,S5,S6,S7
¿ Y los comándos siguientes ?
http://localhost:8000/home/admin/149/print
S=0
print
S=S+1
print
S=S+2
print
S=S+3
print
S=S+4
print
S=S+5
print
S=S+6
print
S=S+7
print
print
http://localhost:8000/home/admin/149/print
S=S+i
print S
print "Fin."
S
S
S
Listas
S
En la ventana de comando que sigue definimos dos listas, llamadas S y L (ejecutar).
S
S=[1..7]
L=[3.141592,"a",63,"b",2011,"Sevilla"]
S
S
Comprobemos sus valores (ejecutar)
S
"Fin."
print S
print L
En la ventana de comando anterior hemos ejecutado varias veces un bloque de instrucciones:
Podemos acceder a los elementos de una lista L con L[i].
S=S+i
print L[1]
print L[2]
print S
donde i tomaba sucesivamente los valores 1; 2; 3; : : : ; 7. Es más cómodo hacer esto con un
bucle.
¿ Qué vale L[3] ?
S=0
comentario.
print S
for i in [1..7]:
7.
# detrás de la almohadilla es un
#
el ordenador no lo lee.
# i toma sucesivamente los valores del 1 al
#
bloque que sigue
S=S+i
indentación
print S
derecha).
print "Fin."
del "for".
Para cada valor de i se ejecuta el
# el bloque esta marcado por una
#
(= desplazamiento del texto más a la
¿ Qué valen L[-1] y L[-2] ?
# esta instrucción esta fuera del bloque
Ejercicio: al ejecutar estos comandos, ¿ que resultado dará ? (adivinar y luego comprobar,
ejecutando los comandos).
S=0
print S
for i in [1..7]:
¿ Cuál es el indice del primer elemento de L ?
Cambia el valor de L[3], dandole el valor !58.
Escribiendo:
http://localhost:8000/home/admin/149/print
L.
(L seguido de un punto) y luego utilizando la tecla de tabulación, aparece la lista de los métodos
que pueden aplicarse a L. Utilizar uno de estos metodos para poner el numero 101 al final de la
lista L (en inglés se diría: "Append 101 to L").
http://localhost:8000/home/admin/149/print
Ejercicio: copiar y pegar la definición de la función Sumas en la ventana de comandos aquí
debajo. Cambiar el nombre en "Grafica_Sumas" y modificar la definición para que, en vez de
devolver la suma final, devuleva la lista de todas las sumas 0,1,1+2,1+2+3, ..., 1+2+3+...+N.
¿ Existe la lista vacía ?
Utilizar esta función para representar gráficamente la sucesión de sumas 0,1,1+2,1+2+3,
1+2+3+...+1000
Ejercicio: modificar el bucle siguiente para poner la lista de todos los resultados sucesivos
(0,1,1+2, 1+2+3, 1+2+3+4, ..., 1+2+3+...+20 ) en una lista T.
S=0
for i in [1..20]:
S=S+i
Condicionales
"if ... then ... else ..." significa "si...entonces...sino...".
¿ Que crees que va a imprimir el bloque de comandos siguiente ? Comprobalo.
La instrucción siguiente creará una representación gráfica de la sucesión de les términos de T.
list_plot(T)
N=100
if N > 0 and N < 100:
print "pequeño"
else:
print "grande"
Funciones
El bloque de comandos que sigue es la definición de una función, llamada "sumas", que calcula
las suma de los N primeros enteros. Después de haber definido la función, podremos utilzarla,
dando un valor al parametro N .
Observa los dos niveles de indentaciones: uno marca el bloque de comandos que hacen parte de la
definición de la función, el otro marca el bloque de comandos del bucle for.
Pinchar en evaluate para que el ordenador lea la definición de la función.
def Sumas(N):
S=0
for i in [1..N]:
S=S+i
return S
Luego utilizamos la función para calcular Sumas(100), Sumas(200)
print Sumas(100)
print Sumas(200)
¿ Y aquí ?
N=10
if not(N==0) and 1/N <0.12345:
print "pequeño"
¿ Qué pasa aqui ? ¿ Por qué no hay mensaje de error, a pesar de la división por cero ?
N=0
if not(N==0) and 1/N <0.12345:
print "pequeño"
Ejercicios
Ejercicio (Tables de verdad):
En el ejemplo siguiente construimos la tabla de verdad para la formula (p y no q) o (q y no p).
http://localhost:8000/home/admin/149/print
print " p
q
t"
for p in [True,False]:
for q in [True,False]:
t=(p and not q) or (q and not p)
print p,q,t
Construir, de manera parecida, la tabla de verdad para: (p o no q) y (q o no r) y (r o no p)
Ejercicio (3n+1): empezamos con un numero n, digamos n=111, y a cada paso calculamos un
nuevo valor de n con las reglas:
si n es par lo dividimos por dos
si n es impar lo multiplicamos por tres y añadimos uno
Utilizando un bucle (for) y un condicional (if), calcular los 50 primeros resultados obtenido en
este proceso, empezando con n = 111.
para comprobar si un numero es par, podemos utilizar is_even, por ejemplo: is_even(51) da como
resultado "False").
Descargar