👨‍🏫 VisualG e Portugol: O Primeiro Passo na Lógica de Programação

O VisualG é um software educacional amplamente utilizado no Brasil e em outros países de língua portuguesa como uma ferramenta para o ensino e aprendizado de lógica de programação e algoritmos. Ele funciona como um editor e interpretador para uma linguagem de pseudocódigo chamada Portugol.

Desenvolvido pelo professor Cláudio de Castro Monteiro, da Universidade de Franca (UNIFRAN), seu principal objetivo é remover as barreiras sintáticas complexas das linguagens de programação “reais” (como C++, Java ou Python), permitindo que o estudante iniciante se concentre exclusivamente no desenvolvimento do raciocínio lógico necessário para resolver problemas.


📜 A Linguagem: O Portugol Estruturado

O coração do VisualG é o Portugol, uma pseudolinguagem que utiliza palavras-chave em português para representar as estruturas lógicas da programação. A ideia é criar uma ponte entre a linguagem natural e uma linguagem de programação formal.

As principais características do Portugol no VisualG são:


🖥️ O Ambiente VisualG

O software em si é um ambiente integrado simples que oferece três funcionalidades principais:

  1. Editor de Código: Uma área de texto para escrever o algoritmo em Portugol.
  2. Interpretador: Executa o algoritmo passo a passo, mostrando a saída em um console de texto.
  3. Visualizador de Variáveis: Este é o recurso didático mais poderoso. Um painel exibe todas as variáveis declaradas e seus valores são atualizados em tempo real à medida que o algoritmo é executado. Isso permite que o aluno “veja” o que está acontecendo na memória do computador, facilitando a compreensão de conceitos como atribuição e estado.

O VisualG funciona, na prática, como um simulador de “teste de mesa” (desk check), uma técnica usada para depurar algoritmos manualmente no papel.


flowchart Estrutura de um Algoritmo no VisualG

Um fluxograma é uma ótima maneira de planejar a lógica de um algoritmo antes de escrevê-lo. O exemplo abaixo mostra o fluxo para calcular a média de um aluno e determinar se ele foi aprovado.

flowchart TD
    A("Início do Algoritmo") --> B{"Declare as variáveis:<br/">nota1, nota2, media: real}
    B --> C{"Escreva 'Digite a primeira nota'"}
    C --> D["Leia nota1"]
    D --> E{"Escreva 'Digite a segunda nota'"}
    E --> F["Leia nota2"]
    F --> G["'media <- (nota1 + nota2") / 2"]
    G --> H{"media">= 6.0?}
    H -- Sim --> I["Escreva """"""""Aprovado"""""""""]
    H -- Não --> J["Escreva """"""""Reprovado"""""""""]
    I --> K("Fim do Algoritmo")
    J --> K
    style A fill:#cfc,stroke:#333,stroke-width:2px
    style K fill:#f99,stroke:#333,stroke-width:2px

⌨️ Exemplo Prático: Média de Notas

Este é o código em Portugol, para ser escrito e executado no VisualG, que implementa a lógica do fluxograma acima.

algoritmo "CalculoMedia"
// Descrição: Este algoritmo lê duas notas de um aluno, calcula a média
// e informa se o aluno foi aprovado ou reprovado.
// Autor: [Seu Nome]
// Data: 20/08/2025

var
   nota1, nota2, media: real

inicio
   // Seção de Comandos
   escreva("Digite a primeira nota do aluno: ")
   leia(nota1)

   escreva("Digite a segunda nota do aluno: ")
   leia(nota2)

   media <- (nota1 + nota2) / 2

   escreval // Pula uma linha para melhor formatação
   escreval("A média do aluno é: ", media)

   se (media >= 6) entao
      escreva("Situação: APROVADO")
   senao
      escreva("Situação: REPROVADO")
   fimse

fimalgoritmo

Ao executar este código no VisualG, o programa irá pedir as duas notas, exibir a média calculada e, em seguida, a situação final do aluno. No painel de variáveis, será possível ver os valores de nota1, nota2 e media durante toda a execução.


🎓 O Papel do VisualG na Jornada do Desenvolvedor

O VisualG é uma ferramenta de entrada, um “andaime” para ajudar a construir as fundações do conhecimento em programação.

