Manual de programación en C: Introducción


Empiezo con este artículo una serie de tutoriales con los cualquier interesado podrá iniciarse en la programación en C, decir que no hace falta absolutamente ningún conocimiento previo de programación, y que para cualquier duda puedes contactar conmigo (página Contacto).

Yo se C y lo he aprendido por mi cuenta, así que quizá algunas partes del curso no sean correctas, me gustaría que me enviarais cualquier crítica a mi correo para intentar hacerlo lo mejor posible. Que esto sirva para hacer ver que no hace falta hacer ingeniería de software para poder hacerse programitas que no encontremos por internet, y que todo lo podemos aprender por nuestra cuenta.

Yo sigo aprendiendo programación en otros lenguajes mientras escribo este curso, no soy un profesional; siempre me ha quedado esa sensación después de las clases que me gustaban de que ojalá supiera lo que el profesor, pues eso no va a pasar aquí, porque yo de informática se más bien poco, cuanto más aprendas más te darás cuenta de lo poco que sabes, y C, junto con C# y el facilísimo html son los únicos lenguajes que sé BIEN.

Estructura y creación de un programa.

El siguiente texto no lo entenderás si no has visto nada de programación, pero tranquilo, léelo por encima y cuando vaya avanzando el curso irás viendo lo que es cada cosa, de hecho, si te lo saltas y te quedas con que nosotros escribimos el código y un programa llamado compilador lo traduce al lenguaje del ordenador, de momento te irá bien y no te liarás tanto.

  • Lo primero evidentemente es escribir un código que resuelvo un problema que tenemos.
  • Ahora viene el preprocesado, un programa cambia los archivos de código, por ejemplo incluye los ficheros de las directivas #include, sustituye los #define, y elimina los comentarios.
  • Lo siguiente es el análisis sintáctico. Que no cunda el pánico sobre aquellos que cateaban sobre las faltas de ortografía, pero sí, algunas habrá que aprender, un lenguaje de programación, como todo lenguaje, tienes sus reglas y estas deben cumplirse, este programa devolverá algún fallo y parará el proceso si alguna regla se salta.
  • El análisis semántico descubrirá algún otro tipo de fallos lógicos más complejos, por ejemplo si una función intenta guardar una letra en una variable que solo admite números
  • Un generador de código recorre el código traduciéndolo a un lenguaje para la máquina en la que se compila.
  • Un enlazador (linker) juntará todos los recursos en un solo ejecutable (.exe en MS Windows).

En la práctica no tendremos que hacer esto cada vez que escribamos algo, sino que un mismo programa hace todas las funciones a la vez.

Herramientas que utilizaremos

Intentaré hacer el curso de modo que sea válido en las plataformas windows y gnu/linux, en windows puedes usar cualquier IDE, esto es un programa que incluye un editor, gestión de proyectos completos y un compilador, puedes usar Visual C/C++ (creo que es de pago) o wxDev-C++, gratis y bastante bueno, es una evolución de Dev-C++, que dejó de desarrollarse hace algún tiempo.

Para Linux puedes usar los IDEs NetBeans o MonoDevelop, ambos gratuitos y bastante buenos, aunque para el curso puedes usar gcc, que viene instalado en prácticamente todas las distribuciones de linux, es tan solo compilador de consola en modo texto, no tan pijín como los IDEs pero igual de funcional.

Primer programa

Vamos a hacer un primer programa, el clásico Hola Mundo, solo conseguirás que en la pantalla ponga Hola Mundo, pero por lo menos verás resultados.

Abre tu IDE o cualquier editor de texto y escribe:

#include <stdio.h>
#include <stdlib.h>

