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

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

Examen escrito de Programación 1

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

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

ALMACENAMIENTO PERSISTENTE DE DATOS

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

Hoja de ejercicios del Tema 3

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

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

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

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

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

Funciones. Parámetros por valor

Prof. Dr. Paul Bustamante

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

Examen Principios de Programación Febrero 2012

Metodología de la Programación II. Recursividad

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

Entrada y salida de datos en C y C++

Introducción al tipo de dato ARRAY

Programación I. Contenido. Relación de Ejercicios Sonido e Imagen

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

1 Estructura básica de un programa C++

Prof. Dr. Paul Bustamante

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

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

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Tema: Punteros a Objetos. Puntero this.

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

Elementos de un programa en C

Programación en C++/Funciones

Tema 5: Herramientas de programación y diseño modular

Tema: Clases y Objetos en C++.

Prof. Dr. Paul Bustamante

Curso 0 de Informática

Tema: Arreglos de Objetos en C++.

SEGUNDO PARCIAL INFORMATICA II

Capítulo 6. Introducción a la POO

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

INTRODUCCIÓN AL LENGUAJE C++

Librerías estándar en C++ STL: Standard Template Library. Álvaro Sánchez Miralles José Porras (Fidel Fernández)

CURSO 2º GRUPO Junio 2011

Programación 2. Pruebas para la evaluación voluntaria de la asignatura. Grado en Ingeniería Informática. Curso

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

Problema - Sumando Digitos

Informática FACULTAD DE FÍSICAS

Introducción al laboratorio de Programación I

AMBITO DE VARIABLES EN C. GLOBALES Y LOCALES. UNDECLARED (FIRST USE IN THIS FUNCTION). EJEMPLOS (CU00548F)

FUNDAMENTOS BÁSICOS DE PROGRAMACIÓN EN C++

Introducción a C++ y Code::Blocks

LENGUAJE. Tema 1 - Introducción

Programación Avanzada

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

Práctica 8: Barreras

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

8. Diseña una función que muestre el calendario para un mes en el siguiente formato: Lunes Martes Miércoles Jueves Viernes Sábado Domingo

Programación 2. Grado en Estadística Aplicada. Curso Generación de números pseudoaleatorios. Manejo de ficheros de texto.

Tema: Sobrecarga de Operadores.

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

Fundamentos de Programación con el Lenguaje de Programación C++

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

GUÍA DE ESTILO EN JAVA

Índice de contenido. Herramientas necesarias...2 Tipos de Variable...3 Operadores...6 Sentencias...12

Tutorial de C++ o el diario de Peter Class. Peter Class Pello Xabier Altadill Izura

Programación. Test Autoevaluación Tema 3

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

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

8. Sentencia return y métodos

Ejercicios propuestos de. Programación orientada a objetos. con C++ Cristina Cachero Pedro J. Ponce de León

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

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Prof. Dr. Paul Bustamante

Tema 7.- Fundamentos de la Programación Orientada a Objetos

15. Parámetros o argumentos

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Capítulo 1. Introducción al C Mi primer programa

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

Apuntadores en C y C++

Programación básica C++

Tema 6. Gestión dinámica de memoria

Tema 4: Estructuras de Control Estructura y Contenidos

Programación en C+ +/ Funciones

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

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

Introducción a los Computadores

Impresión por pantalla

RELACIÓN DE EJERCICIOS. Tema 3: Introducción al Lenguaje C

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Estructuras de repetición hacer-mientras y repita hasta

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida

ESTRUCTURAS REPETITIVAS

MANUAL DE RUBY (PARTE I) Luis José Sánchez González

Estructuras de repetición

Las clases como tipos de datos definidos por el usuario

Definición y Conversión de datos. Agustín J. González ELO-329

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Programación Orientada a Objetos Manual de Ejercicios en Clase

Resolución de problemas mediante algoritmos

TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR: Estructuras CONTENIDOS

Transcripción:

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

Índice Estructuración de programas Metodología de programación descendente Ámbito y vida Comunicación entre funciones

Índice Estructuración de programas Metodología de programación descendente Ámbito y vida Comunicación entre funciones

Qué tabla desea escribir? (0 para acabar): 7 LA TABLA DEL 7 7 x 0 = 0 Ejemplo 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70 Qué tabla desea escribir? (0 para acabar): 6 LA TABLA DEL 6 6 x 0 = 0 6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 6 x 7 = 42 6 x 8 = 48 6 x 9 = 54 6 x 10 = 60 Qué tabla desea escribir? (0 para acabar): 0

