Referência de pseudolinguagem · VisuAlg

VisuAlg

Esta página reúne uma referência ampla da pseudolinguagem VisuAlg, incluindo os recursos de ensino descritos no manual do autor. As regras e funções apresentadas seguem as fontes oficiais da versão 3.0.5.2.

Pseudolinguagem VisuAlg

01 · Escopo

Sobre VisuAlg

VisuAlg é um ambiente para escrever e executar algoritmos em uma pseudolinguagem em português, com estruturas didáticas próprias. Esta referência reúne a sintaxe, as funções e os comandos de apoio ao ensino descritos no manual do autor para VisuAlg 3.0.5.2.

02 · Organização

Estrutura do algoritmo

Um algoritmo começa com a palavra-chave algoritmo e um nome entre aspas. Declarações globais, arquivo de dados e subprogramas aparecem antes de inicio; o corpo principal termina em fimalgoritmo.

algoritmo "Boas-vindas"
var
    nome: caractere
inicio
    escreva("Qual é o seu nome? ")
    leia(nome)
    escreval("Olá, ", nome, "!")
fimalgoritmo

Não há chaves para delimitar blocos. As estruturas usam palavras de abertura e encerramento, como se/fimse e enquanto/fimenquanto. O estilo da pseudolinguagem prevê um comando por linha.

Quando se usa a extensão de leitura de arquivo, arquivo "dados.txt" aparece na área de declarações, antes do corpo principal. O detalhe está na seção Funções e comandos auxiliares.

03 · Escrita

Nomes, comentários e valores

  • Palavras-chave e nomes de variáveis não diferenciam maiúsculas de minúsculas; por convenção, escreva as palavras-chave em minúsculas e sem acentos, como entao e logico.
  • Nomes começam com uma letra e podem continuar com letras, dígitos ou sublinhados. O manual de referência estabelece o limite de 30 caracteres.
  • Comentários de linha começam com // e terminam no fim da linha. Para comentar várias linhas, cada linha recebe seu próprio marcador.
  • Literais de texto usam aspas duplas; valores decimais usam ponto. Os valores lógicos são VERDADEIRO e FALSO.
  • Uma linha representa um comando; a pseudolinguagem não depende de ponto e vírgula para separar comandos.
// nomes ignoram diferenças entre maiúsculas e minúsculas
var
    nome_do_aluno: caractere
    nota: real
    aprovado: logico
inicio
    nota <- 8.5
    aprovado <- VERDADEIRO

04 · Dados

Tipos, variáveis e atribuição

TipoUso
inteiroNúmeros inteiros.
realNúmeros com parte fracionária.
caractereUm caractere ou uma cadeia de texto entre aspas duplas.
logicoValores VERDADEIRO e FALSO.

As variáveis são declaradas após var, com os nomes à esquerda dos dois-pontos e o tipo à direita. É possível declarar vários nomes do mesmo tipo separados por vírgulas. VisuAlg não usa uma palavra-chave geral para declarar constantes; valores fixos aparecem como literais ou em expressões.

algoritmo "Declaracoes"
var
    tentativas, acertos: inteiro
    media: real
    nome: caractere
    terminou: logico
inicio
    tentativas <- 0
    media <- 7.25
    nome <- "Lia"
    terminou <- FALSO
fimalgoritmo

O operador de atribuição é <-; à esquerda fica uma variável ou um elemento de vetor, e à direita uma expressão compatível com o tipo de destino. Use = para comparar igualdade.

05 · Expressões

Operadores e precedência

GrupoOperadoresSignificado
Atribuição<-Armazena o resultado de uma expressão em uma variável.
Aritméticos unários+ -Indicam sinal positivo ou negativo.
Potenciação^Eleva a base ao expoente.
Aritméticos* / \ MOD % + -Multiplicação, divisão real, divisão inteira, resto, adição e subtração. \ calcula divisão inteira; MOD e % calculam o resto.
Concatenação+Une expressões do tipo caractere.
Relacionais= < > <= >= <>Igual, menor, maior, menor ou igual, maior ou igual e diferente.
Lógicosnao e ou xouNegação, conjunção, disjunção e disjunção exclusiva.

Na aritmética, ^ tem maior precedência entre os operadores binários; *, /, \ e % vêm antes de + e -. Os sinais unários têm precedência maior. O manual descreve nao como o operador lógico de maior precedência.

O manual de referência não fornece uma tabela completa de precedência para todos os operadores lógicos e relacionais. Use parênteses para explicitar agrupamentos e evitar que uma expressão dependa de convenções presumidas.

Comparações de textos não diferenciam maiúsculas de minúsculas; por exemplo, o manual apresenta "ABC" como igual a "abc".

06 · Interação

Entrada, saída e formatação

leia recebe valores para variáveis na ordem informada. escreva apresenta expressões separadas por vírgulas; escreval faz o mesmo e pula para a linha seguinte.

algoritmo "Formatacao"
var
    quantidade: inteiro
    preco: real