int main()
{

printf(“Hola Mundo\n”);
return 0;

}
Guárdalo con extensión .c (los ides lo harán ellos solos y compílalo. Si estás usando un IDE habrá un botón que ponga Ejecutar, Compilar y Ejecutar o algo así, si estás en Linux, abre una terminal y muévete a la carpeta donde tengas el archivo holamundo.c, si esta en /home/tnombre/ escribe

cd /home/tunombre

Ahora pon:

gcc holamundo.c -o HolaMundo

Este es el compilador, -o sirve para especificar el nombre del ejecutable, si solo pusiéramos gcc main.c, el ejecutable se llamaría a.out, ahora ejecútalo escribiendo ./HolaMundo y verás el resultado.

Puede ser que, sobre todo si estás usando un IDE, aparezca una ventana negra y desaparezca muy rápido, esto es porque el SO cierra el programa cuando llega a return 0; en main, si te pasa eso, prueba a escribir lo siguiente:

Si estás en Windows, escribe

system(“PAUSE”);

entre las filas printf y return.

Si estás en Linux, prueba poniendo:

printf(“Press ‘Enter’ to continue: … “);
while ( getchar() != ‘\n’)
;

También entre las filas printf y return, Con las dos harás los mismo, el programa esperará a pulsar una tecla para salir.

Ahora explicaremos cada linea.

#include <stdio.h>

Esta función lo que hace es llamar a la librería stdio.h, stdio significa standard input/output.

Las librerías las podemos entender así, como un sitio al que vamos a buscar algo, solo que aquí hay miles de librerías según lo que queramos hacer.

Supongamos que nos da por construir un coche, en vez de comprarlo nos da la vena de mecánico y decidimos construirlo, tenemos dos opciones, podemos construir el coche desde cero, inventándonos un motor, fabricando todas las piezas nosotros mismos, o podemos ir a una biblioteca e informarnos sobre el tema, así como usar piezas usadas de modo que sea más sencillo. Esto es lo que hacen las librerías (del inglés library, debería ser traducido como biblioteca, pero todo el mundo usa librería, y si no puedes vencerlos, únete a ellos), nos dan funciones ya programadas para que hacer nuestro programa sea más fácil y menos tedioso. Ya veremos más adelante cómo se usan incluso cómo hacer nuestras propias librerías.

#include <stdlib.h>

Lo mismo que antes, ahora incluimos la librería stdlib (standard library), también con algunas funciones standard que nos pueden ser útiles.

int main()

Aquí decimos que empieza el programa, esta es la manera de definir una función, en este caso llamada main, aunque ya veremos las funciones más adelante, quédate con el programa se empieza a ejecutar por esta linea int main().

{

este signo es muy importante e indica que aquí empieza la función main, todo lo que haya dentro de la función main debe ir entre un { de inicio y un } de final, estos dos símbolos indican el inicio y final de cualquier estructura o bloque en C.

printf(“Hola Mundo\n”);

printf es una función que pertenece a la librería stdio.h. Si no hubiéramos incluido esa librería al intentar compilar nos habría dado un error diciendo que no ha encontrado la función printf. Lo que hay entre paréntesis son los datos que usará la función, conocidos como parámetros. printf toma una cadena de caracteres, en este

caso Hola Mundo\n y la escribe en la pantalla. Es importante decir que en C las cadenas de caracteres siempre deben ir entre comillas “cadena”, cuando esta función se encuentra un \n lo que hace saltar una linea. Si ponemos:

printf(“Hola “);

printf(“Adiós”); y ejecutamos, la pantalla mostrará Hola Adiós

Si ponemos:

printf(“Hola\n”);

printf(“Adiós”); y ejecutamos, tendremos:

Hola

Adiós

return 0; indica que el programa ha acabado sin fallos y lo termina.

Ya has hecho tu primer programa, decir que no te preocupes si no has entendido algo, al principio puede ser un poco raro y dentro de muy poco tiempo verás este primer programa, y dirás: “Menuda estupidez que hice”.

Comentarios

Lo último que vamos a ver en esta introducción son los comentarios, a veces queremos indicar en nuestra programa que hace cada cosa para que esté más claro. Sobre todo si vamos a liberar nuestro código, es conveniente decir que hace cada función para que el que lea el código lo entienda mejor.

Estas lineas evidentemente no se compilan y son desechadas en la primera fase de creación, el preprocesado, del que se habló al principio de este artículo. Usaremos nuestro código Hola Mundo.

#include <stdio.h>
#include <stdlib.h>

/*Esto es un bloque
de comentarios
que no se ejecutarán*/

int main()
{

printf(“Hola Mundo\n”); // Esto es un comentario
return 0;

}

Vemos aquí dos tipos de comentarios, empezaremos por el segundo:

//Esto es un comentario

Vemos que tiene dos / delante, esto indica que es un comentario y que no debe compilarse, toda linea que empiece con dos // será un comentario.

NOTA:
Recuerda que las lineas en C no se distinguen cada vez que pulses enter, sino con punto y coma ;
Si tenemos escrito:
printf(“Hola”); printf(“Adiós”); Diremos que tenemos dos lineas, no 1
Pero con // debemos pulsar enter para pasar a una linea compilable.
Si tenemos
printf(“Hola”); //Comentario printf(“Adiós”); Solo se ejecutará el printf(“Hola”);
Debemos poner
printf(“Hola”); //Comentario
printf(“Adiós”);

El segundo tipo es /* Comentario */

A veces queremos hacer un comentario muy grande que ocupa varias lineas y es un rollo poner // delante de cada linea, así que usamos /* */ Todo lo que el compilador encuentre entre esos dos símbolos será un comentario. Podemos incluso usarlo dentro de los parámetros de las funciones, aunque no lo recomiendo.

printf(“Hola”/*Comentario*/);

Cuidado, que todo lo que halla entre comillas es interpretado como una cadena, y si tenemos.

printf(“Hola /*Comentario */ Mundo”);

En pantalla se mostrará:

Hola /*Comentario*/ Mundo

Y muy importante no cortar funciones por la mitad.

pri/*Comentario*/ntf(“Hola”);

Es un error garrafal y dará un error cuando intentemos compilar.

Esta ha sido la primera entrega, cualquier cosa comentad, o mandadme un mensaje (Contacto), sobre cosas que mejorar, de las que queréis que hable o lo que sea.

En la próxima entrega empezaremos con las variables, algunas funciones de input, es decir, escribir información por pantalla y guardarla en una variable para poder usarla en el programa.
Licencia de Creative Commons
Manual de C by The Neowriter is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Anuncios
Esta entrada fue publicada en Manual de programación en C, Manuales, Manuales largos y etiquetada , , , , , , . Guarda el enlace permanente.

13 respuestas a Manual de programación en C: Introducción

  1. Marciano dijo:

    muy bueno 😉 me sirvio porfin se como empezar a programar

  2. lupita100 dijo:

    Hola amigo yo tambien soy una programadora del lenguaje C.

    Tienes un muy buen blog, te invito al mio
    http://aprendiendoprogramacion.wordpress.com/

    Estoy igual que tu jeje penas tengo 3 entradas jejeje

    espero podamos compartir conocimientos y recursos de programacion
    saludos!

  3. frohike313 dijo:

    Buenas yo tengo una duda que paso a exponeros:

    Lo primero que tengo que decir es que me saqué el título de FP de informática hace 7 años y ahora tengo que refrescarlo todo, pero me acuerdo de muy poquita cosa.

    Bien como veo que el compilador que usábamos en nuestra época ya ni existe, conseguí el Visual Studio 2010 y me dispuse a escribir el programa de HolaMundo tal cual:

    #include
    #include

    int main()
    {

    printf(“Hola Mundo\n”);
    system(“pause”);
    return 0;

    }

    El caso es que me da un error “No se puede iniciar el programa … Holamundo.exe” WTF?

    Bien, conseguí otra versión del mismo problema que si me ha funcionado y os pongo ahora:

    #include

    using namespace std;

    int main()
    {

    cout << "hello world" << endl;
    system("pause");
    return 0;

    }

    Yo por lo poco que recuerdo, me gusta más el estilo del 1º ejemplo, más que nada porque el cout ese y el endl nunca los utilicé ni sé para que valen. Pero el caso es que no comprendo que no me funcione y sobre todo el fallo que me da parece de lo más absurdo. Bueno gracias y enhorabuena por el blog que está muy bien.

    • theneowriter dijo:

      Cuando crees el proyecto, asegúrate de crearlo como proyecto de C, no de C++
      using namespace std;
      using es el equivalente de include en C++, en programación OO los programas, métodos, etc, van dentro de nombres de espacios, no es como las librerías en C, por eso se usa using namespace, de modo que estás programando en C++, no C, son parecidos en sintaxis, pero C++ es oritentado a objetos(OO),
      Pues eso, crea el proyecto como proyecto de C. Si por lo que sea el Visual Studio 2010 no trae programación en C, sino solo en C++ (sería raro, pero yo el último que usé fue el 2008 y si tenía), prueba otro IDE, te recomiendo Dev-C++, NetBeans (el que uso para proyectos grandes), o el wxDev-C++, que si que traen C seguro.
      Para cualquier cosa pregunta, gracias por seguir el curso y un saludo.

    • theneowriter dijo:

      Por cierto, lo de cout y cin son funciones de el nombre de espacio std o la librería iostream (input output stream), hacen lo mismo que printf y scanf, pero a mi estos últimos también me gustan más porque son más intuitivos y permiten más cosas.
      cout da salida de texto y cin permite meter texto en una variable
      endl es end of line, es como el \n en las cadenas, y en ese caso le estás indicando que se acaba la cadena de texto.
      Un saludo y pregunta lo que quieras.

  4. frohike313 dijo:

    Pues muchas gracias por todo, y descuida que ya me saldrán más dudas

  5. Pingback: Los números de 2010 « White-Hat H4ck1n9

  6. Thormaxx dijo:

    enhorabuena por el manual y por el blog en general, un 10

  7. beto dijo:

    Hola, encontre tu pagina en un foro (buscando como hackear wifi xD) pero me alegra ya que esta primera leccion me gusto mucho y entendi a todo, habia estado buscando un curso de C desde 0 y este se ve que tiene buenas expectativas, no hablas con un lenguaje dificil de entender (como leí por ahi que los libros te enseñan pero aunque eres novato ya te hablan de arrays y cuanta cosa). Espero que las lecciones posteriores sean igual de accesibles como esta, gracias!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s