PSeInt Lab
Aprende • Practica • Evalúa (sin spoilers)
Progreso: 0/0 • 0%
Cargando motor…
Editor (PSeInt)
Reto actual
Selecciona una lección…
Ayuda paso a paso
Pulsa “🆘 Ayuda” cuando te quedes trabado. Te doy pistas, no spoilers.
Resultados
Tu progreso
Puntos = requisitos cumplidos. Tests te abren el ✅⭐.
Los que más duraron
Top por tiempo acumulado (aprox).

🧱 Tipos básicos

Algoritmo TiposBasicos
    Definir a Como Entero
    Definir b Como Cadena
    Definir c Como Logico

    a <- 10
    b <- "Hola"
    c <- Verdadero

    // En PSeInt el "tipo" lo declaras con Definir (no existe type()).
    Escribir "a=", a, " (Entero)"
    Escribir "b=", b, " (Cadena)"
    Escribir "c=", c, " (Logico)"
FinAlgoritmo
  • En PSeInt declaras el tipo con Definir.
  • Strings siempre con comillas.

📦 Listas y slicing

Algoritmo ListasYSlicing
    Dimension x[4]
    Definir i Como Entero
    Definir suma, promedio Como Real

    x[0] <- 2
    x[1] <- 4
    x[2] <- 6
    x[3] <- 8

    Escribir 4               // len(x)
    Escribir x[0]
    
    // slicing x[1:3] en Python = elementos 1 y 2
    Escribir x[1], " ", x[2]

    suma <- 0
    Para i <- 0 Hasta 3 Hacer
        suma <- suma + x[i]
    FinPara

    promedio <- suma / 4
    Escribir promedio
FinAlgoritmo
  • PSeInt indexa desde 0 (sí, duele al principio).

🔁 for / if

Algoritmo ForIf
    Definir i Como Entero

    Para i <- 1 Hasta 5 Hacer
        Si i MOD 2 = 0 Entonces
            Escribir i, " par"
        SiNo
            Escribir i, " impar"
        FinSi
    FinPara
FinAlgoritmo
  • Aquí no hay : ni indentación “mística”; todo va con FinSi y FinPara 😅

🧩 Funciones

Funcion area <- area_rect(b, h)
    area <- b * h
FinFuncion

Algoritmo Funciones
    Escribir area_rect(3, 4)
FinAlgoritmo
  • Si un reto pide un nombre exacto, respétalo.

🧠 Diccionarios

Algoritmo FrecuenciaCaracteres
    Definir texto Como Cadena
    Definir ch Como Cadena
    Definir n, i, j, pos Como Entero

    // PSeInt no tiene diccionarios "reales", lo simulamos con 2 arreglos:
    Dimension letras[100]
    Dimension conteo[100]

    texto <- "banana"
    n <- 0

    Para i <- 0 Hasta Longitud(texto)-1 Hacer
        ch <- Subcadena(texto, i, i) // 1 caracter
        pos <- -1

        Para j <- 0 Hasta n-1 Hacer
            Si letras[j] = ch Entonces
                pos <- j
            FinSi
        FinPara

        Si pos = -1 Entonces
            letras[n] <- ch
            conteo[n] <- 1
            n <- n + 1
        SiNo
            conteo[pos] <- conteo[pos] + 1
        FinSi
    FinPara

    Escribir "Frecuencias:"
    Para i <- 0 Hasta n-1 Hacer
        Escribir letras[i], " => ", conteo[i]
    FinPara
FinAlgoritmo
  • En vez de get, aquí toca “buscar y sumar” (modo supervivencia).

🧯 Manejo de errores

Algoritmo ManejoErrores
    Definir s, ch Como Cadena
    Definir x, i Como Entero
    Definir ok Como Logico

    s <- "12a"
    ok <- Verdadero

    // PSeInt no tiene try/except: validamos antes de convertir.
    Para i <- 0 Hasta Longitud(s)-1 Hacer
        ch <- Subcadena(s, i, i)
        Si NO (ch >= "0" Y ch <= "9") Entonces
            ok <- Falso
        FinSi
    FinPara

    Si ok Entonces
        x <- ConvertirANumero(s)
    SiNo
        x <- 0
    FinSi

    Escribir x
FinAlgoritmo
  • Errores pasan. Aquí la jugada es prevenir antes de convertir.