Referencia de pseudolenguaje · VisuAlg

VisuAlg

Esta página reúne una referencia amplia del pseudolenguaje VisuAlg, incluidos los recursos educativos descritos en el manual del autor. Las reglas y funciones presentadas siguen las fuentes oficiales de la versión 3.0.5.2.

Pseudolenguaje VisuAlg

01 · Alcance

Sobre VisuAlg

VisuAlg es un entorno para escribir y ejecutar algoritmos en un pseudolenguaje en portugués, con estructuras didácticas propias. Esta referencia reúne la sintaxis, las funciones y los comandos de apoyo a la enseñanza descritos en el manual del autor para VisuAlg 3.0.5.2.

02 · Organización

Estructura del algoritmo

Un algoritmo empieza con la palabra clave algoritmo y un nombre entre comillas. Las declaraciones globales, el archivo de datos y los subprogramas aparecen antes de inicio; el cuerpo principal termina en fimalgoritmo.

algoritmo "Bienvenida"
var
    nome: caractere
inicio
    escreva("¿Cómo te llamas? ")
    leia(nome)
    escreval("Hola, ", nome, "!")
fimalgoritmo

No se usan llaves para delimitar bloques. Las estructuras tienen palabras de inicio y cierre, como se/fimse y enquanto/fimenquanto. El estilo del pseudolenguaje prevé un comando por línea.

Para usar la extensión de lectura de archivos, arquivo "datos.txt" aparece en la sección de declaraciones, antes del cuerpo principal. Consulta Funciones y comandos auxiliares.

03 · Escritura

Nombres, comentarios y valores

  • Las palabras clave y los nombres de variables no distinguen mayúsculas de minúsculas; por convención, las palabras clave se escriben en minúsculas y sin acentos, como entao y logico.
  • Los nombres empiezan con una letra y pueden continuar con letras, dígitos o guiones bajos. El manual de referencia establece un límite de 30 caracteres.
  • Los comentarios de línea empiezan con // y terminan al final de esa línea. Para comentar varias líneas, cada una necesita su propio marcador.
  • Los literales de texto usan comillas dobles; los valores decimales usan punto. Los valores lógicos son VERDADEIRO y FALSO.
  • Una línea representa un comando; el pseudolenguaje no requiere punto y coma para separar comandos.
// los nombres ignoran mayúsculas y minúsculas
var
    nome_do_aluno: caractere
    nota: real
    aprovado: logico
inicio
    nota <- 8.5
    aprovado <- VERDADEIRO

04 · Datos

Tipos, variables y asignación

TipoUso
inteiroNúmeros enteros.
realNúmeros con parte fraccionaria.
caractereUn carácter o una cadena entre comillas dobles.
logicoValores VERDADEIRO y FALSO.

Las variables se declaran después de var, con los nombres a la izquierda de los dos puntos y el tipo a la derecha. Se pueden declarar varios nombres del mismo tipo, separados por comas. VisuAlg no tiene una palabra clave general para declarar constantes; los valores fijos se escriben como literales o expresiones.

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

El operador de asignación es <-; a la izquierda va una variable o un elemento de vector, y a la derecha una expresión compatible con el tipo destino. Usa = para comparar igualdad.

05 · Expresiones

Operadores y precedencia

GrupoOperadoresSignificado
Asignación<-Guarda el resultado de una expresión en una variable.
Aritméticos unarios+ -Indican signo positivo o negativo.
Potenciación^Eleva la base al exponente.
Aritméticos* / \ MOD % + -Multiplicación, división real, división entera, resto, suma y resta. \ calcula la división entera; MOD y % calculan el resto.
Concatenación+Une expresiones de tipo caractere.
Relacionales= < > <= >= <>Igual, menor, mayor, menor o igual, mayor o igual y distinto.
Lógicosnao e ou xouNegación, conjunción, disyunción y disyunción exclusiva.

En aritmética, ^ tiene la mayor precedencia entre los operadores binarios; *, /, \ y % se evalúan antes que + y -. Los signos unarios tienen mayor precedencia. El manual describe nao como el operador lógico de mayor precedencia.

El manual de referencia no publica una tabla completa de precedencia para todos los operadores lógicos y relacionales. Usa paréntesis para hacer explícitos los grupos y evitar depender de convenciones supuestas.

Las comparaciones de texto no distinguen mayúsculas de minúsculas; por ejemplo, el manual considera iguales "ABC" y "abc".

06 · Interacción

Entrada, salida y formato

