Chapter 5 Dynamic Network Topologies and Network Resilience Con-
5.5 Network Energy Consumption
Cuando se inicia una sesión con ISETLW, se abre una ventana de ejecución y una ventana gráfica. Para obtener la representación gráfica de una función, usar el comando plot, cuya
sintaxis es:
plot(f);El comando plot(f); produce la gráfica de la función f en el dominio (por defecto) [10,10] y con la escala vertical elegida automáticamente.
plot(f,a,b); usa [a,b] como escala horizontal.
plot(f,a,b,c,d); usa [a,b] como escala horizontal y [c,d] como escala vertical. Ejemplo > cuad := func(x); >> if is_number(x) then >> if x < 100 then >> return x*x; >> end; >> end; >> end; > plot(cuad);
El resultado de ejecutar plot(cuad); aparece la gráfica en ISETLW.
Para incluir texto en el gráfico, poner el cursor en el lugar deseado, apretar Ctrl-Enter, escribir el texto y apretar Ctrl-Enter otra vez.
Se puede imprimir un gráfico como cualquier otro archivo.
Para abandonar la ventana gráfica y pasar a la de ejecución, usar la tecla q. Para volver a la ventana gráfica apretar Ctrl-g.
Aparece en la ventana gráfica la representación de la relación binaria R, con la carencia de que los bucles NO aparecen. También resulta una carencia que los vértices del grafo debe
Manual Básico de ISETLW 169 Cerapio Quintanilla C.
4. Glosario
Cláusula.Usada como sinónimo de comando.
Comentarios. Frases cuyo único uso es la mejor comprensión para el usuario humano. Los comentarios no son nunca analizados ni ejecutados por ISETLW.
Frase. Instrucciones o requerimientos realizados a ISETLW y que son comprendidos como una única solicitud por el sistema.
Sesión. Período durante el cual el sistema está ejecutándose. También son las acciones que tienen lugar durante dicho período.
5. Referencias:
Introduction to Discrete Mathematics with ISETL (1996). Ed Dubinsky, William Fenton. Springer–Verlag, 1996. ISBN 0-387-94782-5.
Calculus, Concepts & Computers.(1995). Ed Dubinsky, Keith E. Schwingendorf y David M. Mathews. The McGraw-Hill Companies, Inc, 1995. ISBN 0-07-041033-X.
http://www.ilstu.edu/~jfcottr/ISETLW/, versión “ISETLW for Windowss (Jim´s)”. Libre distribución. (agosto de 2006).
ANEXO
6. Anexo A
Limitaciones de ISETLW
Como se ha mencionado antes, ISETLW tiene algunas carencias. Las mismas derivan principalmente del hecho de que no es un lenguaje tipado, es decir, un lenguaje en el cual a
cada expresión sintácticamente válida del lenguaje se le asigna un tipo (entero, booleano,
función, etc) y para cada tipo se definen operaciones válidas. ISETLW no es tipado, por ejemplo se puede definir
> doble:=func(x); >> return 2 * x; >> end;
donde x puede ser cualquier objeto para el cual la operación 2 * este definida. Así tenemos que
> doble(2); 4:
> doble ("a"); "aa";
O sea que lo que se esta definiendo en realidad es una familia de funciones, ya que no se tiene en cuenta que una función matemática es una terna formada por un conjunto dominio, un conjunto co-dominio y una regla de transformación.
Para especificar el dominio utilizamos las cláusulas if como se indicó anteriormente y de esta forma vemos que si x no es un numero la función para ese argumento esta indefinida, lo cual coincide con el concepto matemático.
de símbolo sobrecargado es el +, que se usa para la suma de números, la concatenación de strings y la unión de conjuntos.
Estas limitaciones derivan en realidad del hecho de que ISETLW ha sido diseñado para trabajar con matemática tradicional donde se trabaja principalmente con el conjunto de los números reales. Así, la ventana gráfica está hecha para representar funciones sobre los números reales y no tiene utilidad para un curso de matemática discreta.
7. Anexo B
Situaciones de sintaxis incorrecta
Se recomienda usar archivos e incluirlos en la sesión con el intérprete y si hay errores, corregirlos en el archivo y volver a incluirlo. De esta forma, los mensajes de ISETLW y otras líneas innecesarias, no serán guardados.
Si ud, realiza los cambios directamente en la sesión con el intérprete, trate de observar lo que recomendamos a través del siguiente ejemplo:
Supongamos que ud. incluye un archivo llamado pepe.txt y le aparecen errores: > !include pepe.txt > 5/7; 0.714; > 2*3 >> ; 6; > forall n in [1..10] ! n mod 2 = 0; Unknown compiler directive "! n" ignored >> ;
!Syntax error - clearing input from: forall n in [1..10] ! n mod 2 = 0; ;
!clear
!clear complete >
Lo que recomendamos es reconocer los errores, corregirlos en el archivo y volver a incluirlo. Si ud. quiere corregir en la misma sesión, es decir, sin ir al archivo, el
procedimiento es: corregir la expresión, luego “pintarla” y cliquear la opción “Run” de la barra superior de ISETLW.
Los mensajes de error
El primer mensaje de error indica un error en la sintaxis de la expresión: en vez del ¡ va un | . El segundo mensaje de error se debe a que la línea es vacía. La directiva ¡clear borra el error anterior y deja el programa esperando una nueva interacción, es decir el cursor queda en el lugar del en el ejemplo
.
Si el programa se “tranca” por algún motivo (lo cual no es raro que ocurra), se pueden hacer dos cosas: 1) usar la directiva ¡clear o 2) pintar la última expresión correcta y ejecutar “Run”. Es común que el programa “se tranque” porque ud. ha continuado trabajando en una situación incorrecta, o sea en la cual por ejemplo, no le aparecía el > o en la cual el cursor estaba inmediatamente después de > y no a unos espacios como debe ser.
Manual Básico de ISETLW 171 Cerapio Quintanilla C.
Una vez corregido el error, si Ud. quiere guardar su trabajo, debe primero eliminar lo que ya no es útil. En este caso concreto, lo que guardamos es:
> 5/7; 0.714; > 2*3 >> ; 6; > forall n in [1..10] | n mod 2 = 0; false; >
O sea, borramos todo lo que era incorrecto y los mensajes de error.
También es útil borrar lo superfluo para trabajar mas cómodamente en la misma sesión, es decir, aunque no guardemos el trabajo.
Los archivos
Se recomienda crear archivos de texto y no usar tildes ni eñes y crear los archivos en el mismo directorio en el que se corre el programa. Supongamos que creamos un archivo de texto y lo nombramos “raices”. El sistema operativo lo guardará con la extensión .txt. En este archivo definimos una función como sigue:
raices:=func(a,b,c); if is_num(a) and is_num(b) and is_num(c) then delta:=b**2-4*a*c; if delta < 0 then
print “no existen raices reales”; else if delta = 0 then
return –b/2*a; else return [(–b + sqrt(delta))/2*a, (-b - sqrt(delta))/2*a]; end; end; end; end;
En la ventana de ejecución de ISETLW escribimos la primera y la tercera de las líneas siguientes y obtenemos como respuestas la segunda y la cuarta y la quinta.
> !include raices.txt !include raices.txt completed > raices(1,1,1);
"no existen raices reales"; OM;
>
Resumiendo: en el archivo raices.txt, hemos implementado una definición de la función raices. En la ventana de ejecución hemos incluido el archivo, (con la directiva ¡include), con lo cual la definición de la función ha quedado accesible. Luego, le hemos pedido al intérprete (al programa), que evalúe la expresión raíces (1,1,1), para lo cual el, computador usa la definición que le hemos dado como regla de transformación de esa expresión, es decir como algoritmo para realizar el cálculo.