Escuela de Ingeniería en Informática y Telecomunicaciones 01 / 30
EIT
Escuela de
Ingeniería en Informática y Telecomunicaciones
Ingeniería en Informática  ·  Analista en Programación
FPY-1101 Fundamentos de Programación
Taller de Fundamentos de Programación
Algoritmos,
Diagramas de Flujo
& PSeInt

Fundamentos para representar y resolver problemas
de forma estructurada, lógica y reproducible

📐 Unidad 1
45 – 50 min · Teoría + Práctica
Docente
Prof. Carlos Martínez Sánchez
Asignatura
Fundamentos de Programación  FPY-1101
Periodo
Primer Año · Semestre I
FPY-1101 · Fundamentos de Programación · Prof. Carlos Martínez Sánchez

¿Qué vamos a ver hoy?

Recorrido completo desde el concepto de algoritmo hasta bucles y validaciones

01¿Qué es un algoritmo?5 min
02Algoritmos cotidianos3 min
03Diagramas de flujo7 min
04Introducción a PSeInt5 min
05Variables, tipos y operadores7 min
06Entrada / Salida3 min
07Condiciones simples y anidadas7 min
08Bucles y contadores8 min
🏆
¡Participación con puntos extra! Al final de cada tema habrá una pregunta sorpresa. Cada respuesta correcta suma +1.5 décimas a tu nota. Podés acumular un máximo de 3 décimas por clase (2 preguntas acertadas). ¡Prestá atención porque cualquiera puede ser preguntado!
Algoritmos

¿Qué es un Algoritmo?

Definición: Un algoritmo es un conjunto finito de instrucciones ordenadas, precisas y sin ambigüedad que resuelven un problema o realizan una tarea.
🔢

Finito

Tiene un número limitado de pasos. Siempre termina.

🎯

Preciso

Cada instrucción es clara, sin lugar a interpretación.

⚙️

Efectivo

Resuelve el problema para el que fue diseñado.

Algoritmos

Algoritmos Cotidianos

¡Ya usamos algoritmos todo el tiempo sin darnos cuenta!

Preparar café

1. Poner agua en la cafetera
2. Agregar café molido
3. Encender la cafetera
4. Esperar que hierva
5. Servir en la taza

🚦

Cruzar la calle

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

💡 Clave: En el paso 2 del semáforo hay una condición (Si / Sino). Eso también existe en programación.
⚡ Pregunta Relámpago
Q1 Tema: Algoritmos +1.5 décimas

¿Cuál de las siguientes características NO corresponde a un algoritmo correcto?

A Debe tener un número finito de pasos
B Cada instrucción debe ser precisa y sin ambigüedad
C Puede ejecutarse indefinidamente sin terminar
D Debe resolver el problema para el que fue diseñado
Respuesta correcta: opción C
Un algoritmo siempre debe terminar — esa es la característica de ser finito. Un proceso que corre para siempre no es un algoritmo válido. Las otras tres opciones (finito, preciso y efectivo) son precisamente las propiedades esenciales que vimos hoy.
Diagramas de Flujo

Símbolos del Diagrama de Flujo

INICIO/FIN

Óvalo / Terminal

Marca el inicio y el fin del algoritmo.

PROCESO

Rectángulo

Operación o cálculo (asignación, cómputo).

ENTRADA

Paralelogramo

Entrada (Leer) o salida (Escribir) de datos.

¿condición?

Rombo

Decisión: bifurca el flujo en Sí / No.

➡️ Las flechas indican la dirección del flujo. Siempre se lee de arriba hacia abajo.
Diagramas de Flujo

Diagrama: Mayor de dos números

INICIO
Leer A, B
¿A > B?
Escribir "A es mayor"
NO
Escribir "B es mayor"
FIN

El rombo genera dos caminos posibles: uno si la condición es verdadera (Sí), otro si es falsa (No).

  • Leer los valores del usuario (entrada)
  • Evaluar la condición A > B
  • Cada rama muestra un resultado diferente
  • Ambos caminos convergen al FIN
