SubProceso en PSeInt: Sintaxis y Por Referencia (2026)

Un SubProceso es un bloque de código con nombre que realiza una tarea concreta y que puedes llamar cuantas veces quieras desde el algoritmo principal. Sirve para dividir un programa grande en partes pequeñas y reutilizables: en lugar de repetir el mismo código, lo escribes una vez dentro de un SubProceso y lo invocas por su nombre. En esta guía verás la sintaxis de SubProceso...FinSubProceso, cómo se declaran los parámetros y la diferencia clave entre pasar un parámetro Por Referencia y pasarlo por valor.

Sintaxis

SubProceso Nombre ( parametros )
    // instrucciones
FinSubProceso

SubProceso Saludar ( nombre )
    Escribir "Hola, ", nombre
FinSubProceso

SubProceso Incrementar ( valor Por Referencia )
    valor <- valor + 1
FinSubProceso

El bloque empieza con SubProceso seguido del nombre y la lista de parámetros entre paréntesis, y termina obligatoriamente con FinSubProceso. Los parámetros se separan con comas.

Explicación

  • Definición y llamada. El SubProceso se define una vez (normalmente antes o después del algoritmo principal) y se ejecuta cada vez que se llama por su nombre con los argumentos correspondientes: Saludar("Ana").
  • Parámetros por valor (comportamiento habitual). Cuando un parámetro se pasa por valor, el SubProceso recibe una copia del dato. Lo que haga con esa copia no afecta a la variable original del algoritmo que llamó.
  • Por Referencia modifica la variable original. Si en la declaración del parámetro escribes Por Referencia, el SubProceso trabaja directamente con la variable original: cualquier cambio que haga dentro sí se refleja fuera, en quien lo llamó.
  • Cuándo usar cada uno. Usa parámetros normales (por valor) cuando el SubProceso solo necesita leer el dato. Usa Por Referencia cuando el SubProceso debe devolver un resultado modificando la variable que recibe, por ejemplo para actualizar un contador o un acumulador.
  • El nombre del SubProceso no devuelve un valor. A diferencia de una Funcion, un SubProceso (procedimiento) no retorna un valor; su forma de «devolver» resultados es modificar parámetros Por Referencia o mostrar/escribir datos directamente.

Ejemplo completo

Este programa muestra la diferencia en la práctica: Mostrar recibe por valor (no modifica) y Duplicar recibe Por Referencia (sí modifica):

SubProceso Mostrar ( num )
    Escribir "El valor es: ", num
FinSubProceso

SubProceso Duplicar ( num Por Referencia )
    num <- num * 2
FinSubProceso

Algoritmo Principal
    Definir x Como Entero
    x <- 10
    Mostrar(x)      // Muestra 10
    Duplicar(x)     // Por Referencia: modifica la variable x
    Mostrar(x)      // Muestra 20
FinAlgoritmo

Sigue el flujo mentalmente: x empieza valiendo 10. Mostrar(x) solo lee y muestra 10. Duplicar(x), al recibir el parámetro Por Referencia, multiplica la variable original por 2, así que x pasa a valer 20. La última llamada a Mostrar(x) confirma el cambio mostrando 20.

Errores comunes

  • Olvidar el FinSubProceso. Todo bloque SubProceso debe cerrarse con FinSubProceso. Si falta, PSeInt marca un error de sintaxis.
  • Esperar que un parámetro normal modifique la variable original. Por defecto, el parámetro es una copia: los cambios dentro del SubProceso se pierden al salir. Si necesitas modificar la variable original, declara el parámetro con Por Referencia.
  • Llamar al SubProceso con el número equivocado de argumentos. La llamada debe pasar un argumento por cada parámetro declarado, en el mismo orden.

Ver también

Preguntas frecuentes

¿Cuál es la diferencia entre SubProceso y Funcion en PSeInt?+
Un SubProceso es un procedimiento: ejecuta instrucciones pero no retorna un valor. Una Funcion sí retorna un valor, que se asigna a una variable con la sintaxis Funcion resultado <- Nombre(args). Si necesitas calcular y devolver un dato, usa Funcion; si solo necesitas ejecutar una tarea, usa SubProceso.
¿Qué significa que un parámetro sea Por Referencia?+
Significa que el SubProceso trabaja directamente con la variable original, no con una copia. Cualquier modificación que haga al parámetro dentro del SubProceso se refleja en la variable de quien lo llamó. Se declara escribiendo Por Referencia después del nombre del parámetro.
¿Qué pasa si olvido escribir FinSubProceso?+
PSeInt muestra un error de sintaxis porque el bloque queda sin cerrar. Todo SubProceso debe terminar con FinSubProceso, igual que todo Algoritmo termina con FinAlgoritmo. Revisa que cada apertura tenga su cierre correspondiente.

Publicaciones Similares