Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas



Documentos relacionados
Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Programación 1 Tema 7. Desarrollo modular y descendente de programas

Examen escrito de Programación 1

Programación 1. Tema II. Diseño de los primeros programas. Lección 4. Diseño de algunos programas elementales

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programación 1 Tema 4. Diseño de programas elementales

Tema: Arreglos de Objetos en C++.

Capítulo 6. Introducción a la POO

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programación 1 Tema 3. Información, datos, operaciones y expresiones

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 1. Problemas de tratamiento de información, algoritmos y programas

Práctica 8: Barreras

Programación 1 Problemas del Composición condicional

Programación 1 Problemas 3. Composición condicional

Examen escrito de Programación 1

Informática FACULTAD DE FÍSICAS

Fundamentos de Programción (I)

Tema: Sobrecarga de Operadores.

Prof. Dr. Paul Bustamante

Curso 0 de Informática

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

ALMACENAMIENTO PERSISTENTE DE DATOS

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso Notas. Ejemplo. La herramienta make. 1 Diseño modular.

Bloque 4. La descomposición funcional y el diseño descendente

// el módulo tiempo // el módulo subtitulo // el módulo herramientas

Programación 2. Lección 4. Metodología de diseño de algoritmos recursivos

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Estructuras de repetición

Problema - Votación. Entrada. Salida. Primera Olimpiada de Informática 1

Examen de prácticas de Programación 1

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Tema 4: Estructuras de Control Estructura y Contenidos

Tema: Clases y Objetos en C++.

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Prof. Dr. Paul Bustamante

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

8.1 Un primer bucle FOR Varias formas de utilizar el bucle FOR Calcular el factorial de un número mediante un bucle FOR...

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Prof. Dr. Paul Bustamante

Programación 1 Tema II Clase de problemas. Diseño de programas elementales

Tema: Patrones de Diseño.

Introducción al tipo de dato ARRAY

Departamento de Lenguajes y Ciencias de la Computación. Contenido

Fundamentos de la Programación

Diseño de algoritmos.

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión );

Entrada y salida de datos en C y C++

Examen escrito de Programación 1

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Manual de usuario SMS112. Sección de Ayuda al Desarrollo. Sección de Ayuda al Desarrollo. FECHA: 10/01/2012 VERSIÓN: v 1.0

1. Juego del Ahorcado

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

Contenidos. Archivos en C++ Archivos en C++ Introducción

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Introducción al Dev-C++

Se guardan en archivos con extencion c y los cabezales con extension h

Manual de uso CREACIÓN DE PLANTILLAS DE CONCEPTOS

Prof. Dr. Paul Bustamante

7.- Seleccionando funciones friend o funciones miembro para sobrecarga de operadores.

Metodología de la Programación II. Recursividad

Examen escrito de Programación 1. Viernes 22 de enero de Problema 1 o (3.0 puntos) Problema 2 o (3.0 puntos)

Examen Principios de Programación Febrero 2012

Unidad 2 Recursividad. 2.1 Definición 2.2 Procedimientos Recursivos 2.3 Ejemplos de Casos Recursivos

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

11. Algunas clases estándar de Java (II)

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Programación 1 Tema 15. Trabajo con ficheros binarios

El concepto de función en programación se fundamenta en el concepto de función matemática 1

Fundamentos de la programación

Introducción a la programación orientada a objetos

