lunes, 30 de julio de 2012

Estructura en los algoritmos (segunda parte)

Estructura condicional múltiple

A estas estructuras también se les suele nombrar como if's anudados. En estas estructuras no se ve tanta diferencia con una sencilla, solo que el algoritmo al cumplir una condicion; comúnmente cuando la condición no se cumple, nuestro argumento se vuelve a evaluar bajo otro criterio.

Esto es especialmente útil cuando estamos refinando cierto análisis. Podemos ejemplificarlo con el siguiente diagrama de flujo:

Estructura condicional múltiple "en caso de"

En esta estructura con una sola evaluación del argumento podemos tomar mas de dos caminos, esta estructura esta enfocada para acortar nuestro trabajo de programación ya que en lugar de hacer una serie muy grande de if's anidados, con una sola sentencia podemos obtener varias evaluaciones. En nuestro ejemplo de la entrada anterior seria muy recomendable tomar esta estructura para programar nuestro código para elegir calcetines en función del color de los zapatos.

  1. ¿De qué color son los zapatos?
    1. Caso 1: Azules
      1. Utiliza calcetines azules
    2. Caso 2: Café
      1. Utiliza calcetines color café
    3. Caso 3: Blanco
      1. Utiliza calceta blanca
    4. Caso 5: Negro
      1. Utiliza calcetines negros
Claro que este es solo un pequeño ejemplo, podemos refinarlo mucho mas. Esta estructura podemos ejemplificarla con el siguiente diagrama de flujo:


Hasta aquí dejamos nuestro sencillo estudio de las estructuras condicionales, que por muy rudimentario que sea; estas son las bases para toda programación.Desde un simple cálculo hecho en c++ hasta el último lanzamiento en sistemas operativos.

sábado, 21 de julio de 2012

Estructuras en los algoritmos

Ya mencionamos que los algoritmos cuentan con ciertas estructuras que pueden ser implementadas para la resolución de nuestro problema. La primera de ellas que estudiaremos es la estructura condicional.

Estructura condicional

Esta es una instrucción o grupo de instrucciones que pueden o no ejecutarse dependiendo de que se cumpla una condición. Es decir si un evento sucede se ejecuta la instrucción, de lo contrario si este evento no sucede no se ejecutara la instrucción. De otro punto de vista, una estructura condicional compara una variable contra un valor establecido y en base al resultado el programa toma un curso.

Estructura condicional simple 

Esta es el tipo mas sencillo, a menudo se le nombra como toma de decisión, dentro del flujo del programa hay un punto en el puede llegar a una estructura de este tipo. el valor en que se ha trabajado llega a el rombo que indica la condición a evaluar y de este se puede obtener una respuesta verdadera; osea donde la condición se cumple; o una respuesta falsa. 


La estructura puede ejemplificarse con el siguiente diagrama de flujo.


Retomando el ejemplo anterior de un algoritmo para ponerse un zapato, podemos aplicar esta estructura para definir en que pie se debe poner; izquierdo o derecho. Podemos plantear la siguiente solución:
  1. ¿Las agujetas están desamarradas?
    1. Si: Haz un nudo.
    2. No: Continua
Este fragmento puede agregarse a algoritmo de colocarse un par de zapatos. Como se puede ver esta estructura solo plantea un proceso para una sola opción; en el ejemplo se aplica cuando la opción es verdadera, pero en términos generales la opción puede aplicarse si la opción es falsa, todo depende de la lógica que aplicamos en la solución. Siendo así podemos plantear el siguiente fragmento y seria válido igual:
  1. ¿Las agujetas están atadas?
    1. Si: Continua
    2. No: Átalas 
Aunque se aplica un criterio de validación el resultado obtenido es el mismo.

Estructura condicional doble

Las estructuras dobles al igual que las sencillas permiten hacer una evaluación de la cual tenemos dos posibles resultados; verdadero y falso, si o no; pero a cada una le da un camino diferente. Esta estructura puede ejemplificarse en el siguiente diagrama de flujo:


Siguiendo con el ejemplo se puede plantear el siguiente algoritmo:

  1. Tomar un zapato
    1. ¿El zapato es derecho?
      1. Si: Colocar el zapato en el pie derecho
      2. No: Colocar el zapato en pie izquierdo

Como se menciono el algoritmo puede cumplir una y solo una de las dos opciones y de acuerdo a cual tome se plantea una solución diferente.

Faltan dos estructuras condiciones más que analizaremos en el siguiente post. 

miércoles, 18 de julio de 2012

Algoritmos

Por definición un algoritmo es la recopilación de los pasos lógicos ordenados para resolver un problema; es decir,un algoritmo enumera todo lo que tenemos que hacer cuando se nos presenta un problema a resolver.

Entonces vamos a plantear un problema; que aunque burdo; no sirve para ejemplificar y explicar lo que son los algoritmos. Ponerse un par de zapatos.


