Aulab Criar conta grátis
Para aprender

De Portugol para PHP: guia de migração para iniciantes

Atualizado em 30 de agosto de 2026

Se você aprendeu lógica em Portugol — no Visualg, no Portugol Studio ou no caderno mesmo — a migração para PHP é mais de tradução do que de aprendizado. A lógica é exatamente a mesma: variável continua guardando valor, se continua decidindo, enquanto continua repetindo. O que muda é a roupa: palavras em inglês, cifrão antes do nome da variável, ponto e vírgula no fim de cada comando e chaves no lugar de fimse e fimenquanto.

Esse é o momento mais confuso do começo, e ele dura pouco. A sensação de "eu já sabia fazer isso e agora não sei mais" vem quase toda de detalhes de digitação, não de raciocínio. Em uma ou duas semanas escrevendo, o cifrão e o ponto e vírgula saem no automático e sobra só o que você já tinha: saber montar o passo a passo.

Este guia é a tabela de tradução completa mais três programas inteiros passados de Portugol para PHP, lado a lado, com a saída real. Se em algum ponto a parte de variáveis parecer nebulosa, o guia de variáveis em PHP destrincha só esse assunto.

A boa notícia: a lógica não muda

Portugol foi inventado para ensinar lógica sem o barulho de uma linguagem real. Tudo que ele tem — sequência, decisão, repetição, entrada e saída — existe igual em PHP, porque essas quatro coisas existem em qualquer linguagem de programação. Nenhum conceito que você aprendeu vai ser jogado fora.

O que Portugol esconde de propósito, e PHP mostra, é a exigência de precisão. O Visualg perdoa um espaço a mais, aceita acento em nome de variável, avisa em português quando você erra. O PHP não perdoa nada e reclama em inglês. Não é maldade da linguagem: é que o código que você escreve agora vai rodar num servidor de verdade, e servidor não adivinha intenção.

Tabela de equivalência: Portugol para PHP

Em Portugol Em PHP Observação
algoritmo "nome" ... inicio <?php Uma linha só, no topo do arquivo.
fimalgoritmo (nada) O arquivo simplesmente acaba.
var idade : inteiro $idade = 0; Não se declara tipo; a variável nasce quando recebe valor.
idade <- 17 $idade = 17; A seta vira igual, e sempre com ponto e vírgula no fim.
escreva("Oi") echo 'Oi'; Sem quebra de linha automática.
escreval("Oi") echo "Oi\n"; O \n só funciona com aspas duplas.
leia(idade) $idade = readline(); Chega sempre como texto; converta com (int) ou (float).
se ... entao / senao / fimse if (...) { } else { } Condição entre parênteses, bloco entre chaves.
senao se ... entao elseif (...) { } Tudo junto, sem espaço.
enquanto ... faca / fimenquanto while (...) { } Mesma ideia, mesma condição.
para i de 1 ate 10 faca / fimpara for ($i = 1; $i <= 10; $i++) { } Início, condição e passo na mesma linha.
escolha / caso / fimescolha switch / case / break Em PHP cada caso precisa de break.
e / ou / nao && / || / ! Símbolos no lugar das palavras.
= (comparação) == Em PHP, um sinal só atribui; dois comparam.
<> (diferente) != Lê-se "não é igual".
verdadeiro / falso true / false Sempre em minúsculas.

Imprima essa tabela e deixe do lado do teclado nas duas primeiras semanas. É literalmente tudo que você precisa consultar no começo.

Programa 1: média do aluno

O programa mais escrito da história das aulas de lógica. Em Portugol:

algoritmo "media"
var
   nota1, nota2, media : real
inicio
   escreva("Nota 1: ")
   leia(nota1)
   escreva("Nota 2: ")
   leia(nota2)
   media <- (nota1 + nota2) / 2
   escreval("Media: ", media)
   se media >= 6 entao
      escreval("Aprovado")
   senao
      escreval("Reprovado")
   fimse
