Download - P9_DisenoModular

Transcript
Page 1: P9_DisenoModular

Programación Orientada a Objetos.Práctica 9. Diseño modular

Objetivos: Al terminar la práctica el alumno:

• Resolverá un problema complejo mediante el uso de la técnica de diseño modular.• Codificará algoritmos simples en lenguaje C.• Integrará módulos diseñados e implantados por otros programadores.• Compilará, ligará y ejecutará los códigos en C utilizados.• Interpretará mensajes de error del compilador y los corregirá.

Preparación.Revisar conceptos de descomposición modular, paso de parámetros,diseño de algoritmos, pseudocódigo, documentación de diseño e implementación, archivos, apuntadores y cadenas.

Actividades.

1. Resolver el problema planteado (ver Apéndice A para los detalles de la documentación de diseño):

En un gabinete de estudios de imagen por ultrasonido hay tres consultorios con equipos iguales en los que pueden realizarse los siguientes estudios:

Tabla 1. Estudios de imagen por ultrasonidoClave deEstudio

Descripción Duración [min]

A Fetal 30

B Abdomen superior 25

C RenoUrinario 20

D Ginecológico 20

El gabinete comienza a recibir pacientes desde las 8:00hs y cierra a las 16:00hs, es decir ofrece ocho horas de atención continua.

Es necesario generar un programa que cuando llegue un paciente, registre el tipo de estudio que se va a realizar(ver la tabla 1) y le imprima en pantalla en qué consultorio le toca y cuánto tiempo debe esperar, si el paciente confirma que sí se espera se registra su estudio, si el paciente decide no esperar no queda registro de su solicitud de estudio.

Después de procesar una solicitud, el programa debe mostrar de nuevo el menú de opciones de estudio a realizar y esperar la siguiente solicitud.

Consideraciones:• No hay citas programadas, se atiende conforme van llegando los pacientes.• Se asigna el consultorio con menor tiempo de espera.• En el menú de estudios a realizar debe aparecer una opción que sea “Apagar el sistema”, si el usuario

selecciona dicha opción, deberá solicitarle la clave de Administrador del Gabinete para realmente salir del programa, de no proporcionar la clave correcta, deberá regresar al menú de opciones.

Page 2: P9_DisenoModular

NOTA. El programa se realizará en equipo de dos integrantes.

a) Analizar el problema y distinguir los módulos necesariosb) Definir las conexiones entre módulos y los parámetros requeridos por cada uno, así como los valores

que cada módulo regresa (en su caso).c) Diseñar cada uno de los módulos, prestando atención a la convención de paso de parámetros y nombres

de módulos.d) Integrar los diferentes módulos para generar el programa ejecutable, verificar su funcionamientoe) Subir a la plataforma AulaCBI el paquete de diseño, paquete de los códigos que forman el

programa principal y el paquete de verificación de funcionamiento. Recuerden agregar en elmódulo correspondiente el nombre del autor. En el programa principal agreguen el nombre de ambos integrantes del equipo.

NOTA. Todos los códigos deberán comentarse (es indispensable que contengan el nombre y matrícula del autor) y entregar el código fuente SIN ERRORES.

Elaboró: Raquel Valdés

Apéndice A. Pasos para documentar el diseño de la solución algorítmica

Cada solución debe documentarse de la siguiente forma:i. Planteamiento del problema. Describe el problema con tus propias palabras (uno o

dos párrafos a lo mas),ii. Escribe en lenguaje natural los pasos para resolver el problema, describe con claridad

cuántas y cuáles son las variables y constantes necesarias para resolver el problema (describe si serán de entrada o salida y el tipo de dato que almacenarán).

iii. Escribe el pseudocódigo correspondiente a ii.iv. Realiza las pruebas de escritorio necesarias para garantizar el correcto

funcionamiento de iii.NOTA. Si la solución algorítmica requiere descomposición modular, incluir en la documentación de diseño el esquema de módulos, su jerarquía, la conexión entre ellos. El iii deberá incluir el pseudocódigo de CADA módulo propuesto.

Page 3: P9_DisenoModular

Programación Orientada a Objetos.Práctica 9. Diseño modular

Objetivos: Al terminar la práctica el alumno:

• Resolverá un problema complejo mediante el uso de la técnica de diseño modular.• Codificará algoritmos simples en lenguaje C.• Integrará módulos diseñados e implantados por otros programadores.• Compilará, ligará y ejecutará los códigos en C utilizados.• Interpretará mensajes de error del compilador y los corregirá.

Preparación.Revisar conceptos de descomposición modular, paso de parámetros,diseño de algoritmos, pseudocódigo, documentación de diseño e implementación, archivos, apuntadores y cadenas.