⚡ Pregunta Relámpago
Q2 Tema: Diagramas de Flujo +1.5 décimas

En un diagrama de flujo, ¿qué figura se utiliza para representar una decisión (condición que divide el flujo en dos caminos)?

A Rectángulo — para procesos y cálculos
B Rombo — para evaluar condiciones Sí/No
C Óvalo — para marcar inicio o fin
D Paralelogramo — para entrada y salida de datos
Respuesta correcta: opción B
El Rombo es el símbolo de decisión. Tiene exactamente dos salidas: una por la rama (condición verdadera) y otra por la rama No (condición falsa). Es el símbolo más importante del diagrama, porque representa el punto donde el algoritmo "piensa" y elige un camino.
PSeInt

¿Qué es PSeInt?

PSeInt (Pseudo-Intérprete) es una herramienta gratuita para aprender a programar usando pseudocódigo en español. Permite escribir y ejecutar algoritmos sin necesidad de conocer la sintaxis exacta de un lenguaje de programación real.
  • Pseudocódigo en español
  • Editor con coloreado de sintaxis
  • Genera el diagrama de flujo automáticamente
  • Detecta errores en tiempo real
  • Disponible para Windows, Linux y macOS
  • Ideal para primer año de informática
💾

Descarga

pseint.sourceforge.net

📝

Estructura básica

Algoritmo NombreDelAlgoritmo
  // instrucciones aquí
FinAlgoritmo
PSeInt · Variables

Variables y Tipos de Datos

Una variable es un espacio en memoria con nombre que guarda un valor que puede cambiar durante la ejecución.
TipoDescripciónEjemplo
EnteroNúmeros sin decimales5, -3, 100
RealNúmeros con decimales3.14, -0.5
CadenaTexto"Hola mundo"
LógicoVerdadero o FalsoVerdadero
CaracterUn 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
PSeInt · Literales

Literales – Valores directos

Un literal es un valor fijo que se escribe directamente en el código. No cambia durante la ejecución (a diferencia de una variable).

42

Literal entero. Número sin punto decimal.

3.14

Literal real. Tiene punto decimal.

"Hola"

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
PSeInt · Sentencias

Sentencia y Asignación

Una sentencia es una instrucción completa que el algoritmo ejecuta de una vez.
La asignación guarda un valor en una variable. En PSeInt se usa el operador <-
  • El valor de la derecha se guarda en la variable de la izquierda
  • Puede ser un literal, otra variable, o una expresión
  • Sobreescribe el valor anterior de la variable
// 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!
PSeInt · E/S

Entrada Leer y Salida Escribir

📥 Leer – Entrada de datos

Permite al usuario ingresar un valor que se guarda en una variable.

Leer nombre
Leer edad, nota

📤 Escribir – Salida de datos

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
PSeInt · Operadores

Operadores Aritméticos

OperadorSignificadoEjemploResultado
+Suma7 + 310
-Resta7 - 34
*Multiplicación7 * 321
/División7 / 23.5
MODMódulo (resto)7 MOD 31
^Potencia2 ^ 8256

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
⚠️ El orden de operaciones es igual que en matemática. Usar paréntesis para mayor claridad.
PSeInt · Operadores

Operadores Condicionales y Lógicos

🔵 Relacionales (devuelven Verdadero/Falso)

Op.SignificadoEjemplo
=Igual a5 = 5 → V
<>Distinto de3 <> 5 → V
>Mayor que7 > 3 → V
<Menor que2 < 1 → F
>=Mayor o igual5 >= 5 → V
<=Menor o igual4 <= 3 → F

🟣 Lógicos (combinan condiciones)

Op.Descripción
YAmbas condiciones deben ser verdaderas
OAl menos una debe ser verdadera
NOInvierte el valor lógico
// Ejemplos:
(edad >= 18) Y (edad <= 65)
(dia = "sabado") O (dia = "domingo")
NO (aprobado)
⚡ Pregunta Relámpago
Q3 Tema: PSeInt · Variables · Operadores +1.5 décimas

