Benemérita Universidad Autonoma De Puebla Tesis

Preview only show first 6 pages with water mark for full document please download

Transcript

BENEMÉRITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN Laboratorio Interactivo de Probabilidad LIP V.1.0 “Software Matemático de Apoyo Para el Estudio de Un Curso Básico de Probabilidad” TESIS PROFESIONAL QUE PARA OBTENER EL GRADO DE : LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN PRESENTA: ALFREDO MELO ALCÁNTARA ASESOR: M. C. JOSÉ DIONICIO ZACARIAS FLORES. COASESOR: M. C. JOSÉ ANDRES VAZQUEZ FLORES. PUEBLA, PUE. 2004 CONTENIDO INTRODUCCIÓN I Capitulo 1. Planteamiento del Problema 1.1 Origen del problema. 1 1.2 |Delimitación de Objetivos. 2 1.2.1 Objetivo General. 2 1.2.2 Objetivo Particular. 2 1.3 Metodología. 3 Capitulo 2. Laboratorios Interactivos y Virtuales 2.1 Concepto de Laboratorio, Interactividad y Virtual. 5 2.2 Simulación. 6 2.3 Modelo. 7 2.4 ¿Qué es un laboratorio Interactivo Computacional?. 8 2.5 Conclusiones. Unidad 3. Análisis y Diseño del Sistema LIP 3.1 Ciclo de Vida de Un Sistema. 10 3.1.1 Análisis del Sistema. 11 3.1.2 Requisitos del Sistema. 12 3.1.3 Diseño del Sistema. 13 3.1.4 Codificación del Sistema. 14 3.1.5 Pruebas del Sistema. 15 3.1.6 Mantenimiento del Sistema. 15 Capitulo 4. Herramientas para la Implementación 4.1 Aspectos importantes sobre las versiones de Visual Basic. 18 4.2 Como Desarrollar una aplicación Visual Basic. 19 4.3 El Entorno Visual Basic. 20 4.3.1 Barra de Títulos. 21 4.3.2 Barra de Menús. 22 4.3.3 Barra de herramientas. 23 4.3.4 Ventana de Formulario. 24 4.3.5 Ventana del Proyecto. 24 4.3.6 Ventana de propiedades. 25 4.3.7 Caja de Herramientas. 26 4.3.8 Ventana de Edición de Código. 29 4.4 Eventos Principales de Visual Basic 6. 30 4.5 Definición de Algunos Conceptos Básicos, con los que trabaja Visual Basic 6. 31 Capitulo 5. Desarrollo de LIP. 5.1 Aspectos Generales para las formas. 34 5.2 Consideraciones de Diseño. 35 5.3 Aplicaciones y descripción de todas las interfaces de LIP. 36 Apéndice A: Procedimientos y funciones mas importantes del Sistema. 53 Apéndice B: Definiciones y Conceptos Básicos de Distribuciones Discretas y 83 Continuas. Conclusiones y Recomendaciones 95 Bibliografía 97 Benemérita Universidad Autónoma de Puebla INTRODUCCION Actualmente el uso de las computadoras han pasado a hacer algo importante en nuestra vida, ya que son una herramienta que nos ayuda a diferentes actividades, por ejemplo consultar información en Internet, realizar escritos, editar imágenes con ayuda de software especializado en imágenes, etc. Pero uno de los usos mas importantes de la computadora es sin duda que nos ayuda a complementar un mejor aprendizaje en la escuela, por tal motivo se ha tenido la necesidad de integrar las nuevas tecnologías en la educación y desarrollar nuevos métodos de enseñanza. Un problema muy común de aprendizaje en el área de ciencias exactas, es el grado de dificultad de las diversas materias, en particular en la materia de probabilidad, ya que la mayor parte de las veces el concepto de incertidumbre o azar es difícil de entenderlo, lo que se refleja en el estudiante al tratar de resolver problemas relacionados con el tema, así como la forma en que puede llevar a cabo aplicaciones al mundo real, ante esta realidad, se decidió el desarrollo de un sistema computacional que apoye el estudio y aprendizaje de la probabilidad. El propósito de este trabajo se basó fundamentalmente en ofrecer al usuario que esté interesado en aprender probabilidad, un sistema computacional interactivo que le permita comprenderla y aplicarla. El usuario podrá estudiar problemas planteados en el curso de probabilidad, y en el momento de modelarlos matemáticamente, hacer uso de las distribuciones típicas tanto discretas como continuas. También se podrán ejecutar y experimentar algunas simulaciones usuales en el estudio de la probabilidad. El sistema computacional interactivo se denomina LIP, el cual se disfruta debido a su entorno multimedia, complementándolo con definiciones básicas de las distribuciones LIP I Benemérita Universidad Autónoma de Puebla de probabilidad desarrolladas. LIP funciona a base de módulos, los cuales son seleccionados en un menú principal. Este documento esta organizado de la siguiente manera: En el Capítulo 1, se describe el planteamiento del problema, así como los objetivos generales, específicos y la metodología a seguir en el problema en estudio. En el Capítulo 2, trata sobre la diferencia que existe entre un Laboratorio Interactivo y Laboratorio Virtual, así como ejemplos existentes sobre los mismos . En el Capitulo 3, trata sobre los aspectos que se tomaron en cuenta para el análisis y el diseño del sistema LIP. Además de describir los pasos por los que todo software debe pasar. En el Capitulo 4, se da un recorrido rápido de las herramientas más elementales para la implementación del software, esto para demostrar la facilidad con la que se puede diseñar el mismo. En el Capitulo 5, se muestra todo el desarrollo del Sistema LIP, esto en base a lo que se comento con respecto a la información, recursos con los que se cuentan, y las necesidades expuestas. Al final se presentan : El Apéndice A, contiene los procedimientos más importantes de este sistema. El Apéndice B, contiene las definiciones de las distribuciones discretas y clásicas de probabilidad mencionadas en este trabajo de tesis. y por último se presentan las conclusiones y recomendaciones de este trabajo de tesis. LIP II Benemérita Universidad Autónoma de Puebla CAPITULO 1 PLANTEAMIENTO DEL PROBLEMA 1.1 ORIGEN DEL PROBLEMA El problema que dio origen al proyecto nace ante la dificultad que presentan los estudiantes del área de ciencias exactas, ya sea de nivel medio superior o superior en el aprendizaje de diversas materias, entre ellas la de probabilidad y estadística. En la mayoría de las instituciones, a nivel medio superior y superior, en las que se imparte esta materia, todavía se enseña esta materia en forma tradicional, sin que tengan como apoyo algún otro recurso didáctico, en particular una herramienta computacional. Actualmente existen en el mercado diversos programas que servirían como apoyo para la enseñanza, pero existen muchos inconvenientes en los mismos, como por ejemplo que son muy costosos, algunos muy difíciles de aprender o de conseguir, no están en español, y la bibliografía para poder usar estos programas es muy costosa. También existen diferentes tutoriales en formato html, pero estos aún están muy pobres en contenido, pobres en ejemplos y ayuda para poder entenderlos. Igualmente se encontró algunos programas ya desarrollados1 pero para tener acceso a ellos, tiene uno que ser un usuario registrado, y contar con requisitos específicos de configuración computacional, lo cual limita su uso. 1 La dirección de este sitio web es http://www.math.uah.edu/stat/ , en él se ofrece un Laboratorio Virtual en Probabilidad y Estadística, el cual es soportado parcialmente por el Department of Mathematical Sciences University of Alabama in Huntsville. LIP 1 Benemérita Universidad Autónoma de Puebla 1.2 DELIMITACION DE OBJETIVOS 1.2.1 Objetivo General El objetivo general de este trabajo es ofrecer un programa computacional de tipo experimental, en donde se tendrá la oportunidad de analizar de modo interactivo cada uno de los diversos modelos probabilísticos, tanto discretos como continuos que son estudiados en un primer curso de probabilidad. Así como el poder experimentar con algunas simulaciones clásicas de la probabilidad. 1.2.2 Objetivos Particulares Para cumplir con el objetivo general, se propuso como objetivos particulares los siguientes: ¾El sistema debe contribuir a la enseñanza y mejorar el aprendizaje en los alumnos con un alto grado de interactividad. ¾Experimentar simulaciones típicas de probabilidad tales como: juego de cartas, lanzamiento de una o dos monedas, lanzamiento de uno o dos dados, caminatas aleatorias, problema del cumpleaños. ¾Estudiar las distribuciones más usuales, tales como la Binomial, Binomial Negativa, Geométrica, Hipergeometrica, Poisson, Uniforme, Exponencial y Normal. ¾Contar con una utilería para calcular permutaciones y combinaciones. LIP 2 Benemérita Universidad Autónoma de Puebla 1.3 METODOLOGIA Con respecto a la metodología que se siguió, se procedió de la siguiente manera, se hizo una investigación sobre los trabajos y artículos existentes en Internet, en la universidad y podemos destacar los siguientes: Hipertexto de Estadística Económica y Empresarial. Recurso de utilidad múltiple, en el que pueden seguirse diferentes lecturas a distintos niveles de profundidad y distintos ordenes, explotándose así las posibilidades de interactividad y textualidad propias del hipertexto. Virtual Laboratories in Probaility and Statics. Este proyecto provee interactividad, de los recursos basados en web para estudiantes y profesores de probabilidad y estadística. Este trabajo es desarrollado por Kyle siegrist, del Department of Mathematical Sciences University of Alabama in Huntsville. Modelación Computacional. Proyecto que tiene como finalidad apoyar el desarrollo de la investigación a través de la identificación, traducción e implementación de los modelos computacionales. Desarrollado por el departamento de visualización de la UNAM. Aula Net. Aula virtual para la formación universitaria, proyecto desarrollado por la Universidad de Oviedo. Aplicación del Método de Poisson para el Cálculo de las Burbujas en los Autómatas Celulares, con la finalidad de conocer si el proceso es eficiente o no. Desarrollado por Sergio A. García Santana Escuela Nacional de estudios Profesionales UNAM, apoyado por el Dr. Harold McIntosh, profesor investigador de la BUAP. LIP 3 Benemérita Universidad Autónoma de Puebla Igualmente se hizo una revisión a los conceptos matemáticos de las distribuciones tanto discretas, como continuas, así como también a los conceptos matemáticos acerca del tema de combinaciones y permutaciones, necesarios para desarrollar este sistema. También se decidió desarrollar un sistema computacional en el cual algunas de las principales características es ofrecer un mejor programa en cuanto a contenido, una mejor calidad, que sea de gran utilidad para el interesado en aprender Probabilidad, y que sea más amigable en la forma de acceder y manejar el sistema. Con respecto al concepto computacional para desarrollar el software, se eligió dentro de los lenguajes de programación existentes: Visual Basic 6. LIP 4 Benemérita Universidad Autónoma de Puebla CAPITULO 2 LABORATORIOS INTERACTIVOS Y VIRTUALES 2.1 Concepto de Laboratorio, Interactividad y Virtual. Laboratorio, es un lugar dispuesto y equipado con todo lo necesario para la investigación, con el fin de realizar experimentos o análisis. Uno de los conceptos más escuchados en los últimos años es el de Interactividad en los programas informáticos, la cual se puede definir como la participación y control que puede llegar a tener el usuario sobre el programa. Su principal característica de estos programas es que no llevan una secuencia lineal, gracias al hipertexto o hipervínculos. Ejemplos de Interactividad Muchas de las aplicaciones en la actualidad tienen un gran porcentaje de lo que conocemos como interactividad. Una de las principales aplicaciones en el que incluyen este término es en los manuales interactivos, programas educativos, en páginas web , en juegos de computadoras, enciclopedias y en aplicaciones de investigación. Todos estos sistemas tienen la capacidad de hacer participar al usuario durante la ejecución del mismo. El concepto de virtual se refiere a que tiene existencia aparente y no real de producir un efecto dado o requerido. LIP 5 Benemérita Universidad Autónoma de Puebla Ejemplos en los que se aplica el termino Virtual El término virtual, hoy en día es muy mencionado en lo que hoy se conoce como Realidad Virtual, la cual la podemos definir como una manera mediante la cual los humanos visualizan, manipulan e interactúan con computadoras y datos que a veces pueden llegar a ser demasiado complejos. Algunas de las aplicaciones de la realidad virtual se dan en la música, química, ciencias biológicas, matemáticas, astronomía, arte, juegos de computadora, medicina, etc. Definición de Sistema Colección de variables que interactúan entre sí dentro de ciertos límites para lograr un objetivo. Sistema Computacional: Un sistema computacional es un sistema complejo que puede llegar a estar constituido por muchos componentes. Los principales componentes de un sistema computacional son: hardware, software, base de datos, y su organización física en función de los usuarios. El análisis empieza con las necesidades de información y de datos, después de esto se examinan las opciones de hardware y software que cumplan con las exigencias del modelado del procesamiento de datos y con la presentación de información. 2.2 Simulación Uno de los términos que se mencionan en este trabajo de tesis es el de simulación el cual lo definiremos como: “El conjunto de métodos y aplicaciones para imitar el comportamiento de un sistema” LIP 6 Benemérita Universidad Autónoma de Puebla ¿Cuál es el objetivo de la simulación computacional? Llevar a cabo la experimentación de problemas reales, mediante el uso de un sistema computacional, el cual nos permitirá entender el comportamiento del problema en estudio. 2.3 Modelo Representación de los objetos del sistema, refleja de manera sencilla las actividades en las cuales esos objetivos se encuentran involucrados. Tipos de Modelos Matemáticos Modelos Causales y No Causales: El estado de un sistema causal depende sólo de las condiciones presentes y pasadas, pero no de las futuras. Modelos Estáticos y Dinámicos: Un sistema estático depende sólo de las condiciones presentes, y no de las pasadas. El estado de un sistema dinámico depende de lo que haya sucedido en el pasado. Modelos Estocásticos y Determinísticos: Un modelo que incluya variables aleatorias es un modelo estocástico, mientras que modelos exentos de aleatoriedad se denominan modelos determinísticos. Modelos de Parámetros Concentrados y Distribuidos: Modelos Lineales y No Lineales: La linealidad es una propiedad que pueden tener o no las funciones; realmente se trata de dos propiedades agrupadas bajo un mismo nombre. LIP 7 Benemérita Universidad Autónoma de Puebla Modelos Variantes e Invariantes en el Tiempo: Un modelo se dice invariante en el tiempo cuando las propiedades del sistema modelado se consideran constantes en el tiempo. Modelos Continuos y Discretos  2.4 ¿ Que es un Laboratorio Interactivo computacional ? De acuerdo con todo lo visto durante este capitulo, puedo definir a un Laboratorio Interactivo Computacional, como el conjunto de herramientas de tipo computacional, tales como la computadora, impresoras, papel, apuntes electrónicos disponibles para investigar, programas computacionales, y cualquier otro dispositivo de cómputo, que nos permitan experimentar, simular y comprender de una forma mucho más eficaz y directa problemas que no son tan simples de comprender y resolver. LIP 8 Benemérita Universidad Autónoma de Puebla Ejemplos de algunos Laboratorios Interactivos Computacionales. Entre los mas destacados tenemos los siguientes: LabVis Laboratorio de Visualización el cual cuenta con Estaciones de Trabajo gráficas para poder transformar esas grandes cantidades de datos en imágenes2. Manual Interactivo: Manual computacional interactivo que modela algunas distribuciones de probabilidad y estadística, desarrollado por Juan Martínez de Lejarza e Ignacio Martínez de Lejarza. Año de Publicación 22-Mayo-2001. 2.5 Conclusiones Se decidió, desarrollar un Laboratorio Interactivo de Probabilidad, en vez de un Laboratorio Virtual, porque muchas de las veces el aspecto virtual solamente nos permite estar observando y no poder estar interactuando directamente con el programa. Además como el objetivo principal es el de que el sistema sirva de apoyo para un primer curso de Probabilidad, se implementó de tal forma que el usuario tenga la oportunidad de ir modelando problemas y con el modelo proponer valores y experimentar tales comportamientos de las diferentes distribuciones de Probabilidad, tales como: Distribuciones Discretas ( Binomial , Binomial Negativa, Geométrica, Hipergeométrica, Poisson ); Distribuciones Continuas (Uniforme, Normal, Exponencial). También como complemento a estos temas, este programa tiene una sección dedicada a la simulación de algunos de los problemas típicos en el estudio de la probabilidad, con el propósito de que el estudiante experimente de modo interactivo; y como cualquier laboratorio, este programa cuenta con una ayuda breve de la teoría referente a los temas ya mencionados en este sistema. 2 Ladirección de este sitio web es http://www.labvis.unam.mx,aquí se ofrece un Laboratorio de visualización, LabVis, en sus inicios estuvo muy enfocado a gráficos por computadora, para lograr visualizaciones fenomenológicas, o representaciones directas de los fenómenos. LIP 9 Benemérita Universidad Autónoma de Puebla CAPITULO 3 ANÁLISIS Y DISEÑO DEL SISTEMA LIP La implementación de todo sistema implica más que el simplemente crear una aplicación la cual cumpla con ciertas necesidades; si no que esto debe iniciarse primero con un análisis previo de todo lo que puede estar implícito en la creación del mismo (las interfaces de usuario, los usuarios finales, la información, etc.), para que a partir de ello se tome lo que mejor se adapte al sistema y a las necesidades presentes y futuras del mismo y en base a esto desarrollar el sistema. Por lo general los sistemas computacionales se desarrollan con diferentes propósitos, los cuales dependen de las necesidades de la persona interesada en obtener este software. El análisis y diseño de sistemas sirve para analizar, diseñar y fomentar mejoras en la operación de las organizaciones, lo cual pueda ser realizado mediante el uso de sistemas de información sistematizados. 3.1 Ciclo de vida de Un Sistema La figura 3.1 ilustra el paradigma del ciclo de vida clásico para el desarrollo de software. Aunque cada fase se presenta de manera discreta, nunca se lleva a cabo como un elemento independiente. En lugar de ello, se realizan al mismo tiempo diversas actividades. Por ello es de mayor utilidad suponer que el ciclo de desarrollo de un sistema transcurre en fases y no como elementos separados. A continuación se dará una breve definición de lo que refiere cada fase. LIP 10 Benemérita Universidad Autónoma de Puebla Figura 3.1 Ciclo de Vida de un Sistema 3.1.1 Análisis del Sistema El sistema LIP es un software que tiene como objetivo particular ofrecer un programa computacional de tipo interactivo con el cual se contribuye a una mejor enseñanza y aprendizaje de los usuarios, principalmente estudiantes que estén interesados en aprender un primer curso de probabilidad, pues en él, podrán estudiar y observar el comportamiento de algunas distribuciones de probabilidad discretas y continuas. Así como también se podrán experimentar con algunas simulaciones clásicas de problemas de juegos de azar vistas en un primer curso de probabilidad, con el fin de poder tener un LIP 11 Benemérita Universidad Autónoma de Puebla mejor panorama acerca de estos juegos, ya que muchas veces no quedan muy claros para los estudiantes con conceptos matemáticos vistos en clase. 3.1.2 Requisitos del Sistema En lo que respecta a los requisitos del sistema LIP, se tomaron en cuenta tres aspectos principales que se deben desarrollar: 1. Procedimiento 2. Análisis de los medios Actuales 3. Determinación de los Requerimientos. 1. Procedimiento: Primeramente se realizó una investigación y recopilación de información en Internet, bibliotecas y escuelas acerca del software que existe actualmente y cuales son sus características principales. 2. Análisis de los medios Actuales: Podemos decir que los medios actuales que existen tales como libros, buscadores, enciclopedias, bibliotecas electrónicas, software e Internet nos sirven de mucho de apoyo en la educación, pero sin embargo un problema que presentan estos medios es que no llegan a cubrir en su totalidad todas nuestras necesidades para un buen aprendizaje de esta área, otro problema muy importante de los medios mencionados es el alto costo para comprarlos o para tener acceso a ellos, también muchas veces se encuentran en otro idioma diferente al español. 3. Determinación de los Requerimientos Uno de las principales características de LIP es la forma en la que se van a capturar los datos. LIP 12 Benemérita Universidad Autónoma de Puebla Requerimientos de captura. Son los datos con los que el sistema se alimentará para poder realizar determinadas funciones, las directrices que se centran en la entrada de los datos de este sistema son: ¾El mantener la consistencia entre la información visualizada y los datos de entrada proporcionados por el usuario. ¾Permitir al usuario controlar el flujo de interacción. ¾Proporcionar ayuda en todas las acciones de entrada de datos. Requerimientos de salida. Es la información que el usuario visualizará, las directrices que se centran en la salida de datos de este sistema son: ¾Confiable. Que la información sea lo mas verídica posible. ¾Precisa. Que no genere confusión o dudas en el usuario. ¾Efectiva. Que la información sea la solución a su problema, y no abrumar al usuario con datos sin importancia. ¾Completa. Que el usuario no requiera de usar otro software, para el mismo fin. 3.1.3 Diseño del Sistema Uno de los aspectos más importantes en cualquier sistema es el diseño de la interfaz, el diseño tiene tanto que ver con el estudio de la gente como con aspectos de la tecnología. ¿Quién es el usuario? ¿Cómo aprende el usuario a interactuar con un sistema nuevo? ¿Qué espera el usuario del sistema?. El diseño de la interfaz no se refiere únicamente a los aspectos de programación, si no que una de las principales exigencias que se pide al diseñar una interfaz es que esta LIP 13 Benemérita Universidad Autónoma de Puebla tenga la capacidad de adaptarse a las necesidades de distintos usuarios y no el usuario a la interfaz. Es decir, una buena interfaz debe permitir que el usuario sea más productivo en su trabajo. Con respecto al aspecto del diseño del sistema LIP, funciona a base de módulos, los cuales son: modulo de combinatoria, modulo de permutación, modulo de distribuciones discretas, modulo de distribuciones continuas y un modulo de simulación seleccionados en un menú principal con una interfaz interactiva en la cual se puede señalar y hacer clic sobre un tema especifico que se quiera explorar o analizar, cada uno de estos módulos cuenta con su sección de datos de entrada que serán a su vez proporcionados por el usuario, cuenta con una ayuda de teoría acerca del tema que se este analizando, al igual como datos de salida de este programa tenemos los siguientes: nos proporciona una lista numérica de las probabilidades requeridas por el usuario, nos proporciona la media y la varianza de cada una de las distribuciones tanto discretas como continuas, así como también tendremos la oportunidad de poder experimentar su comportamiento de las mismas gracias a que este sistema nos grafica cada una de las distribuciones mencionadas anteriormente, todas las interfaces de los módulos mencionados anteriormente cuenta con un botón para regresar al menú anterior si así lo desea el usuario, en las interfaces de todos los menús cuenta con un botón para salir por completo del programa en el momento en el que lo desee el usuario, por último una parte muy importante es el modulo de simulación el cual nos ayudara a comprender algunos conceptos y ejemplos clásicos de un primer curso de probabilidad como son: (lanzamiento de dados, lanzamiento de monedas, problema del cumpleaños, juego de cartas, caminatas aleatorias etc.). 3.1.4 Codificación del Sistema Para el caso particular del sistema LIP se optó por utilizar el Lenguaje de programación Visual Basic 6 empresarial, ya que las características de una programación LIP 14 Benemérita Universidad Autónoma de Puebla modular y multimedia con las que cuenta lo hacen ideal para el desarrollo del sistema encomendado. Al igual se utilizo un software de diseño llamado Photoshop 6 para crear todas las interfaces del sistema (pantallas, menús, botones, imágenes etc). 3.1.5 Pruebas del Sistema Las pruebas se realizaron con dos tipos de datos diferentes datos ficticios, datos erróneos, datos reales. ¾Datos Ficticios. Aquellos datos que se inventaron en su momento para probar el sistema. ¾Datos Erróneos. Aquellos datos que se introducen de manera intencional para probar el sistema y ver si los detecta. ¾Datos Reales. Aquellos con los que el sistema va a trabajar normalmente. 3.1.6 Mantenimiento del Sistema El software, indudablemente sufrirá cambios después de que se entregue al cliente. Los cambios no necesariamente deberán ser debido a que se hayan encontrado errores, sino porque siempre es viable mejorar el sistema. Una de las mejoras al sistema puede ser que se incluyan otras distribuciones de probabilidad de una variable, tales como la distribución F, la distribución Ji Cuadrada, Distribución Beta, Distribución Gamma. También podemos incluir y estudiar todo lo referente a la Teoría de Bayes, así como también distribuciones de probabilidad que LIP 15 Benemérita Universidad Autónoma de Puebla manejen el caso conjunto al menos para dos variables (que se puedan resolver problemas que traten de obtener distribuciones conjuntas y distribuciones marginales). Por otra parte, con respecto al tema de simulación, incluir y trabajar con otros ejemplos de simulación, por ejemplo: Problema de Urnas: Sin duda este es uno de los mejores problemas que se pueden implementar en lo que respecta al tema de simulación. Ya sea con sus diferentes variantes del modelo de urnas, como lo es obtener elementos de la urna con reemplazo o sin reemplazo ( tomar un elemento de la urna, y depositarlo nuevamente), con elementos distinguibles o no distinguibles ( que se puedan numerar los elementos o que tengan ciertas características). Dígitos Aleatorios Repetidos: En este problema, se considera el siguiente experimento. Tomar el directorio telefónico, abrirlo en cualquier pagina. Escoger 100 números telefónicos de dicha pagina y cuente los números cuyos últimos cuatro dígitos sean todos distintos. Problema de Apareamientos: En este problema se supone que de un numero M de personas, una de ellas es usted, cada una de las cuales ha puesto su sombrero en una caja. Mas tarde, cada persona escoge al azar un sombrero de esa caja. Y se plantea uno la siguiente pregunta, ¿ Cuál es la probabilidad de que usted escoja su propio sombrero?. Juego del Disparejo: Este problema es muy interesante y consiste en lo siguiente: Sean N personas que juegan al disparejo con monedas legales. ¿ Cuál es la probabilidad, para n = 1,2,...., de que se necesiten n jugadas para concluir el juego ( o sea, que la n-ésima jugada es la primera en la que uno de los jugadores tendrá un resultado distinto al de todos los demás jugadores)?. LIP 16 Benemérita Universidad Autónoma de Puebla Lanzamiento de un Dado, una Moneda cargada: Al igual que en las simulaciones que se trabajaron en este trabajo de tesis, seria muy bueno pero ahora incluir las mismas simulaciones, pero ahora con la moneda o el dado cargado, es decir que tengan mas probabilidad de salir un resultado( cara o cruz, o cualquier cara del dado) que otro. Juegos de apuestas: Incluir juego de apuestas, por ejemplo, desarrollar el juego del tragamonedas, juego de barajas( juego del 21, poker, carta mayor, etc.). Seria un punto muy bueno para una mejora de este sistema. LIP 17 Benemérita Universidad Autónoma de Puebla CAPITULO 4 HERRAMIENTAS PARA LA IMPLEMENTACION VISUAL BASIC 6 Las interfaces graficas de usuario o GUI (Graphical User Interface) han revolucionado la industria de las microcomputadoras. Han demostrado que el proverbio ”vale más una imagen que mil palabras” no ha perdido su validez. Antes de la existencia de Visual Basic, el desarrollo de aplicaciones era mucho mas complicado. Los programadores tenían que preocuparse mas de la posición del mouse, de la elección del usuario dentro del menú y si estaba realizando un clic en un punto determinado. Ahora se pueden desarrollar aplicaciones en poco tiempo a comparación del que se necesitaba anteriormente. Los errores de programación no se generan frecuentemente, y si lo hacen son mucho más sencillos de detectar y resolver. 4.1 Aspectos importantes sobre las versiones de Visual Basic Visual Basic 1.0 . Cuando se presento Visual Basic 1.0, Bill Gates, presidente y CEO de Microsoft lo describió como algo maravilloso. Stewart Alsop declaró en el New York Times que visual Basic era “entorno de programación perfecto para los noventa”. Visual Basic 2.0. Esta nueva versión era mucho más rápida, más potente e incluso más sencilla de utilizar que Visual Basic 1.0. Visual Basic 3.0. Incluyó una forma más sencilla de tener acceso a las bases de datos más potentes que existían en ese tiempo. LIP 18 Benemérita Universidad Autónoma de Puebla Visual Basic 4.0. Con esta nueva versión se incorporó soporte para el desarrollo en 32 bits e inició el proceso de transformar Visual Basic en un lenguaje de programación orientada a objetos. Visual Basic 5.0. En esta versión se incorporó la posibilidad de crear auténticos programas ejecutables e incluso la posibilidad de poder crear sus propios controles . Visual Basic 6.0. Esta última versión ha añadido algunas de las características deseadas de otros lenguajes, y nuevas características para Internet y bases de datos, además de las múltiples mejoras en sus asistentes ( asistente para instalar, objetos de datos, formularios de datos, aplicaciones, barra de herramientas). Por todas estas características este es el más simple y potente de todos los Visual Basic desarrollados hasta este momento. 4.2 Como desarrollar una aplicación Visual Basic. Lo primero que tenemos que hacer es planear lo que ve el usuario; en otras palabras, diseñar las interfaces. ¿Qué menús se desean? ¿Cuántas ventanas debe haber? ¿Dónde se colocaran los botones de ordenes? ¿ tendrá la aplicación sitios para introducir texto o información?. En Visual Basic los objetos que sitúa el diseñador de un programa en una ventana se denominan controles. Lo que hace que Visual Basic sea diferente de otras herramientas de programación es la facilidad con la que se puede diseñar una pantalla. Se puede diseñar literalmente la interfaz de usuario, parecido a la forma de utilizar un programa de dibujo. Además, una vez que se ha terminado de hacer la interfaz, los botones de ordenes, cajas de texto y otros controles que se han colocado en una ventana en blanco reconocerán automáticamente acciones del usuario, tales como el movimiento del mouse y los clic de los botones. LIP 19 Benemérita Universidad Autónoma de Puebla Tan sólo después de diseñar la interfaz de usuario es cuando se empieza a hacer algo que se parezca a programar. Los objetos en visual Basic reconocerán eventos como los clics del mouse; la forma en que los objetos responderán dependerá del código que se escriba. Se necesitará escribir código para que los controles respondan a los eventos. Los programas en los lenguajes de programación convencionales se ejecutan de arriba-abajo, en los antiguos lenguajes de programación la ejecución comienza en la primera línea y se desplaza con el flujo del problema a las distintas partes según se necesite. Un programa Visual Basic funciona de un modo totalmente diferente ya que es un conjunto de diferentes partes de código que solamente responden a los eventos que les ha indicado que reconozcan. Ahora, en lugar de diseñar un programa que haga lo que el programador piense que debe hacer, el usuario tiene el control ya que solamente se ejecutarán los eventos asociados a la opción seleccionada por el usuario. La mayor parte del código de programación Visual Basic indica al programa el modo de responder a determinados eventos como el clic del mouse, en lo que en Visual Basic se denominan procedimientos de evento. Esencialmente, cualquier cosa ejecutable en visual Basic es, o bien un procedimiento de evento, o es utilizado por un procedimiento de evento para ayudarlo a realizar su trabajo. De hecho un evento debe ocurrir para que Visual Basic haga algo. 4.3 El Entorno de Visual Basic. En este punto lo que se pretende es dar una idea general del entorno de la edición estándar de Visual Basic. LIP 20 Benemérita Universidad Autónoma de Puebla Cuando se inicia Visual Basic se verá una pantalla de Copyright indicando la persona para la cual es válida la licencia de la copia de Visual Basic. Después de un breve retraso, automáticamente se muestra el entorno Visual Basic.( Ver Fig. 4.1)   Figura 4.1 Pantalla Principal de Visual Basic. 4.3.1 Barra de Títulos (Ver Fig. 4.2) Es la barra horizontal situada en la parte superior de la pantalla, esta contiene el nombre de la aplicación. En Visual Basic la barra de títulos se inicializa diciendo: Microsoft Visual Basic (design). Cuando se ejecuta un programa dentro del entorno Visual Basic, la barra de títulos cambia a. Microsoft Visual Basic (run). Y cuando se esté depurando o haya interrumpido el programa temporalmente, la barra de títulos cambia a: Microsoft Visual Basic (break). LIP 21 Benemérita Universidad Autónoma de Puebla Figura 4.2 Ventana principal de Visual Basic. 4.3.2 Barra de Menús. (ver Fig. 4.2) Es la barra que proporciona las herramientas necesarias para desarrollar, probar y archivar la aplicación. Menú File (Archivo) contiene las órdenes para trabajar con archivos que incluye la aplicación. Menú Edit (Edición) contiene la mayoría de herramientas de edición que ayudan a escribir el código, incluyendo las herramientas de edición de búsqueda y sustitución. Menú View (Ver) proporciona acceso rápido a todas las partes del programa. Menú Run (Ejecutar) permite verificar la aplicación según se va desarrollando. Menú Debug. (Depurar) da acceso a las herramientas utilizadas para depurar el programa. Menú options (opciones) permite controlar el entorno de Visual Basic. Menú Windows (Ventana) proporciona acceso rápido a las diferentes ventanas que configura el entorno visual Basic. Menú Help (Ayuda) se utiliza para acceder al detallado sistema de ayuda en línea incluido en Visual Basic. LIP 22 Benemérita Universidad Autónoma de Puebla 4.3.3 Barra de herramientas. Es la barra que cuenta con botones que permite activar las tareas más comunes sin necesidad de utilizar los elementos de la barra de menús, cada elemento tiene una combinación de teclas para la misma tarea. New Form (Nuevo formulario). Este botón permite añadir un nuevo formulario a un proyecto. New modulo (Nuevo Modulo). Este botón permite abrir un nuevo modulo para código especifico de información. Open Project (Abrir Proyecto). Este botón permite abrir un proyecto existente. Save Project (Archivar Proyecto). Permite grabar un proyecto. Menú Design ( Diseño de Menú). Se utiliza para diseñar menús. Activate Properties Windows (Activa Ventana de propiedades). Se utiliza para modificar las propiedades de un objeto. Run (Ejecutar). Este botón ejecuta las aplicaciones ya diseñadas. Break (Pausa). Sirve para detener temporalmente un programa en ejecución. End (Fin). Finaliza un programa en ejecución. Breakpoint ( punto de pausa). Una herramienta de depuración. Esto coloca un punto de detención temporal en un lugar especifico del programa. Instant Wach ( observación instantánea). Una herramienta de depuración. Muestra una lista de las llamadas a procedimientos actuales. Calls Command (orden de llamada). Una herramienta de depuración. Muestra una lista de las llamadas a procedimientos actuales. Single step (paso a paso). Una herramienta de depuración. Sirve para desplazarse por el programa en pasos de una línea. LIP 23 Benemérita Universidad Autónoma de Puebla Procedure Step (paso de procedimiento). Una herramienta de depuración. Sirve para desplazarse por el programa paso a paso, pero considera a los procedimientos como un solo paso. 4.3.4 Ventana de Formulario (ver Fig. 4.3) Es la zona donde se desarrolla el diseño de un nuevo formulario o ventana (Form), la cual se visualiza cuando la aplicación este funcionando. A medida que se diseña una aplicación, el formulario sirve como lienzo en el que se diseñan las diversas partes de la aplicación, siguiendo la metodología que se maneja hoy en día en los lenguajes de cuarta generación “ lo que ves es lo que obtienes”. Figura. 4.3 Ventana de Formulario 4.3.5 Ventana del Proyecto ( ver Fig. 4.4) Cada proyecto puede tener varios formularios, la ventana de proyecto contiene un listado de todos los formularios personalizables (archivos .FRM), de código general (módulos, archivos .BAS) que contiene una aplicación y los programas de soporte de las LIP 24 Benemérita Universidad Autónoma de Puebla herramientas (archivos VBX). Cuando se crea un formulario se crea una ventana de edición de código la cual se explicara más adelante. Figura 4.4 Ventana del Proyecto 4.3.6 Ventana de propiedades ( Ver Fig. 4.5) Son mecanismos formales que sirven para describir los atributos de un objeto. Todo objeto de Visual Basic tiene propiedades especificas cuyos ajustes, controlan la apariencia y comportamiento del objeto dentro de la aplicación. Por ejemplo el color, el tamaño, la posición, el tipo de letra, así también algunas propiedades están restringidas a ciertos valores, como los de visualizar, activo, etc. LIP 25 Benemérita Universidad Autónoma de Puebla Figura 4.5 Ventana de Propiedades 4.3.7 Caja de Herramientas ( Ver Fig. 4.6) Aquí se encuentran los objetos o controles , (cuadros de diseño, botones de comando, barras de desplazamiento, casillas de verificación, cajas de texto, etiquetas, marcos, círculos, etc). Estos están representados por botones. La utilización de dichos objetos resulta muy variada dependiendo si se está diseñando la aplicación o se está ejecutando. Figura 4.6 Caja de Herramientas. LIP 26 Benemérita Universidad Autónoma de Puebla Entre las herramientas de mayor uso están Puntero. El apuntador es usado para manipular controles existentes. Con el apuntador se puede seleccionar, mover y cambiar el tamaño de los controles. Cajas de Imágenes. Las cajas de imágenes pueden contener iconos. Este control también es un control grafico que puede desplegar una imagen. Etiquetas. Son mensajes de texto desplegados que no pueden ser cambiados por el usuario. El texto puede ser cambiado durante la ejecución de la aplicación en respuesta a un evento. Caja de Texto. Una caja de texto es el área en la cual el texto es dado por el usuario o desplegado por la aplicación. Puede contener una o más líneas de texto y pueden ser ubicadas con barras de desplazamiento (Scrooll bars). Viñetas. Los marcos proporcionan una forma visual de resaltar y /o separar las partes de un formulario simplemente dibujando una caja alrededor de controles específicos, puede tener un encabezado. Botón de Comando. Un botón de comando transmite una acción cuando el usuario lo elige. Caja de Verificación. Una caja de verificación es usada en una opción que puede ser prendida o apagada. Cuando el usuario selecciona la opción, una ‘X’ es desplegada en el botón de verificación. Botones de Opción. A diferencia de las cajas de verificación, los botones de opción trabajan en grupos. Cuando el usuario selecciona un botón, todos los demás se desactivan. Lo que significa que los botones de opción se utilizan para selecciones exclusivas. LIP 27 Benemérita Universidad Autónoma de Puebla Cajas Combinadas. Las cajas combinadas mezclan cajas de listado con cajas de texto. Se utiliza este control cuando se desea dar a los usuarios la opción de introducir sus propias elecciones además de las que proporciona el listado. Este control también permite mostrar un tipo de listado especializado denominado caja de listado desplegable. Combina caja de texto con caja de listado. Cajas de listados. Se utilizan cuando se desea proporcionar a los usuarios una lista de elementos de los que debe hacer una elección. Barras de Desplazamientos Horizontales y Verticales. Los controles para las barras de desplazamiento verticales y horizontales ofrecen otra forma de obtener información del usuario. Temporizadores. A diferencia de todos los controles de la edición estándar de Visual Basic, los temporizadores siempre son invisibles para el usuario. Sólo se pueden ver durante la fase de diseño del proyecto. Caja de Drives. La caja drives encuentra y se cambia al drive o drives disponibles en el momento de la ejecución. Despliega la lista de drives disponibles. Caja de Directorios. La caja de directorios despliega los directorios y rutas del drive actual en el momento de la ejecución. Se puede usar este control para desplegar una lista jerárquica de directorios desde raíz hasta la ruta seleccionada. Caja de Archivos. La caja de archivos despliega todos los archivos dados en un directorio. Se puede desplegar una lista de archivos basados en atributos. Formas. El control de formas despliega círculos, cuadrados, óvalos, rectángulos, rectángulos o cuadrados redondeados. Línea. El control de líneas despliega líneas horizontales, verticales o diagonales se puede usar el control de líneas para dibujar formas. LIP 28 Benemérita Universidad Autónoma de Puebla Acceso de datos. El control de datos permite crear aplicaciones de despliegue, edición y actualización de información de algunos tipos de bases de datos existentes. Se pueden usar otros controles de reconocimiento de datos con el control de datos para desplegar de información de esa base de datos. Visual Basic implementa acceso de datos incorporando las mismas bases que ocupa y da de alta Microsoft Access. Cliente OLE. El control OLE permite desplegar datos de otras aplicaciones bajo Windows en aplicaciones Visual Basic, en el momento de la ejecución , se pueden editar los datos sin la aplicación en la que fue creado. Cuando se termina de editar, se cierra la aplicación, y los datos actualizados son desplegados en el formulario mediante OLE. . Caja Común de Dialogo. La caja común de diálogo permite desplegar las cajas de diálogo mas comúnmente usadas: Open, Save, Save As, Print, Color y Font, cuando se dibuja una caja de dialogo común, automáticamente se rediseña el tamaño. 4.3.8 Ventana de Edición de Código. (Ver. Figura 4.7) Aquí es donde se introduce el código que indica a Visual Basic cómo responder al evento. En la parte superior de la ventana se encuentran dos cuadros marcados con Object (objeto) y Proc (Procedimiento). El primero contiene una lista de objetos existentes en el formulario y el segundo contiene una lista de procedimientos de eventos que puede reconocer el objeto Visual Basic que se encuentra en el cuadro Object. LIP 29 Benemérita Universidad Autónoma de Puebla figura 4.7 Ventana de Edición de Código 4.4 Eventos Principales de Visual Basic 6. Entre los principales eventos que le pueden ocurrir a diferentes objetos están: Active: Ocurre cuando se seleccionan un objeto como el actual. Change: Ocurre cuando se modifica algún valor dentro del objeto. Clic: Ocurre cuando se realiza clic o Enter sobre el objeto. DblClick: Ocurre cuando se realiza doble clic sobre el objeto. GetFocus: Ocurre cuando el control recibe el “Foco”. KeyPress: Ocurre cuando una tecla es presionada. Load: Ocurre cuando una forma es cargada en memoria. LostFocus: Ocurre cuando el control deja de estar en “Foco”. MouseDown: Ocurre cuando el botón del mouse ha sido presionado. LIP 30 Benemérita Universidad Autónoma de Puebla MouseMove: Ocurre cuando es movido el mouse sobre el control. MouseUp: Ocurre cuando el botón del mouse ha sido soltado. Timer: Ocurre cuando el control “Timer” define que ha transcurrido el tiempo establecid o en la propiedad “Interval”. Unload: Ocurre cuando una ventana es descargada. Nota: Estos eventos se generan o se pueden producir en tiempo de ejecución de la aplicación y no en el tiempo de diseño. 4.5 Definición de Algunos Conceptos Básicos, con los que trabaja Visual Basic 6. Procedimiento Un procedimiento sub es un segmento de código independiente del resto, que una vez llamado por el programa, ejecuta un número determinado de instrucciones, sin necesidad de devolver ningún valor al mismo, mientras que una función siempre tendrá un valor de retorno. Función Generalmente es utilizada en una expresión porque tiene un valor de retorno. El valor de retorno ocupa el lugar de la llamada a la función donde aparece. Por ejemplo, si en una expresión aparece sin(x) se calcula el seno de la variable x y el resultado es el valor de retorno que sustituye a sin(x) en la expresión en la que aparecía. Arreglos Entre los arreglos de variables cabe distinguir dos tipos fundamentales, dependiendo de que número de elementos sea constante o pueda variar durante la ejecución del programa. LIP 31 Benemérita Universidad Autónoma de Puebla Arreglos Estáticos: cuya dimensión es siempre la misma. Arreglos Dinámicos: cuya dimensión se puede modificar durante la ejecución del programa. La declaración de un array a nivel del módulo o del formulario se hace en la sección de declaraciones del módulo o del formulario utilizando la sentencia Dim o Private, por ejemplo: Dim vector (19) as Double. Arreglos de Controles Un arreglo de controles esta formado por controles del mismo tipo que comparten el nombre y los procedimientos o funciones para gestionar los eventos. Para identificar a cada uno de los controles pertenecientes al arreglo se utiliza index o índice, que es una propiedad mas de cada control. La utilidad principal de los arrays se presenta en aquellos casos en los que el programa debe responder de forma semejante a un mismo evento sobre varios controles del mismo tipo. Matriz Una colección ordenada de datos contenidos en una variable y a la que se hace referencia mediante un único nombre de variable. Se puede hacer referencia a cada elemento de la matriz mediante un subíndice numérico. Formulario En la terminología de Visual Basic 6.0 se llama formulario a una ventana. Un formulario puede ser considerado como una especie de contenedor para los controles. Una aplicación puede tener varios formularios, pero un único formulario puede ser suficiente para las LIP 32 Benemérita Universidad Autónoma de Puebla aplicaciones más sencillas. Los formularios deben también tener un nombre ,que puede crearse siguiendo las mismas reglas que para los controles. Eventos Las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el clicar sobre un botón, el hacer doble clic sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla, elegir una opción del menú o simplemente mover el ratón. Métodos Los métodos son funciones que también son llamadas desde el programa, pero a diferencia de los procedimientos no son programadas por el usuario, sino que ya vienen ya pre – programadas con el lenguaje. Módulos Estándar (ficheros *.bas) Contienen sólo código que, en general, puede ser utilizado por distintos formularios y/o controles del proyecto e incluso por varios proyectos. Por ejemplo puede prepararse un módulo estándar de funciones matemáticas que sea de utilidad general. Módulos de Clase (ficheros *.cls) Contienen clases definidas por el usuario. Las clases son como formularios o controles complejos, sin interfase grafica de usuario. LIP 33 Benemérita Universidad Autónoma de Puebla CAPITULO 5 DESARROLLO DE LIP Una vez que se tiene un análisis previo de toda la información, los recursos, las necesidades, las interfaces de usuarios, etc. Es posible entonces integrar toda esa información para que en base a esta obtener la codificación del sistema propuesto, que consiste en un sistema por módulos, como se describió en el capitulo 1. 5.1 Aspectos Generales para las Formas. Todas las pantallas se diseñaron de modo que resulten atractivas para el usuario, se utilizaron colores ya que por lo general la percepción del color es otra forma de llamar la atención de cualquier usuario; al igual se diseñaron los botones y etiquetaron con PhotoShop 6 con un color similar al del fondo de la aplicación en vez de usar los botones estándar que proporciona Visual Basic, esto fue con el fin de pretender dar una idea más visual de la función que dicho botón realiza y el usuario pueda identificar el tipo de información que puede encontrar ahí. En la mayoría de las pantallas que se presentan en este sistema se encuentran 2 objetos que son: dos botones (icono de teoría e icono de regreso), así como en las pantallas de las distribuciones discretas cuenta con 5 objetos más, que son otros 5 botones para calcular cualquiera de los 5 casos de probabilidad (mayor, menor, mayor o igual, menor o igual, exactamente) que se requieran. En cada botón que contiene cada pantalla del sistema, muestra pequeños mensajes de texto al pasar el puntero del mouse sobre cada botón. LIP 34 Benemérita Universidad Autónoma de Puebla 5.2 Consideraciones de Diseño. A medida que uno se vaya moviendo por cada una de las pantallas propias del sistema. Lo primero que hay que tomar en cuenta es describir el objetivo principal de las pantallas y posteriormente los objetos utilizados a éstas. El código correspondiente a los eventos, es descrito más adelante en un Apéndice A (Pseudocódigo de Procedimientos), donde se da una idea general del procedimiento. En algunas partes del pseudocódigo se hace mención de Objetos, Variables, Procedimientos y Funciones Globales del Apéndice A. Y se hizo así porque las variables son de tipo global; y los procedimientos y funciones son generales para los distintos servicios. Noté que algunos procedimientos y funciones se mencionaron en la explicación de el entorno de Visual Basic. Ahora empezaremos a describir todas las pantallas de nuestro sistema. LIP 35 Benemérita Universidad Autónoma de Puebla 5.3 Aplicaciones de LIP “Laboratorio Interactivo de Probabilidad” Pantalla principal del Sistema (Ver. Fig. 5.1) Nombre de la Pantalla: Presentación del Sistema Descripción de la Interfaz: Esta es la primera pantalla que aparecerá al ejecutar el sistema. Esta pantalla solamente nos muestra el nombre de la aplicación y un botón para entrar al menú principal del sistema. Figura 5.1 Presentación del Sistema Objetos de la Interfaz. Objeto: Fondo 1. Nombre del Objeto: Pantalla principal. Objeto: Botón de comando. LIP 36 Benemérita Universidad Autónoma de Puebla Eventos que ocurren: Form Load, Clic, MouseDown, Mouseup. Pantalla del Menú Principal de LIP (Ver. Fig. 5.2) Nombre de la Pantalla: Temas Descripción de la Interfaz: Este es el menú principal de cada una de los temas que trata este sistema. En esta pantalla se muestra el titulo Temas, y 6 objetos: que son 6 botones de orden para acceder a cada tema deseado. Figura 5.2 Menú Principal de la Aplicación Objetos de la Interfaz. Objeto: Fondo2 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: Botones de Comando. LIP 37 Benemérita Universidad Autónoma de Puebla Nombre: Ejecutar. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla de Combinatoria (Ver. Fig. 5.3) Nombre de la Forma: Combinatoria. Descripción de la Interfaz: Esta pantalla es una herramienta que nos sirve como una especie de calculadora, que nos sirve para hacer cálculos de combinatoria. Esta pantalla nos muestra el titulo y 2 parámetros de entrada y uno de salida. Y un 2 botones de comando que uno que hace los cálculos correspondientes, el segundo regresa al menú principal. Figura. 5.3 Pantalla Combinaciones Objetos de la Interfaz. Objeto: Fondo3 Nombre del Objeto: Letrero LIP 38 Benemérita Universidad Autónoma de Puebla Función: Muestra Fondo y Letrero Objeto: 3 Botones de Comando Nombre: Ejecutar, Regresar, Teoría Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla de Permutaciones (Ver. Fig. 5.4) Nombre de la Pantalla: Permutaciones. Descripción de la Interfaz: Esta pantalla es una herramienta que nos sirve como una especie de calculadora, que nos sirve para hacer cálculos de Permutaciones. Esta pantalla nos muestra un marco que contiene los diferentes tipo de permutaciones, los cuales se pueden ir eligiendo conforme a unos botones de opción, el titulo y 2 parámetros uno de entrada, el segundo que es el de salida. Y un 2 botones de comando que uno que hace los cálculos correspondientes, el segundo regresa al menú principal. Figura 5.4. Pantalla Permutaciones LIP 39 Benemérita Universidad Autónoma de Puebla Objetos de la Interfaz. Objeto: Fondo4 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 3 Botones de Comando, y 5 Botones de Opción. Nombre: Ejecutar, Regresar, y Teoría. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla del Menú Distribuciones Discretas (Ver. Fig. 5.5) Nombre de la Pantalla: Distribuciones Discretas Descripción de la Interfaz: Este es el menú que presenta las Diferentes distribuciones discretas con las que puede trabajar, que son las siguientes: Distribución Binomial, Distribución Binomial Negativa, Distribución Geométrica, Distribución Hipergeometrica, Distribución de Poisson. Cuenta con 7 botones de orden, 5 son para acceder a cada una de las distribuciones mencionadas y los otros son para regresar al menú principal y salir del sistema. LIP 40 Benemérita Universidad Autónoma de Puebla Figura 5.5. Pantalla del Menú de las Distribuciones Discretas Objetos de la Interfaz. Objeto: Fondo5 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 7 Botones de Comando. Nombre: Ejecutar y Regresar a menú principal. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla del Menú Distribuciones Continuas (Ver. Fig. 5.6) Nombre de la Pantalla: Distribuciones Continuas Descripción de la Interfaz: Este es el menú que presenta las Diferentes distribuciones Continuas con las que puede trabajar, que son las siguientes: Distribución Uniforme. LIP 41 Benemérita Universidad Autónoma de Puebla Distribución Exponencial, Distribución Normal. Cuenta con 5 botones de orden, 3 son para acceder a cada una de las distribuciones mencionadas y los otros son para regresar al menú principal y salir del sistema. Figura 5.6. Pantalla del Menú de las Distribuciones Continuas Objetos de la Interfaz. Objeto: Fondo 6 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 7 Botones de Comando. Nombre: Ejecutar y Regresar a menú principal. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla de Simulación (Ver. Fig. 5.7) Nombre de la Pantalla: Simulaciones LIP 42 Benemérita Universidad Autónoma de Puebla Descripción de la Interfaz: Este es el menú que presenta las Diferentes Simulaciones as con las que puede trabajar y analizar, que son las siguientes: Lanzamiento de un dado, lanzamiento de una Moneda, Problema del Cumpleaños, Juego de Cartas, Problema de las Caminatas Aleatorias. Cuenta con 7 botones de orden, 5 son para acceder a cada una de las Simulaciones mencionadas y los otros son para regresar al menú principal y salir del sistema. Figura 5.7. Pantalla del Menú de las Simulaciones Objetos de la Interfaz. Objeto: Fondo 7 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero LIP 43 Benemérita Universidad Autónoma de Puebla Objeto: 7 Botones de Comando son los siguientes: 5 para acceder a las diferentes Simulaciones y 2 para salir y regresar al menú principal . Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla de La Distribución Binomial (Ver. Fig. 5.8) Nombre de la Pantalla: Distribución Binomial Descripción de la Interfaz: Este es el menú que presenta la Distribución Binomial con la que puede trabajar y analizar, en esta pantalla se pueden hacer los cálculos correspondientes de cualquiera de los 5 casos de probabilidad que se requiera y que ya se han mencionado anteriormente. Cuenta con 7 botones de orden, 5 son para calcular cualquier probabilidad requerida, otros son para regresar al menú principal y teoría de la distribución. Figura 5.8 Pantalla de la Distribución Binomial LIP 44 Benemérita Universidad Autónoma de Puebla Objetos de la Interfaz. Objeto: Fondo 8 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 7 Botones de Comando 5 Cajas de texto, 3 para datos de entrada y 2 para datos de salida. 4 Botones de Opción, para seleccionar los 4 tipos de grafica (Barras, Barras 3D, Áreas, de Polígono.) 2 Controles de etiqueta, para presentar los resultados de Media y varianza. 1 Control Grafico, para poder representar gráficamente los resultados obtenidos y así poder analizar su comportamiento. Eventos que ocurren. Clic, MouseDown, Mouseup,SetFocus, validate. Nombre: Ejecutar y Regresar a menú principal. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla de La Distribución Binomial Negativa (Ver. Fig. 5.9) Nombre de la Pantalla: Distribución Binomial Negativa Descripción de la Interfaz: Este es el menú que presenta la Distribución Binomial Negativa con la que puede trabajar y analizar, en esta pantalla se pueden hacer los cálculos correspondientes de cualquiera de los 5 casos de probabilidad como en la Distribución Binomial que anteriormente se mostró. Como se puede apreciar en esta pantalla se muestra el cuadro de dialogo de ayuda al hacer clic sobre el botón de orden Teoría, a su vez este cuenta con un botón de orden para poder imprimir la teoría si así se desea. LIP 45 Benemérita Universidad Autónoma de Puebla Figura 5.9 Cuadro de Teoría de la Distribución Binomial Negativa Objetos de la Interfaz. Objeto: Fondo 9 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 7 Botones de Comando 5 Cajas de texto, 3 para datos de entrada y 2 para datos de salida. 4 Botones de Opción, para seleccionar los 4 tipos de grafica (Barras, Barras 3D, Áreas, de Polígono.) 2 Controles de etiqueta, para presentar los resultados de Media y varianza. 1 Control Grafico, para poder representar gráficamente los resultados obtenidos y así poder analizar su comportamiento. Eventos que ocurren. Clic, MouseDown, Mouseup,SetFocus, validate. LIP 46 Benemérita Universidad Autónoma de Puebla Nombre: Ejecutar y Regresar a menú principal. Eventos que ocurren. Clic, MouseDown, Mouseup. NOTA: Las pantallas restantes de las demás distribuciones discretas mencionadas anteriormente, tienen un diseño similar a la distribuciones Binomial y Binomial Negativa. Pantalla de La Distribución Exponencial (Ver. Fig. 5.10) Nombre de la Pantalla: Distribución Exponencial Descripción de la Interfaz: Esta pantalla presenta la Distribución Exponencial con la que puede trabajar y analizar, en esta pantalla se pueden hacer los cálculos correspondientes de cualquiera de los 3 casos de probabilidad (mayor, menor, intervalo) como se realizó con las distribuciones discretas. Figura. 5.10 Pantalla de la Distribución Exponencial LIP 47 Benemérita Universidad Autónoma de Puebla Objetos de la Interfaz. Objeto: Fondo 10 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 3 Botones de Comando 4 Cajas de texto, 3 para datos de entrada y 1 para datos de salida. 3 Botones de Opción, para seleccionar la probabilidad requerida (menor, mayor, intervalo). 2 Controles de etiqueta, para presentar los resultados de Media y varianza. 1 Caja de Imagen, para poder representar los resultados obtenidos y así poder analizar su comportamiento de la distribución exponencial. Eventos que ocurren. Clic, MouseDown, Mouseup,SetFocus, validate. Nombre: Ejecutar y Regresar a menú principal. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla de La Distribución Normal (Ver. Fig. 5.11) Nombre de la Pantalla: Distribución Normal. Descripción de la Interfaz: Esta pantalla presenta la Distribución Exponencial con la que puede trabajar y analizar, en esta pantalla se pueden hacer los cálculos correspondientes de cualquiera de los 3 casos de probabilidad (mayor, menor, intervalo), tanto para el caso de datos no estandarizados, así como también para el caso de datos ya estandarizados. Cuenta con 3 botones de comando, que son los siguientes: calcular datos, teoría y regresar. LIP 48 Benemérita Universidad Autónoma de Puebla Figura. 5.11 Pantalla de la Distribución Normal. Objetos de la Interfaz. Objeto: Fondo 11 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 7 Cajas de texto, 6 para datos de entrada y 1 para datos de salida. 2 Controles de Marco para tener agrupados los 2 distintos tipos de datos: estandarizados y no estandarizados 6 Botones de Opción, para seleccionar la probabilidad requerida (menor, mayor, intervalo) para datos estandarizados y no estandarizados. 2 Controles de etiqueta, para presentar los resultados de Media y varianza. 1 Caja de Imagen, para poder representar gráficamente los resultados obtenidos y así poder analizar su comportamiento de la distribución normal. Eventos que ocurren. Clic, MouseDown, Mouseup,SetFocus, validate. LIP 49 Benemérita Universidad Autónoma de Puebla 3 Botones de Comando Nombre: Ejecutar, Regresar y Teoría. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla del Problema del Lanzamiento de un Dado (Ver. Fig. 5.12) Nombre de la Pantalla: Lanzamiento de un Dado. Descripción de la Interfaz: Esta pantalla presenta la simulación del lanzamiento de un dado y calcula el numero de veces que cae cada cara del dado y su frecuencia correspondiente, en esta simulación nos muestra todas las imágenes de las caras del dado en las cuales cayo después de haber sido lanzado. Cuenta con 3 botones de comando, que son los siguientes: Lanzar dado, teoría y regresar. Figura. 5.12 Simulación del Lanzamiento de un Dado . LIP 50 Benemérita Universidad Autónoma de Puebla Objetos de la Interfaz. Objeto: Fondo 12 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 13 Cajas de texto, 12 para datos de entrada y 1 para datos de salida. 1 Matriz unidimensional de controles de Imagen, para poder representar gráficamente los resultados obtenidos del lanzamiento del dado. 1 Timer (Temporizador ) para controlar el tiempo que gira el dado. Eventos que ocurren. Clic, MouseDown, Mouseup,SetFocus, validate. 3 Botones de Comando Nombre: Ejecutar, Regresar y Teoría. Eventos que ocurren. Clic, MouseDown, Mouseup. Pantalla del Problema de las Caminatas Aleatorias (Ver. Fig. 5.13) Nombre de la Pantalla: Caminatas Aleatorias. Descripción de la Interfaz: Esta pantalla presenta la simulación de las Caminatas Aleatorias, en esta simulación nos muestra el recorrido que hace una persona moviéndose en forma aleatoria en un plano, y termina hasta llegar al mismo lugar o después de haber dado 200 pasos. Cuenta con 4 botones de comando, que son los siguientes: empezar recorrido, limpiar recorrido, teoría y regresar. LIP 51 Benemérita Universidad Autónoma de Puebla Figura. 5.13 Simulación de las Caminatas Aleatorias. Objetos de la Interfaz. Objeto: Fondo 13 Nombre del Objeto: Letrero Función: Muestra Fondo y Letrero Objeto: 3 Cajas de texto. 1 caja de imagen, para poder graficar el plano y el recorrido aleatorio que hace la persona. 4 Botones de Comando Nombre: empezar recorrido, limpiar recorrido, regresar y teoría. Eventos que ocurren. Clic, MouseDown, Mouseup. LIP 52 Benemérita Universidad Autónoma de Puebla Apéndice A Código de los Procedimientos más importantes del Sistema Interfaz de Presentación del Sistema (Ver Fig. 5.1) Private Sub Form_Load() picFondo.Left = (Screen.Width / 2) - (picFondo.Width / 2) picFondo.Top = (Screen.Height / 2) - (picFondo.Height / 2) lblTitulo.Visible = False End Sub Private Sub imgentrar_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgentrarsp.Visible = False imgentrarp.Visible = True End Sub Private Sub imgentrar_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgentrarp.Visible = False imgentrarsp.Visible = True End Sub Private Sub imgentrar_Click() frmIndice.Show Unload frmPantalla End Sub Interfaz del Menú Principal del Sistema (Ver Fig. 6.2) Private Sub imgcombi_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgcombip.Visible = True imgcombisp.Visible = False End Sub Private Sub imgcombi_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgcombip.Visible = False imgcombisp.Visible = True End Sub Private Sub imgpermuta_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgpermutap.Visible = True imgpermutasp.Visible = False End Sub LIP 53 Benemérita Universidad Autónoma de Puebla Private Sub imgpermuta_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgpermutap.Visible = False imgpermutasp.Visible = True End Sub Private Sub imgdiscre_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgdiscrep.Visible = True imgdiscresp.Visible = False End Sub Private Sub imgdiscre_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgdiscrep.Visible = False imgdiscresp.Visible = True End Sub Private Sub imgContinua_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgcontinuap.Visible = True imgcontinuasp.Visible = False End Sub Private Sub imgcontinua_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgcontinuap.Visible = False imgcontinuasp.Visible = True End Sub Private Sub imgSimulacion_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgsimulacionp.Visible = True imgsimulacionsp.Visible = False End Sub Private Sub imgSimulacion_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgsimulacionp.Visible = False imgsimulacionsp.Visible = True End Sub Private Sub imgSalir_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgsalirp.Visible = True imgsalirsp.Visible = False End Sub Private Sub imgSalir_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgsalirp.Visible = False imgsalirsp.Visible = True End Sub Private Sub imgSalir_Click() End LIP 54 Benemérita Universidad Autónoma de Puebla End Sub Private Sub imgpermuta_Click() frmPermutaciones.Show Me.Hide End Sub Private Sub imgcombi_Click() frmCombinaciones.Show Me.Hide End Sub Private Sub imgdiscre_Click() frmDdiscretas.Show Me.Hide End Sub Private Sub imgcontinua_Click() frmDcontinuas.Show Me.Hide End Sub Private Sub imgsimulacion_Click() frmSimulacion.Visible = True Me.Hide End Sub Interfaz del Menú Principal de las Distribuciones Discretas Private Sub imgSalida_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) imgSalida_e.Visible = True End Sub Private Sub imgSalida_Click() End End Sub Private Sub imgBinomial_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgBinomialp.Visible = True imgBinomialsp.Visible = False End Sub Private Sub imgBinomial_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgBinomialp.Visible = False imgBinomialsp.Visible = True End Sub Private Sub imgBnegativa_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgBnegativap.Visible = True LIP 55 Benemérita Universidad Autónoma de Puebla imgBnegativasp.Visible = False End Sub Private Sub imgBnegativa_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgBnegativap.Visible = False imgBnegativasp.Visible = True End Sub Private Sub imgGeometrica_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgGeometricap.Visible = True imgGeometricasp.Visible = False End Sub Private Sub imgGeometrica_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgGeometricap.Visible = False imgGeometricasp.Visible = True End Sub Private Sub imgHipergeometrica_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgHipergeometricap.Visible = True imgHipergeometricasp.Visible = False End Sub Private Sub imgHipergeometrica_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgHipergeometricap.Visible = False imgHipergeometricasp.Visible = True End Sub Private Sub imgPoisson_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgPoissonp.Visible = True imgPoissonsp.Visible = False End Sub Private Sub imgPoisson_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgPoissonp.Visible = False imgPoissonsp.Visible = True End Sub Private Sub imgSalir_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgSalirp.Visible = True imgSalirsp.Visible = False End Sub Private Sub imgSalir_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgSalirp.Visible = False imgSalirsp.Visible = True End Sub LIP 56 Benemérita Universidad Autónoma de Puebla Private Sub imgMenu_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgMenup.Visible = True imgMenusp.Visible = False End Sub Private Sub imgMenu_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgMenup.Visible = False imgMenusp.Visible = True End Sub Private Sub imgMenu_Click() frmIndice.Show Unload frmDdiscretas End Sub Private Sub imgSalir_Click() End End Sub Private Sub imgBinomial_Click() frmbinomial.Show Unload frmDdiscretas End Sub Private Sub imgBnegativa_Click() frmBinomial_Negativa.Show Unload frmDdiscretas End Sub Private Sub imgGeometrica_Click() FrmGeometrica.Show Unload frmDdiscretas End Sub Private Sub imgHipergeometrica_Click() frmHipergeometrica.Show Unload frmDdiscretas End Sub Private Sub imgPoisson_Click() frmPoisson.Visible = True Unload frmDdiscretas End Sub Interfaz de la Distribución Binomial Option Explicit 'Este procedimiento calcula la probabilidad de X = K 'eventos sucedan LIP 57 Benemérita Universidad Autónoma de Puebla '**************************************** ******************************** Private Sub imgcalcular_Click() Dim Amt As Integer, n2 As Single, j As Integer Dim resultado As Double, resul_bino As Single, temporal As Integer If (txtDato1.Text <> "") And (txtDato2.Text <> "") And _ (txtDato3.Text <> "") And (IsNumeric(txtDato1.Text)) And _ (IsNumeric(txtDato2.Text)) And (IsNumeric(txtDato3.Text)) Then If (IsNumeric(txtDato3.Text)) Then Amt = CInt(txtDato1.Text): j = CInt(txtDato2.Text) n2 = CSng(txtDato3.Text): Graph1.DrawMode = 1 If (Amt > 0) And (Amt <= 170) Then If (n2 >= 0) And (n2 <= 1) Then If (j >= 0) And (j <= Amt) Then ' variable que sirve como ayuda para enmascarar la grafica y 'poder graficar de sde el punto 0 en el eje de las accisas lblMedia2.Caption = media(Amt, n2) lblvar2.Caption = varianza(Amt, n2) temporal = j + 1 '************************************************************************ ' inicializa toda la grafica en valor cero inicializar_grafica Amt '************************************************************************ numerar_eje Amt Select Case j Case Is = 0 D_Binomial (Amt), j, n2, resul_bino Graph1.ThisPoint = temporal Graph1.GraphData = resul_bino txtResultado.Text = Format(resul_bino, formato) txtResfinal.Text = Format(resul_bino, formato) Graph1.DrawMode = 2: Graph1.Visible = True Case Is = 1 D_Binomial (Amt), j, n2, resul_bino Graph1.ThisPoint = temporal Graph1.GraphData = resul_bino txtResultado.Text = Format(resul_bino, formato) LIP 58 Benemérita Universidad Autónoma de Puebla txtResfinal.Text = Format(resul_bino, formato) Graph1.DrawMode = 2: Graph1.Visible = True Case 2 To Amt D_Binomial Amt, j, n2, resul_bino txtResultado.Text = Format(resul_bino, formato) txtResfinal.Text = Format(resul_bino, formato) Graph1.ThisPoint = j + 1 Graph1.GraphData = resul_bino Graph1.DrawMode = 2: Graph1.Visible = True End Select Else MsgBox " Recuerde que el Numero de exitos debe estar es un rango de 0 - N" _ , vbExclamation txtDato2.Text = "" txtDato2.SetFocus End If Else MsgBox "Recuerde que La probabilidad Debe estar en un rango de 0 a 1" _ , vbExclamation txtDato3.Text = "" txtDato3.SetFocus End If Else MsgBox "¡ ERROR ! El Número de Pruebas Debe estar en el intervalo de ( 0 a 170) ", vbExclamation txtDato1 = "" txtDato1.SetFocus End If Else MsgBox "El dato que proporciono en el campo probabilidad no es un número ", vbExclamation txtDato3 = "" txtDato3.SetFocus End If Else MsgBox " ¡ ERROR no se han proporcionado todos los datos de Entrada !", vbExclamation End If End Sub '************************************************************************ '*********************************************** ************************* ' Este procedimiento calcula la probabilidad x >= K o sea ' que calcula la probabilidad de que al menos x exitos sucedan Private Sub imgcalcular2_Click() Dim j As Integer, resultado As Single, resul_bino As Single Dim Amt As Integer, n2 As Single, t$, temporal As Integer LIP 59 Benemérita Universidad Autónoma de Puebla If (txtDato1.Text <> "") And (txtDato2.Text <> "") And _ (txtDato3.Text <> "") And (IsNumeric(txtDato1.Text)) And _ (IsNumeric(txtDato2.Text)) And (IsNumeric(txtDato3.Text)) Then If (IsNumeric(txtDato3.Text)) Then Amt = CInt(txtDato1.Text): j = CInt(txtDato2.Text) n2 = CSng(txtDato3.Text): resultado = 0 lblMedia2.Caption = media(Amt, n2) lblvar2.Caption = varianza(Amt, n2) If (Amt > 0) And (Amt <= 170) Then If (n2 >= 0) And (n2 <= 1) Then If (j >= 0) And (j <= Amt) Then temporal = j + 1 Graph1.DrawMode = 1 ' Set the GraphType property, grafica de abrras 3D 'Graph1.GraphType = 4 '************************************************************************ ' codigo que limpia la grafica e inicializa la grafica en valor cero inicializar_grafica Amt '************************************************************************ numerar_eje Amt Do While j <= Amt D_Binomial (Amt), j, n2, resul_bino 'If temporal <= Graph1.NumP oints Then Graph1.ThisPoint = temporal Graph1.GraphData = resul_bino 'End If temporal = temporal + 1 resultado = resultado + resul_bino t$ = t$ + "Probabilidad ( " + Trim$(Str(j)) + ") : " + Format$(resul_bino, formato) + vbCrLf j=j+1 Loop txtResultado.Text = t$ txtResfinal.Text = Format$(resultado, formato) Graph1.DrawMode = 2 Graph1.Visible = True Else MsgBox " Recuerde que el Numero de exitos debe estar es un rango de 0 - N", vbExclamation txtDato2.Text = "" LIP 60 Benemérita Universidad Autónoma de Puebla txtDato2.SetFocus End If Else MsgBox " Recuerde que la Probabilidad Debe estar es un rango de 0 - 1", vbExclamation txtDato3.Text = "" txtDato3.SetFocus End If Else MsgBox "¡ ERROR ! El Numero de Pruebas Debe estar en el intervalo de ( 0 a 170) ", vbExclamation txtDato1 = "" txtDato1.SetFocus End If Else MsgBox "El dato que proporciono en el campo probabilidad no es un numero ", vbExclamation txtDato3.Text = "" txtDato3.SetFocus End If Else MsgBox "¡ ERROR verifique los Datos de Entrada !", vbExclamation End If End Sub '************************************************************************ '************************************************************************ ' Este procedimiento calcula la probabilidad x = < K o sea ' que calcula la probabilidad de que a lo mas x exitos sucedan Private Sub imgcalcular3_Click() Dim j As Integer, resultado As Single, resul_bino As Single Dim Amt As Integer, n2 As Single, t$, temporal As Integer If (txtDato1.Text <> "") And (txtDato2.Text <> "") And _ (txtDato3.Text <> "") And (IsNumeric(txtDato1.Text)) And _ (IsNumeric(txtDato2.Text)) And (IsNumeric(txtDato3.Text)) Then If (IsNumeric(txtDato3.Text)) Then Amt = CInt(txtDato1.Text): j = CInt(txtDato2.Text) n2 = CSng(txtDato3.Text): resultado = 0 lblMedia2.Caption = media(Amt, n2) lblvar2.Caption = varianza(Amt, n2) If (Amt > 0) And (Amt <= 170) Then If (n2 >= 0) And (n2 <= 1) Then If (j >= 0) And (j <= Amt) Then temporal = j + 1 LIP 61 Benemérita Universidad Autónoma de Puebla Graph1.DrawMode = 1 ' Set the GraphType property ' Graph1.GraphType = 4 '********** ************************************************************** ' codigo que limpia la grafica e inicializa la grafica en valor cero inicializar_grafica Amt '******************************************************************* ***** numerar_eje Amt Do While j >= 0 D_Binomial (Amt), j, n2, resul_bino 'If temporal > 0 Then Graph1.ThisPoint = temporal Graph1.GraphData = resul_bino 'Graph1.LabelText = Contador$ 'End If temporal = temporal - 1 resultado = resultado + resul_bino t$ = t$ + "Probabilidad ( " + Trim(Str(j)) + ") : " + Format$(resul_bino, formato) + vbCrLf j=j-1 Loop txtResultado.Text = t$ txtResfinal.Text = Format$(resultado, formato) Graph1.DrawMode = 2 Graph1.Visible = True Else MsgBox " Recuerde que el Numero de exitos debe estar es un rango de 0 - N", vbExclamation End If Else MsgBox " Recuerde que la Probabilidad Debe estar es un rango de 0 - 1", vbExclamation End If Else MsgBox "¡ ERROR ! El Numero de Pruebas Debe estar en el intervalo de ( 0 a 170) ", vbExclamation txtDato1 = "" txtDato1.SetFocus End If Else MsgBox "El dato que proporciono en el campo probabilidad no es un numero ", vbExclamation txtDato3 = "" End If Else LIP 62 Benemérita Universidad Autónoma de Puebla MsgBox " ¡ ERROR verifique los Datos de Entrada !", vbExclamation End If End Sub '************************************************************************ '************************************************************************ ' Este procedimiento calcula la probabilidad x < K o sea ' que calcula la probabilida d de que MENOS DE x exitos sucedan Private Sub imgcalcular4_Click() Dim j As Integer, resultado As Single, resul_bino As Single Dim Amt As Integer, n2 As Single, t$, temporal As Integer If (txtDato1.Text <> "") And (txtDato2.Text <> "") And _ (txtDato3.Text <> "") And (IsNumeric(txtDato1.Text)) And _ (IsNumeric(txtDato2.Text)) And (IsNumeric(txtDato3.Text)) Then If (IsNumeric(txtDato3.Text)) Then Amt = CInt(txtDato1.Text): j = CInt(txtDato2.Text) n2 = CSng(txtDato3.Text): resultado = 0 lblMedia2.Caption = media(Amt, n2) lblvar2.Caption = varianza(Amt, n2) If (Amt > 0) And (Amt <= 170) Then If (n2 >= 0) And (n2 <= 1) Then If (j >= 0) And (j <= Amt) Then j=j-1 temporal = j + 1 Graph1.DrawMode = 1 '************************************************************************ ' codigo que limpia la grafica e inicializa la grafic a en valor cero inicializar_grafica Amt '************************************************************************ numerar_eje Amt Do While j >= 0 D_Binomial (Amt), j, n2, resul_bino 'If temporal > 0 Then Graph1.ThisPoint = temporal Graph1.GraphData = resul_bino 'End If temporal = temporal - 1 resultado = resultado + resul_bino t$ = t$ + "Probabilidad ( " + Str(j) + ") : " + Format$(resul_bino, formato) + vbCrLf j=j–1 LIP 63 Benemérita Universidad Autónoma de Puebla Loop txtResultado.Text = t$ txtResfinal.Text = Format$(resultado, formato) Graph1.DrawMode = 2 Graph1.Visible = True Else MsgBox " Recuerde que el Numero de exitos debe estar es un rango de 0 - N", vbExclamation txtDato2.Text = "" txtDato2.SetFocus End If Else MsgBox " Recuerde que la Probabilidad Debe estar es un rango de 0 - 1", vbExclamation txtDato1.Text = "" txtDato1.SetFocus End If Else MsgBox "¡ ERROR ! El Numero de Pruebas Debe estar en el intervalo de ( 0 a 170) ", vbExclamation txtDato1 = "" txtDato1.SetFocus End If Else MsgBox "El dato que proporciono en el campo probabilidad no es un numero ", vbExclamation txtDato3.Text = "" txtDato3.SetFocus End If Else MsgBox " ¡ ERROR, verifique los Datos de Entrada !", vbExclamation End If End Sub '************************************************************************ '***************************************** ******************************* ' Este procedimiento calcula la probabilidad x > K o sea ' que calcula la probabilidad de que MAS DE x exitos sucedan Private Sub imgcalcular5_Click() Dim j As Integer, resultado As Single, resul_bino As Single Dim Amt As Integer, n2 As Single, t$, temporal As Integer If (txtDato1.Text <> "") And (txtDato2.Text <> "") And _ (txtDato3.Text <> "") And (IsNumeric(txtDato1.Text)) And _ (IsNumeric(txtDato2.Text)) And (IsNumeric(txtDato3.Text)) Then If (IsNumeric(txtDato3.Text)) Then Amt = CInt(txtDato1.Text): j = CInt(txtDato2.Text) LIP 64 Benemérita Universidad Autónoma de Puebla n2 = CSng(txtDato3.Text): resultado = 0 lblMedia2.Caption = media(Amt, n2) lblvar2.Caption = varianza(Amt, n2) If (Amt > 0) And (Amt <= 170) Then If (n2 >= 0) And (n2 <= 1) Then If (j >= 0) And (j <= Amt) Then j = j + 1: temporal = j + 1 Graph1.DrawMode = 1 ' Set theGraphType property 'Graph1.GraphType = 4 '************************************************************************ ' codigo que limpia la grafica e inicializa la grafica en valor cero inicializar_grafica Amt '************************************************************************ numerar_eje Amt Do While j <= Amt D_Binomial (Amt), j, n2, resul_bino 'if temporal Graph1.ThisPoint = temporal Graph1.GraphData = resul_bino resultado = resultado + resul_bino t$ = t$ + "Probabilidad ( " + Str(j) + ") : " + Format$(resul_bino, formato) + vbCrLf j=j+1 temporal = temporal + 1 Loop txtResultado.Text = t$ txtResfinal.Text = Format$(resultado, formato) Graph1.DrawMode = 2 Graph1.Visible = True Else MsgBox " Recuerde que el Numero de exitos debe estar es un rango de 0 - N", vbExclamation txtDato2.Text = "" txtDato2.SetFocus End If Else MsgBox " Recuerde que la Probabilidad Debe estar es un rango de 0 - 1", vbExclamation txtDato3.Text = "" txtDato3.SetFocus End If Else MsgBox "¡ ERROR ! El Numero de Pruebas Debe estar en el intervalo de ( 0 a 170) ", LIP 65 Benemérita Universidad Autónoma de Puebla vbExclamation txtDato1 = "" txtDato1.SetFocus End If Else MsgBox "El dato que proporciono en el campo probabilidad no es un numero ", vbExclamation txtDato3.Text = "" txtDato3.SetFocus End If Else MsgBox " ¡ ERROR verifique los Datos de Entrada !", vbExclamation End If End Sub '************************************************************************ '************************************************************************ ‘Función que calcula los valores probabilisticos de la distribución binomial, este modulo es ‘importante ya que cuando requerimos de el nada mas lo mandamos a llamar desde ‘cualquier parte de este formulario Public Sub D_Binomial(K As Integer, x As Integer, p As Single, binomial As Single) Dim f7 As Double, f8 As Double, f9 As Double, w As Integer, q As Single w=K-x q=1-p Combinacion K, (x), f7 potencia p, (x), f8 potencia q, w, f9 binomial = f7 * f8 * f9 End Sub '****************************************************************** ****** Private Sub cmdGrafica_Click() Graph1.GraphData = 0 Graph1.NumPoints = 2 End Sub '************************************************************************ ‘Procedimiento que inicializa toda la grafica en Valor cero Private Sub inicializar_grafica(Amt As Integer) Dim M As Integer ' Asigna el numero de puntos a graficar en el eje " X " ' que va del numero 0 a Graph1.NumPoints Graph1.NumPoints = Amt + 1 For M = 1 To Graph1.NumPoints Graph1.ThisPoint = M LIP 66 Benemérita Universidad Autónoma de Puebla Graph1.GraphData = 0 Next M End Sub '************************************************************************ '************************************************************************ ‘Procedimiento que numera todos los valores de la grafica Private Sub numerar_eje(Amt As Integer) Dim s As Integer ' Asigna el numero de puntos a graficar en el eje " X " ' que va del numero 0 a Graph1.NumPoints Graph1.NumPoints = Amt + 1 For s = 1 To Graph1.NumPoints Graph1.ThisPoint = s Graph1.LabelText = (s - 1) Next s End Sub '************************************************************************ '************************************************************************ ' Procedimientos que eligen el modo de grafico con los que se desea que aparezca en la grafica,odos t estos procedimientos son Botones de Opción. Private Sub optAreas_Click() Graph1.GraphType = gphArea End Sub Private Sub optBarras_Click() Graph1.GraphType = gphBar2D End Sub Private Sub optbarras2_Click() Graph1.GraphType = gphBar3D End Sub Private Sub optLineas_Click() Graph1.GraphType = gphLine End Sub '************************************************************************ '************************************************************************ ' A continuación se crearan todos los métod os de validación para los datos de entrada Private Sub txtDato1_KeyPress(KeyAscii As Integer) If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Or KeyAscii = Asc(" ") Then Beep KeyAscii = 0 txtDato1 = "" LIP 67 Benemérita Universidad Autónoma de Puebla MsgBox " Introducir exclusivamente números enteros positivos ", vbExclamation End If End Sub Private Sub txtDato2_KeyPress(KeyAscii As Integer) If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Or KeyAscii = Asc(" ") Then Beep KeyAscii = 0 txtDato2 = "" MsgBox "Introducir exclusivamente Números enteros positivos,no se permiten espacios ", vbExclamation End If End Sub '************************************************************************ '*********************************************************************** * ‘ funciones que devuelven el valor de la media y la varianza de los valores de la ‘ distribución binomial Private Function media(N As Integer, p As Single) As Single media = Format((N * p), formato) End Function Private Function varianza(N As Integer, p As Single) As Single Dim q As Single q=1-p varianza = Format((N * p * q), formato) End Function '************************************************************************ '****************************************************** ****************** 'Todos los procedimientos que se listan a continuación, son los que hacen el efecto de los 'botones gráficos, que haga la apariencia de que se presiona cualquiera de los botones Private Sub imgcalcular_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgcalcularp.Visible = True imgcalcularsp.Visible = False End Sub Private Sub imgcalcular_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgcalcularp.Visible = False imgcalcularsp.Visible = True End Sub '************************************************************************ Interfaz de la Distribución Exponencial LIP 68 Benemérita Universidad Autónoma de Puebla Option Explicit ‘ Sección de Variables Dim F_Funcion As Double, RESUL_INTEGRACION As Single Const N = 26 '******** **************************************************************** ‘ función que calcula el argumento de la distribución exponencial Function Funcion(alfa As Single, x As Single) As Double Funcion = (Exp(-alfa * x)) * alfa End Function '***************** ******************************************************* ‘procedimiento que carga una caja de imagen donde se graficara el eje “X” y eje “Y” del ‘plano y así poder graficar la curva de la distribución exponencial Private Sub Form_Load() PctExponencial.Scale (-2, 2)-(12, -1) PctExponencial.Line (-12, -0.15)-(12, -0.15) ' ejex PctExponencial.Line (0, 2)-(0, -0.147), vbRed ' ejey End Sub '************************************************************************ ‘ procedimiento que dibuja la grafica de la distribución exponencial Private Sub grafica_Exponencial(alfa1 As Single) Dim x As Single, final As Double For x = 0 To 12 Step 0.001 final = alfa1 * Exp(-alfa1 * x) PctExponencial.DrawWidth = 1 PctExponencial.PSet (x, final), vbBlue Next x PctExponencial.Line (-12, -0.15)-(12, -0.15) ' ejex PctExponencial.Line (0, 2)-(0, -0.147), vbRed ' ejey ' divisiones End Sub '************************************************************************ ‘función que devuelve la ordenada, para poder graficar la curva de la distribución binomial Public Function obtener_ordenada(x As Single, alfa1 As Single) As Single Dim final As Single final = alfa1 * Exp(-alfa1 * x) obtener_ordenada = (final) LIP 69 Benemérita Universidad Autónoma de Puebla End Function '***************** ******************************************************* 'procedimiento que rellena el área bajo la curva de 'izquierda a derecha 'Este procedimiento se utilizara para cuando se quiera calcular ' la probabilidad Z > ? Private Sub rellena_areaDerecha(x As Single, lambda As Single) Dim ordenaday As Single, t As Single For t = x To 12 Step 0.01 ' la siguiente función: obtener_ordenada, nos da la ordena “y” para poder ' graficar ordenaday = obtener_ordenada(t, lambda) PctExponencial.DrawWidth = 1 PctExponencial.Line (t, -0.145)-(t, ordenaday), vbGreen Next t End Sub '************************************************************************ 'El siguiente procedimiento que rellena el área bajo la curva de 'izquierda a derecha 'Este proced imiento se utilizara para cuando se quiera calcular ' la probabilidad X < a? Private Sub rellena_areaIzquierda(x As Single, lambda As Single) Dim ordenaday As Single, t As Single For t = 0 To x Step 0.01 ' la siguiente funcion: obtener_ordenada, ons da la ordena y para poder ' graficar ordenaday = obtener_ordenada(t, lambda) PctExponencial.DrawWidth = 1 PctExponencial.Line (t, -0.145)-(t, ordenaday), vbGreen Next t End Sub '********************************************************** ************** 'El siguiente procedimiento que rellena el área bajo la curva de 'un intervalo dado 'Este procedimiento se utilizara para cuando se quiera calcular ' la probabilidad " ? a < X < b ?" Private Sub rellena_areaIntervalo(A As Single, B As Single, lambda As Single) Dim ordenaday As Single, t As Single For t = A To B Step 0.01 ' la siguiente función: obtener_ordenada, nos da la ordena "y" para poder ' graficar ordenaday = obtener_ordenada(t, lambda) PctExponencial.DrawWidth = 1 LIP 70 Benemérita Universidad Autónoma de Puebla PctExponencial.Line (t, -0.145)-(t, ordenaday), vbGreen Next t End Sub '************************************************************************ ‘Este algoritmo de integración llama Integración de Simpson, es muy útil para poder calcular el valor de la integral ‘requerida para poder obtener el valor requerido de la distribución exponencial Function Integracion_Simpson(A As Single, B As Single, lambda As Single) As Single Dim H As Single, SUM As Single, x As Single Dim I As Integer H = (B - A) / N SUM = 0 For I = 1 To N / 2 Step 1 x=A-H+2*H*I SUM = SUM + 4 * Funcion(lambda, x) If I <> N / 2 Then SUM = SUM + 2 * Funcion(lambda, x + H) End If Next I SUM = SUM + Funcion(lambda, A) + Funcion(lambda, B) Integracion_Simpson = SUM * H / 3 End Function '************************************************************************ ‘procedimiento que calcula la probabilidad deseada de la distribución exponencial, una vez ‘ ingresado todos los datos de entrada Private Sub imgExponencial_Click() Dim A As Single, B As Single, lambda As Single, area_a As Single, area_b As Single If (txta.Text <> "") And (txtLambda.Text <> "") Then If (IsNumeric(txta.Text)) Then If (IsNumeric(txtLambda.Text)) Then A = CSng(txta.Text) lambda = CSng(txtLambda.Text) PctExponencial.Cls If Option1 = True Then RESUL_INTEGRACION = 1 - Integracion_Simpson(0, A, lambda) txtResultado = Format(Abs(RESUL_INTEGRACION), formato) rellena_areaDerecha A, lambda End If If Option2 = True Then RESUL_INTEGRACION = Integracion_Simpson(0, A, lambda) txtResultado = Format(Abs(RESUL_INTEGRACION), formato) LIP 71 Benemérita Universidad Autónoma de Puebla rellena_areaIzquierda A, lambda End If If Option3 = True Then If (IsNumeric(txtb.Text)) Then B = CSng(txtb.Text) area_a = Integracion_Simpson(0, A, lambda) area_b = Integracion_Simpson(0, B, lambda) RESUL_INTEGRACION = area_a - area_b txtResultado = Format(Abs(RESUL_INTEGRACION), formato) rellena_areaIntervalo A, B, lambda Else MsgBox " ¡ Error ! No es un Valor Numérico", vbExclamation txtb.Text = "" txtb.SetFocus End If End If grafica_Exponencial (lambda) lblRE.Caption = ((1 / lambda)) lblRV.Caption = (1 / ((lambda) ^ 2)) Else MsgBox " ¡ Error ! No es un Valor Numérico", vbExclamation txtLambda.Text = "" txtLambda.SetFocus End If Else MsgBox " ¡ Error ! No es un Valor Numérico", vbExclamation txta.Text = "" txta.SetFocus End If Else MsgBox " ¡ Error ! Falta Completar Información de Datos", vbExclamation End If End Sub '************************************************************************ Private Sub limpia_valores() txta.Text = "": txtb.Text = "": txtResultado = "": txtLambda.Text = "" End Sub '********** ************************************************************** Private Sub Option1_Click() LIP 72 Benemérita Universidad Autónoma de Puebla limpia_valores lblb.Visible = False txtb.Visible = False caso2.Visible = False caso3.Visible = False End Sub Private Sub Option2_Click() limpia_valores lblb.Visible = False txtb.Visible = False Caso1.Visible = False caso3.Visible = False End Sub Private Sub Option3_Click() limpia_valores lblb.Visible = True txtb.Visible = True End Sub '********************************************** ************************** Private Sub imgExponencial_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) imgExponencialp.Visible = True imgExponencialsp.Visible = False End Sub Private Sub imgExponencial_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) imgExponencialp.Visible = False imgExponencialsp.Visible = True End Sub Private Sub imgregresar_Click() frmDcontinuas.Show Unload frmDExponencial End Sub A continuación se listara una serie de procedimientos globales o públicos que se pueden usar en cualquier formulario del proyecto. Todos estos procedimientos fueron muy importantes ya que se usaron ,as de una vez en el desarrollo de este sistema. Estos procedimiento están incluidos en un modulo estándar. Option Explicit Public Sub Factorial(N As Integer, F As Double) If N = 0 Then F=1 LIP 73 Benemérita Universidad Autónoma de Puebla Else F=1 Do While N > 0 F=N*F N=N-1 Loop End If End Sub Public Sub potencia(N As Single, P As Integer, resul As Double) resul = 1 Do While P > 0 resul = resul * N P=P-1 Loop End Sub Public Sub potencia2(N As Integer, P As Integer, resul As Double) resul = 1 Do While P > 0 resul = resul * N P=P-1 Loop End Sub Public Sub Permutacion(N As Integer, r As Integer, result As Double) Dim K As Integer Dim f3 As Double, f4 As Double K=N-r Factorial N, f3 Factorial K, f4 result = f3 / f4 End Sub Public Sub Combinacion(N As Integer, r As Integer, resulta As Double) Dim K As Integer Dim f5 As Double, f6 As Double Permutacion N, r, f5 Factorial r, f6 resulta = f5 / f6 End Sub Código de la Simulación de 2 dados Option Explicit Dim contador1 As Integer, contador2 As Integer, contador3 As Integer Dim contador4 As Integer, contador5 As Integer, contador6 As Integer LIP 74 Benemérita Universidad Autónoma de Puebla Dim contadortimer As Integer, cuadro As Integer, veces As Integer, i As Integer Dim pasada As Integer, detener As Boolean Const TotalCuadros = 72 'Total de cuadros de la animacion Const Xs = 72 'Xs ancho decada cuadro Const Ys = 72 'Altura de cada cuadro Private Sub imglimpiar_Click() Text1.Text = " ": Text2.Text = " ": Text3.Text = " ": Text4.Text = " ": Text5.Text = " ": Text6.Text = " ": Text7.Text = " ": Text8.Text = " ": Text9.Text = " ": Text10.Text = " ": Text11.Text = " ": Text12.Text = " ": Text13.Text = " ": Text14.Text = " ": caja1.Text = " ": caja4.Text = " ": caja7.Text = " ": caja10.Text = " ": caja13.Text = " ": caja16.Text = " ": caja19.Text = " ": caja22.Text = " ": caja2.Text = " ": caja3.Text = " ": caja5.Text = " ": caja6.Text = " ": caja8.Text = " ": caja9.Text = " ": caja11.Text = " ": caja12.Text = " ": caja14.Text = " ": caja15.Text = " ": caja17.Text = " ": caja18.Text = " ": caja20.Text = " ": caja21.Text = " ": caja23.Text = " ": caja24.Text = " ": imglimpiar.Enabled = False imglanzar.Visible = True End Sub Private Sub lbldetener_Click() detener = True contadortimer = 2 pasada = 0 Timer1.Enabled = False i = veces End Sub Private Sub imglanzar_Click() 'Dim i As Integer, Dim dado As Integer, dado2 As Integer Dim contador_1 As Integer, contador_2 As Integer, contador_3 As Integer Dim contador_4 As Integer, contador_5 As Integer, contador_6 As Integer Dim contador_7 As Integer, contador_8 As Integer, contador_9 As Integer Dim contador_10 As Integer, contador_11 As Integer, contador_12 As Integer Dim contador_13 As Integer, contador_14 As Integer, contador_15 As Integer Dim contador_16 As Integer, contador_17 As Integer, contador_18 As Integer Dim contador_19 As Integer, contador_20 As Integer, contador_21 As Integer Dim contador_22 As Integer, contador_23 As Integer, contador_24 As Integer Dim contador_25 As Integer, contador_26 As Integer, contador_27 As Integer Dim contador_28 As Integer, contador_29 As Integer, contador_30 As Integer Dim contador_31 As Integer, contador_32 As Integer, contador_33 As Integer Dim contador_34 As Integer, contador_35 As Integer, contador_36 As Integer Dim t$, K$ LIP 75 Benemérita Universidad Autónoma de Puebla If (txtVeces.Text <> "") And (txtVeces.Text <> "") Then If txtVeces.Text <= 300 Then veces = 0 veces = CInt(txtVeces.Text) i=1 imglanzar.Visible = False imgregresar.Enabled = False contador_1 = 0: contador_2 = 0: contador_3 = 0: contador_4 = 0: contador_5 = 0: contador_6 = 0: contador_7 = 0: contador_8 = 0: contador_9 = 0: contador_10 = 0: contador_11 = 0: contador_12 = 0: While i <= veces detener = False contadortimer = 0 pasada = 0 Timer1.Enabled = True Animar Randomize dado = Fix(6 * Rnd) + 1 dado2 = Fix(6 * Rnd) + 1 t$ = t$ + Trim$(Str(dado)) + vbCrLf K$ = K$ + Trim$(Str(dado2)) + vbCrLf Text13.Text = t$: Text14.Text = K$ If (dado = 1) And (dado2 = 1) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") contador_1 = contador_1 + 1 Text1.Text = Format((contador_1 / veces), formato2) ElseIf (dado = 1) And (dado2 = 2) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") contador_2 = contador_2 + 1 Text2.Text = Format((contador_2 / veces), formato2) ElseIf (dado = 1) And (dado2 = 3) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") contador_3 = contador_3 + 1 Text3.Text = Format((contador_3 / veces), formato2) ElseIf (dado = 1) And (dado2 = 4) Then LIP 76 Benemérita Universidad Autónoma de Puebla picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") contador_4 = contador_4 + 1 Text4.Text = Format((contador_4 / veces), formato2) ElseIf (dado = 1) And (dado2 = 5) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") contador_5 = contador_5 + 1 Text5.Text = Format((contador_5 / veces), formato2) ElseIf (dado = 1) And (dado2 = 6) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") contador_6 = contador_6 + 1 Text6.Text = Format((contador_6 / veces), formato2) ElseIf (dado = 2) And (dado2 = 1) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") contador_7 = contador_7 + 1 Text7.Text = Format((contador_7 / veces), formato2) ElseIf (dado = 2) And (dado2 = 2) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") contador_8 = contador_8 + 1 Text8.Text = Format((contador_8 / veces), formato2) ElseIf (dado = 2) And (dado2 = 3) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") contador_9 = contador_9 + 1 Text9.Text = Format((contador_9 / veces), formato2) ElseIf (dado = 2) And (dado2 = 4) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") contador_10 = contador_10 + 1 Text10.Text = Format((contador_10 / veces), formato2) ElseIf (dado = 2) And (dado2 = 5) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") contador_11 = contador_11 + 1 Text11.Text = Format((contador_11 / veces), formato2) ElseIf (dado = 2) And (dado2 = 6) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") contador_12 = contador_12 + 1 Text12.Text = Format((contador_12 / veces), formato2) ElseIf (dado = 3) And (dado2 = 1) Then LIP 77 Benemérita Universidad Autónoma de Puebla picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") contador_13 = contador_13 + 1 caja1.Text = Format((contador_13 / veces), formato2) ElseIf (dado = 3) And (dado2 = 2) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") contador_14 = contador_14 + 1 caja2.Text = Format((contador_14 / veces), formato2) ElseIf (dado = 3) And (dado2 = 3) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") contador_15 = contador_15 + 1 caja3.Text = Format((contador_15 / veces), formato2) ElseIf (dado = 3) And (dado2 = 4) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") contador_16 = contador_16 + 1 caja4.Text = Format((contador_16 / veces), formato2) ElseIf (dado = 3) And (dado2 = 5) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") contador_17 = contador_17 + 1 caja5.Text = Format((contador_17 / veces), formato2) ElseIf (dado = 3) And (dado2 = 6) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") contador_18 = contador_18 + 1 caja6.Text = Format((contador_18 / veces), formato2) ElseIf (dado = 4) And (dado2 = 1) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") contador_19 = contador_19 + 1 caja7.Text = Format((contador_19 / veces), formato2) ElseIf (dado = 4) And (dado2 = 2) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") contador_20 = contador_20 + 1 caja8.Text = Format((contador_20 / veces), formato2) ElseIf (dado = 4) And (dado2 = 3) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") contador_21 = contador_21 + 1 caja9.Text = Format((contador_21 / veces), formato2) ElseIf (dado = 4) And (dado2 = 4) Then LIP 78 Benemérita Universidad Autónoma de Puebla picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") contador_22 = contador_22 + 1 caja10.Text = Format((contador_22 / veces), formato2) ElseIf (dado = 4) And (dado2 = 5) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") contador_23 = contador_23 + 1 caja11.Text = Format((contador_23 / veces), formato2) ElseIf (dado = 4) And (dado2 = 6) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") contador_24 = contador_24 + 1 caja12.Text = Format((contador_24 / veces), formato2) ElseIf (dado = 5) And (dado2 = 1) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") contador_25 = contador_25 + 1 caja13.Text = Format((contador_25 / veces), formato2) ElseIf (dado = 5) And (dado2 = 2) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") contador_26 = contador_26 + 1 caja14.Text = Format((contador_26 / veces), formato2) ElseIf (dado = 5) And (dado2 = 3) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") contador_27 = contador_27 + 1 caja15.Text = Format((contador_27 / veces), formato2) ElseIf (dado = 5) And (dado2 = 4) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") contador_28 = contador_28 + 1 caja16.Text = Format((contador_28 / veces), formato2) ElseIf (dado = 5) And (dado2 = 5) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") contador_29 = contador_29 + 1 caja17.Text = Format((contador_29 / veces), formato2) ElseIf (dado = 5) And (dado2 = 6) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") contador_30 = contador_30 + 1 caja18.Text = Format((contador_30 / veces), formato2) ElseIf (dado = 6) And (dado2 = 1) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") LIP 79 Benemérita Universidad Autónoma de Puebla PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") contador_31 = contador_31 + 1 caja19.Text = Format((contador_31 / veces), formato2) ElseIf (dado = 6) And (dado2 = 2) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_2.gif") contador_32 = contador_32 + 1 caja20.Text = Format((contador_32 / veces), formato2) ElseIf (dado = 6) And (dado2 = 3) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_3.gif") contador_33 = contador_33 + 1 caja21.Text = Format((contador_33 / veces), formato2) ElseIf (dado = 6) And (dado2 = 4) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_4.gif") contador_34 = contador_34 + 1 caja22.Text = Format((contador_34 / veces), formato2) ElseIf (dado = 6) And (dado2 = 5) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_5.gif") contador_35 = contador_35 + 1 caja23.Text = Format((contador_35 / veces), formato2) ElseIf (dado = 6) And (dado2 = 6) Then picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_6.gif") contador_36 = contador_36 + 1 caja24.Text = Format((contador_36 / veces), formato2) End If i=i+1 Sleep (2500) ' funcion de retardo que es de medio segundo Wend 'cmdTirar_dado.Visible = False imglimpiar.Enabled = True imgregresar.Enabled = True Else MsgBox "¡ ERROR ! El número de veces debe ser Maximo 300", vbExclamation txtVeces.SetFocus txtVeces.Text = "" End If Else MsgBox "¡ ERROR ! Falta proporcionar el Dato de Entrada", vbExclamation txtVeces.SetFocus End If LIP 80 Benemérita Universidad Autónoma de Puebla End Sub Private Sub Form_Load() picAnima(0).Visible = True picAnima(0).Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") PicAnima2.Picture = LoadPicture("C:\Archivos de programa\LIP\cara_1.gif") End Sub Private Sub Timer1_Timer() Static contadortimer As Integer contadortimer = contadortimer + 1 If contadortimer = 2 Then detener = True contadortimer = 0 Timer1.Enabled = False Else Exit Sub End If End Sub Private Sub cmdRmenu_Click() frmSimulacion.Show Unload frmDado2 End Sub Private Sub Animar() Do pasada = pasada + 1 If pasada = 60 Then pasada = 0 cuadro = cuadro + 1 If cuadro > TotalCuadros - 1 Then cuadro = 0 End If End If Select Case cuadro Case 1 To 10 BitBlt picAnima(0).hDC, 0, 0, Xs, Ys, piccuadros.hDC, cuadro * Xs, 0, vbSrcCopy BitBlt PicAnima2.hDC, 0, 0, Xs, Ys, piccuadros.hDC, cuadro * Xs, 0, vbSrcCopy Case 13 To 22 contador1 = cuadro - 12 BitBlt picAnima(0).hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador1 * Xs, 72, vbSrcCopy BitBlt PicAnima2.hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador1 * Xs, 72, vbSrcCopy Case 25 To 34 LIP 81 Benemérita Universidad Autónoma de Puebla contador2 = cuadro - 24 BitBlt picAnima(0).hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador2 * Xs, 144, vbSrcCopy BitBlt PicAnima2.hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador2 * Xs, 144, vbSrcCopy Case 37 To 46 contador3 = cuadro - 36 BitBlt picAnima(0).hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador3 * Xs, 216, vbSrcCopy BitBlt PicAnima2.hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador3 * Xs, 216, vbSrcCopy Case 49 To 58 contador4 = cuadro - 48 BitBlt picAnima(0).hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador4 * Xs, 288, vbSrcCopy BitBlt PicAnima2.hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador4 * Xs, 288, vbSrcCopy Case 61 To 70 contador5 = cuadro - 60 BitBlt picAnima(0).hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador5 * Xs, 360, vbSrcCopy BitBlt PicAnima2.hDC, 0, 0, Xs, Ys, piccuadros.hDC, contador5 * Xs, 360, vbSrcCopy End Select DoEvents Loop Until detener Timer1.Enabled = False End Sub Private Sub txtveces_KeyPress(KeyAscii As Integer) If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Or KeyAscii = Asc(" ") Then Beep KeyAscii = 0 txtVeces = "" MsgBox " introducir exclusivamente numeros enteros " End If End Sub Private Sub txtveces_Validate(cancel As Boolean) If Len(txtVeces.Text) = 0 Then MsgBox "Antes tiene que introducir un dato en este campo" cancel = True End If End Sub LIP 82 Benemérita Universidad Autónoma de Puebla APÉNDICE B DISTRIBUCIONES DE PROBABILIDAD ¿ Que se entiende por Probabilidad? Según la definición clásica es el cociente entre los casos favorables sobre los casos posibles. ¿ Que se entiende por Distribución de Probabilidad? La distribución de Probabilidad de una variable aleatoria X es una descripción del conjunto de valores posibles de X (rango de X), junto con la probabilidad asociada con cada uno de estos valores. DISTRIBUCION DISCRETA ¿ Que se entiende por Distribución Discreta? La distribución discreta de probabilidad es aquella en la que la variable tiene permitido tomar solamente un número limitado de valores. La Distribución Binomial. La Distribución Binomial parte de la distribución de Bernouilli: La Distribución de Bernouilli se aplica cuando se realiza una sola vez un experimento que tiene únicamente dos posibles resultados (éxito o fracaso), por lo que la variable sólo puede tomar dos valores: el 1 y el 0 LIP 83 Benemérita Universidad Autónoma de Puebla La Distribución Binomial se aplica cuando se realizan un número "n" de veces el experimento de Bernouilli, siendo cada ensayo independiente del anterior. La variable puede tomar valores entre: 0: si todos los experimentos han sido fracaso n: si todos los experimentos han sido éxitos Ejemplo: se tira una moneda 10 veces: ¿cuantas caras salen? Si no ha salido ninguna la variable toma el valor 0; si han salido dos caras la variable toma el valor 2; si todas han sido cara la variable toma el valor 10 La distribución de probabilidad de este tipo de distribución sigue el siguiente modelo: n p ( y ) =   p y q n − y  y Ejemplo 1: ¿Cuál es la probabilidad de obtener 6 caras al lanzar una moneda 10 veces? " y " es el número de aciertos. En este ejemplo " y " igual a 6 (en cada acierto decíamos que la variable toma el valor 1: como son 6 aciertos, entonces y = 6) " n" es el número de ensayos. En nuestro ejemplo son 10 " p " es la probabilidad de éxito, es decir, que salga "cara" al lanzar la moneda. Por lo tanto p = 0,5 La fórmula quedaría: LIP 84 Benemérita Universidad Autónoma de Puebla 10  6 p(6) =   (.5) (.5)10−6 6   Luego, P (y = 6) = 0,205 Es decir, se tiene una probabilidad del 20.5 % de obtener 6 caras al lanzar 10 veces una moneda. p = probabilidad característica o probabilidad de tener éxito q = 1 - p = probabilidad de fracaso y = número de éxitos deseados n = número de intentos hechos Generalizaciones: Cuando p es pequeña (0,1), la distribución binomial está sesgada hacia la derecha. Cuando p aumenta (0,3 por ejemplo), el sesgo es menos notable. Cuando p = 0,5, la distribución binomial es simétrica. Cuando p es mayor que 0,5, la distribución está sesgada hacia la izquierda. Las probabilidades para 0,3, por ejemplo, son las mismas para 0,7, excepto que los valores de p y q están invertidos. Esto es cierto para cualquier pareja de valores p y q complementarios.  LIP 85 Benemérita Universidad Autónoma de Puebla Medidas de tendencia central y de dispersión para la distribución binomial. La distribución binomial tiene un valor esperado o media y una desviación estándar. Valor esperado o media: µ = np Desviación estándar: σ = √ npq Distribución de Probabilidad Bernoulli Una variable aleatoria de Bernoulli y se define como el resultado numérico de una prueba de Bernoulli, donde Y =1 si hay éxito y y = 0 si se fracasa. Considere una prueba de Bernoulli donde 1 si ocurre un éxito (S) y= 0 si ocurre un fracaso (F) La distribución de probabilidad de la variable aleatoria de Bernoulli y esta dada por p( y ) = p y q 1− y ( y = 0,1) donde p = Pr obabilidad de un éxito para una prueba de Bernoulli q = 1− p La media y la var ianza aleatoria de Bernoulli son, respectivamente µ = P y σ 2 = pq LIP 86 Benemérita Universidad Autónoma de Puebla Distribución Geométrica p( y) = pq y −1 ( y = 1,2,....) donde y = Número de pruebas hasta que se observa el primer éxito µ= 1 p σ2 = q p2 Distribución Hipergeométrica La distribución de probabilidad hipergeométrica esta dada por  r  N − r     y  n − y   p( y ) = N   n  y = Maximo[0, n − (N − r )],...., Minimo(r , n ) donde N = Número total de elementos r = Número de resultados S en los N elementos n = Número de elementos extraidos y = Número de resultados S en los n elementos la media y la var ianza de una var iable aleatoria hipergeométrica son respectivamente µ= nr N σ2 = r (N − r )n(N − n ) N 2 (N − 1) LIP 87 Benemérita Universidad Autónoma de Puebla Distribución de Probabilidad de Poisson Es llamada así en honor del matemático francés S. D . Poisson (1781-1840), proporciona un modelo para la frecuencia relativa del numero de “eventos poco comunes” que ocurren en una unidad de tiempo, área, volumen, etc. La distribución de Poisson puede ser una razonable aproximación a la binomial, pero sólo bajo ciertas condiciones. Tales condiciones se presentan cuando n es grande y p es pequeña, esto es, cuando el número de ensayos es grande y la probabilidad binomial de tener éxito es pequeña. La regla que utilizan con más frecuencia los estadísticos es que la distribución de Poisson es una buena aproximación de la distribución binomial cuando n es igual o mayor que 20 y p es igual o menor que 0,05. En los casos en que se cumplen estas condiciones, podemos sustituir la media de la distribución binomial (np) en lugar de la media de la distribución de Poisson . SUGERENCIA: El uso de una distribución para aproximar a otra es una práctica bastante común en probabilidad y estadística. La idea consiste en buscar situaciones en las que una distribución (como la de Poisson), cuyas probabilidades son relativamente fáciles de calcular, tiene valores que se encuentran razonablemente cercanos a las de otra distribución (como la binomial) cuyas probabilidades implican cálculos más complicados. RECOMENDACIONES PRÁCTICAS: Frente a un problema concreto, analice detenidamente todas sus características, y al elegir el modelo apropiado, verifique que se cumplan todos los supuestos del mismo. LIP 88 Benemérita Universidad Autónoma de Puebla Habitúese a utilizar las tablas provistas por la bibliografía para calcular probabilidades. Ahorrará tiempo y evitará errores de cálculo. No olvide emplear la distribución de Poisson a la binomial en aquellos casos en que p es pequeño y n es grande. Para calcular probabilidades acumuladas, del tipo P(X > x), P(X < x) o P(x < X < x), también existen valores tabulados en textos especializados. En el caso de variables aleatorias discretas, es importante diferenciar si la probabilidad deseada incluye o no el valor particular de la variable. Es decir, que P(X > x) no es lo mismo que P(X > x) y P (X < x) es distinto de P(X < x). La distribución de probabilidad para una variable aleatoria de Poisson esta dada por p( y ) = λye−y y! (y = 0,1,2,....) donde λ = Número medio de eventos en una unidad de tiempo, área o volumen e = 2.71828 la media y la var ianza de una var iable aleatoria de poisson, respectivamente, µ=λ σ2 =λ LIP 89 Benemérita Universidad Autónoma de Puebla DISTRIBUCIÓN CONTINUA ¿ Que se entiende por Distribución Continua? La distribución continua de probabilidad es aquella en la que la variable tiene permitido tomar cualquier valor dentro de un intervalo dado. Distribución de probabilidad Uniforme Suponga que selecciona al azar un numero y representado por un punto en el intervalo a< y