PSeInt - Pseudocódigo en Español

Escribe, ejecuta y aprende pseudocódigo PSeInt directamente en VS Code y Cursor. Sin instalar nada más.
Inicio rápido
- Instala la extensión desde el marketplace
- Crea un archivo
.psc
- Escribe tu programa (los snippets te ayudan — escribe
proceso y presiona Tab)
- Ejecuta con
F5 (o el botón ▶ de la barra superior del editor)
Proceso HolaMundo
Escribir "Hola Mundo!"
FinProceso
Características
Intérprete embebido
Ejecuta programas PSeInt directamente en el editor. No necesitas descargar ni configurar PSeInt.
- F5 para ejecutar (o el botón ▶ del editor)
- Salida en el panel "PSeInt - Intérprete"
- Entrada de datos via cuadro de diálogo (
Leer)
- Errores en español con número de línea
- Protección contra ciclos infinitos
Resaltado de sintaxis
Todas las palabras clave de PSeInt resaltadas con colores. Soporte completo para caracteres en español (á, é, í, ó, ú, ñ).
Snippets inteligentes
Escribe las primeras letras y presiona Tab:
| Escribe |
Genera |
proceso |
Proceso...FinProceso |
si |
Si...Entonces...FinSi |
sisino |
Si...SiNo...FinSi |
mientras |
Mientras...Hacer...FinMientras |
para |
Para...Con Paso...FinPara |
repetir |
Repetir...Hasta Que |
segun |
Segun...FinSegun |
escribir |
Escribir |
leer |
Leer |
escleer |
Escribir + Leer |
defent |
Definir Como Entero |
defreal |
Definir Como Real |
defcad |
Definir Como Cadena |
deflog |
Definir Como Logico |
dim |
Dimension arreglo |
funcion |
Funcion...FinFuncion |
subproceso |
SubProceso...FinSubProceso |
Validación en tiempo real
Detecta errores mientras escribes:
- Bloques sin cerrar (falta
FinSi, FinMientras, etc.)
- Bloques de cierre sin apertura correspondiente
Más características
- Plegado de código (colapsa bloques)
- Indentación automática al entrar en bloques
- Ícono personalizado para archivos
.psc
- Soporte para comentarios (
// y /* */)
Qué soporta el intérprete
| Categoría |
Instrucciones |
| Tipos |
Entero, Real, Cadena, Logico |
| Variables |
Definir...Como, asignación con <- |
| Entrada/Salida |
Escribir, Escribir Sin Saltar, Leer, Limpiar Pantalla / Borrar Pantalla, Esperar Tecla, Esperar N Segundos |
| Condicionales |
Si...Entonces...SiNo...FinSi |
| Ciclos |
Mientras...Hacer, Para...Hasta...Con Paso, Repetir...Hasta Que |
| Selección |
Segun...Hacer...De Otro Modo...FinSegun |
| Arreglos |
Dimension 1D, 2D (matrices) y N-dimensional, indexación base-1 |
| Operadores |
+, -, *, /, ^, MOD, =, <>, <, >, Y, O, NO |
Funciones y SubProcesos definidos por el usuario
El intérprete soporta Funcion (con valor de retorno) y SubProceso (sin retorno), incluyendo recursión, parámetros Por Valor (default) y Por Referencia, y Retornar para salida temprana.
Proceso Main
Definir x Como Entero;
x <- 5;
Escribir "factorial(", x, ") = ", factorial(x);
duplicar(x);
Escribir "x duplicado: ", x;
FinProceso
Funcion r <- factorial(n)
Si n <= 1 Entonces
r <- 1;
SiNo
r <- n * factorial(n - 1);
FinSi
FinFuncion
SubProceso duplicar(v Por Referencia)
v <- v * 2;
FinSubProceso
Detalles:
- Las funciones pueden declararse antes o después de
Proceso/FinProceso.
Por Valor copia el argumento (default). Por Referencia permite mutar variables, elementos de arreglo, o arreglos completos (1D, 2D, N-D) del caller.
Retornar [expr]; permite salida temprana. En Funcion, asigna el valor a la variable de retorno.
- En
Funcion sin Como Tipo declarado, el tipo del retorno es latente: se infiere de la primera asignación al retVar (Cadena, Logico o Real). Si nunca se asigna, retorna 0 por compatibilidad.
- Profundidad máxima de llamadas: 500 (suficiente para recursión razonable).
- El límite de iteraciones (1.000.000) es por frame de llamada, no global: una función con su propio bucle no agota el contador del caller.
Arreglos N-dimensionales (matrices y cubos)
Dimension admite arreglos de cualquier número de dimensiones. Indexación base-1 estilo PSeInt clásico:
Proceso Matrices
Definir i, j Como Entero;
Dimension a[3, 4]; // matriz 3x4 (12 elementos, row-major)
Para i <- 1 Hasta 3 Hacer
Para j <- 1 Hasta 4 Hacer
a[i, j] <- i * 10 + j;
FinPara
FinPara
Escribir a[2, 3]; // imprime 23
// Cubos 3D y superior también funcionan
Dimension cubo[2, 3, 4];
cubo[1, 1, 1] <- 100;
FinProceso
Errores reportados en español:
El arreglo tiene N dimensión(es), se proveyeron M cuando la aridad de los índices no coincide.
Índice X fuera de rango [1..N] en dimensión K cuando un índice se sale del rango.
El tamaño del arreglo debe ser un entero positivo, recibió X en dimensión K al declarar dimensiones inválidas.
Funciones incorporadas
| Función |
Descripción |
RC(x) / Raiz(x) |
Raíz cuadrada |
Abs(x) |
Valor absoluto |
Trunc(x) |
Truncar a entero |
Redon(x) |
Redondear |
sen(x) / cos(x) / tan(x) |
Trigonométricas (radianes) |
asen(x) / acos(x) / atan(x) |
Trigonométricas inversas (radianes) |
ln(x) |
Logaritmo natural |
exp(x) |
Exponencial natural (e^x) |
log(x) |
Logaritmo base 10 |
pot(b, e) |
Potencia (alias del operador ^) |
Longitud(s) |
Largo de cadena |
Subcadena(s, inicio, fin) |
Extraer subcadena (base-1) |
Mayusculas(s) |
Convertir a mayúsculas |
Minusculas(s) |
Convertir a minúsculas |
Concatenar(s1, s2) |
Unir cadenas |
ConvertirANumero(s) |
Texto a número |
ConvertirATexto(n) |
Número a texto |
Azar(n) |
Entero aleatorio en [0, n-1] |
Aleatorio(a, b) |
Entero aleatorio en [a, b] |
Constante predefinida: pi (Math.PI). Puedes reasignarla — al estilo PSeInt clásico.
Atajos de teclado
| Atajo |
Acción |
F5 |
Ejecutar el archivo PSeInt actual |
F5 ejecuta con PSeInt nativo si está instalado y detectable; en caso contrario usa automáticamente el intérprete embebido. El botón ▶ de la barra superior del editor hace lo mismo.
Configuración
| Propiedad |
Default |
Descripción |
pseint.executablePath |
"" |
Ruta al ejecutable de PSeInt (solo para ejecución nativa) |
pseint.runArgs |
["--nouser"] |
Argumentos al ejecutar con PSeInt nativo |
pseint.clearTerminalBeforeRun |
true |
Limpiar terminal antes de ejecutar |
pseint.saveBeforeRun |
true |
Guardar archivo antes de ejecutar |
Ejecutar con PSeInt nativo (opcional)
Si prefieres usar el binario oficial de PSeInt:
- Descarga PSeInt desde pseint.sourceforge.net
- Instálalo en tu sistema
- La extensión lo detecta automáticamente, o configura la ruta manualmente:
{
"pseint.executablePath": "/ruta/a/pseint"
}
Ejemplos
La extensión incluye programas de ejemplo en la carpeta examples/:
01-hola-mundo.psc — Tu primer programa
02-calculadora.psc — Operaciones básicas con entrada de datos
03-tabla-multiplicar.psc — Ciclo Para
04-notas-alumno.psc — Promedio y Segun
05-fibonacci.psc — Serie de Fibonacci
06-arreglo-mayor.psc — Arreglos con Dimension
07-adivina-numero.psc — Juego con Repetir y Aleatorio
Limitaciones actuales
El intérprete embebido cubre las instrucciones más usadas en cursos introductorios. Aún no soporta:
- Closures / clausuras
- Funciones de orden superior (pasar funciones como argumento)
- Parámetros con valor por defecto
- Sobrecarga de funciones
- Tipo
Caracter con enforcement de longitud 1
- Depuración paso a paso
- Operaciones con archivos
Para esos casos avanzados, usa la ejecución con PSeInt nativo: configura pseint.executablePath y presiona F5.
Contribuir
git clone https://github.com/Robbyfuu/vscode-pseint.git
cd vscode-pseint
pnpm install
pnpm run watch # compilación en modo watch
pnpm test # correr tests (281 tests)
Presiona F5 en VS Code para abrir una ventana de desarrollo con la extensión cargada.
Licencia
MIT