Dadas las variables a ← 10 y b ← 3, ¿cuál es el resultado de a MOD b?

A 3
B 1
C 3.33
D 0
Respuesta correcta: opción B — resultado: 1
MOD devuelve el resto de la división entera. 10 ÷ 3 = 3 con resto 1 (porque 3×3=9, y 10−9=1). No es lo mismo que la división normal (que daría 3.33). MOD es muy útil para saber si un número es par o impar: n MOD 2 = 0 → par.
PSeInt · Control de Flujo

Condición Si … Entonces

Permite ejecutar instrucciones solo cuando una condición es verdadera. Con el 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
💡 El SiNo es opcional. Si no hace falta el caso negativo, se puede omitir.
PSeInt · Control de Flujo

Condiciones Anidadas

Un Si dentro de otro Si. Permite manejar múltiples rangos o casos más específicos.
  • Siempre cerrar con FinSi por cada Si abierto
  • Indentar el código para leerlo mejor
  • Evalúan condiciones de lo más específico a lo más general
⚠️ Con muchas condiciones anidadas el código se vuelve difícil de leer. Cuando hay más de 3 casos, conviene usar Segun.
Algoritmo 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
PSeInt · Control de Flujo

Condición múltiple: Segun

Segun evalúa el valor de una variable y ejecuta el bloque que coincida. Es más limpio que anidar varios Si.
// Estructura
Segun variable Hacer
  valor1:
    // instrucciones
  valor2, valor3:
    // instrucciones
  De Otro Modo:
    // caso por defecto
FinSegun
💡 De Otro Modo es el equivalente al else. Se ejecuta si ningún caso coincide.
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
⚡ Pregunta Relámpago
Q4 Tema: Condiciones +1.5 décimas

¿Cuándo conviene usar Segun … Hacer en lugar de varios Si … SiNo anidados?

A Cuando necesitamos comparar rangos numéricos (mayor/menor)
B Siempre, porque Segun es más rápido que Si
C Cuando evaluamos el valor exacto de una sola variable con muchos casos posibles
D Solo cuando hay exactamente dos opciones
Respuesta correcta: opción C
Segun es ideal cuando comparamos el valor exacto de una variable contra muchos casos (como días de la semana, opciones de menú, números fijos). No sirve para rangos (mayor que, menor que) — para eso seguimos usando Si…SiNo anidado. Segun hace el código más legible cuando hay 3 o más casos de igualdad.
PSeInt · Bucles

Bucle Mientras

Repite un bloque de instrucciones mientras la condición sea verdadera. La condición se evalúa antes de ejecutar el bloque.
// Estructura
Mientras condicion Hacer
  // bloque que se repite
FinMientras
  • Si la condición es Falsa desde el inicio, el bloque no se ejecuta nunca
  • Dentro del bucle debe haber algo que eventualmente haga la condición Falsa
  • Sin eso → bucle infinito ⚠️
Algoritmo Tabla5
  Definir i Como Entero
  i <- 1
  
  Mientras i <= 10 Hacer
    Escribir "5 x ", i, " = ", 5*i
    i <- i + 1
  FinMientras
FinAlgoritmo
🔄 La variable i actúa como contador. Se incrementa en cada repetición.
PSeInt · Bucles

Bucle Repetir … Hasta Que

Repite el bloque al menos una vez y luego evalúa la condición. Se detiene cuando la condición es Verdadera.
// Estructura
Repetir
  // bloque que se repite
Hasta Que condicion

Mientras

Condición al inicio. Puede no ejecutarse.

Repetir

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
✅ Este patrón es ideal para validar entradas del usuario.
PSeInt · Bucles

Bucle Para

Se usa cuando sabemos exactamente cuántas veces queremos repetir. Maneja automáticamente el contador.
// Estructura
Para i <- inicio Hasta fin Con Paso incremento Hacer
  // bloque
