Tag Archive for programar

Sentencias If/else en C – toma de decisiones

En C también tenemos un metodo muy sencillo para tomar decisiones dentro de nuestro programa, por ejemplo, ¿Que pasaría si yo quiero ejecutar una pieza de codigo si una variable llamada X vale mas de 10, y otra si vale menos? Esto se hace con la sentencia if.

Sintaxis de If en C

La sintaxis es la siguiente:

if(expresion)
{
   /* Ejecutar codigo si la expresion es verdadera*/
}

Donde “expresion” es el resultado de una operación logica que solo puede tener como resultado verdadero o falso (true o false).

Por ejemplo, en el siguiente codigo evaluamos una variable, si esta es mayor a 10, imprimiremos un mensaje.

int x = 15;
if(x > 10)
{
  printf("La variable X es mayor a 10.\n");
}

En el ejemplo se ve claramente que al declarar x se le asigna el valor de 15, y posteriormente lo evaluamos, el resultado del programa naturalmente debera mostrar el mensaje “La variable X es mayor a 10″ puesto que esta expresión es verdadera.

Video tutorial de la sentencia if en lenguaje C

Tomando una ruta alternativa con else

En dado caso que queramos ejecutar un codigo alternativo si la expresión evaluada con if es incierta, tenemos la sentencia else que nos permite hacerlo.

Para ello tomemos el siguiente ejemplo, similar al anterior evaluamos si una variable x es mayor a 10, pero en este caso como esto no será así, desplegaremos un codigo alternativo encerrado entre las llaves del “else”.

int x = 5;
if(x > 10)
{
  printf("La variable X es mayor a 10.\n");
}
else
{
    printf("La variable X NO es mayor a 10.\n");
}

Como resultado de este ejemplo imprimriamos el mensaje “La variable X NO es mayor a 10″.

Espero que este tutorial haya sido de su utilidad, esten al pendiente de los proximos.

Ciclo for en Ruby.

Si éste es tu primer acercamiento a la programación, necesitas saber que un ciclo es un bloque de instrucciones que se repite un número definido de veces, existen diferentes tipos de ellos y uno de los más comunes es el ciclo for.

El ciclo for en Ruby, permite que nosotros definamos un rango entre el cual, un iterador, se irá moviendo, sirve para repetir un proceso un determinado número de veces tomando un iterador como referencia entre éstas veces. Si lo anterior no te quedó muy claro, es porque necesitamos un ejemplo:

for i in(0..9)
    puts i
end

Como ves, la sintaxis es clara y muy sencilla, tenemos un iterador  y un rango 0..9, lo que significa que el iterador iniciará el ciclo siendo igual a nueve e irá aumentando de uno en uno hasta llegar al 9, cada vez que aumenta entra al bloque de instrucciones, éste bloque lo único que hace en el ejmplo es imprimir el valor del iterador i.

Existen un grupo de palabras reservadas que tienen la capacidad de modificar el comportamiento de un ciclo, la primera que veremos es break y lo que hace es sacar el ciclo, es decir, sin importar en qué parte del rango se encuentre el iterador, el ciclo se terminará una vez haya encontrado la palabra break, veamos un ejemplo:

for i in(0..9)
    if(i == 3) break end
    puts i
end

En el ejemplo anterior, una vez el ciclo valga 3, se terminará y ya no recorrerá hacia el 4.

La siguiente palabra es next y lo que hace es sencillamente saltar la interación en la que se encuentra y pasar a la siguiente.

for i in(0..9)
    if(i == 3) next end
    puts i
end

De modo que si tu probaras el ejemplo anterior, notarías que el 3 no aparece en la consola, y la razón es que saltamos esa iteración a través de la palabra reservada next.

Por último tenemos una con la que querrás tener mucho cuidado, y es redo, y lo que hace es sencillamente repetir la iteración, es decir, lo contrario a next.

for i in(0..9)
    puts i
    if(i == 3) redo end
end

Como te mencionaba, ten cuidado, puesto que el ejemplo anterior se ciclará imprimiendo 3 una y otra vez porque redo le está pidiendo que repita la iteración.

Sé que quedarás con dudas como por ejemplo, qué pasaría si quiero aumentar de 2 en 2, en lugar de 1 en 1. Bien eso lo veremos en otros tipos de ciclos más Rubyanos (si existiera esa palabra) que el for.

Sentencia Case en Ruby.

La instrucción case en Ruby es una que me gusta mucho, sería el similar de la instrucción switch en otros lenguajes, pero a mi parecer está estructurada de una forma más legible.