leia recibe valores para variables en el orden indicado. escreva muestra expresiones separadas por comas; escreval hace lo mismo y luego cambia de línea.

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

En la salida, valor:ancho reserva un campo con el ancho indicado; real:ancho:decimales también fija la cantidad de decimales. El texto no recibe automáticamente el mismo espaciado que las expresiones numéricas; añade espacios al texto cuando sea necesario.

07 · Decisiones

Condiciones y selección

Usa se ... entao para ejecutar un bloque cuando la expresión lógica sea verdadera. senao es opcional y fimse cierra la estructura; se pueden anidar condiciones.

se nota >= 7 entao
    escreval("Aprobado")
senao
    escreval("Sigue practicando")
fimse

escolha evalúa una expresión una vez y compara su valor con las alternativas de cada caso; outrocaso define la opción predeterminada. fimescolha cierra la selección.

escolha opcao
caso 1, 2
    escreval("Opción inicial")
outrocaso
    escreval("Otra opción")
fimescolha

08 · Bucles

Repetición

VisuAlg documenta tres bucles principales. para cuenta desde el inicio hasta el límite, incluyéndolo, con un paso predeterminado de 1; un paso negativo permite contar hacia atrás. La variable de control debe ser entera.

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 comprueba la condición antes del cuerpo y puede no ejecutarse. repita ... ate comprueba al final y se ejecuta al menos una vez. interrompa sale inmediatamente del bucle actual.

También existe la forma alternativa repita ... fimrepita; en ella, el bucle no tiene una condición final y necesita interrompa para terminar.

09 · Colecciones

Vectores y matrices

Las estructuras indexadas se declaran con vetor y rangos inclusivos. Un vector puede tener una dimensión y una matriz, dos. Los límites son enteros constantes y la sintaxis indica el rango de cada dimensión.

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])

La cantidad de elementos de una dimensión se calcula a partir de sus límites, no del número de la posición final. El primer ejemplo tiene cinco posiciones, indexadas de 1 a 5; el rango también puede empezar en cero u otro entero.

El manual de VisuAlg describe vectores de hasta dos dimensiones. Las matrices se consultan con dos índices entre corchetes, separados por coma.

10 · Reutilización

Procedimientos y funciones

Los procedimientos y las funciones se declaran después de las variables globales y antes de inicio. Un procedimiento no devuelve un valor; una función declara el tipo de retorno después de dos puntos y devuelve el resultado con retorne. Ambos pueden tener variables locales en una sección 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

Los parámetros separados por comas dentro de un grupo comparten el tipo; los distintos grupos se separan con punto y coma. Sin var, el parámetro se pasa por valor; con var, la rutina puede modificar la variable recibida. El manual permite recursión, pero no rutinas anidadas.

Las funciones aparecen como expresiones y los procedimientos como comandos. Una llamada a un procedimiento sin parámetros puede omitir los paréntesis.

11 · Recursos del pseudolenguaje

Funciones y comandos auxiliares

El manual del autor documenta las operaciones de entrada y salida escreva, escreval y leia, además de las funciones matemáticas, trigonométricas y de manipulación de texto que aparecen a continuación. Las firmas y los comportamientos resumen la referencia de VisuAlg.

GrupoNombresUso general
MatemáticasAbs, ArcCos, ArcSen, ArcTan, Cos, CoTan, Exp, GraupRad, Int, Log, LogN, Pi, Quad, RadpGrau, RaizQ, Rand, RandI, Sen, TanValores, conversión de ángulos, parte entera, logaritmos, trigonometría, potencias y números aleatorios.
Texto y caracteresAsc, Carac, Caracpnum, Compr, Copia, Maiusc, Minusc, Numpcarac, PosConvertir caracteres y números, medir, extraer, cambiar mayúsculas/minúsculas y localizar texto.

Firmas y resultados de las funciones

Las funciones pueden usarse en expresiones o asignarse a variables. Pi y Rand no reciben parámetros; los demás nombres indican la cantidad y el orden de los argumentos.

