Home > General > Fundamentos de programación en C

Este manual es un curso de introducción a la programación utilizando para ello un lenguaje a bajo nivel como lo es C. Se revisarán aquí sus tipos de datos, estructuras de control, sus métodos I/O, el manejo de matrices, el manejo de ficheros, funciones, punteros, bibliotecas básicas o la creación de juegos multiplataforma mediante SDL.

C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Dentro de los lenguajes de programación, C es un lenguaje que tiene un cierto “prestigio”. Esto se debe fundamentalmente a dos razones:

Es bastante “portable”: un programa bien hecho en C se podrá llevar a un ordenador distinto o incluso a un sistema operativo distinto (de MsDos a Windows o a Linux, por ejemplo) con muy pocos cambios o quizás incluso sin ningún cambio. El motivo es que existe un estándar: el ANSI C, que soportan casi todos los compiladores. Por eso, si nos ceñimos al estándar, es seguro que nuestros programas funcionarán en distintos sistemas; cuanto más nos separemos del estándar (en ocasiones podremos hacerlo), más difícil será que funcionen en otro sistema distinto.

Permite hacer “casi de todo”: podemos usar órdenes de alto nivel (muy cercanas al lenguaje humano), pero también de bajo nivel (más cercanas a lo que realmente entiende el ordenador). De hecho, podremos incluso incorporar órdenes en lenguaje ensamblador en medio de un programa escrito en C, aunque eso supone que ganemos en control de la máquina que estamos manejando, a costa de perder en portabilidad (el programa ya no se podrá llevar a otros ordenadores que no usen el mismo lenguaje ensamblador).