inicio
    escreva("Quantidade: ")
    leia(quantidade)
    preco <- quantidade * 2.5
    escreval("Total: ", preco:8:2)
fimalgoritmo

Na saída, valor:largura reserva um campo com largura indicada e real:largura:casas também define casas decimais. Textos não recebem automaticamente o mesmo espaçamento que expressões numéricas; inclua espaços no próprio texto quando precisar deles.

07 · Decisões

Condições e seleção

Use se ... entao para executar um bloco quando a expressão lógica for verdadeira. senao é opcional e fimse fecha a estrutura; condições podem ser aninhadas.

se nota >= 7 entao
    escreval("Aprovado")
senao
    escreval("Continue praticando")
fimse

escolha avalia uma expressão uma vez, compara seu valor com as alternativas de cada caso e permite uma opção padrão com outrocaso. fimescolha fecha a seleção.

escolha opcao
caso 1, 2
    escreval("Opção inicial")
outrocaso
    escreval("Outra opção")
fimescolha

08 · Laços

Repetição

VisuAlg documenta três laços principais. para conta a partir do valor inicial até o limite, incluindo-o, com passo padrão 1; um passo negativo permite contagem decrescente. A variável de controle é inteira.

para indice de 1 ate 5 faca
    escreva(indice:3)
fimpara

enquanto quantidade > 0 faca
    quantidade <- quantidade - 1
fimenquanto

repita
    tentativas <- tentativas + 1
ate tentativas = 3

enquanto verifica a condição antes do corpo e pode executar zero vezes. repita ... ate testa ao final e executa ao menos uma vez. interrompa sai imediatamente do laço atual.

Há também a forma alternativa repita ... fimrepita; nessa forma, o laço não tem uma condição final e precisa de interrompa para terminar.

09 · Coleções

Vetores e matrizes

Estruturas indexadas são declaradas com vetor e intervalos inclusivos. Um vetor pode ter uma dimensão; uma matriz pode ter duas. Os limites são inteiros constantes e a sintaxe informa o intervalo de cada dimensão.

var
    notas: vetor[1..5] de real
    tabuleiro: vetor[0..2, 0..2] de caractere
inicio
    notas[1] <- 9.5
    tabuleiro[0, 1] <- "X"
    escreval(notas[1])
    escreval(tabuleiro[0, 1])

O número de elementos de uma dimensão é calculado pelos limites, não pelo número escrito na posição final. O primeiro exemplo tem cinco posições, indexadas de 1 a 5; os limites podem começar em zero ou em outro inteiro.

O manual do VisuAlg descreve vetores de até duas dimensões. Matrizes são acessadas com dois índices entre colchetes, separados por vírgula.

10 · Reuso

Procedimentos e funções

Procedimentos e funções são declarados depois das variáveis globais e antes de inicio. Um procedimento não retorna valor; uma função declara o tipo de retorno depois de dois-pontos e devolve um resultado com retorne. Ambos podem ter variáveis locais em uma seção var.

algoritmo "Rotinas"
var
    resultado: inteiro
funcao dobro(valor: inteiro): inteiro
inicio
    retorne valor * 2
fimfuncao

procedimento somar(valor: inteiro; var total: inteiro)
inicio
    total <- total + valor
fimprocedimento

inicio
    resultado <- dobro(4)
    somar(3, resultado)
    escreval(resultado)
fimalgoritmo

Parâmetros separados por vírgulas dentro de um grupo compartilham o tipo; grupos de parâmetros diferentes são separados por ponto e vírgula. Sem var, o parâmetro é passado por valor; com var, a rotina pode alterar a variável recebida. O manual descreve recursão e não permite rotinas aninhadas.

As funções aparecem como expressões e os procedimentos como comandos. Uma chamada de procedimento pode omitir parênteses quando não há parâmetros.

11 · Recursos da pseudolinguagem

Funções e comandos auxiliares

O manual do autor documenta as operações de entrada e saída escreva, escreval e leia, além das funções matemáticas, trigonométricas e de manipulação de texto listadas abaixo. As assinaturas e os comportamentos resumem a referência de VisuAlg.

GrupoNomesUso geral
MatemáticaAbs, ArcCos, ArcSen, ArcTan, Cos, CoTan, Exp, GraupRad, Int, Log, LogN, Pi, Quad, RadpGrau, RaizQ, Rand, RandI, Sen, TanValores, conversões angulares, parte inteira, logaritmos, trigonometria, potência e números aleatórios.
Texto e caracteresAsc, Carac, Caracpnum, Compr, Copia, Maiusc, Minusc, Numpcarac, PosConverter caracteres e números, medir, recortar, alterar caixa e localizar partes de texto.

Assinaturas e resultados das funções

As funções podem ser usadas em expressões ou atribuídas a variáveis. Pi e Rand não recebem parâmetros; os demais nomes abaixo mostram a quantidade e a ordem dos argumentos.

