domingo, 30 de septiembre de 2018

Realidad Virtual

La realidad virtual es un entorno generado a través de un sistema informático, a través de éste tipo de tecnología el usuario tiene la sensación de pertenecer al mundo virtual puesto que de cierto modo puede interactuar con él así como de los objetos que están a su alrededor, todo esto en tiempo real. Con el uso de la realidad virtual es posible simular diferentes tipos de escenarios los cuales representan al mundo real y es posible percibirlos con ayuda de lentes y algunos otros accesorios. Gracias al uso de la realidad virtual es posible simular escenarios peligrosos o que pueden ser muy costosos si se realizaran en la vida real, algunos de estos escenarios son utilizados por militares, escuelas y algunas empresas. 



Con el uso de la realidad virtual se ha podido virtualizar diferentes áreas en la educación, arte, entretenimiento, milicia, educación, medicina y contenido para adultos. En algunos lugares se utiliza la RV como una herramienta eficaz con la cual es posible mejorar el proceso enseñanza-aprendizaje debido a la interacción que se realiza entre el usuario y la interfaz (mundo virtual).

A mi en lo personal me parece muy interesante la aplicación de la Realidad Virtual en temas militares, puesto que además de presentar menos riesgo para el personal en entrenamiento representa también una disminución considerable en cuanto a recursos económicos puesto que no se hacen gastos en cuanto a movilización de unidades, personal y en recursos utilizados durante las prácticas como balas, armas y demás equipo.  Con el uso de la RV en temas militares es posible simular escenarios hostiles y así crear un entorno "real" en donde los soldados puedan poner en práctica sus conocimientos sin llegar a sufrir bajas o algún daño. El uso de RV en la milicia se utiliza para prácticas de campo y para simulación de vuelo. 








viernes, 28 de septiembre de 2018

Y ahora qué?...

Hoy hablaremos acerca de una de las herramientas más importantes al momento de codificar un programa y son las estructuras de control. Las estructuras de control nos permiten de cierto modo modificar el flujo de nuestro programa,  con el uso de éste tipo de sentencias se puede condicionar la ejecución de cierto bloque del programa, ejecutar un grupo de sentencias, realizar ciertas actividades mientras se cumple una condición o crear un ciclo para que todo el programa (o una cierta parte de él) se ejecuta un determinado número de veces. En todos (si no es que en la mayoría de los lenguajes de programación) se utilizan estas sentencias siendo diferente únicamente la sintaxis con la que podemos invocarlas.



Para realizar la toma de decisiones existe una sentencia muy básica y según mi experiencia es de las más utilizadas, hablo de la condición if/else que se utiliza para tomar una decisión, si la sentencia dentro del if se cumple ( Ej.  if(verdadero)), el bloque de sentencias dentro de esta condición se ejecutará solo una vez, de lo contrario se ejecutará el bloque dentro de la sentencia else, una vez ejecutado el bloque completo el ciclo se cierra y la ejecución del programa continua ejecutándose.

Eexisten también sentencias que se derivan de esta como lo es la sentencia if else, que se utiliza cuando se tiene más de dos opciones, sin embargo esta última puede considerarse como un if/else anidado, es decir, un else/if dentro del else de la condición original.


Para realizar la ejecución de un bloque de programas durante un determinado número de veces se usa una subcategoría de las estructuras de control, hablo de los bucles, el funcionamiento es muy parecido a la del if/else, solo que ahora el bloque de sentencias se ejecutará las veces durante las cuales la condición continúe siendo verdadera, si en ningún punto del programa la condición cambia de parámetro (verdadero a falso o falso a verdadero) el bucle se ejecutara infinitas veces. Para implementar los bucles se suele utilizar la sentencia while(condición), esta condición puede o no ejecutarse dependiendo de la condición que se esté utilizando como parámetro.

viernes, 21 de septiembre de 2018

Código Enigma



La historia de la programación ha sido muy interesante, hoy les voy a  hablar de una película que me gusta mucho ("El código Enigma") y tiene que ver con ésto, esta película nos cuenta la historia de Alan Turing, quien fue un matemático británico que trabajó arduamente en poder descifrar la máquina Enigma, que era la encargada de cifrar las comunicaciones de los alemanes durante la Segunda Guerra Mundial.

