Programación 1 Tema 7. Desarrollo 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 II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programación 1 Tema 5. Instrucciones simples y estructuradas

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

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

Programación 1 Problemas 3. Composición condicional

Programación 1 Problemas del Composición condicional

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

Examen de prácticas de Programación 1

Examen escrito de Programación 1

Examen escrito de Programación 1

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

Examen escrito de Programación 1

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

Prof. Dr. Paul Bustamante

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

Ámbito y Funciones. Lenguaje de Programación Estructurado. Siempre imaginé el Paraíso como algún tipo de biblioteca.

Fundamentos de la programación

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

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

Introducción a C++ Índice

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

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

Programación 1 Tema 13. Entrada y salida de datos

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

Programación 1 Tema III Clase de problemas

Funciones: Pasos por Referencia Recursividad

ALMACENAMIENTO PERSISTENTE DE DATOS

Fundamentos de la programación

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

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

PROGRAMACIÓN ORIENTADA A OBJETOS

Programación 1. Tema III. Diseño de programas que trabajan con estructuras de datos. Lección 11. Estructuración agregada de datos

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

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Fundamentos de la programación

Prof. Dr. Paul Bustamante

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Cátedra I Informática Autor I Carlos Bartó

Parte 1. Input. Output. Input. Output

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Fundamentos de programación

Introduccion a C++ y Fortran 90/95

Laboratorio 4 Tema 6. Procedimientos: Acciones, Funciones y Pase de Parámetros

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

Funciones II. Fundamentos de Programación Fundamentos de Programación I

Programación 1 Tema 1. Problemas de tratamiento de información, algoritmos y programas

TEMA 5: Subprogramas, programación modular

Programación 1 Tema 1. Problemas de tratamiento de información, algoritmos y programas

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Funciones. Parámetros por valor

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

PROGRAMACIÓN ESTRUCTURADA

Tema: Plantillas en C++.

Programación 1 Tema III Clase de problemas. Diseño de algoritmos que extraen información de ficheros de texto (1)

Programación 1 Tema 2. Lenguaje de programación y ejecución de un programa

Programación 1 Desarrollo de proyectos de programación. Desarrollo de un módulo C++ de biblioteca para trabajar con conjuntos de letras

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

Temario. Tema 2. Tecnología de Desarrollo Software. 2.1 Excepciones en C Prueba y Depuración. 2.3 Documentación

Estructuras Enlazadas AyED UTN-BA

Cátedra I Informática Autor I Carlos Bartó

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Programación 1 Desarrollo de proyectos de programación. Desarrollo de un módulo C++ de biblioteca para trabajar con conjuntos de letras

Programación Orientada o Objetos

Clase 2: Tipos de Datos y Condiciones. Profesora de Cátedra: Jocelyn Simmonds

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda Trayecto II Desarrollo de Software

DISEÑO DESCENDENTE: SUBPROGRAMAS

Laboratorio de Informática GRADO EN FÍSICA

Plantillas (Templates)

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones.

Introducción a C++. Asignatura Estructuras de Datos Curso 2017/2018 ETSISI UPM

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

República Bolivariana de Venezuela Aldea Universitaria Fray Pedro de Agreda PNFSI. Introducción a lenguaje C++. Parte IV Ciclos iterativos

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)

Práctica 3: Diseño modular de programas escritos en C++ que trabajan con datos numéricos

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Macros LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO

Laboratorio de Informática GRADO EN FÍSICA

LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++

Entrada y salida de datos en C y C++

Tema: Repaso sobre uso de Funciones, Arreglos y Punteros en C++.

Introducción a los Computadores ITTELSI. Curso

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Programación 1 Tema 15. Trabajo con ficheros binarios

Subrutinas o Funciones

UTN FRBA Algoritmos y Estructura de Datos Examen Final 13/02/2015. Apellido y nombre: Legajo: Cursó con Prof:

Programación 1 Tema 11. Estructuración agregada de datos

Tipos de Datos Simples Contenido del Tema

Arboles Binarios de Búsqueda en C++

Programación de Ordenadores

Programación 1 Tema 15. Trabajo con ficheros binarios

Unidad IV: Funciones

Lista de Cotejo. Práctica # 21 Calculo de Volumen de Figuras Geométricas

Transcripción:

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

Índice Programas dirigidos por menú Diseño modular Módulos de biblioteca en C++

Programa dirigido por menú MENÚ DE OPERACIONES =================== 0 - Finalizar 1 - Calcular el número 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 operación [0-5]: 4 Escriba un número entero: 8802361 El número imagen especular del 8802361 es el 1632088...

Programa dirigido por menú... MENÚ DE OPERACIONES =================== 0 - Finalizar 1 - Calcular el número 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 operación [0-5]: 5 Escriba un número entero : 103 El número 103 es primo...

Programa dirigido por menú... MENÚ DE OPERACIONES =================== 0 - Finalizar 1 - Calcular el número 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 operación [0-5]: 7 Opción desconocida...

Programa dirigido por menú... MENÚ DE OPERACIONES =================== 0 - Finalizar 1 - Calcular el número 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 operación [0-5]: 0

Estructura modular Programas grandes Descomposición en módulos Permiten desarrollo independiente (no necesariamente por un único programador) Módulo de programa Contiene el código de la función principal del programa Módulos de biblioteca Módulos adicionales en los que se puede dividir un programa y con los que puede contar

Estructura modular en C++ Módulo principal obligatorio Se define en él, al menos, la función main Se almacena en un fichero con sufijo.cc o.cpp Módulos de biblioteca Definen recursos puestos a disposición de otros módulos Tipos de datos Datos constantes [y variables] Funciones Constan de dos ficheros: Interfaz del módulo Declaraciones y especificaciones de los recursos visibles fuera del módulo Se almacena en un fichero de cabecera, un fichero con sufijo.h Implementación del módulo Código de las funciones declaradas en la interfaz Elementos auxiliares Se almacena en un fichero con sufijo.cc o.cpp

Programa del ejemplo Diseño con una estructura modular aplicando una metodología descendente: Módulo principal Fichero calculadoraenteros.cc Gestiona la interacción con el operador con un comportamiento iterativo: Plantea el menú de opciones (operaciones disponibles) Lee la opción seleccionada por el operador Ejecuta la orden correspondiente a la opción elejida por el operador Módulo de biblioteca calculos Define siete funciones que realizan cálculos y análisis de propiedades de enteros

Programa del ejemplo Módulo de biblioteca calculos Define siete funciones que realizan cálculos y análisis de propiedades de enteros int numcifras(int n) int sumacifras(int n) int cifa(int n, int i) int imagen(int n) int factorial(int n) bool esprimo(int n) int mcd(int a, int b) Compuesto por dos ficheros Interfaz del módulo: fichero de cabecera calculos.h Implementación del módulo: fichero calculos.cc

Diseño descendente. Estructura del módulo principal #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 () {...}

Diseño descendente. Módulo principal. Primer nivel /* Pre: --- // Post: Ha planteado al operador de forma int main () { presentarmenu(); int operacion; cout << "Seleccione una operación [0-5]: " << flush; cin >> operacion; while (operacion!= 0) { ejecutarorden(operacion); presentarmenu(); cout << endl << "Seleccione una operación [0-5]: " << flush; cin >> operacion; } return 0; }

Diseño descendente. Módulo principal. 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; }

Diseño descendente. Módulo principal. Segundo nivel /* * Pre: --- * Post: Ejecuta las acciones asociadas a la orden cuyo código es * «operacion». */ void ejecutarorden (int operacion) { if (operacion == 1) { cout << "Escriba un numero entero : " << flush; int numero; cin >> numero; cout << "El número " << numero << " tiene " << numcifras(numero) << " cifras" << endl; } else if (operacion == 2) {... }... else if (operacion == 5) {... } else {... } }

Diseño descendente. Tercer nivel. Módulo calculos. Interfaz /** * Pre: --- * Post: Ha devuelto el número de cifras de «n» cuando este * número se escribe en base 10. */ int numcifras(int n); /** * Pre: --- * Post: Ha devuelto la suma de las cifras de «n» cuando «n» se * escribe en base 10. */ int sumacifras(int n);...

Diseño descendente. Tercer nivel. Módulo calculos. Implementación #include "calculos.h" /** * Pre: --- * Post: Ha devuelto el número de cifras de «n» cuando este número se * escribe en base 10. */ int numcifras(int n) { int cuenta = 1; n = n / 10; while (n!= 0) { cuenta++; n = n / 10; } return cuenta; } /** * Pre: --- * Post: Ha devuelto la suma de las cifras de «n» cuando «n» se escribe * en base 10. */ int sumacifras(int n) {... }

