Aumentar letras   Inicio   Información   Contactar   Mapa
Català   English

Programación I (P1)

Créditos Dept. Tipo Requisitos
9.0 (7.2 ECTS) LSI
  • Obligatoria para la EI
  • Obligatoria para la ETIG
  • Obligatoria para la ETIS
   

Profesores

Responsable:  Jordi Petit Silvestre (jpetit@lsi.upc.edu)
Salvador Roura Ferret (roura@lsi.upc.edu)
Otros:Albert Atserias Peri (atserias@lsi.upc.edu)
Amalia Duch Brown (duch@lsi.upc.edu)
Ana Edelmira Pasarella Sanchez (edelmira@lsi.upc.edu)
Christian Blum (cblum@lsi.upc.edu)
Edgar Gònzalez Pellicer (egonzalez@lsi.upc.edu)
Emma Rollón Rico (erollon@lsi.upc.edu)
Enrique Romero Merino (eromero@lsi.upc.edu)
Gabriel Alejandro Valiente Feruglio (valiente@lsi.upc.edu)
Joaquin Gabarró Vallés (gabarro@lsi.upc.edu)
Jordi Delgado Pin (jdelgado@lsi.upc.edu)
Juan Garcia-Villaraco Perez (joan.garcia-villaraco@upc.edu)
Leonor Frias Moya (lfrias@lsi.upc.edu)
M. Jose Blesa Aguilera (mjblesa@lsi.upc.edu)
Maria Josefina Sierra Santibañez (jsierra@lsi.upc.edu)
Omer Gimenez Llach (omer.gimenez@upc.edu)
Pilar Nieto Soler (pnieto@lsi.upc.edu)
Ramon Ferrer Cancho (ramon.ferrericancho@gmail.com)
Xavier Messeguer Peypoch (peypoch@lsi.upc.edu)

Objectivos Generales

-

Objectivos Específicos

Conocimientos

  1. Sintaxis y semántica de las expresiones e instrucciones de un lenguaje de programación imperativo (C++). Tipos de datos elementales y estructurados. Funciones y acciones.
  2. Diseño iterativo y diseño recursivo.
  3. Esquemas fundamentales sobre secuencias y tablas, algoritmos clásicos.

Habilidades

  1. Frente a un problema de dificultad elemental, encontrar un algoritmo elegante que lo solucione. Saberlo codificar con un subconjunto de instrucciones básicas del lenguaje imperativo C++
  2. Usar herramientas de edición, compilación y ejecución para desarrollar programas.
  3. Disponer de recursos para corregir los programas cuando no funcionen.
  4. Escribir programas con buen estilo, con una documentación relevante, con los comentarios precisos y con las especificaciones necesarias.

Competencias

  1. Capacidad para el razonamiento crítico y lógico-matemático
  2. Capacidad de abstracción. Capacidad para enfrentarse a problemas nuevos recurriendo conscientemente a estrategias que han resultado útiles en problemas resueltos anteriormente
  3. Capacidad para entender problemas: ante el enunciado de un problema, distinguir los datos (o los elementos de partida), las incógnitas (o lo que se pide) y las hipótesis y leyes aplicables.

Contenidos

Horas estimadas de:

T P L Alt L Ext. Est O. Ext.
Teoria Problemas Laboratorio Otras actividades Laboratorio externo Estudio Otras horas fuera del horario fijado

1. Introducción
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 2,0 6,0 0 6,0 6,0 0 24,0
- Introducción a la algoritmia y la programación.
- Conceptos: Problema computacional, entrada, salida, especificación, algoritmo, corrección, programa, lenguaje de programación, editor, compilador, intérprete, ejecución, juego de pruebas.
- Elementos: Tipo, valores, literales, constantes, variables, operadores y expresiones. Asignación. Construcción secuencial. Construcciones condicionales. Construcciones iterativas. Entrada/salida básica. Sintaxis de estas construcciones en C++.
- Entorno de programación.

2. Procedimientos
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 1,0 3,0 0 3,0 3,0 0 12,0
- Funciones, acciones, llamadas, paso de parámetros (de entrada, de salida y de entrada salida; parámetros reales y formales; paso por valor y por referencia).
- Ámbito de las variables.
- Descomposición funcional.
- Uso de librerías de funciones básicas.

3. Recorridos y búsquedas
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 1,0 3,0 0 3,0 3,0 0 12,0
- Secuencias.
- Esquema de recorrido.
- Esquema de búsqueda.
- Esquemas híbridos.

