52
Programación de Computadores Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Embed Size (px)

Citation preview

Page 1: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Programaciónde Computadores

Andrea Rueda

Pontificia Universidad JaverianaDepartamento de Ingeniería de Sistemas

Page 2: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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:

[email protected]

correos deben incluir en el asunto “[PC]”, si no, se asumen como no recibidos.

Page 3: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 4: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Curso

● Página de la Sección de Programación:sophia.javeriana.edu.co/programacion– Programa del curso.– Horarios y salones.– Recursos de consulta.

Page 5: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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?

Page 6: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 7: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 8: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Acreditación ABET

http://ingenieria.javeriana.edu.co/informacion-del-programa

Page 9: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 10: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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%).

Page 11: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 12: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 13: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 14: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 15: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición 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.

Page 16: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 17: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 18: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 19: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 20: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 21: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Apoyo

Monitor del curso:● Santiago [email protected]– Apoyo presencial clases de sala (jueves).

Aula de acompañamiento académico:● Miércoles, 1pm a 2pm.

Page 22: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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!

Page 23: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 24: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

¿Preguntas?

¿Sugerencias?

¿Comentarios?

...

Page 25: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Repaso de conceptos

Page 26: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Repaso de conceptos

● ¿ Qué es un problema?

Page 27: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 28: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Repaso de conceptos

● ¿Qué es resolver un problema?

Page 29: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Repaso de conceptos

● Resolución de problemas:

Encontrar los objetos desconocidos.

Requiere caracterizar claramente objetos conocidos, condiciones y objetos desconocidos.

Page 30: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Repaso de conceptos

● ¿Qué es un algoritmo?

Page 31: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 32: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 33: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

Repaso de conceptos

● ¿Qué es una metodología ?

Page 34: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 35: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 36: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 37: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 38: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 39: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 40: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 41: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 42: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 43: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 44: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 45: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 46: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 47: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 48: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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”;

Page 49: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 50: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.

Page 51: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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

Page 52: Programación de Computadores - sophia.javeriana.edu.corueda-andrea/progComp/docs/01... · Antes de la próxima clase, enviar a través de la actividad de Uvirtual Definición grupo

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.