Guía de Pseudocodigo (PSeInt Flexible)

Volver al Editor

Introducción

Bienvenido a la guía de Pseudocodigo, un intérprete en línea para PSeInt diseñado para ser flexible y fácil de usar. PSeInt es una herramienta para asistir a estudiantes en sus primeros pasos en programación mediante un simple pseudolenguaje intuitivo en español.

Este intérprete opera en un modo "flexible", lo que significa:

Estructura Básica de un Algoritmo

Todo algoritmo comienza con la palabra clave Proceso (o Algoritmo) seguida de un nombre, y finaliza con FinProceso (o FinAlgoritmo).

Proceso MiPrimerAlgoritmo
  // Acciones del algoritmo aquí
FinProceso

// O también:
Algoritmo EjemploAlternativo
  // ...
FinAlgoritmo

Comentarios

Los comentarios se inician con // y se extienden hasta el final de la línea. Son ignorados por el intérprete.

// Esto es un comentario de una línea
variable <- 5 // Esto también es un comentario

Variables y Tipos de Datos

En modo flexible, puedes usar variables directamente. Sus tipos (Entero, Real, Logico, Caracter, Cadena) se infieren. Sin embargo, puedes definirlas explícitamente para mayor claridad usando Definir.

Proceso TiposDeDatos
  // Uso implícito (flexible)
  edad <- 25
  nombre <- "Ana"
  esValido <- Verdadero
  pi <- 3.1416

  // Definición explícita (recomendado para claridad)
  Definir cantidad Como Entero
  Definir mensaje Como Cadena
  Definir precio Como Real
  Definir activo Como Logico

  cantidad <- 100
  mensaje <- 'Hola Mundo'
FinProceso

Nombres de variables deben empezar con una letra o guion bajo, seguido de letras, números o guion bajo (incluye Ñ y vocales acentuadas).

Asignación

Se usa <- o = para asignar valores a variables.

variable <- valor
otraVariable = valor

Entrada y Salida

Escribir

Muestra valores en la consola. Puede mostrar múltiples valores separados por comas. Si se añade SIN SALTAR, el cursor no pasará a la siguiente línea.

Escribir "Hola Mundo"
Escribir "Tu edad es: ", edad
Escribir "Parte 1" SIN SALTAR
Escribir " Parte 2" // Se mostrará: Parte 1 Parte 2

Leer

Permite al usuario ingresar un valor que se almacena en una variable. Se pueden leer múltiples variables separadas por comas.

Definir nombre Como Cadena
Definir edad Como Entero

Escribir "Ingresa tu nombre:"
Leer nombre
Escribir "Ingresa tu edad:"
Leer edad

Escribir "Hola ", nombre, ", tienes ", edad, " años."

// Leer múltiples variables
// Leer var1, var2

Expresiones

Aritméticas: +, -, *, / (división real), ^ (potencia), % o MOD (módulo).

Relacionales: = (igual), <> (distinto), < (menor), > (mayor), <= (menor o igual), >= (mayor o igual).

Lógicas: Y (o &), O (o |), NO (o ~).

El operador + también concatena cadenas.

suma <- 5 + 3
esMayor <- edad >= 18
condicion <- (a > b) Y (c < d)
saludo <- "Hola" + " " + "Mundo"

Estructura Condicional: Si ... Entonces

Si condicion Entonces
  // acciones si la condición es Verdadera
Sino Si otraCondicion Entonces // Opcional
  // acciones si otraCondicion es Verdadera
Sino // Opcional
  // acciones si ninguna condición anterior fue Verdadera
FinSi

Ejemplo:

Proceso CondicionalEjemplo
  Definir nota Como Entero
  Escribir "Ingrese la nota:"
  Leer nota
  Si nota >= 7 Entonces
    Escribir "Aprobado"
  Sino
    Escribir "Reprobado"
  FinSi
FinProceso

Estructura Selectiva: Segun

Segun variable_numerica_o_cadena Hacer
  opcion_1:
    // acciones
  opcion_2, opcion_3: // Múltiples opciones para un mismo bloque
    // acciones
  De Otro Modo: // Opcional
    // acciones si no coincide ninguna opción
FinSegun

Ejemplo:

Proceso SegunEjemplo
  Definir dia Como Entero
  Escribir "Ingrese número de día (1- Domingo, 2- Lunes...):"
  Leer dia
  Segun dia Hacer
    1: Escribir "Domingo"
    2: Escribir "Lunes"
    3: Escribir "Martes"
    4: Escribir "Miércoles"
    5: Escribir "Jueves"
    6: Escribir "Viernes"
    7: Escribir "Sábado"
    De Otro Modo:
      Escribir "Día inválido"
  FinSegun
FinProceso

Bucle Mientras

Mientras condicion Hacer
  // acciones mientras la condición sea Verdadera
