Director
D. Pablo Neira Ayuso
(Lenguajes y Sistemas Informáticos)
Unidad Promotora
Departamento de Lenguajes y Sistemas Informáticos
Impartición
Del 18/03/2016 al 13/05/2016
Modalidad
Semipresencial
(mediawiki)
Idioma de impartición
Español
Lugar de impartición
C.R.A.I. Antonio de Ulloa. Aulas TIC 1/6
180,00 €
(tasas incluidas)
4,00 ECTS
Prácticas
No
Preinscripción
Del 15/12/2015 al 10/03/2016
Matrícula
Del 01/03/2016 al 10/03/2016
Objetivos
<p><p>El lenguaje de programación C es el lenguaje más empleado hoy en día para el desarrollo de software según el Ranking TIOBE y el Opensource Language Ranking. Algunos ejemplos de relevancia son el núcleo de Linux, el navegador web Firefox, el servidor web Apache, la interfaz web cgit, el toolkit gráfico GTK, el NDK de Android y el juego Doom, entre muchos otros.</p><p>El 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.</p></p>
Competencias
Capacidad de uso de herramientas de desarrollo en C
Capacidad de trabajo en comunidades de Software Libre
Capacidad de uso de nuevas bibliotecas.
Búsqueda de soluciones en distintas fuentes y resolución de problemas.
Capacidad de autoevaluación y revisión de sus propios desarrollos
Procedimiento de evaluación
Trabajos
Requisitos
Requisitos específicos de admisión a los estudios
- Conocimientos básicos de programación
Módulos / Asignaturas
Modalidad de impartición: Semipresencial
Fechas de inicio-fin: 18/03/2016 - 19/04/2016
Horario: en Tarde
Contenido
a) 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.
b) 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.
c) 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.
d) 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.
e) Ejemplo 4: arrays.
- Declaración, acceso y usos.
f) 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 (&).
g) Ejemplo 6: paso de argumentos al programa y tratamiento.
- Los parámetros argc y argv y la función getopt_long.
h) 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().
Modalidad de impartición: Semipresencial
Fechas de inicio-fin: 22/04/2016 - 13/05/2016
Horario: en Tarde
Contenido
a) 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.
b) Libjansson (JSON): Biblioteca para exporta e importar datos en formato JSON.
- Introducción: Historia, tipos de objetos y software necesario.
- Estructura estandar 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 arbol.
- Impresión del contenido del arbol.
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.
c) Libev: Biblioteca para manejar eventos
- Introducción.
- Manejo de eventos y sockets
- Ejemplo: Servidor que acepte y reciba conexiones a partir de eventos.
d) 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.
Profesorado
Personal Académico
- D. Carlos Falgueras García - Soleta
- D. Pablo Neira Ayuso . Universidad de Sevilla - Lenguajes y Sistemas Informáticos
Profesorado
- D. Carlos Falgueras García - Soleta
- D. Pablo Neira Ayuso . Universidad de Sevilla - Lenguajes y Sistemas Informáticos