Supongamos que queremos evaluar si una persona puede o no entrar a una película basándonos en su edad, bien, según Wikipedia si la película es clasificación G todos pueden entrar, PG-13 menores de 13 años con padres, R menores de 17 años con padres y NC-17 sólo mayores de edad, ¿cómo podríamos escribir un programa así en Ruby?

Si dominas la instrucción if bien podrías pensar en algo como lo siguiente.

if c == "G"
      print "Todos entran"
elsif c == "PG-13"
      print "Si eres menor de 13 años necesitas un adulto" 
elsif c == "R"
      print "Si eres menor de 17 años necesitas un adulto" 
elsif c == "NC-17"
      print "Solo mayores de 17 entran." 
end

Lo anterior solucionaría el problema, suponiendo que la variable c almacena la categoría de la película a la que se quieren entrar, la solución la enfrentamos haciendo uso de if’s anidados esto significa que si el primer if no es verdadero evaluará el siguiente elsif y así sucesivamente.

Ahora bien, aunque solucionamos el problema, queda claro que no es la mejor forma de enfrentarlo, dada la cantidad de código que hemos repetido. En estos casos, podríamos implementar un case, como en el siguiente ejemplo:

clasificacion = "G"

disponibilidad = case car
   when "G" then "Todos pueden entrar"
   when "PG-13" then "Menores de 13 con un adulto"
   when "R" then "Menores de 17 con adulto"
   when "NC-17" then "Solo mayores de edad"
   else "Error en la clasificacion"
end
print disponibilidad

Como mencionaba antes, a mi parecer, la instrucción es clara por sí sola, almacenas en una variable el resultado del case y evalúas cada posibilidad con un when, la palabra reservada then define que valor se guardará en la variable en caso de que se haya cumplido la condición.

Ahora bien, en el caso anterior vimos un ejemplo evaluando cadenas, sin embargo, la instrucción case también evalúa números y rangos, veámoslo en un ejemplo:

calificacion = 9

resultado = case calificacion
   when 0..5 then "Reprobaste"
   when 6..7 then "Apenas pasaste"
   when 8..9 then "Buen trabajo!"
   when 10 then "Excelente"
   else "Error en la calificacion recibida"
end

puts resultado

Y así de sencillo es como acomodamos la instrucción a números.

Con esto terminamos el análisis de la instrucción case y pasaremos en los siguientes artículos a ver cosas relacionadas con los ciclos.

Ciclo For en Python

El ciclo for en el lenguaje Python tiene cierta ventaja y diferencia con otros lenguajes. Si tienes nociones de programación en lenguajes diferentes a python, tal vez puedas pensar que el ciclo For se define utilizando contadores y rangos en los cuales se ejecutaría el código del for, sin embargo en Python el concepto es un poco diferente.

A continuación la sintaxis de For en Python.

Sintaxis de la sentencia for

La sintaxis es la siguiente:

for iterador in secuencia
     #codigo a ejecutar

Esto quiere decir que cuando usamos la sentencia For, tenemos la capacidad de recorrer una secuencia por medio de “iteraciones”, una secuencia como una lista o una simple cadena de texto, veamos un ejemplo para comprender mejor.

Si quisiéramos declarar una cadena de texto y recorrer cada uno de sus caracteres, podemos usar la sentencia For para ello.

Recorrer cadena de texto usando For

Este programa recorrera cada letra de la cadena de texto “Hola!” y la imprimira en pantalla.

#!/usr/bin/python

for letra in 'Hola!':   
   print 'Estamos en la letra :', letra

Este seria el resultado:

Estamos en la letra : H
Estamos en la letra : o
Estamos en la letra : l
Estamos en la letra : a
Estamos en la letra : !

 Iterar utilizando Indices (listas)

También es posible hacer iteraciones con For utilizando indices de listas. Esto quiere decir que la variable iterada tendra el valor de un indice, algo así como un contador común y corriente.

Ejemplo:

#!/usr/bin/python

autos = ['mercedez','BMW','Toyota']
for indice in range(len(autos)) #range define un rango que es el tamaño de la lista
     print 'El auto es un ',autos[indice]

En este ejemplo iteramos una lista de autos y  los accedemos utilizando el indice de la lista, el resultado seria:

El auto es un mercedez
El auto es un BMW
El auto es un Toyota

La equivalencia sin usar el indice seria la siguiente:

#!/usr/bin/python

autos = ['mercedez','BMW','Toyota']
for auto in autos
     print 'El auto es un ',auto

En cuyo caso la variable “auto” esta iterando la secuencia de la lista de autos, y toma el valor de cada uno de sus elementos dentro de esta lista.

Espero que este tutorial te haya sido de utilidad, no olvides compartirlo, comentar o darle un like.