Nenhum tópico encontrado para a sua busca. Tente palavras mais simples!

1. Como começar? (A Estrutura)

Analogia: Pense num programa de computador como uma receita de bolo. Primeiro você dá um nome à receita, depois separa os ingredientes (variáveis) e, por fim, escreve o modo de preparo (início ao fim).

Todo código no AlgoSimulator precisa seguir este esqueleto básico. Copie e cole na IDE para testar:

algoritmo "meu_primeiro_programa"
var
  // Aqui você separa os "ingredientes" (variáveis)
inicio
  // Aqui vai o "modo de preparo" (suas ordens)
fimalgoritmo

2. Variáveis e Tipos

Analogia: Uma variável é como uma caixa de papelão com uma etiqueta. Você escreve "Idade" na etiqueta e guarda o número 20 lá dentro. O computador usa a memória RAM para guardar essas caixas.

Declaramos as variáveis usando nome : tipo. Para guardar um valor na caixa, usamos o sinal de igual =.

var
  idade: inteiro
  peso: real
inicio
  idade = 20
  peso = 75.5
fimalgoritmo

3. Falando com o Computador (I/O)

Analogia: leia() é o computador te fazendo uma pergunta e esperando você digitar a resposta. escreva() é o computador te mostrando um recado na tela.
var
  ano_nascimento: inteiro
  idade: inteiro
inicio
  // O PC vai pausar e pedir para você digitar algo
  leia(ano_nascimento) 
  
  idade = 2026 - ano_nascimento
  
  // O PC vai imprimir o resultado no console escuro
  escreva(idade) 
fimalgoritmo

4. Tomando Decisões (SE / SENÃO)

Analogia: Você chegou em uma encruzilhada. "SE estiver chovendo, vou pelo caminho A de guarda-chuva. SENÃO, vou pelo caminho B de óculos de sol".
var
  nota: inteiro
inicio
  nota = 8
  
  se nota >= 7 entao
    escreva(1) // 1 significa Aprovado
  senao
    escreva(0) // 0 significa Reprovado
  fimse
fimalgoritmo

5. Repetindo Ações (Laços)

Analogia: Imagine que você está de castigo e precisa escrever "Não vou bagunçar" 100 vezes no quadro. Em vez de escrever 100 linhas de código, você usa um laço para dizer: "Repita isso de 1 até 100".
var
  i: inteiro
inicio
  // Laço PARA: Sabe exatamente quantas vezes vai rodar
  para i de 1 ate 5 faca
    escreva(i)
  fimpara

  // Laço ENQUANTO: Roda até a condição virar falsa
  i = 1
  enquanto i <= 5 faca
    escreva(i)
    i = i + 1
  fimenquanto
fimalgoritmo

6. Listas e Vetores (Arrays)

Analogia: Em vez de ter 10 caixas soltas pela casa, um Vetor é como uma caixa de ovos ou um armário de remédios com várias gavetinhas numeradas. Você acessa a gaveta usando o número dela nos colchetes: armario[3].
var
  gavetas: vetor[1..3] de inteiro
inicio
  gavetas[1] = 100
  gavetas[2] = 200
  gavetas[3] = gavetas[1] + gavetas[2]
  
  escreva(gavetas[3]) // Vai imprimir 300
fimalgoritmo

7. Criando Funções e Recursão

Analogia: Uma função é como contratar um ajudante especializado. Você dá o nome dele de "Somador", entrega dois números na mão dele, ele faz o trabalho em uma salinha separada, e te "retorna" o resultado pronto.
funcao somador(x: inteiro, y: inteiro) : inteiro
inicio
  retorna x + y
fimfuncao

var
  resultado: inteiro
inicio
  resultado = somador(10, 5)
  escreva(resultado) // Imprime 15
fimalgoritmo

8. A Magia dos Ponteiros

Analogia: Um ponteiro é um mapa do tesouro. Ele não guarda o tesouro de verdade, ele guarda apenas as coordenadas (endereço da memória) de onde o tesouro está enterrado.

Use & para "pegar o endereço" e * para "cavar o tesouro" (desreferenciar).

var
  bau: inteiro
  mapa: ponteiro
inicio
  bau = 50
  mapa = &bau   // O mapa agora sabe onde o baú está
  *mapa = 100   // Usamos o mapa para achar o baú e colocar 100 dentro
  
  escreva(bau)  // Imprime 100!
fimalgoritmo

9. Estruturas Avançadas: Pilhas (Stacks)

Analogia: Pense numa pilha de pratos sujos na pia. Você só consegue colocar um prato novo no TOPO, e só consegue tirar o prato que está no TOPO. O último a entrar é o primeiro a sair (LIFO).
var
  pilha: vetor[1..5] de inteiro
  topo: inteiro
inicio
  topo = 0
  
  // Colocando um prato (PUSH)
  topo = topo + 1
  pilha[topo] = 10
  
  // Colocando outro prato (PUSH)
  topo = topo + 1
  pilha[topo] = 20
  
  // Tirando o prato do topo (POP)
  escreva(pilha[topo]) // Imprime 20
  topo = topo - 1
fimalgoritmo

10. Estruturas Avançadas: Filas (Queues)

Analogia: É literalmente uma fila de banco. O primeiro cliente que chega é o primeiro a ser atendido (FIFO - First In, First Out). Novas pessoas entram no FIM, pessoas são atendidas no INÍCIO.
var
  fila: vetor[1..5] de inteiro
  inicio_fila: inteiro
  fim_fila: inteiro
inicio
  inicio_fila = 1
  fim_fila = 0
  
  // Cliente chega (ENQUEUE)
  fim_fila = fim_fila + 1
  fila[fim_fila] = 10
  
  // Outro cliente chega (ENQUEUE)
  fim_fila = fim_fila + 1
  fila[fim_fila] = 20
  
  // Primeiro cliente é atendido (DEQUEUE)
  escreva(fila[inicio_fila]) // Imprime 10
  inicio_fila = inicio_fila + 1
fimalgoritmo

11. Memória Dinâmica: Registros e Árvores

Analogia: Um Registro é como uma ficha médica com vários campos (nome, peso, etc). A função alocar() é como pedir para a prefeitura construir um terreno novo no meio da cidade para guardar essa ficha, enquanto os ponteiros são as ruas que ligam os terrenos.
registro Ficha
  valor: inteiro
  proximo: ponteiro
fimregistro

var
  primeira_ficha: ponteiro
  segunda_ficha: ponteiro
inicio
  // Constrói os terrenos reais na memória (Heap)
  alocar(primeira_ficha, Ficha)
  alocar(segunda_ficha, Ficha)
  
  primeira_ficha.valor = 100
  segunda_ficha.valor = 200
  
  // Uma ficha aponta para a outra! (Lista Encadeada)
  primeira_ficha.proximo = segunda_ficha
  
  // Acessando a segunda através da primeira
  escreva(primeira_ficha.proximo.valor) // Imprime 200
fimalgoritmo