GrupoFirmaResultado
MatemáticasAbs(expr), Int(expr), Quad(expr), RaizQ(expr), Exp(base, expoente), Log(expr), LogN(expr), PiValor absoluto, parte entera, cuadrado, raíz cuadrada, potencia, logaritmo decimal o natural y constante π.
TrigonometríaCos(expr), CoTan(expr), Sen(expr), Tan(expr), ArcCos(expr), ArcSen(expr), ArcTan(expr)Calculan razones trigonométricas y sus arcos; los ángulos de entrada y salida se expresan en radianes.
Conversión angularGraupRad(grados), RadpGrau(radianes)Convierten grados a radianes y radianes a grados.
Valores aleatoriosRand, RandI(limite)Rand devuelve un real desde 0 inclusive hasta 1 exclusive; RandI devuelve un entero desde 0 inclusive hasta el límite exclusive.
Texto y caracteresAsc(caracter), Carac(codigo), Caracpnum(cadena), Numpcarac(numero)Obtienen el código ASCII del primer carácter, convierten un código a carácter, texto a número y número a texto.
Texto y caracteresCompr(cadena), Copia(cadena, inicio, cantidad), Pos(subcadena, cadena)Miden texto, copian una cantidad de caracteres o buscan la primera aparición. Las posiciones empiezan en 1; Pos devuelve 0 si no encuentra el fragmento.
Texto y caracteresMaiusc(cadena), Minusc(cadena)Devuelven el texto en mayúsculas o minúsculas.
algoritmo "Ejemplos de funciones"
inicio
    escreval(abs(2 - 9))
    escreval(raizq(9))
    escreval(pos("Brasil", "Brasil e Portugal"))
fimalgoritmo

Salida: 7, 3 y 1, cada resultado en una línea.

La documentación de VisuAlg también describe comandos de apoyo para la enseñanza y el entorno:

  • aleatorio [on] activa la generación que usa leia; sin rango explícito, los números van de 0 a 100 y los caracteres se generan como cadenas de cinco letras mayúsculas. aleatorio maximo usa el rango inclusivo de 0 al límite; aleatorio minimo, maximo define ambos límites inclusivos. Los dos deben ser constantes numéricas, no expresiones; si se indican al revés, VisuAlg los intercambia. aleatorio off desactiva la generación.
  • arquivo "ruta" asocia lecturas con un archivo de texto y aparece en la sección de declaraciones.
  • timer on activa el retraso predeterminado de 500 ms; timer <tiempo> define un entero constante en milisegundos, de 0 a 10.000, y los valores fuera del rango se limitan. Puede haber varios comandos timer en la sección de comandos. timer off desactiva el retraso.
  • pausa interrumpe la ejecución para inspeccionarla; debug condicion hace una pausa cuando la condición es verdadera.
  • eco on|off controla si los datos de entrada se repiten en la salida; cronometro on|off mide el tiempo transcurrido.
  • limpatela limpia la pantalla DOS simulada de VisuAlg, pero no borra el panel de salida de la ventana principal.

12 · Ejemplo

Programa completo

Este ejemplo lee tres notas, calcula el promedio y usa una función para clasificar el resultado:

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

inicio
    escreval("Ingresa tres notas:")
    leia(nota1, nota2, nota3)
    media <- (nota1 + nota2 + nota3) / 3

    se aprovado(media) entao
        escreval("Aprobado con promedio ", media:5:2)
    senao
        escreval("Sigue practicando: promedio ", media:5:2)
    fimse
fimalgoritmo

13 · Consejos de lectura

Errores frecuentes y cómo evitarlos

  • Usar el símbolo equivocado para asignar: en VisuAlg, <- asigna un valor; = compara valores en una condición.
  • Dejar un bloque sin cerrar: cada estructura debe terminar con su marcador correspondiente, como fimse, fimpara, fimfuncao o fimalgoritmo.
  • Confundir índice y cantidad: los vectores usan los límites declarados; Copia(cadena, inicio, cantidad) cuenta desde la posición 1 y el tercer argumento indica cuántos caracteres copiar.
  • Esperar posiciones desde cero de Pos: las posiciones empiezan en 1 y el resultado 0 indica que el fragmento no existe en la cadena.
  • Suponer que el límite aleatorio está incluido: RandI(limite) sortea desde cero hasta antes del límite. El comando aleatorio, en cambio, define rangos inclusivos para los datos leídos.
  • Tratar los comandos del entorno como funciones: aleatorio, timer y debug son comandos descritos por VisuAlg; no son llamadas que devuelvan un valor.
Al investigar un error: comprueba el orden de las declaraciones, el tipo de variable, los límites del vector y el cierre de los bloques. En condiciones, distingue = (comparación) de <- (asignación).

14 · Lectura adicional

Referencias de VisuAlg

El manual presenta la sintaxis y los recursos de enseñanza de VisuAlg. Consulta las referencias para confirmar las firmas y los detalles de ejecución de los comandos.

Vuelve al Manual de Potoo IDE

Consulta otras secciones del Manual.

Abrir el Manual