FinPara
  • Con Paso es opcional, por defecto es 1
  • Puede contar hacia atrás con Con Paso -1
  • Ideal para: tablas, sumatorias, repeticiones fijas
Algoritmo 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.
PSeInt · Patrones

Contadores y Acumuladores

🔢 Contador

Cuenta cuántas veces ocurre algo. Se inicializa en 0 y se incrementa en 1.

contador <- 0
// Dentro del bucle:
contador <- contador + 1

➕ Acumulador

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
PSeInt · Buenas Prácticas

Validación de Entradas

Validar la entrada significa asegurarnos de que el usuario ingresa un valor correcto antes de procesarlo. Sin validación, el programa puede dar resultados incorrectos o romperse.
1

Pedir el dato

Mostrar un mensaje claro de qué se espera

2

Leer el dato

Guardar el valor ingresado en una variable

3

Verificar la condición

Si el dato no es válido, informar y volver a pedir

4

Continuar

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
✅ El patrón Repetir … Hasta Que es ideal para validaciones porque siempre pide el dato al menos una vez.
⚡ Pregunta Relámpago
Q5 Tema: Bucles · Contadores · Validaciones +1.5 décimas

¿Cuál es la diferencia clave entre el bucle Mientras y el bucle Repetir … Hasta Que?

A Mientras es más rápido que Repetir
B Repetir solo puede usarse con números enteros
C Repetir ejecuta el bloque al menos una vez; Mientras puede no ejecutarlo nunca
D No hay diferencia, son exactamente iguales
Respuesta correcta: opción C
En Mientras, la condición se evalúa antes de entrar — si es falsa desde el principio, el bloque nunca se ejecuta. En Repetir, el bloque se ejecuta primero y la condición se evalúa al final — por eso siempre corre mínimo una vez. Eso lo hace perfecto para validaciones de entrada: siempre hay que pedirle algo al usuario al menos una vez.
Ejercicio Integrador

Ejercicio Integrador

🎯 Enunciado: Crear un algoritmo que pida al usuario 5 números enteros positivos (validar cada uno). Mostrar la suma, el promedio, y si el promedio es mayor o igual a 7, mostrar "Aprobado", sino "Desaprobado".
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
Resumen

¿Cuándo usar cada Bucle?

🔄 Mientras

Cuando no sé cuántas veces se va a repetir. La condición se evalúa primero. Puede no ejecutarse.

Mientras condicion
  ...
FinMientras

🔁 Repetir

Cuando quiero ejecutar al menos una vez. Ideal para validaciones. La condición va al final.

Repetir
  ...
Hasta Que condicion

🔢 Para

Cuando sé exactamente cuántas veces repetir. Maneja el contador solo.

Para i <- 1 Hasta n
  ...
FinPara
💡 Regla práctica: ¿Sabés cuántas veces? → Para  |  ¿Necesitás ejecutar mínimo 1 vez? → Repetir  |  ¿Resto de casos? → Mientras
Resumen

Lo que aprendimos hoy

🧠

Algoritmo

Conjunto finito de pasos precisos para resolver un problema.

📊

Diagrama de Flujo

Representación visual usando óvalos, rectángulos, rombos y paralelogramos.

💻

PSeInt

Herramienta para escribir pseudocódigo en español y visualizar el diagrama.

📦

Variables y Tipos

Espacios con nombre para guardar datos: Entero, Real, Cadena, Lógico.

🔀

Condiciones

Si / SiNo / FinSi · Segun … Hacer para múltiples casos.

🔁

Bucles

Mientras (0+) · Repetir (1+) · Para (n fijo). Contadores y acumuladores.

Cierre
¡A programar
se ha dicho!

Practicá en PSeInt: creá algoritmos simples, probá los bucles y validá las entradas. La programación se aprende haciendo.

🌐 pseint.sourceforge.net
📘 Practicá todos los días
❓ Preguntá sin miedo
👏 Fin de la clase · ¡Muchas gracias!
100%
← → navegar  |  Ctrl +/− texto