Desafios Algorítmicos - BNCC

Pensamento Algorítmico

O pensamento algorítmico é uma habilidade fundamental na era digital, envolvendo a capacidade de decompor problemas complexos em passos lógicos e sequenciais. A BNCC (Base Nacional Comum Curricular) reconhece sua importância e o integra como parte das competências digitais essenciais para a formação dos estudantes brasileiros.

Este aplicativo oferece desafios que estimulam o desenvolvimento do raciocínio lógico, sequencial e estruturado, alinhados aos objetivos de aprendizagem da BNCC.

Estudante
Nível: Iniciante
0
Desafios
0
Pontos
0%
Progresso

Seu Progresso

Fundamental II

Sequência Lógica

Identificar padrões e completar sequências numéricas aplicando regras lógicas.

Explorar
Ensino Médio

Resolução de Problemas

Aplicar estratégias algorítmicas para resolver problemas matemáticos e do cotidiano.

Explorar
Todos os Níveis

Programação Visual

Criar algoritmos usando blocos visuais para resolver desafios de programação.

Explorar

Desafio de Sequência Lógica

Introdução
Exemplos
Prática
Desafio

O que são Sequências Lógicas?

Sequências lógicas são conjuntos ordenados de elementos que seguem um padrão ou regra específica. Identificar esse padrão é uma habilidade fundamental do pensamento algorítmico, pois nos permite predizer o comportamento futuro com base em observações anteriores.

Exemplos de sequências incluem:

  • Sequências aritméticas (adição constante): 2, 4, 6, 8, 10, ...
  • Sequências geométricas (multiplicação constante): 2, 4, 8, 16, 32, ...
  • Sequência de Fibonacci: 1, 1, 2, 3, 5, 8, 13, ...
  • Sequências de padrões alternados: ABCABCABC...

Neste módulo, você aprenderá a identificar padrões, descobrir a regra que governa uma sequência e aplicá-la para determinar os próximos elementos.

Exemplos de Sequências

Básico

Sequência Aritmética

Observe a sequência: 3, 7, 11, 15, 19, ...

Esta é uma sequência aritmética onde cada termo é obtido somando 4 ao termo anterior.

// Algoritmo para gerar a sequência let valor = 3; for (let i = 0; i < 10; i++) { console.log(valor); valor = valor + 4; } // Saída: 3, 7, 11, 15, 19, 23, 27, 31, 35, 39

Fórmula geral: a(n) = a₁ + (n-1) × d

Onde a₁ é o primeiro termo e d é a diferença comum.

Intermediário

Sequência Geométrica

Observe a sequência: 2, 6, 18, 54, 162, ...

Esta é uma sequência geométrica onde cada termo é obtido multiplicando o termo anterior por 3.

// Algoritmo para gerar a sequência let valor = 2; for (let i = 0; i < 8; i++) { console.log(valor); valor = valor * 3; } // Saída: 2, 6, 18, 54, 162, 486, 1458, 4374

Fórmula geral: a(n) = a₁ × r^(n-1)

Onde a₁ é o primeiro termo e r é a razão comum.

Avançado

Sequência de Fibonacci

Observe a sequência: 1, 1, 2, 3, 5, 8, 13, 21, ...

Esta é a famosa sequência de Fibonacci, onde cada termo é a soma dos dois termos anteriores.

// Algoritmo para gerar a sequência de Fibonacci function fibonacci(n) { let fib = [1, 1]; for (let i = 2; i < n; i++) { fib[i] = fib[i-1] + fib[i-2]; } return fib; } console.log(fibonacci(10)); // Saída: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Fórmula recursiva: F(n) = F(n-1) + F(n-2), com F(1) = F(2) = 1

Prática de Sequências

Agora é hora de praticar! Tente identificar o padrão e preencher os próximos elementos nas sequências abaixo:

Sequência 1

5
10
15
20
25
?
?
?

