DFCODE

Tecnologia e Inovação

Referência Completa

Comandos do VisuAlg

Guia completo de todos os comandos, estruturas e funções disponíveis no VisuAlg — a ferramenta educacional para algoritmos em português.

Fundamentos
Estrutura

Estrutura Básica de um Algoritmo

Todo algoritmo no VisuAlg possui uma estrutura padrão com início, seção de declaração de variáveis e corpo principal.

Sintaxe
algoritmo "Nome_do_Algoritmo"
var
  // Declaração de variáveis
inicio
  // Comandos
fimalgoritmo
Exemplo
algoritmo "OlaMundo"
var
  // Sem variáveis neste exemplo
inicio
  escreva("Olá, Mundo!")
fimalgoritmo
Variáveis

Declaração de Variáveis

As variáveis devem ser declaradas na seção "var" do algoritmo. Cada variável deve ter um tipo definido.

Sintaxe
var
  nome_variavel: tipo
  nome_variavel1, nome_variavel2: tipo
Exemplo
var
  idade: inteiro
  nome: caractere
  altura, peso: real
  aprovado: logico
Tipos

Tipos de Dados

O VisuAlg possui quatro tipos básicos de dados:

TipoDescriçãoExemplos
inteiroNúmeros inteiros1, 2, -5, 100
realNúmeros com casas decimais10.5, 3.14, -0.7
caractereTextos / strings"João", "Maria"
logicoValores verdadeiro/falsoVERDADEIRO, FALSO
Exemplo
var
  contador: inteiro   // 1, 2, 3, -5
  preco: real         // 10.5, 3.14
  nome: caractere     // "João", "Maria"
  aprovado: logico    // VERDADEIRO, FALSO
Entrada e Saída
Entrada

Leia — Entrada de Dados

O comando "leia" permite receber dados do usuário e armazená-los em variáveis.

Sintaxe
leia(variavel)
leia(variavel1, variavel2, ...)
Exemplo
var
  nome: caractere
  idade: inteiro
inicio
  escreva("Digite seu nome: ")
  leia(nome)
  escreva("Digite sua idade: ")
  leia(idade)
  escreva("Olá, ", nome, "! Você tem ", idade, " anos.")
Saída

Escreva — Saída de Dados

Exibe mensagens ou valores de variáveis na tela. Mantém o cursor na mesma linha após a exibição.

Sintaxe
escreva(valor)
escreva(valor1, valor2, ...)
Exemplo
var
  nome: caractere
  idade: inteiro
inicio
  nome <- "Maria"
  idade <- 25
  escreva("Nome: ", nome, " - Idade: ", idade)
// Saída: Nome: Maria - Idade: 25
Saída

Escreval — Saída com Quebra de Linha

Funciona como o "escreva", mas insere uma quebra de linha ao final da saída.

Sintaxe
escreval(valor)
escreval(valor1, valor2, ...)
Exemplo
var
  nome: caractere
  idade: inteiro
inicio
  nome <- "Pedro"
  idade <- 30
  escreval("Nome: ", nome)
  escreval("Idade: ", idade)
  escreval("Obrigado!")
// Saída em 3 linhas diferentes
Atribuição

Atribuição de Valores

O operador de atribuição "<-" é usado para atribuir valores às variáveis.

Sintaxe
variavel <- valor
Exemplo
var
  idade: inteiro
  nome: caractere
  altura: real
  aprovado: logico
inicio
  idade <- 25
  nome <- "João"
  altura <- 1.75
  aprovado <- VERDADEIRO
Operadores
Operadores

Operadores Aritméticos

Operadores usados para realizar cálculos matemáticos.

OperadorOperação
+Adição
-Subtração
*Multiplicação
/Divisão
\Divisão inteira
^Potenciação
% / modMódulo (resto da divisão)
Exemplo
var
  a, b, resultado: inteiro
inicio
  a <- 10
  b <- 3
  resultado <- a + b   // 13
  resultado <- a - b   // 7
  resultado <- a * b   // 30
  resultado <- a / b   // 3.333...
  resultado <- a \ b   // 3 (divisão inteira)
  resultado <- a ^ 2   // 100 (10²)
  resultado <- a % b   // 1 (resto de 10/3)
