Ejemplos de algoritmos
Cada ejemplo se abre en el editor con un clic: ves el diagrama, lo ejecutas paso a paso y miras las variables cambiar.
- Saludo simpleEl ejemplo más simple posible: lee un nombre y saluda. Punto de partida ideal para quien recién empieza a usar freeDFDWeb.
- ¡Hola Mundo!El clásico primer programa — lo imprime en la consola de Ejecución y además lo dice en voz alta.
- Factorial de un númeroObtiene e imprime el factorial de un número leído de teclado.
- ¿Es un número primo?Determina si un número entero positivo ingresado por teclado es primo.
- Máximo común divisor (Euclides)Calcula el máximo común divisor (MCD) de dos números usando el algoritmo de Euclides.
- Serie de FibonacciGenera y muestra los primeros N términos de la serie de Fibonacci.
- Invertir los dígitos de un númeroInvierte los dígitos de un número entero positivo leído por teclado.
- Promedio de notas y aprobaciónCalcula el promedio de N notas ingresadas y determina si el estudiante aprueba (promedio ≥ 3) o no.
- Tabla de multiplicar (ciclos anidados)Tabla de multiplicar del 1 al 10 usando dos ciclos Para anidados — ejemplo clásico de ciclos anidados.
- Contador de pares e imparesRecorre del 1 al 20 y clasifica cada número como par o impar — combina un ciclo Para con una Decisión adentro.
- Conversor de temperaturaConvierte grados Celsius a Fahrenheit o Kelvin, según la opción elegida por menú.
- Ecuación cuadrática (fórmula general)Resuelve a·x² + b·x + c = 0 con la fórmula general: calcula el discriminante y distingue dos raíces, una doble o ninguna real. Usa la potencia, la raíz cuadrada y el menos unario.
- Decimal a binarioMuestra la conversión de un número decimal a binario.
- Adivina el número mágicoJuego del número mágico: el programa elige un número secreto y el usuario intenta adivinarlo, recibiendo pistas de 'mayor'/'menor' en cada intento hasta acertar.
- Búsqueda lineal en un vectorBusca un elemento X dentro de un vector de N elementos recorriéndolo posición por posición (búsqueda lineal).
- Suma de pares en un vectorRecorre un vector y suma únicamente sus elementos pares.
- Ordenamiento burbujaOrdenamiento de un vector leído de teclado.
- Búsqueda con corte anticipadoBusca un número ingresado por teclado, intento por intento, y corta el ciclo apenas lo encuentra con Romper ciclo — ejemplo clásico de búsqueda con corte anticipado.
- Corte total del programaValida la edad ingresada; si es inválida, corta la ejecución completa del programa con Terminar programa en vez de seguir con datos incorrectos.
- Cuenta regresiva (Dormir)Cuenta regresiva del 5 al 1 pausando 1 segundo entre cada número con Dormir, para simular un tiempo de espera real.
- Días de la semana (Switch)Lee un número de día (1-7) y usa Switch para imprimir el nombre del día correspondiente — demuestra el componente Switch con varias cases + default.
- IVR simple con menú de vozIVR simple: reproduce un menú por voz y ramifica según la opción elegida con Switch. La opción se sigue ingresando por teclado (Leer) — a propósito, para no obligar a decidir entre un número hablado o un nombre de opción.
- Saludo por voz (Escuchar + Reproducir)Combina los dos componentes del plugin de voz: 'Escuchar (voz)' captura tu nombre hablando (mantén presionado el micrófono y habla), 'Reproducir voz' te saluda de vuelta. Sin micrófono o sin soporte del navegador, cae solo al ingreso por teclado — el programa corre igual.
- Error de índice de vector (demo)Demuestra el manejo de errores de índice de vector: leer una posición nunca asignada tira un error explícito en vez de basura silenciosa como el original.
- Validar entrada (Repetir)El caso pedagógico clásico de Repetir (do-while): pide un número positivo hasta que lo ingresado sea válido. El cuerpo corre siempre al menos una vez — al revés que Mientras, acá la condición se conoce recién después de leer el valor.
- Menú repetido hasta salir (Repetir + Switch)Calculadora simple con menú: Sumar, Restar o Salir. El menú se repite (Repetir + Switch, anidamiento real) hasta que el usuario elige la opción 3 — caso muy común en cursos introductorios.
- Producto más caro (vectores paralelos)Carga N productos en dos vectores paralelos (nombre y precio, ambos indexados por la misma posición) y encuentra el más caro — patrón real y muy común (registros "partidos" en varios vectores relacionados por índice).
- Número a texto (0-9999)Convierte un número entero de hasta 4 cifras a su forma escrita en palabras (español) — ej. 5432 -> "cinco mil cuatrocientos treinta y dos". Usa tablas (vectores) y subprogramas para manejar las irregularidades reales del idioma (11-15, 16-29 fusionados, "cien" vs "ciento").
- Número a números romanos (1-3999)Convierte un número entero a su representación en números romanos — ej. 1994 -> "MCMXCIV". Algoritmo goloso clásico con dos vectores paralelos (valores y símbolos, de mayor a menor).
- Números romanos a númeroConvierte un texto en números romanos (I, V, X, L, C, D, M) a su valor entero — ej. "MCMXCIV" -> 1994. Recorre el texto sumando el valor de cada símbolo, salvo que sea menor que el siguiente (notación sustractiva: "IV", "IX", "XL"...), caso en que se resta. Usa Según (Switch) sobre texto para traducir cada símbolo.
- Estacionamiento (componente interactivo)Demuestra cómo un DFD controla un componente visual externo con Llamada: Activar("Estacionamiento") abre una ventana flotante (arrastrable, redimensionable, no bloquea el resto de la app), CargarEscenario elige el tamaño del mundo, HayObstaculo pregunta y responde en la variable response_call, y MOVER mueve el auto — si choca, tira una excepción real de ejecución, igual que cualquier otro error del lenguaje.
- Laberinto (componente interactivo)Mismo mecanismo que el ejemplo de Estacionamiento, aplicado a un laberinto (MOVER/HayObstaculo/CargarEscenario son verbos compartidos entre los dos componentes): Activar("Laberinto") abre la ventana flotante, CargarEscenario elige el tamaño del laberinto, HayObstaculo pregunta si hay pared y responde en response_call, y MOVER guía al explorador hasta la salida — si choca contra una pared, tira una excepción real de ejecución.
- Laberinto — explorar sin conocer el mapa (nivel 3)El algoritmo más avanzado de la galería: explora el laberinto SIN conocer el mapa, con DFS real (dos vectores paralelos de posiciones visitadas + una pila de direcciones para retroceder cuando choca con un callejón sin salida). Combina vectores, ciclos, condiciones, Según y llamadas de sistema en un solo lugar. Este ejemplo carga un laberinto CON solución — ver también "sin solución" para la otra mitad del ejercicio.
- Laberinto — detectar que es imposible (nivel 3)Mismo algoritmo de exploración exhaustiva que el otro ejemplo de nivel 3, pero cargado contra un laberinto deliberadamente SIN SOLUCIÓN (la salida está completamente sellada). El algoritmo explora todo lo alcanzable y concluye "imposible" con CERTEZA — no es una heurística que se rinde, es una búsqueda exhaustiva real que prueba que no hay camino.
- Torres de Hanoi (componente interactivo)Demuestra el componente Torres de Hanoi con una secuencia de movimientos PRECARGADA (sin algoritmo recursivo, solución manual) — mismo criterio que Estacionamiento/Laberinto: enseña la sintaxis de MoverDisco/Discos/Termine, no resuelve el problema de forma inteligente. A diferencia de los otros componentes, Hanoi no necesita sensar el mundo — si un movimiento fuera ilegal, MoverDisco lanza una excepción real de ejecución.
- Graficar SEN(x) (componente interactivo)Grafica la función SEN(x) punto por punto, con x avanzando de a 0.2 desde 0 hasta 2*PI (una curva completa del seno) — usa la constante PI y el builtin SEN, ambos reales del intérprete. Demuestra el componente Graficador: cada Llamada GraficarPunto(x, y) agrega un punto a la curva, y el plano se va escalando solo a medida que crecen los puntos.
- Graficar COS(x) (componente interactivo)Grafica la función COS(x) punto por punto, con x avanzando de a 0.2 desde 0 hasta 2*PI (una curva completa del coseno) — mismo mecanismo que el ejemplo de SEN(x), buen par para comparar las dos curvas.
- Copo de nieve de Koch (componente interactivo)Dibuja un copo de nieve de Koch completo con el componente Tortuga: 3 lados de nivel 3 (4^3=64 segmentos cada uno, 192 en total), cada uno generado por el subproceso RECURSIVO Koch(longitud, nivel). Muestra cómo un algoritmo recursivo corto (7 líneas) produce una figura geométrica compleja — recursión hecha visualmente hermosa, a diferencia de Hanoi donde la recursión resuelve un rompecabezas.
- Picas y Fijas — adivinar un número (componente interactivo)A diferencia del resto de los componentes interactivos, Picas y Fijas no tiene ninguna lógica propia — el propio diagrama compara el intento contra un número secreto (dígito a dígito, con SubCadena) y le pasa el resultado ya calculado a PicasYFijas(numeroIntentado, cantidadFijas, cantidadPicas), que solo lo pinta. Hasta 3 intentos, corta apenas se adivina. Nombres de variable pensados para leerse como una frase.
- Palabra Secreta — camino feliz (componente interactivo)Flujo lineal y quemado (sin Leer, sin ciclos) pensado para seguir paso a paso en el depurador: prueba las 4 letras de GATO en orden, todas correctas, y termina ganando. Igual que Picas y Fijas, PalabraSecreta no tiene lógica propia — el DFD arma el arreglo letrasIntentadas a mano y el componente detecta solo cuándo ganó.
- Palabra Secreta — camino triste (componente interactivo)Flujo lineal y quemado (sin Leer, sin ciclos) pensado para seguir paso a paso en el depurador: prueba 4 letras que no están en SOL, una por una, y en la última llamada avisa perdio=Verdadero. Muestra la animación completa de la catapulta disparando el pastel — el componente nunca decide solo cuándo se pierde, esa cuenta es del DFD.
- Buscaminas — camino ingenuo (componente interactivo)Flujo lineal quemado (sin Leer): recorre TODO el tablero pisando celda por celda, sin mirar ningún número. Termina siempre en una excepción real al pisar una mina — el tablero garantiza que siempre hay una jugada segura, así que perder acá es evidencia de que el algoritmo no razona, no mala suerte. Buscaminas es de la familia SENSOR (como Estacionamiento/Laberinto): el componente genera y guarda las minas él mismo, el estudiante nunca las conoce de antemano.
- Buscaminas — camino con deducción (componente interactivo)El mismo tablero, resuelto por lógica pura: un bucle de punto fijo (Para anidados + Consultar) aplica las 2 reglas de deducción (si a un número ya le sobran vecinas marcadas, el resto son seguras; si le faltan tantas minas como vecinas sin saber, esas son todas minas) hasta despejar el tablero entero, sin adivinar ninguna celda. Muestra en vivo por qué "programar bien" no es solo una frase — acá literalmente significa "nunca perder".
- 8 Reinas — camino feliz (componente interactivo)Coloca las 8 reinas del clásico problema en una solución real, con las 8 posiciones ya quemadas — sin ningún algoritmo que las calcule. La idea es mostrar que ganar limpio SÍ es posible: ninguna reina ataca a otra (misma fila, columna, o diagonal). 8 Reinas es de la familia SENSOR (como Buscaminas): valida cada colocación en el momento, no al final.
- 8 Reinas — camino triste (componente interactivo)Unas reinas correctas y después una colocada a propósito en la misma columna que otra ya puesta — termina en una excepción real de ColocarReina, para mostrar la validación en acción: dos reinas nunca pueden compartir fila, columna, ni diagonal.
- Recorrido del Caballo — camino feliz (componente interactivo)Completa el clásico recorrido del caballo (visitar las 64 casillas de un tablero 8×8 sin repetir ninguna) con una solución real, las 64 posiciones ya quemadas — sin ningún algoritmo que las calcule. La idea es mostrar que completar el recorrido SÍ es posible, moviéndose siempre en "L" real de ajedrez. Recorrido del Caballo es de la familia SENSOR (como 8 Reinas): valida cada movimiento en el momento, no al final.
- Recorrido del Caballo — camino triste (componente interactivo)Unos movimientos correctos y después uno que vuelve a una casilla ya visitada (aunque sea una "L" válida) — termina en una excepción real de ColocarCaballo, para mostrar la validación en acción: el recorrido no puede repetir ninguna casilla.