Qual o padrão desta sequência?

Sequência 2

1
4
9
16
25
?
?
?

Qual o padrão desta sequência?

Sequência 3

2
3
5
7
11
?
?
?

Qual o padrão desta sequência?

Desafio Final de Sequências

Neste desafio, você deve criar sua própria sequência lógica e descrevê-la em termos algorítmicos.

Crie sua Sequência

Defina os primeiros 5 termos da sua sequência:

Resolução de Problemas

Introdução
Exemplos
Prática
Desafio

Resolução Algorítmica de Problemas

A resolução algorítmica de problemas é uma abordagem sistemática para enfrentar desafios complexos. Envolve a decomposição do problema em etapas menores e mais gerenciáveis, o desenvolvimento de uma sequência lógica de passos (algoritmo) para resolvê-lo, e a implementação dessa solução.

As etapas típicas incluem:

  1. Compreender o problema: Identificar entradas, saídas e restrições.
  2. Planejar a solução: Desenvolver um algoritmo ou estratégia.
  3. Implementar a solução: Traduzir o algoritmo em código ou passos concretos.
  4. Testar e depurar: Verificar se a solução funciona corretamente.
  5. Otimizar: Melhorar a eficiência da solução, se necessário.

Esta abordagem é fundamental não apenas na programação, mas em diversas áreas como matemática, ciências, engenharia e até mesmo na resolução de problemas cotidianos.

Exemplos de Problemas

Básico

Cálculo de Média Ponderada

Problema: Calcular a média ponderada de três notas (n₁, n₂, n₃) com pesos 2, 3 e 5, respectivamente.

// Algoritmo para calcular média ponderada function mediaPonderada(n1, n2, n3) { const p1 = 2; const p2 = 3; const p3 = 5; const soma = n1 * p1 + n2 * p2 + n3 * p3; const pesoTotal = p1 + p2 + p3; return soma / pesoTotal; }

Teste o algoritmo:

Intermediário

Cálculo de Juros Compostos

Problema: Calcular o montante final após n períodos sob juros compostos, dado o capital inicial (C), a taxa de juros (i) e o número de períodos (n).

// Algoritmo para calcular juros compostos function jurosCompostos(capital, taxa, periodos) { // Fórmula: M = C × (1 + i)ⁿ const montante = capital * Math.pow((1 + taxa/100), periodos); return montante.toFixed(2); }

Teste o algoritmo:

Avançado

Algoritmo de Ordenação

Problema: Ordenar uma lista de números em ordem crescente usando o algoritmo de ordenação por seleção.

// Algoritmo de ordenação por seleção function selectionSort(arr) { const n = arr.length; for (let i = 0; i < n; i++) { // Encontrar o menor elemento no restante do array let minIndex = i; for (let j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // Trocar o menor elemento encontrado com o primeiro elemento if (minIndex !== i) { const temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } return arr; }

Teste o algoritmo:

Prática de Resolução de Problemas

Agora é hora de praticar! Tente resolver os seguintes problemas:

Problema 1: Conversão de Temperatura

Desenvolva uma função que converta temperatura de Celsius para Fahrenheit e vice-versa.

Fórmulas:

  • Celsius para Fahrenheit: F = C × 9/5 + 32
  • Fahrenheit para Celsius: C = (F - 32) × 5/9

Problema 2: Números Primos

Crie uma função que verifique se um número é primo e encontre todos os números primos até um limite especificado.

Desafio Final de Resolução de Problemas

Agora você enfrentará um desafio mais complexo que combina vários conceitos algorítmicos:

Simulação de Mercado Financeiro

Desenvolva um algoritmo que simule um investimento no mercado financeiro com as seguintes características:

  • Capital inicial definido pelo usuário
  • Possibilidade de investir em até três ativos diferentes
  • Cada ativo tem uma taxa de retorno média anual e um risco (volatilidade)
  • Simule o investimento por um número de anos especificado
  • Calcule o retorno total e o retorno anualizado

