lunes, 22 de septiembre de 2014

La sentencia if

La sentencia if se utiliza para comprobar una condición y si la condición es verdadera entonces procesaremos un bloque de sentencias (llamado bloque if), u otro bloque de sentencias alternativas (llamadobloque else). La cláusula else es opcional.

Empleando la sentencia if

Example 6.1. Empleando la sentencia if
#!/usr/bin/python
# Nombre de Fichero : if.py

numero = 23
adivina = int(raw_entrada('Ingresa un numero entero : '))

if adivina == numero:
 print 'Felicitaciones, haz adivinado.' # el nuevo bloque comienza aqui
 print "(pero no ganaste ningun premio!)" # el nuevo bloque termina aqui
elif guess < number:
        print 'No, el numero es mayor.' # otro bloque
        # Puedes hacer lo que deseas en un bloque ...
else:
 imprime 'No, el numero es menor.' 
 # debes adivinar...
print 'Hecho'
# Esta ultima sentencia siempre se ejecuta, después de que la sentencia if
# es ejecutada.
        

Salida

$ python if.py
Ingresa un numero entero : 50
No, el numero es menor.
Hecho
$ python if.py
Ingresa un numero entero : 22
No, el numero es mayor.
Hecho
$ python if.py
Ingresa un numero entero : 23
Felicitaciones, haz adivinado.
(pero no ganaste ningun premio!) 
Hecho
        

Cómo trabaja?

En este programa, tomamos intentos del usuario y comprobamos si es el número que tenemos. Fijamos la variable numero con cualquier entero que deseemos, en este caso, decimos 23. Entonces, tomamos el intento del usuario empleando la función raw_input(). Las funciones no son más que pedazos reutilizables de programas.
Asignamos una cadena a la función incorporada raw_input que después la imprime en pantalla esperando una entrada. Una vez que ingresamos un número y presionamos enter, la función regresa lo ingresado; en el caso de la función raw_string() esta siempre es una cadena. Entonces convertimos esta cadena a un número entero usando int y después la almacenamos en la variable adivina. Realmente, int es una clase, pero todo lo que necesitas saber por ahora es que puedes utilizarlo para convertir una cadena en un número entero.
Entonces, comparamos los intentos del usuario con el número que tenemos. Si son iguales, imprimimos un mensaje de éxito. Fíjate que utilizamos niveles de indentación para decir a Python que sentencias pertenecen a cada bloque. Esta es la razón por la cual la indentación es tan importante. Confío en que estés apegándote a la regla de 'un tabulado por nivel de indentado'.
Nota como la sentencia if contiene dos puntos en el extremo, esto le indica a Python que continua un bloque de sentencias.
Entonces, comprobamos si el intento es menor que el número y de ser así, le informamos al usuario que intente con un valor más alto. Utilizamos la sentencia elif que combina realmente dos sentencias relacionadas if else-if else en una sentencia combinada if-elif-else. Esto hace al programa más legible y claro, reduciendo -también- la cantidad de indentados necesarios.
La sentencia elif y else también deben tener dos puntos en el extremo de la línea lógica seguida por un bloque correspondiente de sentencias (con un nivel más alto de indentado, por supuesto).
Puedes tener otra sentencia if dentro del bloque de una sentencia if, a esto lo llamamos if anidado.
Recuerda que las partes elif y else son opcionales. Una sentencia mínima if es:
if True:
        print 'Si, es verdad!'
        
Después de que Python acabó de ejecutar completamente la sentencia if junto con las cláusulas asociadas elif y else se moverá a la siguiente sentencia del bloque que contiene la sentencia if, en este caso, es el bloque principal donde la ejecución del programa comienza y entonces se dirige a la sentencia print 'Hecho', después considera que es el final del programa y sale.
Aunque este es un programa muy simple, he incluido muchas de las cosas que debemos tomar en cuenta. Todas éstas son bastante directas (y asombrosamente simples para aquellos que vienen de C/C++) y requieren que las conozcas desde un principio, para luego emplearlas confortablemente.
Programa equivalente en C
Ahora veremos un programa equivalente al mostrado y que está escrito en C, de esta manera ayudaremos a los novatos a entender cuan fácil resulta Python en comparación a un lenguaje como C, y a los programadores experimentados, les ayudará a ver las diferencias entre la familia de lenguajes C/C++ y Python
Puedes saltar esta sección si lo deseas.
Observa que el indentado no importa en C. Una de las razones por las que los programas de C son (generalmente) mas difíciles de entender es que no son escritos claramente. Sin embargo, un buen programador siempre tiene un estilo de indentado bueno y consistente. Cuando estamos en Python, los programas siempre son escritos claramente!
Example 6.2. Programa Equivalente en C
#include <stdio.h>
/* Filename: if.c */

/* La ejecucion de un programa en C comienza siempre desde la funcion principal() */int main ()
int main()
{
    /* declara las variables antes de usarlas,
       tambien hay que especificar el tipo de datos de las variables.

    int numero, adivina;

    /* el numero que debemos adivinar */
    numero = 23;

    /* ingresa el intento del usuario */
    printf("Ingrese un Entero : ");
    scanf("%d", &adivina);

    if (adivina == numero) /* expresion entre paréntesis */
    {                    /* bloque delimitado entre corchetes */
        printf("Felicitaciones, haz adivinado.\n");
        printf("(pero no has ganado ningun premio!)\n");
    }
    else
        if (adivina < numero)
        {
            printf("No, es un numero mayor.\n");
        }
        else
        {
            printf("No, es un numero menor.\n");
        }

    printf("Hecho.\n");
 
    return 0; /* regresa y retorna un valor al shell */
}
              

Nota para Programadores C/C++

No existe una sentencia switch en Python. Debes usar una declaración if..elif..else para lograr lo mismo.

No hay comentarios:

Publicar un comentario