Referencia · G-Portugol

G-Portugol

Esta referencia organiza las reglas del pseudolenguaje G-Portugol a partir del manual oficial: estructura de algoritmos, variables, matrices, expresiones, control de flujo, funciones y comandos de entrada y salida. Los ejemplos conservan las palabras reservadas en portugués.

Referencia G-PortugolSintaxis Palabras reservadas en portugués

01 · Visión general

Sobre G-Portugol

G-Portugol organiza algoritmos en portugués mediante declaraciones explícitas, instrucciones imperativas y bloques delimitados. Su sintaxis reúne formas habituales en materiales de lógica, como algoritmo, variáveis, início, se y para.

Esta página documenta el pseudolenguaje según el manual mantenido por el proyecto G-Portugol. Separa las reglas de escritura de las instrucciones y opciones de la herramienta GPT, que se describen en una sección propia. La referencia oficial también plantea como objetivo adaptar el vocabulario a distintas prácticas de enseñanza; GPT no documenta un mecanismo para configurar esas formas, por lo que esta página recoge la sintaxis estándar publicada por el proyecto.

Alcance: esta referencia describe la sintaxis documentada por el proyecto. No significa que la ejecución de G-Portugol ya esté integrada en Potoo IDE.

02 · Organización

Estructura del algoritmo

Un archivo comienza con la declaración del algoritmo, puede declarar variables globales, contiene el bloque principal y termina con las declaraciones de funciones. La declaración de variables es opcional; cuando se usa, aparece antes de início y contiene al menos una declaración. Los ejemplos oficiales usan la extensión .gpt.

algoritmo exemplo;

variáveis
    nome : literal;
    idade : inteiro;
fim-variáveis

início
    nome := "Ana";
    idade := 16;
    imprima(nome, " tem ", idade, " anos.");
fim

função dobro(valor:inteiro) : inteiro
    retorne valor * 2;
fim

algoritmo requiere un identificador y punto y coma; ese nombre identifica el algoritmo en el archivo, pero no cambia su ejecución. El bloque principal empieza con início y termina con fim; las funciones se declaran después. Las instrucciones simples terminan en punto y coma; los bloques se cierran con su delimitador, sin punto y coma después. La indentación no es obligatoria, pero ayuda a visualizar la estructura. El bloque principal también puede terminar antes con retorne seguido de un entero, que actúa como código de salida.

03 · Escritura

Identificadores, comentarios y literales

El pseudolenguaje distingue mayúsculas y minúsculas. Las palabras reservadas deben conservar la grafía y los acentos definidos, como variáveis, início, então, faça y função. Los identificadores —nombres de variables, algoritmos y funciones— comienzan con una letra ASCII (A–Z o a–z) o un guion bajo y pueden continuar con letras ASCII, números y guiones bajos.

// Comentario de una línea.
/* Comentario
   de varias líneas. */

algoritmo dados;
variáveis
    nome_completo : literal;
    inicial : caractere;
    codigo : inteiro;
fim-variáveis
início
    nome_completo := "João";
    inicial := 'J';
    codigo := 0x2A;
fim

El conjunto estándar de palabras reservadas es algoritmo, variáveis, fim-variáveis, início, fim, inteiro, real, caractere, literal, lógico, verdadeiro, falso, matriz, inteiros, reais, caracteres, literais, lógicos, se, então, senão, fim-se, enquanto, faça, fim-enquanto, repita, até, para, de, passo, fim-para, função, retorne, ou, e y não.

Los enteros aceptan bases decimal, hexadecimal (0x/0X), octal (0c/0C) y binaria (0b/0B). Los reales usan punto decimal, con cifras a ambos lados. Los caracteres se escriben entre comillas simples; '' representa el carácter nulo. Los escapes documentados para caracteres incluyen \n, \r y \\. Los textos usan comillas dobles, admiten escapes y ocupan una sola línea física del código.

04 · Datos

Tipos y variables

El manual oficial documenta cinco tipos primitivos. La declaración indica uno o varios nombres, dos puntos, el tipo y punto y coma.

