0% acharam este documento útil (0 voto)
5 visualizações13 páginas

StatPy Programming Language

A presentation about using the StatPy programming language

Enviado por

Dee Kan
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações13 páginas

StatPy Programming Language

A presentation about using the StatPy programming language

Enviado por

Dee Kan
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 13

Linguagem de

programação
do zero
StaticPy
Conteúdo

01 02 03 04
Introdução Motivação Características Exemplos
01
Introdução
Introdução

Ideia
Desenvolver uma linguagem de
programação do zero, desde a sintaxe Features
(representada pelo EBNF) até A linguagem desenvolvida inclui
compilador completo com Lexer, Parser, variáveis, condicionais, loops, funções
Semântico e Geração de Código, feitos além de algumas funções built-in.
com respectivamente: Flex, bison e
LLVM.
02
Motivação
Motivação

Inspirações
Inspirado em múltiplas linguagens:
• Python Objetivo
Rust Criar uma linguagem de alto nível como o
• python, porém com tipagem estática para
• C previnir erros em runtime.
• C#
03
Características
Características
Tipagem
Bloco de código Built-ins Em contrapartida ao
Assim como no python, Temos algumas funções python, a linguagem exige
um bloco de código é presentes por padrão na tipagem estática, porém
definido por “:”, seguido linguagem, por exemplo o temos a keyword “var”
de código identado. “println” que funciona para inferir o tipo da
como o“printf” do C. variável.

Condicionais Loops
Funcionam como o if/else
do python, onde temos
Assim como no python,
temos while e for, porém o
Funções
Funções seguem o estilo
“if” seguido da expressão for segue uma sintaxe
do Rust.
e bloco de código. semelhante à do C.
04
Exemplos
Exemplos - Variáveis e operações

int x = 0 Esse código demonstra a criação


var y = 5
x += 5 de variáveis e algumas das
println("x = %d", x) operações aritméticas presentes
println("y = %d", y) na linguagem
println("x * y = %d", x * y)
println("x / y = %d", x / y)
double z = 5.0
println("z = %lf", z)
println("x / z = %lf", x / z)
println("x % y = %d", x % y)
Exemplos - Funções, loops e condicionais
# Function to calculate the square of a number Este código demonstra a criação de
fn square(x: int) -> int: uma função para cálculo de potência
return x * x de dois, e faz uso do for loop para
somar o quadrado dos números de 1
# Main program
var num = 5
até num, e usa condicionais para
var result = 0 printar se a soma resultante é par ou
ímpar.
# For loop to calculate the sum of squares
for int i = 0; i <= num; i++:
if i > 0:
result = result + square(i)

println("The sum of squares is %d", result)


# Conditional statement to check if the result is even or odd
if result % 2 == 0:
println("The sum of squares is even.")
else:
println("The sum of squares is odd.")
Exemplos - Built-ins

# Random number generation!!! Este código demonstra o uso da


double random função “rand” para criar
for int i = 0; i < 10; i++: números aleatórios e da “time”
random = rand()
para pegar o tempo atual, e
println("random number is: %lf",
random)
assim poder calcular tempo de
execução do algoritmo.
# We can time our code
double start = time()

for int i = 0; i < 100000; i++:


if i % 5000 == 0:
println("i = %d", i)

double end = time()


println("Time taken: %lf", end - start)
Exemplos - Built-ins
Este código demonstra o uso de
int x_int = 25 algumas funções matemáticas
double y = 3.0 presentes na linguagem, como
sen, cos, sqrt e pow. Além de
# Must be a double to use sqrt, pow, sin, cos
double x = int_to_double(x_int)
funções de conversão entre
double z = sqrt(x) tipos como a conversão de
println("sqrt(%lf) = %d", x, double_to_int(z)) # double para int e vice-versa.
print as int
z = pow(x, y)
println("%lf ^ %lf = %lf", x, y, z)
z = sin(x)
println("sin(%lf) = %lf", x, z)
z = cos(x)
println("cos(%lf) = %lf", x, z)

Você também pode gostar