fasciculo 1

21
1 Fascículo No. 1 Semestre 3 Laboratorio de programación III Laboratorio de programación III Presentación general de la asignatura El objetivo de estos laboratorios es hacer una introducción a las estruc- turas de datos básicas, que permita almacenar la información de un problema de una forma adecuada, teniendo en cuenta criterios como eficiencia y facilidad de evolución. Se incluyen temas de manejos de estructuras lineales enlazadas (listas), estructuras recursivas simples (arboles binarios y arboles n-arios) y archivos de texto, se hace especial énfasis en las herramientas de apoyo a la construcción de programas correctos, y en algunos elementos de la programación orientada a objetos que facilitan la reutilización y desaco- plamiento de los distintos componentes de un programa. Esto nos permite dar una visión integral de la problemática de representar y manipular la información de un problema, como parte de un proceso de desarrollo de software. La metodología a implementar consiste en Laboratorios prácticos desarro- llados en Java, para los cuales es necesario un conocimiento básico en el lenguaje al igual que UML y conceptos de programación orientada a objetos. La estrategia pedagógica diseñada gira alrededor de cinco pilares: Aprendizaje activo: La participación activa dentro del proceso de aprendizaje es un elemento fundamental en este tema, puesto que, más que presentar un amplio conjunto de conocimientos, lo que se busca es ayudar a generar las competencias o habilidades necesarias para utilizarlos de manera efectiva, el objetivo es lograr utilizar una idea, y otra muy distinta lograr utilizarla para resolver un tema. Desarrollo incremental de habilidades: Muchas de las competencias necesarias para resolver un problema usando un lenguaje de progra-

Upload: vanesa-pasiive

Post on 06-Feb-2016

27 views

Category:

Documents


1 download

DESCRIPTION

s

TRANSCRIPT

Page 1: Fasciculo 1

1

Fascículo No. 1

Semestre 3

Laboratorio de programación III

Laboratorio de

programación III

Presentación general de la asignatura

El objetivo de estos laboratorios es hacer una introducción a las estruc-

turas de datos básicas, que permita almacenar la información de un

problema de una forma adecuada, teniendo en cuenta criterios como

eficiencia y facilidad de evolución.

Se incluyen temas de manejos de estructuras lineales enlazadas (listas),

estructuras recursivas simples (arboles binarios y arboles n-arios) y

archivos de texto, se hace especial énfasis en las herramientas de apoyo a

la construcción de programas correctos, y en algunos elementos de la

programación orientada a objetos que facilitan la reutilización y desaco-

plamiento de los distintos componentes de un programa. Esto nos permite

dar una visión integral de la problemática de representar y manipular la

información de un problema, como parte de un proceso de desarrollo de

software.

La metodología a implementar consiste en Laboratorios prácticos desarro-

llados en Java, para los cuales es necesario un conocimiento básico en el

lenguaje al igual que UML y conceptos de programación orientada a

objetos.

La estrategia pedagógica diseñada gira alrededor de cinco pilares:

Aprendizaje activo: La participación activa dentro del proceso de

aprendizaje es un elemento fundamental en este tema, puesto que, más

que presentar un amplio conjunto de conocimientos, lo que se busca es

ayudar a generar las competencias o habilidades necesarias para

utilizarlos de manera efectiva, el objetivo es lograr utilizar una idea, y

otra muy distinta lograr utilizarla para resolver un tema.

Desarrollo incremental de habilidades: Muchas de las competencias

necesarias para resolver un problema usando un lenguaje de progra-

Page 2: Fasciculo 1

2

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

mación se generan a partir del uso reiterado de una técnica o una

metodología.

Equilibrio en los ejes temáticos: La solución de un problema usando un

lenguaje de programación incluye un conjunto de conocimientos y

habilidades de varios dominios.

Basado en problemas: Todo el proceso gira alrededor de problemas

completos.

Actualidad tecnológica: se utilizan elementos metodológicos actuales.