TipoEjemploUso
inteiro42Números enteros.
real3.5Números con parte fraccionaria.
caractere'A'Un carácter.
literal"Olá"Una secuencia de caracteres.
lógicoverdadeiroUn valor lógico, verdadeiro o falso.
variáveis
    quantidade, tentativas : inteiro;
    preco : real;
    disponivel : lógico;
fim-variáveis

Las variables declaradas comienzan con valor cero o nulo, según el tipo. La sintaxis no declara constantes. Los tipos compuestos definidos por el usuario, como los registros, no están documentados.

05 · Colecciones

Vectores y matrices

Los conjuntos homogéneos usan la palabra matriz, seguida de una dimensión entre corchetes por cada eje, de y el nombre plural del tipo primitivo. Cada dimensión es un literal entero positivo; una sola dimensión forma un vector.

variáveis
    notas : matriz[5] de reais;
    tabuleiro : matriz[3][3] de caracteres;
fim-variáveis

início
    notas[0] := 8.5;
    tabuleiro[1][2] := 'X';
    imprima(notas[0]);
fim

Los índices empiezan en cero. Por eso, el vector valores, declarado con tamaño 5, tiene posiciones de 0 a 4; acceder a valores[5] excede sus límites. Cada elemento recibe la inicialización predeterminada del tipo. Las matrices que se pasan a funciones se copian por valor, según la referencia.

06 · Expresiones

Asignación y operadores

La asignación usa :=. A la izquierda puede aparecer una variable primitiva o una posición indexada de matriz; a la derecha, una expresión compatible con el tipo del destino. No se puede asignar una matriz completa ni pasarla a imprima como un solo valor.

OrdenOperadoresOperación
1 · menorou, ||Disyunción lógica.
2e, &&Conjunción lógica.
3|OR bit a bit.
4^OR exclusivo bit a bit.
5&AND bit a bit.
6=, <>Igualdad y desigualdad.
7>, >=, <, <=Comparaciones relacionales.
8+, -Suma y resta.
9*, /, %Multiplicación, división y resto.
10 · mayor+, -, ~, não, ()Signos unarios, negación bit a bit, negación lógica y agrupación.
resultado := (a + b) * 2;
se ativo e tentativas < 3 então
    imprima("Pode continuar.");
fim-se

La tabla sigue el orden documentado, de menor a mayor precedencia. Los paréntesis hacen explícito el orden deseado.

07 · Interacción

Entrada y salida

leia() no recibe argumentos: lee una línea de la entrada estándar, hasta el salto de línea, y convierte el contenido al tipo primitivo esperado por el contexto. Puede aparecer sola a la derecha de una asignación, en una condición o en un índice de matriz; la referencia no permite combinarla con otros operandos, como en total := base + leia();. imprima() recibe al menos un valor primitivo, los convierte en texto, los concatena en el orden indicado sin separadores y añade un salto de línea al final.

algoritmo saudacao;
variáveis
    nome : literal;
    idade : inteiro;
fim-variáveis
início
    imprima("Qual é o seu nome?");
    nome := leia();
    imprima("Qual é a sua idade?");
    idade := leia();
    imprima("Olá, ", nome, "! Você tem ", idade, " anos.");
fim

No hay concatenación implícita de textos en líneas físicas distintas. Para imprimir juntos valores de diferentes tipos, pásalos como argumentos separados a imprima.

08 · Decisiones

Condicionales

se evalúa una expresión e inicia un bloque; senão es opcional. Todo bloque condicional termina con fim-se. Los paréntesis alrededor de la condición son opcionales. El manual documenta esta estructura como forma de selección del pseudolenguaje; no presenta un comando separado para selección múltiple.

se nota >= 7 então
    imprima("Aprovado");
senão
    imprima("Precisa recuperar");
fim-se

Cualquier expresión puede evaluarse como condición: cero, texto vacío y el carácter nulo son falsos; los valores numéricos distintos de cero y los textos no vacíos son verdaderos. Los valores lógicos también se escriben como verdadeiro y falso.

09 · Repetición

Bucles

G-Portugol documenta tres estructuras de repetición: enquanto, repita y para. Cada estructura cierra el bloque con su propia palabra reservada.

enquanto quantidade > 0 faça
    quantidade := quantidade - 1;
fim-enquanto

repita
    quantidade := quantidade + 1;
