SkillAgentSearch skills...

Potigol.github.io

Site da Linguagem Potigol

Install / Use

/learn @potigol/Potigol.github.io
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Potigol é ...

Uma linguagem moderna (funcional) para aprender a programar.

Experimente online: Open in Gitpod

Editor Potigol


Faça o Download e veja como Instalar

Conheça também a biblioteca de jogos 2D Jerimum :video_game:

Características

  • Projetada para ser usada por alunos iniciantes
  • Tipagem estática com inferência de tipos
  • Palavras-chave em português
  • Multiparadigma
  • Estímulo ao paradigma funcional: valores imutáveis, casamento de padrões, funções como valores

Como usar

  • Verifique se Java está instalado digitando java -version. Se der uma mensagem de erro é preciso fazer o download em https://www.java.com/pt_BR/download e instalar.
  • Baixe a versão mais recente do Potigol https://github.com/potigol/Potigol/releases/latest
  • Descompacte o arquivo
  • Para executar o Editor de Código digite no prompt do terminal

java -jar epotigol.jar

  • No Windows basta executar epotigol.bat.

  • Para executar um programa em Potigol digite no prompt do terminal

java -jar potigol.jar arquivo.poti

  • No Windows basta usar potigol arquivo.poti.

Exemplos: https://github.com/potigol/Potigol/wiki/jogos

A Linguagem

Variáveis

x = 10                 # Declaração de um valor fixo (não pode ser alterado)
y, z = 20              # Mais de uma variável recebe o mesmo valor y = 20 e z = 20
a, b, c = 1, 2, 3      # Declaração paralela: a = 1, b = 2 e c = 3

var y := 10            # Declaração de uma variável alterável
y := y + 2             # Atribuição de um valor a uma variável
var a, b, c := 1, 2, 3 # Declaração paralela: var a := 1, var b := 2 e var c := 3
a, b, c := b, a, 4     # Atribuição paralela: a := 2, b := 1 e c := 4

Tipos Básicos

| Tipo | Valores | | --- | --- | | Inteiro | -4, 0, 5, ... | | Real | -7.23, 0.0, 5.25, ... | | Texto | "texto", "ola", "mundo", ... | | Lógico | verdadeiro e falso | | Caractere | 'a', '4', '&', ... |

Operações Aritméticas

5 + 3         # Soma: 8
5 - 3         # Subtração: 2
5 * 3         # Multiplicação: 15
5 / 3         # Divisão real: 1.66667
5 div 3       # Divisão inteira: 1
5 mod 3       # Resto da divisão: 2

Operações Lógicas e Relacionais

# Valores lógicos: verdadeiro, falso
verdadeiro e falso                    # e lógico              : falso
verdadeiro ou falso                   # ou lógico             : verdadeiro
não verdadeiro                        # não lógico            : falso

2 == 3                                # teste de igualdade    : falso
2 <> 3                                # teste de desigualdade : verdadeiro
2 < 3                                 # menor                 : verdadeiro
2 <= 3                                # menor ou igual        : verdadeiro
2 > 3                                 # maior                 : falso
2 >= 3                                # maior ou igual        : falso

Entrada

a = leia_inteiro                # lê um número inteiro do teclado
b = leia_real                   # lê um número real do teclado
c = leia_texto                  # lê um texto do teclado
x, y = leia_inteiro             # lê 2 inteiros, o mesmo que x = leia_inteiro, y = leia_inteiro
números = leia_inteiros(5)      # lê um lista de 5 números inteiros, um por linha
números = leia_inteiros(",")    # lê uma lista de números inteiros separados por vírgula

Saída

escreva "Olá Mundo"   # Escreve e passa para a próxima linha
imprima "Olá "        # Escreve e continua na mesma linha
escreva "Mundo"

nome = "Mundo"
escreva "Olá {nome}!"  # "Olá Mundo!"

Se

x = leia_inteiro

# se ... então ... fim
se x > 5 então
  escreva "Maior do que cinco."
fim

# se ... então ... senão ... fim
se x > 5 então
  escreva "Maior do que cinco."
senão
  escreva "Menor ou igual a cinco."
fim

se verdadeiro então                # escreva "verdadeiro"
  escreva "verdadeiro"
senão
  escreva "falso"
fim

se falso então                     # escreva "falso"
  escreva "verdadeiro"
senão
  escreva "falso"
fim

# se ... então ... senãose ... senão ... fim
se x > 8 então
  escreva "Maior do que oito."
senãose x > 6 então
  escreva "Maior do que seis."
senãose x > 4 então
  escreva "Maior do que quatro."
senãose x > 2 então
  escreva "Maior do que dois."
senão
  escreva "Menor ou igual a dois."
fim

# usando se como uma expressão
a = se x mod 2 == 0 então "par" senão "ímpar" fim

maior = se a >= b e a >= c então a senãose b > c então b senão c fim

Escolha

x = leia_inteiro
escolha x
  caso 1 => escreva "Um"               # se x == 1
  caso 2 => escreva "Dois"             # se x <> 1 e x == 2
  caso 3 => escreva "Três"             # se x <> 1 e x <> 2 e x == 3
  caso _ => escreva "Outro valor"      # se x <> 1 e x <> 2 e x <> 3
