prog1:portugol
                Differences
This shows you the differences between two versions of the page.
| prog1:portugol [2021/06/12 00:41] – created beco | prog1:portugol [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | < | ||
| - | ## Portugol - Uma linguagem algorítmica em Português | ||
| - | |||
| - | ### Introdução | ||
| - | |||
| - | Linguagem desenvolvida com inspiração em C, em português, para facilitar o ensino de algoritmos a alunos iniciando em programação. | ||
| - | |||
| - | O projeto iniciou em 23/ | ||
| - | |||
| - | Uma das características marcantes do compilador Portugol é a geração de um bytecode semelhante à linguagem Assembly, chamada de quádruplas. É uma ótima opção para ensinar o básico de Assembly, como se converte código, como ficam os laços e atribuições. | ||
| - | |||
| - | A linguagem é compilada em três passos: | ||
| - | |||
| - | 1. Análise léxica e sintática. | ||
| - | 2. Análise sintática, de escopo e de indentação | ||
| - | 3. Análise semântica e geração de código. | ||
| - | |||
| - | ### Comandos | ||
| - | |||
| - | Os comandos válidos na linguagem Portugol são: | ||
| - | |||
| - | * se ... entao ... senao : condição típica para decisões | ||
| - | * inicio ... fim : marca um bloco de comandos subordinados | ||
| - | * imprima : imprime uma mensagem ou variável na saída padrão | ||
| - | * leia : lê um valor da entrada padrão | ||
| - | * enquanto : comando para laço condicional | ||
| - | * para : comando para laço com inicialização, | ||
| - | * aborte : termina abruptamente o programa | ||
| - | * retorne : retorna de uma função para a função chamadora | ||
| - | * saia : termina o programa com um código de sucesso/ | ||
| - | |||
| - | ### Tipos de dados | ||
| - | |||
| - | * inteiro : valores inteiros com sinal (int) | ||
| - | * real : valores reais com sinal (float) | ||
| - | * texto : cadeia de caracteres (string, char \*) | ||
| - | * nada : ponteiro para variável sem tipo (void \*) | ||
| - | * ponteiro : ponteiro para inteiro, real ou texto. | ||
| - | |||
| - | ### Expressões e operadores (relacionais e lógicos) | ||
| - | |||
| - | * atribuição: | ||
| - | * incremento: c++; ++c; (pós e préfixado) | ||
| - | * decremento: c--; --c; (pós e préfixado) | ||
| - | * apontador: \*p = 0; (dereferenciador de ponteiros) | ||
| - | * endereço: p = & c; (endereço de uma variável) | ||
| - | * Aritméticas: | ||
| - | * Relacionais: | ||
| - | * Lógicas: e, ou e nao (sem acentos) | ||
| - | |||
| - | ### Opções mais avançadas | ||
| - | |||
| - | * tipo funcao(arg1, | ||
| - | * externa : define uma função externa | ||
| - | * define : define uma macro | ||
| - | * \#debug : se ativado, o compilador imprimirá a árvore sintática durante a compilação | ||
| - | * \_ARVORE: ativado, liga impressão da árvore sintática | ||
| - | * \_TABELA: ativado, liga a impressão da tabela de símbolos | ||
| - | |||
| - | Nota: (\*) limite de 3 argumentos nas funções imposto no momento, mas suficiente para o estudo dos algoritmos básicos. | ||
| - | |||
| - | ### Constantes e miscelâneas | ||
| - | |||
| - | * Números podem ser escritos em notação científica | ||
| - | * Comentários são feitos com o símbolo // e são apenas de linha | ||
| - | * Strings são entre " | ||
| - | * Formato para imprimir e ler: %d, %f ou %s (inteiros, reais e _strings_) com uso de modificadores | ||
| - | |||
| - | * inc, dec, incpos, incpre decpos, decpre | ||
| - | * pont upont uend pattrib | ||
| - | * ponti pontr ponts | ||
| - | * indent intcon realcon textocon principal | ||
| - | |||
| - | ### Prioridade dos operadores | ||
| - | |||
| - | Os operadores são processados na seguinte ordem (do menos prioritário para o de maior prioridade): | ||
| - | |||
| - | * incremento pós-fixado | ||
| - | * ou | ||
| - | * e | ||
| - | * nao | ||
| - | * operadores relacionais | ||
| - | * atribuição | ||
| - | * adição e subtração | ||
| - | * multiplicação, | ||
| - | * incremento pré-fixado | ||
| - | * dereferenciamento de ponteiros | ||
| - | * endereço de variáveis | ||
| - | |||
| - | ### Exemplos | ||
| - | |||
| - | Abaixo um exemplo de código em sua correta indentação: | ||
| - | |||
| - | * Extensão utilizada pelo Portugol: **ptg** | ||
| - | * Arquivo: **teste.ptg** | ||
| - | |||
| - | ``` | ||
| - | inteiro principal(nada) | ||
| - | inicio; | ||
| - | |||
| - | real o; | ||
| - | inteiro u; | ||
| - | |||
| - | imprima(" | ||
| - | leia(" | ||
| - | se(o< | ||
| - | inicio; | ||
| - | imprima(" | ||
| - | saia(1); | ||
| - | fim; | ||
| - | senao | ||
| - | se(o==0.0) entao | ||
| - | inicio; | ||
| - | imprima(" | ||
| - | saia(0); | ||
| - | fim; | ||
| - | |||
| - | para(u=1; u<5; u=u+1) | ||
| - | inicio; | ||
| - | imprima(" | ||
| - | fim; | ||
| - | retorne 1; | ||
| - | fim; | ||
| - | ``` | ||
| - | |||
| - | ### Syntax highlighting | ||
| - | |||
| - | Se você usa o editor _Kate_ (do _KDE_) ou compatíveis com o _XML_ de _syntax highlighting_, | ||
| - | |||
| - | ``` | ||
| - | $ cp ptg.xml / | ||
| - | ``` | ||
| - | |||
| - | ### Autor e Copyright | ||
| - | |||
| - | * Autor: Prof. Dr. Ruben Carlo Benante | ||
| - | * Email: rcb@upe.br | ||
| - | * Data: 2009-04-23 até data corrente (autom. atualizado) | ||
| - | * Licensa: GNU/GPL v2.0 | ||
| - | |||
| - | </ | ||
prog1/portugol.1623469288.txt.gz · Last modified:  by beco
                
                