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
entaoelogico. - 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
VERDADEIROeFALSO. - 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
| Tipo | Uso |
|---|---|
inteiro | Números inteiros. |
real | Números com parte fracionária. |
caractere | Um caractere ou uma cadeia de texto entre aspas duplas. |
logico | Valores 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
| Grupo | Operadores | Significado |
|---|---|---|
| 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ógicos | nao e ou xou | Negaçã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.
| Grupo | Nomes | Uso geral |
|---|---|---|
| Matemática | Abs, ArcCos, ArcSen, ArcTan, Cos, CoTan, Exp, GraupRad, Int, Log, LogN, Pi, Quad, RadpGrau, RaizQ, Rand, RandI, Sen, Tan | Valores, conversões angulares, parte inteira, logaritmos, trigonometria, potência e números aleatórios. |
| Texto e caracteres | Asc, Carac, Caracpnum, Compr, Copia, Maiusc, Minusc, Numpcarac, Pos | Converter 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.
| Grupo | Assinatura | Resultado |
|---|---|---|
| Matemática | Abs(expr), Int(expr), Quad(expr), RaizQ(expr), Exp(base, expoente), Log(expr), LogN(expr), Pi | Valor absoluto, parte inteira, quadrado, raiz quadrada, potência, logaritmo decimal ou natural e constante π. |
| Trigonometria | Cos(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 angular | GraupRad(graus), RadpGrau(radianos) | Convertem graus para radianos e radianos para graus. |
| Sorteio | Rand, RandI(limite) | Rand devolve real de 0 inclusive a 1 exclusive; RandI devolve inteiro de 0 inclusive até o limite exclusive. |
| Texto e caracteres | Asc(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 caracteres | Compr(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 caracteres | Maiusc(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 porleia; sem faixa explícita, números vão de 0 a 100 e caracteres viram textos aleatórios de cinco letras maiúsculas.aleatorio maximousa a faixa inclusiva de 0 ao limite;aleatorio minimo, maximodefine os dois limites inclusivos. Ambos devem ser constantes numéricas, não expressões; se vierem invertidos, o VisuAlg troca a ordem.aleatorio offencerra a geração.arquivo "caminho"associa leituras a um arquivo-texto e fica na área de declarações.timer onativa 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 comandostimerna área de comandos.timer offdesativa o atraso.pausainterrompe para inspeção;debug condicaofaz a pausa quando a condição for verdadeira.eco on|offcontrola a repetição dos dados de entrada na saída;cronometro on|offmede tempo decorrido.limpatelalimpa 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,fimfuncaooufimalgoritmo. - 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
Posdevolva zero-based: as posições começam em 1 e o resultado0indica 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 comandoaleatoriodefine faixas inclusivas para os valores lidos. - Tratar comandos de ambiente como funções:
aleatorio,timeredebugsão comandos descritos pelo VisuAlg, não chamadas que devolvem um valor.
= (comparação) de <- (atribuição).14 · Leitura adicional
Referências de VisuAlg
- Manual da pseudolinguagem distribuído pelo autor do VisuAlg, com sintaxe, tipos, operadores, comandos, rotinas e extensões de ensino; a referência de comandos da versão 3.0.5.2 detalha também
aleatorioelimpatela. - Catálogo das funções numéricas e de texto, com assinaturas e exemplos de resultados.
- Cópia de consulta do manual em repositório universitário.
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.