Parte I - Fundamentos del Lenguaje 1. Introducción
1.1 Programa de ejemplo El siguiente es un ejemplo de un programa Euphoria completo.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sequence list, sorted_list function merge_sort(sequence x) -- poner x en orden ascendente, usando merge_sort recursivo integer n, mid sequence merged, a, b n = length(x) if n = 0 or n = 1 then return x -- caso trivial end if mid = floor(n/2) a = merge_sort(x[1..mid]) -- ordena la primera mitad de x b = merge_sort(x[mid+1..n]) -- ordena la segunda mitad de x -- combina las dos mitades ordenadas en una merged = {} while length(a) > 0 and length(b) > 0 do if compare(a[1], b[1]) < 0 then merged = append(merged, a[1]) a = a[2..length(a)] else merged = append(merged, b[1]) b = b[2..length(b)] end if end while return merged & a & b -- datos combinados end function procedure print_sorted_list() -- genera sorted_list desde la lista list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2} sorted_list = merge_sort(list) ? sorted_list end procedure print_sorted_list() -- este comando inicia el programa ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El ejemplo de más arriba contiene 4 comandos separados que se procesan en orden. El primero declara dos variables: list y sorted_list como secuencias (arrays flexibles). El segundo define la función merge_sort(). El tercero define el procedimiento print_sorted_list(). El último comando llama al procedimiento print_sorted_list(). La salida del programa será: merge_sort() ordenará fácilmente {1.5, -9, 1e6, 100} o {"naranjas", "manzanas", "bananas"} . Este ejemplo está guardado en euphoria\tutorial\example.ex. Esta no es la forma más veloz de ordenar en Euphoria. Vaya al directorio euphoria\demo y escriba "ex allsorts" para ver los tiempos en varios algoritmos de ordenamiento según la cantidad de objetos. Para un ejemplo rápido de programación en Euphoria ver euphoria\demo\bench\filesort.ex.
1.2 Instalación Para instalar Euphoria en su máquina, primero lea el archivo install.doc. La instalación involucra simplemente el copiado de los archivos euphoria a su disco rígido, dentro del directorio llamado "euphoria", y modificar el archivo autoexec.bat de modo que euphoria\bin esté en la ruta de búsqueda, y la variable de entorno EUDIR apunte al directorio de Euphoria. Una vez instalado, el directorio euphoria se verá como esto:
El subdirectorio Linux no está incluido en la distribución DOS/Windows, y los subdirectorios DOS32 y WIN32 no están incluidos en la distribución Linux/FreeBSD. En este manual, los nombres de directorios se muestran usando una barra invertida (\). Los usuarios de Linux/FreeBSD deberán sustituirla por la barra de división (/). 1.3 Ejecutando un programa Los programas Euphoria se ejecutan al escribir ex, exw o exu seguido por el nombre del principal archivo Euphoria. Puede agregar palabras adicionales (conocidas como argumentos) en esta línea, llamada línea de comandos. Su programa puede llamar a la función interna command_line() para leer la línea de comandos. La versión DOS32 del Intérprete Euphoria se llama ex.exe, la versión WIN32 se llama exw.exe y la versión Linux/FreeBSD exu. Por convención, los archivos principales de Euphoria tienen la extensión .ex, .exw o .exu. Otros archivos Euphoria, que se pueden incluir en programas más grandes, terminan en .e o a veces en .ew o .eu. Para abreviar escritura, puede dejar de escribir el ".ex", y el comando ex lo agregará automáticamente. exw.exe agregará ".exw", y el exu, ".exu". Si no se puede encontrar el archivo en el directorio actual, será buscado en la ruta (PATH). Puede redireccionar la entrada y salida estándares al ejecutar un programa Euphoria, por ejemplo: ex filesort.ex < raw.txt > sorted.txto simplemente, ex filesort < raw.txt > sorted.txt A diferencia de otros compiladores e intérpretes,
no hay opciones especiales en la línea de comandos de ex,
exw o exu.
Solamente se espera el nombre de su archivo Euphoria, y sino lo suministra,
le será pedido.
Para los programas usados frecuentemente bajo DOS/Windows you podría querer hacer un pequeño archivo .bat (batch) file, quizás llamado miprog.bat, conteniendo dos instrucciones como: @echo off ex miprog.ex %1 %2 %3 La primera instrucción desactiva el eco de los
comandos en pantalla. El segundo ejecuta ex miprog.ex con hasta
3 argumentos en la línea de comando. En command_line()
vea un ejemplo de cómo leer esos argumentos. Si su programa toma
más argumentos, debería agregar %4, %5, etc. Teniendo un
archivo .bat lo salvará del inconveniente menor
de escribir ex (o exw)
todas las veces, es decir, puede escribir solamente:
miprogen lugar de: ex miprogDesafortunadamente, DOS no le permitirá la redirección de la entrada y salida estándares al usar un archivo .bat. Bajo Linux/FreeBSD, puede escribir el camino al intérprete Euphoria en la primera línea de su archivo principal, por ejemplo, si su programa se llama foo.exu: #!/home/rob/euphoria/bin/exu procedure foo() ? 2+2 end procedure foo()Entonces si hace ejecutable su archivo: chmod +x foo.exuPuede escribir solamente: foo.exu para correr el programa. Inclusive, podría acortar
más aún el nombre a simplemente "foo". Euphoria ignora la
primera línea cuando comienza con #!. Cuide que la primera
línea termine con \n estilo Linux/FreeBSD,
y no con el \r\n estilo DOS/Windows,
o el shell de Linux/FreeBSD
podría confundirse.
También puede correr bind.bat (DOS32), o bindw.bat (WIN32) o bindu (Linux/FreeBSD) para combinar su programa Euphoria con ex.exe, exw.exe o exu, para hacer un archivo ejecutable independiente (archivo .exe en DOS/Windows). Con un archivo .exe independiente puede redirigir la entrada y salida estándares. El enlazado se discute luego en 1.5 Distribuyendo un programa. Tanto exu, ex.exe como exw.exe están en el directorio euphoria\bin, el cual tiene que estar en su ruta de búsqueda. La variable de entorno EUDIR debería apuntar al directorio principal de Euphoria, por ejemplo, c:\euphoria. Puede correr programas Euphoria directamente desde el entorno Windows, o desde el shell DOS que tiene abierto desde e Windows. Al "asociar" los archivos .ex con ex.exe, y los archivos .exw con exw.exe puede hacer doble clic en un archivo .ex o .exw para ejecutarlo. Bajo Windows debería definir un nuevo tipo de archivo para .ex, haciendo clic en Mi PC / Ver / Opciones / Tipos de archivos. Es posible que tenga varios programas Euphoria activos en diferentes ventanas. Si convierte un programa en un archivo .exe, simplemente puede hacer clic sobre él para ejecutarlo.
Si ejecuta un programa Euphoria bajo Linux/FreeBSD o Windows (o en el shell DOS bajo Windows), y el programa se queda sin memoria física, usará "memoria virtual". El sistema operativo provee esta memoria virtual automáticamente para intercambiar los datos y código usados recientemente con el archivo de intercambio. Para cambiar el tamaño del archivo de intercambio de Windows, haga clic en Panel de Control / 386 Mejorado / "memoria virtual...". Bajo OS/2 puede ajustar "DPMI_MEMORY_LIMIT" haciendo clic en el ícono de la máquina virtual DOS / "Configuración DOS" para asignar más memoria extendida para su programa. Bajo DOS puro, fuera de Windows, no hay un archivo de intercambio del sistema, por lo que ex.exe (DOS32) incorpora un expansor para DOS, que creará el archivo de intercambio para el posible uso por su programa. Ver platform.doc.
1.4 Editando un programa Puede usar cualquier editor de texto para editar un programa Euphoria Sin embargo, Euphoria viene con su propio editor especial que está enteramente escrito en Euphoria. Escriba: ed seguido por el nombre completo del archivo que desea editar (la extensión .ex/.exw/.exu no está sobreentendida). Puede usar este editor para editar cualquier tipo de archivo de texto. Al editar un archivo Euphoria, están disponibles algunas funcionalidades adicionales, tales como la coloración de la sintaxis y el autocompletado de ciertas sentencias. Toda vez que ejecute un programa Euphoria y obtenga un mensaje de error, sea durante la compilación como la ejecución, simplemente escriba ed sin el nombre del archivo y será automáticamente posicionado en el archivo que contiene el error, en la línea y columna correctas, mientras en la parte superior de la pantalla verá el mensaje de error. Bajo Windows puede asociar ed.bat con varios tipos de archivos de texto que quiera editar. La coloración de la sintaxis se aplica a los archivos de entesión .ex, .exw, .exu, .e, .ew, .eu, y .pro (profile). La mayoría de la teclas que presiona se insertan en el archivo, en la posición del cursor. Presione la tecla Esc una vez para obtener la barra del menú de comandos especiales. También están activas las teclas de flechas y las de Insert / Supr / Inicio / Fin / Re Pág / Av Pág. Bajo Linux/FreeBSD algunas teclas pueden no estar disponibles, y habrán otras provistas como alternativa. Vea el archivo euphoria\doc\ed.doc (euphoria\html\ed.htm) una descripciónfor completa de los comandos de edición. Esc h (ayuda) que le permitirá leer ed.doc desde la sesión de edición. Si necesita comprender o modificar algún detalle de la operación del editor, puede editar el archivo ed.ex en euphoria\bin (asegúrese de hacer una copia de seguridad para no perder el archivo original). Si el nombre ed le genera un conflicto con algún otro comando en su sistema, renombre el archivo euphoria\bin\ed.bat a algún otro. Debido a que el editor está escrito en Euphoria, es notablemente conciso y fácil de comprender. La misma funcionalidad implementada en otro lenguaje como el C, tomaría más líneas de código. ed es un simple editor de modo texto que corre en DOS, Linux, FreeBSD y en la consola de Windows. También vea el excelente editor de David Cuny para DOS y Linux/FreeBSD. Puede descargar ee.ex desde el sitio web de Euphoria. También hay otros editores orientados a Euphoria que corren bajo Windows. Véalos en sitio web de Euphoria.
1.5 Distribuyendo un programa Euphoria provee 4 formas distintas de distribuir un programa. En el primer método, le despacha a sus usuarios archivos de Dominio Público ex.exe o exw.exe o exu, junto con su archivo principal Euphoria .ex, .exw, or .exu file y cualquier archivo de inclusión .e que se necesite (incluyendo cualquier de los estándares del directorio euphoria\include). Si los archivos Euphoria de código fuente se ubican juntos en un directorio y ex.exe, exw.exe o exu se ubican en el mismo u otro directorio de la ruta de búsqueda (path), entonces sus usuarios pueden ejecutar su programa, escribiendo ex (exw) o (exu) seguido por la ruta de su archivo principal .ex, .exw, o .exu. También podría proveer un pequeño archivo .bat, de forma que la gente no tenga que escribir ex (exw). Este método asume que quiere compartir su código fuente Euphoria con sus usuarios. La Edición Completa le brinda dos métodos más de distribución. Puede encriptar su programa, o enlazarlo. La encriptación combina todos los archivos .e que su programa necesite, junto con su archivo principal para crear un archivo único .ex, .exw, or .exu. Puede tanto encriptar/compactar su programa para ocultarlo y hacerlo inviolable, como dejarlo legible para permitirles a los usuarios su inspección. El enlazado combina su programa encriptado con ex.exe, exw.exe, o exu para crear un archivo ejecutable, único e independiente (.exe). Por ejemplo, si su programa se llama "miprog.ex", puede crear "myprog.exe" que correrá exactamente igual. Para más información acerca de la encriptación y enlazado, lea bind.doc. Finalmente, con el Traductor Euphoria a C, puede traducir su programa Euphoria a C y entonces compilarlo con un compilador C para obtener un archivo ejecutable (.exe). El Traductor está disponible en una descarga separada en el sitio web de RDS. Puede distribuir libremente cualquier programa Euphoria que desarrolle, sin tener que pagar regalías. También puede distribuir libremente los archivos de la Edición de Dominio Público ex.exe, exw.exe and exu, por lo que cualquiera puede correr sus programas Con la Edición Completa, puede encriptar o enlazar sus programas y distribuir los archivos resultantes, también sin pagar regalías. Puede incorporar cualquier archivo de código fuente Euphoria de este paquete en su programa, tanto los originales como los que contienen alguna modificación que le haya hecho. (Probablemente necesite, al menos, unos pocos archivos de inclusión estándares en cualquier programa extenso). Apreciaremos si le dice a la gente que desarrolló su programa usando Euphoria, y si les da la dirección de nuestro sitio web: http://www.RapidEuphoria.com, pero no exigimos tal reconocimiento. Los únicos archivos relacionados con el Intérprete que no debe distribuir son ex.exe, exw.exe, bind.ex, bind.bat, bindw.bat, y shroud.bat, que vienen con la Edición Completa del Intérprete para WIN32 + DOS32, y exu, bind.ex, bindu y shroud que vienen con la Edición Completa del Intérprete para Linux/FreeBSD. El archivo de ícono euphoria.ico, que se incluye con la Edición Completa para WIN32 + DOS32, se puede distribuir con o sin modificaciones. El Intérprete Euphoria está escrito en ANSI C, y se puede compilar con varios compiladores de C. El fuente está disponible para la compra. Antes de comprarlo, por favor lea la Licencia del código fuente del Intérprete. Algunas restricciones legales adicionales se pueden aplicar al usar el Traductor Euphoria a C.
|