GrupoAssinaturaResultado
MatemáticaAbs(expr), Int(expr), Quad(expr), RaizQ(expr), Exp(base, expoente), Log(expr), LogN(expr), PiValor absoluto, parte inteira, quadrado, raiz quadrada, potência, logaritmo decimal ou natural e constante π.
TrigonometriaCos(expr), CoTan(expr), Sen(expr), Tan(expr), ArcCos(expr), ArcSen(expr), ArcTan(expr)Calculam razões trigonométricas e seus arcos; os ângulos de entrada e saída são expressos em radianos.
Conversão angularGraupRad(graus), RadpGrau(radianos)Convertem graus para radianos e radianos para graus.
SorteioRand, RandI(limite)Rand devolve real de 0 inclusive a 1 exclusive; RandI devolve inteiro de 0 inclusive até o limite exclusive.
Texto e caracteresAsc(caracter), Carac(codigo), Caracpnum(cadeia), Numpcarac(numero)Obtêm o código ASCII do primeiro caracter, convertem um código em caracter, texto em número e número em texto.
Texto e caracteresCompr(cadeia), Copia(cadeia, inicio, quantidade), Pos(subcadeia, cadeia)Medem o texto, copiam uma quantidade de caracteres ou procuram a primeira ocorrência. Posições começam em 1; Pos devolve 0 quando não encontra o trecho.
Texto e caracteresMaiusc(cadeia), Minusc(cadeia)Devolvem o texto em maiúsculas ou minúsculas.
algoritmo "Exemplos de funções"
inicio
    escreval(abs(2 - 9))
    escreval(raizq(9))
    escreval(pos("Brasil", "Brasil e Portugal"))
fimalgoritmo

Saída: 7, 3 e 1, cada resultado em uma linha.

A documentação de VisuAlg também descreve comandos de apoio ao ensino e ao ambiente:

  • aleatorio [on] ativa a geração usada por leia; sem faixa explícita, números vão de 0 a 100 e caracteres viram textos aleatórios de cinco letras maiúsculas. aleatorio maximo usa a faixa inclusiva de 0 ao limite; aleatorio minimo, maximo define os dois limites inclusivos. Ambos devem ser constantes numéricas, não expressões; se vierem invertidos, o VisuAlg troca a ordem. aleatorio off encerra a geração.
  • arquivo "caminho" associa leituras a um arquivo-texto e fica na área de declarações.
  • timer on ativa o atraso padrão de 500 ms; timer <tempo> define um valor inteiro constante em milissegundos, de 0 a 10.000, e valores fora dessa faixa são limitados. Pode haver vários comandos timer na área de comandos. timer off desativa o atraso.
  • pausa interrompe para inspeção; debug condicao faz a pausa quando a condição for verdadeira.
  • eco on|off controla a repetição dos dados de entrada na saída; cronometro on|off mede tempo decorrido.
  • limpatela limpa a tela de DOS simulada pelo VisuAlg.

12 · Exemplo

Programa completo

Este exemplo lê três notas, calcula a média e usa uma função para classificar o resultado:

algoritmo "Resultado da turma"
var
    nota1, nota2, nota3, media: real
funcao aprovado(media: real): logico
inicio
    retorne media >= 7
fimfuncao

inicio
    escreval("Digite três notas:")
    leia(nota1, nota2, nota3)
    media <- (nota1 + nota2 + nota3) / 3

    se aprovado(media) entao
        escreval("Aprovado com média ", media:5:2)
    senao
        escreval("Estude mais: média ", media:5:2)
    fimse
fimalgoritmo

13 · Dicas de leitura

Erros frequentes e como evitá-los

  • Usar o sinal errado para atribuir: em VisuAlg, <- atribui um valor; = compara valores em uma condição.
  • Deixar um bloco sem encerramento: cada estrutura deve terminar com o marcador correspondente, como fimse, fimpara, fimfuncao ou fimalgoritmo.
  • Confundir índice com quantidade: vetores usam os limites declarados; Copia(cadeia, inicio, quantidade) começa a contar posições em 1 e o terceiro argumento é a quantidade de caracteres.
  • Esperar que Pos devolva zero-based: as posições começam em 1 e o resultado 0 indica que o trecho não foi encontrado.
  • Contar com um limite aleatório inclusivo: RandI(limite) sorteia de zero até antes do limite. Já o comando aleatorio define faixas inclusivas para os valores lidos.
  • Tratar comandos de ambiente como funções: aleatorio, timer e debug são comandos descritos pelo VisuAlg, não chamadas que devolvem um valor.
Ao investigar um erro: confira a ordem das declarações, o tipo da variável, os limites do vetor e se todos os blocos foram fechados. Em condições, diferencie = (comparação) de <- (atribuição).

14 · Leitura adicional

Referências de VisuAlg

O manual apresenta a sintaxe e os recursos de ensino de VisuAlg. Consulte as referências para confirmar as assinaturas e os detalhes de execução dos comandos.

Volte ao Manual do Potoo IDE

Consulte outras seções do Manual.

Abrir o Manual