void main(void) { string lname; list <string> lnamelist; cout << "Please enter your list of last names finishing with `.`"<<endl;

Pseudolenguaje. (1 byte) (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio n 1 [MIN(C)..

SOLUCION EXAMEN junio 2006

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

Tema: Herencia Simple y Múltiple en C++.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Unidad 2 Recursividad. 2.1 Definición 2.2 Procedimientos Recursivos 2.3 Ejemplos de Casos Recursivos

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO

Ejercicio 1 (3 puntos).-

Sistemas Operativos Práctica 3

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Programación 2. Lección 3. Introducción a la recursividad

TEMA 3. CLASES. EJERCICIOS

Sistemas Operativos Práctica 4

Programación 1. Tema V Clase de problemas. Desarrollo de un módulo de biblioteca C++ para trabajar con conjuntos de letras

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Diseño estructurado 3ª edición (2000)

Plantillas de clases ( Templates )

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Programación modular. Programación estructurada PROCEDIMIENTOS Y FUNCIONES

DCU Diagramas de casos de uso

UNIVERSIDAD POLITÉCNICA DE MADRID. Actividad 1. Manejo del entorno de desarrollo (IDE).

Transcripción:

Programación 1 Tema II. Diseño de programas elementales Lección 7. Diseño modular y descendente de programas 1

Objetivos de la lección : Aprender qué es un diseño modular de un programa Aprender a diseñar módulos de biblioteca en C++ Aprender a diseñar programas dirigidos por menú aplicando las ideas presentadas sobre diseño modular y diseño descendente 2

1. Un programa dirigido por menú MENU DE OPERACIONES =================== 0 Finalizar 1 Calcular el numero de cifras de un entero 2 Sumar las cifras de un entero 3 Extraer una cifra de un entero 4 Calcular la imagen especular de un entero 5 Comprobar si un entero es primo Seleccione una operacion [0 5]: 4 Escriba un numero entero : 8802361 El numero imagen especular del 8802361 es el 1632088... 3

... MENU DE OPERACIONES =================== 0 Finalizar 1 Calcular el numero de cifras de un entero 2 Sumar las cifras de un entero 3 Extraer una cifra de un entero 4 Calcular la imagen especular de un entero 5 Comprobar si un entero es primo Seleccione una operacion [0 5]: 5 Escriba un numero entero : 103 El número 103 es primo... 4

... MENU DE OPERACIONES =================== 0 Finalizar 1 Calcular el numero de cifras de un entero 2 Sumar las cifras de un entero 3 Extraer una cifra de un entero 4 Calcular la imagen especular de un entero 5 Comprobar si un entero es primo Seleccione una operacion [0 5]: 7 Operacion desconocida... 5

... MENU DE OPERACIONES =================== 0 Finalizar 1 Calcular el numero de cifras de un entero 2 Sumar las cifras de un entero 3 Extraer una cifra de un entero 4 Calcular la imagen especular de un entero 5 Comprobar si un entero es primo Seleccione una operacion [0 5]: 0 La ejecución del programa concluye al seleccionar la operación 0 6

2. Estructura modular del programa Un programa C++ puede constar de varios módulos: Módulo principal, y obligatorio, en el que se define, al menos, la función main(). Se almacena en un fichero con sufijo.cc o.cpp Módulos de biblioteca en los que se definen recursos puestos a disposición de otros módulos (tipos de datos, datos constantes y variables, funciones, etc.). La definición de uno de estos módulos consta de dos ficheros que almacenan: La interfaz del módulo: en él se declaran las especificaciones de los recursos visibles fuera del módulo. La especificación de una función se limita a tres elementos: el tipo del dato devuelto, su nombre y sus parámetros. La interfaz se almacena en un fichero de cabecera, un fichero con sufijo.h La implementación del módulo: contiene el código de las funciones visibles y, en su caso, elementos auxiliares no visibles u ocultos. Se almacena en un fichero con sufijo.cc o.cpp 7

El programa C++ a desarrollar se va a diseñar con una estructura modular aplicando una metodología descendente: Módulo principal en el fichero calculadoraenteros.cc, gestiona la interacción con el operador con un comportamiento iterativo: 1. Plantea el menú de opciones (operaciones disponibles) 2. Lee la opción seleccionada por el operador 3. Si la opción es diferente a 0 procede a ejecutarla y, tras ello, vuelve al punto 1; si la opción es 0 el programa no ejecuta ninguna instrucción adicional y, por lo tanto, termina Módulo de biblioteca calculos en el que se definen siete funciones que podrán ser visibles desde otros módulos. Realizan cálculos con enteros y analizan determinadas propiedades de los enteros: numcifras(n), sumacifras(n), cifra(n,i), imagen(n), factorial(n), esprimo(n) y mcd(a,b) Observación: no todas las funciones de este módulo van a ser utilizadas en este programa; la idea es que este módulo pueda ser reutilizado en otros programas que sí puedan hacer uso de ellas. 8

Diseño descendente del programa. Estructura del programa: #include <iostream> #include "calculos.h" /* Módulo de biblioteca */ using namespace std; /* Pre: * Post: Presenta el menú de opciones disponibles */ void presentarmenu () {... } /* Pre: * Post: Ejecuta las acciones asociadas a la orden */ void ejecutarorden (int operacion) {... } /* Plantea al operador de forma reiterada un menú con */ int main () {... } 9

Diseño descendente del programa. Primer nivel: /* * Plantea al operador de forma reiterada un menú con */ int main () { presentarmenu(); int operacion; cout << "Seleccione una operacion [0 5]: " << flush; cin >> operacion; while (operación!= 0) { ejecutarorden(operacion); presentarmenu(); cout << endl << "Seleccione una operacion [0 5]: " << flush; cin >> operacion; } } 10

Diseño descendente del programa. Segundo nivel: /* * Pre: * Post: Presenta el menú de opciones disponibles */ void presentarmenu () { cout << endl; cout << "MENU DE OPERACIONES" << endl; cout << "===================" << endl; cout << "0 Finalizar" << endl; cout << "1 Calcular el numero de cifras de un entero" << endl; cout << "2 Sumar las cifras de un entero" << endl; cout << "3 Extraer una cifra de un entero" << endl; cout << "4 Calcular la imagen especular de un entero" << endl; cout << "5 Comprobar si un entero es primo" << endl << endl; } 11

Diseño descendente del programa. Segundo nivel: /* * Pre: * Post: Ejecuta las acciones asociadas a la orden cuyo código es * [operacion] */ void ejecutarorden (int operacion) { if (operacion==1) { int numero; cout << "Escriba un numero entero : " << flush; cin >> numero; cout << "El numero " << numero << " tiene " << numcifras(numero) << " cifras" << endl; } else if (operación==2) { }... else if (operación==5) { } else { } } 12

Diseño descendente del programa. Tercer nivel: A este nivel están las funciones visibles del módulo de biblioteca calculos: /* Fichero calculos.h de interfaz del módulo */ /* * Pre: * Post: Devuelve el número de cifras de [n] cuando este número se * escribe en base 10 */ int numcifras (int n); /* * Pre: * Post: Devuelve la suma de las cifras de [n] cuando éste se * escribe en base 10 */ int sumacifras (int n);... 13

Diseño descendente del programa. Tercer nivel: A este nivel están las funciones visibles del módulo de biblioteca calculos: /* Fichero calculos.cc de implementación del módulo */ /* * Pre: * Post: Devuelve el número de cifras de [n] cuando este número se * escribe en base 10 */ int numcifras (int n) { int cuenta = 1; // número de cifras identificadas n = n/10; // elimina la cifra menos significativa while (n!=0) { cuenta = cuenta + 1; // número de cifras identificadas n = n / 10; // elimina la cifra menos significativa } return cuenta; }... 14

15