4. Recursividad
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 1,0 3,0 0 3,0 3,0 0 12,0
Introducció al diseño de algoritmos recursivos

5. Tablas y tuplas
T      P      L      Alt    L Ext. Est    O. Ext. Total 
6,0 3,0 9,0 0 9,0 9,0 0 36,0
- Tablas.
- Tablas multidimensionales.
- Tuplas.
- Estructuración y proceso de datos con tablas y tuplas.

6. Algoritmos fundamentales
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 2,0 6,0 0 6,0 6,0 0 24,0
- Algoritmos de ordenación elementales (selección, inserción y burbuja)
- Búsqueda dicotómica.
- Fusión de tablas.
- Ordenación por fusión.
- Nociones de eficiencia

7. Consolidación y estudio personal
T      P      L      Alt    L Ext. Est    O. Ext. Total 
0 9,0 6,0 0 21,0 20,0 0 56,0


Total por tipo T      P      L      Alt    L Ext. Est    O. Ext. Total 
20,0 19,0 36,0 0 51,0 50,0 0 176,0
Horas adicionales dedicadas a la evaluación 4,0
Total horas de trabajo para el estudiante 180,0

Metodología docente

(-)

Método de evaluación

Hay varias pruebas, todas delante de ordenador y
consistentes en resolver un problema.

Durante el curso, y para potenciar la evaluación
continuada, se realizarán entre 4 y 7 controles
(incluyendo el parcial) que evalúan el seguimiento del
temario presentado hasta el momento. Se podrá exigir
que los estudiantes entreguen unos pocos ejercicios de
la colección para poderse presentar a los controles.
C es la media ponderada de los controles.

En el periodo de exámenes, se realizarán tres
problemas (F1, F2 y F3 que evalúan la totalidad del
temario.

No presentarse en estos exámenes finales implicará la calificación de NP.

Cada problema se evalúa independientemente de los otros
y recibe una nota entre 0 y 10 puntos, según los
criterios que se dan más abajo sobre la corrección de
los problemas. La nota final de la asignatura es

máx{ (C + F1 + F2 + F3) / 4 , (F1 + F2 + F3) / 3 }.

Cualquier intento de fraude realizado durante el curso comportará la aplicación de la normativa académica general de la UPC i el inicio de un proceso disciplinario.

Criterios de corrección de cada problema:

Un problema se define con un enunciado y uno o más
juegos de pruebas públicos. Resolver un problema
consiste en escribir un programa correcto (según los
criterios comentados a continuación) que supere todos
los juegos de pruebas, tanto públicos como privados.
Cuando un estudiante tenga un programa que considere
correcto, lo enviará a un juez automático que, en
pocos segundos, le devolverá un veredicto sobre el
comportamiento de su programa. Tanto si el programa
pasa los juegos de pruebas privados como si no, el
estudiante podrá reenviar varias soluciones para el
mismo problema. Si al final del examen no se ha
enviado ningún programa que supere todos los juegos
de pruebas, la nota es 0.

De lo contrario, de entre todos los programas que
superen los juegos de pruebas, los profesores
corregirán manualmente el último. Si se detecta que
el estudiante se ha saltado las reglas básicas de
programación fijadas con claridad durante el curso, o
si el programa no cumple los requerimientos del
enunciado, o si el algoritmo usado para resolver el
problema es manifiestamente inadecuado, la nota es 0.

De lo contrario, sea V la valoración, entre 0 y
5, dada por los profesores al programa corregido
(en función de la claridad, el estilo, etcétera), y
sea _p_ el número de programas enviados que no
superan los juegos de pruebas. La nota es

5 + C - max{ P-1, 0 }.

Es decir, se resta un punto sobre diez por cada
solución enviada que no pase los juegos de pruebas,
si bien la primera solución errónea no se penaliza.
Lógicamente, una nota negativa se convierte en 0
(hecho que acota a 10 el máximo número de envíos
incorrectos).

Bibliografía básica

  • J. Petit, S. Roura Col·leció de Problemes de P1, , .

Bibliografía complementaria

  • F. Xhafa, P-P. Vázquez, J. Marco, X. Molinero, Á. Martín Programación en CPP para ingenieros, Thomson, 2006.
  • X. Franch, J. Marco, X. Molinero, J. Petit, F. Xhafa Introducció a la Programació - Exercicis resolts, Edicions UPC, 2006.

Capacidades previas

(-)



 
logo FIB © Facultad de Informática de Barcelona - webmaster@fib.upc.edu - RSS RSS