lf:
Guía Docente 2015/2016
Fundamentos de programación I
Fundamentals of Programming I
Grado en Ingeniería Informática
Presencial
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101
Índice
Fundamentos de Programación I ... 3
Breve descripción de la asignatura ... 3
Requisitos Previos ... 3
Objetivos ... 3
Competencias y resultados de aprendizaje ... 4
Metodología ... 5
Temario ... 5
Relación con otras materias del plan de estudios ... 9
Sistema de evaluación ... 10
Bibliografía y fuentes de referencia ... 10
Web relacionadas ... 11
Recomendaciones para el estudio ... 11
Material necesario ... 12
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101
Fundamentos de Programación I
Módulo: Formación BásicaMateria: Informática
Carácter: Formación Básica Nº de créditos: 4,5 ECTS
Unidad Temporal: 1er Curso – 1er Semestre
Profesor/a de la asignatura: Fernando Pereñíguez García (web profesorado) Email: [email protected]
Horario de atención a los alumnos/as: Lunes de 11:00 a 12:00. Fuera de este horario se pueden
atender tutorías a petición del alumno. Preferiblemente se pedirán las citas por el campus virtual, pero se puede poner también por correo electrónico.
Profesor coordinador de curso: José María Cecilia Canales
Profesora coordinadora de módulo: Jesús Antonio Soto Espinosa
Breve descripción de la asignatura
Esta asignatura establece los principios básicos de la programación. Permite al alumno familiarizarse con conceptos como algoritmos, lenguajes de programación, variables, programación estructurada y a construir programas básicos con funcionalidades muy concretas. Establece las bases en las que se sustentarán el resto de asignaturas de esta área de conocimiento.
Brief Description
This subject establishes the basic principles of programming. It allows students to learn concepts such as algorithms, programming languages, variables, structured programming and make basic programs that are required to accomplish some requirements. This subject is fundamental and establishes the basis for subjects related to programming.
Requisitos Previos
No existen requisitos previos
Objetivos
1. Adquirir los conocimientos básicos sobre programación.
2. Desarrollar programas aplicando técnicas de programación estructurada y usando los elementos que los entornos de desarrollo proporcionan.
3. Elaborar interfaces de usuario que cumplan los requisitos dados.
4. Conocer el lenguaje de programación C como lenguaje de programación estructurada. 5. Usar las librerías más importantes de C y saber desarrollar librerías nuevas.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 6. Evaluar y desarrollar escenarios de prueba para comprobar el correcto funcionamiento de
los programas.
Competencias y resultados de aprendizaje
Competencias transversales
T1 - Capacidad de análisis y síntesis.
T2 - Capacidad de organización y planificación. T4 - Resolución de problemas. T5 - Toma de decisiones. T6 - Trabajo en equipo. T11 - Razonamiento crítico. T14 - Aprendizaje autónomo. T16 - Creatividad e innovación. T19 - Motivación por la calidad. T21 - Capacidad de reflexión.
Competencias específicas
FB4 - Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería.
FB5 - Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de problemas propios de la ingeniería.
Resultados de aprendizaje
RA 1.3.1. Conocer los conceptos de básicos de programación.
RA 1.3.2. Resolver problemas sencillos de programación mediante algoritmos básicos escritos en pseudocódigo.
RA 1.3.3. Realizar programas mediante el paradigma de la programación estructurada aplicando esquemas algorítmicos básicos y estructuras de datos sencillas.
RA 1.3.4. Usar las herramientas de un entorno de desarrollo de programación para crear y desarrollar aplicaciones.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 RA 1.3.5. Aplicar la recursividad como herramienta de construcción de programas.
Metodología
Metodología Horas Horas de trabajo presencial Horas de trabajo no presencial Clases en el aula 13.5 45 horas (40 %) Prácticas 17.1 Evaluación 5.4 Tutorías 9.0 Estudio personal 25.5 67,5 horas (60 %) Actividades de aprendizaje virtual 6.3 Realización de ejercicios, presentaciones, trabajos y casos prácticos 23.1 Lecturas recomendadas y búsqueda de información 12.5 TOTAL 112,5 45 67,5
Temario
Programa de la enseñanza teórica
Tema 1. Introducción a la Programación. 1. Programa.
2. Lenguaje de Programación. 3. Compilador.
4. Algoritmo. 5. Pseudocódigo.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 Tema 2. Conceptos básicos de C.
1. Estructura de un programa en C. 2. Elementos de un programa en C. 3. Comentarios.
4. Concepto de variable e inicialización de variables. 5. Concepto de constante e inicialización de constantes. 6. Identificadores y palabras reservadas.
Tema 3. Entrada/Salida Formateada. 1. La función Printf.
2. La función Scanf. Tema 4. Tipos de Datos.
1. Variables: a. Enteros.
b. Coma flotante (reales). c. Caracteres.
d. Booleanos. 2. Constantes
Tema 5. Conversión de Tipos de Datos. 1. Conversiones de tipos:
a. Implícitas (Reglas). b. Explícitas (Casting). 2. Definiciones de tipos: typedef. 3. El operados sizeof
Tema 6. Operadores y expresiones. 1. Expresiones.
2. Operadores aritméticos.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 4. Asignación. Asignación compuesta.
5. Operadores de incremento y decremento. 6. Evaluación de expresiones. Orden.
7. Expresiones como sentencias. Tema 7. Control de flujo: Selección.
1. Estructuras de control. 2. Expresiones lógicas. 3. Operadores relacionales. 4. Operadores lógicos. 5. Evaluación de expresiones. 6. La sentencia if. 7. Expresiones condicionales. 8. Tipo de datos booleano. 9. La sentencia switch. Tema 8. Control de flujo: Iteración.
1. La sentencia while. 2. La sentencia do. 3. La sentencia for.
4. Saliendo de un bucle: break y continue. 5. Saliendo de un bucle: goto.
6. La sentencia Null (nula). Tema 9. Funciones.
1. Definiendo una función. 2. Llamadas a funciones. 3. Argumentos y parámetros. 4. Declaración de funciones.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 6. Conversión de argumentos.
7. La sentencia return.
8. Terminación del programa. Tema 10. Recursividad. 1. Definición de recursividad. 2. Condiciones en la recursividad. 3. Ventajas e inconvenientes. 4. Ejemplos y ejecución. Tema 11. Arrays. 1. Arrays unidimensionales. 2. Indexación de elementos. 3. Inicialización de arrays. 4. Arrays y el operador sizeof. 5. Arrays multidimensionales. 6. Arrays constantes.
7. Arrays de tamaño variable . 8. Arrays como argumentos. Tema 12. Cadenas.
1. Cadenas literales o constantes. 2. Almacenamiento de cadenas. 3. Inicialización.
4. Arrays de caracteres. Punteros. 5. Leer y escribir cadenas.
6. La librería estándar string.h. 7. Arrays de cadenas.
8. Argumentos en la línea de comandos. Tema 13. Estructuras.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 1. Estructuras.
a. Operaciones sobre estructuras. b. Tipos estructura.
c. Estructuras y funciones. d. Estructuras y punteros.
e. Combinando arrays y estructuras. 2. Enumeraciones.
5. Typedef.
Programa de la enseñanza práctica
Práctica 1. Manejo funciones entrada/salida. Tipos de datos en C. Declaración de constantes. Conversiones implícitas y explícitas de tipos de datos. Manejo avanzados de tipos de datos. Manejo de operadores aritméticos. Orden de evaluación de operadores.
Práctica 2. Manejo de sentencias de control de tipo selectivo. Expresiones lógicas y relacionales. Saber emplear el tipo de datos booleano. Manejo de sentencias de control de tipo iterativo. Interrupción de ejecución iterativa en un programa.
Práctica 3. Declaración e invocación de funciones. Retorno de valores en una función.
Modularización de código mediante uso de funciones. Paso de parámetros por valor y referencia. Uso de funciones recursivas en un programa.
Práctica 4. Manejo de arrays. Declaración e inicialización de arrays. Arrays unidimensionales y multidimensionales. Arrays de tamaño fijo y variable. Paso de arrays como parámetros de funciones.
Práctica 5. Declaración y manipulación de cadenas. Arrays de caracteres y arrays de punteros. Manejo de librería <string.h>. Manejo de arrays de cadenas. Declaración y manipulación de tipos de datos compuestos basados en estructuras. Manejo de combinado de estructuras con funciones y arrays. Uso de funciones recursivas en un programa.
Más información acerca de las prácticas a desarrollar durante el curso académico, así como las fechas de entrega será puesta a disposición de los alumnos a través del campus virtual. Se recomienda consultar el plan de trabajo de la asignatura así como los enunciados de prácticas correspondientes.
Relación con otras materias del plan de estudios
La asignatura de Fundamentos de programación I está muy relacionada con la asignatura de Fundamentos de programación II.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 Al ser una asignatura de fundamentos básicos en el área de la programación, también está ligada a asignaturas como Programación Orientada a Objetos, Algoritmia, Desarrollo de aplicaciones distribuidas I y II.
También se relacionan conceptos de otras áreas de conocimiento y que son impartidos en asignaturas como Fundamentos de computadores e Ingeniería del software I.
Sistema de evaluación
- Primera prueba parcial: 25% del total de la nota.
Se evaluarán los conocimientos abarcados del tema 1 a 8: tipos de datos, entrada/salida, operadores y expresiones, control de flujo (selección, iteración).
- Segunda prueba parcial: 40% del total de la nota.
Se evaluarán los conocimientos tratados en los temas 9 a 13: funciones, recursividad, arrays, cadenas, estructuras.
- Evaluación de prácticas y problemas: 35% del total de la nota.
De las 5 prácticas propuestas, se deberán entregar al menos 4. En caso de entregar todas las prácticas, se realizará media con las 4 mejores notas obtenidas por el alumno. La ponderación a aplicar será equitativa (cada práctica tiene un peso del 25%).
Para poder superar la asignatura será necesario obtener al menos una nota mayor o igual a 4.0 en cada uno de los ítems anteriores y que la media ponderada de todas las notas sea igual o superior a 5.0.
Examen final de la asignatura: Este examen se dividirá en dos partes relacionadas con las dos pruebas parciales de la asignatura. El alumno podrá recuperar la prueba(s) parcial(es) previamente no superada(s) (es decir, con nota inferior a 5.0) o no presentadas.
Convocatoria de Septiembre:
En caso de no superar la asignatura en la convocatoria de ordinaria, la evaluación en la convocatoria de septiembre se realizará con los mismos ítems, criterios y porcentajes de ponderación. Si el alumno ha cumplido con el porcentaje de asistencia exigido por la normativa de la universidad para evaluación continua (60%), se le guardarán para septiembre las notas de aquellos ítems en los que en la convocatoria ordinaria hubiera obtenido una nota de al menos 5.0.
Bibliografía y fuentes de referencia
Bibliografía básica
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 • Teresa G., S. Ososrio, N. Olvera. Introducción a la programación estructurada en C.
Pearson Educación. 2011.
• Ferraris Llanos, R. D. Fundamentos de Informática y Programación en C. Ed. Paraninfo. 2010.
• Peña Basurto, M.A., Cela Espín, J.M. Introducción a la Programación en C. Edición UPC. 2010.
• Llanos Ferraris, D. R. Fundamentos de Informatica y Programacion en C. Ediciones Paraninfo. 2010.
Bibliografía complementaria
• Joyanes, L. Fundamentos de Programación. Ed. McGraw-Hill, 2008. • Schildt, H. C. Manual de referencia. Ed. McGraw-Hill, 2007.
• García, F., Fernández, J., Carretero, J., Calderón, A. Ed. El lenguaje de programación C. Prentice Hall. 2004.
• Kernighan B.W., Ritchie, D.M. El lenguaje de programación C.2ª ed. Ed. Prentice Hall. 1991. • Joyanes, L., Zahonero, I. Programación en C. Libro de problemas. Ed. McGraw-Hill. 2002. • Joyanes, L., Zahonero, I., Fernández, M. y Sánchez, L. Estructura de datos. Libro de
problemas. Ed. McGraw-Hill. 1999.
• Márquez, F.M. UNIX. Programación avanzada. 3ª ed. Ed. Ra-Ma. 2004.
Web relacionadas
American National Standards Institute – ANSI (www.ansi.org)
International Organization for Standadization
(http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853) C programming and C++ programming. http://www.cprogramming.com/
Recomendaciones para el estudio
Se trata de una asignatura donde es fundamental para el alumno llevar la asignatura al día, debido a la interrelación existente entre los temas que la forman. El abandono de la asignatura durante una temporada podría dificultar el seguimiento de la misma posteriormente.
Se recomienda que el alumno trabaje semanalmente los ejercicios propuestos por el profesor, con el fin de asimilar los conocimientos de forma paulatina. Además de los recursos facilitados por el profesor, es sumamente importante que los alumnos hagan uso de las referencias bibliográficas básicas para reforzar los contenidos tratados en clase.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 Por tratarse de una asignatura de carácter práctico, es fundamental el uso del ordenador, tanto para la elaboración de las prácticas y ejercicios, como para el refuerzo de los conocimientos y conceptos teóricos aprendidos.
Material necesario
Aplicaciones
Para las prácticas de esta asignatura se necesita instalar algún programa que permita el desarrollo, compilación y ejecución de programas desarrollados en lenguaje C. Se recomienda el uso de Code::Blocks, el cuál es descargable gratuitamente a través del siguiente enlace:
http://www.codeblocks.org/downloads
Es un entorno de desarrollo multiplataforma disponible para entornos Windows 200/XP/Vista/7/8, Linux 32/64 bits y Mac OS X.
Si el alumno lo prefiere, puede utilizar cualquier otro programa que ofrezca la funcionalidad necesaria para desarrollar los ejercicios prácticos de esta asignatura, como Eclipse o Dev-C++. No obstante es importante tener presente que en los laboratorios se encuentra instalada la herramienta Code::Blocks y los exámenes se desarrollarán haciendo uso de la misma.
Material didáctico
Además de la bibliografía recomendada en esta guía docente (básica y complementaria), en el apartado de Recursos del Campus Virtual, el estudiante dispondrá de recursos adicionales que le servirán de apoyo al proceso de aprendizaje. Dicho material se ofrecerá organizado por temas, de acuerdo con la organización de contenidos detallada anteriormente. Concretamente se pondrán a disposición del alumno los siguientes recursos:
• Apuntes sobre cada tema, indicando conceptos relevantes y ejemplos de uso. • Enlaces de interés que permitan la ampliación de información sobre los temas. • Ejemplos de programas donde se apliquen distintas técnicas de programación. • Ejercicios para practicar los conocimientos tratados en cada tema.
Tutorías
En la asignatura se establecen los siguientes mecanismos de tutorización:
• Sesiones de tutorías: en el horario de atención de los alumnos semanal indicado anteriormente, el profesor atenderá dudas de los alumnos de forma presencial o por vía telefónica. En la medida de lo posible, dada la naturaleza de los contenidos impartidos, se recomienda que los alumnos opten por la tutorización presencial pues facilita la atención y resolución de dudas planteadas sobre los programas desarrollados.
Fundamentos de Programación I
Fundamentos de Programación I - Tlf: (+34) 902 102 101 • Correo electrónico y/o mensajes privados: se atenderán dudas puntuales planteadas a
través de medios telemáticos como el correo electrónico y la herramienta del Campus Virtual “Mensajes privados”. Preferiblemente, se recomienda el uso del Campus Virtual. Este tipo de tutorización se realizará diariamente, con un compromiso de respuesta en menos de 48 horas lectivas desde la recepción del mismo.
• Foros: los foros sirven para fomentar la resolución de dudas en la asignatura de forma colaborativa entre los alumnos. Se crearán diversos temas en el foro donde discutir distintos aspectos de interés, tales como unidades temáticas, prácticas, ejercicios, etc. Este mecanismo de tutorización permite a los estudiantes generar debates sobre los distintos planteamientos e intervenciones que se realicen. El profesor moderará las discusiones surgidas a través de los foros, reorientando las discusiones hacia el propósito formativo.