Programaciónde Computadores
Andrea Rueda
Pontificia Universidad JaverianaDepartamento de Ingeniería de Sistemas
Profesora
Andrea Rueda
Ed. José Gabriel Maldonado, S.J., 3er piso, Departamento de Ingeniería de Sistemas.– Lunes: 9am a 11am.– Jueves: 11am a 12m.
● Contacto:
correos deben incluir en el asunto “[PC]”, si no, se asumen como no recibidos.
Curso
● Página del curso:sophia.javeriana.edu.co/~rueda-andrea/progComp
– Programa del curso, planeación de sesiones, notas.– Diapositivas contenidos, enunciados laboratorios,
proyecto final.
● Página del curso en Uvirtual:uvirtual.javeriana.edu.co– Enunciados laboratorios, parciales, proyecto final.– Envío laboratorios, parciales, entregas proyecto.
Curso
● Página de la Sección de Programación:sophia.javeriana.edu.co/programacion– Programa del curso.– Horarios y salones.– Recursos de consulta.
Curso
Un poco de matemática...
1 crédito → 48 horas de trabajo al semestre.
3 créditos → 144 horas de trabajo al semestre. → 9 horas de trabajo semanal (16 sem).
Distribución de horas de trabajo semanal:4 horas presenciales + 5 horas trabajo independ.
¿puedo dedicarle el tiempo necesario?
Proyecto Educativo PUJ
● “El núcleo de la Comunidad Educativa Javeriana es la relación profesor-alumno.”
● “... se enmarcan en un concepto de la educación entendida como reciprocidad comunicativa, producción corporativa del saber y práxis autoformativa ...”
● “Cada persona es agente de su propia formación.”
http://www.javeriana.edu.co/institucional/proyecto-educativo
Proyecto Educativo PUJ
● “La relación profesor-estudiante constituye elemento esencial de la Comunidad Educativa ... Ha de ser una relación honesta, equitativa, respetuosa y de mutua exigencia.”
● “En esta relación, el estudiante es el principal artífice de su formación.”
● “El profesor deberá conocer a sus estudiantes, sus posibilidades y limitaciones; estimular la participación activa de ellos en el proceso enseñanza-aprendizaje ...”
http://www.javeriana.edu.co/institucional/proyecto-educativo
Acreditación ABET
http://ingenieria.javeriana.edu.co/informacion-del-programa
Metodología
● Clases magistrales (presentación de temas).● Aprendizaje colaborativo (trabajo en grupo).● Laboratorios de aplicación de conceptos.● Evaluación: parciales, proyecto final.● Trabajo individual:
– Tareas y ejercicios.– Preparación de clases.– Preparación de laboratorios.– Proyecto final.
Evaluación
● Habilidad conceptual y analítica:– 3 parciales (20% cada uno).– Laboratorios, tareas, ejercicios en clase (20%)
(promedio de los elementos).
● Habilidad práctica y trabajo en grupo:– Proyecto (20%):
● Primera entrega (8%).● Segunda entrega (Proyecto + sustentación) (12%).
Temario
● Repaso de conceptos, variables, librerías.● Apuntadores.● Memoria dinámica.● Cadenas de caracteres.● Recursión.● Tipos Abstractos de Datos.● TAD Lista, introducción a plantillas, multilistas.● TAD Pila, TAD Cola.● Archivos.
Parciales
– Examen parcial 1:jueves 23 de agosto.
– Examen parcial 2:jueves 4 de octubre.
– Examen parcial 3:jueves 15 de noviembre.
● Se realizarán directamente en el computador, de forma individual, con restricciones para la consulta e intercambio de información.
Proyecto final
– Entrega enunciado: martes 24 de julio.– Primera entrega: martes 25 de septiembre.– Entrega final y sustentación: jueves 22 de
noviembre.
● El proyecto se desarrollará en grupos de máximo dos personas.– Necesario definir los grupos desde la primera
semana y se deben mantener así a lo largo de todo el semestre.
Proyecto final
– Entrega enunciado: martes 24 de julio.– Primera entrega: martes 25 de septiembre.– Entrega final y sustentación: jueves 22 de
noviembre.
● El proyecto se desarrollará en grupos de máximo dos personas.
Tarea #1:Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo, los nombres de los estudiantes que trabajarán en grupo (un sólo envío por grupo).
Laboratorios
● Consistirán en: la resolución de problemas a través de programas que apliquen los conceptos vistos, o ejercicios de programación con preguntas de análisis.
● Se indicará si el laboratorio se debe desarrollar de forma individual, o en los grupos del proyecto.
● El resultado del laboratorio deberá enviarse a través de Uvirtual al finalizar la sesión de clase.
Laboratorios
● Al ser un ejercicio completo de programación, requiere la aplicación de la metodología pertinente:– Análisis: identificación informal de entradas,
procesos y salidas.– Diseño: especificación formal de entradas,
procesos y salidas, textual y gráficamente (diagramas de flujo).
– Implementación: código C++ consecuente y acorde con el diseño planteado.
– Pruebas: pruebas de escritorio y/o análisis de escenarios.
Ejercicios en clase
● Se llevará una tabla de puntuación por los ejercicios realizados en clase (participación).
● En cada clase teórica se trabajarán mínimo 3 ejercicios, de diversas dificultades.
● De acuerdo a la puntuación obtenida al finalizar el semestre, se asignará la calificación, que se promediará con los laboratorios.
Calificación
● Para cada elemento de evaluación (laboratorios, parciales, proyecto) se definirá una rúbrica de calificación.
● Rúbrica: instrumento estándar de evaluación.Conjunto de criterios usados para evaluar un nivel de desempeño.
● Se asignan unos niveles de calificación (entre 0.0 y 5.0) de acuerdo a los elementos particulares esperados, valores intermedios entre los niveles pueden indicar desarrollo parcial.
Calificación
● Ejemplo:
5.0 / 5.0: El estudiante propuso un código que cubre lo pedido y el diseño de la solución es adecuado.
3.5 / 5.0: El estudiante propuso un código que cubre lo pedido, pero el diseño de la solución no tiene una calidad suficiente para ser un trabajo de ingeniería.
3.0 / 5.0: El estudiante propuso un código que cubre lo pedido, pero no hizo el diseño de la solución.
0.0 / 5.0: El estudiante no presentó código ni diseño.
Lenguaje
● C++: lenguaje de programación de propósito general, desarrollado por Bjarne Stroustrup (1979, rev. 1984, versión comercial 1985).
● Estandarizado por ISO en revisiones:C++98, C++03, C++11, C++14.
● C++ y C:– La mayoría del código C puede compilarse en C++.– Algunos elementos de C pueden ser inválidos en
C++, o comportarse de forma diferente.
Apoyo
Monitor del curso:● Santiago [email protected]– Apoyo presencial clases de sala (jueves).
Aula de acompañamiento académico:● Miércoles, 1pm a 2pm.
Reglas de Juego
● ¿Dudas, inquietudes? Atención en oficina en los horarios definidos, correo con asunto [PC]
● Puntualidad: clases inician a las 9:10a.m.
● Utilización de equipos electrónicos en el aula:Celulares en silencio, multa para el que suene!
Recomendaciones
● Dedicación, trabajo honesto y sincero.● Rigor y formalidad propios del trabajo en
Ingeniería.● Siempre usar citaciones y referencias
pertinentes de los medios consultados.● Intuición, recursividad, inquietud por aprender.● Aprovechar los medios de contacto ante
cualquier inquietud, sugerencia, problema, ...
¿Preguntas?
¿Sugerencias?
¿Comentarios?
...
Repaso de conceptos
Repaso de conceptos
● ¿ Qué es un problema?
Repaso de conceptos
● Problema:
Se desea encontrar uno o varios objetos desconocidos, que cumplen condiciones o relaciones, previamente definidas, respecto a uno o varios objetos conocidos.
Repaso de conceptos
● ¿Qué es resolver un problema?
Repaso de conceptos
● Resolución de problemas:
Encontrar los objetos desconocidos.
Requiere caracterizar claramente objetos conocidos, condiciones y objetos desconocidos.
Repaso de conceptos
● ¿Qué es un algoritmo?
Repaso de conceptos
● Algoritmo:
Secuencia finita y bien definida de tareas bien definidas, cada una de las cuales se puede realizar con una cantidad de recursos finitos.– Preciso.– Definido.– Finito.
Repaso de conceptos
● Algoritmo:
Secuencia finita y bien definida de tareas bien definidas, cada una de las cuales se puede realizar con una cantidad de recursos finitos.– Datos.– Instrucciones.– Estructuras de control.
Repaso de conceptos
● ¿Qué es una metodología ?
Repaso de conceptos
● Metodología de programación:
Métodos, principios y reglas que permiten desarrollar sistemáticamente un programa que resuelva un problema algorítmico.
Estructura: secuencia de pasos que parten de la definición del problema y culminan con un programa que lo resuelve.
Problema ProgramaMetodología
Repaso de conceptos
Pasos generales de la metodología:
1. Análisis: comprensión del problema.
2. Especificación: identificación precisa de los elementos constituyentes.
3. Diseño: construcción del algoritmo.
4. Prueba y refinamiento: comprobación y corrección.
5. Codificación: en un lenguaje de programación.
6. Verificación: pruebas de la implementación.
Repaso de conceptos
Metodología simplificada (a usar en el curso):
1. Análisis entender completamente el problema.
2. Diseño identificación precisa de elementos,
relaciones y pasos para resolver el problema.
3. Implementacióncodificación en el lenguaje de programación.
4. Pruebasverificación de la exactitud de la solución.
Repaso de conceptos
1. Análisis
Determinar de una manera clara y concisa:
- Objetos, datos conocidos o datos de entrada: información presente en el problema.
- Objetos, datos desconocidos o datos de salida: datos a entregar como solución al problema.
- Condiciones: o relaciones a cumplir por los datos de entrada y salida.
Repaso de conceptos
1. Análisis
Ejemplo: dados los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular que pase por el punto medio de los puntos dados.
Repaso de conceptos
1. Análisis
Ejemplo: dados los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular que pase por el punto medio de los puntos dados.Objetos conocidos Los puntos P y Q
Objetos desconocidos Un segmento de recta
Condiciones
Los puntos P y Q son diferentesEl segmento de recta debe pasar por el punto medio entre P y Q, y debe ser perpendicular a la recta trazada entre P y Q
Repaso de conceptos
2. Diseño
Especificar y describir de manera formal (lenguaje matemático):
- Entradas: (objetos conocidos) descripción, cantidad y tipo.
- Salidas: (objetos desconocidos) descripción, cantidad y tipo.
- Condiciones: condiciones o propiedades de los datos de entrada, dependencia de las salidas obtenidas con las entradas recibidas.
Repaso de conceptos
2. Diseño
Proponer la secuencia de pasos o instrucciones que permiten resolver el problema (algoritmo), partiendo de las entradas y utilizando las condiciones definidas para llegar a las salidas especificadas.
Descripción a través de un diagrama de flujo.
inicio
fin
instrucción C
instrucción B
instrucción A
Repaso de conceptos
2. Diseño
Elementos del diagrama de flujo:
Inicio / fin
Lectura de datos
Impresión de datos
Proceso
Dirección de flujo
Selección
Ciclo
Repaso de conceptos
2. Diseño
Ejemplo: dada una serie de n números enteros, determinar si la suma de los mismos es un cuadrado perfecto.
Repaso de conceptos
2. Diseño
Ejemplo: dada una serie de n números enteros, determinar si la suma de los mismos es un cuadrado perfecto.
Entradasn (número de datos)d1, d2, …, dn (los números enteros)
Salidas es_cuadrado, tipo booleano
Condiciones
n > 0es_cuadrado → verdadero, si la parte entera de la raíz cuadrada de la suma de los n números enteros es igual a la raíz cuadrada de la suma de los n enteroses_cuadrado → falso, en caso contrario
Repaso de conceptos
2. Diseño inicio
nd1, d2, …, dn
suma = d1 + d2 + … + dn
piso(raiz(suma))== raiz(suma)
la suma es uncuadrado perfecto
la suma no es uncuadrado perfecto
fin
V F
Repaso de conceptos
3. Implementación
Codificar en un lenguaje de programación específico (en nuestro caso: C++).
La implementación debe coincidir con las especificaciones realizadas en el diseño:
– Cantidad y tipo de entradas.– Cantidad y tipo de salidas.– Condiciones de las entradas y salidas.– Secuencia de instrucciones especificada en el
diagrama de flujo.
Repaso de conceptos
3. Implementación
Ejemplo: dada una serie de n números enteros, determinar si la suma de los mismos es un cuadrado perfecto.
Repaso de conceptos
3. Implementación
1 int n, suma, dato, i; 2 cout << “número de enteros:”; 3 cin >> n; 4 suma = 0; 5 for (i=1; i<=n; i++) { 6 cout << “ingrese un número entero:”; 7 cin >> dato; 8 suma = suma + dato; 9 }10 if (floor(sqrt(suma))==sqrt(suma))11 cout << “la suma de los números es un cuadrado perfecto”;12 else13 cout << “la suma de los números no es un cuadrado perfecto”;
Repaso de conceptos
4. Pruebas
Realización de diferentes pruebas del programa implementado, para determinar su efectividad en la resolución del problema.
- Identificar diferentes casos o posibilidades.
- Generar datos de ejemplo para cada uno de los casos.
- Manualmente calcular o generar las soluciones (pruebas de escritorio).
- Ejecutar el programa con los datos de ejemplo, y verificar la coincidencia con las soluciones manuales.
Repaso de conceptos
4. Pruebas
Ejemplo: dada una serie de n números enteros, determinar si la suma de los mismos es un cuadrado perfecto.
Repaso de conceptos
4. Pruebasinstrucción n suma dato i pantalla
Línea 2 Número de enteros:
Línea 3 2
Línea 4 0
Línea 5 1
Línea 6 Ingrese un número entero:
Línea 7 7
Línea 8 7
Línea 5 2
Línea 6 Ingrese un número entero:
Línea 7 5
Línea 8 12
Línea 12 La suma de los números no es un cuadrado perfecto
Repaso de conceptos
● Ejercicio:
Dadas las coordenadas (x,y) de los tres vértices de un triángulo, imprimir en pantalla si éste es equilátero, isósceles o escaleno.– Entradas.– Salidas.– Procedimiento.
Top Related