Curso de programacion en python3 : 03 - Estructuras de control I

Esta entrada es parte de una serie, puedes ver la primera aquí

Hoy quiero dejar todas las estructuras de control que posee python, creo que ya nos sorprendimos lo suficiente, en un lenguaje de programación no deberían existir muchas novedades con respecto a otros, ¿o tal vez si?

Se habrán dado cuenta que la forma de dividir una cosa de otra es un salto de linea (enter) y en vez de llaves, se utiliza la identación (tab), esto es por que presionar un botón siempre es mas rápido que presionar dos, los espacios y tabulaciones permiten que el programador trabaje mas rápido, tal vez parezca extraño pero funciona, también resulta necesario decir que ciertas estructuras de control tradicionales son redundantes, ya que un if else es esencia igual a un switch, esto es python y una de sus primeras bases reza "debería haber un - y preferiblemente solo un - camino corto de hacerlo" así que los que conozcan como programar en otros lenguajes deben saber que el switch no existe en python.

Es importante hablar sobre codificación de caracteres, aunque esta entrada sea sobre estructuras de control, los lenguajes compilados multiplataforma requieren hacer una compilación distinta para cada plataforma(C,C++), los lenguajes de maquina virtual y semi compilados requieren que exista una maquina virtual adaptada a la plataforma para que el programa se ejecute, los lenguajes interpretados requieren que la escritura del código fuente sea legible por el interprete, por tanto tenemos que asegurarnos que la codificación sea estándar, la mejor de todas por cuestiones de vejez, es UTF-8, desde que se convirtió en estándar web, resulta ser una muy buena idea codificar todo bajo estos lineamientos.

La codificación del inglés encoding,se asegura que nuestro texto este compuesto por símbolos en un código del cual conocemos el nombre, UTF-8 es uno de los mas antiguos y por tanto retrocompatibles, utilizando esta codificación al menos se reducen los posibles errores a lo largo del tiempo

Para determinar la de codificación de caracteres en python, debemos poner una directiva al inicio del código, esto es el símbolo de comentario que es la almohadilla seguido de la codificación deseada:

#coding: utf-8

Hay otras directivas interesantes, si estamos en windows y deseamos estandarizar un poco nuestros programas, hay que añadir una directiva para que linux sepa que el programa debe ser ejecutado usando python, antes de la codificación debemos colocar la localización del interprete de python que contrario a windows, linux utiliza un sistema de archivos estándar y sabemos que si algo es ejecutable estar en la carpeta de binarios.

#!/usr/local/bin/python
#coding: utf-8

Terminando este dato interesante, vamos a hacer un truco fácil para inicializar variables y comenzamos con la primera estructura condicional, los if else,  básicamente se puede traducir de la forma, si(condición a evaluar) se ejecuta esto, en caso contrario, esto otro. Como información necesaria para entender el código, una coma hace que el dato numérico pueda imprimirse sin realizar conversiones.

#!/usr/local/bin/python
#coding:utf-8
a = int(input("Ingrese un numero entre 1 y 100\n"))
#convertimos el ingreso en int para las comparaciones
#sorpresa :v input puede servir de print
if a < 100:
    print("El valor es menor que cien:" , a)
elif a > 100:
    print("El valor es mayor a cien:" , a)
else:
    print("El valor es cien:" , a)

De este ejemplo tenemos 3 conclusiones, es posible hacer conversiones en la misma linea de entrada, la estructura if elif else necesita que sus componentes estén al mismo nivel, se pueden poner tantos elif como sea necesario, estos tienen la función de ir después de un if y al mismo tiempo comprobar si la condición se cumple o resulta necesario saltar al else, la tercera conclusión es que en vez de utilizar corchetes "{}" hacemos identación, ponemos el contenido de los operadores con un tabulado, muchos IDE ya hacen esto automáticamente, como no discriminan entre casos, nos inducen al siguiente error:

if a < 100:
    print("El valor es menor que cien:" , a)
        elif a > 100:
            print("El valor es mayor a cien:" , a)
            else:
                print("El valor es cien:" , a)

Este mismo identado si lo expresamos con corchetes podemos ver muy claramente el error:

if a < 100:{
     print("El valor es menor que cien:" , a)
}      elif a > 100:{
            print("El valor es mayor a cien:" , a)
        }     else:{
                print("El valor es cien:" , a)
               }

Habiendo comprendido ya la identación, los bloques if elif else y la funcionalidad oculta del método input(), podemos seguir con la próxima estructura, vamos a seguir con los bucles, no hay switch aunque cuando veamos estructuras de almacenamiento vamos a ver que los métodos son también objetos y será posible hacer maravillas usándolos en estructuras de datos.

Hay dos bucles, primer bucle es while que se traduce como "mientras" y tiene sentido usando lo en la frase "mientras esto sea cierto, se repite la acción", es la forma estandar de hacer ciclos de tamaño indeterminado, cuando desconocemos la cantidad de elementos en una lista, lo mejor es recorrerla buscando un dato nulo que nos permite saber que ya no hay elementos.

a = 1
while a <= 5:
    print("Esto ha pasado",a,"cantidad de veces")
    a += 1

Es igual a cualquier otro lenguaje, no olvidarse de las tabulaciones, los bucles infinitos no presentan mayor problema para python, los detecta en tiempo de lectura y si no hay una instrucción que pueda cerrar el bucle, ni se toma la molestia de ejecutarlo, lanza una advertencia y punto.

También tenemos el for mejorado como forma estándar de iteración sobre elementos finitos, aquí un ejemplo fácil:

#!/usr/local/bin/python
#coding:utf-8
for a in range(0,6):
    print(a)

Este código imprime los números dentro del rango, también hay sorpresas con string, pero eso lo vamos a ver en la próxima entrada, hasta aquí llega esta, que en resumen hemos visto las directivas que están presentes en C/C++, introducción a la ejecución de programas multiplataforma, estructuras de control if elif else, while, for y algunas palabras reservadas como in que nos permite concatenar una variable con un rango y el rango mismo que nos permite medir si un valor esta entre dos valores.

Comentarios

Entradas populares de este blog

Hablemos de difamación, parafilias y denuncias bien hechas

Criticamos a pablito: "Atrapado en el cuerpo equivocado"

El fruto de una era: Antiintelectualismo moderno