Programação Visual

Introdução
Exemplos
Prática
Desafio

O que é Programação Visual?

A programação visual permite criar algoritmos usando blocos gráficos em vez de código textual tradicional. Esta abordagem torna a programação mais acessível, especialmente para iniciantes, pois elimina a preocupação com a sintaxe e permite concentrar-se na lógica algorítmica.

Ferramentas como Scratch, Blockly e App Inventor são exemplos populares de ambientes de programação visual que permitem desenvolver algoritmos e aplicativos através da conexão de blocos coloridos que representam diferentes instruções e estruturas de programação.

Neste módulo, você explorará a programação visual através de uma interface simplificada que simula o comportamento dessas ferramentas. Você aprenderá a:

  • Organizar blocos em sequências lógicas
  • Usar estruturas de controle como repetições e condicionais
  • Criar variáveis e operações matemáticas
  • Resolver problemas usando algoritmos visuais

Exemplos de Programação Visual

Básico

Contador Simples

Este programa utiliza blocos para criar um contador que incrementa uma variável de 1 até 10 e exibe cada valor.

Criar variável "contador" = 1
Repetir 10 vezes
Exibir valor do contador
contador = contador + 1
Criar variável "contador" = 1
Repetir 10 vezes
Exibir valor do contador
contador = contador + 1
Resultado da execução:
1
2
3
...
10
Intermediário

Verificador de Números Pares

Este programa verifica se cada número de 1 a 5 é par ou ímpar e exibe uma mensagem correspondente.

Criar variável "numero" = 1
Repetir 5 vezes
Se (numero % 2 == 0) então
Exibir "O número é par"
Exibir "O número é ímpar"
numero = numero + 1
Criar variável "numero" = 1
Repetir 5 vezes
Se (numero % 2 == 0) então
Exibir "O número é par"
Senão
Exibir "O número é ímpar"
numero = numero + 1
Resultado da execução:
"O número é ímpar" (1)
"O número é par" (2)
"O número é ímpar" (3)
"O número é par" (4)
"O número é ímpar" (5)
Avançado

Calculadora de Fatorial

Este programa calcula o fatorial de um número fornecido pelo usuário.

Criar variável "numero" = 5
Criar variável "fatorial" = 1
Repetir de i=1 até numero
fatorial = fatorial * i
Exibir "Fatorial de " + numero + " é " + fatorial
Criar variável "numero" = 5
Criar variável "fatorial" = 1
Repetir de i=1 até numero
fatorial = fatorial * i
Exibir "Fatorial de " + numero + " é " + fatorial
Resultado da execução:
"Fatorial de 5 é 120"

Prática de Programação Visual

Agora é hora de praticar! Complete os seguintes desafios de programação visual:

Desafio 1: Soma dos Números

Crie um programa que calcule a soma de todos os números de 1 a 10.

Criar variável "soma" = 0
Criar variável "i" = 1
Repetir 10 vezes
Enquanto i <= 10
soma = soma + i
i = i + 1
Exibir "A soma é: " + soma

Arraste e solte os blocos aqui para criar seu programa

Resultado da execução:

Desafio 2: Tabuada

Crie um programa que exiba a tabuada do número 7 (de 1 a 10).

Criar variável "numero" = 7
Criar variável "i" = 1
Repetir 10 vezes
Enquanto i <= 10
resultado = numero * i
Exibir numero + " x " + i + " = " + resultado
i = i + 1

Arraste e solte os blocos aqui para criar seu programa

Resultado da execução:

Desafio Final de Programação Visual

Neste desafio final, você criará um programa visual mais complexo que combina vários conceitos:

Jogo de Adivinhação

Crie um programa que simule um jogo de adivinhação onde o computador "pensa" em um número entre 1 e 100, e o jogador tenta adivinhar com até 10 tentativas. O programa deve dar dicas se o número é maior ou menor que o palpite.

