Saltar a contenido

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 variable memoria definida al inicio
  • Indicador visual: Actualiza status_label para 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:

  1. Calcular un valor: Ejemplo: 25 * 4 = 100
  2. Guardar en memoria: M+ (memoria = 100)
  3. Nuevo cálculo: 15 + 8 = 23
  4. Sumar a memoria: M+ (memoria = 100 + 23 = 123)
  5. Recuperar memoria: MR (muestra 123 en pantalla)
  6. 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 nada
  • pass: 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

  1. Variable global: Necesaria para mantener el estado entre funciones
  2. Precisión numérica: Mantiene la precisión de los cálculos flotantes
  3. 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.