miércoles, 9 de junio de 2010

Programar en C en GNU/Linux, 1º parte

Como parte del profesorado de informática que estoy estudiando, tenemos, como es lógico, la asignatura programación, desde que empecé estoy tratando de llevar todo lo que aprendo a sistemas GNU/Linux, que es el sistema que uso.

Por tanto voy a mencionar algunas cosas básicas para comenzar a programar en C, en GNU/Linux, ya que no siempre nos enseñan a trabajar  bajo este sistema (en mi caso en las clases usamos el S.O Windows y el programa Turbo C para programar en C).

En realidad es muy fácil, o más bien, es casi lo mismo, la diferencia fundamental está en algunas librerías, como la librería conio.h , que es propiedad de Borland y sólo sus compiladores pueden usarla, no es estándar. De todos modos aquí tienes algunos tips para dejar de usar conio.h y sustituírla por funciones estándares.

La idea de este post, al menos por ahora no es enseñar el lenguaje de programación en sí, sino que mostrar cómo y en dónde escribir un programa, cómo compilarlo y cómo ejecutarlo.

Además de esto brindar alguna documentación sobre principios de programación en C.

Las herramientas que necesitamos son las siguientes:

- Editor de textos gedit (puede ser otro pero ahora veremos este)
- Complilador gcc (debes instalar también el paquete libc6-dev); o también puedes instalar el "metapaquete" build-essential, que contiene las herramientas fundamentales para programar en C/C++ (incluyendo GCC y libc6-dev).

  • Primer paso: escribir el programa en gedit
Gedit viene instalado por defecto y simplemente podemos crear un archivo en c por ejemplo desde tu carpeta personal, vas a Archivo/ Crear un documento/ Archivo vacío, y allí ya creas tu archivo, recomiendo que antes de escribir lo guardes con la extensión .c donde así podrá marcarte de diferentes colores las instrucciones del programa.

Ejemplo: programa que suma 2 números (y comentarios que explican su funcionamiento)

#include

/* la función main inicia la ejecución del programa */
int main()
{
   int entero1; /* primer número introducido por el usuario  */
   int entero2; /* segundo número introducido por el usuario */
   int suma;    /* variable en la cual se almacena la suma   */ 

   printf( "Introduzca el primer entero\n" ); /* indicador */
   scanf( "%d", &entero1 );          /* lee un entero */

   printf( "Introduzca el segundo entero\n" ); /* indicador */
   scanf( "%d", &entero2 );          /* lee un entero */

   suma = entero1 + entero2; /* asigna el total a suma */

   printf( "La suma es %d\n", suma ); /* imprime la suma */

   return 0; /* indica que el programa terminó con éxito */

} /* fin de la función main */





  • Una vez hecho esto vamos a compilarlo: para esto vamos a la terminal y tecleamos: 

gcc suma.c -o suma

-o suma lo ponemos si queremos que el ejecutable tenga ese nombre (es una o y no un 0).

Luego para ejecutarlo escribimos en la terminal:

./suma

Te dejo este video de muestra:




Por ahora vimos sólo esto, posteriormente vermemos otras cosas

También puedes leer este artículo de cómo programar en C con Anjunta (programama que mencionaremos más adelante).

También puedes leerte este material que he armado sobre introducción a la programación en c.




Fuentes: 

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C

http://mamalibre.eshost.com.ar/?q=node/167


http://extractionpoint.wordpress.com/2008/10/27/empezar-a-programar-en-c-bajo-ubuntu-linux/

Artículos relacionados



9 comentarios:

  1. Pues la verdad que tienes muy pocas materias por año, ya quisiera que mi licenciatura fuera así.

    ResponderEliminar
  2. no son solo esas, faltan todas las del tronco común, que yo ya las tengo aprobadas por ser profe de biología, son más de 10 por año, y las específicas son de bastante carga horaria, saludos

    ResponderEliminar
  3. Son muchos centros en los que se sigue enseñando a programar con conio.h ... es una biblioteca antigua y sólo para DOS.

    La solución que propone tu link de system("cls"); tampoco funcionará en Linux y system("clear"); es lento. Yo creo que lo mejor es tirar por códigos ANSI o ncurses.

    En serio, para echar a andar tus códigos de Windows prueba el stermp.h http://totaki.com/poesiabinaria/2009/05/colores-y-posicionamiento-en-terminales-linux-como-conioh-en-dos/ puedes hacer gotoxy, textcolor y las cosas básicas; no tiene los getch() pero puedes usar getchar() en su lugar (cin.get es de C++, pero también puedes usarlo si en realidad programas en C++).

    Una cosilla, para aprender, te recomiendo utilizar gcc con el parámetro -Wall (muetra todos los warnings) o -pedantic (se queja por todo lo que no sea ISO C)

    Saludos!

    ResponderEliminar
  4. Gracias Gaspar, me acuerdo de lo que me has dicho, el tema es que aún no sé cómo usarlo, ya te dejé un comentario en tu blog, saludos!

    ResponderEliminar
  5. ¡WoW!... ¿El include acaso no necesita llevar el correspondiente? Va en Open SuSE (Me gusta aclararlo porque casi nada va en esta distro-emo)...

    ResponderEliminar
  6. Yo lo emulo bajo wine,
    muy bueno hacerlo de la manera en que lo propones, pero me surgen dos dudas que no se si las pasé por alto o no las has dicho:
    1) Errores, ¿Avisa de errores, en las lineas?
    2) El compilado que genera?, un al parecer no fue un .exe ya que lo ejecutas desde el terminal, si fuera un .exe lo deberías emular bajo wine. Saludos programados! 8|

    ResponderEliminar
  7. Excelente, lo que me molesta es que las librerías no son las mismas que en Windows entonces pasar de programar en Windows a linux se hace bastante complicado :S

    ResponderEliminar
  8. Eddy, si avisa errores, ante cualquier error no te genera el ejecutable y te dice cuál es el error, el ejecutable es un ejecutable para linux, sé que hay otra forma para no tener que ejecutarlo desde la terminal, pero no sé bien, aún me queda mucho por investigar, saludos

    ResponderEliminar
  9. Hola Sofia, gracias por linkear a mi blog :D te quedó muy bien explicado el artículo, que luego cuando uno se cambia de Windows a GNU/Linux se siente perdido sin el botón 'run' jaja.

    ResponderEliminar