Vantagens

Limitações e Próximos Passos


💡 Portugol Studio: A Evolução do Aprendizado de Algoritmos

O Portugol Studio é um Ambiente de Aprendizagem Integrado (ILE - Integrated Learning Environment), gratuito e de código aberto, projetado para ensinar os fundamentos da programação e da lógica de algoritmos. Desenvolvido pela Universidade do Vale do Itajaí (UNIVALI), ele representa uma evolução moderna de ferramentas didáticas como o VisualG.

Seu objetivo é o mesmo: fornecer um ambiente em português onde estudantes iniciantes possam se concentrar na lógica, sem as complexidades sintáticas de uma linguagem de programação profissional. No entanto, o Portugol Studio faz isso com uma interface mais rica, recursos mais poderosos e uma abordagem que prepara melhor o aluno para as linguagens de programação do mercado.


🆚 Portugol Studio vs. VisualG: O Que Mudou?

Embora compartilhem a mesma filosofia, o Portugol Studio oferece uma experiência de aprendizado mais moderna e completa.


📜 A Sintaxe do Portugol no Studio

A sintaxe é similar ao Portugol tradicional, mas com uma estrutura mais formal.


flowchart Visualizando um Fluxo com Funções

Este fluxograma representa uma calculadora simples, onde a lógica da operação é separada em uma função, demonstrando a modularidade incentivada pelo Portugol Studio.

flowchart TD
    A("Início") --> B{"Leia num1, num2, operacao"}
    B --> C("Chame a função<br/">calcular("num1, num2, operacao"))
    subgraph "Função calcular"
    D{"Avalie 'operacao'"}
    D -- "+" --> E["resultado = num1 + num2"]
    D -- "-" --> F["resultado = num1 - num2"]
    D -- "*" --> G["resultado = num1 * num2"]
    D -- "/" --> H["resultado = num1 / num2"]
    E --> I("Retorne resultado")
    F --> I
    G --> I
    H --> I
    end
    C --> J["Guarde o valor retornado"]
    J --> K{"Escreva o resultado"}
    K --> L("Fim")
    style A fill:#cfc,stroke:#333,stroke-width:2px
    style L fill:#f99,stroke:#333,stroke-width:2px

⌨️ Exemplo Prático: Calculadora Simples

O código abaixo implementa a lógica do fluxograma no Portugol Studio.