En su contra, el lenguaje C tiene que es más difícil de aprender que otros y que puede resultar difícil de leer (por lo que ciertos errores pueden tardar más en encontrarse).

 

  • CONCEPTOS BÁSICOS SOBRE PROGRAMACIÓN
  • Lenguajes de alto nivel y de bajo nivel.
  • Ensambladores, compiladores e intérpretes
  • Pseudocódigo
  • TOMA DE CONTACTO CON C
  • Escribir un texto en C
  • Cómo probar este programa en Linux
  • Cómo probar este programa en Windows
  • Mostrar números enteros en pantalla
  • Operaciones aritméticas básicas
  • Orden de prioridad de los operadores
  • Introducción a los problemas de desbordamiento
  • Introducción a las variables: int
  • Definición de variables: números enteros
  • Asignación de valores
  • Mostrar el valor de una variable en pantalla
  • Identificadores
  • Comentarios
  • Datos por el usuario: scanf
  • TIPOS DE DATOS BÁSICOS
  • Tipo de datos entero
  • Tipos de enteros: signed/unsigned, short/long
  • Problemática: asignaciones y tamaño de los números; distintos espacios ocupados según el sistema
  • Unidades de medida empleadas en informática (1): bytes, kilobytes, megabytes…
  • Unidades de medida empleadas en informática (2): los bits
  • Sistemas de numeración: 1- Sistema binario
  • Sistemas de numeración: 2- Sistema octal
  • Sistemas de numeración: 3- Sistema hexadecimal
  • Formato de constantes enteras: oct, hex
  • Representación interna de los enteros
  • Incremento y decremento
  • Operaciones abreviadas: +=
  • Modificadores de acceso: const, volatile
  • Tipo de datos real
  • Simple y doble precisión
  • Mostrar en pantalla números reales
  • Operador de tamaño: sizeof
  • Operador de molde: (tipo) operando
  • Tipo de datos carácter
  • Secuencias de escape: \n y otras.
  • Introducción a las dificultades de las cadenas de texto
  • ESTRUCTURAS DE CONTROL
  • Estructuras alternativas
  • if
  • if y sentencias compuestas
  • Operadores relacionales: <, <=, >, >=, ==, !=
  • if-else
  • Fundamentos de programacion en C, por Nacho Cabanes
  • Revision 0.90– Pagina 3
  • Operadores lógicos: &&, ||, !
  • Cómo funciona realmente la condición en un “if”
  • El peligro de la asignación en un “if”
  • Introducción a los diagramas de flujo
  • Operador condicional: ?
  • switch
  • Estructuras repetitivas
  • while
  • do … while
  • for
  • Sentencia break: termina el bucle
  • Sentencia continue: fuerza la siguiente iteración
  • Sentencia goto
  • Más sobre diagramas de flujo. Diagramas de Chapin.
  • Recomendación de uso de los distintos tipos de bucle
  • ENTRADA/SALIDA BÁSICA
  • printf
  • scanf
  • putchar
  • getchar
  • ARRAYS Y ESTRUCTURAS
  • Conceptos básicos sobre tablas
  • Definición de una tabla y acceso a los datos
  • Valor inicial de una tabla
  • Recorriendo los elementos de una tabla
  • Cadenas de caracteres
  • Definición. Lectura desde teclado
  • Cómo acceder a las letras que forman una cadena
  • Longitud de la cadena.
  • Entrada/salida para cadenas: gets, puts
  • Asignando a una cadena el valor de otra: strcpy, strncpy; strcat
  • Comparando cadenas: strcmp
  • Otras funciones de cadenas: sprintf, sscanf, strstr,
  • Valor inicial de una cadena de texto
  • Tablas bidimensionales
  • Arrays indeterminados.
  • Estructuras
  • Definición y acceso a los datos
  • Arrays de estructuras
  • Estructuras anidadas
  • Ejemplo completo
  • Ordenaciones simples
  • MANEJO DE FICHEROS
  • Escritura en un fichero de texto
  • Lectura de un fichero de texto
  • Lectura hasta el final del fichero
  • Ficheros con tipo
  • Fundamentos de programacion en C, por Nacho Cabanes
  • Leer y escribir letra a letra
  • Modos de apertura
  • Ficheros binarios
  • Ejemplo: copiador de ficheros
  • Acceder a cualquier posición de un fichero
  • Ejemplo: leer información de un fichero BMP
  • Ficheros especiales 1: la impresora
  • Ficheros especiales 2: salida de errores
  • Un ejemplo de lectura y escritura: TAG de un MP3
  • INTRODUCCIÓN A LAS FUNCIONES
  • Diseño modular de programas: Descomposición modular
  • Conceptos básicos sobre funciones
  • Parámetros de una función
  • Valor devuelto por una función
  • El valor de retorno “void”. El valor de retorno de “main”
  • Variables locales y variables globales
  • Los conflictos de nombres en las variables
  • El orden importa
  • Algunas funciones útiles
  • Números aleatorios
  • Funciones matemáticas
  • Pero casi todo son funciones…
  • Recursividad
  • Cómo interrumpir el programa.
  • CÓMO DEPURAR LOS PROGRAMAS
  • Conceptos básicos sobre depuración
  • Ejemplos de algunos entornos
  • Punteros y gestión dinámica de memoria
  • ¿Por qué usar estructuras dinámicas?
  • ¿Qué son los punteros?
  • Repasemos con un ejemplo sencillo
  • Aritmética de punteros
  • Punteros y funciones: parámetros por referencia
  • Punteros y arrays
  • Arrays de punteros
  • Punteros y estructuras
  • Opciones de la línea de comandos: parámetros de “main”
  • Estructuras dinámicas habituales 1: las listas enlazadas
  •  Estructuras dinámicas habituales 2: los árboles binarios
  • Indirección múltiple
  • Un ejemplo: copiador de ficheros en una pasada
  • BIBLIOTECAS DE USO FRECUENTE
  • Llamadas al sistema: system
  • Temporización
  • Pantalla y teclado con Turbo C
  • Acceso a pantalla en Linux: curses.h
  • Juegos multiplataforma: SDL
  • Dibujando una imagen de fondo y un personaje
  • Un personaje móvil
  • Imágenes transparentes, escribir texto y otras mejoras
  • El doble buffer
  • El bucle de juego (game loop)
  • OTRAS CARACTERÍSTICAS AVANZADAS DE C
  • Operaciones con bits
  • Directivas del preprocesador
  • Constantes simbólicas: #define
  • Inclusión de ficheros: #include
  • Compilación condicional: #ifdef, #endif
  • Otras directivas
  • Programas a partir de varios fuentes
  • Creación desde la línea de comandos
  • Introducción al uso de la herramienta Make
  • Introducción a los “proyectos”
  • Uniones y campos de bits
  • El operador coma
  • Enumeraciones
  • Definición de tipos
  • Apéndice 1. Revisiones de este texto
  • Apéndice 2. Soluciones a algunos de los ejercicios propuestos

Descargar Libro