Paso 4: Funciones de Memoria¶
En este paso, añadiremos las funciones de memoria que permiten almacenar, recuperar y manipular valores temporalmente, como en las calculadoras físicas.
📦 Código a añadir¶
Añade el siguiente código después del código del Paso 3 en tu archivo calculadora.py:
# Funciones de memoria
def memoria_sumar():
global memoria
try:
memoria += float(entrada.get())
status_label.config(text="M+")
except:
pass
def memoria_restar():
global memoria
try:
memoria -= float(entrada.get())
status_label.config(text="M-")
except:
pass
def memoria_limpiar():
global memoria
memoria = 0
status_label.config(text="MC")
def memoria_recuperar():
limpiar()
escribir(str(memoria))
🔍 Explicación detallada¶
Sistema de Memoria¶
La calculadora incluye un sistema de memoria similar al de las calculadoras físicas, con cuatro operaciones principales:
memoria_sumar() - Botón M+¶
- Función: Suma el valor actual de la pantalla a la memoria
- Uso de
global: Modifica la variablememoriadefinida al inicio - Indicador visual: Actualiza
status_labelpara mostrar "M+" - Ejemplo: Si memoria = 10 y pantalla = 5, después de M+ → memoria = 15
memoria_restar() - Botón M-¶
- Función: Resta el valor actual de la pantalla de la memoria
- Operación:
memoria = memoria - valor_pantalla - Indicador visual: Muestra "M-" en el indicador de estado
- Ejemplo: Si memoria = 10 y pantalla = 3, después de M- → memoria = 7
memoria_limpiar() - Botón MC (Memory Clear)¶
- Función: Resetea la memoria a 0
- Uso: Limpiar completamente la memoria acumulada
- Indicador visual: Muestra "MC" confirmando que se limpió la memoria
memoria_recuperar() - Botón MR (Memory Recall)¶
- Función: Muestra el valor almacenado en memoria en la pantalla
- Proceso:
- Limpia la pantalla actual
- Escribe el valor de la memoria
- Sin modificación: No cambia el valor de la memoria, solo lo muestra
💡 Funcionamiento del Sistema de Memoria¶
Variable Global memoria¶
global memoria # Permite modificar la variable definida fuera de las funciones
Flujo típico de uso:¶
- Calcular un valor: Ejemplo: 25 * 4 = 100
- Guardar en memoria: M+ (memoria = 100)
- Nuevo cálculo: 15 + 8 = 23
- Sumar a memoria: M+ (memoria = 100 + 23 = 123)
- Recuperar memoria: MR (muestra 123 en pantalla)
- Limpiar memoria: MC (memoria = 0)
📊 Estados de la memoria¶
| Operación | Estado Inicial | Acción | Estado Final | Indicador |
|---|---|---|---|---|
| M+ | memoria = 0, pantalla = 50 | memoria_sumar() | memoria = 50 | "M+" |
| M+ | memoria = 50, pantalla = 25 | memoria_sumar() | memoria = 75 | "M+" |
| M- | memoria = 75, pantalla = 15 | memoria_restar() | memoria = 60 | "M-" |
| MR | memoria = 60 | memoria_recuperar() | memoria = 60, pantalla = 60 | - |
| MC | memoria = 60 | memoria_limpiar() | memoria = 0 | "MC" |
🎯 Características especiales¶
Manejo de errores¶
try/except: Si la pantalla no contiene un número válido, no hace nadapass: Continúa sin mostrar error (comportamiento silencioso)
Indicador visual¶
status_label.config(text="..."): Muestra qué operación de memoria se realizó- Feedback inmediato: El usuario sabe qué operación se ejecutó
Persistencia¶
- Memoria mantenida: El valor se mantiene durante toda la sesión
- Solo se resetea: Con MC o al cerrar la aplicación
⚠️ Consideraciones importantes¶
- Variable global: Necesaria para mantener el estado entre funciones
- Precisión numérica: Mantiene la precisión de los cálculos flotantes
- Estado silencioso: Las operaciones M+ y M- no muestran errores visibles
✅ Verificación¶
Después de añadir este código: 1. Guarda el archivo 2. Verifica que no hay errores de sintaxis 3. Las funciones están listas para ser conectadas a los botones
➡️ Siguiente paso¶
Continúa con Paso 5: Interfaz Gráfica para crear la ventana y los elementos visuales de la calculadora.