até quantidade = 3;

para i de 1 até 5 faça
    imprima(i);
fim-para

enquanto comprueba la condición antes de cada vuelta; el cuerpo puede no ejecutarse. repita la comprueba después del cuerpo y se ejecuta al menos una vez. Los límites de para son inclusivos, el paso predeterminado es 1 y un paso negativo recorre la secuencia en orden descendente.

para i de 10 até 0 passo -2 faça
    imprima(i);
fim-para

No se documentan comandos break ni continue; el control de los bucles debe expresarse mediante la condición y las variables implicadas.

10 · Reutilización

Funciones y retorno

Una función se declara después del bloque principal. Los parámetros siguen la forma nombre:tipo; el tipo de retorno es opcional. Las declaraciones locales, si se necesitan, van antes del bloque início.

função fatorial(valor:inteiro) : inteiro
    resultado : inteiro;
    contador : inteiro;
início
    resultado := 1;
    para contador de 1 até valor faça
        resultado := resultado * contador;
    fim-para
    retorne resultado;
fim

retorne devuelve una expresión compatible con el tipo declarado o, en una función sin tipo de retorno, finaliza la función sin valor. Las funciones pueden llamarse a sí mismas. Los parámetros y las matrices se pasan por valor; no hay funciones anidadas ni parámetros variables. Los valores de retorno son primitivos.

11 · Ejemplo integrado

Contar y clasificar números

Este programa lee un límite y recorre los enteros desde uno hasta ese valor, indicando si cada uno es par o impar:

algoritmo contagem;
variáveis
    limite, numero : inteiro;
fim-variáveis

início
    imprima("Digite o limite:");
    limite := leia();

    para numero de 1 até limite faça
        se numero % 2 = 0 então
            imprima(numero, " é par.");
        senão
            imprima(numero, " é ímpar.");
        fim-se
    fim-para
fim

El ejemplo combina declaración, lectura, asignación, resto, comparación, decisión y un bucle con límite inclusivo.

12 · Reglas importantes

Comportamiento y límites

  • Las palabras reservadas y los identificadores distinguen mayúsculas y minúsculas; los acentos forman parte de las palabras reservadas, pero no se aceptan en identificadores.
  • Los tipos primitivos pueden formar vectores y matrices homogéneos de una o más dimensiones. Las matrices se inicializan por elemento y se pasan a funciones por valor; no se asignan ni se devuelven como un conjunto.
  • Los tipos inteiro, real, lógico y caractere son compatibles en operaciones numéricas; literal no participa en operaciones aritméticas. No hay conversión explícita de tipos. Los operandos compatibles se promocionan cuando no hay pérdida; una conversión al asignar puede truncar un real destinado a entero. Por ejemplo, 5 / 2 es una división entera, mientras que 5.0 / 2 produce un resultado real.
  • Las comparaciones de igualdad entre valores reales pueden variar debido a la representación numérica, especialmente entre la ejecución interpretada, compilada y la traducción.
  • Los literales de texto se comparan distinguiendo mayúsculas y minúsculas. La comparación de orden entre literales considera su cantidad de caracteres, según la referencia oficial.
  • Los índices de las matrices empiezan en cero. GPT comprueba los límites durante la ejecución interpretada; el manual no describe esa comprobación para los demás modos.
  • GPT proporciona dos funciones internas para entrada y salida: leia() e imprima(...). La referencia no documenta una instrucción propia para incluir bibliotecas estándar.

13 · Herramienta de referencia

El programa GPT

El manual oficial describe GPT como la herramienta del proyecto para analizar y ejecutar archivos de G-Portugol. Las opciones siguientes pertenecen a ese programa y no describen comandos disponibles en la interfaz de Potoo IDE.

OpciónFunción descrita
-iInterpreta y ejecuta el algoritmo.
-o archivoCompila y guarda un ejecutable.
-t archivoGenera código fuente en C.
-s archivoGenera código Assembly.
-dAñade consejos al informe de errores.
-hMuestra la ayuda del programa.

