ANEXOS DJGPP Paso a Paso........................................ 89 Archivos del DJGPP...................................... 95 Línea de Comandos GCC ............................ 99 Entorno Gráfico (IDE)……………….……..101 Ejercicios Propuestos.................................... 108 DJGPP PASO A PASO DJGPP es un compilador para DOS C/C++ aunque también es válido para algunos otros lenguajes. El código que produce es de 32 bits y permite acceder de forma directa a toda la memoria, no existe el límite de los 640Kb. A pesar de ser para DOS también se puede usar bajo Windows 95/98/2000/XP, entornos Unix, SO compatibles DOS y emuladores DOS. Los programas escritos con él pueden portarse fácilmente a Unix. Dado que es de libre distribución se puede copiar y usar libremente, además puedes tener acceso al código fuente. En realidad es una versión DOS del compilador GNU GCC (versión 2.95.2). Se acompaña además de otras de las herramientas GNU. En principio la instalación del DJGPP es simple y se puede realizar siguiendo los pasos indicados en la documentación en http://www.delorie.com/djgpp (página en inglés). Si deseas mayor información en castellano puedes consultar otros documentos sobre el DJGPP en http://www.elrincondelc.com/index.html. La presente es una guía paso a paso en español, para facilitar a los alumnos, la instalación manual del compilador, dado a que se recomienda trabajar en líneas de comandos antes de usar editores gráficos. El anexo Archivos del DJGPP presenta una breve descripción de cada archivo .zip que viene con el compilador y su utilidad. Para aquellos que deseen mayor información pueden referirse a la pagina oficial http://www.delorie.com/djgpp 89 Para Sistema Operativo Linux Las siglas GCC significan GNU Compiler Collection (Colección de compiladores GNU). GCC es una colección de compiladores que admite diversos lenguajes: C,C++, Objetive C, Chill, Fortran, y Java. Existen versiones prácticamente para todos los sistemas operativos. GCC ya viene incluido en la mayoría (si no en todas) las distribuciones de GNU/Linux. Por lo que para compilar un programa en C en Linux sólo debemos abrir la consola y correr nuestro programa desde el directorio donde fue creado usando los comandos del GCC (ver anexo: Línea de comandos GCC). Muchos de los programas disponibles para Linux se pueden obtener compilados para Windows. Eso supone que debemos tener el mismo entorno de compilación en Windows que en Linux, si estamos usando el Compilador de C de GNU, lo podemos usar también en Windows. Esta distribución de GCC se llama DJGPP y se puede obtener en http://www.delorie.com/djgpp/. Cualquier información debes dirigirte a la página oficial http://gcc.gnu.org/. Si deseamos llevar el DJGPP a Linux para trabajar en ambos sistemas operativos de la misma forma se puede leer http://www.delorie.com/howto/djgpp/linux-xdjgpp-revised.html ( página en inglés), un paso a paso de cómo llevar el DJGPP a Linux. 90 Para Sistema Operativo Windows Instalación del compilador 1. Proceda a crear un directorio para el DJGPP , C:\DJGPP. 2. Coloque todos los archivos que seleccionó como necesarios de entre la distribución del DJGPP en el directorio que acaba de crear. (Lea la sección archivos del DJGPP) En nuestro caso para compilar programas en C y C++ use los archivos: gcc2953b.zip, bnu2112b.zip, pp2953b.zip, djdev203.zip lgp*.zip. 3. Haga que el directorio actual de trabajo sea C:\DJGPP, 4. Descomprima cada uno de los archivos zip en ese directorio. Configuración del compilador La configuración del compilador difiere de acuerdo al sistema operativo que tengas, pues a partir de Windows 2000 se tiene una diferente forma de manipular el fichero: autoexec.bat Si usas Windows 95, 98 o Me Abre el archivo: autoexec.bat (que se encuentra en: C:\) con el un editor de texto (block de notas) añade las siguientes líneas al final del archivo: 91 set PATH=C:\DJGPP\BIN;%PATH% set DJGPP=C:\DJGPP\DJGPP.ENV Una vez hecho esto reinicia el computador para que se actualice el archivo. Nota: Si el archivo no es visible, debes ir a opciones de carpeta o similar y buscar la opción para mostrar los archivos ocultos y del sistema. Si usas Windows 2000, XP ó superior 1. Ve hacia el Panel de Control, haz clic en el icono Sistema y continuación en la ficha Opciones avanzadas 92 2. Haz clic en el botón Variables de entorno y fíjate en el cuadro Variables del sistema 3. Selecciona la variable Path y pulsa el botón Modificar, ve al final del cuadro Valor de la variable y pega lo siguiente ahí: ;C:\DJGPP\BIN 4. Haz clic en Aceptar: 93 Nota que se añade un punto y coma antes de todo, esto es para separar las variables del sistema que ya están creadas, producto de la instalación del resto de programas de tu PC 5. Del mismo modo en Variables del sistema, haz clic ahora en el botón Nueva, en el cuadro Nombre de la variable escribe: DJGPP y en el cuadro Valor de la variable escribe: C:\DJGPP\DJGPP.ENV, luego haz clic en el botón Aceptar, para grabar los cambios. Esto crea una nueva variable del sistema, para que puedas compilar tus programas desde cualquier directorio.A partir de aquí puedes compilar los programas usando el DJGPP en Windows. Recuerda: Se recomienda trabajar en líneas de comandos antes de usar editores gráficos. 94 ARCHIVOS DEL DJGPP La Distribución La siguiente información se extrajo del documento readme.1st del DJGPP: La distribución de DJGPP esta dividida en algunos subdirectorios, diferenciados por su contenido. Cada subdirectorio contiene un documento llamado 00_index.txt que contiene las descripciones de cada uno de los archivos en ese directorio. Los archivos comprimidos "zip" cuyo nombre finaliza en 'b' contienen los "binarios" y la documentación preparada para consulta inmediata. Los paquetes que contiene son (para el momento en que el documento readme fue escrito): FAQ Un breve documentos que preguntas documento deberías frecuentes que le informa leer (esto sobre otros incluye la lista de y sus respuestas "FAQ") v2/ unzip386 Un programa de ordenador gratuito que puede descomprimir archivos zip (este programa es semejante al PKUNZIP). djdev202 Equipo de desarrollo, DJGPP V2 djlsr202 Fuentes(**) de la biblioteca básica, DJGPP V2 djtst202 Programas de prueba (para verificar la biblioteca C), DJGPP V2 95 djcrx202 Documentos de apoyo para compilación cruzada a DOS (tomados de djlsr y djdev), DJGPP V2 djtzn202 Documentos para Zonas horarias, DJGPP V2 djtzs202 Fuentes correspondientes al archivo de zonas horarias, DJGPP V2 faq*b Lista completa de preguntas frecuentes y sus respuestas en diferentes formatos (info, ASCII, HTML, ...). faq*s Fuentes en Texinfo y herramientas utilizadas para crear los documentos contenidos en faq*b frfaq* Traducción al Francés de la lista de preguntas frecuentes. v2apps/ (contiene varios programas DJGPP de ordenador construidos con el o para ser usados con el, como por ejemplo RHIDE y TeX) v2gnu/ (programas del FSF/GNU que han sido adaptados para DJGPP, como por ejemplo gcc y los binutils) v2tk/ (varios "paquetes de herramientas" para ser usados con el DJGPP, como por ejemplo Allegro y libsocket) 96 v2misc/ csdpmi* CWSDPMI es el proveedor gratuito de DPMI creado por Charles Sandmann. documentación. Se incluyen binarios, fuentes y mlp* ML es un "compresor" de binarios ("djp") pmode* agregado de PMODE para DJGPP V2. simulador de 387 para DJGPP V2 wmemu* (y otras tantas cosas para usar con DJGPP)" Para ayudarse en la tarea de seleccionar que piezas puede recurrir al "zip-picker", este se van a instalar se se encuentra en: http://www.delorie.com/djgpp/zip-picker.html Una vez hayas seleccionado los archivos que necesitas, los puedes descargar de: • • • del mirror ftp://ftp.rediris.es/volumes/vol1/ftp.delorie.com/pub/djgpp/ , el cual presenta todas las versiones y archivos del DJGPP; Una breve selección de archivos es presentada en la página: http://www.engmath.dal.ca/courses/djgpp/index.html , o visita la página http://www.delorie.com/djgpp/v2faq/faq4.html la cual presenta el capítulo 4 de las FQA en el que se describe dónde y cómo descargar el DJGPP, además de incluir recomendaciones de cuáles archivos deberías descargar dependiendo de las necesidades, (página en inglés). Recuerda: los archivos básicos recomendados son: Para poder compilar programas en C se necesita: djdev202.zip, gcc*b.zip y bnu*b.zip. 97 Para compilar C++ necesitará también gpp*b.zip y lgp*.zip El * sustituye al número de versión, el cual dependerá de la existente para el momento de la descarga. Nota: Si desea poder leer la documentación para consulta inmediata, provéase también de txi*b.zip y cuando quiera consultar la documentación "ejecute" 'info'. Si no cuenta con un proveedor de DPMI (como por ejemplo Windows) entonces deberá de obtener también una copia de csdpmi*b.zip. Un archivo importante para principiantes es faq*b.zip el cual contiene un listado de las preguntas más frecuentes con sus respuestas. Si desea una explicación más completa sobre el DJGPP puede descargar el archivo readme.1st (en inglés), también puedes revisar la documentación en castellano al respecto en http://www.elrincondelc.com/djgpp/index.html. COMPILAR PROGRAMAS EN C CON LÍNEAS DE COMANDO GCC Recuerda: Se recomienda trabajar en líneas de comandos antes de usar editores gráficos. Compilación de un programa C con un único fichero fuente Desde el directorio donde tenemos guardado el archivo .c (por ejemplo C:\Programas) tecleamos: gcc archivo.c -o archivo.exe En el mismo directorio aparecerá el programa archivo.exe listo para ser ejecutado. 98 Compilación de un programa C que usa alguna librería Si el programa usa una librería, para compilarlo escribimos: gcc archivo.c -o archivo.exe -lm La opción -lm enlaza con la librería, -lm debe ponerse al final de la línea de comando. Compilar un programa con varios ficheros fuente 1.- Crear Ficheros objeto: Para compilar un fichero de código fuente de C o C++ y dejarlo como fichero objeto, usa la siguiente línea de comando: gcc -c -Wall archivo.c (para código fuente C) o gxx -c -Wall archivo.cc (para código fuente C++) Con esto obtienes el fichero archivo.o. La opción '-Wall' activa muchos mensajes de aviso (warnings) que son especialmente útiles para nuevos usuarios de GCC. También se pueden usar otras extensiones, comp .cpp. 2.- Enlazar ficheros objeto Para enlazar varios ficheros objeto en un programa ejecutable, usa algo parecido a esto: gcc -o miProg.exe miMain.o miSub1.o miSub2.o Con esto obtienes miProg.exe que ya puede ser ejecutado. Si en vez de un programa C, tenemos un programa C++, usa algo como esto: gxx -o myprog.exe miMain.o miSub1.o miSub2.o 99 gxx buscará automáticamente las bibliotecas C++, de manera que no tienes que incluirlas en la línea de comando. 3.- Compilación y enlazado en un solo paso Puedes combinar los pasos de compilación y enlazado de la siguiente manera: gcc -Wall -o miProg.exe miMain.c miSub1.c miSub2.c Se presenta una lista de argumentos útiles a usar al momento de compilar, para mayor información leer la documentación que viene con el compilador GCC. · -ansi: Indica (si estamos compilando un archivo fuente c) que queremos que compile según el standard ANSI-C ’89. · -c: Solamente genera el código objeto, no enlaza. · -g: Compila a nuestro programa guardando información para depurar. · --help: Esta opción nos muestra la ayuda de los argumentos que toma el programa. · -lm: Enlaza la biblioteca matemática (esto no se hace por defecto para economizar espacio). · -o: (output) Indica que el siguiente argumento será el nombre con el cual queremos que se compile nuestro programa... el .exe no es necesario. · -Os: Optimiza la compilación para que el ejecutable ocupe menos espacio. · -O3: (excluyente con el anterior) Optimiza la compilación para velocidad. · -pedantic: Indica que queremos que el código se compile según el standard ISO-C. · -S: Solamente genera el código assembler, no compila. · -Wall: Indica que queremos que el compilador nos muestre todas las advertencias que considere necesarias respecto de nuestro fuente. · -x c: Obliga al compilador a compilar el archivo como en C. Esto se debe a que el GCC compila muchos otros lenguajes y se vale de la extensión para saber en cuál compilar, al colocar .c lo reconoce como un programa en lenguaje C. Un Paso a Paso de las bases de cómo hacer y compilar un programa en Linux usando el vi como editor de texto, lo puedes conseguir en: http://www.chuidiang.com/clinux/herramientas/basico/hola_mundo.php. Para mayor información sobre el GCC revisar las páginas oficiales: http://gcc.gnu.org/ Un completo tutorial del GCC puedes encontrarlo en la página Web http://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm 100 ENTORNO GRÁFICO (IDE) El IDE o entorno de desarrollo es un programa que te permite compilar programas de manera gráfica dado que se encarga de todas las fases del desarrollo: edición, generación de makefiles, compilación y depuración. Así pues, el entorno de desarrollo es una herramienta que nos facilita el trabajo lo que la hace muy conveniente pero se recomienda su uso luego de haber trabajado los programas a través de líneas de comando. Aclarando conceptos: Edición: el programa puede usarse como editor de textos y está orientado a la programación. Generación de makefiles: cuando tenemos varios ficheros fuente es conveniente que el IDE genere automáticamente el makefile que es el fichero que da instrucciones al compilador sobre lo que debe hacer. Compilación: el IDE debe permitir compilar y ejecutar el programa que estamos desarrollando sin necesidad de salir al DOS. Depuración: es conveniente que depure los programas y nos muestre los errores y warnings que se produzcan. Se presentan tres editores gráficos para el uso del compilador GNU GCC. EDITOR GRÁFICO DEL DJGPP Actualmente, DJGPP no viene con un entorno de desarrollo integrado propio. Puedes usar cualquier editor que pueda ejecutar programas DOS y examinar su salida, para que haga las veces de IDE. En este anexo se presentan los paso a paso para instalar y usar dos de los más comunes en el mercado para la fecha. El más sencillo es el IDE del DJGPP que viene en el archivo djgpp_ide.zip, e instalas de la misma forma que los archivos del DJGPP. Si prefieres un entorno 101 para MS-DOS al estilo Borlan C o Turbo C, el más recomendado es el RHIDE. El Kdevelop es muy útil en Linux y ahora tiene una versión para Windows. A continuación se incluye el paso a paso para cada uno de éstos editores gráficos. Si tienes dudas cual elegir comenta con tu asesor o instalalos y decide luego de que los pruebes. IDE del DJGPP Instalación El ide del DJGPP es un editor gráfico tipo ventanas de Windows y puede ser instalado de la siguiente forma: 1. Descomprime el archivo: djgpp_ide.zip, en el directorio siguiente: C:\DJGPP\bin, verás que aparecen los archivos: Sc1.exe y SciTEGlobal.properties, el primero es el programa ejecutable, el segundo tiene las opciones de configuración del programa (no modifiques el contenido de este archivo). 2. Ahora ejecuta el programa Sc1.exe, verás el entorno desde el cual puedes programar y ejecutar los programas de manera gráfica. 102 Compilar un programa 1. Abre el Sc1.exe escribe un sencillo programa de saludo y guárdalo como hola en la dirección donde guardas tus programas, ejemplo C:\programas #include <stdio.h> void main( ) { printf("Hola mundo"); getchar(); } 2. Presiona CTRL+ F7 o usa del menú Tools para seleccionar Compile, para compilar el programa. Si presionas View en el menú principal y seleccionas 103 Output (F8) podrás observar los resultados de la compilación en la parte baja de la ventana. Navega por el explorador hasta la carpeta C:\programas y observa que se ha generado un archivo . exe que lleva el mismo nombre que le colocaste al programa (hola.exe) 3. Ahora ejecuta el programa hola.exe que se encuentra en C:\programas, desde el Explorador de Windows 104 Funciona! Entorno RHIDE Es un entorno de desarrollo para MS-DOS al estilo Borland C o Turbo Pascal. El RHIDE tiene las siguientes características: • • • • • tiene auto-indentación, llama automáticamente al compilador DJGPP, genera los Makefiles automáticamente (lo que facilita la vida a los principiantes), incorpora la posibilidad de depurar (debug) programas y facilita el acceso a la documentación OnLine de DJGPP. Para obtenerlo debes descargar de la Internet el archivo rhide*b.zip e instalarlo en el directorio bin del directorio que creaste para el djgpp, ejemplo C:\DJGPP\bin. Aquí podemos descargar el Rhide para Windows, Linux Debian o Suse: http://www.rhide.com/download/main.html Para ejecutarlo simplemente entra en tu directorio de programas (por ejemplo C:\misprog) y teclea rhide desde DOS o ejecuta el rhide.exe en el directorio bin del DJGPP. Se abrirá el entorno de desarrollo (tipo Borlan C) 105 Para crear un programa entra en el menu 'File' -> 'New'. Escribe el código fuente de tu programa. Luego entra en el menu 'Run' -> 'Run' o pulsa directamente CTRL-F9 para compilar el programa. ENTORNO GRÁFICO KDEVELOP El Proyecto KDevelop surgió en 1998 con el fin de desarrollar un IDE (Entorno de desarrollo integrado) que fuera fácil de usar. El IDE KDevelop está públicamente disponible bajo licencia GPL y soporta varios lenguajes de programación. Visita su página oficial donde puedes descargar la última versión estable: http://www.kdevelop.org/ . A pesar de que Kdevelop nació para Linux, se ha abierto un proyecto para desarrollar Kdevelop para Windows, mayor información la podemos encontrar en: ftp://sunsite.dk/projects/cygwinports/ , el cual, para la fecha, lo puedes instalar directamente de: ftp://sunsite.dk/projects/cygwinports/ de donde se obtiene un entorno de desarrollo estilo MS/DOS como la figura siguiente: 106 Una explicación detallada del uso del IDE Kdevelop escapa de los objetivos de esta guía. Si deseas puedes acceder a un tutorial proporcionado por la página oficial (en inglés) en: http://docs.kde.org/development/en/kdevelop/kdevelop/ . Para darnos una idea de cómo luce este IDE para Linux, se incluye a continuación una imágen de la ventana inicial del Kdevelop. 107 Ejercicios Propuestos 1. Se leen tres números enteros. Calcular la suma de ellos. 2. Dados dos números. Calcular su diferencia y su multiplicación. 3. Algoritmo que lee una cantidad en Kgs y la convierte en gramos. 4. Se desea determinar el promedio de un alumno que presento 4 exámenes. Como dato se tiene el nombre y las cuatro notas. 5. Se tiene determinado capital. Determina cual es el 20% de ese capital 6. Calcule el salario neto de un empleado de un empleado de una compañía, teniendo como datos de entrada la cantidad que se paga por horas de trabajo, el número de horas trabajadas y la cantidad deducidas por concepto de impuestos. 7. Para un alumno se tiene como entrada: Nombre, nota práctica y nota de laboratorio. Calcular el promedio de las notas. 8. La compañía ABC paga a su personal paga a su personal de ventas un salario de Bs. 450.000 más una comisión de 25.000 por cada automóvil vendido, más el 15% del total de las ventas. Diseño un algoritmo que lea el nombre del vendedor, el número de autos vendidos y el total de sus ventas. Calcule e imprima el salario del vendedor. 9. Se cuenta con los datos de un empleado: Nombre, sueldo base, número de días de vacaciones, días trabajados. Se desea calcular el monto a pagar, sabiendo que: cada día de vacaciones se cancela a 5.000 Bs. Los días trabajados se cancelan a razón de 10.000 Bs. 10. Leer una cantidad en bolívares y escribir el equivalente en dólares, 11. Se tiene como entrada el nombre del vendedor y su sueldo base. Si el es menor o igual a 1.000.000 se le dará una comisión de 5% sobre su sueldo. Si el sueldo es mayor a 1.000.000 la comisión será del 8%. Calcule la comisión y el sueldo neto a pagar. 108 12. Se tiene como entrada nombre del alumno y nota. Determinar si esta aprobado o aplazado. 13. Se tiene como entrada un número, generar como salida un mensaje que indique si el número es par o impar. 14. Se tiene como entrada el nombre del empleado y su sueldo. Si el sueldo es mayor a 150.000 se le dará un bono de 10% del sueldo y se le descuenta del S:S.O. El 20% de su sueldo. Si el sueldo es menor o igual a 150.000, el bono será de 5% del sueldo y se les descuenta de S.S.O. 10% del sueldo. Determinar el sueldo neto. 15. Realizar un programa que lea tres número y determine cual es el menor y el mayor entre ellos. 16. Leer dos números que representan el costo de una mercancía y el billete para cancelar. Si son iguales, imprimir “no debe nada”, si es mayor el billete que el costo imprimir la cantidad a ser devuelta y en caso contrario imprimir la cantidad que falta para cancelar. 17. Se tiene como información: número de cuenta, saldo, tipo de transacción. Calcular el nuevo saldo. 18. Se tiene la siguiente información de un estudiante de la universidad: Cedula, Nombre, Semestre que cursa, número de materia que cursa, promedio actual. Escribir el nombre del alumno si estudia noveno semestre. Si el promedio es mayor que 18.2 escribir su número de cedula. 19. Se tiene como dato de entrada para un paciente de la clínica: número de historia, nombre del medico tratante, fecha, diagnostico, tratamiento, monto a cobrar. Escribir el nombre del paciente, diagnostico y tratamiento del paciente que tiene que cancelar más de 1.000.000 Bs. 20. Dada la siguiente información por alumno: Nombre, nota final. Se desea dar clasificación al alumno, de acuerdo a lo siguiente: 109 NOTA FINAL CLASIFICACION MAYOR A 18 EXCELENTE ENTRE 15 Y 18 BUENA ENTRE 11 Y 15 REGULAR MENORES A 10 DEFICIENTE Si al realizar los ejercicios obtuviste una clasificación de excelente o buena Felicitaciones estas preparado para poder realizar el taller 3 “Estructuras de Datos Dinámicas.” Sigue adelante. De lo contrario debes reforzar conceptos con otras guías de estudio sobre lenguajes C y retomar los talleres uno y dos, “Conceptos básicos de programación” y “Estructuras de Datos estáticos “para que puedas tener una base sólida, y poder realizar el tercer taller “Estructuras de Datos dinámica” sin complejidad 110