Competencias generales de la asignatura

El curso pretende desarrollar las siguientes competencias:

Desarrollar las clases y los métodos necesarios para implementar las

pruebas unitarias automáticas, que ayudan a comprobar el correcto

funcionamiento de un programa.

Entender la importancia de construir programas correctos y la manera

como los invariantes, los contratos de los métodos y las pruebas

unitarias son fundamentales en ese propósito

Implementar, adaptar y utilizar algunos algoritmos clásicos de búsqueda

de información sobre estructuras ordenadas o desordenadas.

Page 3: Fasciculo 1

3

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Contenido mínimo de la asignatura

Fascículo 1

Problemas, Soluciones y Programas

Especificación de un Problema

El proceso y las herramientas

La solución a un problema

El modelo del mundo del problema

Identificar las Entidades

Modelar las características

Las relaciones entre las entidades

Los Requerimientos no funcionales

Algoritmos e Instrucciones

Laboratorio 1

Caso de estudio empleado:

Hoja de trabajo: un estudiante Fascículo 2

Definiendo Situaciones y Manejando Casos

Comprensión del problema

Definición de la Interfaz del usuario

Nuevos elementos de modelado

Tipos simples de datos

Constatntes para definir el dominio de un atributo

Constatntes para representar valores inmutables

Manejo de asociaciones opcionales

Expresiones

Definiciones

Operadores relacionales

Operadores Lógicos

Page 4: Fasciculo 1

4

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Operadores sobre cadenas de caracteres

Manejo de variables

Otros operadores de asignación

Clases y Objetos

Diferencia entre clase y objeto

Creación de objetos de una clase

Instrucciones Condicionales

Instrucciones condicionales simples

Condicionales en cascada

Condicionales compuestas

Responsabilidades de una clase

Tipos de Método

Cómoidentificar las responsabilidades?

Laboratorio 2

Caso de estudio: Un simulador bancario

Hoja de Trabajo: Una encuesta Fascículo 3

Manejando Grupos de Atributos

Comprension del modelo del problema

Contenedoras de tamaño fijo

Declaración de un arreglo

Inicialización de un arreglo

Acceso a los elementos de un arreglo

Instrucciones repetitivas

Patrones de algoritmos para instrucciones repetitivas

Contenedoras de tamaño variable

Declaración de un vector

Inicialización y tamaño de un vector

Laboratorio 3

Page 5: Fasciculo 1

5

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Caso de estudio: Notas de un curso

Hoja de Trabajo: un estudiante Fascículo 4

Definiendo y Asumiendo Responsabilidades

Comprensión de los requerimientos

Comprensión del mundo del problema

Definiendo la arquitectura

Asignación de las responsabilidades

La técnica del experto

La técnica de descomposición de los requerimientos

Manejo de las excepciones

Anunciar que puede producirse una excepción

La instrucción try-catch

La construcción de un objeto excepción

Recuperación de una situación anormal

Contrato de un método

Precondiciones y Postcondiciones

Documentación de los contratos

Laboratorio 4

Caso de estudio: Reservas de vuelo

Hoja de Trabajo: Juego de triqui Fascículo 5

Construyendo la Interfaz Gráfica

Elementos Gráficos Estructurales

Creación de la ventana principal

Distribución gráfica de los elementos

División y paneles

Etiquetas y zonas de texto

Validación y formateo de datos

Page 6: Fasciculo 1

6

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Selección de Opciones

Elementos de Interacción

Mensajes al usuario y lectura simple de datos

Mensajes en la consola

Mensajes en una ventana

Pedir información al usuario

Arquitectura y distribución de responsabilidades

Porque comienza la ejecución de un programa

Quién crea el modelo del mundo

Laboratorio 5

Caso de estudio: Tienda de libros

Hoja de trabajo: Un parqueadero Fascículo 6

Manejando Estructuras de dos Dimensiones y Persistencia

