Exemplos de algoritmos
Cada exemplo abre no editor com um clique: veja o diagrama, execute passo a passo e acompanhe as variáveis.
- Saudação simplesO exemplo mais simples possível: lê um nome e cumprimenta. Ponto de partida ideal para quem está começando a usar o freeDFDWeb.
- Olá Mundo!O clássico primeiro programa — imprime no console de Execução e também fala em voz alta.
- Fatorial de um númeroObtém e imprime o fatorial de um número lido do teclado.
- É um número primo?Determina se um número inteiro positivo digitado é primo.
- Máximo divisor comum (Euclides)Calcula o máximo divisor comum (MDC) de dois números usando o algoritmo de Euclides.
- Sequência de FibonacciGera e mostra os primeiros N termos da sequência de Fibonacci.
- Inverter os dígitos de um númeroInverte os dígitos de um número inteiro positivo lido do teclado.
- Média de notas e aprovaçãoCalcula a média de N notas digitadas e determina se o estudante é aprovado (média ≥ 3) ou não.
- Tabuada (laços aninhados)Tabuada de 1 a 10 usando dois laços Para aninhados — exemplo clássico de laços aninhados.
- Contador de pares e ímparesPercorre de 1 a 20 e classifica cada número como par ou ímpar — combina um laço Para com uma Decisão dentro.
- Conversor de temperaturaConverte graus Celsius para Fahrenheit ou Kelvin, conforme a opção escolhida no menu.
- Equação do segundo grau (fórmula geral)Resolve a·x² + b·x + c = 0 com a fórmula geral: calcula o discriminante e distingue duas raízes, uma raiz dupla ou nenhuma real. Usa potência, raiz quadrada e menos unário.
- Decimal para binárioMostra a conversão de um número decimal para binário.
- Adivinhe o número mágicoJogo do número mágico: o programa escolhe um número secreto e o usuário tenta adivinhar, recebendo dicas de 'maior'/'menor' a cada tentativa até acertar.
- Busca linear em um vetorBusca um elemento X dentro de um vetor de N elementos percorrendo posição por posição (busca linear).
- Soma dos pares em um vetorPercorre um vetor e soma apenas seus elementos pares.
- Ordenação bolhaOrdena um vetor lido do teclado.
- Busca com saída antecipadaBusca um número digitado, tentativa por tentativa, e sai do laço assim que o encontra usando Sair do laço — exemplo clássico de busca com saída antecipada.
- Interrupção total do programaValida a idade digitada; se for inválida, interrompe totalmente a execução do programa com Terminar programa em vez de continuar com dados incorretos.
- Contagem regressiva (Aguardar)Contagem regressiva de 5 a 1, pausando 1 segundo entre cada número com Aguardar, para simular um tempo de espera real.
- Dias da semana (Switch)Lê um número de dia (1-7) e usa Switch para imprimir o nome do dia correspondente — demonstra o componente Switch com vários cases + default.
- IVR simples com menu por vozIVR simples: reproduz um menu por voz e ramifica conforme a opção escolhida com Switch. A opção continua sendo digitada (Ler) — de propósito, para não obrigar a decidir entre um número falado ou um nome de opção.
- Saudação por voz (Escutar + Reproduzir)Combina os dois componentes do plugin de voz: 'Escutar (voz)' captura seu nome falado (mantenha o microfone pressionado e fale), 'Reproduzir voz' te cumprimenta de volta. Sem microfone ou sem suporte do navegador, cai apenas para a entrada por teclado — o programa funciona igual.
- Erro de índice de vetor (demo)Demonstra o tratamento de erros de índice de vetor: ler uma posição nunca atribuída gera um erro explícito em vez de lixo silencioso como no original.
- Validar entrada (Repetir)O caso pedagógico clássico de Repetir (do-while): pede um número positivo até que o valor digitado seja válido. O corpo sempre executa pelo menos uma vez — ao contrário de Enquanto, aqui a condição só é conhecida depois de ler o valor.
- Menu repetido até sair (Repetir + Switch)Calculadora simples com menu: Somar, Subtrair ou Sair. O menu se repete (Repetir + Switch, aninhamento real) até o usuário escolher a opção 3 — caso muito comum em cursos introdutórios.
- Produto mais caro (vetores paralelos)Carrega N produtos em dois vetores paralelos (nome e preço, ambos indexados pela mesma posição) e encontra o mais caro — padrão real e muito comum (registros "divididos" em vários vetores relacionados por índice).
- Número por extenso (0-9999, espanhol)Converte um número inteiro de até 4 dígitos para sua forma escrita por extenso em espanhol — ex. 5432 -> "cinco mil cuatrocientos treinta y dos". Usa tabelas (vetores) e subprogramas para lidar com as irregularidades reais do idioma (11-15, 16-29 fundidos, "cien" vs "ciento").
- Número para algarismos romanos (1-3999)Converte um número inteiro para sua representação em algarismos romanos — ex. 1994 -> "MCMXCIV". Algoritmo guloso clássico com dois vetores paralelos (valores e símbolos, do maior para o menor).
- Algarismos romanos para númeroConverte um texto em algarismos romanos (I, V, X, L, C, D, M) para seu valor inteiro — ex. "MCMXCIV" -> 1994. Percorre o texto somando o valor de cada símbolo, exceto quando é menor que o próximo (notação subtrativa: "IV", "IX", "XL"...), caso em que subtrai. Usa Switch sobre texto para traduzir cada símbolo.
- Estacionamento (componente interativo)Mostra como um DFD controla um componente visual externo com Llamada (Chamada): Activar("Estacionamiento") abre uma janela flutuante (arrastável, redimensionável, não bloqueia o resto do app), CargarEscenario escolhe o tamanho do mundo, HayObstaculo pergunta e responde na variável response_call, e MOVER move o carro — se bater, lança uma exceção real de execução, igual a qualquer outro erro da linguagem.
- Labirinto (componente interativo)Mesmo mecanismo do exemplo de Estacionamento, aplicado a um labirinto (MOVER/HayObstaculo/CargarEscenario são verbos compartilhados entre os dois componentes): Activar("Laberinto") abre a janela flutuante, CargarEscenario escolhe o tamanho do labirinto, HayObstaculo pergunta se há parede e responde em response_call, e MOVER guia o explorador até a saída — se bater em uma parede, lança uma exceção real de execução.
- Labirinto — explorar sem conhecer o mapa (nível 3)O algoritmo mais avançado da galeria: explora o labirinto SEM conhecer o mapa, com DFS real (dois vetores paralelos de posições visitadas + uma pilha de direções para retroceder ao bater em um beco sem saída). Combina vetores, laços, condições, Switch e chamadas de sistema em um só lugar. Este exemplo carrega um labirinto COM solução — veja também "impossível" para a outra metade do exercício.
- Labirinto — detectar que é impossível (nível 3)Mesmo algoritmo de busca exaustiva do outro exemplo de nível 3, mas carregado contra um labirinto deliberadamente SEM SOLUÇÃO (a saída está completamente selada). O algoritmo explora tudo que é alcançável e conclui "impossível" com CERTEZA — não é uma heurística que desiste, é uma busca exaustiva real que prova que não há caminho.
- Torres de Hanói (componente interativo)Mostra o componente Torres de Hanói com uma sequência de movimentos PRÉ-CARREGADA (sem algoritmo recursivo, solução manual) — mesmo critério do estacionamento/labirinto: ensina a sintaxe de MoverDisco/Discos/Termine, não resolve o quebra-cabeça de forma inteligente. Diferente dos outros componentes, Hanói não precisa sentir o mundo — um movimento ilegal lança uma exceção real de execução direto do MoverDisco.
- Gráfico de SEN(x) (componente interativo)Plota a função SEN(x) ponto a ponto, com x avançando de 0.2 em 0.2 de 0 até 2*PI (uma volta completa do seno) — usa a constante PI e o builtin SEN, ambos reais do intérprete. Mostra o componente Gráfico: cada Llamada GraficarPunto(x, y) adiciona um ponto à curva, e o plano se reescala sozinho conforme os pontos crescem.
- Gráfico de COS(x) (componente interativo)Plota a função COS(x) ponto a ponto, com x avançando de 0.2 em 0.2 de 0 até 2*PI (uma volta completa do cosseno) — mesmo mecanismo do exemplo de SEN(x), bom par para comparar as duas curvas.
- Floco de neve de Koch (componente interativo)Desenha um floco de neve de Koch completo com o componente Tartaruga: 3 lados de nível 3 (4^3=64 segmentos cada, 192 no total), cada um gerado pelo subprocesso RECURSIVO Koch(longitud, nivel). Mostra como um algoritmo recursivo curto (7 linhas) produz uma figura geométrica complexa — recursão feita visualmente bonita, diferente de Hanói onde a recursão resolve um quebra-cabeça.
- Picas y Fijas — adivinhar um número (componente interativo)Diferente dos outros componentes interativos, Picas y Fijas não tem nenhuma lógica própria — o próprio diagrama compara a tentativa com um número secreto (dígito a dígito, com SubCadena) e passa o resultado já calculado para PicasYFijas(numeroIntentado, cantidadFijas, cantidadPicas), que só o pinta. Até 3 tentativas, corta assim que é adivinhado. Nomes de variável pensados para se ler como uma frase.
- Palabra Secreta — caminho feliz (componente interativo)Fluxo linear e pré-definido (sem Leer, sem laços) pensado para acompanhar passo a passo no depurador: tenta as 4 letras de GATO em ordem, todas certas, e termina ganhando. Assim como Picas y Fijas, PalabraSecreta não tem lógica própria — o DFD monta o arranjo letrasIntentadas na mão e o componente detecta sozinho quando ganhou.
- Palabra Secreta — caminho triste (componente interativo)Fluxo linear e pré-definido (sem Leer, sem laços) pensado para acompanhar passo a passo no depurador: tenta 4 letras que não estão em SOL, uma por uma, e na última chamada avisa perdio=Verdadeiro. Mostra a animação completa da catapulta disparando a torta — o componente nunca decide sozinho quando se perde, essa conta é do DFD.
- Buscaminas — caminho ingênuo (componente interativo)Fluxo linear pré-definido (sem Leer): percorre TODO o tabuleiro revelando célula por célula, sem olhar nenhum número. Sempre termina numa exceção real ao pisar numa mina — o tabuleiro garante que sempre há uma jogada segura, então perder aqui é evidência de que o algoritmo não raciocina, não é azar. Buscaminas é da família SENSOR (como Estacionamiento/Laberinto): o componente gera e guarda as minas sozinho, o estudante nunca as conhece de antemão.
- Buscaminas — caminho com dedução (componente interativo)O mesmo tabuleiro, resolvido por lógica pura: um laço de ponto fixo (Para aninhados + Consultar) aplica as 2 regras de dedução (se um número já tem vizinhas marcadas suficientes, o resto são seguras; se faltam tantas minas quanto vizinhas desconhecidas restam, essas são todas minas) até limpar o tabuleiro inteiro, sem adivinhar nenhuma célula. Mostra ao vivo por que "programar certo" aqui literalmente significa "nunca perder".
- 8 Rainhas — caminho feliz (componente interativo)Coloca as 8 rainhas do clássico problema numa solução real, com as 8 posições já pré-definidas — sem nenhum algoritmo que as calcule. A ideia é mostrar que vencer limpo É possível: nenhuma rainha ataca outra (mesma linha, coluna, ou diagonal). 8 Rainhas é da família SENSOR (como Buscaminas): valida cada colocação na hora, não no final.
- 8 Rainhas — caminho triste (componente interativo)Algumas rainhas corretas e depois uma colocada de propósito na mesma coluna que outra já posta — termina numa exceção real de ColocarReina, para mostrar a validação em ação: duas rainhas nunca podem compartilhar linha, coluna, ou diagonal.
- Passeio do Cavalo — caminho feliz (componente interativo)Completa o clássico passeio do cavalo (visitar as 64 casas de um tabuleiro 8×8 sem repetir nenhuma) com uma solução real, as 64 posições já pré-definidas — sem nenhum algoritmo que as calcule. A ideia é mostrar que completar o passeio É possível, sempre se movendo num "L" real do xadrez. Passeio do Cavalo é da família SENSOR (como 8 Rainhas): valida cada movimento na hora, não no final.
- Passeio do Cavalo — caminho triste (componente interativo)Alguns movimentos corretos e depois um que volta a uma casa já visitada (mesmo sendo um "L" válido) — termina numa exceção real de ColocarCaballo, para mostrar a validação em ação: o passeio nunca pode repetir uma casa.