Fundamentos para representar y resolver problemas
de forma estructurada, lógica y reproducible
Recorrido completo desde el concepto de algoritmo hasta bucles y validaciones
Tiene un número limitado de pasos. Siempre termina.
Cada instrucción es clara, sin lugar a interpretación.
Resuelve el problema para el que fue diseñado.
¡Ya usamos algoritmos todo el tiempo sin darnos cuenta!
1. Poner agua en la cafetera
2. Agregar café molido
3. Encender la cafetera
4. Esperar que hierva
5. Servir en la taza
1. Llegar al semáforo
2. Si está en verde → cruzar
3. Si está en rojo → esperar
4. Mirar antes de cruzar
5. Llegar al otro lado
¿Cuál de las siguientes características NO corresponde a un algoritmo correcto?
Marca el inicio y el fin del algoritmo.
Operación o cálculo (asignación, cómputo).
Entrada (Leer) o salida (Escribir) de datos.
Decisión: bifurca el flujo en Sí / No.
El rombo genera dos caminos posibles: uno si la condición es verdadera (Sí), otro si es falsa (No).
En un diagrama de flujo, ¿qué figura se utiliza para representar una decisión (condición que divide el flujo en dos caminos)?
pseint.sourceforge.net
Algoritmo NombreDelAlgoritmo // instrucciones aquí FinAlgoritmo
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Entero | Números sin decimales | 5, -3, 100 |
| Real | Números con decimales | 3.14, -0.5 |
| Cadena | Texto | "Hola mundo" |
| Lógico | Verdadero o Falso | Verdadero |
| Caracter | Un solo carácter | 'A', '3' |
Declaración y uso en PSeInt:
Algoritmo EjemploVariables Definir nombre Como Cadena Definir edad Como Entero Definir nota Como Real nombre <- "Ana" edad <- 20 nota <- 9.5 FinAlgoritmo
Literal entero. Número sin punto decimal.
Literal real. Tiene punto decimal.
Literal cadena. Va entre comillas dobles.
Literal lógico
Verdadero Falso
Diferencia: variable vs. literal
edad <- 18 // 18 es literal, edad es variable
pi <- 3.14 // 3.14 es literal
<-
// Asignaciones simples x <- 10 y <- 5 suma <- x + y // 15 nombre <- "Pedro" // Un contador (suma 1 a sí mismo) contador <- contador + 1 // INCORRECTO: literal a la izquierda // 10 <- x ← ¡Esto es un ERROR!
Permite al usuario ingresar un valor que se guarda en una variable.
Leer nombre Leer edad, nota
Muestra información en pantalla. Puede combinar texto y variables.
Escribir "Hola mundo" Escribir "Tu nota es: ", nota
🔷 Ejemplo completo:
Algoritmo Saludo Definir nombre Como Cadena Definir edad Como Entero Escribir "Ingresa tu nombre:" Leer nombre Escribir "Ingresa tu edad:" Leer edad Escribir "Hola, ", nombre, "!" Escribir "Tenés ", edad, " años." FinAlgoritmo
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
| + | Suma | 7 + 3 | 10 |
| - | Resta | 7 - 3 | 4 |
| * | Multiplicación | 7 * 3 | 21 |
| / | División | 7 / 2 | 3.5 |
| MOD | Módulo (resto) | 7 MOD 3 | 1 |
| ^ | Potencia | 2 ^ 8 | 256 |
Ejemplo práctico:
Algoritmo Calculadora Definir a, b, res Como Real Escribir "Número A:" Leer a Escribir "Número B:" Leer b res <- (a + b) * 2 Escribir "Resultado: ", res FinAlgoritmo
🔵 Relacionales (devuelven Verdadero/Falso)
| Op. | Significado | Ejemplo |
|---|---|---|
= | Igual a | 5 = 5 → V |
<> | Distinto de | 3 <> 5 → V |
> | Mayor que | 7 > 3 → V |
< | Menor que | 2 < 1 → F |
>= | Mayor o igual | 5 >= 5 → V |
<= | Menor o igual | 4 <= 3 → F |
🟣 Lógicos (combinan condiciones)
| Op. | Descripción |
|---|---|
Y | Ambas condiciones deben ser verdaderas |
O | Al menos una debe ser verdadera |
NO | Invierte el valor lógico |
// Ejemplos: (edad >= 18) Y (edad <= 65) (dia = "sabado") O (dia = "domingo") NO (aprobado)
Dadas las variables a ← 10 y b ← 3, ¿cuál es el resultado de a MOD b?
n MOD 2 = 0 → par.
SiNo también manejamos el caso falso.
// Estructura Si condicion Entonces // bloque SI SiNo // bloque NO FinSi
Algoritmo MayorEdad Definir edad Como Entero Escribir "Ingresá tu edad:" Leer edad Si edad >= 18 Entonces Escribir "Sos mayor de edad" SiNo Escribir "Sos menor de edad" FinSi FinAlgoritmo
FinSi por cada Si abiertoAlgoritmo Calificacion Definir nota Como Entero Leer nota Si nota >= 9 Entonces Escribir "Sobresaliente" SiNo Si nota >= 7 Entonces Escribir "Bueno" SiNo Si nota >= 6 Entonces Escribir "Aprobado" SiNo Escribir "Reprobado" FinSi FinSi FinSi FinAlgoritmo
// Estructura Segun variable Hacer valor1: // instrucciones valor2, valor3: // instrucciones De Otro Modo: // caso por defecto FinSegun
Algoritmo DiaSemana Definir dia Como Entero Escribir "Número de día (1-7):" Leer dia Segun dia Hacer 1: Escribir "Lunes" 2: Escribir "Martes" 3: Escribir "Miércoles" 4: Escribir "Jueves" 5: Escribir "Viernes" 6, 7: Escribir "Fin de semana" De Otro Modo: Escribir "Día inválido" FinSegun FinAlgoritmo
¿Cuándo conviene usar Segun … Hacer en lugar de varios Si … SiNo anidados?
// Estructura Mientras condicion Hacer // bloque que se repite FinMientras
Algoritmo Tabla5 Definir i Como Entero i <- 1 Mientras i <= 10 Hacer Escribir "5 x ", i, " = ", 5*i i <- i + 1 FinMientras FinAlgoritmo
i actúa como contador. Se incrementa en cada repetición.
// Estructura Repetir // bloque que se repite Hasta Que condicion
Condición al inicio. Puede no ejecutarse.
Condición al final. Siempre ejecuta 1 vez.
Algoritmo PedirNumero Definir num Como Entero Repetir Escribir "Ingresá un número positivo:" Leer num Si num <= 0 Entonces Escribir "¡Debe ser positivo!" FinSi Hasta Que num > 0 Escribir "Número válido: ", num FinAlgoritmo
// Estructura Para i <- inicio Hasta fin Con Paso incremento Hacer // bloque FinPara
Con Paso -1Algoritmo SumaN Definir i, n, suma Como Entero Escribir "¿Hasta qué número sumar?" Leer n suma <- 0 Para i <- 1 Hasta n Hacer suma <- suma + i FinPara Escribir "La suma es: ", suma FinAlgoritmo
suma es un acumulador: empieza en 0 y va sumando cada iteración.
Cuenta cuántas veces ocurre algo. Se inicializa en 0 y se incrementa en 1.
contador <- 0 // Dentro del bucle: contador <- contador + 1
Acumula (suma) valores. Se inicializa en 0 y se le suma cada valor.
acum <- 0 // Dentro del bucle: acum <- acum + valor
Algoritmo PromedioNotas Definir i, n, cant_aprob Como Entero Definir nota, suma, prom Como Real Escribir "¿Cuántas notas?" Leer n suma <- 0 // acumulador cant_aprob <- 0 // contador Para i <- 1 Hasta n Hacer Escribir "Nota ", i, ":" Leer nota suma <- suma + nota Si nota >= 6 Entonces cant_aprob <- cant_aprob + 1 FinSi FinPara prom <- suma / n Escribir "Promedio: ", prom Escribir "Aprobados: ", cant_aprob FinAlgoritmo
Mostrar un mensaje claro de qué se espera
Guardar el valor ingresado en una variable
Si el dato no es válido, informar y volver a pedir
Solo seguir cuando el dato es válido
Algoritmo ValidarEdad Definir edad Como Entero // Patrón Repetir → valida siempre Repetir Escribir "Ingresá tu edad (0-120):" Leer edad Si (edad < 0) O (edad > 120) Entonces Escribir "Edad inválida. Intentá de nuevo." FinSi Hasta Que (edad >= 0) Y (edad <= 120) Escribir "Edad registrada: ", edad FinAlgoritmo
¿Cuál es la diferencia clave entre el bucle Mientras y el bucle Repetir … Hasta Que?
Algoritmo EjercicioIntegrador Definir i, num Como Entero Definir suma, prom Como Real suma <- 0 Para i <- 1 Hasta 5 Hacer // Validar que sea positivo Repetir Escribir "Ingresá el número ", i, " (positivo):" Leer num Si num <= 0 Entonces Escribir "¡El número debe ser positivo!" FinSi Hasta Que num > 0 suma <- suma + num FinPara prom <- suma / 5 Escribir "Suma: ", suma Escribir "Promedio: ", prom Si prom >= 7 Entonces Escribir "✅ Aprobado" SiNo Escribir "❌ Desaprobado" FinSi FinAlgoritmo
Cuando no sé cuántas veces se va a repetir. La condición se evalúa primero. Puede no ejecutarse.
Mientras condicion ... FinMientras
Cuando quiero ejecutar al menos una vez. Ideal para validaciones. La condición va al final.
Repetir ... Hasta Que condicion
Cuando sé exactamente cuántas veces repetir. Maneja el contador solo.
Para i <- 1 Hasta n ... FinPara
Conjunto finito de pasos precisos para resolver un problema.
Representación visual usando óvalos, rectángulos, rombos y paralelogramos.
Herramienta para escribir pseudocódigo en español y visualizar el diagrama.
Espacios con nombre para guardar datos: Entero, Real, Cadena, Lógico.
Si / SiNo / FinSi · Segun … Hacer para múltiples casos.
Mientras (0+) · Repetir (1+) · Para (n fijo). Contadores y acumuladores.
Practicá en PSeInt: creá algoritmos simples, probá los bucles y validá las entradas. La programación se aprende haciendo.