Veamos el siguiente ejemplo:
# programa2: Calcular el área de un trángulo
def programa2():
a = int(input("Ingrese la base del triángulo: "))
b = int(input("Ingrese la altura del triángulo: "))
c = a * b / 2
print(" La superficie del triángulo es " , c)
programa2()
Este programa permite al usuario ingresar dos valores correspondientes a la base y la altura de un triángulo, y calcula y muestra la superficie de dicho triángulo.
Veamos las instrucciones del mismo una a una:
Como ya dijimos, el programa comienza en la definición del mismo:
def programa2():
y termina en la línea
programa2()
Todo lo que está entre estas dos líneas, serán las instrucciones de nuestro programa. En este caso, hemos definido que se llamará programa2
En este ejemplo, hay una línea más antes de la definición del programa:
# programa2: Calcular el área de un trángulo
Esta línea no hace nada, de hecho se puede eliminar del programa, y el resultado de ejecutar el mismo. De hecho, el compilador la ignora al ejecutar el programa. ¿para qué sirve, entonces?
Esta línea no está para el compilador, sino para los programadores que lean el código. Es un comentario, y su objetivo es colocar aclaraciones dentro del código del programa, que puedan ser útiles a quien lea el programa. Este ejemplo es sencillo y fácil de entender al leerlo, pero en programas más extensos, puede ser complicado entender lo que hacen leyendo el código. En esos casos nunca está de más colocar comentarios aclarando qué hace el programa o alguna parte del mismo.
Para colocar un comentario, sólo hay que colocar el símbolo de numeral (#) al principio de la línea. Todo lo que esté en una línea que empieza con # será interpretado por el compilador como un comentario e ingnorado al momento de ejecutar el programa. También podemos ver que las líneas de comentarios se ven de un color distinto (en este caso, gris más claro)
Veamos ahora la primera instrucción del programa:
a = int(input("Ingrese la base del triángulo: "))
Esta instrucción realiza en realidad varias cosas. En primer lugar, define una variable, que se llamará a.
a =
Una variable es una porción de memoria que contiene un dato y es identificada con un nombre. El programador no sabe en qué posición de la memoria se guardará dicho dato, de hecho puede guardarse en una posición diferente cada vez que corre el programa. Para acceder a leer o modificar dicho dato, se usará siempre su nombre (en nuestro ejemplo, a).
Lo que está a la derecha del signo = es lo que se guardará en dicha variable. Es necesario aclarar que este signo no representa una igualdad, sino una asignación: Primero se resuelve el valor de lo que está a la derecha del signo, y luego se guarda dicho resultado en la variable que está a la izquierda.
Lo que está a la derecha del signo de asignación,
int(input("Ingrese la base del triángulo: "))
está indicando una entrada de datos al programa. Como no se especifica otra cosa, se supone que es el ingreso de datos estándar, el teclado.
La instrucción input, funciona de la siguiente manera:
- Muestra en pantalla un cartel con lo que está entre comillas: Ingrese la base del triángulo:
- Queda el cursor parpadeando, a la espera de que el usuario teclee un dato.
Al teclear el valor, la instrucción verifica que el dato ingresado sea un valor numérico entero ( int ) Si no es así, el programa dará un error.
Si el valor ingresado es un entero, es el resultado de la instrucción input, y es lo que la instrucción de asignación guarda en la variable a.
La siguiente instrucción,
b = int(input("Ingrese la altura del triángulo: "))
realiza lo mismo, con la única diferencia de que el resultado ingresado por teclado se guardará en la variable b, en vez de a.
La tercera instrucción,
c = a * b / 2
es otra asignación. La secuencia de operaciones es la misma: Primero se resuelve la operación que está a la derecha del signo de asignación = , y luego se guarda el resultado en la variable que está a la izquierda.
Para resolver una operación que contiene variables, como a * b / 2, el compilador primero verifica que dichas variables existan y tengan un valor asignado. Si no es así, dará un mensaje de error. Como en este ejemplo, las variables fueron definidas y tienen los valores que el usuario ingresó en las instrucciones anteriores, el programa reemplazará las variables por dichos valores en la ecuación y la resuelve, siguiendo el orden de precedencia matemática. El resultado de la operación se guardará en la variable c, que se define en esta misma instrucción.
La última instrucción es
print(" La superficie del triángulo es " , c)
La instrucción print es la instrucción para salida de datos. Al igual que la instrucción input, si no se especifica otra salida, se utilizará la salida estándar, que es la pantalla.
En este caso, se envían a pantalla dos elementos, separados por una coma. El primero está entre comillas, por lo que se copiará textualmente en pantalla. El segundo no está entre comillas y es una letra, por lo que se supone que es una variable (c). Como efectivamente existe una variable llamada c, el programa consulta su valor y será dicho valor lo que se muestre por pantalla.
Y así finaliza este programa. Una vez terminado, todas las variables son eliminadas y la memoria ocupada se devuelve al Sistema Oerativo para estar disponible a quien la solicite.
RESUMEN
En esta entrada vimos el concepto de variables.
También, tres instrucciones:
- Instrucción de asignación (=)
- Instrucción de entrada de datos (input)
- Instrucción de salida de datos (print)
Estas tres instrucciones se ejecutan una tras otra en el orden en que están escritas en el programa sin excepciones, es por ello que se denominan instrucciones secuenciales.
Es muy importante tener en claro estos conceptos antes de pasar a la siguiente entrada.
Mostrando entradas con la etiqueta Capítulo 1. Mostrar todas las entradas
Mostrando entradas con la etiqueta Capítulo 1. Mostrar todas las entradas
1.3 Variables
Variables
Una variable es un espacio en la memoria que se reserva para
contener un dato de un tipo específico y se identifica con un nombre. El valor
del dato contenido se puede modificar a lo largo del programa, de ahí el nombre
de variable.
Tipos de datos
Los datos contenidos en las variables pueden ser de
diferentes tipos:
int: Contienen datos numéricos enteros. Como mínimo los
valores pueden ir de -32767 a +32767
(cuando ocupa 2 bytes), aunque generalmente puede almacenar valores entre
-2.147.483.648 y +2.147.483.647 (4
bytes)
float: Contiene datos numéricos "reales". Estrictamente
hablando, no son valores reales, ya que éstos pueden tener infinitas cifras
decimales, y la capacidad de almacenamiento de la memoria es limitada. Se
almacenan como valores de punto flotante, separando la mantisa y el exponente.
complex: Se utiliza para almacenar números complejos (que tienen parte real y parte imaginaria). Ambas partes se
almacenan como valores de punto flotante, separando la mantisa y el exponente de cada una.
Es conveniente utilizar variables de tipo entero siempre que
sea posible, ya que las float y las complex tienen dos inconvenientes: por un lado, las
operaciones matemáticas sobre estas variables son más lentas, y por otro,
tienen un cierto margen de error por problemas de redondeo.
double: También contienen valores reales, con el doble de
precisión que los float. Obviamente, ocupan el doble de espacio de memoria.
str: Contienen texto. Una variable str
pueden contener letras, números ó cualquier
otro caracter especial. Al asignarles un valor, siempre se debe escribir entre comillas.
Hay otros tipos, pero estos serán más que suficientes para
el presente curso.
Nombres de variables
En los ejemplos variables, utilizamos como nombres de
variables "a", "b" y "c". En un programa más
largo o complicado, es conveniente utilizar nombres más descriptivos, tales
como "saldo" ó "suma".
Los nombres de variables deben cumplir ciertas reglas:
- Pueden contener cualquier combinación de letras y números,
aunque el primer caracter debe ser una letra. "suma1" es un nombre
válido de variable; pero "1suma" no es un nombre válido, ya que
empieza con un número.
- Se debe tener en cuenta que el lenguaje distingue entre
mayúsculas y minúsculas. "suma", "Suma" y "SUMA"
son tres variables distintas. Para evitar confusiones de este tipo, se
recomienda utilizar sólo minúsculas para los nombres de variables.
1.4 Operadores aritméticos
Los operadores matemáticos en Python son sencillos, casi todos ellos idénticos a los utilizados en matemática. Las operaciones fundamentales utilizan los siguientes operadores aritméticos:
+ suma
- resta
* multiplicación
/ división
// división entera
** potenciación
% resto
def ejemplo4():
a = int(input("Ingrese un número:"))
b = int(input("Ingrese otro número:"))
print("La suma es ", a+b)
print("La resta es ", a-b)
print("El producto es ", a*b)
print("El cociente es ", a/b)
print("El cociente entero es ", a//b)
print("El resto es ", a%b)
print("La potenciación es ", a**b)
print("Gracias por participar. Fin del programa.")
ejemplo4()
La división entera entre dos números realiza la división pero toma como resultado sólo la parte entera del cociente. Así
10 // 3 = 3
11 // 3 = 3
12 // 3 = 4
13 // 3 = 4
14 // 3 = 4
15 // 3 = 5, etc.
El operador resto o módulo realiza la división entera entre dos números, pero en lugar del resultado, toma el resto de la división. Así
10 % 3 = 1
11 % 3 = 2
12 % 3 = 0
13 % 3 = 1
14 % 3 = 2
15 % 3 = 0, etc.
Un uso muy importante para el operador % es ver si un número es múltiplo de otro, ya que si a es múltiplo de b, entonces a % b == 0.
La potenciación devuelve el valor de el primer operando elevado al segundo. Así,
2**5 == 32
5**2 == 25
Utilizando un valor float para el segundo operando, se pueden resolver raíces. Así,
49**0.5 == 7.0
Se debe tener en cuenta que las operaciones no definidas en la matemática tampoco lo están en Python. Por lo tanto querer dividir por cero generará un error y la interrupción del programa.

Dado que el Python contempla los números imaginarios, la raíz cuadrada de un número negativo no es un error:

Nótese que para este ejemplo, por lo menos el segundo valor debe ser de tipo float. El resultado de la potenciación es 4,286...*10^16 + 7j en lugar de ser sólo 7j. La diferencia es un valor muy pequeño, que es un error de precisión en el cálculo.
La precedencia de operadores es similar a la de las expresiones matemáticas:
- Primero se resuelven las operaciones entre paréntesis. Si hay varios paréntesis anidados, se resuelven desde adentro hacia afuera.
- Luego las potencias, de izquierda a derecha.
- Luego las multiplicaciones, divisiones y restos, de izquierda a derecha.
- Por último, las sumas y restas de izquierda a derecha.
Por lo tanto, los dos cálculos siguientes no son lo mismo:

1.5 Formatos numéricos y de presentación (Opcional)
(*) Los contenidos desarrollados en este artículo no son fundamentales para comprender el contenido posterior del curso, y pueden saltearse o leerse más adelante. Algunas de las instrucciones aquí explicadas pueden variar mucho o no existir en diferentes versiones de Python.
Supongamos un programa sencillo, que imprima las los cuadrados de los números de 1 a 20:
def ejemplo16():
print("---------------")
for i in range(1,21):
r=i*i
print("|",i," | ",r, " |")
print("---------------")
ejemplo16()
La instrucción for se ve en el apartado 1.11. lo que hace el programa es generar sucesivamente los números de 1 a 20 y, para cada uno de ellos calcular su cuadrado.
El programa los debería mostrar ordenados en una tabla, pero el poco satisfactorio resultado es:
Como cada número tiene diferente cantidad de cifras, ocupan una cantidad diferente de espacios en pantalla y se hace imposible encolumnarlos.
Para resolver este problema se utiliza el parámetro format, que le indica al print el formato en que se quieren mostrar los datos.
El texto entre comillas indica el formato. Así, '{0:<2}' indica que queremos alinear el contenido a la derecha y ocupar al menos dos caracteres. Si el valor ocupa menos, lo completa con blancos. Si ocupa más, lo imprime completo, perdiendo la alineación. Para alinear a la derecha, se cambia el < por un >, como está hecho con r en el ejemplo (el número indica la cantidad de caracteres a completar) De esta manera, el resultado es mucho más prolijo:
Otro problema que suele ocurrir se da en el siguiente ejemplo, que calcula todos los números primos menores que 1000:
El resultado de este programa es el siguiente:
¡Al ser tantos números, los primeros se van de la pantalla!
Para resolver esto, podemos indicar en el comando print que el próximo print, en vez de realizarlo en una nueva línea, lo haga al lado del actual. para esto, le agregamos el parámetro end="" que sería como indicarle que todavía no termine la línea, aunque haya terminado el print:
De esta manera, podemos ver todos los número en pantalla (agregando un espacio en blanco al final de cada uno, para separarlos.
Combinando ambas opciones, el resultado es aún mejor:
De esta manera, podemos obtener un formato mucho más amigable para nuestros programas.
Suscribirse a:
Entradas (Atom)