Práctica 1 Pasa la calculadora

Documentos relacionados
Prof. Dr. Paul Bustamante

Práctica 1 El juego de los chinos

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

Servicio de Informática y Comunicaciones Área de Aplicaciones Corporativas

PROGRAMACIÓN EN VISUAL BASIC Ejercicios sin resolver

Manual para importar ficheros CSV en la aplicación de Comunicación de pagos

EVALUACIÓN DE DIAGNÓSTICO GUÍA PARA LA APLICACIÓN ON LINE

Manual de Mensajes Recibidos Swift

Fundamentos de la programación 2014/2015 (Grupos F y G) Práctica Fecha de entrega: 29 de marzo (a las 23:55)

TUTORIAL PARA CREAR UNA PHPWEBQUEST

Ficha Técnica Modulo de Registro de Determinación y Control de Participación del Estado

Manual del Usuario de Microsoft Access Consultas - Página 1. Tema IV: Consultas. IV.1. Creación de Consultas

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Pago a Proveedores. (Instructivo)

Práctica 2: Simón dice

SISTEMA DE INFORMACIÓN DE MEDIDAS ELÉCTRICAS

Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)

4.2 COMBINAR CORRESPONDENCIA UTILIZANDO OTROS ORÍ-

7 Suscribirse a las nuevas notificaciones de convocatorias

Iniciación a Microsoft Excel. Definición y descripción de una hoja de cálculo

Manual de Usuario Patente de operacio n turística

GUÍA DATA ENTRY, CÓMO CREAR UN ARCHIVO DE AFILIACIÓN DE BENEFICIARIOS PAGO DE NÓMINA DE FORMA MANUAL Y EXPLICACION DE LA ESTRUCTURA TXT.

Compra de mercaderías al exterior

NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS SERVICIOS DE FARMACIA/OFICINAS DE FARMACIA GUÍA PARA LA PRESENTACIÓN DE NOTIFICACIONES

SIEC 1.0. Sistema de Información y Estadística de Capacitación. Manual de Usuario

GUIA PRACTICA PARA LA APLICACIÓN DE MS EXCEL TECNOLOGIA/ INFORMATICA

Organización de los contenidos en Joomla!

1. INICIO. Figura 1: Inicio a la aplicación.

Manual de Usuario Billete Móvil NFC de la EMT de Málaga

Uso de centinelas para la toma de decisiones. Esquemas y diagramas de flujo. Ejemplos resueltos. (CU00167A)

MANUAL LOTTERY V2. Figura 1: Web ubicación archivo ejecutable

PERIODO 2 SOFTWARE MANEJADOR DE BASE DE DATOS CONCEPTOS BASICOS DE MICROSOFT ACCESS

TX52_ESPAÑOL TX52 MANUAL DE USUARIO. hh.mm

DaVinciTEXTIL. Codificación de artículos

Contraloría General del Estado WEB CONTROLEG. Manual de Usuario. Versión 1.0. Saal Systems

CURSO DE COMPUTACIÓN A2 ADMINISTRATIVO MÓDULO CONFIGURABLE

Manual del Administrado

Despega Recarga. MANUAL DE USUARIO Cómo realizar una recarga?

Introducción a las sentencias de control

MECANISMOS DE CONTROL INCLUIDOS EN SEVEN STARS

MANUAL DE POSTULACIÓN EN LÍNEA PROGRAMA DE MOVILIDAD ESTUDIANTIL ESTUDIOS PARCIALES EN EL EXTRANJERO

EJERCICIOS RESUELTOS. EJEMPLOS CON NÚMEROS ALEATORIOS EN JAVA. RANDOM NEXTINT, NEXTDOUBLE, ETC. (CU00909C)

Adaptador Inalámbrico Altas Prestaciones

EJERCICIOS MANEJO DE ESTRUCTURAS BÁSICAS SCRIPTS

PASO A PASO DE REGISTRO AL EXAMEN SABER 11 DE MANERA INDIVIDUAL