Actividades.

1. Resolver el problema planteado (ver Apéndice A para los detalles de la documentación de diseño):

Una etapa muy importante en el diseño de un monitor de frecuencia cardíaca es el procesamiento en “tiempo real” del registro de la actividad eléctrica del corazón o electrocardiograma (ECG). En la siguiente figura se muestra un trazo corto de un ECG y el nombre de las ondas que lo forman.

Adaptada de http://www.esacademic.com/pictures/eswiki/83/SinusRhythmLabels.svg

Un paso indispensable en la etapa de procesamiento es la “detección del complejo QRS”, en nuestro caso, esto se realizará aplicando al ECG digitalizado un conjunto de “filtros digitales” que tienen la siguiente descripción:

Filtro 1 Filtro 2 x rFiltro 3 y

s

Page 4: P9_DisenoModular

A continuación se muestran las ecuaciones de diferencias de cada filtro (adaptado de Pan, J., & Tompkins, W. J. (1985). A real-time QRS detection algorithm.Biomedical Engineering, IEEE Transactions on, (3), 230-236. ):

r [n]=x [n]−2 x [n−6]+x [n−12] (Filtro 1, filtra ondas P y T)

s [n]=−r [n−2]−2 r [n−1]+2 r [n+1]+r [n+2]

8(Filtro 2, aproxima derivada)

y [n]=(s[n])2 (Filtro 3, eleva al cuadrado)

Sean:

x : colección de muestras de ECG registradasy : colección de muestras de ECG de salida después del proceso de filtradox[n] : es la n-ésima muestra del ECG de entradar[n] : es la n-ésima muestra de la salida del Filtro 1 y será la entrada al Filtro 2s[n] : es la n-ésima muestra de la salida del Filtro 2 y será la entrada al Filtro 3y[n-1] : es la muestra (n-1)-ésima de salida (una muestra anterior a y[n]) del Filtro 3

El último paso de la detección consiste en la siguiente evaluación:

QRS [n]={01 si y [n]<0.6si y [n]⩾0.6}Es necesario generar un programa que lea un archivo con un registro de ECG, aplique los tres filtros proporcionados y pregunte al usuario si desea ver los resultados en pantalla o si prefiere que se escriba un nuevo archivo con la señal filtrada o ambas opciones (pantalla y archivo).

Después de filtrar una señal y mostrarla o grabarla en un archivo, el programa deberá preguntar si el usuario desea leer otro registro y procesarlo o si desea terminar el programa.

Consideraciones:• Los archivos de lectura y escritura están en formato .csv• El primer entero guardado en los archivos contiene un número con la cantidad de datos almacenados en

el archivo. Los datos restantes están guardados en formato: “%f,%f\n” donde el primer dato es el instante de tiempo (en s) y el segundo dato es la amplitud de la señal (en mV).

• El usuario debe proporcionar los nombres de los archivos.

NOTA. El programa se realizará en equipo de dos o tres integrantes.

a) Analizar el problema y distinguir los módulos necesariosb) Definir las conexiones entre módulos y los parámetros requeridos por cada uno, así como los valores

que cada módulo regresa (en su caso).c) Diseñar cada uno de los módulos, prestando atención a la convención de paso de parámetros y nombres

de módulos.d) Integrar los diferentes módulos para generar el programa ejecutable, verificar su funcionamientoe) Subir a la plataforma AulaCBI el paquete de diseño, paquete de los códigos que forman el

programa principal y el paquete de verificación de funcionamiento. Recuerden agregar en elmódulo correspondiente el nombre del autor. En el programa principal agreguen el nombre de ambos integrantes del equipo.

Page 5: P9_DisenoModular

NOTA. Todos los códigos deberán comentarse (es indispensable que contengan el nombre y matrícula del autor) y entregar el código fuente SIN ERRORES.

Elaboró: Raquel Valdés

Apéndice A. Pasos para documentar el diseño de la solución algorítmica

Cada solución debe documentarse de la siguiente forma:i. Planteamiento del problema. Describe el problema con tus propias palabras (uno o

dos párrafos a lo mas),ii. Escribe en lenguaje natural los pasos para resolver el problema, describe con claridad

cuántas y cuáles son las variables y constantes necesarias para resolver el problema (describe si serán de entrada o salida y el tipo de dato que almacenarán).

iii. Escribe el pseudocódigo correspondiente a ii.iv. Realiza las pruebas de escritorio necesarias para garantizar el correcto

funcionamiento de iii.NOTA. Si la solución algorítmica requiere descomposición modular, incluir en la documentación de diseño el esquema de módulos, su jerarquía, la conexión entre ellos. El iii deberá incluir el pseudocódigo de CADA módulo propuesto.