Contenedoras de dos dimensiones:matrices

Inicialización de una matriz

Acceso a los elementos de una matriz

Comparar los elementos de una matriz

Patrones de algoritmos para recorridos de Matrices

Recorrido parcial

Otros algoritmos de recorridos

Persistencia y manejo del estado inicial

El concepto de archivo

Leer datos como propiedades

Escoger el archivo desde el programa

Laboratorio 6

Caso de estudio: un brazo mecánico

Hoja de trabajo: Un sistema de prestamos

Page 7: Fasciculo 1

7

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Fascículo 7

Busquedas, Ordenamiento y Pruebas automaticas

Invariantes de clase y noción de corrección del modelo

Asignaciones de responsabilidades e implementación de métodos

Pruebas unitarias automáticas

Algoritmos de ordenamiento en memoria principal

Ordenamiento por selección

Ordenamiento por intercambio

Ordenamiento por inserción

Algoritmos de búsqueda en memoria principal

Búsqueda de un elemento

Búsqueda en estructuras ordenadas

Generación de datos y medición de tiempos

Pruebas unitarias automáticas

Laboratorio 7

Caso de estudio: Un club social

Hoja de trabajo: un sistema de préstamos Fascículo 8

Archivos, Serialización y tipos de excepción

Manipulación básica de archivos

Lectura de archivos

Manipualación de cadenas de caracteres

Reportes y otras salidas en archivos

Importación de datos desde archivos.

Laboratorio 8

Caso de estudio: una central de pacientes

Hoja de trabajo: un manejador de ADN

Page 8: Fasciculo 1

8

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Page 9: Fasciculo 1

9

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Introducción al fascículo 1

En este fascículo se explica el proceso global de solución de un problema

utilizando un programa de computador. Esto incluye las etapas que deben

seguirse para resolverlo y los distintos elementos que se deben ir produ-

ciendo a medida que se construye la solución. Se analizan problemas

simples a través de la especificación de los servicios que el programa debe

ofrecer y a través de un modelo conceptual del mundo del problema. Se

explica la estructura de un programa de computador y el rol que juega

cada uno de los elementos que lo componen. Se trabaja el lenguaje de

programación Java y los elementos necesarios para que el estudiante

complete un programa utilizando expresiones simples, asignaciones y

llamadas de métodos. Se utiliza un ambiente de desarrollo de programas y

un espacio de trabajo predefinido, para completar una solución parcial a

un problema. Básicamente este fascículo es un repaso y refuerzo a lo que

ya ha trabajado en semestres anteriores.

Conceptos previos

La computación es una disciplina joven comparada con las matemáticas,

la física o la ingeniería civil. A pesar de nuestra juventud, nuestra vida

moderna depende de los computadores. Desde la nevera de la casa, hasta

el automóvil y el teléfono celular, todos requieren de programas de

computador para funcionar. Un programador, es la persona capaz de

entender los problemas y necesidades de un usuario y a partir, de dicho

conocimiento, es capaz de construir un programa de computador que los

resuelva (o lo ayude a resolver).

Page 10: Fasciculo 1

10

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Mapa conceptual fascículo 1

Al final de este laboratorio el estudiante estará en capacidad de: Explicar el proceso global de solución de un problema usando un programa de

computador. Esto incluye las etapas que debe seguir para resolverlo y los distintos elementos que debe ir produciendo a medida que construye la solución.

Analizar un problema simple que se va a resolver usando un programa de computador, construyendo un modelo con los elementos que intervienen en el problema y especificando los servicios que el programa debe ofrecer.

Explicar la estructura de un programa de computador y el rol que juega cada uno de los elementos que lo componen.

Completar una solución parcial a un problema (un programa incompleto escrito en el lenguaje Java), usando expresiones simples, asignaciones e invocaciones a métodos. Esto implica entender el concepto de parámetro y de creación de objetos.

