{"id":240,"date":"2015-01-01T11:12:31","date_gmt":"2015-01-01T11:12:31","guid":{"rendered":"http:\/\/linguagemprisma.net\/?p=240"},"modified":"2015-10-01T10:41:07","modified_gmt":"2015-10-01T14:41:07","slug":"funcao-main-variavel-args-e-escopo-das-variaveis","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/modo_texto\/funcao-main-variavel-args-e-escopo-das-variaveis\/","title":{"rendered":"Fun\u00e7\u00e3o main, vari\u00e1vel &#8216;args&#8217; e escopo das vari\u00e1veis"},"content":{"rendered":"<p><em><strong>Ol\u00e1, sejam todos bem-vindos a mais um post sobre a linguagem Prisma.<\/strong> <\/em><\/p>\n<p><em>Para come\u00e7ar, ao falar sobre <strong>fun\u00e7\u00e3o main<\/strong>, me refiro \u00e0quela que v\u00e1rias <\/em><\/p>\n<p><em>linguagens possuem, um conceito de um bloco principal. Isto n\u00e3o <\/em><\/p>\n<p><em>existe em Prisma, como puderam perceber, simplesmente basta digitar os<\/em><\/p>\n<p><em>comandos, fun\u00e7\u00f5es e vari\u00e1veis uma ap\u00f3s outra e executar.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Por\u00e9m podemos fazer uma para o programa ficar mais<\/p>\n<p>organizado e para podermos explorar o escopo das vari\u00e1veis, sua<\/p>\n<p>estrutura b\u00e1sica ficaria assim:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true \">funcao main ( narg , args )\r\n\r\n \/\/c\u00f3digo principal aqui ...\r\n\r\nfim\r\n\r\n\/\/chamando main\r\n\r\nmain( #args , args );\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\/\/ <strong>args<\/strong> \u00e9 uma vari\u00e1vel reservada do tipo matriz que guarda poss\u00edveis argumentos externos e<\/p>\n<p>aplicando o operador tamanho <strong>&#8216;#&#8217; colado a args<\/strong> obtemos o n\u00famero de argumentos a partir de 1.<\/p>\n<p>Se f\u00f4ssemos executar nosso programa por uma chamada em linha de comando seria semelhante a:<\/p>\n<p><strong><span style=\"color: #000000;\">&gt;prisma.exe nossoprograma.pbrexe argumento1 argumento2<\/span><\/strong><\/p>\n<p>e no programa tivesse a seguinte linha:<\/p>\n<pre class=\"lang:prisma decode:true \"> imprima ( args[-1] , args [0], args[1] , args[2] );<\/pre>\n<p>&nbsp;<\/p>\n<p>o resultado seria:<\/p>\n<p><span style=\"color: #0000ff;\"><strong>caminho&#8230;\/prisma.exe\u00a0\u00a0\u00a0 caminho&#8230;\/nossoprograma.pbrexe\u00a0\u00a0\u00a0\u00a0 argumento1\u00a0\u00a0 argument2<\/strong><\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Escopo das vari\u00e1veis (global \/ local );<\/strong><\/span><\/p>\n<p>Imagine agora se por motivos de seguran\u00e7a e organiza\u00e7\u00e3o voc\u00ea quisesse que uma vari\u00e1vel<\/p>\n<p>ficasse limitada apenas ao espa\u00e7o de um bloco de fun\u00e7\u00e3o, e n\u00e3o pudesse ser chamada<\/p>\n<p>de outro lugar a n\u00e3o ser do seu pr\u00f3prio escopo (bloco), dir\u00edamos que esta vari\u00e1vel \u00e9 <strong>local<\/strong><\/p>\n<p>e por outro lado, as vari\u00e1veis vis\u00edveis em toda extens\u00e3o do c\u00f3digo dir\u00edamos ser vari\u00e1veis<\/p>\n<p><strong>globais<\/strong>;<\/p>\n<p>Para usar este recurso tenha em mente os seguintes passos:<\/p>\n<p><strong>vari\u00e1vel global &#8211;<\/strong> todas as vari\u00e1veis em Prisma s\u00e3o por padr\u00e3o global.<\/p>\n<p><strong>vari\u00e1vel local &#8211;<\/strong> ao atribuir basta colocar a palavra reservada local antes da vari\u00e1vel.<\/p>\n<p><strong>USO:<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>segue o c\u00f3digo:<\/p>\n<pre class=\"lang:prisma decode:true \">\/\/exemplo de vari\u00e1veis locais e globais:\r\n\r\nfuncao mostre_var ( )\r\n\r\n       imprima ( var1 , var2 );\r\n\r\nfim\r\n\r\nfuncao inicie_var ( )\r\n\r\n     var1 = \"Ola!\" ;\r\n\r\n     local var2 = \"Mundo!\";\r\n\r\nfim\r\n\r\n\/\/funcao principal main, poderia ser o nome a seu crit\u00e9rio\r\n\r\nfuncao main ( )\r\n\r\n      inicie_var( );\r\n\r\n      mostre_var ( );\r\n\r\nfim\r\n\r\nmain ( ) ; \/\/chamando main<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>O resultado ser\u00e1:<strong> Ola!\u00a0\u00a0\u00a0\u00a0\u00a0 nulo<\/strong><\/p>\n<p>a segunda vari\u00e1vel \u00e9 local por isso n\u00e3o \u00e9 vis\u00edvel fora da fun\u00e7\u00e3o<\/p>\n<p>inicie_var ( ) e seu valor fora dela \u00e9 inexistente: nulo;<\/p>\n<p>&nbsp;<\/p>\n<p>Para controlar o escopo das vari\u00e1veis sem precisar, para isso, fazer<\/p>\n<p>uma fun\u00e7\u00e3o toda vez, podemos criar um bloco de comandos com as<\/p>\n<p>palavras reservadas<strong> inicio fim<\/strong>, veja:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true \">inicio\r\n\r\n   local var1 = 1;\r\n\r\n   local var2  = 2;\r\n\r\n  imprima ( var1 , var2 ); \/\/sa\u00edda ser\u00e1  1    2\r\n\r\nfim\r\n\r\nimprima ( var1 , var2 ); \/\/sa\u00edda ser\u00e1 nulo   nulo<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1, sejam todos bem-vindos a mais um post sobre a linguagem Prisma. Para come\u00e7ar, ao falar sobre fun\u00e7\u00e3o main, me refiro \u00e0quela que v\u00e1rias linguagens possuem, um conceito de um bloco principal. Isto n\u00e3o existe em Prisma, como puderam perceber, simplesmente basta digitar os comandos, fun\u00e7\u00f5es e vari\u00e1veis uma ap\u00f3s outra e executar. &nbsp; Por\u00e9m&#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-240","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\/240","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=240"}],"version-history":[{"count":2,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/240\/revisions"}],"predecessor-version":[{"id":1402,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/240\/revisions\/1402"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}