Operadores

Operadores Relacionais

Comparam valores e resultam em VERDADEIRO ou FALSO.

OperadorSignificado
=Igual a
<>Diferente de
<Menor que
>Maior que
<=Menor ou igual a
>=Maior ou igual a
Exemplo
var
  a, b: inteiro
  resultado: logico
inicio
  a <- 5
  b <- 10
  resultado <- a = b    // FALSO
  resultado <- a <> b   // VERDADEIRO
  resultado <- a < b    // VERDADEIRO
  resultado <- a > b    // FALSO
  resultado <- a <= b   // VERDADEIRO
  resultado <- a >= b   // FALSO
Operadores

Operadores Lógicos

Realizam operações lógicas entre valores booleanos.

OperadorEquivalenteDescrição
eANDVerdadeiro se ambos forem verdadeiros
ouORVerdadeiro se ao menos um for verdadeiro
naoNOTInverte o valor lógico
Exemplo
var
  x, y, resultado: logico
inicio
  x <- VERDADEIRO
  y <- FALSO
  resultado <- x e y    // FALSO
  resultado <- x ou y   // VERDADEIRO
  resultado <- nao x    // FALSO
  resultado <- nao y    // VERDADEIRO
Estruturas de Controle
Condicional

Se-Então-Senão

Executa comandos condicionalmente com base em uma expressão lógica.

Sintaxe
se (condicao) entao
  // Comandos se VERDADEIRO
senao
  // Comandos se FALSO
fimse
Exemplo
var
  idade: inteiro
inicio
  escreva("Digite sua idade: ")
  leia(idade)
  se (idade >= 18) entao
    escreval("Você é maior de idade.")
  senao
    escreval("Você é menor de idade.")
  fimse
Condicional

Se-Então-Senão Encadeado

Estruturas "se" podem ser encadeadas para verificar múltiplas condições.

Sintaxe
se (condicao1) entao
  // Comandos
senao
  se (condicao2) entao
    // Comandos
  senao
    // Comandos
  fimse
fimse
Exemplo
var
  nota: real
inicio
  escreva("Digite sua nota: ")
  leia(nota)
  se (nota >= 7) entao
    escreval("Aprovado!")
  senao
    se (nota >= 5) entao
      escreval("Recuperação!")
    senao
      escreval("Reprovado!")
    fimse
  fimse
Condicional

Escolha-Caso

Verifica múltiplas condições para uma mesma variável. Similar ao switch-case de outras linguagens.

Sintaxe
escolha variavel
  caso valor1
    // Comandos
  caso valor2
    // Comandos
  outrocaso
    // Executado se nenhum caso for atendido
fimescolha
Exemplo
var
  opcao: inteiro
inicio
  escreval("Menu:")
  escreval("1 - Somar")
  escreval("2 - Subtrair")
  escreval("3 - Multiplicar")
  escreva("Escolha uma opção: ")
  leia(opcao)
  escolha opcao
    caso 1
      escreval("Você escolheu Somar")
    caso 2
      escreval("Você escolheu Subtrair")
    caso 3
      escreval("Você escolheu Multiplicar")
    outrocaso
      escreval("Opção inválida!")
  fimescolha
Repetição

Para — Laço Contado

Executa um bloco de comandos um número específico de vezes, incrementando automaticamente um contador.

Sintaxe
para variavel de inicio ate fim [passo incremento] faca
  // Comandos
fimpara
Exemplo
var
  i: inteiro
inicio
  // Contagem de 1 a 5
  para i de 1 ate 5 faca
    escreval("Valor de i: ", i)
  fimpara

  // Contagem regressiva de 10 a 0, de 2 em 2
  para i de 10 ate 0 passo -2 faca
    escreval("Valor de i: ", i)
  fimpara
Repetição

Enquanto — Pré-testado

Executa um bloco enquanto uma condição for verdadeira. A condição é verificada antes de cada iteração.

Sintaxe
enquanto (condicao) faca
  // Comandos
fimenquanto
Exemplo
var
  contador: inteiro
inicio
  contador <- 1
  enquanto (contador <= 5) faca
    escreval("Contador: ", contador)
    contador <- contador + 1
  fimenquanto
Repetição

Repita — Pós-testado

Executa o bloco até que uma condição seja verdadeira. A condição é verificada após cada iteração — garante ao menos uma execução.

Sintaxe
repita
  // Comandos
ate (condicao)
Exemplo
var
  senha: caractere
inicio
  repita
    escreva("Digite a senha: ")
    leia(senha)
  ate (senha = "123456")
  escreval("Senha correta! Acesso permitido.")
Repetição

Interrompa e Continua

Controlam o fluxo dentro de laços de repetição.

Sintaxe
interrompa   // Sai imediatamente do laço
continua     // Pula para a próxima iteração
Exemplo
var
  i: inteiro
inicio
  // interrompa: sai quando i = 5
  para i de 1 ate 10 faca
    se (i = 5) entao
      interrompa
    fimse
    escreval(i)
  fimpara

  // continua: pula números pares
  para i de 1 ate 10 faca
    se (i % 2 = 0) entao
      continua
    fimse
    escreval(i)   // imprime apenas ímpares
  fimpara
Estruturas de Dados
Vetores

Vetores — Arrays Unidimensionais

Estruturas que armazenam múltiplos valores do mesmo tipo em uma única variável.

Sintaxe
var
  nome_vetor: vetor[indice_inicial..indice_final] de tipo
Exemplo
var
  numeros: vetor[1..5] de inteiro
  i: inteiro
inicio
  // Atribuindo valores
  para i de 1 ate 5 faca
    numeros[i] <- i * 10
  fimpara

  // Exibindo valores
  para i de 1 ate 5 faca
    escreval("numeros[", i, "] = ", numeros[i])
  fimpara
Matrizes

Matrizes — Arrays Bidimensionais

Estruturas bidimensionais com linhas e colunas para armazenar múltiplos valores do mesmo tipo.

Sintaxe
var
  nome_matriz: vetor[ini_linha..fim_linha, ini_col..fim_col] de tipo
Exemplo
var
  matriz: vetor[1..3, 1..3] de inteiro
  i, j: inteiro
inicio
  // Atribuindo valores
  para i de 1 ate 3 faca
    para j de 1 ate 3 faca
      matriz[i, j] <- i + j
    fimpara
  fimpara

  // Exibindo valores
  para i de 1 ate 3 faca
    para j de 1 ate 3 faca
      escreva(matriz[i, j], " ")
    fimpara
    escreval()   // quebra de linha após cada linha
  fimpara
Funções e Procedimentos
Procedimentos

Procedimentos

Blocos de código reutilizáveis que executam uma tarefa específica. Não retornam valores.

Sintaxe
procedimento Nome(parametro1: tipo1; parametro2: tipo2)
var
  // Variáveis locais
inicio
  // Comandos
fimprocedimento
Exemplo
algoritmo "ExemploProcedimento"
var
  x, y: inteiro

procedimento Soma(a, b: inteiro)
var
  resultado: inteiro
inicio
  resultado <- a + b
  escreval("A soma de ", a, " e ", b, " é: ", resultado)
fimprocedimento

inicio
  x <- 10
  y <- 20
  Soma(x, y)   // Chamada do procedimento
fimalgoritmo
Funções

Funções

Blocos de código reutilizáveis que executam uma tarefa e retornam um valor.

Sintaxe
funcao Nome(parametro1: tipo1; parametro2: tipo2): TipoDeRetorno
var
  // Variáveis locais
inicio
  // Comandos
  retorne valor
fimfuncao
Exemplo
algoritmo "ExemploFuncao"
var
  x, y, resultado: inteiro

funcao Soma(a, b: inteiro): inteiro
inicio
  retorne a + b
fimfuncao

inicio
  x <- 15
  y <- 25
  resultado <- Soma(x, y)
  escreval("A soma de ", x, " e ", y, " é: ", resultado)
fimalgoritmo
Parâmetros

Passagem de Parâmetros por Referência

