25 de marzo de 2019

Fundamentos de la Programación (II)


En este segundo capítulo del curso de “Fundamentos de la Programación” comenzaremos nuestro contacto con el lenguaje de programación Python introduciendo los distintos tipos de datos que posee y los operadores necesarios para trabajar con ellos. Os recuerdo que para poner en práctica todo el contenido del presente curso estamos haciendo uso del intérprete online OnlineGDB.

#02 – Tipos de Datos.
Python posee una rica variedad de tipos para que el usuario haga uso de ellos, pero en este curso vamos a centrarnos principalmente en cuatro de ellos: los números (enteros y flotantes), los booleanos y las cadenas.

Números Enteros
Lo primero que necesitaremos para programar son los números enteros. Son un tipo de datos básico que todo el mundo conoce. Sus operadores son, obviamente, la suma (+), la resta (-), el producto (*) y la división (/). A continuación se muestra un ejemplo de la salida de dichas operaciones:
>> 5 + 5
10
>> 3 – 6
-3
>> 10 * 5
50
>> 7 / 2
3
Un momento, ¿siete dividido entre dos es igual a tres? En Python, si ambos operandos son enteros, el resultado también es entero. Para poder trabajar con decimales, debemos utilizar los números flotantes.

Número Flotantes
Los números flotantes son aquellos que poseen decimales. En Python la coma se representa mediante un punto (.), y el intérprete reconocerá como flotante cualquier número que la use. Además, siempre que algún operando sea flotante, el resultado también lo será. Así, volviendo al ejemplo anterior, tenemos que:
>> 7.0 / 2.0
3.5
>> 7.0 / 2
3.5
Entonces, si esto es así, ¿por qué no utilizar siempre números flotantes? Pues porque los enteros suelen ocupar menos memoria, y las operaciones realizadas entre enteros suelen ser, por norma general, más rápidas, lo que incrementa la eficiencia del programa. Por lo tanto, sólo utilizaremos números flotantes cuando de verdad necesitemos números con decimales.

Además, hay que prestar atención al orden de prioridad entre operaciones. Al igual que en las matemáticas, el producto y la división tienen prioridad sobre la suma y la resta, por lo que podría ocurrir lo siguiente:
>> 2.0 + 5 / 2
4.0
En este ejemplo, la operación de la división ha sido prioritaria, y al tratarse de dos enteros, el resultado también ha sido entero, por lo que al final de todo la operación no ha dado el resultado esperado. Una buena práctica es definir siempre el operando entero en la división.

Booleanos
Los booleanos son los tipos de datos lógicos (reciben este nombre a causa del Álgebra de Boole), y consisten únicamente en dos valores: True (cierto) y False (falso). Para trabajar con ellos tenemos tres operadores:
  • Operador and, que devuelve True si y sólo si sus dos operandos son True.
  • Operador or, que devuelve True si cualquiera de sus dos operandos es True.
  • Operador not, que devuelve True si el valor es False; o False si el valor es True.
>> True and True
True
>> True and False
False
>> False or True
True
>> not True
False
Al trabajar con los operadores lógicos hemos de tener en consideración la prioridad entre ellos, siendo esta not > and > or. El siguiente ejemplo ayuda a entender esta prioridad:
>> True or False and not False
True
En primer lugar, se ha ejecutado el operador not, transformando la operación en “True or False and True”. A continuación, de acuerdo a la prioridad anteriormente indicada, ha sido el turno del and, obteniendo “True or False”, que ha devuelto el valor mostrado True.

Ahora que conocemos el tipo de datos lógico, podemos añadir nuevos operadores para los números. Se trata de los operadores de comparación == (igualdad), > (mayor que), >= (mayor o igual que), < (menor que), <= (menor o igual que), != (distinto).
>> 1 == 2
False
>>3 == 2+1
True
>> 3 != 2
True
>> 5 >= 10
False
Estos valores para los operadores lógicos aparecieron en los lenguajes de programación "modernos", aunque, por herencia con los lenguajes de programación más antiguos, podemos utilizar la sintaxis previa para realizar las mismas operaciones. Por ello, podemos realizar las siguientes identificaciones, que son conocidos como operadores binarios (porque para realizar la operación utilizan la representación en binario del valor indicado):
  • 0 como valor para False.
  • 1 como valor para True.
  • & como operador para and.
  • | como operador para or.
  • ~ como operador para not.

