Saltar al contingut Menu
Mapa
  • Inicio
  • Información
  • Contacto
  • Mapa

Programación I (P1)

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

Profesores

Responsable:  (-)
Otros:(-)

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

En el cálculo de la nota final (NF) de la asignatura intervienen las calificaciones siguientes (todas ellas sobre 10).

NA = nota de la prueba de resolución de problemas nuevos
NL = nota de las pruebas con problemas de las listas del laboratorio.
NE = nota del examen final.

La nota NL se calcula como media ponderada de las notas de 3 pruebas consistentes en resolver un ejercicio de programación. Estas pruebas se harán en las clases de laboratorio mediante el uso de un evaluador automático que se describirá más adelante. Para cada prueba, el ejercicio a resolver se elegirá de una lista conocida con antelación por el estudiante. Para presentarse a cada una de las pruebas será imprescindible haber enviado con éxito al corrector automático un número mínimo (establecido para cada prueba) de problemas de la lista, de lo contrario, la nota de la prueba será No Presentado. Las tres pruebas tendrán pesos 20%, 40% y 40% en el cálculo de la nota NL.

La nota NA se obtendrá de la resolución de otro ejercicio de programación en el que también se usará el evaluador automático. A diferencia de las pruebas del párrafo anterior, el ejercicio a resolver no será necesariamente de ninguna lista publicada con antelación (será un problema nuevo), y se efectuará en una fecha conveniente y en un intervalo de tiempo establecido por la Facultad .

La nota NE resultará de un examen final de curso, que se resolverá en papel, sin ordenador ni evaluador automático.

La nota NF se calcula como:

NF = máximo (40% NE + 20% NA + 40% NL, 70% NE).

La evaluación mediante el corrector automático es como sigue. 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, que en particular indicará de manera distinta si pasa todos los juegos de pruebas públicos y los privados. Si al final del examen no se ha enviado ningún programa que supere todos los juegos de pruebas públicos, la nota es 0.

En los casos en que se superen los juegos de pruebas, los profesores corregirán manualmente el último programa enviado que supere todos los juegos de pruebas públicos y privados. Si este no existe, se corregirá el último que supere todos los juegos de pruebas públicos. 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 en el programa corregido (en función de la claridad, el estilo, etcétera). Se calculará también una penalización P del problema para envíos erróneos de la siguiente manera: Se añadirá a P 1 punto por cada envío al juez que no supere los juegos de pruebas públicos, y 0,3 puntos por cada envío que supere los juegos de pruebas públicos pero no los privados, quedando excluidos hasta 3 envíos (los tres con penalización mayor, si los hay de ambos pesos). La nota del problema es max (V +5- P, 0) si el programa pasa todos los juegos de pruebas públicos y privados, y max (V +2,5-P, 0) si no pasa todos los juegos de pruebas privados .

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

Bibliografía básica

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

Bibliografía complementaria

  • Fatos Xhafa... [et al.] Programación en C++ para ingenieros, Thomson, 2006.
  • X. Franch ... [et al.] Introducció a la programació : problemes resolts, Edicions UPC, 2006.

Enlaces web

  1. https://p1.jutge.org/


Capacidades previas

(-)


Compartir

 
logo FIB © Facultad de Informática de Barcelona - Contacto - RSS
Esta web utiliza cookies propias para ofrecerle una mejor experiencia y servicio. Si continúa la navegación, entendemos que acepta nuestra política de cookies. Versión clássica Versión móvil