FinMientras

Ejemplo:

Proceso MientrasEjemplo
  Definir contador Como Entero
  contador <- 1
  Mientras contador <= 5 Hacer
    Escribir contador
    contador <- contador + 1
  FinMientras
FinProceso

Bucle Repetir ... Hasta Que

Las acciones se ejecutan al menos una vez, y luego se evalúa la condición. El bucle termina cuando la condición es Verdadera.

Repetir
  // acciones
Hasta Que condicion

Ejemplo:

Proceso RepetirEjemplo
  Definir claveSecreta Como Cadena
  Definir intento Como Cadena
  claveSecreta <- "1234"
  Repetir
    Escribir "Adivina la clave:"
    Leer intento
  Hasta Que intento = claveSecreta
  Escribir "¡Correcto!"
FinProceso

Bucle Para

Para variable_contadora <- valor_inicial Hasta valor_final Con Paso incremento Hacer
  // acciones
FinPara

// También puede ser:
// Para variable_contadora DESDE valor_inicial Hasta valor_final Con Paso incremento Hacer
// El 'Con Paso incremento' es opcional (por defecto es 1).
// Si el paso es negativo, la condición es variable_contadora >= valor_final.

Ejemplo:

Proceso ParaEjemplo
  Definir i Como Entero
  Para i <- 1 Hasta 5 Hacer // Paso 1 por defecto
    Escribir i
  FinPara

  Escribir "Conteo regresivo:"
  Para i <- 3 Hasta 1 Con Paso -1 Hacer
    Escribir i
  FinPara
FinProceso

Arreglos (Vectores y Matrices)

Se definen con Dimension. Los índices en PSeInt son base 1 (empiezan en 1).

// Vector de 5 elementos
Dimension miVector[5]

// Matriz de 3 filas y 4 columnas
Dimension miMatriz[3,4]

miVector[1] <- 10      // Asignar al primer elemento
valor <- miVector[3]   // Leer el tercer elemento

Ejemplo:

Proceso ArregloEjemplo
  Dimension numeros[3]
  Definir i Como Entero

  // Cargar el vector
  Para i <- 1 Hasta 3 Hacer
    Escribir "Ingrese número para la posición ", i, ":"
    Leer numeros[i]
  FinPara

  // Mostrar el vector
  Escribir "Los números ingresados son:"
  Para i <- 1 Hasta 3 Hacer
    Escribir numeros[i]
  FinPara
FinProceso

Subprocesos (Funciones y Procedimientos)

Permiten modularizar el código. Pueden recibir parámetros y, opcionalmente, devolver un valor.

Sintaxis Procedimiento (sin retorno explícito):

SubProceso NombreSubProceso (param1, param2 Por Referencia)
  // acciones del subproceso
FinSubProceso

// Llamada:
NombreSubProceso(valor1, variable_referencia)

Sintaxis Función (con retorno explícito):

SubProceso variable_retorno <- NombreFuncion (param1, param2)
  // acciones
  variable_retorno <- valor_a_retornar
FinSubProceso

// Llamada:
resultado <- NombreFuncion(arg1, arg2)

Nota: El paso de parámetros por referencia (Por Referencia) no está implementado en esta versión. Todos los parámetros se pasan por valor.

Ejemplo:

Proceso PrincipalConSubprocesos
  Definir num1, num2, resSuma Como Entero
  num1 <- 5
  num2 <- 10

  // Llamada a procedimiento
  Saludar("Usuario")

  // Llamada a función
  resSuma <- SumarNumeros(num1, num2)
  Escribir "La suma de ", num1, " y ", num2, " es: ", resSuma
FinProceso

SubProceso Saludar (nombre_persona) // Procedimiento
  Escribir "Hola, ", nombre_persona
FinSubProceso

SubProceso resultado_suma <- SumarNumeros (a, b) // Función
  resultado_suma <- a + b
FinSubProceso

Funciones Predefinidas

Proceso FuncionesEjemplo
  Definir numero, aleatorio Como Real
  Definir texto1, texto2, concatenado Como Cadena

  numero <- -25.7
  Escribir "Valor absoluto de ", numero, " es ", ABS(numero)
  Escribir "Parte entera de ", numero, " es ", TRUNC(numero)
  Escribir "Redondeado de ", numero, " es ", REDON(numero)

  Si numero > 0 Entonces
    Escribir "Raíz de ", numero, " es ", RC(numero) // Error si numero es negativo
  FinSi
  
  aleatorio <- AZAR(100) // Entero entre 0 y 99
  Escribir "Número al azar (0-99): ", aleatorio

  texto1 <- "Hola "
  texto2 <- "PSeInt"
  concatenado <- CONCATENAR(texto1, texto2)
  Escribir concatenado // Muestra "Hola PSeInt"
FinProceso