Webkit é o motor de internet usado pelo Safari, Chromium, Chrome e tantos outros. Muito útil, pois tem funções de alto nível que facilitam a criação de aplicações web e de acesso a rede sem precisar reconstruir a roda para isso. Uma má notícia é que ainda não consegui compilar corretamente o webkitgtk em Windows….
Continue readingprisma
Listar os arquivos e pastas de um diretório – biblioteca igdir
**Baixe Prisma mais atual – 12/10/2015 ou mais recente** A biblioteca igdir está em fase inicial e conta com apenas três funções por enquanto: dir.liste_arquivos(“pasta”); – retorna uma tabela Prisma com todos os arquivos e pastas do diretório passado como parâmetro. dir.liste_somente_arquivos(“pasta”); – retorna uma tabela com somente os nomes de arquivos. dir.liste_somente_pastas(“pasta”); – retorna…
Continue readingAutointerpretador ( self-interpreter)
Imagine que você queira disponibilizar seu programa prisma sem precisar instalar o interpretador, apenas usando um executável do programa. É exatamente para isso que serve o auto interpretador. É um interpretador normal com uma grande diferença, ao ser executado sem passar nenhum argumento ele não irá abrir o console interativo, em vez disso, ele…
Continue readingFormatando números e strings (básico)
Em algumas vezes você pode querer limitar a quantidade de números depois do ponto decimal, ou a quantidade de zeros à esquerda de um número, ou ainda, colocar aspas internamente em uma string. Para isso vamos usar a função da biblioteca string: string.formate( str_format , … ) Veja o exemplo abaixo comentado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
//exemplo de uso da funcao string.formate: //determinando o número de casas apos o ponto decimal nn = 1.123456789 nn3 = string.formate("%.3f" , nn ); //para 2 casas mude 3 para 2 ou para qualquer valor válido imprima( '\n' , nn , nn3 , '\n' ); //colocando uma string entre aspas: s = "Olá mundo"; ss = string.formate( "%q" , s ); //use %q imprima( '\n' , conv_c(s) , conv_c(ss) , '\n' ); //conv_c para imprimir com acento; o \n é para pular linha //colocando zeros a esquerda: n , nn = 22 , 100 ; //n = 22 e nn = 100 isto se chama multipla atribuicao nf = string.formate("%05d / %05d", n , nn); //\n é nova linha imprima( '\n' , nf , '\n' ); //formatando hora: t = sis.data('*t'); //o *t forca o retorno de uma tabela h = string.formate("Horário: \n\n %02d:%02d:%02d\n" , t.hora,t.minuto,t.segundo ); imprima( conv_c(h) ); //funcao conv_c faz imprimir acentos no cmd. //agora vou usar um laco de repeticao para imprimir de 001 até 010 imprima'Agora de 001 a 010 / precione ENTER para continuar' leia(); para i = 1 , 10 inicio imprima( string.formate("%03d" , i ) ); fim |
OBS1…
Continue readingCopiando um arquivo executável
Quero demonstrar um exemplo de como copiar um arquivo usando um comando es.abra(); Vamos copiar um arquivo chamado nome.exe para nome_copia.exe, após a operação abra o arquivo cópia e veja que ele é executado como se fosse o original. veja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//primeiro abra o arquivo como leitura binária a = es.abra('nome.exe' , 'leiturabin'); //depois leia o arquivo: se a entao tmp = a:leia("*t"); //o *t faz ler o arquivo todo a:feche(); senao imprima'erro ao tentar abrir arquivo'; fim //abra um arquivo em modo escrita binária b = es.abra( 'nome_copia.exe' , 'escritabin'); //agora copie o conteudo tmp para este arquivo: se b entao b:escreva( tmp ); b:feche(); imprima('arquivo copiado com sucesso!'); senao imprima'erro ao tentar abrir arquivo'; fim |
Troque ‘nome.exe’ pelo nome do seu arquivo alvo que pode ser um vídeo, uma…
Continue readingUsando o comando *vapara*
No mundo da programação, muitas vezes, a prioridade recai unicamente em uma estruturação limpa e organizada, um código simples de se ler e fácil de se reutilizar. Nessa perspectiva o comando vapara (goto) foi praticamente banido, com exceção de alguns problemas que parecem ser resolvidos com seu uso somente. Para quem não sabe sobre…
Continue readingOrientação a objetos simples e avançado
Orientação em objetos é um paradigma difícil de se introduzir no mundo da programação. Atualmente temos diversas linguagens que suportam esse mecanismo como o C++, Python, Ruby etc. Outras que forçam unicamente esse tipo de programação como Java, por exemplo. Prisma como uma modificação do código original Lua, não tem a orientação a objetos nativamente,…
Continue readingCriando uma biblioteca prisma
Muitas vezes, uma boa opção é dividir um programa em módulos (biblitotecas/libs) que podem ser acessadas por qualquer outro programa prisma. Isso diminui a complexidade de um grande projeto. Módulos ou bibliotecas são arquivos que contém funções para ser compartilhadas pelos programas que as chamam. Os módulos podem ser acessados com o comando inclua’nome’;…
Continue readingLeitura e Escrita em Arquivos
Veja que é muito simples abrir, ler ou escrever em um arquivo. Vamos usar a biblioteca padrão de entrada e saída ‘es’. Primeiro a leitura linha a linha (troque o nome do arquivo por um de seu computador);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
matriz = { }; i = 0; arquivo = es.abra( "caminho_nome_arquivo.extensao" , "leitura" ); //abre em modo leitura enquanto verdadeiro inicio //laco enquanto infinito i = i + 1; matriz[cont] = arquivo:leia(); se matriz[cont] == nulo entao quebre fim //interrompe o laco enquanto fim //fim enquanto arquivo:feche() ; //nao esqueca de fechar o objeto aberto, ok. para i = 1 , #matriz inicio //para i igual a 1 repita até o tamanho da matriz imprima ( matriz[i] ); fim //fim para |
Se você quiser ler todo o arquivo em uma única variável basta fazer o seguinte:…
Continue readingArgumentos externos ao programa (argv do C, args do Java);
Muitos programas podem receber argumentos ao serem executados, ‘strings’ ou números. Ex.: ao executar no terminal ou no sis.execute ‘comando’ do Prisma o comando a seguir: firefox http://linguagemprisma.net O navegador será aberto na página linguagemprisma.net, pois foi passado para ele esse argumento na sua chamada. Isso acontece com inúmeros programas, como editores, gravadores,…
Continue reading