Por padrão, parâmetros são passados por valor. Use a palavra-chave "var" antes do nome para passar por referência (permite modificar a variável original).

Sintaxe
procedimento Nome(var parametro: tipo)
Exemplo
algoritmo "ParametroPorReferencia"
var
  numero: inteiro

procedimento Dobrar(var n: inteiro)
inicio
  n <- n * 2   // Modifica o valor original
fimprocedimento

inicio
  numero <- 10
  escreval("Valor antes: ", numero)    // 10
  Dobrar(numero)
  escreval("Valor depois: ", numero)   // 20
fimalgoritmo
Extras
Extras

Limpatela

Limpa a tela de saída.

Sintaxe
limpatela
Exemplo
inicio
  escreval("Primeira mensagem")
  escreval("Pressione uma tecla para limpar...")
  leia(tecla)
  limpatela
  escreval("Tela limpa!")
Extras

Timer — Pausa na Execução

Pausa a execução do algoritmo por um tempo definido em milissegundos.

Sintaxe
timer(tempo_em_milissegundos)
Exemplo
inicio
  para i de 1 ate 5 faca
    escreval("Contagem: ", i)
    timer(1000)   // Pausa por 1 segundo
  fimpara
  escreval("Contagem finalizada!")
Extras

Aleatório — Números Randômicos

Faz com que os próximos comandos "leia" recebam valores aleatórios no intervalo definido.

Sintaxe
aleatorio min, max
  // Comandos com leia() receberão valores aleatórios
aleatorio off
Exemplo
var
  numero: inteiro
inicio
  aleatorio 1, 100
  leia(numero)   // Recebe valor aleatório entre 1 e 100
  aleatorio off
  escreval("Número gerado: ", numero)
Extras

Funções Matemáticas

Funções matemáticas incorporadas no VisuAlg.

FunçãoDescrição
abs(x)Valor absoluto
sen(x)Seno
cos(x)Cosseno
tan(x)Tangente
asen(x)Arco-seno
acos(x)Arco-cosseno
atan(x)Arco-tangente
exp(x)Exponencial (eˣ)
raizq(x)Raiz quadrada
piValor de π (3.14159…)
int(x)Parte inteira
quad(x)Quadrado (x²)
randi(min, max)Número aleatório inteiro
Exemplo
var
  x: real
inicio
  x <- -10
  escreval("Valor absoluto de ", x, ": ", abs(x))
  escreval("Seno de 30°: ", sen(30 * pi / 180))
  escreval("Raiz quadrada de 25: ", raizq(25))
  escreval("Aleatório entre 1 e 10: ", randi(1, 10))
Extras

Funções de Texto

Funções para manipulação de strings (textos).

FunçãoDescrição
compr(texto)Retorna o comprimento do texto
copia(texto, pos, tam)Extrai uma parte do texto
maiusc(texto)Converte para maiúsculas
minusc(texto)Converte para minúsculas
asc(caractere)Retorna o código ASCII
carac(codigo)Retorna o caractere do código ASCII
pos(sub, texto)Posição da primeira ocorrência
Exemplo
var
  nome: caractere
  tamanho: inteiro
inicio
  nome <- "Algoritmo"
  tamanho <- compr(nome)
  escreval("Comprimento: ", tamanho)            // 9
  escreval("Primeiras 3 letras: ", copia(nome, 1, 3))  // Alg
  escreval("Em maiúsculas: ", maiusc(nome))     // ALGORITMO
  escreval("Posição da letra 'o': ", pos("o", nome))   // 9
Extras

Funções de Conversão

Convertem entre diferentes tipos de dados.

FunçãoDescrição
CaracPNum(texto)Converte texto para número
NumPCarac(numero)Converte número para texto
Exemplo
var
  texto: caractere
  numero: real
inicio
  texto <- "123.45"
  numero <- CaracPNum(texto)
  escreval("Convertido para número: ", numero)   // 123.45
  escreval("Número + 10: ", numero + 10)          // 133.45

  numero <- 987.65
  texto <- NumPCarac(numero)
  escreval("Convertido para texto: ", texto)
  escreval("Comprimento do texto: ", compr(texto))