Cadenas
Si sólo utilizáramos números, resultaría imposible la comunicación máquina-usuario, por lo que para facilitar dicha comunicación tenemos el tipo cadena. Una cadena (string) es una secuencia de caracteres de 0 o más elementos.

Una cadena se distingue porque su valor va entrecomillado entre comillas simples o dobles. ‘Hola’ o “123” serían cadenas. El operador básico para cadenas e la concatenación (+). Veamos un ejemplo:
>> “Hola” + ”Adios”
HolaAdios
>> “Hola” + “ “ + “Adios”
Hola Adios
>> “5” + “5”
55
Otro operador curioso es la repetición (*):
>> “Hola” * 5
HolaHolaHolaHolaHola
Los operadores de comparación también son compatibles con las cadenas. En este caso, los operadores == y != compararán ambas cadenas carácter a carácter para determinar si son iguales o no. Los operadores de menor y mayor, determinarán su resultado por su orden alfabético, o en caso de tratarse de caracteres que no pertenezcan al alfabeto, mediante su posición en la tabla ASCII.
>> “Hola” == “Adios”
False
>> “antes” > “despues”
False
Variables
Ahora que ya conocemos los tipos de datos principales de Python, podemos trabajar con ellos. Pero tener que estar escribiendo cada vez el valor de cada operando es un engorro, por lo que para solucionarlo disponemos del concepto de variable. Una variable nos permite guardar en memoria el valor de un operando y utilizarlo siempre que queramos. Para guardar un valor en una variable, utilizamos el operador asignación (=), que siempre se sitúa a la derecha de la variable.
>> pi = 3.14
>> pi
3.14
>> pi * 2
6.28
>> pi = 3
>> pi
3
>> pi * 2
6
El nombre que se le asigna a una variable (en el ejemplo pi) se conoce como identificador. Este identificador no puede coincidir con las palabras reservadas del lenguaje de programación. En Python, estas palabras son: and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while y yield.

Entrada y Salida
Ya casi estamos listos para empezar a programar. Sólo nos falta saber cómo comunicarnos con ese usuario que está al otro lado de la pantalla durante la ejecución del programa. Para ello contamos con unas funciones básicas de entrada y salida de datos.

Para mostrar datos por pantalla, utilizaremos la función print. Su sintaxis es la siguiente:
print(variable1, variable2, ...)
Para obtener datos del usuario, utilizaremos la función input. Su sintaxis es la siguiente:
varaible = input(cadena)
La función input siempre devuelve (con devolver nos referimos al valor que es asignado a la variable asociada) una cadena, por lo que si queremos utilizarla como un número, hay que convertirla previamente utilizando las funciones int() para enteros y float() para flotantes. Veamos el ejemplo mostrado en el capítulo anterior:
a = float(input("Operando A: "))
b = float(input("Operando B: "))
c = (a + b)/2
print("La media es: ", c)
La primera y la segunda línea, solicitan al usuario un valor (el cual se le especifica mediante una cadena de texto informativa) y se almacenan en sus respectivas variables. La tercera línea calcula la media de dichos valores (prestad atención a los paréntesis para modificar la prioridad de los operadores). Finalmente, en la cuarta linea, se le muestra el resultado al usuario, precedido este por una variable de tipo cadena (no almacenada en memoria) que le aporta contexto al valor mostrado.

-----
Con esto finalizamos este segundo capítulo del curso de “Fundamentos de la Programación”. Con todo lo aprendido hasta ahora, ya deberías de ser capaz de crear programas básicos que realicen operaciones sencillas. ¿Te atreves con ello? Prueba a crear un programa que calcule el área de un círculo (π·r²). El próximo viernes actualizaré la entrada con una posible solución.

Solución Ejercicio Propuesto 
radio = float(input("Introduce el radio: "))
pi = 3.14
area = pi * radio * radio
print("El area del circulo es: ", area)
Comentemos esta posible solución:
  • En la primera línea le solicitamos al usuario el radio del circulo. Este dato es convertido a flotante, para permitir que el usuario pueda utilizar notación decimal. Finalmente lo almacenamos en la variable radio.
  • En la segunda línea definimos el valor de pi y lo almacenamos en una variable. Esto resulta útil para poder acceder a el o modificarlo más adelante en el programa.
  • En la tercera línea, calculamos el valor del área y lo guardamos en una variable.
  • Finalmente, en la cuarta línea le mostramos el valor del área calculada al usuario.

No hay comentarios:

Publicar un comentario