{"id":996,"date":"2015-05-27T18:49:53","date_gmt":"2015-05-27T18:49:53","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=996"},"modified":"2015-08-21T23:23:35","modified_gmt":"2015-08-22T03:23:35","slug":"criando-uma-biblioteca-prisma","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/modo_texto\/criando-uma-biblioteca-prisma\/","title":{"rendered":"Criando uma biblioteca prisma"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Muitas vezes, uma boa op\u00e7\u00e3o \u00e9 dividir um programa em m\u00f3dulos (biblitotecas\/libs) que podem ser acessadas por qualquer outro programa prisma. Isso diminui a complexidade de um grande projeto.<\/p>\n<p><strong>M\u00f3dulos ou bibliotecas s\u00e3o arquivos que cont\u00e9m fun\u00e7\u00f5es para ser compartilhadas pelos programas que as chamam.<\/strong><\/p>\n<p>Os m\u00f3dulos podem ser acessados com o comando <strong>inclua&#8217;nome&#8217;;<\/strong><\/p>\n<p>Assim como fazemos com o igbr: inclua &#8220;igbr&#8221;; e ap\u00f3s isso as fun\u00e7\u00f5es do m\u00f3dulo igbr.pris est\u00e3o dispon\u00edveis para o programa que o chamou.<\/p>\n<h3 style=\"text-align: center;\"><strong>Vamos come\u00e7ar ent\u00e3o!<\/strong><\/h3>\n<p>&nbsp;<\/p>\n<p>Crie dois arquivos com o prismacod ou geany, ou qualquer outro editor de sua prefer\u00eancia, na mesma pasta:<\/p>\n<p>programa.prisma \u00a0 e \u00a0 \u00a0minhalib.pris<\/p>\n<p>em minhalib.pris cole o seguinte c\u00f3digo:<\/p>\n<pre class=\"lang:default decode:true\">funcao bemvindo()\r\n\r\n\u00a0 \u00a0imprima\"Bem vindo ao m\u00f3dulo minhalib\";\r\n\r\nfim<\/pre>\n<p>&nbsp;<\/p>\n<p>Salve. Agora em programa.prisma cole outro c\u00f3digo:<\/p>\n<pre class=\"lang:default decode:true\">inclua\"minhalib\"; \u00a0\/\/o par\u00e2metro \u00e9 o nome de sua lib sem a extens\u00e3o .pris\r\n\r\n\u00a0bemvindo();\r\n\r\nleia();<\/pre>\n<p>&nbsp;<\/p>\n<p>Simples n\u00e3o \u00e9? Ao colocar o comando inclua&#8217;minhalib&#8217; \u00a0o interpretador prisma procura nos diret\u00f3rios padr\u00f5es \/clibs \u00a0 e \u00a0 \/plibs \u00a0como n\u00e3o encontra ele passa a procurar na mesma pasta do programa.prisma sendo executado. Assim prisma carrega a lib e a fun\u00e7\u00e3o passa a ser acessada pelo programa.prisma.<\/p>\n<p style=\"text-align: center;\"><strong>USANDO NAME SPACES; (M\u00c9TODOS)<\/strong><\/p>\n<p style=\"text-align: justify;\">Lembra dos comandos ig ? \u00a0( ig.botao , \u00a0ig.janela ). \u00a0Vamos fazer o mesmo com a lib anterior, vamos colocar a fun\u00e7\u00e3o em uma tabela, veja:<\/p>\n<p style=\"text-align: justify;\">Altere os programas anteriores:<\/p>\n<p style=\"text-align: justify;\">minhalib.pris :<\/p>\n<pre class=\"lang:default decode:true\">local mlib = {}; \/\/criando a tabela local\r\nfuncao mlib.bemvindo()  \/\/ colocando a fun\u00e7\u00e3o como um campo da tabela usando o ponto\r\n\r\n\u00a0 \u00a0imprima\"Bem vindo ao m\u00f3dulo minhalib\";\r\n\r\nfim\r\n\r\nretorne mlib; \/\/retornando a tabela, uma biblioteca \u00e9 como uma fun\u00e7\u00e3o, retorna valores.<\/pre>\n<p>programa.prisma<\/p>\n<pre class=\"lang:default decode:true\">blib = inclua\"minhalib\"; \u00a0\/\/carrega na variavel blib o retorno de minhalib.pris\r\n\r\n\u00a0blib.bemvindo();\r\n\r\nleia();<\/pre>\n<p>Note que criando uma tabela local na biblioteca ela n\u00e3o \u00e9 acessada diretamente pelo programa que a chama, precisa ser carregada em uma vari\u00e1vel.<\/p>\n<p>Se n\u00e3o quiser que isso aconte\u00e7a retire a palavra chave local na cria\u00e7\u00e3o da tabela na biblioteca:<\/p>\n<pre class=\"lang:default decode:true\"> mlib = {}; \/\/criando a tabela global\r\nfuncao mlib.bemvindo()  \/\/ colocando a fun\u00e7\u00e3o como um campo da tabela usando o ponto\r\n\r\n\u00a0 \u00a0imprima\"Bem vindo ao m\u00f3dulo minhalib\";\r\n\r\nfim\r\n\r\nretorne mlib; \/\/retornando a tabela, uma biblioteca \u00e9 como uma fun\u00e7\u00e3o, retorna valores.<\/pre>\n<p>&nbsp;<\/p>\n<p>programa.prisma<\/p>\n<pre class=\"lang:default decode:true  \">inclua\"minhalib\"; \u00a0\/\/carrega na variavel blib o retorno de minhalib.pris\r\n\r\n\u00a0mlib.bemvindo();\r\n\r\nleia();<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Dicas:<\/p>\n<h3>1 &#8211; O caminho padr\u00e3o para as bibliotecas prisma s\u00e3o:<\/h3>\n<p>C:\\<strong>Prisma\\1.0\\bin\\plibs\\ \u00a0 \u00a0 \u00a0 \u00a0 ( No Windows)<\/strong><\/p>\n<p><strong>\/usr\/local\/share\/prisma\/1.0\/plibs \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 (No linux)<\/strong><\/p>\n<p><em>As bibliotecas em C trataremos adiante, usamos o mesmo comando inclua para elas, mas o processo \u00e9 diferente.<\/em><\/p>\n<p>Logo basta colocar sua biblioteca nesta pasta que qualquer outro programa prisma poder\u00e1 ter acesso a ela.<\/p>\n<h3>2 &#8211; As extens\u00f5es que s\u00e3o reconhecidas pelo comando inclua s\u00e3o:<\/h3>\n<p>*.pris \u00a0&#8212; tanto no Windows quanto no Linux<\/p>\n<p>*_pris.dll &#8212; no Windows;<\/p>\n<p>*_pris.so &#8212; no Linux;<\/p>\n<p>Basta compilar normalmente com o prismac.exe, usando prismacod ou geany. E depois renomear para estas extens\u00f5es.<\/p>\n<p>Geany tem a op\u00e7\u00e3o no menu construir -&gt; COMPILAR_LIB_PRISMA que gera um arquivo _pris.dll no Windows ou _pris.so no linux.<\/p>\n<h3>4 &#8211; Se voc\u00ea usar o Auto interpretador (prismaAuto)<\/h3>\n<p>&nbsp;<\/p>\n<p>Voc\u00ea deve copiar as pastas clibs e plibs para o mesmo local do auto interpretador se seu programa usa as libs padr\u00f5es Prisma.<\/p>\n<p>&nbsp;<\/p>\n<h4>5 &#8211; Voc\u00ea pode mudar o caminho padr\u00e3o de busca das bibliotecas modificando duas vari\u00e1veis predefinidas:<\/h4>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">\/\/salvando as vari\u00e1veis antigas se caso precisar delas depois:\r\n\r\nlocal \u00a0plib_antigo = pacote.path;\r\n\r\nlocal clib_antigo = pacote.cpath; \/\/caminho para os modulos na linguagem C;\r\n\r\n\/\/modificando:\r\n\r\npacote.path = \"Caminho\/novo\/?.pris\"; \/\/o sinal ? simboliza o nome do arquivo sem extens\u00e3o.\r\n\r\npacote.cpath = \"Caminho\/novo\/?.dll;Caminho\/novo\/?.so\"; \/\/mais de um caminho separe por ponte-e-v\u00edrgula\r\n\r\n\/\/teste:\r\n\r\ninclua'naoexiste';<\/pre>\n<p>Aten\u00e7\u00e3o, se voc\u00ea estiver no Windows, user barras invertidas:<\/p>\n<pre class=\"lang:default decode:true \">\"Caminho\\\\novo\\\\?.dll;Caminho\\\\novo\\\\?.dll\"<\/pre>\n<p>sa\u00eddas :<\/p>\n<p><strong>stdin:1: module &#8216;naoexiste&#8217; not found:<\/strong><br \/>\n<strong> no field package.preload[&#8216;naoexiste&#8217;]<\/strong><br \/>\n<strong> no file &#8216;Caminho\/novo\/naoexiste.pris&#8217;<\/strong><br \/>\n<strong> no file &#8216;Caminho\/novo\/naoexiste.dll&#8217;<\/strong><br \/>\n<strong> no file &#8216;Caminho\/novo\/naoexiste.so&#8217;<\/strong><br \/>\n<strong>stack traceback:<\/strong><br \/>\n<strong> [C]: in funcao &#8216;inclua&#8217;<\/strong><br \/>\n<strong> stdin:1: in trecho de codigo principal<\/strong><br \/>\n<strong> [C]: in ?<\/strong><\/p>\n<p>No teste inclu\u00edmos uma lib que n\u00e3o existe s\u00f3 para ver os caminhos na mensagem de erro.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Muitas vezes, uma boa op\u00e7\u00e3o \u00e9 dividir um programa em m\u00f3dulos (biblitotecas\/libs) que podem ser acessadas por qualquer outro programa prisma. Isso diminui a complexidade de um grande projeto. M\u00f3dulos ou bibliotecas s\u00e3o arquivos que cont\u00e9m fun\u00e7\u00f5es para ser compartilhadas pelos programas que as chamam. Os m\u00f3dulos podem ser acessados com o comando inclua&#8217;nome&#8217;;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[],"class_list":["post-996","post","type-post","status-publish","format-standard","hentry","category-modo_texto","category-prisma"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=996"}],"version-history":[{"count":8,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/996\/revisions"}],"predecessor-version":[{"id":1253,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/996\/revisions\/1253"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}