[Anterior] [Siguiente] [Contenido]
Importante! lee la licencia de este curso lo primero de todo.
Este es un curso para principiantes así que intentaré que no haga falta ningún conocimiento anterior para seguirlo. Muchos otros cursos suponen conocimientos previos pero eso no sucederá aquí. Si tienes alguna duda consulta en la seccion Como resolver dudas mas abajo.
En cuanto al formato del curso los capítulos más recientes están escritos usando html dinámico, lo que me permite cambiar el estilo más cómodamente. Si tu navegador no lo soporta también podrás ver el curso, aunque tendrá un aspecto diferente (el contenido por supuesto será el mismo).
Me gustaría que si sigues el curso me comentes que te parece y que rellenes la encuesta de opinión. Si tienes algun problema con el formulario de la encuesta mándame un email corriente contestando a las preguntas que se hacen en él. El curso es gratis, y esto es lo único que pido a cambio.
Algunos capítulos tienen apartados dedicados a algún Sistema Operativo en concreto y está indicado en el título entre paréntesis. Por ejemplo en el Capítulo 2 hay un apartado titulado 'Gotoxy: Posicionando el cursor (DOS)'. El DOS entre paréntesis indica que sólo tiene validez en DOS.
NOTA IMPORTANTE: Si te pierdes no te desanimes, ponte en contacto conmigo y consultame. Puede que alguna sección esté mal explicada. De esta forma estarás colaborando a mejorar el curso.
Puedes encontrar la versión más actualizada del curso en www.elrincondelc.com.
Este es un curso para principiantes así que intentaré que no haga falta ningún conocimiento anterior para seguirlo. Muchos otros cursos suponen conocimientos previos pero eso no sucederá aquí. Si tienes alguna duda puedes resolverla de una de las siguientes formas:
Para apuntarte a la lista debes enviar un mensaje en blanco a:
Para enviar mensajes a la lista (debes apuntarte primero, si no el mensaje no llegará) escribe a:
Te animo a que entres en el foro o te apuntes a la lista. Y recuerda que ninguna duda es estúpida, aquí se supone que se empieza desde cero. También me gustaría que participases activamente en los foros y la lista ayudando en lo que puedas a los que tienen dudas.
El lenguaje C es uno de los más rápidos y potentes que hay hoy en dia. Algunos dicen que está desfasado (ja,ja) y que el futuro es Java. No se si tendrá futuro pero está claro que presente si tiene. No hay más que decir que el sistema operativo Linux está desarrollado en C en su práctica totalidad. Así que creo que no sólo no perdemos nada aprendiendolo sino que ganamos mucho. Para empezar nos servirá como base para aprender C++ e introducirnos en el mundo de la programación Windows. Si optamos por Linux existe una biblioteca llamada gtk (o librería, como prefieras) que permite desarrollar aplicaciones estilo windows con C.
No debemos confundir C con C++, que no son lo mismo. Se podría decir que C++ es una extensión de C. Para empezar en C++ conviene tener una sólida base de C.
Existen otros lenguajes como Visual Basic que son muy sencillos de aprender y de utilizar. Nos dan casi todo hecho. Pero cuando queremos hacer algo complicado o que sea rápido debemos recurrir a otros lenguajes (c++, delphi,...).
Una de las cosas importantes de C que debes recordar es que es Case Sensitive (sensible a las mayúsculas o algo así). Es decir que para C no es lo mismo escribir Printf que printf.
Conviene indicar también que las instrucciones se separan por ";".
Un compilador es un programa que convierte nuestro código fuente en un programa ejecutable (Me imagino que la mayoría ya lo sabeís, pero más vale asegurar). El ordenador trabaja con 0 y 1. Si escribiéramos un programa en el lenguaje del ordenador nos volveríamos locos. Para eso están lenguajes como el C. Nos permiten escribir un programa de manera que sea fácil entenderlo por una persona (el código fuente). Luego es el compilador el que se encarga de convertirlo al complicado idioma de un ordenador.
En la practica a la hora de crear un programa nosotros escribimos el código fuente, en nuestro caso en C, que normalmente será un fichero de texto normal y corriente que contiene las instrucciones de nuestro programa. Luego se lo pasamos al compilador y este se encarga de convertirlo en un programa.
Si tenemos el código fuente podemos modificar el programa tantas veces como queramos (sólo tenemos que volver a compilarlo), pero si tenemos el ejecutable final no podremos cambiar nada (realmente sí se puede pero es mucho más complicado y requiere más conocimientos).
Siguiendo la filosofía de mi página los compiladores que usaremos serán gratuítos. Si vas a programar en Windows te recomiendo usar el Dev-C++, de facil instalacion y manejo. Tambien recomiendo usar el DJGPP para MS-Dos y Windows y el GNU C ()para Linux. Puedes encontrar más información sobre DJGPP en mi página web: www.elrincondelc.com o al final del curso. La información de la página está más actualizada.
Nota: Cuando comencé a escribir el curso solía usar el DJGPP en Windows, sin embargo, ahora me decanto más bien por el Dev-C++ por la comodidad y facilidad que supone para los principiantes.
El compilador en sí mismo sólo es un programa que traduce nuestro código fuente y lo convierte en un ejecutable. Para escribir nuestros programas necesitamos un editor. La mayoría de los compiladores al instalarse incorporan ya un editor; es el caso de los conocidos Turbo C, Borland C, Visual C++,... Pero otros no lo traen por defecto. No debemos confundir por tanto el editor con el compilador. Estos editores suelen tener unas características que nos facilitan mucho el trabajo: permiten compilar y ejecutar el programa directamente, depurarlo (corregir errores), gestionar complejos proyectos,...
Si nuestro compilador no trae editor la solución más simple en MS-Dos puede ser usar el edit, en windows el notepad. Pero no son más que editores sin ninguna otra funcionalidad. Otra posibilidad es un entorno de desarrollo llamado RHIDE, un programa muy útil que automatiza muchas de las tareas del programador (del estilo del Turbo C y Turbo Pascal). Si queremos una herramienta muy avanzada podemos usar Emacs, que es un editor muy potente, aunque para algunos puede parecer muy complicado (valientes y a por ello). Estos dos programas están disponibles tanto en Linux como en MS-Dos.
Te recomiendo que busques en la web una lista de Compiladores y editores actualizada. Hay muchos y muy buenos.
En un alarde de originalidad vamos a hacer nuestro primer programa: hola mundo. Nadie puede llegar muy lejos en el mundo de la programación sin haber empezado su carrera con este original y funcional programa. Allá va:
#include <stdio.h>
int main() {
printf("Hola mundo\n");
return 0;
}
Nota: Hay mucha gente que programa en Windows que se queja de que cuando ejecuta el programa no puede ver el resultado. Para evitarlo se puede añadir antes de return 0; la siguiente línea:
system("PAUSE");
Si esto no funciona prueba a añadir getch();
Otra nota: En compiladores MS Windows, para poder usar la funcion system() debes anadir al principio del fichero la linea: #include <windows.h>
¿Qué fácil eh? Este programa lo único que hace es sacar por pantalla el mensaje:
Hola mundo
Vamos ahora a comentar el programa línea por línea (Esto no va a ser más que una primera aproximación).
#include <stdio.h>
#include es lo que se llama una directiva. Sirve para indicar al compilador que incluya otro archivo. Cuando en compilador se encuentra con esta directiva la sustituye por el archivo indicado. En este caso es el archivo stdio.h que es donde está definida la función printf, que veremos luego.
int main()
Es la función principal del programa. Todos los programas de C deben tener una función llamada main. Es la que primero se ejecuta. El int (viene de Integer=Entero) que tiene al principio significa que cuando la función main acabe devolverá un número entero. Este valor se suele usar para saber cómo ha terminado el prorama. Normalmente este valor será 0 si todo ha ido bien, o un valor distinto si se ha producido algún error (pero esto lo decidimos nosotros, ya lo veremos). De esta forma si nuestro programa se ejecuta desde otro el programa 'padre' sabe como ha finalizado, si ha habido errores o no.
Se puede usar la definición 'void main()', que no necesita devolver ningún valor, pero se recomienda la forma con 'int' que es más correcta. A lo largo de este curso verás muchos ejemplos que uso 'void main' y falta el return 0; del final, el código funciona correctamente pero puede dar un 'warning' al compilar. En estos momentos estoy intentando corregir esto, pido perdón por las molestias.
{
Son las llaves que indican el comienzo de una función, en este caso la función main.
/* Aquí va el cuerpo del programa */
Esto es un comentario, no se ejecuta. Sirve para describir el programa. Conviene acostumbrarse a comentar los programas. Un comentario puede ocupar más de una línea. Por ejemplo el comentario:
/* Este es un comentario que ocupa dos filas */
es perfectamente válido.
printf( "Hola mundo\n" );
Aquí es donde por fin el programa hace algo que podemos ver al ejecutarlo. La función printf muestra un mensaje por la pantalla. Al final del mensaje "Hola mundo" aparece el símbolo '\n'; este hace que después de imprimir el mensaje se pase a la línea siguiente.
Fíjate en el ";" del final. Es la forma que se usa en C para separar una instrucción de otra. Se pueden poner varias en la misma línea siempre que se separen por el punto y coma.
return 0;
Como he indicado antes el programa al finalizar develve un valor entero. Como en este programa no se pueden producir errores (nunca digas nunca jamás) la salida siempre será 0. La forma de hacer que el programa devuelva un 0 es usando return. Esta línea significa 'finaliza la función main haz que devuelva un 0.
}
...y cerramos llaves con lo que termina el programa. Todos los programas finalizan cuando se llega al final de la función main.
Primero debemos crear el código fuente del programa. Para nuestro primer programa el código fuente es el del listado anterior. Arranca tu compilador de C, sea cual sea. Crea un nuevo fichero y copia el código anterior. Llámalo por ejemplo primero.c.
Ahora, tenemos que compilar el programa para crear el ejecutable. Si tu compilador es de windows, o tiene menús busca una opción llamada "compile", o make, build o algo así.
Si estamos usando DJGPP (ver información sobre instalación y uso de DJGPP): tenemos que llamarlo desde la línea de comando:
gcc -c primero.c -o primero.exe
Si usamos Rhide basta con hacer CTRL-F9.
En esta sección explicaré cómo es el proceso de creación de un programa, desde la edición hasta que se genera el ejecutable final.
Todavía no está disponible.
Los comentarios se pueden poner casi en cualquier parte. Excepto en medio de una instrucción. Por ejemplo lo siguiente no es válido:
pri/* Esto es un comentario */ntf( "Hola mundo" ); GARRAFAL
No podemos cortar a printf por en medio, tendríamos un error al compilar. Lo siguiente no daría error (al menos usando DJGPP), pero es una fea costumbre:
printf( /* Esto es un comentario */ "Hola mundo" );
Y por último tenemos:
printf( "Hola/* Esto es un comentario */ mundo" );
Que no daría error, pero al ejecutar tendríamos:
Hola /* Esto es un comentario */ mundo
porque /* Esto es un comentario */ queda dentro de las comillas y C lo interpreta como texto, no como un comentario.
Pues la verdad es que todavía no hemos aprendido mucho. Lo único que podemos hacer es compilar nuestros programas. Pero paciencia, en seguida avanzaremos.
Busca los errores en este programa:
int main() { /* Aquí va el cuerpo del programa */ Printf( "Hola mundo\n" ); return 0; }
Solución:
Si lo compilamos posiblemente obtendremos un error que nos indicará que no hemos definido la función 'Printf'. Esto es porque no hemos incluído la dichosa directiva '#include <stdio.h>'. (En algunos compiladores no es necesario incluir esta directiva, pero es una buena costumbre hacerlo).
Si lo corregimos y volvemos a compilar obtendremos un nuevo error. Otra vez nos dice que desconoce 'Printf'. Esta vez el problema es el de las mayúsculas que hemos indicado antes. Lo correcto es poner 'printf' con minúsculas. Parece una tontería, pero seguro que nos da más de un problema.
[Anterior] [Siguiente] [Contenido]
© Gorka Urrutia