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 Referenciacuando 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, unSubProceso(procedimiento) no retorna un valor; su forma de «devolver» resultados es modificar parámetrosPor Referenciao 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
SubProcesodebe cerrarse conFinSubProceso. 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
- Sintaxis de PSeInt: guía completa
- ¿Qué es PSeInt?
- Ejercicios resueltos de PSeInt
- Funcion en PSeInt: sintaxis y retorno de valor
- Dimension en PSeInt: arreglos sintaxis
- Comentarios en PSeInt: sintaxis //
Preguntas frecuentes