Qué tabla desea escribir? (0 para acabar): 7 LA TABLA DEL 7 7 x 0 = 0 Ejemplo 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70 Qué tabla desea escribir? (0 para acabar): 6 LA TABLA DEL 6 6 x 0 = 0 6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 6 x 7 = 42 6 x 8 = 48 6 x 9 = 54 6 x 10 = 60 Qué tabla desea escribir? (0 para acabar): 0

Función main /* * Pre: --- * Post: Ha preguntado reiteradamente al operador qué * tabla de multiplicar desea escribir y la ha * escrito a continuación, salvo cuando su * respuesta ha sido un 0, en cuyo caso el programa * ha terminado. */ int main() {

Función main int main() { // Plantea la primera pregunta al operador cout << " Qué tabla desea escribir (0 para acabar)?: " << flush; // Asigna a «multiplicando» el primer entero escrito por el operador int multiplicando; cin >> multiplicando; // Itera hasta que el operador responda con un valor nulo while (multiplicando!= 0) { // Escribe la tabla de multiplicar de «multiplicando» presentartabla(multiplicando); // Plantea una nueva pregunta al operador cout << " Qué tabla desea escribir (0 para acabar)?: " << flush; // Asigna a «multiplicando» el nuevo valor escrito por el operador cin >> multiplicando; return 0;

Qué tabla desea escribir? (0 para acabar): 7 LA TABLA DEL 7 7 x 0 = 0 Ejemplo 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70 Qué tabla desea escribir? (0 para acabar): 6 LA TABLA DEL 6 6 x 0 = 0 6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 6 x 7 = 42 6 x 8 = 48 6 x 9 = 54 6 x 10 = 60 Qué tabla desea escribir? (0 para acabar): 0

Función presentartabla LA TABLA DEL 7 7 x 0 = 0 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70

Función presentartabla /* * Pre: --- * Post: Ha presentado en la pantalla la tabla de multiplicar del «n» * * LA TABLA DEL n * n x 0 = 0 * n x 1 = n * n x 2 =... *... * n x 9 =... * n x 10 =... */ void presentartabla(int n) {

Función presentartabla void presentartabla(int n) { cout << endl; cout << "LA TABLA DEL " << n << endl; cout << setw(3) << n << " x 0 = 0" << endl; cout << setw(3) << n << " x 1 = " << setw(3) << n << endl; cout << setw(3) << n << " x 2 = " << setw(3) << n * 2 << endl; cout << setw(3) << n << " x 3 = " << setw(3) << n * 3 << endl; cout << setw(3) << n << " x 4 = " << setw(3) << n * 4 << endl; cout << setw(3) << n << " x 5 = " << setw(3) << n * 5 << endl; cout << setw(3) << n << " x 6 = " << setw(3) << n * 6 << endl; cout << setw(3) << n << " x 7 = " << setw(3) << n * 7 << endl; cout << setw(3) << n << " x 8 = " << setw(3) << n * 8 << endl; cout << setw(3) << n << " x 9 = " << setw(3) << n * 9 << endl; cout << setw(3) << n << " x 10 = " << setw(3) << n * 10 << endl;

Función presentartabla void presentartabla(int n) { // Escribe la cabecera de la tabla de multiplicar del «n» cout << endl; cout << "LA TABLA DEL " << n << endl; // Escribe las 11 líneas de la tabla de multiplicar del «n» for (int i = 0; i <= 10; i++) { cout << setw(3) << n << " x " << setw(2) << i << " = " << setw(3) << n * i << endl;

Programa completo /* * Autores: Miguel Ángel Latre y Javier Martínez * Última revisión: 20 de marzo de 2014 * Resumen: Programa interactivo que presenta por pantalla las tablas de * multiplicar seleccionadas por el operador */ #include <iostream> #include <iomanip> using namespace std; /* Pre: / Post: */ void presentartabla(int n) { /* Pre: / Post: */ int main() {

Índice Estructuración de programas Ámbito y vida Comunicación entre funciones

Ámbito y vida Elemento: función, constante, variable, parámetro, nombrados con un identificador Ámbito o visibilidad (scope): zona del código en la que un elemento es accesible (se puede hacer uso de él). Ámbito local de los elementos definidos dentro de un bloque o función: Desde el punto en que se definen hasta el final del bloque o función. Ámbito global de los elementos definidos en el fichero fuera de las funciones: Desde el punto en que se han definido hasta el final del fichero. Duración o vida (lifetime) de un elemento Tiempo en el que el elemento está disponible durante la ejecución del programa.

#include <iostream> #include <iomanip> using namespace std; const int FIN = 0; prefijo std FIN presentartabla main n i multiplicando void presentartabla(int n) { cout << endl; cout << "LA TABLA DEL " << n << endl; for (int i = 0; i <= 10; i++) { cout << setw(3) << n << " x " << setw(2) << i << " = " << setw(3) << n * i << endl; int main() { cout << " Qué tabla desea escribir?: " int multiplicando; cin >> multiplicando; while (multiplicando!= FIN) { presentartabla(multiplicando); cout << endl << " Qué tabla desea cin >> multiplicando; return 0;

Ámbito. Ejemplo #include <iostream> using namespace std; int fechaamerica = 1492; prefijo std fechaamerica mostrarfechas main fechaluna void mostrarfechas () { int fechaluna = 1969; cout << "América fue descubierta en " << fechaamerica << " y el hombre llegó a la Luna en " << fechaluna << endl; int main() { mostrarfechas(); return 0;

Ámbito. Ejemplo de enmascaramiento #include <iostream> using namespace std; int fecha = 1492; void mostrarfechas() { int fecha = 1969; cout << "América fue descubierta en " <<????? << " y el hombre llegó a la Luna en " <<????? << endl; int main() { mostrarfechas(); return 0;

Ámbito. Ejemplo de enmascaramiento #include <iostream> using namespace std; int fecha = 1492; void mostrarfechas() { int fecha = 1969; cout << "América fue descubierta en " <<????? << " y el hombre llegó a la Luna en " <<????? << endl; prefijo std fecha mostrarfechas main fecha int main() { mostrarfechas(); return 0;

Ámbito. Ejemplo de enmascaramiento #include <iostream> using namespace std; int fecha = 1492; void mostrarfechas() { int fecha = 1969; cout << "América fue descubierta en " << ::fecha << " y el hombre llegó a la Luna en " << fecha << endl; int main() { mostrarfechas(); return 0;

Espacios de nombres namespace guignote { enum Palo { OROS, COPAS, ESPADAS, BASTOS ; enum Valor { DOS, CUATRO, CINCO, SEIS, SITE, CABALLO, SOTA, REY, TRES, AS ; struct Carta { Palo palo; Valor valor; ; bool puedematar(carta carta, Carta mesa, Palo triunfo); int contarpuntos(carta bazas[]);

Índice Estructuración de programas Ámbito y vida Comunicación entre funciones

Comunicación entre funciones Parámetros por valor Parámetros por referencia Valor devuelto Variables globales

Comunicación entre funciones Parámetros por valor Parámetros por referencia Valor devuelto Variables globales PROHIBIDAS EN ESTE CURSO!

Diseño de un programa Escriba los extremos de un intervalo entero [a, b] siendo a <= b: 100 150 Los enteros del intervalo [100, 150] suman 6375

Comunicación de datos mediante variables globales #include <iostream> using namespace std; int desde, hasta; // datos globales: extremos del un intervalo /* Pre: Post: */ int sumardatos () { /* Pre: Post: */ void mostrarresultado () { /* Pre: Post: */ int main() {

Comunicación de datos mediante variables globales #include <iostream> using namespace std; int desde, hasta; // datos globales: extremos del un intervalo... /* * Pre: -- * Post: Pide al operador que defina los extremos de un intervalo entero y * ordena presentar por pantalla el valor de la suma de todos los * enteros de dicho intervalo */ int main() { cout << "Escriba los extremos de un intervalo entero [a, b] siendo a <= b: " << flush; cin >> desde >> hasta; mostrarresultado(); return 0;

Comunicación de datos mediante variables globales #include <iostream> using namespace std; int desde, hasta;... // datos globales: extremos del un intervalo /* * Pre: desde <= hasta * Post: Infoma por pantalla de la suma de los datos del intervalo * entero [desde, hasta] del siguiente modo, por ejemplo: * Los enteros del intervalo [100, 150] suman 6375 */ void mostrarresultado() { cout << "Los enteros del intervalo [" << desde << ", " << hasta << "] suman " << sumardatos() << endl;...

Comunicación de datos mediante variables globales #include <iostream> using namespace std; int desde, hasta; // datos globales: extremos del un intervalo /* * Pre: desde <= hasta * Post: Devuelve la suma de los datos del intervalo entero * [desde, hasta] */ int sumardatos() { return (desde + hasta) * (hasta desde + 1) / 2;...

Problemas del uso de variables globales Diseño dependiente del nombre de las variables globales Reducción de la capacidad de reutilización del código Efectos laterales debidos a la posibilidad de modificación de sus valores desde cualquier parte del código Reducción de la legibilidad de las funciones

Comunicación mediante parámetros por valor #include <iostream> using namespace std; /* Pre: * Post: */ int sumardatos(int desde, int hasta) { /* Pre: * Post: */ void mostrarresultado(int principio, int fin) { /* Pre: * Post: */ int main() {

Comunicación mediante parámetros por valor /* * Pre: --- * Post: Pide al operador que defina los extremos de un intervalo entero * y ordena presentar por pantalla el valor de la suma de todos * los enteros de dicho intervalo */ int main() { cout << "Escriba los extremos de un intervalo entero [a, b] " << "siendo a <= b: " << flush; int minimo, maximo; cin >> minimo >> maximo; mostrarresultado(minimo, maximo); return 0;

Comunicación mediante parámetros por valor /* * Pre: principio <= fin * Post: Informa por pantalla de la suma de los datos del * intervalo entero [principio, fin] del siguiente modo. * Ejemplo: * Los enteros del intervalo [100,150] suman 6375 */ void mostrarresultado (int principio, int fin) { cout << "Los enteros del intervalo [" << principio << "," << fin << "] suman " << sumadatos(principio, fin) << endl;

Comunicación mediante parámetros por valor /* * Pre: desde <= hasta * Post: Devuelve la suma de los datos comprendidos en el * intervalo entero [desde, hasta] */ int sumadatos(int desde, int hasta) { return (desde + hasta) * (hasta desde + 1) / 2;

Otro problema distinto int a, b;... // Si ahora: a = X y b = Y intercambiar(a, b); // entonces ahora: a = Y y b = X

Comunicación por valor. Solución errónea 1 /* * Pre: uno = X 0 y otro = Y 0 * Post: uno = Y 0 y otro = X 0 */ void intercambiar(int uno, int otro) { uno = otro; otro = uno;

Comunicación por valor. Solución errónea 2 /* * Pre: uno = X 0 y otro = Y 0 * Post: uno = Y 0 y otro = X 0 */ void intercambiar(int uno, int otro) { int aux = uno; uno = otro; otro = aux;

Comunicación mediante parámetros por referencia /* * Pre: uno = X 0 y otro = Y 0 * Post: uno = Y 0 y otro = X 0 */ void intercambiar(int& uno, int& otro) { int aux = uno; uno = otro; otro = aux;

Comunicación mediante parámetros por referencia /* * Pre: a = X y b = Y * Post: «a» almacena el menor de los valores {X, Y y «b» almacena el mayor de * los valores {X, Y */ void ordenar(int& a, int& b) { if (a > b) { intercambiar(a,b); /* * Pre: a = X, b = Y y c = Z * Post: «a» almacena el menor de los valores {X, Y, Z, «c» almacena el mayor de * los valores {X, Y, Z y «b» almacena el valor intermedio de {X, Y, Z */ void ordenar(int& a, int& b, int& c) { ordenar(a, b); ordenar(b, c); ordenar(a, b);

Comunicación mediante parámetros por referencia /* * Pre: --- * Post: Asigna a los parámetros «nombre», «nacimiento», «estatura» y «peso» los * valores determinados por el operador como respuesta a cuatro preguntas * que le son formuladas acerca de su nombre, su año de nacimiento, su * estatura y su peso. */ void preguntar (string& nombre, int& nacimiento, double& estatura, double& peso) { cout << "Su nombre: " << flush; // 1ª pregunta cin >> nombre; // lee la respuesta cout << "Su anyo de nacimiento: " << flush; // 2ª pregunta cin >> nacimiento; // lee la respuesta cout << "Su estatura: " << flush; // 3ª pregunta cin >> estatura; // lee la respuesta cout << "Su peso: " << flush; // 4ª pregunta cin >> peso; // lee la respuesta

Índice Estructuración de programas Ámbito y vida Comunicación entre funciones