fimalgoritmo

O mesmo programa em PHP:

<?php

echo 'Nota 1: ';
$nota1 = (float) readline();

echo 'Nota 2: ';
$nota2 = (float) readline();

$media = ($nota1 + $nota2) / 2;

echo 'Média: ' . number_format($media, 1, ',', '.') . "\n";

if ($media >= 6) {
    echo "Aprovado\n";
} else {
    echo "Reprovado\n";
}

Rodando e digitando 9 e 4:

Nota 1: 9
Nota 2: 4
Média: 6,5
Aprovado

Três diferenças merecem atenção. A primeira: o bloco de declaração var sumiu. Em PHP a variável nasce no instante em que recebe um valor, e você não diz se ela é inteira ou real. A segunda: readline() devolve sempre texto, mesmo quando a pessoa digita um número, por isso o (float) na frente converte para número antes da conta. A terceira: para juntar texto com valor, o PHP usa ponto — 'Média: ' . $media — no lugar da vírgula do Portugol.

O number_format não tem equivalente no Portugol e resolve um incômodo brasileiro: sem ele, o PHP imprimiria 6.5 com ponto. Os argumentos são, nessa ordem: o número, quantas casas decimais, o separador de decimal e o separador de milhar.

Programa 2: o maior de dois números

Em Portugol:

algoritmo "maior"
var
   primeiro, segundo : inteiro
inicio
   escreva("Primeiro numero: ")
   leia(primeiro)
   escreva("Segundo numero: ")
   leia(segundo)
   se primeiro > segundo entao
      escreval("O maior e ", primeiro)
   senao
      se segundo > primeiro entao
         escreval("O maior e ", segundo)
      senao
         escreval("Os dois sao iguais")
      fimse
   fimse
fimalgoritmo

Em PHP, o elseif deixa o encadeamento mais limpo do que os fimse aninhados:

<?php

echo 'Primeiro número: ';
$primeiro = (int) readline();

echo 'Segundo número: ';
$segundo = (int) readline();

if ($primeiro > $segundo) {
    echo 'O maior é ' . $primeiro . "\n";
} elseif ($segundo > $primeiro) {
    echo 'O maior é ' . $segundo . "\n";
} else {
    echo "Os dois são iguais\n";
}

Rodando e digitando 12 e 30:

Primeiro número: 12
Segundo número: 30
O maior é 30

Note que aqui usamos (int) e não (float), porque o enunciado fala de números inteiros. E repare no else final sem condição nenhuma: ele cobre o único caso que sobrou, o empate. Todo encadeamento de decisões deve terminar num caso que sobra, senão existe uma situação em que o programa não fala nada.

Programa 3: contagem com para e for

Em Portugol:

algoritmo "contagem"
var
   contador : inteiro
inicio
   para contador de 1 ate 5 faca
      escreval("Volta ", contador)
   fimpara
   escreval("Fim")
fimalgoritmo

Em PHP:

<?php

for ($contador = 1; $contador <= 5; $contador++) {
    echo 'Volta ' . $contador . "\n";
}

echo "Fim\n";

Saída:

Volta 1
Volta 2
Volta 3
Volta 4
Volta 5
Fim

Essa é a tradução que mais assusta, porque o para contador de 1 ate 5 é praticamente português e o for parece uma fórmula. Mas os pedaços são os mesmos, só reordenados: $contador = 1 é o "de 1", $contador <= 5 é o "ate 5" e $contador++ é o passo que o Portugol fazia escondido. Depois de traduzir três ou quatro laços, a linha do for vira leitura natural.