Criar variável "numeroSecreto" = número aleatório entre 1 e 100
Criar variável "tentativas" = 0
Criar variável "acertou" = falso
Criar variável "palpite" = 0
Enquanto tentativas < 10 E acertou == falso
Pedir palpite ao usuário
tentativas = tentativas + 1
Se palpite == numeroSecreto então
Exibir "Parabéns! Você acertou em " + tentativas + " tentativas!"
acertou = verdadeiro
Senão se palpite < numeroSecreto então
Exibir "Tente um número maior!"
Senão
Exibir "Tente um número menor!"
Se tentativas == 10 E acertou == falso então
Exibir "Você perdeu! O número era: " + numeroSecreto

Arraste e solte os blocos aqui para criar seu programa

Resultado da execução:

Exemplos de Desafios

6º Ano

Desafio 1: Sequência Numérica

Complete a sequência: 2, 4, 8, 16, ___, ___, ___

// Algoritmo para gerar a sequência let valor = 2; for (let i = 0; i < 7; i++) { console.log(valor); valor = valor * 2; } // Saída: 2, 4, 8, 16, 32, 64, 128

Solução: A sequência segue o padrão de multiplicar por 2 a cada termo, então os próximos três números são 32, 64 e 128.

9º Ano

Desafio 2: Cálculo de Média Ponderada

Escreva um algoritmo para calcular a média ponderada de três notas (n₁, n₂, n₃) com pesos 2, 3 e 5, respectivamente.

// Algoritmo para calcular média ponderada function mediaPonderada(n1, n2, n3) { const p1 = 2; const p2 = 3; const p3 = 5; const soma = n1 * p1 + n2 * p2 + n3 * p3; const pesoTotal = p1 + p2 + p3; return soma / pesoTotal; } // Exemplo: mediaPonderada(7, 8, 9) // Resultado: 8.3

Teste o algoritmo com os valores: n₁ = 7, n₂ = 8, n₃ = 9.

Ensino Médio

Desafio 3: Cálculo de Juros Compostos

Desenvolva um algoritmo para calcular o montante final após n períodos sob juros compostos, dado o capital inicial (C), a taxa de juros (i) e o número de períodos (n).

// Algoritmo para calcular juros compostos function jurosCompostos(capital, taxa, periodos) { // Fórmula: M = C × (1 + i)ⁿ const montante = capital * Math.pow((1 + taxa/100), periodos); return montante.toFixed(2); } // Exemplo: jurosCompostos(1000, 10, 5) // Capital: R$ 1000, Taxa: 10%, Períodos: 5 anos // Resultado: R$ 1610.51

Simule o crescimento de um investimento de R$ 1000,00 a uma taxa de 10% ao ano por 5 anos.

Quiz de Pensamento Algorítmico

Questão 1

Qual das seguintes opções NÃO é uma característica do pensamento algorítmico?

Decomposição de problemas
Reconhecimento de padrões
Pensamento abstrato aleatório
Sequência lógica de passos

Questão 2

Complete a sequência: 1, 1, 2, 3, 5, 8, 13, ___

15
18
21
24

Questão 3

Se a = 5 e b = 3, qual o valor de 2a² - 3b + 4?

41
43
47
51

Questão 4

Qual estrutura algorítmica é mais adequada para repetir um bloco de código enquanto uma condição for verdadeira?

Estrutura condicional (if-else)
Estrutura de repetição (while)
Estrutura de função
Estrutura de seleção (switch-case)

Questão 5

Um algoritmo é executado em 3 segundos para processar 1000 elementos. Se a complexidade do algoritmo é O(n²), aproximadamente quanto tempo levará para processar 4000 elementos?

12 segundos
24 segundos
48 segundos
96 segundos

Resultado do Quiz

Você acertou:

0/5

Continue praticando para melhorar seu pensamento algorítmico!