Esempi di algoritmi
Ogni esempio si apre nell'editor con un clic: vedi il diagramma, lo esegui passo passo e guardi le variabili.
- Saluto sempliceL'esempio più semplice possibile: legge un nome e lo saluta. Punto di partenza ideale per chi inizia a usare freeDFDWeb.
- Ciao Mondo!Il classico primo programma — lo stampa nella console di Esecuzione e lo dice anche ad alta voce.
- Fattoriale di un numeroCalcola e stampa il fattoriale di un numero letto da tastiera.
- È un numero primo?Determina se un numero intero positivo inserito da tastiera è primo.
- Massimo comun divisore (Euclide)Calcola il massimo comun divisore (MCD) di due numeri usando l'algoritmo di Euclide.
- Successione di FibonacciGenera e mostra i primi N termini della successione di Fibonacci.
- Invertire le cifre di un numeroInverte le cifre di un numero intero positivo letto da tastiera.
- Media dei voti e promozioneCalcola la media di N voti inseriti e determina se lo studente è promosso (media ≥ 3) o no.
- Tabellina (cicli annidati)Tabellina da 1 a 10 usando due cicli Per annidati — esempio classico di cicli annidati.
- Contatore di pari e dispariScorre da 1 a 20 e classifica ogni numero come pari o dispari — combina un ciclo Per con una Decisione all'interno.
- Convertitore di temperaturaConverte i gradi Celsius in Fahrenheit o Kelvin, in base all'opzione scelta dal menu.
- Equazione di secondo grado (formula generale)Risolve a·x² + b·x + c = 0 con la formula generale: calcola il discriminante e distingue due radici, una doppia o nessuna reale. Usa potenza, radice quadrata e meno unario.
- Da decimale a binarioMostra la conversione di un numero decimale in binario.
- Indovina il numero magicoGioco del numero magico: il programma sceglie un numero segreto e l'utente cerca di indovinarlo, ricevendo indizi 'maggiore'/'minore' a ogni tentativo finché non ci riesce.
- Ricerca lineare in un vettoreCerca un elemento X all'interno di un vettore di N elementi scorrendolo posizione per posizione (ricerca lineare).
- Somma dei numeri pari in un vettoreScorre un vettore e somma solo i suoi elementi pari.
- Ordinamento a bolleOrdina un vettore letto da tastiera.
- Ricerca con uscita anticipataCerca un numero inserito da tastiera, tentativo dopo tentativo, e interrompe il ciclo non appena lo trova con Interrompi ciclo — esempio classico di ricerca con uscita anticipata.
- Interruzione totale del programmaValida l'età inserita; se non è valida, interrompe l'intera esecuzione del programma con Termina programma invece di continuare con dati errati.
- Conto alla rovescia (Dormi)Conto alla rovescia da 5 a 1, con una pausa di 1 secondo tra un numero e l'altro usando Dormi, per simulare un tempo di attesa reale.
- Giorni della settimana (Switch)Legge un numero di giorno (1-7) e usa Switch per stampare il nome del giorno corrispondente — dimostra il componente Switch con più case + default.
- IVR semplice con menu vocaleIVR semplice: riproduce un menu vocale e si ramifica in base all'opzione scelta con Switch. L'opzione viene comunque inserita da tastiera (Leggi) — di proposito, per non costringere a scegliere tra un numero pronunciato o il nome di un'opzione.
- Saluto vocale (Ascolta + Riproduci)Combina i due componenti del plugin voce: 'Ascolta (voce)' cattura il tuo nome mentre parli (tieni premuto il microfono e parla), 'Riproduci voce' ti saluta a sua volta. Senza microfono o senza supporto del browser, ricade sull'inserimento da tastiera — il programma funziona comunque.
- Errore di indice del vettore (demo)Dimostra la gestione degli errori di indice di un vettore: leggere una posizione mai assegnata genera un errore esplicito invece di un valore casuale silenzioso come nell'originale.
- Validare l'input (Ripeti)Il caso didattico classico di Ripeti (do-while): chiede un numero positivo finché il valore inserito non è valido. Il corpo viene eseguito sempre almeno una volta — al contrario di Finché, qui la condizione si conosce solo dopo aver letto il valore.
- Menu ripetuto fino all'uscita (Ripeti + Switch)Calcolatrice semplice con menu: Somma, Sottrai o Esci. Il menu si ripete (Ripeti + Switch, annidamento reale) finché l'utente non sceglie l'opzione 3 — caso molto comune nei corsi introduttivi.
- Prodotto più caro (vettori paralleli)Carica N prodotti in due vettori paralleli (nome e prezzo, entrambi indicizzati dalla stessa posizione) e trova quello più caro — pattern reale e molto comune (record "divisi" in più vettori collegati per indice).
- Numero in parole (0-9999, spagnolo)Converte un numero intero di massimo 4 cifre nella sua forma scritta in parole spagnole — es. 5432 -> "cinco mil cuatrocientos treinta y dos". Usa tabelle (vettori) e sottoprogrammi per gestire le irregolarità reali della lingua (11-15, 16-29 fusi, "cien" vs "ciento").
- Numero in numeri romani (1-3999)Converte un numero intero nella sua rappresentazione in numeri romani — es. 1994 -> "MCMXCIV". Algoritmo goloso classico con due vettori paralleli (valori e simboli, dal più grande al più piccolo).
- Numeri romani in numeroConverte un testo in numeri romani (I, V, X, L, C, D, M) nel suo valore intero — es. "MCMXCIV" -> 1994. Scorre il testo sommando il valore di ogni simbolo, a meno che sia minore del successivo (notazione sottrattiva: "IV", "IX", "XL"...), nel qual caso si sottrae. Usa uno Switch su testo per tradurre ogni simbolo.
- Parcheggio (componente interattivo)Mostra come un DFD controlla un componente visivo esterno con Chiamata: Activar("Estacionamiento") apre una finestra flottante (trascinabile, ridimensionabile, non blocca il resto dell'app), CargarEscenario sceglie la dimensione del mondo, HayObstaculo chiede e risponde nella variabile response_call, e MOVER muove l'auto — se si scontra, genera un'eccezione reale di esecuzione, come qualsiasi altro errore del linguaggio.
- Labirinto (componente interattivo)Stesso meccanismo dell'esempio del Parcheggio, applicato a un labirinto (MOVER/HayObstaculo/CargarEscenario sono verbi condivisi tra i due componenti): Activar("Laberinto") apre la finestra flottante, CargarEscenario sceglie la dimensione del labirinto, HayObstaculo chiede se c'è un muro e risponde in response_call, e MOVER guida l'esploratore fino all'uscita — se sbatte contro un muro, genera un'eccezione reale di esecuzione.
- Labirinto — esplorare senza conoscere la mappa (livello 3)L'algoritmo più avanzato della galleria: esplora il labirinto SENZA conoscere la mappa, con una vera DFS (due vettori paralleli di posizioni visitate più una pila di direzioni per tornare indietro nei vicoli ciechi). Combina vettori, cicli, condizioni, Switch e chiamate di sistema in un unico posto. Questo esempio carica un labirinto CON soluzione — vedi anche "impossibile" per l'altra metà dell'esercizio.
- Labirinto — rilevare che è impossibile (livello 3)Stesso algoritmo di ricerca esaustiva dell'altro esempio di livello 3, ma caricato contro un labirinto deliberatamente SENZA SOLUZIONE (l'uscita è completamente sigillata). L'algoritmo esplora tutto ciò che è raggiungibile e conclude "impossibile" con CERTEZZA — non è un'euristica che si arrende, è una vera ricerca esaustiva che dimostra che non esiste un percorso.
- Torri di Hanoi (componente interattivo)Mostra il componente Torri di Hanoi con una sequenza di mosse PRECARICATA (senza algoritmo ricorsivo, soluzione manuale) — stesso criterio di Parcheggio/Labirinto: insegna la sintassi di MoverDisco/Discos/Termine, non risolve il problema in modo intelligente. A differenza degli altri componenti, Hanoi non ha bisogno di percepire il mondo — se una mossa fosse illegale, MoverDisco genera un'eccezione reale di esecuzione.
- Grafico di SEN(x) (componente interattivo)Traccia la funzione SEN(x) punto per punto, con x che avanza di 0.2 alla volta da 0 a 2*PI (un'onda sinusoidale completa) — usa la costante PI e la funzione builtin SEN, entrambe reali dell'interprete. Mostra il componente Graficador: ogni Chiamata GraficarPunto(x, y) aggiunge un punto alla curva, e il piano si riscala da solo man mano che i punti aumentano.
- Grafico di COS(x) (componente interattivo)Traccia la funzione COS(x) punto per punto, con x che avanza di 0.2 alla volta da 0 a 2*PI (un'onda cosinusoidale completa) — stesso meccanismo dell'esempio di SEN(x), buon abbinamento per confrontare le due curve.
- Fiocco di neve di Koch (componente interattivo)Disegna un fiocco di neve di Koch completo con il componente Tartaruga: 3 lati di livello 3 (4^3=64 segmenti ciascuno, 192 in totale), ognuno generato dal sottoprocesso RICORSIVO Koch(longitud, nivel). Mostra come un breve algoritmo ricorsivo (7 righe) produca una figura geometrica complessa — ricorsione resa visivamente bella, a differenza di Hanoi dove la ricorsione risolve un rompicapo.
- Picas y Fijas — indovina un numero (componente interattivo)A differenza degli altri componenti interattivi, Picas y Fijas non ha alcuna logica propria — è il diagramma stesso a confrontare il tentativo con un numero segreto (cifra per cifra, con SubCadena) e passa il risultato già calcolato a PicasYFijas(numeroIntentado, cantidadFijas, cantidadPicas), che si limita a disegnarlo. Fino a 3 tentativi, si interrompe non appena viene indovinato. Nomi di variabile pensati per leggersi come una frase.
- Palabra Secreta — percorso felice (componente interattivo)Un flusso lineare e precompilato (senza Leggi, senza cicli) pensato per essere seguito passo passo nel debugger: prova le 4 lettere di GATO in ordine, tutte corrette, e finisce in vittoria. Come Picas y Fijas, PalabraSecreta non ha logica propria — il DFD costruisce l'array letrasIntentadas a mano e il componente si limita a rilevare da solo quando ha vinto.
- Palabra Secreta — percorso triste (componente interattivo)Un flusso lineare e precompilato (senza Leggi, senza cicli) pensato per essere seguito passo passo nel debugger: prova 4 lettere che non sono in SOL, una alla volta, e nell'ultima chiamata segnala perdio=Vero. Mostra l'animazione completa della catapulta che lancia la torta — il componente non decide mai da solo quando si perde, quel conteggio spetta al DFD.
- Buscaminas — percorso ingenuo (componente interattivo)Un flusso lineare precompilato (senza Leggi): scorre TUTTA la griglia scoprendo cella per cella, senza mai guardare alcun numero. Finisce sempre in un'eccezione reale quando calpesta una mina — la griglia garantisce che esiste sempre una mossa sicura, quindi perdere qui è la prova che l'algoritmo non ragiona, non sfortuna. Buscaminas appartiene alla famiglia SENSORE (come Parcheggio/Labirinto): è il componente stesso a generare e conservare le mine, lo studente non le conosce mai in anticipo.
- Buscaminas — percorso con deduzione (componente interattivo)La stessa griglia, risolta con la logica pura: un ciclo a punto fisso (Per annidati + Consultar) applica le 2 regole di deduzione (se un numero ha già abbastanza celle vicine contrassegnate, il resto sono sicure; se gli mancano tante mine quante sono le celle vicine sconosciute, quelle sono tutte mine) finché la griglia intera non è liberata, senza indovinare nessuna cella. Mostra dal vivo perché "programmare bene" non è solo un modo di dire — qui significa letteralmente "non perdere mai".
- 8 Regine — percorso felice (componente interattivo)Colloca le 8 regine del classico problema in una soluzione reale, con tutte le 8 posizioni già precompilate — senza alcun algoritmo che le calcoli. L'obiettivo è mostrare che vincere in modo pulito È possibile: nessuna regina attacca un'altra (stessa riga, colonna o diagonale). 8 Regine appartiene alla famiglia SENSORE (come Buscaminas): valida ogni posizionamento sul momento, non alla fine.
- 8 Regine — percorso triste (componente interattivo)Alcune regine corrette e poi una collocata di proposito nella stessa colonna di un'altra già posizionata — finisce in un'eccezione reale di ColocarReina, per mostrare la validazione in azione: due regine non possono mai condividere riga, colonna o diagonale.
- Percorso del Cavallo — percorso felice (componente interattivo)Completa il classico percorso del cavallo (visitare tutte le 64 caselle di una scacchiera 8×8 senza ripeterne nessuna) con una soluzione reale, tutte le 64 posizioni già precompilate — senza alcun algoritmo che le calcoli. L'obiettivo è mostrare che completare il percorso È possibile, muovendosi sempre con una vera "L" degli scacchi. Percorso del Cavallo appartiene alla famiglia SENSORE (come 8 Regine): valida ogni mossa sul momento, non alla fine.
- Percorso del Cavallo — percorso triste (componente interattivo)Alcune mosse corrette e poi una che torna su una casella già visitata (anche se è una "L" valida) — finisce in un'eccezione reale di ColocarCaballo, per mostrare la validazione in azione: il percorso non può mai ripetere una casella.