programación de computadores - sophia.javeriana.edu.corueda-andrea/progcomp/docs/01... · antes de...

Post on 01-Oct-2018

224 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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:

rueda-andrea@javeriana.edu.co

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 Carosantiago.caro@javeriana.edu.co– 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