• No results found

THE STATE IS NOT THE EQUITABLE OWNER OF THE FACILITY FROM EXECUTION

STANDARD OF REVIEW

II. THE STATE IS NOT THE EQUITABLE OWNER OF THE FACILITY FROM EXECUTION

1. Librería estándar de C.

2. Operaciones básicas con ficheros: Apertura, lectura, escritura, renombrado, borrado y cierre.

Fundamentos de Programación II

3. Ficheros de texto.

4. Ficheros binarios. Posicionamiento. Tema 2. Punteros.

1. Definición.

2. Declaración de punteros. 3. Operadores.

a. El operador referencia: & b. El operador indirección: * 4. Asignación de punteros.

5. Punteros como argumentos. 6. Proteger argumentos. 7. Devolver punteros. Tema 3. Punteros y arrays.

1. Aritmética de punteros.

2. Uso de punteros para el procesamiento de arrays. 3. Uso del nombre de array como puntero.

4. Arrays como argumentos.

5. Punteros y arrays multidimensionales.

Tema 4. Programación modular y documentación de código fuente 1. Programación modular en C a. Archivos de cabecera b. Archivos de implementación c. Variables globales 2. Documentación de código en C a. Introducción a Doxygen b. Añadir comentarios al código

Fundamentos de Programación II

Tema 5. Listas.

1. Listas versión estática 2. Lista versión cursor. 3. Listas dinámicas

a. Lista simple con cabecera b. Lista simple sin cabecera c. Lista circular

d. Lista doblemente enlazada

e. Lista circular doblemente enlazada Tema 6. Pilas. 1. Versión estática. 2. Versión dinámica. Tema 7. Colas. 1. Versión estática. 2. Versión dinámica. Tema 8. Árboles. 1. Estructuras dinámica. 2. Recorrido. a. Previo. b. Simétrico c. Posterior. 2. Operaciones básicas: a. Insertar b. Pertenece c. Encontrar d. Padre de

Fundamentos de Programación II

e. Borrar Tema 9. Grafos.

1. Versión estática. 2. Versión dinámica. 3. Algoritmos sobre grafos:

a. Dijkstra. b. Floyd. c. Warshall. Tema 10. Complejidad. a. Conceptos básicos. b. Notaciones asintóticas. c. Ecuaciones de recurrencia.

Programa de la enseñanza práctica

Práctica 1. Entrada/salida con ficheros en C. Uso de punteros, operaciones asociadas y uso como argumentos de funciones. Uso conjunto de punteros y arrays multidimensionales. Memoria dinámica y funciones asociadas. Elaboración de programas modulares. Documentación de programas con doxygen.

Práctica 2. Uso de la estructura de datos tipo lista sobre una supuesto práctico real. Práctica 3. Uso de la estructura de datos tipo pila y cola sobre una supuesto práctico real. Práctica 4. Uso de la estructura de datos tipo árbol y grafo sobre una supuesto práctico real. Práctica 5. Cálculo de complejidad de distintos algoritmos de programación.

Relación con otras materias

La asignatura de Fundamentos de programación II está muy relacionada con la asignatura de Fundamentos de programación I, ya que es la continuación directa. También está íntimamente relacionada con Algoritmia.

En menor medida y en el área de la programación, también está ligada a asignaturas como Programación Orientada a Objetos, Desarrollo de aplicaciones distribuidas I y II.

Fundamentos de Programación 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: 35% del total de la nota.

Se evaluarán los conocimientos acerca del manejo de ficheros, punteros, modularidad de programas y manejo de listas (temas 1 a 5).

- Prueba final: 35% del total de la nota.

Se evaluarán los conocimientos sobre pilas, colas, árboles, grafos y complejidad (temas 6 a 10).

- Evaluación de prácticas y problemas: 30% 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 que se proponen, 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%).

Bibliografía y fuentes de referencia

Bibliografía básica

• Khamtane Ashok. Programming in C. Ed. Pearson. 2012.

• Rodríguez Artalejo, M., Antonio Gonzalez Caldero, P., Gomez Martin, M.A., González Calero, P.A. Estructuras de datos. Un enfoque moderno. UCM. 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.

• Joyanes, L. Fundamentos de Programación. Ed. McGraw-Hill, 2008.

Bibliografía complementaria

• 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.

Fundamentos de Programación II

• 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.

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

Material didáctico

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 Dev-

C++, el cuál es descargable gratuitamente a través del siguiente enlace:

http://www.bloodshed.net/devcpp.html

Los requisitos mínimos son un sistema Windows95/98/BT/2000/XP y 512 megas de RAM.

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 Code::Blocks. No obstante es importante tener presente que en los laboratorios se encuentra instalada la herramienta Dev-C++ y los exámenes se desarrollarán haciendo uso de la misma.

Adicionalmente, para la generación automática de código, haremos uso de la herramienta

Doxygen. Se puede descargar gratuitamente a través del siguiente enlace:

Fundamentos de Programación II

El software es ligero y no existen requisitos mínimos para su instalación. Además, se ofrece en diversas versiones, tanto 32-bit y 64-bit, válidas para sistemas tipo Linux, Windows o Mac OS X.

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.

• Para cada estructura de datos estudiada en la asignatura, se facilitarán librerías con funcionalidad básica que puedan ser empleadas en la resolución de ejercicios prácticos. • 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.

• 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. Tutorías personales: A todos los alumnos de la UCAM se les asigna un tutor personal del Cuerpo Especial de Tutores, cuando realizan su primera matricula en la Universidad, de tal forma que el alumno recibe el acompañamiento de su tutor para toda su etapa universitaria

Fundamentos de Programación II

según criterios y aspectos que se pueden consultar en:

Guía Docente 2014/2015