II Curso de programación en C moderno
Bienvenid@ al wiki del II Curso de programación en C.
Este curso ofrecerá una visión moderna de la programación en C, partiendo de los estándares de C99 y C11. Se realizará siempre un enfoque práctico. Es por ello que el curso introducirá al estudiante en el uso de las bibliotecas nativas en C de referencia para el desarrollo de software en entornos gráficos, red, importación/exportación de datos de ficheros y bases de datos.
Contenido
Matrícula y preinscripción
- Preinscripción: Si estás interesado debes realizar la preinscripción cuanto antes para reservar tu plaza.
- Matrícula: El periodo de matrícula está comprendido entre los días 11 y 20 de Febrero y tiene un coste total de 180€
Puedes realizar tanto la matrícula como la preinscripción a través de esta web: http://www.cfp.us.es/cursos/fc/programacion-en-c-moderno/2729/
Aulas y horario
El curso se impartirá en el edificio CRAI Antonio de Ulloa, Avenida Reina Mercedes, s/n 41012 Sevilla. (ver en mapa). Se utilizarán las aulas TIC 1 (en la 2ª planta del edificio) TIC 6 (en la 3ª planta). Las clases serán los martes (TIC 1) y viernes (TIC 6) de 16:00 a 18:30 (a excepción de los días 1 y 5 de Marzo que serán de 18:00 a 20:30)
Horario desglosado:
- TIC 1 los Martes:
- 29/03/16 de 16:00 a 18:30
- 05/04/16 de 18:00 a 20:30
- 19/04/16 de 16:00 a 18:30
- 26/04/16 de 16:00 a 18:30
- 03/05/16 de 16:00 a 18:30
- 10/05/16 de 16:00 a 18:30
- TIC 6 los Viernes:
- 18/03/16 de 16:00 a 18:30
- 01/04/16 de 18:00 a 20:30
- 08/04/16 de 16:00 a 18:30
- 22/04/16 de 16:00 a 18:30
- 29/04/16 de 16:00 a 18:30
- 06/05/16 de 16:00 a 18:30
- 13/05/16 de 16:00 a 18:30
Criterios de evaluación
El curso tendrá un enfoque muy práctico, por lo que la evaluación se basará en diversos ejercicios y trabajos realizados individualmente y repartidos a lo largo del curso.
Material
En esta wiki se irá subiendo todo el material (apuntes, ejemplos, ejercicios, etc) a medida que avance el curso. Puedes consultar el material utilizado en la edición anterior.
Contenido del curso
MÓDULO 1
- Introducción al lenguaje C:
- Un poco de historia: Desde 1972 hasta hoy día.
- Proyectos de referencia: el núcleo de Linux, el navegador web Firefox, el servidor web Apache, la interfaz web cgit, el toolkit gráfico GTK, en NDK de Android y el juego Doom.
- Por qué y para qué el lenguaje C.
- Características de C.
- Bibliografía recomendada.
- Ejemplo 1: ¡Hola mundo!
- El compilador GNU cc.
- Los #includes.
- La biblioteca estándar de C (libc)
- Introducción a las funciones en C.
- Definición y uso de funciones.
- Compilando y configurando un proyecto a través de scripts. (autoconf/automake).
- Introducción al gestor de versiones GIT y el editor de texto vim.
- Ejemplo 2: clase "gestor de tareas"
- Creación de objeto con malloc.
- Liberación de objetos con free.
- Impresión por pantalla.
- Acceso a campos de las estructuras.
- Ejemplo 3: errores clásicos y depurando con Valgrind
- Segfaults.
- Acceso a punteros inválidos.
- Fugas de memoria.
- Corrupciones de memoria.
- Valgrind: En qué puede ayudarnos.
- Ejemplo 4: arrays
- Declaración, acceso y usos.
- Ejemplo 5: listas
- Estructura list_head.
- Añadir elementos a la lista con list_add.
- Eliminar elementos de la lista con list_del.
- Referencias a elementos de una lista (&).
- Ejemplo 6: paso de argumentos al programa y tratamiento
- Los parámetros argc y argv y la función getopt_long.
- Ejemplo 7: E/S por ficheros
- Abrir y cerrar ficheros.
- Lectura y escritura de caracteres en fichero.
- Lectura y escritura de cadenas en un fichero.
- Las funciones fprintf(), fwrite() y fread().
MÓDULO 2: USANDO BIBLIOTECAS LIBRES
- GTK: Biblioteca para crear la interfaz gráfica de una aplicación.
- Introducción: Historia y software necesario.
- Ejemplo 1: Creación de widgets, ventanas, botones, etiquetas y contenedores.
- Ejemplo 2: Creación de widget con uso de menús. Uso de menus. Uso de Toolbars.
- Libjansson (JSON): Biblioteca para exporta e importar datos en formato JSON.
- Introducción: Historia, tipos de objetos y software necesario.
- Estructura estándar de JSON.
- Ejemplo 1: Procesado, recorrido e impresión de un arbol sencillo.
- Uso de funciones para procesar cadenas.
- Uso de funciones para recorrer el árbol.
- Impresión del contenido del árbol.
- Ejemplo 2: Procesado, recorrido e impresión de arboles con listas.
- Ejemplo 3: Lectura y escritura de ficheros en formato JSON.
- Ejemplo 4: Herramientas para validar la estructura de JSON.
- Libev: Biblioteca para manejar eventos
- Introducción.
- Manejo de eventos y sockets
- Ejemplo: Servidor que acepte y reciba conexiones a partir de eventos.
- Libsqlite: Biblioteca para uso de bases de datos sqlite.
- Introducción.
- Ejemplo 1: Conexión con una base de datos y creación de una tabla.
- Ejemplo 2: Añadir, borrar y actualizar datos en una base datos.
Lista de correo
Esta lista de correo se utilizará para plantear y resolver dudas.
Puedes apuntarte aquí: https://listas.us.es/mailman/listinfo/programacion-c
Contacto y más información
Para más información puedes consultar la web del Centro de Formación Permanente o contactar por email: carlosfg <AT> riseup <DOT> com