Ao tratar de qualquer linguagem percebemos que elas tem funções próprias chamadas de
biblioteca base, funções das bibliotecas padrão e de bibliotecas externas.
Em Prisma não é diferente, ao criarmos um simples programa já utilizamos funções pré-carregadas como
o imprima( ) e o leia ( ).
Utilizamos também funções de libs nativas como sis.execute ( ) e string.troque ( )
e libs externas como o igbr ou igsqlite3. As libs externas precisam do comando inclua para serem usadas.
As funções bases são simples: imprima ( ), leia ( ), tipo ( ) etc.
As funções de libs nativas ou externas iniciam por um nome seguida de ponto
e o método: sis.execute ( ); win.Msg ( ) ; ig.janela ( );
TRATAREMOS AQUI DE ALGUMAS FUNÇÕES BASE:
* imprima ( … ); – exibe na tela preta do cmd texto ou números. Podemos passar vários argumentos de
uma só vez separados por vírgulas;
* leia ( ); – uma versão simples do es.leia( ) (que trataremos adiante), a função leia aguarda o usuário
digitar algo e retorna o que foi digitado, podendo ser armazenado em uma variável do seguinte modo:
1 2 3 4 5 |
poe "Digite algo: "; algo = leia ( ); poe ( algo ); //saída será aquilo que o usuário digitar; |
* tipo ( valor ) – esta função retorna uma string descrevendo o tipo de valor;
valor pode ser uma variável ou diretamente um valor. Exempo de uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
x = tipo ( y ); se x == "numero" entao imprima("variavel do tipo numero") ; senaose x == "string" entao imprima("variavel do tipo string"); senao imprima ( "a variavel nao e do tipo numero nem string"); imprima ("o tipo e =" , x ); fim |
* _versao – variável que guarda a versão de prisma, tente executar: imprima( _versao );
* prismadir – variável que guarda o diretório do executável prisma: imprima ( prismadir );
* args – já falamos sobre esta variável, é uma tabela dos argumentos externos passados como
parâmetros em linha de comando:
1 2 3 |
imprima ( args [ 0 ] ); // imprime o nome do programa prisma sendo executado. imprima ( args [-1] ); //imprime o nome do interpretador, que pode ser o prisma.exe ou o |
igprisma.exe;
* poe ( string ); vêm do verbo pôr (inglês = puts ), coloca na tela preta o resultado, é o mesmo
que a função imprima, mas com limitações, não aceita por exemplo mais de um argumento,
é bom para strings apenas.
* executestring( string ); executa uma string como se fosse parte do programa e retorna o
valor 0 (zero) para sucesso e 1 para erro.
exemplo:
1 2 3 4 5 6 7 8 9 10 11 |
x = executestring ( "imprima ( 'Ola Mundo' ) ; " ); //imprima na tela Ola Mundo se x == 0 entao imprima 'string executada com sucesso' senaose x == 1 entao imprima 'a string nao foi executada por algum erro'; fim |
Dica: cuidado com as aspas, se a string a ser executada possui apas internamente você tem
algumas opções:
1 – usar aspas simples internamente, e duplas externamente ou o inverso, como no exemplo acima;
2 – usar o mesmo tipo de aspas. Mas as internas devem ser antecedidas por barra oblíqua: “ ou ‘ ex.:
1 |
executestring ( 'imprima('ola mundo') ' ); |
ou
3 – usar duplos colchetes:
1 |
executestring( [[ imprima ("ola mundo" ) ]] ); |
Como o argumento é uma única string podemos omitir o parênteses da função como fazemos
desde o início com a função inclua. Ficando assim: executestring “seu_comando_aqui” ;
* executearquivo ( caminho_do_arquivo.prisma ); – semelhante ao comando anterior, mas
ao invés de executar uma string, executa um programa prisma, que pode estar compilado ou não.
muito útil quando seu programa tem vários subprogramas separados e por algum motivo não
quer utilizar a função inclua ( ). Esta função, executearquivo, não retorna 0 ou 1, simplesmente
trava a execução do programa principal fechando-o e imprimindo mensagem de erro na tela cmd.
Se o programa prisma a ser executado estiver na mesma pasta que o programa principal,
não é necessário usar o caminho completo, caso contrário sim.
* carregue ( string ) – Semelhante a função executestring com a diferença de que esta carrega
a string e retorna uma função dela para a variáve. Ex:
imprima_ola = carregue ( “imprima ‘ola mundo’ ” ); //primeiro carrega a string em uma função
imprima_ola() ; //executa a string carregada nesta funcao;
Se houver erros, simplesmente nenhum valor é retornado e o valor da função será nulo;
* carreguearquivo ( programa.prisma ) – similar a função carregue, no entanto, esta carrega
um arquivo fonte prisma ou programa compilado prisma em uma função que ao ser executada executa o
programa carregado. Exemplo:
1 2 3 |
execute_arquivo = carreguearquivo ( 'ola.prisma' ); execute_arquivo ( ) ; //executa o programa carregado. |
esta função, ao contrário da executearquivo, dá a possibilidade de fazer um tratamento de erro:
1 2 3 4 5 6 7 8 9 10 11 |
execute_arquivo = carreguearquivo ( 'ola.prisma' ); se execute_arquivo entao execute_arquivo ( ) ; senao imprima ( "erro no arquivo"); fim //executa o programa carregado. |
* convnumero( string ); — converte uma string para numero. Exemplo:
1 2 3 4 5 |
x = "12"; // x = x + x ; errado! x = convnumero( x ); //correto! x = x + x; //depois de convertermos para número |
* convstring ( numero ); — faz o contrário da função anterior, converte um número para string.
1 2 3 4 5 |
x = "1 + 1 = " .. 2 ; //ao concatenar a conversão é automática, //mas é recomendável que se converta antes: x = "1 + 1 = " .. convstring ( 2 ); |
* tente – esta função verifica um valor e retorna um mensagem de erro caso esse valor seja falso
ou nulo, ou o próprio valor caso ele seja válido;
sua sintaxe é : x = tente ( valor , String_erro );
Esta função é ótima para testar abertura de arquivos. Veja seu uso:
1 2 3 4 |
x = tente ( falso , "erro - valor invalido" ); /**retorna o valor se for válido ou a mensagem de erro se valor for inválido, isto é, se for falso ou nulo ** |
outro exemplo de uso com a função que abre arquivo em Prisma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
x = tente ( es.abra ( "teste.txt" , "escrita" ) , "erro - arquivo nao pode ser aberto" ); /** se a função conseguir abrir o arquivo retorna o arquivo para x senão fecha o programa e retorna a mensagem de erro, que é a string definida no segundo parâmetro ** se x entao // se x tiver algum valor válido entao x:escreva ("uma linha escrita no arquivo"); //escreve no arquivo aberto x:feche ( ); // depois é necessário fechar o arquivo aberto. fim |
Bom, pessoal, mais adiante explanarei as bibliotecas,
mas por hoje é só, bons estudos, até mais.
Att. Adalberto