programa
{
	funcao inicio()
	{
		real n1, n2, resultado
		caracter operacao

		escreva("Digite o primeiro número: ")
		leia(n1)

		escreva("Digite o segundo número: ")
		leia(n2)

		escreva("Digite a operação (+, -, *, /): ")
		leia(operacao)

		resultado = calcular(n1, n2, operacao)

		escreva("
O resultado é: ", resultado)
	}

	funcao real calcular(real num1, real num2, caracter op)
	{
		real res = 0.0

		escolha (op)
		{
			caso '+':
				res = num1 + num2
				pare
			caso '-':
				res = num1 - num2
				pare
			caso '*':
				res = num1 * num2
				pare
			caso '/':
				se (num2 != 0) {
					res = num1 / num2
				} senao {
					escreva("Erro! Divisão por zero não é permitida.")
				}
				pare
			caso contrario:
				escreva("Operação inválida!")
		}
		
		retorne res
	}
}

🎓 Por Que Começar com o Portugol Studio?

Para um iniciante, o Portugol Studio oferece um ambiente de aprendizado robusto e motivador.

Em resumo, o Portugol Studio é uma excelente porta de entrada para o mundo da programação, construindo uma base sólida de lógica e resolução de problemas em um ambiente controlado e amigável, antes de o aluno enfrentar as complexidades das linguagens profissionais.


⚖️ VisualG vs. Portugol Studio: Quadro Comparativo de Comandos

A tabela abaixo apresenta uma comparação lado a lado dos principais comandos e estruturas utilizados no VisualG e no Portugol Studio, destacando as diferenças de sintaxe e as evoluções presentes na ferramenta mais moderna.

| Funcionalidade | VisualG | Portugol Studio | Observações | | :— | :— | :— | :— | | Estrutura do Programa | pascal<br>algoritmo "NomeDoAlgoritmo"<br>var<br> // Variáveis<br>inicio<br> // Comandos<br>fimalgoritmo<br> | c<br>programa {<br> funcao inicio() {<br> // Comandos<br> }<br>}<br> | A estrutura do Studio é mais similar à de linguagens como C, Java e JavaScript, com uma função inicio agindo como a main. | | Declaração de Variáveis | pascal<br>// Todas declaradas no bloco 'var'<br>var<br> nome: caractere<br> idade: inteiro<br> salario: real<br> | c<br>// Podem ser declaradas em qualquer<br>// lugar antes do primeiro uso<br>cadeia nome<br>inteiro idade<br>real salario<br> | Studio é mais flexível. O tipo caractere do VisualG (para strings) é chamado de cadeia no Studio. | | Saída de Dados | escreva("Texto")<br>escreval("Texto e pula linha") | escreva("Texto") | Para pular linha no Studio, usa-se o caractere de escape ` . Ex: escreva(“Texto “). | | **Entrada de Dados** | leia(variavel) | leia(variavel) | Praticamente idênticos. | | **Atribuição de Valor** | variavel <- valor | variavel = valor | O Studio adota o = como padrão, mais comum em linguagens modernas. O <- também é aceito por compatibilidade. | | **Comentários** | // Comentário de uma linha | // Comentário de uma linha\<br\>/* Comentário de
múltiplas linhas */ | O Studio oferece suporte a comentários de múltiplas linhas, assim como em C/Java/CSS. | | **Condicional (Se/Senão)** | pascal
se (cond) entao

senao

fimse
| c
se (cond) {

} senao {

}
| O Studio usa chaves {} para delimitar blocos de código, um padrão visual mais moderno e claro. | | **Laço de Repetição (Para)** | pascal
para i de 1 ate 10 faca

fimpara
| c
para (inteiro i = 1; i <= 10; i++) {

}
| A sintaxe do Studio é idêntica à do for em C, Java, C\#, o que prepara melhor o aluno para linguagens profissionais. | | **Laço de Repetição (Enquanto)** | pascal
enquanto (cond) faca

fimenquanto
| c
enquanto (cond) {

}
| A lógica é a mesma, com a principal diferença sendo o uso de chaves {} no Studio. | | **Laço de Repetição (Faça...Enquanto)** | pascal
repita

ate (condicao_de_parada)
| c
faca {

} enquanto (condicao_de_continuacao)
| A sintaxe é diferente e a lógica da condição é invertida: VisualG para quando a condição é VERDADEIRO, Studio continua enquanto for VERDADEIRO. | | **Estrutura de Escolha** | pascal
escolha (variavel)
caso 1

caso 2

outrocaso

fimescolha
| c
escolha (variavel) {
caso 1:

pare
caso 2:

pare
caso contrario:

}
| O Studio exige o comando pare (equivalente ao break) para evitar que a execução continue nos casos seguintes. | | **Funções (com retorno)** | pascal
Funcao Nome(p1: tipo): tipo_retorno
inicio

retorne valor
fimfuncao
| c
funcao tipo_retorno Nome(tipo p1) {

retorne valor
}
| A sintaxe do Studio é mais concisa e alinhada com linguagens modernas. | | **Procedimentos (sem retorno)** | pascal
procedimento Nome(p1: tipo)
inicio

fimprocedimento
| c
funcao vazio Nome(tipo p1) {

}
| No Studio, um procedimento é apenas uma função que retorna o tipo vazio (equivalente ao void). | | **Vetores (Arrays)** | meuVetor: vetor [1..10] de inteiro | inteiro meuVetor[10] | A declaração no Studio é mais direta. Ambos usam índice baseado em zero por padrão (0 a 9 para um tamanho de 10). | | **Matrizes (Arrays 2D)** | minhaMatriz: vetor [1..5, 1..5] de real | real minhaMatriz[5][5] | Similar aos vetores, a sintaxe do Studio é mais compacta. | | **Uso de Bibliotecas** | Não possui | inclua Biblioteca Grafico\<br\>inclua Biblioteca Matematica` | Recurso exclusivo do Portugol Studio que expande enormemente suas capacidades, permitindo a criação de jogos simples, desenhos e uso de funções matemáticas avançadas. |