Utilizar un ambiente de desarrollo de programas y un espacio de trabajo prede-finido, para completar una solución parcial a un problema.

LogrosLogrosLogros

Page 11: Fasciculo 1

11

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Problemas, Soluciones y Programas

El proceso determinado para la solución de un problema, se denomina el

ciclo de vida de construcción de programas, el cual nos permite introducir

la terminología básica que necesitamos.

Paso 1: Una persona u organización tiene un problema que necesita

resolver, para lo cual contacta a una empresa desarrolladora de software

que pone a su disposición un programador.

Paso 2: El programador sigue un conjunto de etapas denominadas

proceso para entender el problema del cliente y construir de forma

organizada la solución denominada programa.

Paso 3: El programador instala el programa que resuelve el problema.

Especificación de un Problema

Un programador no puede resolver un problema que no entiende. Por

consiguiente la primera etapa consiste en tratar de entender en qué consis-

te el problema del cliente y expresar toda la información que obtiene de tal

forma que cualquier otra persona del equipo de desarrollo pueda enten-

derla, esta etapa se denomina análisis y genera como salida la espe-

cificación del problema.

En el análisis de un problema se pueden identificar tres aspectos.

1. Los requerimientos funcionales

2. El mundo del problema

3. Los requerimientos no funcionales (restricciones del cliente)

El proceso y las herramientas

La primera etapa para resolver un problema es analizarlo. Para facilitar este

estudio, se debe descomponer el problema en sus tres partes.

Page 12: Fasciculo 1

12

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Cuanto más tarde se detecta un error, más costoso es corregirlo.

Una vez el problema se ha entendido y se ha expresado en un lenguaje

que se pueda entender sin ambigüedad, pasamos a la etapa de diseño.

Aquí debemos imaginarnos la solución y definir las partes que la van a

componer. Es muy común definir esta etapa definiendo una estrategia.

Cuando el diseño está terminado, pasamos a construir la solución.

La solución a un problema

Los elementos que forman parte de la solución de un problema son: Diseño del programa: Donde se muestra la estructura de la solución,

sus partes y sus relaciones.

Código fuente: Es el programa escrito en un lenguaje de programa-

ción.

Archivos de construcción: Explican la manera de crear el código

ejecutable a partir del código fuente.

Código ejecutable: Es lo que se instala en el computador del usuario.

El último elemento que forma parte de la solución del problema son las

pruebas, que son los programas que ayudan a mostrar que la solución

es correcta.

El modelo del mundo del problema

En este segundo componente del análisis, el objetivo es entender el

mundo en el que ocurre el problema y recopilar toda la información

necesaria para que el programador pueda escribir el programa. Como

salida de este proceso se debe producir lo que se denomina un modelo

del mundo. Esta actividad se basa en un proceso de observación ya que

el problema como tal ya existe y nuestro objetivo es entenderlo para

describirlo de forma sencilla.

Page 13: Fasciculo 1

13

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

En programación orientada a objetos, las entidades del mundo se denominan clases.

Identificar las Entidades

Esta actividad busca identificar los elementos del mundo que intervienen

en el problema. Dichos elementos pueden ser concretos (una persona, un

vehículo) o abstractos (una cuenta bancaria). El objetivo de esta etapa es

identificar dichos elementos y asociarles un nombre significativo.

Modelar las características

Una vez identificadas las entidades del mundo del problema, el siguiente

caso es identificar y modelar sus características, a cada característica se le

asocia un nombre significativo y una descripción del conjunto de valores

que puede tomar.

Las relaciones entre las entidades

En esta actividad debemos tratar de identificar las relaciones que existen

entre las distintas entidades del mundo y asignarles un nombre. El diagra-

ma en UML en la cual se incluye la representación de todas las entidades y

sus relaciones se denomina modelo conceptual.

Los Requerimientos no funcionales

Es importante tener en cuenta las restricciones definidas por el cliente, ya

que dependen en gran medida de la ejecución del programa. Los requerí-