fim

# escolha com condições
escolha x
  caso n se n < 0        => escreva "{n} é negativo"
  caso n se n mod 2 == 0 => escreva "{n} é par"
  caso n                 => escreva "{n} é ímpar"
fim

# usando escolha como uma expressão
é_zero = escolha x
  caso 0 => verdadeiro
  caso _ => falso
fim

sinal = escolha x               # escolha retorna um número: -1, 0 ou 1
  caso n se n < 0 => -1
  caso n se n > 0 =>  1
  caso _          =>  0
fim

Repetição: Para

para i de 1 até 10 faça            # escreve os números de 1 a 10
  escreva i
fim

var soma := 0
para i de 1 até 10 faça            # soma os números de 1 a 10
  soma := soma + i
fim
escreva "A soma é {soma}."

para i de 1 até 10 passo 2 faça    # escreve os números ímpares de 1 a 10
  escreva i
fim

# Para decrescente
para i de 10 até 1 passo -1 faça   # escreve os números de 10 a 1
  escreva i
fim

# Para com mais de um gerador
para i de 1 até 4,
     j de 1 até 3 faça             # escreve a tabuada {1..4} x {1..3}
  escreva "{i} * {j} == {i * j}"
fim

# Para com listas
cores = ["azul", vermelho", "verde"]
para cor em cores faça
  escreva cor
fim

# Para gerando uma lista
numeros = para i de 1 até 5 gere i fim             # [1, 2, 3, 4, 5]

pares = para i de 1 até 10 se i mod 2 == 0 gere i  # [2, 4, 5, 6, 8, 10]

Repetição: Enquanto

var i := 0
enquanto i<=10 faça                 # Escreve os números de 1 a 10
  escreva i
  i := i + 1
fim

Funções

soma(x: Inteiro, y: Inteiro) = x + y    # Declaração de função em uma linha

soma(x, y: Inteiro) = x + y             # Agrupando parâmetros do mesmo tipo

rep(a: Texto, n: Inteiro) = a * n       # Funções com parâmetros de tipos diferentes

a, b = leia_inteiro
c = soma(a, b)                          # Aplicando a função
escreva "{a} + {b} = {c}"

soma(x, y: Inteiro): Inteiro = x + y    # O tipo de retorno pode ser definido explicitamente

soma(x, y: Inteiro)                     # Declaração de função com corpo
  c = x + y
  retorne c                             # A última linha tem o valor de retorno
fim

soma(x, y: Inteiro)                     # Declaração de função com corpo
  c = x + y
  c                                     # A palavra 'retorne' é opcional
fim

fatorial(n: Inteiro): Inteiro           # Função recursiva (tipo de retorno é obrigatório)
  se n <= 1 então
    1
  senão
    n * fatorial(n - 1)
  fim
fim
a = leia_inteiro
escreva "Fatorial de {a} é {fatorial(a)}"

f(a: Inteiro)
  g(b: Inteiro) = b * 2                 # Função interna
  retorne g(a) + 3
fim

Tipo de parâmetros

| Tipo | Exemplo | Aplicação| | --- | --- | --- | | Inteiro | proximo(a: Inteiro) = a + 1 | proximo(3) | | Real | dobro(a: Real) = a * 2 | dobro(3.6) | | Texto | inicio(s: Texto) = s.pegue(5) | inicio("Olá mundo!") | | Lógico | negacao(a: Lógico) = não a | negacao(verdadeiro) | | Caractere | id(c: Caractere) = c | id('a') | | Tupla | f(a : (Inteiro, Texto)) = ... | f((10,"ok")) | | Lista | soma(a: Lista[inteiro]) = ... | soma([1,2,3,4,5]) | | Função | f(g: (Inteiro, Inteiro) => Inteiro) = g(2,3) | f((a,b) => a + b) | | Classe ou Registro | f(a: T) = ... | f(T(...)) |

Tipos

Número (Inteiro e Real)

12345.qual_tipo                   # "Inteiro"
12345.real                        # 12345.0
12345.texto                       # "12345"
97.caractere                      # 'a'
12345 formato "%8d"               # "   12345"

12345.678.qual_tipo               # "Real"
12345.678.inteiro                 # 12345
12345.678.texto                   # "12345.678"
12345.678.arredonde               # 12346
12345.678.arredonde(2)            # 12345.68
123.45 formato "%.1f"             # "123.4"

12345.678.piso                    # 12345.0 (arredonda para baixo)
12345.678.teto                    # 12346.0 (arredonda para cima)
12345.678.inteiro                 # 12345

Texto

"abc".qual_tipo                   # "Texto"
"123".inteiro                     # 123
"12abc3".inteiro                  # 12
"abc".inteiro                     # 0
"abc"[2]                          # 'b' (caractere na posição 2)

"12.3".real                       # 12.3
"12a.3".real                      # 12.0
"abc".real        
View on GitHub
GitHub Stars66
CategoryDevelopment
Updated2y ago
Forks10

Languages

JavaScript

Security Score

70/100

Audited on Mar 27, 2024

No findings