Programación I. Práctica parcial: el juego de los barquitos (ENTREGA OBLIGATORIA)

OPA Guía de usuario. Cita Previa por Internet GUÍA DE USUARIO. Consejo Sanitario 1

Manual de ayuda para la Gestión de las Convocatorias de Ayudas y Becas de Libros de texto y Material didáctico

Práctica 1: Introducción a SPSS 1

Arrancar el programa por primera vez Data Recorder V3.

Configuración de módulos con Joomla: orden, acceso, asignación. Ejemplo con un menú. (CU00416A)

El Sistema la informará el saldo de su cuenta. Al oprimir la tecla Acepta el sistema vuelve al menú de la aplicación.

PRUEBAS SELECTIVAS ANALISTA INFORMÁTICO TURNO DE ACCESO LIBRE SEGUNDO EJERCICIO DE LA PRIMERA FASE (VERSIÓN CASTELLANO)

INSTRUCCIONES PARA LA CLAVE DE ACTIVACIÓN DE LA DRM WIP NAV PLUS / CONNECT NAV PLUS (RT6)

Guía de ayuda. Versión 1.4

CAPITULO III: METODOLOGIA. En el presente capítulo se describirá el conjunto de pasos a seguir para lograr el

CONTASIS SAC. MANUAL DE USUARIO

Ejercicios 3A. 2. Implemente un programa que, dados los tres vértices de un triángulo, calcule el área del mismo. Puede aplicar la siguiente fórmula:

Obtención de números aleatorios

En el panel aparece el botón desplegable Agregar efecto donde seleccionamos el tipo de efecto que queremos aplicar

La herramienta ArtEM: Aritmética Entera y Modular

Generación de CFDI con Aspel-CAJA 3.0 y Aspel-Sellado CFDI

Plantilla Word de Preguntas. Consejos prácticos para profesores DIP 2015

Abrir y cerrar Outlook 2010

Aplicación Firma Electrónica de Archivos 3.0 MANUAL DE USUARIO. Versión Firma Electrónica de Archivos Versión 3.0

RG 3726 SISTEMA INTEGRAL DE RETENCIONES ELECTRÓNICAS

iam Izenpe Manual de usuario para Linux

Prof. Dr. Paul Bustamante

Programación I. Práctica septiembre: el juego de los barquitos III

MODULO DERECHOS PATRIMONIALES

1. Objetivo Proporcionar la información para el correcto uso de la Aplicación Informática de Empresas Aeronáuticas.

Informática I. Taller de Informática. Unidad I : Sistema Operativo Clase 2: Las ventanas en Windows

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Módulos Joomla Flash noticias de actualidad, contenido más leído o más popular y artículos archivados. (CU00433A)

Mejoras Front-Office v9.3f. Mejoras Front-Office V.9.3f. Beroni Informática Pág. 1

Gestión de datos con STATGRAPHICS

EJERCICIOS DE PROGRAMACIÓN EN C. DIBUJAR UN ROMBO O DIAMANTE. CALCULAR SUMATORIOS. (CU00542F)

Manual para la configuración del correo electrónico en Outlook 2010

En este término se han realizado mejoras en el sistema de Académico en Línea para facilitar su registro.

UNIDAD 3 FUNCIONES, FÓRMULAS Y MANIPULACIONES

Gestor y Guía de Tránsito 2010

Manual de Solicitud de Cambio de Domicilio en el Régimen Especial de Trabajadores por cuenta propia o Autónomos.

GUÍA DATA ENTRY, CÓMO CREAR UN ARCHIVO DE PAGO DE PROVEEDORES DE FORMA MANUAL Y EXPLICACION DE LA ESTRUCTURA TXT.

Generación de CFDI con Aspel-CAJA 3.5 en renta (Todo incluido)

PRÁCTICAS DE ELECTRÓNICA DIGITAL

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

Tras esto nos preguntará si queremos realizar la protección de nuestra aplicación mediante llave USB, a lo que tendremos que contestar que SI.

Instructivo para Asociados Portal WEB Actualización de base de datos FEPEP

Sencillo manual de uso de Facebook

GENERAR NÚMEROS O SECUENCIAS ALEATORIOS EN C. SRAND Y RAND. TIME NULL. RAND_MAX. (CU00525F)

Práctica 2 Estadística Descriptiva

Manual de usuario OTIC365

Coordinación de Estudios Mediados por las TICL

2. OBJETIVOS Al finalizar este módulo, tendrá conocimientos sobre:

SISTEMA INTEGRAL DE NEGOCIOS CUENTAS POR PAGAR

GENERAR NÚMEROS ALEATORIOS EN JAVA. CLASE RANDOM Y MÉTODO NEXTINT. EJERCICIO EJEMPLO RESUELTO. (CU00672B)

Importación de catálogos desde un archivo de Microsoft Excel a Aspel-COI 7.0.

MANUAL DEL USUARIO CONTRIBUYENTE DE LA TCRSF

Universidad de la República Facultad de Ciencias Económicas y de Administración Entorno Virtual de Aprendizaje TUTORIAL DE USO PARA ESTUDIANTES

Transcripción:

Práctica 1 Pasa la calculadora Fecha de entrega: 7 de diciembre de 2014 En matematicasdivertidas.com se propone el siguiente juego 1 : Dos jugadores A y B juegan de la manera siguiente: A enciende la calculadora y pulsa un dígito, y a continuación pulsa la tecla "+". Pasa la calculadora a B, que pulsa un dígito que ha de estar en la misma fila o columna que el último dígito pulsado por A y ser diferente de éste; a continuación pulsa "+" y le devuelve la calculadora a A, que repite la operación y así sucesivamente. Pierde el juego el primer jugador que alcanza o supera la suma 31. La disposición de las teclas de los dígitos en filas y columnas es la siguiente: 1. Descripción de la práctica En esta práctica tienes que ir desarrollando de manera incremental un programa que permita jugar a Pasa la calculadora contra el propio programa y llevar un informe sobre el uso del programa. En cada partida, el programa decidirá quién empieza a jugar de forma aleatoria, y en cada turno leerá el dígito pulsado por el jugador (en caso de que sea el turno del ordenador, el dígito lo generará el propio programa), comprobará que el digito cumple las condiciones de las reglas del juego, y mostrará la suma acumulada. Si la suma alcanza o supera 31 el jugador que acaba de jugar habrá perdido. 1 http://www.matematicasdivertidas.com/juegos%20con%20calculadora/juegos%20con%20calculadora.html#pasa2 Práctica 1 Página 1

1.1. Versión 1 de la práctica (Pasa la calculadora, una partida) Descripción En esta primera versión de la práctica solo se permitirá jugar una partida. El programa comienza con un saludo y pidiendo el nombre al usuario. A continuación, el programa decide al azar quien empieza. Cuando le toque el turno al usuario el programa le solicitará que introduzca un dígito, comprobara que el dígito introducido es correcto y mostrará por pantalla la suma. Si el usuario desea abandonar la partida deberá introducir el dígito 0. En el momento en que la suma llegue a 31 o lo supere el programa comunica al usuario quién ha ganado y se despide. Ejemplo de ejecución de esta primera versión de la práctica: Bienvenido a pasa la calculadora! Cómo te llamas? Ana Hola Ana Empiezas tú Introduce un dígito (0 para abandonar): 2 Suma: 2 Yo pulso: 8 Suma: 10 Introduce un dígito (0 para abandonar): 2 Suma: 12 Yo pulso: 8 Suma: 20 Introduce un dígito (0 para abandonar): 8 Error: tiene que ser distinto de 8 y estar en la misma fila o columna Introduce un dígito (0 para abandonar): 4 Error: tiene que ser distinto de 8 y estar en la misma fila o columna Introduce un dígito (0 para abandonar): 9 Suma: 29 Yo pulso: 3 Suma: 32 Enhorabuena has ganado! Hasta la próxima Ana (pulsa una tecla) Práctica 1 Página 2

Detalles de implementación Implementa al menos las siguientes funciones: int pasacalculadora(): Conduce el desarrollo del juego y devuelve el ganador (0 >Nadie, 1 >Autómata, 2 >Jugador). Si se abandona devuelve 0 (Nadie). Utiliza, directa o indirectamente, las funciones que siguen. int quienempieza(): Decide aleatoriamente quien empieza (1 >Autómata, 2 >Jugador). Más abajo explicamos cómo generar números aleatorios. bool mismafila(int ultimo, int nuevo): Devuelve true si nuevo está en la misma fila que ultimo; en caso contrario devuelve false. Observa que la fila que ocupa un dígito, numeradas desde 0, corresponde con (dígito 1) / 3. bool mismacolumna(int ultimo, int nuevo): Devuelve true si nuevo está en la misma columna que ultimo; en caso contrario devuelve false. Observa que la columna que ocupa un dígito, numeradas desde 0, corresponde con (dígito 1) % 3. bool digitovalido(int ultimo, int nuevo): Devuelve true si nuevo cumple las reglas del juego con respecto a ultimo; en caso contrario devuelve false. int digitoaleatorio(): Devuelve un dígito aleatorio. Más abajo explicamos cómo generar números aleatorios. int digitoautomata(int ultimo): Devuelve un dígito generado aleatoriamente que cumpla las reglas del juego con respecto a ultimo. Por ejemplo digitoautomata(2) puede devolver 1,3,5 u 8. int digitopersona():pide un dígito al jugador. Devolverá un valor válido (entre 0 y 9). Para cada valor no válido, mostrará un error y solicitará de nuevo el dígito. int digitopersona(int ultimo): Pide un dígito al jugador mostrando el teclado. Sólo devolverá un valor que cumpla las reglas del juego o 0. Para cada valor no válido, mostrará un error y volverá a solicitar el dígito. Generación de números aleatorios Para generar números aleatorios utiliza las funciones rand() y srand(semilla) de la biblioteca cstdlib. Una secuencia de números aleatorios comienza en un primer número entero que se denomina semilla. Para establecer la semilla el programa deberá Práctica 1 Página 3

invocar a la función srand con el argumento deseado. Lo que hace que la secuencia se comporte de forma aleatoria es la semilla. Una semilla habitual es el valor de la hora del sistema time(null), de la biblioteca ctime, ya que es siempre distinta para cada ejecución. Para establecer la semilla pondremos: srand(time(null)) La inicialización de la semilla se hace una sola vez nada más comenzar el programa. Una vez establecida la semilla, la función rand() genera, de forma pseudoaleatoria, otro entero positivo a partir del anterior. Si quieres que la secuencia esté compuesta por números en un determinado intervalo, tendrás que utilizar el operador % de la siguiente manera: Para obtener un entero entre 1 y M: (rand() % M) + 1 Para obtener un entero entre 0 y M: rand() % (M + 1) 1.2. Versión 2 de la práctica (Pasa la calculadora con menú) Descripción Añade a la versión anterior de la práctica un menú de opciones que permita elegir entre jugar una partida, mostrar la información acerca del programa, o salir del programa. El programa no terminará hasta que se seleccione salir. Ejemplo de ejecución: Bienvenido a pasa la calculadora! Cómo te llamas? Ana Hola Ana Opción: 4 Opción incorrecta. Opción:1... Opción: 0 Hasta la próxima Ana (pulsa una tecla) Ahora el juego se comportará de la siguiente manera según la opción elegida: 1. Jugar: Se jugará una partida tal y cómo se hacía en la versión 1 de la práctica. Práctica 1 Página 4

2. Acerca de: Se mostrarán los créditos e instrucciones que se encuentren en el archivo de texto versionpc.txt. Ejemplo de ejecución: Opción: 2 Acerca de Pasa la calculadora Práctica 1 Versión 3.1 (20/10/2014) Fundamentos de Programación Facultad de Informática Universidad Complutense de Madrid Autores: nombre y apellidos (grupo) nombre y apellidos (grupo) Instrucciones:... Opción: _ Crea tu propio archivo versionpc.txt con los nombres de los autores e incluye unas sencillas instrucciones del juego. El archivo debe de terminar con el centinela XXX. 3. Salir: El programa termina. Detalles de implementación Añade a la versión 1 al menos las siguientes funciones: int menu(): Muestra el menú, pide la opción y la devuelve como resultado. Sólo devolverá una opción válida. Para cada valor no válido, mostrará un error y volverá a pedir una opción válida. bool mostrar(string nombarch): Muestra en la consola el contenido del archivo de texto nombarch. Si el archivo no se encuentra, devuelve false, en otro caso true. Recuerda que el archivo debe de terminar con el centinela XXX para que el programa sepa cuando parar de leer del archivo. Práctica 1 Página 5

1.3. Versión 3 (Pasa la calculadora con menú e informe) Descripción Ahora se quiere tener información sobre el uso del programa, para lo cual se guardarán en el archivo informepc.txt los siguientes datos: Número de veces que se ha utilizado el programa. Número total de partidas jugadas (incluidos los abandonos). Número total de partidas ganadas por el programa. Número total de abandonos. Cada uno de estos datos se guardará en una línea, y en el orden indicado. Ejemplo de archivo informepc.txt: 8 4 0 2 Para mantener el informe, al terminar el programa se actualizará el archivo sumando a los datos que ya había los datos de la última ejecución. Detalles de implementación Añade a la versión 2 del programa al menos la siguiente función: void actinforme(int jugadas, int ganadas, int abandonos): Actualiza la información del archivo informepc.txt con los tres argumentos. Si el archivo ya estaba creado, suma la información de los tres argumentos a la que ya había en el archivo, si el archivo no estaba creado, lo crea con la información de los tres argumentos. 1.4. Versión 4 (Opcional) Haz a tu programa más inteligente, mejorando la función digitoautomata. Añade al menú la opción de seleccionar el nivel de juego. Se podrá elegir el nivel 1 (el programa juega con la función digitoautomata descrita en la versión 1) o el nivel 2 (el programa juega con una función de digitoautomata mejorada, más inteligente). 2. Requisitos de implementación No olvides declarar las constantes necesarias para hacer tu código reutilizable y fácil de modificar. No olvides incluir los prototipos de tus funciones. Práctica 1 Página 6

No utilices variables globales: cada función, además de los parámetros con los que se le pasa información en las llamadas, debe declarar localmente las variables que requiera. No pueden usarse en la resolución de la práctica elementos de C++ no vistos en clase. El programa no debe utilizar arrays, archivos (salvo versionpc.txt y informpc.txt), o instrucciones de salto no estructuradas como exit, break (salvo en las cláusulas de la instrucción switch) y return (salvo en la última instrucción de las funciones que devuelven un valor). 3. Entrega de la práctica La práctica se entregará a través del Campus Virtual. Se habilitará una nueva tarea: Entrega de la Práctica 1 que permitirá subir un fichero comprimido que debe incluir el código fuente de la última versión (practica1.cpp) y el archivo versionpc.txt. El fichero subido deberá tener el siguiente nombre: Practica4GrupoXXX, siendo XXX el número de grupo. Uno sólo de los miembros del grupo (no los dos) será el encargado de subir la práctica. La práctica debe funcionar usando Visual Studio, que es la herramienta vista en clase. La práctica subida debe compilar y cumplir con la funcionalidad descrita en el enunciado. No se corregirá ninguna práctica que no cumpla estos requisitos. Práctica 1 Página 7