mientos no funcionales muchas veces están relacionados con las res-

tricciones sobre la tecnología el volumen de los datos, la cantidad de

usuarios, etc.

Algoritmos e Instrucciones

Los algoritmos son unos de los elementos esenciales en un programa. Un

algoritmo en general, es una secuencia ordenada de pasos para realizar

una actividad. Cuando transcribimos el algoritmo a un lenguaje generamos

un programa, el lenguaje es restringido y limitado pero poderoso dado lo

Page 14: Fasciculo 1

14

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

que se puede hacer. Todo lenguaje de programación tiene su propio con-

junto de reglas, para decir las cosas, denominado la sintaxis del lenguaje.

Laboratorio 1

Caso de Estudio – Empleado

Aplicación para la administración de la información de un empleado.

Enunciado

Se quiere una aplicación que permita manejar la información de un

empleado. El empleado tiene nombre, apellido, sexo, fecha de nacimiento

y una imagen asociada. Además, como trabaja en una determinada

compañía tiene una fecha de ingreso a la misma y un salario básico

asignado.

En la aplicación se puede (1) modificar el salario del empleado y (2)

realizar algunos cálculos con la información disponible: (a) edad actual, (b)

antigüedad en la empresa y (c) prestaciones a las que tiene derecho. Para

el cálculo de las prestaciones se utiliza la fórmula p = (a * s)/12 (p:

prestaciones, a: antigüedad, s: salario).

Interfaz

Page 15: Fasciculo 1

15

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Requerimientos

Nombre R1 – ingresar la información del empleado

Resumen Se requiere recibir la información básica de un empleado. Dicha información comprende datos personales y de vinculación a la empresa.

Entradas

Nombre del empleado

Apellido del empleado

Sexo del empleado

Fecha de Nacimiento del empleado

Fecha de ingreso del empleado a la compañía

Salario básico del empleado

Resultados

La información básica del empleado ha sido admitida

Nombre R2 – actualizar el salario básico del empleado

Resumen Permitir la modificación del salario básico de un empleado y actualizar dicha información

Entradas

Nuevo salario básico

Resultados

Nuevo Salario básico del empleado

Nombre R3 – Calcular la edad del empleado

Resumen Calcular e informar los años cumplidos del empleado

Entradas

La fecha de nacimiento del empleado

Resultados

Edad calculada del empleado

Nombre R4 – Calcular de la antigüedad del empleado

Resumen Calcular e informar la cantidad de años que ha trabajado el empleado para la compañía

Entradas

Fecha de ingreso del empleado a la compañía

Resultados

Antigüedad o años que lleva el empleado en la compañía

Nombre R5 – Calcular las prestaciones de un empleado

Resumen A partir del salario básico, deducir el valor de las prestaciones del empleado. La fórmula para hacerlo es Prestaciones = antigüedad * 1/12 (salario básico)

Entradas

Fecha de ingreso del empleado a la compañía

Salario básico del empleado

Resultados

Valor calculado de las prestaciones

Page 16: Fasciculo 1

16

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Modelo Conceptual

1.1

Desarrolle la aplicación empleado cuya interfaz debe ser igual a la pre-sentada en el laboratorio, garantice que la aplicación cumpla con el mo-delo conceptual (desarrolle las clases apropiadas), garantice también que cumple con los requerimientos definidos.

Hoja de Trabajo – El Estudiante

Analice el siguiente enunciado e identifique el mundo del problema, lo que

se quiere que haga el programa y las restricciones para desarrollarlo.

Enunciado

Se quiere construir una aplicación para el manejo de cursos de un estu-

diante. Los datos personales del estudiante son nombre, apellido y código.

El estudiante toma sólo 5 cursos en el semestre. Cada uno de los cursos

tiene un nombre, un código y un número de créditos. Al finalizar el curso,

al estudiante se le asigna una nota que está entre 1.5 y 5.0.

Page 17: Fasciculo 1