La historia comienza cuando Alan logra resolver un crucigrama que estaba en un periódico que tenía la leyenda de que aquél que lograra resolverlo acudiera a una entrevista de trabajo en una "fabrica de radios", luego de ser aceptado en aquella fábrica (que no era más que una base militar en donde trataban de resolver la encriptación de la máquina Enigma), Alan trabajó con un grupo de colegas, Hug, Joa, John y Peter, quienes intentaban resolver aquél "imposible" problema de la manera tradicional,  sin embargo Turing pensaba diferente, pues él creía que solo una máquina podía vencer a otra máquina, así que comenzó a trabajar en "Cristopher", que fue de cierta manera una potente máquina precursora de las computadoras modernas. Después de trabajar durante muchos meses y no tener resultado alguno, Alan y el resto del equipo estuvieron a punto de ser despedidos. 

Al ver que la solución a la encriptación de la máquina Enigma era casi imposible, Alan lanzó una convocatoria para conseguir más personal y resolver más rápidamente aquél problema, para ello volvió a hacer la publicación de un algoritmo como el que él había resulto, siendo una Mujer quien logró resolverlo en tiempo record, sin embargo no acepto la invitación al equipo, por lo que los avances seguían casi igual...

Después de varios meses Turing y su equipo pudieron resolver el complicado algoritmo generado por Enigma, pudiendo descifrar todas las comunicaciones hechas por los Alemanes...

Elegí esa película porque desde la primera vez que la vi la historia me pareció muy interesante pues Alan pudo construir una máquina compleja a partir de un problema que ponía en peligro la vida de miles de personas, a mi en lo personal me hubiera sido imposible poder construir una máquina tan compleja y menos con la presión que tenian en aquél tiempo! y lo relaciono con lo que estoy estudiando porque muchas de las veces voy a tener que trabajar con problemas igual o incluso más complejos y debo idear la manera más eficiente de poder resolverlos en el menor tiempo, además de que es muy importante no darnos por vencidos a pesar de que durante el proceso no sea el que queremos...

C#

C# se ha convertido en uno de los lenguajes predilectos por los programadores al momento de desarrollar aplicaciones de escritorio, C# es un lenguaje de programación orientado a objetos desarrollado por Microsoft durante el lanzamiento de la plataforma .NET ideado para desarrollar un nuevo lenguaje orientado a objetos (diferente a los que se utilizaban a finales de los 90's).
El nombre de este nuevo lenguaje está inspirado en el signo # que de cierta manera resulta ser la suma/agrupación de cuatro signos + , la versatilidad de este lenguaje es muy amplia, pues permite generar programas para las diferentes plataformas como Windows, Unix, Android, iOS, Windows Phone, Mac OS y GNU/Linux. C# o también conocido como C Sharp, es visto por algunos programadores como un híbrido entre c++ y Java, pues permite  la capacidad de combinar operadores.  

viernes, 14 de septiembre de 2018

¿Diagramas de Voronoi?

¿Alguna vez te has preguntado cómo es que GooglePlaces, Waze, Foursquare y otras aplicaciones saben qué lugares están cerca de ti? Es obvio que utilizando el GPS de tu celular pero no es tan fácil como parece... para ello utilizan algo que se llama DIAGRAMAS DE VORONOI. 

Los diagramas de Voronoi son una de las muchas piezas que conforman las estructuras fundamentales dentro de la geometría computacional, gracias a éste tipo de diagramas es posible "almacenar" información acerca de qué tan próximos están los puntos (en este caso los puntos de interés), gracias al descubrimiento de Gueorgui Voronoi es posible dividir una sección del unvierso (en este caso un mapa) en partes iguales de acuerdo a qué tantos puntos estamos tomando como referencia. Para entenderlo mejor veamos lo siguiente:

Antes de comenzar a seccionar nuestro mapa necesitamos conocer los puntos de interés que vamos a utilizar como referencia, ya sea un restaurante, una zapatería o cualquier otro sitio que queramos.  



Luego de esto, necesitamos conocer la distancia más corta entre todos los puntos (recuerda que la distancia más corta entre dos puntos cualesquiera siempre es la línea recta), después de haber obtenido esa línea debemos trazar la bisectriz (o punto medio) a esa distancia, éste proceso debemos hacerlo con toooooodos los puntos que tengamos...




