PRIMER CURSO. INGENIERO QUÍMICO FUNDAMENTOS DE INFORMÁTICA Curso 2007-2008 Departamento de Ingeniería de Sistemas y Automática 1. PROFESORADO Manuel López Martínez (Coordinador) Amparo Núñez Reyes José Ángel Acosta Rodríguez 2. HORARIO La asignatura se impartirá durante el 1 er cuatrimestre del curso 2007/08, los lunes de 8:45-10:00h, los jueves de 10:45-11:45 y los viernes de 10:45-11:45. 3. RESEÑA METODOLÓGICA La asignatura trata en sus aspectos teóricos, aplicados y prácticos los conceptos básicos de la informática. El curso comienza con varios temas dedicados a la estructura funcional de las computadoras digitales. A fin de mostrar el funcionamiento de las mismas es preciso dedicar algunas clases a la representación digital de la información. Posteriormente se explican los algoritmos como método formal de expresar soluciones a problemas. En este preciso bloque se inicia la programación en código de máquina en una computadora académica. En temas posteriores se usa el lenguaje de programación C, de alto nivel, para desarrollar programas más complejos. El curso finaliza con una descripción del panorama informático más completa que la realizada en los temas introductorios. Para ello se mostrarán distintos equipos y programas informáticos de interés. La asignatura incluye la realización de varias sesiones prácticas (11.2 h.). En ellas se desarrollan programas en código de máquina y en lenguaje C sobre computadoras personales. Las prácticas se evalúan en los exámenes de la asignatura. 4. SISTEMAS Y CRITERIO DE EVALUACIÓN Se realizarán una prueba parcial y los finales correspondientes conforme a los estatutos de la Universidad de Sevilla. En esta prueba se comprobarán los conocimientos teórico-prácticos que el alumno maneja con la suficiente soltura. Para la realización del examen de prueba, en Febrero, es obligatorio presentar las prácticas en formato electrónico, vía correo electrónico al coordinador de la asignatura, antes de la fecha de dicho examen.
5. PROGRAMA DETALLADO Bloque I: Fundamentos de Informática 1. Introducción. 1.1. Informática y computadoras 1.1.1. Programas e instrucciones 1.1.2. Lógica cableada y programada 1.1.3. Computadoras analógicas y digitales 1.2. La representación de la información 1.2.1. Soportes de la información 1.3. Estructura de Von Neumann 1.4. Manejo de la computadora digital 1.4.1. Sistema operativo 1.4.2. Aplicaciones 2. Álgebra de Boole y circuitos con puertas lógicas 2.1. Introducción 2.2. Álgebra de Boole 2.2.1. Elementos básicos 2.2.2. Propiedades 2.2.3. Funciones Booleanas 2.2.4. Obtención de funciones booleanas a partir de tablas de verdad 2.3. Puertas lógicas 2.4. Ejemplos de circuitos lógicos 2.4.1. Paridad 2.4.2. Comparador 2.4.3. Mayoría 3. Codificación binaria de la información. 3.1. Introducción 3.2. Sistemas de numeración 3.2.1. Conversiones 3.3. Codificación de números enteros 3.3.1. Modo signo valor absoluto 3.3.2. Complemento a 1 3.3.3. Complemento a 2 3.4. Números fraccionarios 3.4.1. Punto fijo 3.4.2. Punto flotante 3.5. Codificación de caracteres 3.6. Formatos gráficos
4. La unidad de memoria 4.1. Introducción 4.2. Conceptos y definiciones 4.3. Clases de memoria 4.4. Organización matricial de las memorias 4.5. La unidad de memoria central 5. Unidad aritmético-lógica 5.1. Células y registros 5.2. Circuitos operadores con enteros 5.2.1. Semisumador 5.2.2. Sumador completo 5.2.3. Sumador en paralelo 5.2.4. Multiplicador 5.2.5. División 5.3. Operaciones con datos de punto flotante 5.4. La unidad aritmético-lógica 6. La unidad de control 6.1. Enlaces 6.2. Modelo simple de computadora digital 6.2.1. Descripción 6.2.2. Funcionamiento 6.2.3. Fases de ejecución y transferencias entre registros 6.3. La unidad de control 7. La computadora CESIUS 7.1. Descripción 7.1.1. Juego de instrucciones 7.2. Traductor 7.3. Direccionamiento directo, indirecto e inmediato 7.4. Análisis de instrucciones 8. Algoritmos y diagramas de flujo. 8.1. Algoritmos y pseudocódigo 8.2. Objetos y operaciones 8.3. Fases del proceso de resolución de problemas 8.4. Diagramas de flujo 8.4.1. Símbolos 8.5. Programación Estructurada 8.5.1. Flujo lineal 8.5.2. Análisis descendente
8.6. Ejemplos 8.6.1. Programa lineal 8.6.2. Programa con bifurcación 8.6.3. Bucle simple 8.6.4. Bucles anidados 9. Sistemas Operativos. Lenguajes de programación 9.1. Descripción general del sistema operativo 9.2. Funciones de los sistemas operativos 9.3. Lenguajes de programación 9.3.1. Código de máquina 9.3.2. Lenguajes de bajo nivel 9.3.3. Lenguajes de alto nivel 9.3.4. Traductores Bloque II: Lenguaje de programación C 10. Introducción al lenguaje de programación C. 10.1. Introducción 10.2. Visión general 10.2.1. Escritura 10.2.2. Compilación 10.2.3. Montaje 10.2.4. Ejecución 10.3. Componentes del código C 10.3.1. Palabras reservadas en C 10.4. Ejemplos 10.4.1. Función main 10.4.2. Funciones de E/S básicas: printf, scanf 11. Variables, constantes, operadores y expresiones 11.1. Variables y punteros 11.1.1. Vigencia y alcance de las variables locales y globales 11.1.2. Especificadores de variables: static 11.1.3. Parámetros formales 11.2. Sentencias de asignación 11.3. Constantes. Directiva define 11.4. Operadores 11.4.1. Aritméticos 11.4.2. Relacionales y lógicos 11.4.3. Operadores de bits 11.4.4. Operadores especiales 11.4.5. Prioridad de operadores
11.5. Expresiones 11.5.1. Conversiones de tipo 11.5.2. Moldes 11.5.3. Abreviaturas 11.5.4. Nuevos tipos de datos. Typedef 12. Sentencias de control de los programas 12.1. Introducción 12.2. Operadores en secuencia 12.3. Operaciones condicionales: if, if else, switch 12.4. Procesos iterativos: for, while, do while 12.5. Continue, break, exit, return 12.6. Ejemplos: diagramas de flujo y codificación en C. 13. Funciones en C 13.1. Formato de una función: Prototipo, definición y llamada 13.2. Argumento de las funciones: Paso de parámetros por valor y por referencia 13.3. Recursividad 13.4. Ejemplos: diagramas de flujo y codificación en C 14. Vectores, cadenas, matrices y punteros. 14.1. Vectores 14.2. Cadenas de caracteres 14.3. Punteros 14.4. Reserva dinámica de memoria 14.5. Matrices 14.6. Paso de Tablas como argumento a funciones 14.7. Ejemplos: diagramas de flujo y codificación en C 15. Funciones de lectura y escritura. 15.1. Lectura y escritura con formato: printf, scanf 15.2. Ficheros de texto y binarios 15.3. Apertura y cierre de ficheros 15.4. Lectura y escritura en ficheros de texto 15.5. Lectura y escritura en ficheros binarios 15.6. Ejemplos: diagramas de flujo y codificación en C
6. BIBLIOGRAFÍA La fuente principal de información serán siempre los apuntes tomados en clase, los cuales pueden completarse con algunas obras como las que se citan a continuación y otras de las muchas que existen. P. Anasagasti, Fundamentos de los computadores. Paraninfo, 1990. P. Bishop, Conceptos de informática. Anaya multimedia, 1994. B. Kernighan y D. Ritchie, El lenguaje de programación C. Prentice-Hall. H. Schildt, Programación en Lenguaje C, Mc Graw-Hill, 1987. Manuel R. Arahal, Fundamentos de Informática. ISBN: 84-88783-41-8, 2001. Fernando Castaño Castaño, Lenguaje C: Herramienta de Ingeniería. Servicio de Publicaciones de la Escuela Superior de Ingenieros de Sevilla, ISBN: 84-88783-37-X, 1999.