La forma general es gpt [opciones] archivos.... Si se indican varios archivos, el primero contiene la declaración del algoritmo y el bloque principal; los demás aportan código complementario y no deben repetir la declaración del algoritmo, el bloque global de variables ni el bloque principal. La variable de entorno GPT_INCLUDE también puede indicar archivos adicionales: sus rutas se separan con : en sistemas Unix y con ; en Windows. El manual espera resultados equivalentes entre la interpretación, la compilación y la traducción, con la salvedad de que la comprobación de límites de las matrices ocurre en modo interpretado. La generación de ejecutables con -o se limita a máquinas x86 de 32 bits; para otras arquitecturas, el manual describe generar C con -t y compilarlo con la herramienta del sistema.

14 · Lectura complementaria

Referencias

15 · Comparación

Diferencias con Portugol Studio 2.0

G-Portugol y Portugol Studio 2.0 son pseudolenguajes distintos. Comparten el objetivo de expresar algoritmos en portugués, pero sus programas no son intercambiables: difieren en la estructura, las palabras reservadas, los tipos, los operadores y las reglas de ejecución.

AspectoG-PortugolPortugol Studio 2.0
Estructuraalgoritmo nombre;, bloque principal início ... fim y funciones después.programa { ... } con la función de entrada funcao inicio().
EscrituraPalabras reservadas con acentos, como variáveis, início y função.Palabras clave sin acentos, como funcao, senao y nao.
Declaraciones y tiposnombre : inteiro; tipos inteiro, real, caractere, literal y lógico. No documenta const.inteiro nombre; usa caracter, cadeia, logico y vazio, además de declaraciones con const.
Asignación y comparación:= asigna; = y <> comparan.= asigna; == y != comparan. También documenta asignaciones compuestas y ++/--.
Vectores y matricesmatriz[filas][columnas] de inteiros; admite una o más dimensiones y pasa los conjuntos por valor.inteiro tabla[filas][columnas]; la referencia documenta vectores, matrices bidimensionales, inicializadores y parámetros por referencia con &.
Control de flujoUsa fim-se, fim-enquanto, repita ... até y para ... de ... até ... passo; no documenta selección múltiple ni interrupción de bucles.Usa bloques entre llaves, escolha/caso, faca ... enquanto, un bucle para de tres campos y pare.
Funcionesfunção dobro(valor:inteiro): inteiro; parámetros por valor, solo puede devolver valores de tipos primitivos y no admite funciones anidadas.funcao inteiro dobro(inteiro valor); puede usar & para pasar un parámetro por referencia y vazio para indicar ausencia de retorno.
Entrada y salidaleia() devuelve un valor convertido según el contexto; imprima(...) concatena y añade un salto de línea.leia(variable) asigna la entrada a una variable; escreva(...) no añade un salto de línea automáticamente.
BibliotecasDocumenta leia e imprima como funciones internas; no describe una instrucción propia para incluir bibliotecas.Incluye módulos con inclua biblioteca y ofrece bibliotecas estándar como Matematica, Texto y Tipos.
ExpresionesCualquier expresión puede usarse como condición; cero y los valores vacíos son falsos. La precedencia se presenta explícitamente.Las condiciones se documentan con valores lógicos; la gramática no ofrece una tabla completa de precedencia, por lo que los paréntesis permiten fijar el orden.

El mismo ejercicio, dos sintaxis

El ejemplo comprueba la paridad de un número. El algoritmo es el mismo; los delimitadores, los operadores y la entrada y salida siguen las reglas de cada pseudolenguaje.

G-Portugol

algoritmo paridade;
variáveis
    numero : inteiro;
fim-variáveis
início
    imprima("Digite um inteiro:");
    numero := leia();
    se numero % 2 = 0 então
        imprima("Par");
    senão
        imprima("Ímpar");
    fim-se
fim

Portugol Studio 2.0

programa {
    funcao inicio() {
        inteiro numero
        escreva("Digite um inteiro: ")
        leia(numero)
        se (numero % 2 == 0) {
            escreva("Par\n")
        } senao {
            escreva("Ímpar\n")
        }
    }
}

Para consultar cada pseudolenguaje en detalle, abre la referencia de Portugol Studio 2.0 y las reglas oficiales de G-Portugol.

Volver al Manual de Potoo IDE

Consulta las demás referencias y la información del proyecto.

Abrir el Manual