Desde un punto de vista sencillo, el ponerse un zapato no representa gran problema, solo tomas el zapato, te lo pones en un pie y lo anudas. Pero desde un punto de vista como informático debes pensar un poco mas a detalle. Esto implica mucho mas observaciones que solo tomarlo y ponerlo en un pie; es así como podemos plantear este algoritmo.
  1. Elegir un par de zapatos.
    1. Verificar que tenemos los dos zapatos del par
  2. Escoger un par de calcetines acorde al color de los zapatos
  3. Ponerse un calcetín en un pie
    1. Tomar el calcetín por el extremo abierto
    2. Verificar que el calcetín esta derecho; la parte del talo hacia abajo
    3. Poner la punta del pie en la boca del calcetín
    4. Deslizar el pie dentro
    5. Acomodar las arrugas a lo largo del pie
  4. Poner el otro calcetín en el otro pie
    1. Tomar el calcetín por el extremo abierto
    2. Verificar que el calcetín esta derecho; la parte del talo hacia abajo
    3. Poner la punta del pie en la boca del calcetín
    4. Deslizar el pie dentro
    5. Acomodar las arrugas a lo largo del pie
  5. Tomar un zapato
    1. Verificar de que pie es el zapato
    2. Verificar que las agujetas están desanudadas
      1. Si están desanudadas soltarlas
    3. Colocar el zapato en el pie correspondiente
    4. Acomodarlo
    5. Ajustar las agujetas
    6. Anudar las agujetas
  6. Tomar el otro zapato
    1. Verificar de que pie es el zapato
    2. Verificar que las agujetas están desanudadas
      1. Si están desanudadas soltarlas
    3. Colocar el zapato en el pie correspondiente
    4. Acomodarlo
    5. Ajustar las agujetas
    6. Anudar las agujetas

Como informático es necesario analizar mas las cosas, solo en las caricaturas podemos ver a Dexter en su laboratorio ordenandole a su computadora a hacer cosas, realizar búsquedas y ver como esta lo hace como por arte de magia, sin pensar en lo que hay detrás. Esto son los algoritmos, cada programa son un conjunto de algoritmos, de hecho, al oprimir el botón de "negrilla" en el editor de texto este no es otra cosa que una rutina o algoritmo que obedece el programa para realizar una función. En google al ingresar un criterio de búsqueda y dar click en "buscar" esto desata otro algoritmo para realizar por el servidor. Es entonces que una computadora sin algoritmos no puede realizar nada, seria lo mas parecido a tener una licuadora descompuesta ya que una pc no puede moler una salsa.

Ahora bien los algoritmos responden a ciertas estructuras ya establecidas (Estructuras condicionales y repetitivas), pues estas nos van a permitir un análisis mas sencillo del problema o hacerlo mas preciso. Como ya mencione nosotros damos por hecho muchas cosas. En el ejemplo anterior solo mencionamos en escoger unos zapatos y unos calcetines; los pusimos en una forma lógica, primero los calcetines y después los zapatos, aunque podemos hacerlo al revés no seria correcto. Pero también podemos afinar mas nuestro algoritmo si incluimos una rutina para hacer que el color de los calcetines y el de los zapatos sea coherente. Hay que recordar que existen reglas de acerca de esto ya que unos zapatos negros con calcetines blancos no se ven bien, o que dentro de el cajón de los calcetines en probable encontrar calcetas deportivas, calcetines con rombos, de colores y que los zapatos deben combinar con el cinturón que utilicemos y el pantalón.

Esto lo detallare mas en la siguiente entrada.

sábado, 14 de julio de 2012

Diferencias del algoritmo de Google para móviles


El SEO debería adaptarse en función de si las búsquedas se realizan desde Smarthpones o lugares fijos.

Google por ejemplo utiliza el algoritmo Googlebot-Mobile para ofrecer los resultados las búsquedas a al navegar desde teléfonos móviles. Y éste algoritmo no es el mismo que el de las búsquedas en Pcs y otros ordenadores de sobremesa o portátiles.

La diferencia básica es que por una parte, el algoritmo Googlebot-Mobile tiene el cuenta que la web en cuestión tenga una visualización correcta en el móvil a la hora ofrecer sus resultados. Si no la tiene, el buscador tenderá a retrasar éstas webs en el orden de resultados.
Por eso son fundamentales las versiones web para móviles además de para ofrecer un contenido legible y manejable al usuario.

Otra diferencia del algoritmo Googlebot-Mobile respecto al de “sobremesa”, es que en los resultados del móvil hay una mayor preferencia por la geolocalización, es decir se priman resultados cuyas webs o servicios sean cercanos a nosotros.

Ésto esta pensado con la lógica evidente de que desde el móvil tendemos mas a buscar resultados por geolocalización, para acudir a lugares de trabajo, buscar direcciones de bares o eventos o para encontrar un servicio en la ciudad.

Sin embargo hay que tener en cuenta que en los últimos años Google ha optimizado también su algoritmo clásico para ofrecer una mejor geolocalización y que el el boom de las aplicaciones móviles resta importancia a este aspecto, al igual que Foursquare y otras redes sociales, con lo que las diferencias entre los dos algoritmos se han limado.