Una vez hecho lo anterior basta con eliminar las líneas de referencia y lo que queda como exceso en nuestras secciones, quedando algo como lo que sigue:



Ya que hemos obtenido nuestro diagrama de Voronoi es muy sencillo conocer qué lugar nos queda más cerca. Suponiendo que nos encontramos en cualquier sección de la zona amarilla, cuando accedamos a nuestra aplicación para buscar X lugar que nos quede cerca, siempre nos enviará al punto blanco (que es a donde queremos ir) que está dentro de esa zona, si estamos dentro de la zona Roja nos enviará al punto blanco de la sección roja... Interesante no?

Quizá si hacemos todo este proceso a mano nos va a resultar más complicado dependiendo qué tantos puntos estemos considerando, sin embargo nuestros dispositivos lo hacen tan rápido que pareciera que ya recorrieron toda la ciudad y saben bien a donde llevarnos!... 





viernes, 7 de septiembre de 2018

Más sobre tecnología

Día con día la tecnología evoluciona y con ello su presencia en nuestra vida. Sin embargo, el auge de las redes sociales nos ha llevado cada vez más a un mundo en donde las relaciones personales sufren estragos por el uso de éstas, pudiendo ser Facebook, Twitter, Instagram, entre otras.

El uso desmedido de las Tecnologías de la Información a edades cortas ha hecho que los dispositivos electrónicos como smartphones, tablets, laptops y otros dispositivos, tengan un gran impacto en las nuevas generaciones. Este fenómeno puede ser visto tanto del lado positivo como del negativo; de manera positiva podemos decir que el uso de la tecnología ha ayudado al mundo entero a tener una mayor facilidad para acceder a todo tipo de información (principalmente con el uso de Internet), de forma negativa podemos decir que el uso de la tecnología ha desplazado de cierta manera la forma en la que se llevan a cabo las relaciones personales, pues han generado un cambio en nuestra forma de relacionarnos y comunicarnos.

Los padres tienen entonces, la responsabilidad de enseñar a sus hijos acerca del bueno uso de las herramientas tecnológicas, teniendo siempre presente que el uso de la tecnología para el entretenimiento es diferente al uso de ésta para la educación. El uso excesivo de la tecnología puede afectar gravemente a la sociedad; generando individuos aislados del mundo real; viviendo dentro de una burbuja en donde única y exclusivamente es importante todo aquello que pasa en el Internet, dejando a un lado la relación e interacción física con las personas.

Pseudocódigo

Continuando con los temas de programación, hoy nos toca hablar del pseudocódigo, que desde mi punto de vista es una de las partes fundamentales antes de empezar a programar "formalmente" un programa, pero... Qué es el pseudocódigo?

El pseudocódigo no es más que una herramienta (informal) que sirve como guía al momento de programar, es algo así como una serie de ideas que se tienen que considerar durante la realización de un código de programación, se dice que el pseudocódigo es informal debido a que no utiliza una sintaxis específica, generalmente en él se incluyen descripciones detalladas en lenguaje natural o una mezcla entre lenguaje natural y la sintaxis del lenguaje en el que se va a programar para tener una visión más clara del problema que se pretende resolver. A continuación se muestran algunos ejemplos de pseudocódigo:



Así como ocurre en la manera en que cada programador tiene su propio estilo en al momento de realizar un programa la complejidad del pseudocódigo también varía de programador en programador, habiendo quienes utilizan una representación casi exacta del programa que se va a realizar así como de aquellos que utilizan únicamente palabras clave. En lo personal considero que el uso de pseudocódigos  facilitan el proceso de la programación, en lo personal antes de programar hago un pseudocódigo para conocer la estructura que deberá llegar el programa y contemplar a todas las variables que se vayan a utilizar para evitar tener que hacer correcciones complejas al programa. En la actualidad existen algunos Software que nos permiten realizar pseudocódigos de manera sencilla, a mi me gusta trabajar con PSeInt ya que es un software bastante amigable con el usuario, disponible en español, en donde también nos genera de manera automática el diagrama de flujo del pseudocódigo que se está generando y así poder visualizar de mejor manera los procesos que se están llevando a cabo.