02. Introducción al entorno de programación
1. Objetivos
- Entender qué es un entorno de programación.
- Instalar un entorno de programación.
- Crear un programa.
- Ejecutar un programa.
2. Introducción
Un entorno de programación es una aplicación informática que integra las diferentes herramientas necesarias para desarrollar e implementar programas.
Aunque la instalación del entorno de programación no forma parte directamente del aprendizaje de la programación, es el primer paso que se debe hacer para empezar a programar en cualquier lenguaje de programación. Para poder hacer un programa necesitamos básicamente dos componentes:
- Editor: puede ser cualquier editor que nos permita escribir texto plano, o sea, sin añadir ningún tipo de información sobre formato (negritas, alineación, tipo de letra, etc.). Ejemplos de estos editores pueden ser Notepad de Windows, el TextEdit en Mac, Emacs o el más conocido, el Vi que lleva integrado cualquier Linux/Mac.
- Compilador: es un "programa" que analiza nuestro código y lo convierte en una representación binaria que pueda ser ejecutada por un ordenador. Del mismo modo que hay muchos editores diferentes, también hay muchos compiladores. El más conocido y utilizado es el GNU (GCC), ya que su uso es gratuito, pero existen los compiladores de Microsoft y Mac también suele tener los suyos.
Existen una familia de aplicaciones, conocidas por sus siglas en inglés (IDE - Integrated Development Environment) que nos permiten simplificar la programación, incorporando todos los elementos anteriores y ayudando al usuario en los procesos de escritura de los programas (indicando posibles errores, aportando ayuda en los comandos, etc.) y en su compilación (haciendo las llamadas al compilador con todos los parámetros). Hay muchos ejemplos de IDE: Eclipse, Netbeans, Microsoft Visual Studio.
En esta asignatura utilizaremos CodeLite, ya que es un entorno multiplataforma (existe en Windows, Mac y Linux), su uso es gratuito y la curva de aprendizaje es baja.
Para evitar problemas con la instalación y configuración de CodeLite, además de los ocasionados debido a las diferencias entre compiladores C según el sistema operativo, se proporciona una máquina virtual con todo lo necesario para que podáis cursar la asignatura correctamente. Una máquina virtual es una instalación de un sistema operativo que corre de forma emulada sobre otra plataforma de software. En este curso usaremos el software de virtualización VirtualBox y una máquina virtual con la distribución linux Lubuntu 16.04 LTS instalada.
A continuación se indican los pasos a seguir para tener preparado el entorno de programación y así poder ser usado en las próximas unidades. Además, veremos cómo crear y ejecutar un programa usando este entorno.
3. Instalación
En la página de descargas del proyecto VirtualBox, seleccionaremos la última versión para nuestro sistema operativo y seguiremos las instrucciones de instalación correspondientes. En la mayoría de los casos será suficiente con bajarnos el paquete de instalación (.exe, .dmg) y dejar los parámetros por defecto.
El siguiente paso consistirá en descargar la máquina virtual desde el aula -> Recursos -> Materiales -> Máquina virtual -> Software en linia -> descargar FP20172.ova, que contiene el entorno de programación; el tamaño del fichero es aproximadamente de 1.9 GB. Una vez bajada, vamos a VirtualBox > File > Import appliance y seleccionamos la máquina virtual que acabamos de descargar (FP20172.ova):
A continuación, hacemos clic en Continue y nos aparecerá un resumen de la máquina virtual que vamos a importar. Importante: marcaremos la opción «Reinitialize the MAC address of all network cards». Hacemos clic en Import.
VirtualBox nos mostrará una ventana con el estado del proceso de importación. El tiempo que tarda varía en función de las características de cada máquina:
Una vez importada la máquina virtual, aparecerá en la parte izquierda la nueva FP20172. Puede que no sea la única máquina virtual existente si préviamente tenéis otras creadas:
Hacemos clic en FP20172 y seleccionamos Settings. A continuación, elegimos en System la opción Motherboard para ajustar la cantidad de memoria base para nuestra máquina virtual. En función de la memoria RAM que tengáis, podréis aumentar o disminuir su valor. Se recomiendan 1024 MB para que funcione lo más fluidamente posible.
Podremos seleccionar también el número de Processor(s) (CPU) que usaremos en la màquina. Con uno es suficiente:
Siguiendo con la configuración de la máquina, seleccionaremos la opción Display > Screen y podremos ajustar la memoria asignada para la tarjeta gráfica. Con 16 MB tiene que ser suficiente, ya que dentro de la máquina virtual no usaremos aplicaciones con un uso intensivo de memoria gráfica.
Terminada la parte de la configuración, hacemos clic en el botón OK. En la pantalla principal de VirtualBox, seleccionaremos la máquina virtual FP20172 y hacemos clic en el botón Show. Si todo ha ido correctamente, deberíamos poder entrar en la máquina virtual FP20172 y empezar a trabajar con ella. El usuario de acceso es uoc y la contraseña es uoc.
Recomendamos leer la Guía oficial de primeros pasos en VirtualBox per resolver las dudas puntuales que os puedan surgir sobre el funcionamiento general de VirtualBox, los principios de virtualización y la importación de máquinas virtuales.
4. Trabajar con Lubuntu
Lubuntu es una distribución derivada de Ubuntu, también desarrollada por Canonical, y que usa el escritorio LXDE. Lubuntu se caracteriza para necesitar menos recursos de los habituales y ser más ligera en comparación con otras distribuciones linux más extendidas. Su uso es muy intuitivo y todas las opciones de configuración y las aplicaciones instaladas están disponibles haciendo clic en el incono superior izquierdo del logo de Lubuntu:
En el escritorio de Lubuntu encontraréis el icono de CodeLite con el que podréis acceder al IDE:
5. Primeros pasos
Para ver cómo empezar a programar en CodeLite, visualizad el siguiente vídeo y después revisad algunos de los conceptos básicos que aparecen y que se describen a continuación. Finalmente tenéis tres enlaces con el detalle de la instalación y uso del entorno. Recomendamos que no intentéis instalar el entorno hasta que hayáis revisado atentamente el video y los enlaces.
Recordad que contáis con la ayuda del consultor del laboratorio si tenéis problemas con la instalación.
En este vídeo se ha hablado de diferentes conceptos relacionados con el entorno de trabajo:
- Espacio de trabajo (workspace): sirve para agrupar diferentes proyectos relacionados entre ellos. Por ejemplo, si tenemos diferentes programas que interactúan entre ellos. También se puede utilizar si tenemos una actividad (Práctica/PEC) que requiere realizar diferentes programas, podemos crear un único espacio de trabajo para esta actividad con el nombre de la actividad, y tener un proyecto para cada programa que se pida. Solo podemos tener un único espacio de trabajo abierto en CodeLite; cuando abramos otro, se cerrará el que estaba abierto anteriormente. Tampoco podemos tener un proyecto sin espacio de trabajo, por lo tanto, si creamos un nuevo proyecto y no hay ningún espacio de trabajo abierto, se creará uno para este proyecto.
- Proyecto: sirve para agrupar todos los archivos necesarios de un programa. Esto incluye los archivos de código que vamos escribiendo, la información sobre su tipo, la configuración necesaria para compilar el código, etc.
- Plantilla (template): permite crear un proyecto que ya contiene la configuración y, en algunos casos, ejemplos de código para un determinado tipo de programa. Para hacer un programa que se ejecute directamente, elegiremos como tipo de proyecto Console --> Simple Executable (GCC).
- Directorio del proyecto (project path): es el directorio de nuestro ordenador donde se guardarán todos los archivos que creamos, tanto los que utiliza CodeLite para guardar la configuración de nuestro proyecto, como los que añadimos nosotros con el código. También se guardan los archivos resultantes de la compilación.
- Compilador (compiler): como hemos visto antes, existen una gran variedad de editores y de compiladores que podemos utilizar. CodeLite nos permite elegir qué compilador utilizaremos para compilar nuestro programa, y nos mostrará todos aquellos compiladores que detecte en nuestro ordenador. En nuestro caso utilizaremos "GNU GCC".
- Programa principal (main): por defecto, cuando creamos un nuevo proyecto se crea un fichero principal llamado main.c, que contiene un pequeño código. Cuando ejecutamos un programa, busca este código principal y se empieza a ejecutar por aquí. En el caso del CodeLite, el código corresponde al primer programa que se hace cuando se aprende a programar, el hello world.
- Hola mundo (hello world): es un programa que se utiliza como primer ejemplo de programa en todos los lenguajes de programación. Lo que hace es muy simple: escribe por pantalla el mensaje «Hello World». Nos sirve para ver que todo está funcionando correctamente.
- Compilar: cuando queramos probar que nuestro programa está bien escrito, lo podemos compilar para generar los archivos que posteriormente se ejecutarán. Cuando se compila el programa, el compilador analiza qué hemos escrito y si está bien escrito sintácticamente. Es muy importante diferenciar entre que un programa esté bien escrito y que funcione. Para hacer una analogía con la escritura en general, una cosa es escribir correctamente, sin faltas de ortografía, y otra muy distinta es que el mensaje que transmitimos sea lo que queremos.
- Ejecutar: para saber si nuestro programa hace lo que queremos que haga, hay que ejecutarlo. Llegar a poder ejecutar un programa nos dice que el entorno de programación está correctamente instalado, pero puede ser que nuestro programa no sea correcto. Para asegurar también esta segunda parte hay que hacer pruebas de su funcionamiento. En el caso del hello world, para probar si funciona, se debe comprobar que lo que se escribe por pantalla es el mensaje correcto. En otros casos habrá que añadir otras comprobaciones, pero eso ya lo veremos más adelante.
6. Repositorio de ejercicios de la xWiki en CodeLite
La máquina virtual FP20172, a parte de contener CodeLite preparado para funcionar, también incluye un workspace con gran cantidad de ejemplos que se irán comentando en los módulos de la xWiki. Para acceder a este workspace solamente se tiene entrar en CodeLite -> Workspace -> Open workspace -> y elegir el fichero /home/uoc/Documents/codelite/workspaces/FP_examples/FP_examples.workspace :
A continuación ya podéis revisar, ejecutar, editar y modificar cualquiera de los ejemplos que contiene :
Los ejemplos siguen la nomenclatura MM_EX, donde MM=módulo de la xWiki y EX=número de ejemplo dentro del módulo. Por ejemplo, 05_02 hace referencia al segundo ejemplo del quinto módulo de la xWiki.
7. Compartir ficheros entre FP20172 y host
Se puede dar el caso que necesitemos copiar datos entre la máquina virtual FP20172 y el sistema operativo principal de nuestro ordenador (host). Una posible forma para hacerlo es mediante una carpeta compartida, como se explica a continuación.
Con la máquina virtual FP20172 parada, la seleccionamos y accedemos a sus Settings:
A continuación entramos en la opción Shared Folders:
Previamente deberemos haber creado en nuestro ordenador la carpeta que queremos compartir con la máquina virtual FP20172. Indicamos esta carpeta como Folder Path, le asignamos un nombre en Folder Name con el que la identificaremos dentro de FP20172 y marcamos la opción Auto-mount :
Una vez definida la carpeta compartida, arrancamos la máquina virtual FP20172. En el escritorio ahora se muestra una nueva carpeta; en este ejemplo se llama sf_FP porque el Folder Name definido ha sido FP. Para poder usarla primero deberemos dar permisos al usuario uoc; accedemos a System Tools -> LXTerminal :
Y tecleamos el comando sudo adduser uoc vboxsf (recordamos que la contraseña es uoc) :
A continuación reinciamos completamente la máquina virtual FP20172 para activar los cambios. Una vez iniciada, ya podremos usar la carpeta:
En este momento, cualquier fichero que copiemos en esta carpeta, ya sea desde el lado del host o desde el lado de la máquina virtual FP20172, será accesible desde los dos entornos.
8. Cómo entregar un workspace
En los primeros ejercicios que programaremos trabajaremos únicamente con un fichero .c. Esta situación cambiará a medida que avancemos en el curso, de manera que un programa estará compuesto por más de un fichero. En este apartado se explica cómo preparar una entrega cuando nos encontramos en este segundo escenario.
Una vez hayamos codificado nuestro programa, el primer paso es purgar del workspace todos los ficheros obviables para la entrega; vamos a CodeLite -> Build -> Clean Workspace :
A continuación abrimos un navegador desde Lubuntu -> Accessories -> File Manager PCManFM -> nos situamos donde se encuentra la carpeta del workspace a comprimir -> botón derecho del ratón sobre la carpeta -> Compress... -> indicamos un nombre y elegimos la extensión zip :
En este punto se ha generado el fichero .zip que contiene todo el workspace comprimido:
Ahora ya podemos realizar la entrega del workspace completo mediante el fichero .zip generado.
9. Problemas de instalación
A continuación se comentan los problemas más frecuentes que se pueden reproducir:
La máquina virtual no se ha descargado correctamente
- Descargad el fichero desde un ordenador conectado a internet vía Ethernet (cable de red). Los cortes de las conexiones wifi pueden provocar la interrupción de la descarga.
- Utilizad Mozilla Firefox para realizar la descarga. Hemos detectado que algunas versiones de Google Chrome cortan la descarga del fichero, quedando corrupto.
Herramientas de virtualitzación deshabilitadas desde la BIOS
- Entrad en la BIOS de vuestro PC. Para cada modelo de ordenador se tiene que usar una tecla o combinación de teclas distintas durante el arranque.
- Habilitad la virtualización. Buscad en la BIOS una opción similar a Enable Virtualization o Enable VTx/VTd.
- Guardad los cambios, salid de la BIOS y reiniciad el equipo.
10. Resumen
En esta guía hemos visto:
- Qué es un IDE.
- Cómo instalar el entorno de programación.
- Cómo crear un nuevo espacio de trabajo en CodeLite.
- Cómo crear un programa en CodeLite.
- Cómo ejecutar un programa en CodeLite.