# Programación en C
## Prólogo

El avance de la tecnología y la concurrente entrega de información, nos permite generar una edición, variable y alternativa en la enseñanza del lenguaje de programación que más impacto social ha tenido en la historia de la informática. Este libro ha sido forjado con la incansable ayuda de informáticos de habla hispana, quienes byte a byte han colaborado por hacer de la información una fuente de conocimiento global. De la misma forma, continúa hoy siendo modificado en una constante búsqueda de superación de la calidad.
Esta obra está llamada a ser la piedra angular en la enseñanza de la programación, logrando abarcar todos los aspectos del lenguaje en diversos niveles y de esta forma ser tanto una referencia técnica para quienes ya dominan el lenguaje como una introducción sencilla para quienes están empezando a conocerlo.
Viajaremos por la historia del lenguaje, veremos su propósito e indagaremos en la ciencia de la programación. El fin es otorgar al lector una doctrina clara de la programación y el lenguaje C; lo induciremos a conseguir un manejo importante del lenguaje.

### ¿Para quién es este libro?

Este libro está dirigido a todos los que deseen obtener conocimientos de programación, pues el objetivo explícito que nos ha motivado a crearlo es difundir la importancia del lenguaje C en el mundo de la informática. Si nos enfocamos a un grupo social específico, podremos indicar que este libro contribuirá con los estudiantes de carreras del área informática, debido a que los temas convenidos, son parte de su plan de estudios.

### ¿Por qué otro manual de C?

Porque el lenguaje C es la base fundamental de la programación. Para quienes están en el ambiente de la informática es crucial tener por lo menos nociones de este lenguaje. Varios sistemas operativos, cientos de bibliotecas, y miles de programas están construidos utilizando C, al conocerlo es posible entender, colaborar y desarrollar en este lenguaje.
Los sistemas, programas, juegos y herramientas que nosotros disfrutamos hoy fueron construidos por personas como nosotros, que empezaron con nuestro mismo potencial y fueron aprendiendo a hacer cosas fantásticas con las herramientas que tenían a mano.
Una razón importante para otro libro de lenguaje C es también que los libros existentes muestran muy poca documentación de calidad. En Internet existe una cantidad inmensa de información publicada pero está dispersa, y mal manejada en algunos sitios. Es la intención de este libro crear un buen compendio de información, que permita a los interesados aprender a programar en C.

## Índice de contenidos

* Introducción
** Herramientas necesarias
* Historia de C
* Fundamentos de programación
* Primer programa en C
** Compilación de programas en C
* Tipos de datos
** Enteros
** Reales
** Caracteres
* Expresiones
* Interacción con el usuario
* Instrucciones de control
** La estructura condicional if...else
** La estructura condicional switch...case
** El bucle for
** El bucle while
** El bucle do...while
** La sentencia goto
* Uso de Funciones
* Vectores
* Cadenas de caracteres
* Manejo de archivos
** Lectura
** Escritura
** fread y fwrite
* Estructuras y Uniones
** Estructuras
** Uniones
* Punteros
* Manejo dinámico de memoria
* Matrices Dinámicas
* Algoritmos y Estructuras de Datos
** Punteros a Estructuras
** Ordenamiento de Datos
*** Burbuja
*** Induccion
*** QuickSort
* Sockets
** Ejemplos de programas
*** Cliente
*** Servidor
* Detalles sobre el proceso de compilación
* Los errores
** Chequeos de C
** El depurador
* Herramientas externas útiles
* Resumen de ejemplos
** El "Hola Mundo"
** El "Hola Mundo" comentado
** El "Hola Mundo" estructurado en funciones
** Ejemplo de cálculo con enteros
** Ejemplo comentado de cálculo con enteros
** Calendario en C
** Cálculo del logaritmo binario
* La librería Glib
* Programación paralela en memoria compartida

### Anexos

* Referencia
** Tipos de datos
** Operadores
** Estructuras
** Bibliotecas y funciones
* Cómo compilar un programa
** Un poco más sobre compilación
* Código embebido
* Recursos en la red
** Manuales, tutoriales y otros documentos
** Compiladores e IDEs
* Bibliografía

## Enlaces

Nociones básicas de programación (generales, independientes del lenguaje):
* Fundamentos de programación
Wikilibro similar a éste en inglés
* C Programming
esquema de operadores y expresiones

## Licencia y autores

* Copyright © 2004 Envite
* Copyright © 2005 Alejandro Moreno Calvo
* Copyright © 2006 Andreu Correa Casablanca
* Copyright © 2009 zerohours
Ver el historial de cada página para el resto de autores.

## ¿Cómo contribuir a este WikiLibro?

Contribuir con este libro es muy simple primero deberías registrarte un usuario y/o entrar (esto no es necesario pero si muy conveniente) a Wikilibros, para que podamos identificar tus ediciones. Luego, si nunca has contribuido en un proyecto de wikipedia o en otro wiki deberías leer el manual de uso de wikilibros.
Una vez hecho esto todo lo que tienes que hacer es agregar el contenido que consideres necesario para el libro. Para editar cualquier sección basta con hacer click al link que dice editar en la pestaña en la parte superior de la pagina, seria bueno revisar (antes de editar cualquier cosa) la pestaña de discusión que está ahí para ser usada. Ten en cuenta que el material que ya está fue escrito por personas que deseaban contribuir igual que tú, así que trata de respetarlo. Aunque con esto no me refiero a que si se necesita alguna corrección, reorganización, quitar partes que sean ambiguas, no dejes de hacerlo. Lo mejor sería que todos contribuyéramos de cualquier manera al libro.
Además, es recomendable consultar la página de discusión del libro y la del articulo en particular que quieras modificar, ya que de esta manera se pueden coordinar esfuerzos.
Recuerda que todo el contenido que añadas al libro es publicado bajo la licencia GFDL, por lo que no uses material que no haya sido escrito por ti o que no esté ya publicado bajo GFDL. Recientemente wikimedia decidió adoptar la Licencia Creative Commons Compartir-Igual 3.0 para todos los aportes, por lo que actualmente el libro tiene una licencia dual.