Diseño modular del programa Módulo principal calculadoraenteros.cc #include <iostream> #include "calculos.h" void presentarmenu () { } void ejecutarorden (int operacion) { } int main () { } Módulo calculos calculos.h int numcifras (int n); int sumacifras (int n); int cifra (int n, int i); int imagen (int n); int factorial (int n); bool esprimo (int n); int mcd (int a, int b); calculos.cc #include "calculos.h int numcifras (int n) { } int sumacifras (int n) { } int cifra (int n, int i) { } int imagen (int n) { } int factorial (int n) { } bool esprimo (int n) { } int mcd (int a, int b) { }

calculos.h Compilación modular calculadoraenteros.cc #include <iostream> #include "calculos.h" void presentarmenu () { } void ejecutarorden (int operacion) { } int main () { } int numcifras (int n); int sumacifras (int n); int cifra (int n, int i); int imagen (int n); int factorial (int n); bool esprimo (int n); int mcd (int a, int b); calculos.cc #include "calculos.h int numcifras (int n) { } int sumacifras (int n) { } int cifra (int n, int i) { } int imagen (int n) { } int factorial (int n) { } bool esprimo (int n) { } int mcd (int a, int b) { }

calculos.h Compilación modular calculadoraenteros.cc #include <iostream> #include "calculos.h" void presentarmenu () { } void ejecutarorden (int operacion) { } int main () { } int numcifras (int n); int sumacifras (int n); int cifra (int n, int i); int imagen (int n); int factorial (int n); bool esprimo (int n); int mcd (int a, int b); calculos.cc #include "calculos.h int numcifras (int n) { } int sumacifras (int n) { } int cifra (int n, int i) { } int imagen (int n) { } int factorial (int n) { } bool esprimo (int n) { } int mcd (int a, int b) { } calculos.o numcifras: 10001011101 sumacifras: 1110100101 cifra: 110100010010111 imagen: 10001011101 factorial: 01110100101 esprimo: 101101010111 mcd: 10001011101

calculos.h Compilación modular iostream #include <bits/c++config.h> #include <ostream> #include <istream> istream cin; ostream cout; calculadoraenteros.cc #include <iostream> #include "calculos.h" void presentarmenu () { } void ejecutarorden (int operacion) { } int main () { } calculadoraenteros.o presentarmenu: 10001011101 ejectutarorden: 01110100101 main: 10110100010010111 Falta código de: numcifras, sumacifras, cifra, imagen, factorial, esprimo, mcd, cin, cout, endl, flush, >>, << int numcifras (int n); int sumacifras (int n); int cifra (int n, int i); int imagen (int n); int factorial (int n); bool esprimo (int n); int mcd (int a, int b); calculos.cc #include "calculos.h int numcifras (int n) { } int sumacifras (int n) { } int cifra (int n, int i) { } int imagen (int n) { } int factorial (int n) { } bool esprimo (int n) { } int mcd (int a, int b) { } calculos.o numcifras: 10001011101 sumacifras: 1110100101 cifra: 110100010010111 imagen: 10001011101 factorial: 01110100101 esprimo: 101101010111 mcd: 10001011101

calculos.h Compilación modular iostream #include <bits/c++config.h> #include <ostream> #include <istream> istream cin; ostream cout; libstdc++.a 100010111011110100 101110100010010111 1000101110101110 calculadoraenteros.cc #include <iostream> #include "calculos.h" void presentarmenu () { } void ejecutarorden (int operacion) { } int main () { } calculadoraenteros.o presentarmenu: 10001011101 ejectutarorden: 01110100101 main: 10110100010010111 Falta código de: numcifras, sumacifras, cifra, imagen, factorial, esprimo, mcd, cin, cout, endl, flush, >>, << calculadoraenteros.exe MZ100010111011110100101 110100010010111100010111 0101110100101101101010 int numcifras (int n); int sumacifras (int n); int cifra (int n, int i); int imagen (int n); int factorial (int n); bool esprimo (int n); int mcd (int a, int b); calculos.cc #include "calculos.h int numcifras (int n) { } int sumacifras (int n) { } int cifra (int n, int i) { } int imagen (int n) { } int factorial (int n) { } bool esprimo (int n) { } int mcd (int a, int b) { } calculos.o numcifras: 10001011101 sumacifras: 1110100101 cifra: 110100010010111 imagen: 10001011101 factorial: 01110100101 esprimo: 101101010111 mcd: 10001011101