As sete pegadinhas da mudança

  1. Esquecer o cifrão. Em PHP, é $nome, não nome. Sem o cifrão o PHP acha que você está chamando uma constante que não existe.
  2. Esquecer o ponto e vírgula. Toda linha de comando termina com ;. O erro aparece na linha seguinte à que faltou, o que confunde bastante no começo — quando o PHP reclamar de uma linha aparentemente certa, olhe a de cima.
  3. Usar = para comparar. if ($idade = 18) não compara nada: guarda 18 dentro de $idade e sempre entra no if. Comparação é ==.
  4. Misturar as aspas. Com aspas duplas, "Oi $nome" troca a variável pelo valor e "\n" vira quebra de linha. Com aspas simples, sai o texto cru. Na dúvida, use aspas simples e junte com ponto.
  5. Achar que readline devolve número. Devolve texto. Sem (int) ou (float), somar duas notas pode virar concatenação em vez de conta.
  6. Acento em nome de variável. Funciona no Visualg, mas evite: escreva $mediaFinal, sem acento, com a segunda palavra em maiúscula.
  7. Deixar o fimse. Parece bobo, mas acontece: o fechamento de bloco em PHP é a chave } e mais nada.

Nenhuma dessas sete é erro de lógica. Todas são erro de digitação — e é exatamente por isso que passam. Ler a mensagem de erro do PHP com calma resolve seis delas em segundos, mesmo com a mensagem em inglês: o número da linha quase sempre aponta o lugar certo ou a linha logo abaixo.

Como praticar a tradução

O melhor exercício desta fase é pegar os algoritmos que você já escreveu em Portugol na disciplina de lógica e traduzir um por dia, sem consultar o original enquanto escreve. Como você já sabe o resultado esperado, sobra atenção inteira para a sintaxe nova. Se estiver começando do zero e não tiver essa pilha de algoritmos antigos, o roteiro do guia lógica de programação por onde começar dá a sequência de assuntos na ordem.

Vale procurar um lugar de escrever e rodar sem instalar nada, porque instalar PHP na máquina no primeiro dia é uma barreira desnecessária. No Aulab, por exemplo, o exercício abre um editor de PHP que roda dentro do navegador, com readline funcionando, e a entrega vai para o professor aprovar ou devolver pedindo o ajuste — a mesma ideia da correção do caderno, só que sem papel. Dá para ver como o ciclo funciona antes de criar qualquer coisa.

Perguntas frequentes

Portugol serve para alguma coisa depois que eu aprendo PHP?

Serve como rascunho. Muito programador experiente ainda escreve o passo a passo em português antes de codificar algo confuso — é o mesmo raciocínio do Portugol, só que informal. O que não se sustenta é continuar entregando trabalho em Portugol: ele não roda em servidor nenhum e não vira produto.

Preciso declarar tipo de variável em PHP?

Não em variável comum. Você escreve $idade = 17; e pronto. PHP tem declaração de tipo em parâmetros e retornos de função, que é um assunto de mais adiante e ajuda bastante em projeto grande, mas nada disso é obrigatório para os seus primeiros programas.

Como faço o leia() do Portugol em PHP?

Com readline(), que lê o que a pessoa digita no terminal. Como o retorno é texto, converta antes de fazer conta: $idade = (int) readline(); para inteiro e (float) para número com decimais.

Por que meu número aparece com ponto no lugar da vírgula?

Porque PHP usa o padrão internacional para números. Para mostrar no formato brasileiro, passe pelo number_format: number_format($valor, 2, ',', '.') transforma 1234.5 em 1.234,50. Isso é só apresentação — por dentro, a conta continua sendo feita com ponto.

Vale a pena aprender PHP como primeira linguagem depois do Portugol?

Vale, principalmente se o seu objetivo for web. A sintaxe é próxima do que se ensina em Portugol, dá para rodar um arquivo sozinho sem montar projeto e o mercado brasileiro tem bastante sistema em PHP. Mas o mais importante nesta fase é escolher uma linguagem e ficar nela alguns meses: trocar de linguagem a cada semana é o jeito mais rápido de não firmar nenhuma.

Leia também

Sua turma inteira num lugar só

Poste aulas e exercícios, corrija com devolutiva e acompanhe o progresso de cada aluno — o Aulab reúne tudo isso numa turma só.