Algoritmo para Intercambiar Variables (Swap) en PSeInt (Guía 2026)

Nivel: Básico Tiempo: ~10 min

El intercambio de valores entre dos variables, conocido técnicamente como «Swap», es una de las maniobras lógicas más importantes en la programación. Aunque parece trivial, no puedes simplemente igualar una variable a otra sin perder datos. En este tutorial de PSeInt, aprenderás la lógica correcta utilizando una variable auxiliar (el método clásico) y descubriremos por qué este pequeño algoritmo es el corazón de sistemas más complejos, como los métodos de ordenamiento (Burbuja, Quicksort). Si alguna vez te has preguntado «¿Cómo paso el valor de A a B y de B a A sin borrar nada?», esta es tu guía definitiva.

Conceptos Clave: La Analogía de los Vasos

Para entender este problema, olvidemos los números por un momento y pensemos en física:

El Problema de la Asignación Destructiva

Imagina que tienes un vaso con Jugo (A) y otro con Agua (B). Si viertes el agua directamente en el vaso del jugo, el jugo se pierde (se derrama o se mezcla). En programación, hacer A <- B destruye instantáneamente el valor original de A.

Variable Auxiliar (Temporal)

Para intercambiar los líquidos sin perderlos, necesitas un tercer vaso vacío (Auxiliar). 1. Viertes el Jugo (A) en el Vaso Vacío (Aux). 2. Viertes el Agua (B) en el vaso de Jugo (A). 3. Viertes el contenido del Vaso Auxiliar en el vaso de Agua (B).

Análisis del Algoritmo

Pasemos la analogía de los vasos a instrucciones de pseudocódigo:

  • ENTRADA Dos variables con valores iniciales distintos.
    Ejemplo: num1 = 10, num2 = 50.
  • PROCESO 1. Guardar num1 en aux.
    2. Sobrescribir num1 con el valor de num2.
    3. Asignar a num2 el valor guardado en aux.
  • SALIDA Mostrar las variables invertidas: num1 = 50, num2 = 10.

Código Fuente (Método Clásico)

Archivo: IntercambioVariables.psc
Algoritmo IntercambioDeVariables
    // 1. Definición de variables
    // Necesitamos una variable 'aux' del mismo tipo que las originales
    Definir valorA, valorB, aux Como Entero;
    
    // 2. Entrada de datos
    Escribir "--- Antes del Intercambio ---";
    Escribir "Ingrese el valor de A:";
    Leer valorA;
    Escribir "Ingrese el valor de B:";
    Leer valorB;
    
    Escribir "Original -> A vale: ", valorA, " y B vale: ", valorB;
    
    // 3. Proceso de Intercambio (Swap)
    // Paso 1: Resguardamos el valor de A en Aux
    aux <- valorA;
    
    // Paso 2: Ahora es seguro sobrescribir A con el valor de B
    valorA <- valorB;
    
    // Paso 3: Recuperamos el valor original de A (desde Aux) y lo ponemos en B
    valorB <- aux;
    
    // 4. Salida de resultados
    Escribir "";
    Escribir "--- Después del Intercambio ---";
    Escribir "Ahora -> A vale: ", valorA, " y B vale: ", valorB;
    
FinAlgoritmo

Diagrama de Flujo

⚠️ Errores Fatales al Intercambiar

Parece sencillo, pero el 90% de los principiantes comete este error en su primer intento:

El "Intento Ingenuo" (Pérdida de Datos)

Escribir:
A <- B
B <- A
¿Qué pasa aquí? En la primera línea, A toma el valor de B. El valor original de A desaparece. En la segunda línea, B toma el valor de A (que ahora es igual a B). Resultado: Ambas variables terminan valiendo lo mismo que B originalmente.

Tipo de Datos Incorrecto para Aux

Si A y B son Reales (decimales) pero defines aux como Entero, perderás los decimales durante el intercambio. La variable auxiliar siempre debe ser del mismo tipo que las variables que estás moviendo.

Nivel Experto: Intercambio Matemático (Sin Auxiliar)

¿Sabías que puedes intercambiar dos números sin usar una tercera variable? Usando aritmética pura (sumas y restas), podemos lograr el mismo resultado. Este método ahorra memoria, aunque es menos legible y tiene riesgo de desbordamiento (overflow) con números muy grandes.

Algoritmo SwapMatematico
    Definir A, B Como Entero;
    
    A <- 50;
    B <- 20;
    
    Escribir "Inicio: A=", A, " B=", B;
    
    // Truco matemático:
    // Imaginemos que A y B son contenedores de "peso"
    
    // 1. Sumamos ambos pesos en A
    A <- A + B;  // A ahora vale 70 (50+20)
    
    // 2. Quitamos el peso original de B a la suma total
    B <- A - B;  // 70 - 20 = 50. ¡B ahora tiene el valor original de A!
    
    // 3. Quitamos el nuevo peso de B a la suma total
    A <- A - B;  // 70 - 50 = 20. ¡A ahora tiene el valor original de B!
    
    Escribir "Final: A=", A, " B=", B;
    
FinAlgoritmo

Preguntas Frecuentes (FAQ)

¿Para qué sirve intercambiar variables?
Es la base de casi todos los algoritmos de ordenamiento. Por ejemplo, en el "Método Burbuja", si un número es mayor que el siguiente, se debe hacer un swap para ordenarlos. Sin esta operación, no podríamos ordenar listas de datos.
¿Puedo intercambiar variables de diferente tipo?
No directamente. PSeInt es un lenguaje tipado. No puedes guardar un texto en una variable entera. Ambas variables deben ser compatibles (ej: dos Enteros o dos Reales) para intercambiar sus contenidos.
¿Qué método es mejor: Auxiliar o Matemático?
En la práctica profesional, el método de la variable auxiliar es preferible el 99% de las veces. Es más claro de leer, funciona con textos y booleanos (no solo números) y evita errores de desbordamiento matemático.
¿Existe una función Swap() en PSeInt?
PSeInt puro no tiene una función nativa Swap(a,b), por lo que siempre debes escribir las tres líneas de código manualmente o crear un SubProceso si estás en un nivel avanzado.

¿Listo para el siguiente nivel?

Domina la lógica de programación con nuestra colección completa.

Ver Más Ejercicios Resueltos

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *