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.
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.
algoritmo "Nome_do_Algoritmo"
var
// Declaração de variáveis
inicio
// Comandos
fimalgoritmo
algoritmo "OlaMundo"
var
// Sem variáveis neste exemplo
inicio
escreva("Olá, Mundo!")
fimalgoritmo
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.
var
nome_variavel: tipo
nome_variavel1, nome_variavel2: tipo
var
idade: inteiro
nome: caractere
altura, peso: real
aprovado: logico
Tipos de Dados
O VisuAlg possui quatro tipos básicos de dados:
| Tipo | Descrição | Exemplos |
|---|---|---|
inteiro | Números inteiros | 1, 2, -5, 100 |
real | Números com casas decimais | 10.5, 3.14, -0.7 |
caractere | Textos / strings | "João", "Maria" |
logico | Valores verdadeiro/falso | VERDADEIRO, FALSO |
var
contador: inteiro // 1, 2, 3, -5
preco: real // 10.5, 3.14
nome: caractere // "João", "Maria"
aprovado: logico // VERDADEIRO, FALSO
Leia — Entrada de Dados
O comando "leia" permite receber dados do usuário e armazená-los em variáveis.
leia(variavel)
leia(variavel1, variavel2, ...)
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.")
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.
escreva(valor)
escreva(valor1, valor2, ...)
var
nome: caractere
idade: inteiro
inicio
nome <- "Maria"
idade <- 25
escreva("Nome: ", nome, " - Idade: ", idade)
// Saída: Nome: Maria - Idade: 25
Escreval — Saída com Quebra de Linha
Funciona como o "escreva", mas insere uma quebra de linha ao final da saída.
escreval(valor)
escreval(valor1, valor2, ...)
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 de Valores
O operador de atribuição "<-" é usado para atribuir valores às variáveis.
variavel <- valor
var
idade: inteiro
nome: caractere
altura: real
aprovado: logico
inicio
idade <- 25
nome <- "João"
altura <- 1.75
aprovado <- VERDADEIRO
Operadores Aritméticos
Operadores usados para realizar cálculos matemáticos.
| Operador | Operação |
|---|---|
+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
\ | Divisão inteira |
^ | Potenciação |
% / mod | Módulo (resto da divisão) |
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 Relacionais
Comparam valores e resultam em VERDADEIRO ou FALSO.
| Operador | Significado |
|---|---|
= | Igual a |
<> | Diferente de |
< | Menor que |
> | Maior que |
<= | Menor ou igual a |
>= | Maior ou igual a |
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 Lógicos
Realizam operações lógicas entre valores booleanos.
| Operador | Equivalente | Descrição |
|---|---|---|
e | AND | Verdadeiro se ambos forem verdadeiros |
ou | OR | Verdadeiro se ao menos um for verdadeiro |
nao | NOT | Inverte o valor lógico |
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
Se-Então-Senão
Executa comandos condicionalmente com base em uma expressão lógica.
se (condicao) entao
// Comandos se VERDADEIRO
senao
// Comandos se FALSO
fimse
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
Se-Então-Senão Encadeado
Estruturas "se" podem ser encadeadas para verificar múltiplas condições.
se (condicao1) entao
// Comandos
senao
se (condicao2) entao
// Comandos
senao
// Comandos
fimse
fimse
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
Escolha-Caso
Verifica múltiplas condições para uma mesma variável. Similar ao switch-case de outras linguagens.
escolha variavel
caso valor1
// Comandos
caso valor2
// Comandos
outrocaso
// Executado se nenhum caso for atendido
fimescolha
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
Para — Laço Contado
Executa um bloco de comandos um número específico de vezes, incrementando automaticamente um contador.
para variavel de inicio ate fim [passo incremento] faca
// Comandos
fimpara
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
Enquanto — Pré-testado
Executa um bloco enquanto uma condição for verdadeira. A condição é verificada antes de cada iteração.
enquanto (condicao) faca
// Comandos
fimenquanto
var
contador: inteiro
inicio
contador <- 1
enquanto (contador <= 5) faca
escreval("Contador: ", contador)
contador <- contador + 1
fimenquanto
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.
repita
// Comandos
ate (condicao)
var
senha: caractere
inicio
repita
escreva("Digite a senha: ")
leia(senha)
ate (senha = "123456")
escreval("Senha correta! Acesso permitido.")
Interrompa e Continua
Controlam o fluxo dentro de laços de repetição.
interrompa // Sai imediatamente do laço
continua // Pula para a próxima iteração
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
Vetores — Arrays Unidimensionais
Estruturas que armazenam múltiplos valores do mesmo tipo em uma única variável.
var
nome_vetor: vetor[indice_inicial..indice_final] de tipo
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 — Arrays Bidimensionais
Estruturas bidimensionais com linhas e colunas para armazenar múltiplos valores do mesmo tipo.
var
nome_matriz: vetor[ini_linha..fim_linha, ini_col..fim_col] de tipo
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
Procedimentos
Blocos de código reutilizáveis que executam uma tarefa específica. Não retornam valores.
procedimento Nome(parametro1: tipo1; parametro2: tipo2)
var
// Variáveis locais
inicio
// Comandos
fimprocedimento
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
Blocos de código reutilizáveis que executam uma tarefa e retornam um valor.
funcao Nome(parametro1: tipo1; parametro2: tipo2): TipoDeRetorno
var
// Variáveis locais
inicio
// Comandos
retorne valor
fimfuncao
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
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).
procedimento Nome(var parametro: tipo)
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
Limpatela
Limpa a tela de saída.
limpatela
inicio
escreval("Primeira mensagem")
escreval("Pressione uma tecla para limpar...")
leia(tecla)
limpatela
escreval("Tela limpa!")
Timer — Pausa na Execução
Pausa a execução do algoritmo por um tempo definido em milissegundos.
timer(tempo_em_milissegundos)
inicio
para i de 1 ate 5 faca
escreval("Contagem: ", i)
timer(1000) // Pausa por 1 segundo
fimpara
escreval("Contagem finalizada!")
Aleatório — Números Randômicos
Faz com que os próximos comandos "leia" recebam valores aleatórios no intervalo definido.
aleatorio min, max
// Comandos com leia() receberão valores aleatórios
aleatorio off
var
numero: inteiro
inicio
aleatorio 1, 100
leia(numero) // Recebe valor aleatório entre 1 e 100
aleatorio off
escreval("Número gerado: ", numero)
Funções Matemáticas
Funções matemáticas incorporadas no VisuAlg.
| Função | Descriçã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 |
pi | Valor de π (3.14159…) |
int(x) | Parte inteira |
quad(x) | Quadrado (x²) |
randi(min, max) | Número aleatório inteiro |
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))
Funções de Texto
Funções para manipulação de strings (textos).
| Função | Descriçã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 |
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
Funções de Conversão
Convertem entre diferentes tipos de dados.
| Função | Descrição |
|---|---|
CaracPNum(texto) | Converte texto para número |
NumPCarac(numero) | Converte número para texto |
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))