Translate

23 ago 2014

Programación en C [Parte 1]

Bueno, hace ya un tiempo que no toco el lenguaje C, y para no dejarlo en el olvido me he decidido por elaborar una especie de "tutorial" o "guía" donde quien quiera aprender pueda seguirme y aprender cositas ^^

Lo primero, es que voy a usar software específico, basado en la licencia GPL (GNU Public License), o dicho de otra forma, software libre y gratuito. Este software será concretamente Virtual Box, primero porque uso Windows 8.1 y no quiero destinar espacio del disco duro a particiones para arranques duales, ni quiero borrar todos los datos que tengo aquí ni hacer copias de seguridad ni nada de nada, por lo que la mejor herramienta para mí es emular Ubuntu desde una máquina virtual. Ubuntu es un sistema operativo basado en Unix (sistema basado casi en su totalidad en lenguaje C, por lo que es idóneo para programar en este lenguaje), y de software libre también, que se puede descargar desde la web oficial.

No entraré en detalles sobre cómo usar Virtual Box, que creo que es bastante intuitivo: elegir sistema operativo, crear un disco virtual, darle X espacio de nuestro disco duro real, y encender la máquina colocando la ISO de Ubuntu que hemos descargado. Y pasaré directamente a la parte en la que empezamos a programar (qEmoción!).

En primer lugar, me situaré en la terminal o consola del sistema, desde donde me moveré a un escritorio concreto donde haré todos los programas. Para usar la consola, hay que buscar el XTerm (o yo al menos uso este), y dentro, si empleamos en comando pwd, podremos ver que estamos en nuestra carpeta de usuario, si hacemos ls -l, veremos que tenemos acceso al escritorio, y por tanto, nos movemos a este con cd ./Escritorio. Me gustaría hacerlo todo con permisos de root, o administración, por lo que ejecuto un sudo su, introduciendo mi contraseña de usuario para acceder.

Comprobaremos que tenemos los permisos de administración porque el símbolo de dolar ($) cambia a una almohadilla (#), evidentemente, todo lo que creemos teniendo estos permisos no lo podremos borrar luego manualmente desde el escritorio usando el ratón. Una vez tengo los permisos, creo la carpeta llamada, pues no sé, tutorialC, así tal cual, y me moveré dentro para empezar a crear mis programas:

A continuación, crearé el primer programa en C con un editor, bien puedo utilizar gedit, que es más gráfico y más simpático, pero tampoco me convence del todo, prefiero utilizar nano, y quién se aventure con el vi, ¡adelante!. En mi caso solo he tenido que escribir: nano introduccion.c, para aparecer en el editor. Los ficheros de este lenguaje utilizan el formato ".c", y gracias al editor podremos escribir lo que deseemos.

Ahora bien, vamos con la estructura de un programa en C: todo programa debe tener una cabecera donde introducir o declarar las librerías que queremos usar, las librerías son un conjunto de código que se repite mucho y para no estar volviendo a inventar la rueda, se almacena en ficheros llamados "librerías" (o "bibliotecas", vale); a continuación hay que declarar la función "main", es decir, la función o rutina principal del programa. Hay que tener en cuenta que todo programa escrito en C requiere de una función "main", la cual es el programa en sí, pues cada vez que se ejecuta dicho fichero ".c", se ejecuta el main y ya está, ignorando el resto del código. Pero claro, ¿qué es una función, preguntarás? Una función es un trozo de código que hace algo bajo un identificador (un nombre), por ejemplo, mostrar algo en pantalla, recoger datos, etc. Hay que estructurarse la cabeza y resolver los problemas en base a lo que queremos, independientemente de cómo sea el lenguaje de programación y su sintaxis, lo más importante es saber lo que se quiere hacer. Y dentro de una función, primero se declaran las variables, que son datos de un determinado tipo (por ejemplo, la variable llamada "edad" tiene el contenido "14", y es un número), y debajo de las variables, el resto del código que utiliza las mismas.

Como esto es un tutorial, dejaré una breve captura de pantalla de cómo es un programa básico en C y la estructura que sigue:

Bien, iré parte a parte:
/*Programa de ejemplo*/: esta línea indica que hay un comentario; un comentario de este tipo (que abarca una o varias líneas) va siempre entre "/*" y termina con "*/", y son, como bien dice su nombre, comentarios para ayudar a los programadores, frases que el compilador ignora y no ejecuta. Imaginad que en un videojuego puede haber miles de líneas de código, y para ayudarse entre sí los programadores del juego van escribiendo comentarios para indicar qué hace cada parte del programa y no olvidarlo.

main(){}: es la famosa función principal, el programa en sí. La estructura que sigue es el identificador (main en este caso), los paréntesis que tienen una utilidad que no voy a comentar en un tutorial, ahora mismo están vacíos y no hacen nada, y los corchetes, que contienen todo el código de la función. Cada vez que ejecutemos el programa, se ejecutará lo que haya dentro de los corchetes, es decir, dentro de la función main().

printf();: printf(), al igual que main(), es una función, pero ya está predefinida y el sistema la entiende y la ejecuta, dentro de los paréntesis se introduce un texto que va entre comillas dobles y el cual es "¡Me encanta el lenguaje C!". La función printf lo que hace es sacar en pantalla este texto.

\n: este símbolo se encuentra dentro de la función printf(), y va al final. Lo que hace es que en esa parte del texto, haya un salto de línea.

exit(0);: exit() es otra función, indica que el programa termine, no obstante, cuando la función main() alcanza su última línea termina, por lo que aquí es un poco inútil, ya que está de relleno. El cero que se le introduce a la función tampoco lo explicaré aquí.

Y los más ávidos os habréis percatado de que cada instrucción debe terminar en punto y coma (printf y exit).

En definitiva, el programa lo que hace es sacar en pantalla una frase. Lo siguiente ahora es guardar su contenido y volver a la terminal, desde donde lo compilaré para crear un nuevo fichero ejecutable:

He compilado el programa con: gcc introduccion.c -o introduccion.out. Con esto le estoy diciendo al compilador "gcc" que compile el fichero "introduccion.c" en otro llamado "introduccion.out". Esto lo que hace es coger el código fuente del primer fichero y, propiamente dicho, compilarlo para crear el programa. Ahora, si ejecutamos el ".out" (el programa), veremos que se ejecuta sin problemas a pesar de las advertencias que nos haya sacado en la compilación, lo hacemos así: ./introduccion.out:

Y vemos que efectivamente, sale en pantalla el texto de "¡Me encanta el lenguaje C!". Si por algún motivo no tenéis el compilador, basta con hacer un simple: apt-get install gcc. De esta forma lo descargará y estará disponible. GCC es el compilador oficial de C (transforma el código fuente que hemos escrito en un programa).

Y si ahora editamos el fichero ".out", nos encontraremos con una sorpresa... y eso lo dejo a vuestra curiosidad, un saludo =)

No hay comentarios: