0% encontró este documento útil (0 votos)
39 vistas30 páginas

Tarea3.3 Ulises Berrun

Cargado por

Felix Mendoza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas30 páginas

Tarea3.3 Ulises Berrun

Cargado por

Felix Mendoza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 30

INDICE

Resumen....................................................................................................................1
Marco Teórico............................................................................................................3
Objetivos…................................................................................................................7
Método......................................................................................................................8
Resultados…...........................................................................................................26
Conclusiones….......................................................................................................27
Referencias…..........................................................................................................28
RESUMEN

Hablaremos en general sobre un lenguaje de programación, un lenguaje de


programación consiste en un vocabulario que contiene un conjunto de reglas
gramaticales destinadas a girar instrucciones a un ordenador o dispositivo
informático para que ejecuten tareas específicas. Para que los ordenadores,
teléfonos móviles, tabletas y otros dispositivos electrónicos similares funcionen, se
requiere un lenguaje de programación que les indique los comandos y permita
completar diferentes actividades. Existen varios tipos y características de
lenguajes de programación dependiendo de su filosofía y objetivos, cada lenguaje
de programación posee un conjunto único de palabras clave junto con una sintaxis
especial para organizar las instrucciones del software. Existen lenguajes de
programación de bajo nivel y de alto nivel que, a pesar de ser simples en
comparación con los lenguajes humanos, son más complejos que los lenguajes de
máquina. Explicare brevemente sobre los dos tipos de lenguajes primeramente
encontramos los lenguajes de bajo nivel incluyen ensamblador y lenguajes de
máquina. Un lenguaje ensamblador contiene una lista de instrucciones básicas y
es mucho más difícil de leer que un lenguaje de alto nivel. Por consiguiente, los
lenguajes de alto nivel, por su parte, están diseñados para ser fáciles de leer y
entender, lo cual permite a los programadores escribir códigos fuente de forma
natural, utilizando palabras y símbolos lógicos.

El campo de la programación es muy amplio, por lo que la utilización de un


determinado lenguaje dependerá de los objetivos que se quieran lograr.

Se pueden realizar las siguientes actividades:

 Desarrollo de programas y aplicaciones.


 Desarrollo de inteligencia artificial.
 Desarrollo de bases de datos.
 Desarrollo de videojuegos.
 Desarrollo de controladores e interfaz de hardware.

1
 Desarrollo de internet y páginas web.
 Desarrollo de guiones.

El lenguaje de programación, vale señalar que es estricto y menos tolerante, esto


ocurre porque los lenguajes de programación prácticamente no tienen
redundancia, ya que de lo contrario sería muy fácil caer en ambigüedad y no
indicar el comando correcto. El hecho de que los lenguajes de programación sean
más estrictos en este aspecto se debe a que las computadoras son muy precisas
en las instrucciones que les gusta recibir. Además, las máquinas no cuentan con
la capacidad de aclarar el significado de una expresión como lo haría un ser
humano. Asimismo, resulta indispensable que los lenguajes de programación sean
fijos y cerrados para evitar confusiones. Debido a estas circunstancias, los
lenguajes de programación están diseñados desde cero por desarrolladores
talentosos enfocados en no arruinar las distintas funcionalidades, ya sea el control
de un robot, los equipos médicos, las máquinas espaciales o un juego de
Facebook, por ejemplo.
MARCO TEORICO

PROYECTO DE SIMULACION DESARROLLADO EN UN LENGUAJE DE


PROGRAMACION JAVA.

Java es un lenguaje de programación orientado a objetos que se incorporó al


ámbito de la informática en los años noventa. La idea de Java es que pueda
realizarse programas con la posibilidad de ejecutarse en cualquier contexto, en
cualquier ambiente, siendo así su portabilidad uno de sus principales logros.

¿Dónde se utiliza Java?


Como todo lenguaje de programación, Java se utiliza para crear aplicaciones y
procesos que funcionen en multitud de dispositivos. La versión estándar de Java
es responsable de varias aplicaciones muy conocidas como jDownloader, Vuze o
Minecraft.

¿Dónde se utiliza Java?

Como todo lenguaje de programación, Java se utiliza para crear aplicaciones y


procesos que funcionen en multitud de dispositivos. La versión estándar de Java
es responsable de varias aplicaciones muy conocidas como jDownloader, Vuze o
Minecraft.

¿Cuáles son los usos de la programación?

La programación informática o programación algorítmica, acortada como


programación, es el proceso de diseñar, codificar, depurar y mantener el código
fuente de programas computacionales.

