★ APPLICATIONS ★ DIVERS ★ MAS VELOCIDAD Y MENOS MEMORIA ★![]() |
Compresor (Amstrad Semanal) | Applications Divers |
Programar ya no es lo que era, eso lo sabemos toaos. En el principio fueron lenguajes de bajo nivel, después, como todo lo vivo, fueron evolucionando hasta alcanzar la verbosidad anglosajona del Basic, rey sin corona de la informática personal. No obstante, no sólo de un lenguaje vive un programa, en la compleja labor de crear un programa, hay muchas partes que pueden ser resueltas por el ordenador sin apenas intervención humana, tareas repetitivas o carentes de creatividad que una máquina puede realizar perfectamenfe. Entra aquí el concepto clave de «Herramienta del programador», en el sentido de un programa que completa al lenguaje que estemos utilizando para dar luz un programa. Algunos nombres famosos de herramientas: editores, optimizadores, generadores de programa, depuradores... Los hay por docenas, y todos, tarde o temprano, son necesarios. AMSTRAD Semanal es consciente de todo esto, y de qye el programador se encuentra bastante desasistido en este asunto; por ello, hemos decidido abrir una nueva sección que remedie el problema en la medida de lo posible. Utilidades del programador se estrena con un gran programa: un compresor. Esta utilidad está pensada para eliminar de cualquier programa todo aquello que al ordenador no le sirve para nada a la hora de ejecutar el programa, como por ejemplo espacios en blanco innecesarios y sentencias REM, La del compresor se traduce en que los programas pasados por su filtro ocupan bastante menos memoria y se ejecutan más rápidamente. Esto permite tener dos versiones del programa: una de ellas, para nosotros, llena de todo lo que sea importante para hacerlo legible y fácil de modificar, y, la otra, especialmente dedicada al Amstrad, que «pasa» de tales banalidades. Compresor es un programa que disminuye la ocupación de memoria de un programa BASIC, eliminando los caracteres que ocupan memoria y son imnecesarios para el correcto funcionamiento del programa. Su utilidad es:
Puede pensarse que el suprimir líneas REM puede hacerse con facilidad a mano, pero un programa largo presenta mucho trabajo y además si existen «Gotos». «gosubs»..., dirigidos a las líneas REM (lo cual es muy frecuente deberá buscar esas líneas, editarlas... Compresor realiza esta función automáticamente y además:
Tal vez le parezca que NEXT i, j, k ocupa menos que NEXT:NEXT: NEXT; pero el modo que tiene BASIC de codificación interna hace que no sea así. Además el NEXT sin variable se ejecuta con más rapidez porque no necesita comprobar si el nombre coincide con el bucle actual. Además de esto realiza una unión de líneas, es decir: cuando dos líneas seguidas pueden unirse sin modificar la estructura del programa (lo primero no contiene un IF y la segunda no es objeto de un GOTO u otra referencia a su número de lineo) suprime el número de línea y lo sustituye por (:). Este proceso se reitera mientras la longitud de las dos líneas unidas no sea demasiado larga para que el BASIC la admita. Casos no previstos:
Modo de utilización Cargue el programa compresor. Aparecerá en pantalla un recuadro con unas breves instrucciones de utilización. Pulse una tecla al terminar las instrucciones, aparecerá el mensaje «Espere un momento». Tras unos segundos que emplea en inidalizar variables, el programa pide el nombre del programa que se va a comprimir. En este momento debe introducir en su Amstrad la cinta o disco que contiene el programa que desea comprimir grabado en formato ASCII. La cuestión del formato requiere algún comentario: los manuales de usuario de los Amstrad indican simplemente que la orden save admite el parámetro (,A) después del nombre del programa para grabar el formato ASCII. Las diferencias del SAVE normal con éste son:
La razón de que el compresor utilice este formato es la siguiente: el programa puede ser leído con las instrucciones normales de manejo de ficheros en disco o cinta, y la complejidad del programa es menor al no necesitar decodificar los TOKENS. Así el progrma compresor resulta legible, es fácil de depurar, y resulta fácil que cada usuario pueda modificarlo a su gusto si lo desea. Además, si tiene un AMSWORD II podrá usarlo para cambiar los nombres de las variables por otros más cortos o alguna manipulación similar, ya que la salida de COMPRESOR está enfocada hacia el uso de estas facilidades. Algunas veces puede parecerle que el progrma comprimido podría ser más pequeño. En realidad no es tan grande como la memoria que ocupa en cinta o disco. Lo que ocurre es que el número de línea se escribe con STR$, que incluye un espacio delante de él. No me he preocupado de suprimirlo ya que AMSWORD II trabaja mejor con texto de programa gracias a este espacio. Además no se pretende que la salida de Compresor sea la versión de trabajo del programa. Lo más adecuado es una vez obtenida la versión comprimida, cargarla desde BASIC con LOAD y grabarla con SAVE para tener la versión en formato Basic. Por supuesto que las modificaciones mediante procesador de textos deben hacerse antes de esto. Comprimir un programa Sigamos con el modo de usar el programa en sí. Una vez colocada la cinta o disco teclee el nombre del prgrama. En su monitor habrán aparecido tres recuadros, correspondientes a otras tantas ventanas. Por la segunda irá apareciendo el listado de su programa: así puede verificar qué Compresor está funcionando correctamente. En la primera, destinada a informes, aparece «zle-yendo línea...» y los mensajes de manejo del cassette. Una vez terminado el programa, se le pedirá el nombre con el que quiere grabar la versión comprimída. Una vez tecleado éste le preguntará «Comprimir paso a paso (S/N). Pulse una de dichas teclas. — Si usa cinta: En este momento deberá rebobi-nar la cinta de la fuente e introducirla cada vez que el sistema le sugiere (press play). También debe preparar otra cinta para grabar la nueva versión e introducirla cuando el mensaje sea (press rec and play). Cuidado con los errores: es frecuente que la alternancia entre lectura y escritura no sea regular. — Si usa disco: En caso de usar una sola unidad, deberá asegurarse de que el disco que contiene su fichero fuente tiene espacio libre suficiente para la versión comprimida (normalmente con que haya tanto espacio libre como K's ocupe su programa, sobrará). Si tiene dos unidades disco (¡enhorabuena!) puede poner delante del nombre de la versión comprimida B: y se grabará en la unidad B, Ahora se repetirá el proceso de la primera vuelta, con la diferencia de que ahora en la ventana inferior irá apareciendo la versión comprimida según se vaya creando. La opción «Paso a paso» está explicada anteriormente y también dentro del propio programa. Una vez terminado el proceso se cierran los ficheros y el programa pregunta «¿Quiere ver tabla de saltos?». Respondiendo «s» obtendrá una lista de las referencias a números de línea que hayan sido cambiadas y el número por el cual han sido cambiado éstos. Puede necesitarlos para alguna modificación posterior. Con esto concluye el compresor su trabajo. La versión comprimida ya está en cinta o disco dispuesta para ser cargada. Probablemente haya ahorrado más del 10 por 100 de memoria respecto de la fuente. De todos modos le aconsejo que guarde una copia de la fuente: si quiere más adelante ampliar y/o mejorar el programa le será más sencillo hacerlo partiendo de esa versión. La versión comprimida pásela a formato Basic y tendrá la versión de trabajo ocupando el mínimo de memoria y con la máxima rapidez de carga.
|