Biblioteca de Scripts
Estude, copie e teste os algoritmos mais clássicos da Ciência da Computação.
1. Entrada e Saída
FundamentosO "Olá Mundo" interativo. Operações básicas de entrada (leia) e saída (escreva) usando variáveis numéricas.
algoritmo "io_basico"
var
a: inteiro
b: inteiro
soma: inteiro
inicio
escreva("Digite o primeiro numero:")
leia(a)
escreva("Digite o segundo numero:")
leia(b)
soma = a + b
escreva("A soma eh:")
escreva(soma)
fimalgoritmo
Calculadora Simples
FundamentosOperações básicas de entrada (leia) e saída (escreva) utilizando variáveis primitivas.
algoritmo "calculadora"
var
a: inteiro
b: inteiro
soma: inteiro
inicio
escreva("Digite o primeiro numero:")
leia(a)
escreva("Digite o segundo numero:")
leia(b)
soma = a + b
escreva("A soma eh:")
escreva(soma)
fimalgoritmo
2. Condicionais (Se/Senão)
FundamentosControle de fluxo baseado em decisões. Mostra como aninhar verificações para classificar idades.
algoritmo "classificacao_idade"
var
idade: inteiro
inicio
escreva("Digite sua idade:")
leia(idade)
se idade < 12 entao
escreva("Classificacao: Crianca")
senao
se idade < 18 entao
escreva("Classificacao: Adolescente")
senao
escreva("Classificacao: Adulto")
fimse
fimse
fimalgoritmo
3. Validação (Enquanto)
FundamentosUm laço de repetição que não tem fim previsível. Ele continua rodando até que a condição seja satisfeita (ex: sistema de senhas).
algoritmo "sistema_senha"
var
senha: inteiro
inicio
senha = 0
enquanto senha != 1234 faca
escreva("Digite a senha numerica secreta:")
leia(senha)
se senha != 1234 entao
escreva("Senha Incorreta! Tente novamente.")
fimse
fimenquanto
escreva("Acesso Liberado!")
fimalgoritmo
4. Manipulação de Vetor
FundamentosEstrutura de dados básica (Array). Como usar um laço 'Para' para preencher gavetas da memória e depois ler todas elas.
algoritmo "vetor_basico"
var
notas: vetor[1..3] de inteiro
i: inteiro
inicio
// Preenchendo o vetor
para i de 1 ate 3 faca
escreva("Digite a nota:")
leia(notas[i])
fimpara
escreva("--- Relatorio ---")
// Lendo os dados armazenados
para i de 1 ate 3 faca
escreva(notas[i])
fimpara
fimalgoritmo
5. Pilha (Stack)
FundamentosO conceito LIFO (Último a entrar, primeiro a sair). Essencial para entender como o próprio computador gerencia funções.
algoritmo "pilha_simples"
var
pilha: vetor[1..5] de inteiro
topo: inteiro
inicio
topo = 0
// Empilhando valores (Push)
topo = topo + 1
pilha[topo] = 10
topo = topo + 1
pilha[topo] = 99
escreva("Desempilhando o valor do Topo (Pop):")
escreva(pilha[topo]) // Imprime o 99
// O topo desce um nivel
topo = topo - 1
fimalgoritmo
Vetor Tridimensional (Cubo 3D)
Estrutura de DadosComo o computador guarda um cubo 3D na memória RAM (que é 1D)? Usando 3 laços aninhados (X, Y, Z) e linearização matemática!
algoritmo "matriz_3d_linear"
var
// Um cubo 2x2x2 possui 8 posicoes no total (2 * 2 * 2)
cubo: vetor[1..8] de inteiro
x: inteiro
y: inteiro
z: inteiro
indice: inteiro
contador: inteiro
inicio
contador = 10
escreva("--- MAPEANDO UM CUBO 3D ---")
// Eixo X (Largura)
para x de 1 ate 2 faca
// Eixo Y (Altura)
para y de 1 ate 2 faca
// Eixo Z (Profundidade)
para z de 1 ate 2 faca
// Magia da Computacao: Achatando 3D para 1D
// Formula: (x-1)*4 + (y-1)*2 + (z-1) + 1
indice = ((x - 1) * 4) + ((y - 1) * 2) + (z - 1) + 1
cubo[indice] = contador
escreva("Coordenada [X, Y, Z] gravada no Indice da RAM:")
escreva(indice)
contador = contador + 10
fimpara
fimpara
fimpara
escreva("Valor na coordenada [X=2, Y=1, Z=2]:")
// X=2, Y=1, Z=2 -> indice 6
escreva(cubo[6])
fimalgoritmo
6. Busca Linear em Vetor
FundamentosVarre todas as posições do vetor, uma a uma, à procura de um valor específico usando uma variável de controlo (flag).
algoritmo "busca_linear"
var
numeros: vetor[1..5] de inteiro
alvo: inteiro
i: inteiro
encontrado: inteiro
posicao: inteiro
inicio
// Preenchendo o vetor com valores fixos
numeros[1] = 15
numeros[2] = 42
numeros[3] = 8
numeros[4] = 99
numeros[5] = 23
encontrado = 0
posicao = 0
escreva("--- SISTEMA DE BUSCA ---")
escreva("Qual valor deseja procurar no vetor?")
leia(alvo)
// O laco percorre todas as gavetas do vetor
para i de 1 ate 5 faca
se numeros[i] == alvo entao
encontrado = 1
posicao = i
fimse
fimpara
// Avalia o resultado da busca
se encontrado == 1 entao
escreva("Sucesso! Valor encontrado na posicao:")
escreva(posicao)
senao
escreva("Falha. O valor nao existe no vetor.")
fimse
fimalgoritmo
6. Introdução a Ponteiros
FundamentosO terror dos universitários simplificado! Como modificar uma variável à distância usando o endereço de memória dela.
algoritmo "magia_dos_ponteiros"
var
bau: inteiro
mapa: ponteiro
inicio
bau = 15
escreva("Valor original do bau:")
escreva(bau)
// O mapa recebe a localizacao (&) do bau na memoria
mapa = &bau
// Alteramos o bau a distancia usando o asterisco (*)
*mapa = 99
escreva("Novo valor alterado via ponteiro:")
escreva(bau)
fimalgoritmo
Número Primo
MatemáticaVerifica a primalidade contando os divisores através do cálculo manual do módulo (resto da divisão).
algoritmo "primo"
var
n: inteiro
i: inteiro
divisores: inteiro
inicio
divisores = 0
escreva("Digite um numero:")
leia(n)
para i de 1 ate n faca
se n - ((n / i) * i) == 0 entao
divisores = divisores + 1
fimse
fimpara
se divisores == 2 entao
escreva("Eh Primo!")
senao
escreva("Nao eh primo.")
fimse
fimalgoritmo
Sequência de Fibonacci
MatemáticaO próximo número é gerado pela soma dos dois anteriores. Excelente para treinar reatribuição de variáveis.
algoritmo "fibonacci"
var
limite: inteiro
a: inteiro
b: inteiro
c: inteiro
i: inteiro
inicio
a = 0
b = 1
escreva("Deseja ir ate qual limite?")
leia(limite)
escreva(a)
escreva(b)
para i de 3 ate limite faca
c = a + b
escreva(c)
a = b
b = c
fimpara
fimalgoritmo
Fórmula de Bhaskara
ÁlgebraCalcula as raízes de uma equação do 2º grau. Este exemplo simula o cálculo do discriminante (Delta).
algoritmo "bhaskara_simplificado"
var
a: inteiro
b: inteiro
c: inteiro
delta: inteiro
inicio
escreva("Valor de A:")
leia(a)
escreva("Valor de B:")
leia(b)
escreva("Valor de C:")
leia(c)
// Delta = b^2 - 4ac
delta = (b * b) - (4 * a * c)
escreva("O valor de Delta eh:")
escreva(delta)
se delta < 0 entao
escreva("Nao possui raizes reais.")
senao
escreva("Possui raizes reais.")
fimse
fimalgoritmo
1. Algoritmo de Euclides (MDC)
MatemáticaCalcula o Máximo Divisor Comum de forma muito rápida usando divisões sucessivas. O console explica cada troca de variáveis.
algoritmo "mdc_euclides"
var
a: inteiro
b: inteiro
resto: inteiro
inicio
a = 48
b = 18
escreva("--- Algoritmo de Euclides (MDC) ---")
escreva("Vamos achar o MDC de 48 e 18")
enquanto b != 0 faca
// Calculando o resto da divisao (Modulo)
resto = a - ((a / b) * b)
escreva("Resto atual encontrado:")
escreva(resto)
// As variaveis escorregam para o proximo calculo
a = b
b = resto
fimenquanto
escreva("--- FIM ---")
escreva("O MDC final eh:")
escreva(a)
fimalgoritmo
2. Decimal para Binário
MatemáticaComo o computador pensa? Este algoritmo divide o número por 2 e guarda o resto para formar os bits (0 e 1).
algoritmo "decimal_binario"
var
n: inteiro
bit: inteiro
inicio
n = 13
escreva("--- DECODIFICADOR BINARIO ---")
escreva("Convertendo o numero 13:")
enquanto n > 0 faca
// Pega o resto da divisao por 2
bit = n - ((n / 2) * 2)
escreva("Bit gerado:")
escreva(bit)
// Corta o numero pela metade para o proximo passo
n = n / 2
fimenquanto
escreva("DICA: Leia os bits de baixo para cima!")
fimalgoritmo
3. Número Primo Detalhado
MatemáticaNarra o teste de divisão. Um número só é primo se possuir exatamente dois divisores: o 1 e ele mesmo.
algoritmo "primo_detalhado"
var
n: inteiro
i: inteiro
divisores: inteiro
inicio
divisores = 0
escreva("Digite um numero para testar:")
leia(n)
escreva("Iniciando varredura de divisores...")
para i de 1 ate n faca
se n - ((n / i) * i) == 0 entao
escreva("Opa! Achei um divisor:")
escreva(i)
divisores = divisores + 1
fimse
fimpara
escreva("Total de divisores encontrados:")
escreva(divisores)
se divisores == 2 entao
escreva("Conclusao: EH UM NUMERO PRIMO!")
senao
escreva("Conclusao: NAO eh primo.")
fimse
fimalgoritmo
4. Progressão de Fibonacci
MatemáticaA proporção áurea. O console explica a matemática da soma dos dois números anteriores para gerar o próximo.
algoritmo "fibonacci_narrado"
var
limite: inteiro
a: inteiro
b: inteiro
c: inteiro
i: inteiro
inicio
a = 0
b = 1
escreva("--- SEQUENCIA DE FIBONACCI ---")
escreva("Quantos termos deseja calcular?")
leia(limite)
escreva("Base:")
escreva(a)
escreva(b)
para i de 3 ate limite faca
c = a + b
escreva("Somando os dois ultimos...")
escreva(c)
// Desloca os valores para a proxima iteracao
a = b
b = c
fimpara
fimalgoritmo
Média de um Vetor
EstatísticaArmazena múltiplos dados estatísticos em um Vetor e percorre todos os índices para extrair a média aritmética.
algoritmo "media_vetor"
var
dados: vetor[1..4] de inteiro
soma: inteiro
media: inteiro
i: inteiro
inicio
soma = 0
para i de 1 ate 4 faca
escreva("Informe o dado estatistico:")
leia(dados[i])
soma = soma + dados[i]
fimpara
media = soma / 4
escreva("A media dos dados eh:")
escreva(media)
fimalgoritmo
Neurônio Perceptron
I.A.A base do Deep Learning! Simula um neurônio artificial calculando o produto escalar e usando uma função de ativação.
algoritmo "neuronio_simples"
var
entrada1: inteiro
entrada2: inteiro
peso1: inteiro
peso2: inteiro
soma: inteiro
inicio
// Pesos sinapticos treinados
peso1 = 2
peso2 = -1
escreva("Sinal de Entrada 1:")
leia(entrada1)
escreva("Sinal de Entrada 2:")
leia(entrada2)
// Produto escalar
soma = (entrada1 * peso1) + (entrada2 * peso2)
// Funcao de ativacao (Step Function)
se soma >= 0 entao
escreva("Neuronio ATIVADO (1)")
senao
escreva("Neuronio DESATIVADO (0)")
fimse
fimalgoritmo
Busca Binária O(log n)
I.A. e OtimizaçãoAlgoritmo de busca essencial. Encontra um alvo dividindo a área de busca pela metade a cada iteração.
algoritmo "busca_binaria"
var
inicio_busca: inteiro
fim_busca: inteiro
meio: inteiro
alvo: inteiro
inicio
inicio_busca = 1
fim_busca = 100
alvo = 42 // Numero que a IA tenta achar
enquanto inicio_busca <= fim_busca faca
meio = (inicio_busca + fim_busca) / 2
se meio == alvo entao
escreva("Alvo encontrado!")
inicio_busca = 999 // Forca a saida do laco
senao
se meio < alvo entao
inicio_busca = meio + 1
senao
fim_busca = meio - 1
fimse
fimse
fimenquanto
fimalgoritmo