¿Cuál es el trabajo de un programador de Java?

El programador Java es un especialista en construir soluciones empresariales


utilizando tecnologías Java de Sun Microsystems®. Es responsable de construir
aplicaciones J2SE en capas con acceso a bases de datos MySQL mediante JDBC
e interfaces gráficas con Swing

Lotería instantánea

Imagine que se diseña una lotería instantánea, donde una tarjeta tiene tres filas.
En cada fila hay dos casillas con los valores ocultos de $1 y $5. El jugador raspa
solo una de las dos casillas de cada fila. Si descubre tres números iguales gana
esa cantidad. ¿Cuál es la mínima cantidad que se debe cobrar por cada tarjeta si
se desea tener ganancias?

Modelo de simulación java:


public static void main(String[] args) {

double aleatorio =0;

int i,j;

int max=100;

int cant5, cant1;

int ganancia=0;

double promedio=0;

for (i=1; i<=max; i++){

cant5 = cant1 = 0;

System.out.print ("Tarjeta " + i + "\t");

for (j=0; j<3; j++){

// Simular el lanzamiento de moneda.

aleatorio = Math.random();

// Si el número aleatorio es mayor a 0.5 raspó $5

if (aleatorio > 0.5){

System.out.print ("5 \t");

cant5++;

else{

System.out.print ("1 \t");

cant1++;

}
}

// Si obtiene 3 números iguales gana esa cantidad

if (cant5 == 3){

System.out.print("Gana $5");

ganancia+=5;

if (cant1 == 3)

{ System.out.print("Gana

$1"); ganancia+=1;

System.out.print("\n");

// Mostramos ganancia promedio por tarjeta

promedio = ganancia/(double)max;

System.out.print("Ganancia promedio: " + promedio);

}
Ejecución del modelo de simulación java:

En esta ejecución se realizaron 100 simulaciones, en la imagen solamente vemos


las últimas. Al realizar el cálculo de la ganancia promedio obtenemos 0.73 (en
otras ejecuciones puede obtenerse resultados ligeramente diferentes).
OBJETIVOS

Objetivo general:

Desarrollar e implementar un programa de simulación java, ya que, hace que las


operaciones sean relativamente más sencillas y proporciona resultados confiables,
es decir, la simulación por computadora nos evita el trabajo manual y el esfuerzo
de hacer los cálculos, pero más que eso, una vez realizado el programa, podemos
modificarlo para que corra las veces que queramos y así tener resultados más
exactos.

Objetivo específico:

Desarrollar un programa de simulación que monitoree las operaciones y los


cálculos que se planean obtener y facilitar la toma de decisiones.
MÉTODO

Generar el número Pi mediante la fórmula de Montecarlo


En que consiste:

De manera coloquial esto consiste en tener el circulo mostrado previamente y al


azar se “tiraran piedras” las cuales generaran puntos o marcas en el dibujo.

Las que interesan serán las que caigan dentro del circulo, ¿por qué?
Pues al despejar las fórmulas del área del cuadrado como las del circulo
podremos obtener un valor aproximado de Pi
La formula que nos dará ese dato será:
4 x la cantidad de piedras que caen dentro del circulo/entre el total
Como dato mientras más grande el total más cercano se estará de Pi. Ya que se
generan más experimentos, y hay más probabilidad de que caigan más piedras
dentro y sea el experimento más preciso.
Al programar se utilizarán “Hilos” o Threads ya que cada hilo generará una
cantidad proporcional a la cantidad de hilos que se tenga: Por ejemplo, si se
generan 1,000,000 de números aleatorios y se generan 4 hilos, cada hilo generará
250,000 números aleatorios. De esto se obtendrán la cantidad de piedras dentro
que cada hilo pudo insertar dentro del circulo ahí se utilizará la formula anterior.
Ahora el código en Java.

Lo primero, la clase subproceso que es lo que generará cada hilo, que contiene:
Se tiene un atributo que es “cantidadDentro” que serán las “piedras” que queden
dentro del circulo.

Se tiene “cantidadTotal” la cantidad total que generará cada hilo. No la cantidad


total general.
Y un generador de números random.
Lo siguiente es el constructor.
Siendo este el constructor de subproceso

Recibe por parámetro el generado de número random (Random gen)


Es importante que para cada generación se utilice el mismo objeto ya que en
realidad en Java no se generan números 100% random se generan
pseudorandom, por eso mismo es necesario mantener los mismos, para que esto
sea más preciso
Ahora la clase. “extends Thread” esta va a ser “hija” de la clase hilo de Java

Seguido de un método distancia


En el cual sacamos la raíz de “x” elevada al cuadrado más “y” elevada al cuadrado
para poder saber si cayó dentro del circulo. Esto por la diferencia de vectores.
Si da 1 o menos sabemos que cayó dentro
Se tiene un “getCantidadDentro” tal cual para los que quedaron dentro.

Y el “getCantidadTotal” la cantidad total de experimentos o generaciones que


generó la clase subproceso
Se sobre escribe el método “run” de la clase Thread. Desde 0 a la cantidad total
del hilo.

Se genera un “x”

Se genera un “y”
Se utiliza el método que se encuentra más arriba

Si la diferencia es igual o menor a 1


Se aumenta la cantidad dentro

Eso significa que cayó dentro del circulo.


Luego tenemos la clase simulación, en la cual tenemos como atributos una
cantidad de hilos y una cantidad de iteraciones o cantidad de números que
generaremos.

Se cuenta también con una lista de subprocesos que llamaremos hilos

Y tenemos un “ExecutorService” de la clase Java


Y funciona más o menos así
Recibimos por parámetros la cantidad de hilos que queremos que trabajen

La cantidad de iteraciones o cantidad que queremos que se generen números


random
Se mencionan los atributos, se crea una lista enlazada de hilos, se crea un Thread
pool, con la clase proporcionada por Java,
“Executors.newFixedThreadPool(cantHilos)

Ahora para iniciar procesos, en la lista de hilos se van agregando nuevos


subprocesos.
Iniciando por rnd el generador de números random por parámetro
A cada subproceso le decimos que va a generar la cantidad de iteraciones entre la
cantidad de hilos.

Se tiene un método iniciarTodos para cada subproceso que se encuentre en la


lista enlazada hilos y vamos a ejecutarlo con el ThreadPool

Seguido del método principal la generación de Pi.


Se empieza por iniciarTodos
Y se crean dos variables, totalDentro y totalTotal

Añadimos una barerra para que nada de esto se ejecutado hasta que
executorServide haya terminado.
Esto es importante pues permite que los hilos trabajen y el programa siga
trabajando hasta que ellos hayan terminado.
Para cada subproceso se le hace un get cantidad dentro

Para saber cuántos quedaron dentro del circulo


Y la cantidad total que se tuvieron que generar

Al final se coloca la formula con la que cada hilo tendrá que devolver la cantidad
total proporcional.
Para proceder a correr el programa
En el main tenemos la clase simulación, se utilizarán 6 hilos y un millón de
números aleatorios.

Al obtener el resultado después de correrlo se tiene lo siguiente

Como objetivo de prueba se añade un 0 más a la cantidad de números aleatorios


para obtener más cercanía

Se tiene lo siguiente, demostrando más cercanía, y así podemos agregar hilos o 0,


pero aumentando en cuanto a tiempo
RESULTADOS

Como usted puede ver, en la fórmula final para el número pi, la precisión (número
de dígitos) depende de cuántas veces escoge usted un punto. A mayores N y M
se consiguen mayores dígitos. Sin embargo, la representación discreta de
números reales en una computadora es también un factor limitante para la
precisión de este método. Porque tenemos solamente un número finito de puntos
de donde escoger (10 19 para 32 bits), con este método realmente aproximamos
un número racional cercano al número pi, en lugar del mismo número pi. Usted
puede elaborar un programa en el lenguaje de su preferencia para intentar calcular
el número pi.
CONCLUSIÓN

Como simular una actividad del mundo real que depende de datos aleatorios. No
siempre podremos obtener resultados utilizando cálculos matemáticos pues en
ocasiones éstos serán muy complejos. Tampoco se puede realizar simulaciones
manuales o literales pues el costo económico o de tiempo podría llegar a ser
elevado. En estos casos, la simulación por computadora utilizando modelos
propios es relativamente sencilla y proporciona resultados confiables. Las
simulaciones, en un amplio sentido, pueden ayudar a los estudiantes a
aproximarse a una gran variedad de fenómenos que para ellos son difíciles de
comprender desde el punto de vista analítico.
REFERENCIAS

1. Mathur K. y Solow D. (1996). Investigación de operaciones: el arte de la


toma de decisiones. Pearson Educación, México
2. Franco A. Nuevas formas de enseñar. Desarrollo de un curso interactivo de
Física en Internet. Revista Española de Física. V-12, nº 4, (1998)

También podría gustarte