17

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

El estudiante entra en prueba académica si su promedio es inferior a 3.25.

Dicho promedio se calcula con las notas de las materias que ha concluido,

según los créditos de las mismas: suma de las multiplicaciones de los cré-

ditos de la materia por la nota obtenida, dividida entre el total de créditos.

Por ejemplo: el estudiante ha terminado dos materias Cálculo 1 y Física 1,

la primera de 4 créditos y la segunda de tres. Las notas del estudiante son:

Cálculo 1: 4.5

Física 1: 3.5

Por lo tanto, el promedio del estudiante se calcula con:

(4.5*4+ 3.5*3)/ 7 = 4.07

La aplicación debe permitir registrar al estudiante, registrarle los 5 cursos

al estudiante, decir si un curso está en el pensum del estudiante, asignar

las notas de los cursos del estudiante, calcular el promedio con aquellas

materias que tienen nota e indicar si está en prueba académica.

Interfaz

La interfaz del programa debe es la siguiente

Page 18: Fasciculo 1

18

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Requerimientos

Especifique los seis requerimientos funcionales descritos en el enunciado

Modelo Conceptual

Estudie el siguiente modelo conceptual

Complete la declaración de las clases de acuerdo al modelo conceptual Public class Estudiante

{

//-----------------------------------------------------

---------- //Atributos

//-----------------------------------------------------

----------

}

Public class Curso

{

//-----------------------------------------------------

---------- //Atributos

//-----------------------------------------------------

----------

}

Page 19: Fasciculo 1

19

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Escriba el código de los métodos indicados Clase: Curso – Retorna el código del curso Public String darCodigoCurso( )

{

}

Clase: Curso – Indica si el curso ya fue calificado (tiene una nota distinta de cero) Public boolean estaCalificado( )

{

} Clase: Estudiante – retorna el nombre del estudiante Public String darNombre( )

{

}

Clase: Estudiante – indica si el estudiante ya tiene los cinco cursos registrados Public String tieneCursosCompletos( )

{

}

En este fascículo hicimos una introducción a la programación como

solución a un problema planteado por un cliente. Para construir dicho pro-

grama, se presentaron y utilizaron los elementos metodológicos y meto-

dológicos necesarios para enfrentar problemas triviales. Se hizo especial-

mente énfasis en la importancia del análisis del problema y como repre-

sentar un modelo conceptual para ese mundo del problema sin dejar de

lado ningún tema y así lograr llevarlo a un lenguaje de programación.

VILLALOBOS Jorge. “Diseño y Manejo de Estructuras de Datos en C”

Santa Fé de Bogota. Edición McGraw – Hill Interamericana Primera

Edición. 1996. (Texto Guia).

Page 20: Fasciculo 1

20

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

ROBERT L Kruse. “Estructura de Datos y Diseño de Programas”. Prentice-

Hall, 1988.

TENENBAUM Aaron M.; LANGSAM Yedidyah. “Estructura de Datos en

C”México. Prentice Hall Hispanoamericana Primera Edición. 1993.

En el siguiente laboratorio se reforzaran los conceptos de los tipos simples

de datos y el manejo de estados.

Page 21: Fasciculo 1

21

Laboratorio de programación III

Laboratorio de

programación III

Fascículo No. 1

Semestre 3

Seguimiento al autoaprendizajeSeguimiento al autoaprendizajeSeguimiento al autoaprendizaje

Laboratorio de Programación III- Fascículo No. 1 Nombre_______________________________________________________

Apellidos ________________________________ Fecha: _________________

Ciudad___________________________________Semestre: _______________

1. En el caso de estudio identifique los tipos de datos que está usando.

2. Cuál es el correspondiente tipo de dato de máquina para los tipos de datos usados en java.

3. Para el caso de estudie enumere ejemplos de datos e información. 4. Para los datos identificados en el punto 1, identifique la entrada, el proceso y la

salida de cada uno de ellos.