Comparacao
Comparação da linguagem Potigol com outras linguagens.
Versão
Linguagem |
Versão |
Apresentar versão |
Potigol |
0.9.15 |
$ potigol |
Python |
3.6 |
$ python --version |
Java |
9.0 |
$ java -version |
Scala |
2.12.4 |
$ scala -version |
Execução
Linguagem |
Comando |
Potigol |
$ potigol programa.poti |
Python |
$ python programa.py |
Java |
$ javac Programa.java
$ java Programa |
Scala |
$ scalac programa.scala
$ scala programa ou $ scala programa.scala |
Gramática
Linguagem |
Blocos |
Separador de comandos |
Comentário de linha |
Potigol |
faça fim |
espaço |
# comentário |
Python |
: e identação |
nova linha ou ; |
# comentário |
Java |
{ } |
; |
// comentário |
Scala |
{ } |
nova linha ou ; |
// comentário |
Variáveis
Linguagem |
Variável |
Constante |
|
Potigol |
var x := 10 var y, z := 20, 30 |
x = 10 y, z = 20, 30 |
`` |
Python |
x = 10 y, z = 20, 30 |
PI = 3.14 |
`` |
Java |
int x = 10; |
final int x = 10; |
`` |
Scala |
var x = 10 var y, z = 20, 30 declaração explícita do tipo:
var x: Int = 10 |
val x = 10 val y, z = 20, 30 |
`` |
Atribuição
Linguagem |
Atribuição |
Atribuição Paralela |
Permutação |
Potigol |
x := 10 |
x, y, z := 10, 20, 30 |
x, y := y, x |
Python |
x = 10 |
x, y, z = 10, 20, 30 |
x, y = y, x |
Java |
x = 10; |
não tem |
não tem |
Scala |
x = 10 |
não tem |
não tem |
Aritimática e Lógica
Valores lógicos
Linguagem |
Valores |
Operadores lógicos |
Operadores relacionais |
Potigol |
verdadeiro falso |
e ou não |
== <> > < >= <= |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Operações Aritiméticas
Linguagem |
Operadores aritiméticos |
Potenciação |
Raiz |
Potigol |
+ - * / div mod |
^ |
raiz(2.0) raiz(2.0, 2) |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Operações Matemáticas
Linguagem |
Trigonometria |
Aleatório |
Absoluto |
Potigol |
sen cos tg arcsen arccos arctg |
aleatório(10) aleatório(1,10) aleatório(["a","e","i","o","u"]) |
abs(-2) |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Texto
Linguagem |
Literal |
Quebra de linha |
Interpolação |
Potigol |
"texto" |
"Isto é um texto" |
x, y = 10, 20 "A soma {x} + {y} = {x + y}." |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Linguagem |
Concatenação |
Replicar |
Maiúsculo / Minúsculo |
Potigol |
"Olá " + "mundo" |
"-" * 20 |
"Ola".maiúsculo "Ola".minúsculo |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Linguagem |
Partes |
Tamanho |
Elementos |
Potigol |
ola = "Olá mundo".pegue(3) mundo = "Olá Mundo".descarte(4) |
"texto".tamanho |
a = "Olá mundo" a[1] # 'O' |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Listas
Linguagem |
Literal |
Preenchida |
Tamanho |
Vazia |
Potigol |
a = [1, 2, 3, 4] |
a = Lista(10, 0) |
a.tamanho |
a == [] |
Python |
| |
| |
|
|
Java |
| |
| |
|
|
Scala |
| |
| |
|
|
Linguagem |
Ordenar |
Inverter |
Unir |
Potigol |
[2, 3, 1, 4].ordene |
[2, 3, 1, 4].inverta |
[2, 3] +[1, 4] |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Linguagem |
Mapeamento |
Filtro |
Redução |
Potigol |
a = [1, 2, 3, 4]
a.mapeie(n => n * 2) |
a.selecione(n => n mod 2 ==0) |
a.reduza(0)((n,m) => n + m) |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Função
Linguagem |
Definição linha |
Definição bloco |
Aplicação |
Potigol |
soma(a, b: Inteiro) = a + b pos(s: Texto, n: Inteiro) = s[n] |
soma(a, b: Inteiro) c = a + b ` retorne c <br> fim <br> <br> fat(n: Inteiro): Inteiro <br> a = se n>1 então fat(n-1) senão 1 fim <br> retorne c <br> fim | soma(2, 3)` |
|
Python |
|
|
|
Java |
|
|
|
Scala |
|
|
|
Funções anônimas
Linguagem |
Literal |
Invocação |
Função como valor |
Potigol |
(a, b: Inteiro) => a + b |
((a, b: Inteiro) => a + b)(2,3) |
soma = (a, b: Inteiro) => a + b |
Python |
| |
`` |
|
Java |
| |
`` |
|
Scala |
| |
`` |
|
Instruções de Controle
Linguagem |
Se |
Escolha |
Potigol |
se n==0 então
escreva "nenhum"
senãose n==1 então escreva "um"
senão
escreva "vários"
fim |
escolha n
caso 0 => escreva "nenhum"
caso 1 => escreva "um"
caso _ => escreva "vários"
fim |
Python |
| |
|
Java |
| |
|
Scala |
| |
|
Repetição
Linguagem |
Para |
Enquanto |
Potigol |
para i de 1 até 10 faça
escreva i
fim
para i de 1 até 10 passo 2 faça
escreva i
fim |
var i := 1
enquanto i <= 10 faça
escreva "i"
i := i + 1 fim |
Python |
| |
|
Java |
| |
|
Scala |
| |
|
Registro
| Linguagem | Definição | Uso |
|———–|———|———|
| Potigol | tipo Pessoa
` nome, email: Texto <br>
var telefone: Texto<br>
fim |
joao = Pessoa(“Joao”, “joao@email.com”, “98888-8888”) <br>
escreva joao.nome<br>
joao.telefone:=”99999-9999” |
| Python |
|
|
| Java |
|
|
| Scala |
|
` |
Classe
| Linguagem | Definição | Uso |
|———–|———|———|
| Potigol | tipo Pessoa
` nome, email: Texto <br>
var telefone: Texto <br>
ligar() <br>
escreva “ligando para {telenone}” <br>
fim <br>
fim |
joao = Pessoa(“Joao”, “joao@email.com”, “98888-8888”) <br>
escreva joao.nome<br>
joao.telefone:=”99999-9999” <br>
joao.ligar |
| Python |
|
|
| Java |
|
|
| Scala |
|
` |