Implementando o Ambiente de Programac ¸ ˜ ao Visual para a M´ aquina Geometrica

July 16, 2017 | Autor: Diego Prestes | Categoria: Visual Language, Formal Specification, Visual Programming, Programming language
Share Embed


Descrição do Produto

Implementando o Ambiente de Programac¸a˜ o Visual para a M´aquina Geom´etrica Diego G. Prestes , Marcos B. Cardoso , Renata H. S. Reiser , Antˆonio C. R. Costa 1

Escola de Inform´atica – NAPI Universidade Cat´olica de Pelotas Rua F´elix da Cunha, 412. CEP: 96010-000 Pelotas, RS

{dprestes, mbcardo, reiser, rocha}@atlas.ucpel.tche.br

Abstract. We take use of the advantages of the formal specification of the visual syntax of the visual language for the Geometric Machine in order to construct its visual programming environment. In the development of this environment, the traditional techniques of textual programming language are combined with the construction of grafic/visual environments in order to improve the programming in the Geometric Machine and make easy the use of parallel techniques for programming. It also allows programming with visual expressions and provide (spacial and temporal) semantic specification of a process in a bi-dimensional way. Keywords: Visual Languages, Coherent Spaces, Semantic Domains. Resumo. Neste trabalho, as vantagens da especificac¸a˜ o formal da linguagem visual apresentada em [Reiser et al., 2003b] s˜ao consideradas para contruir um ambiente de programac¸a˜ o visual para a M´aquina Geom´etrica. No desenvolvimento deste ambiente, as t´ecnicas tradicionais da programac¸a˜ o textual foram combinadas com as construc¸o˜ es visuais para incentivar a programac¸a˜ o na M´aquina Geom´etrica e tornar mais f´acil o uso de t´ecnicas de programac¸a˜ o paralela para programadores. O ambiente al´em de permitir a programac¸a˜ o com express˜oes visuais, tamb´em provˆe a especificac¸a˜ o semˆantica de um processo de forma bi-dimensional.

1. Introduc¸a˜ o Este trabalho est´a inserido no Projeto APV-MG, desenvolvido pelo grupo GMFC/UCPel (Grupo de Matem´atica e Fundamentos da Computac¸a˜ o) se caracteriza pela construc¸a˜ o do Ambiente de Programac¸a˜ o Visual, uma ferramenta computacional capaz de estimular a programac¸a˜ o pela aplicac¸a˜ o de t´ecnicas visuais e prover semˆantica para processos representados no modelo M´aquina Geom´etrica . Com base nos resultados parciais alcanc¸ados na especificac¸a˜ o da linguagem visual para o Modelo M´aquina Geom´etrica (LVMG) [Cardoso et al., 2003b, Cardoso et al., 2003d, Cardoso et al., 2003c, Cardoso et al., 2003a], este trabalho relata os resultados parciais alcanc¸ados na etapa de implementac¸a˜ o do ambiente de programac¸a˜ o inserido no Projeto APV-MG, desenvolvido na concepc¸a˜ o de software livre, viabilizando a programac¸a˜ o com express˜oes visuais definidas no alfabeto visual da LVMG, e permitindo ainda a especificac¸a˜ o semˆantica dos programas representados no modelo MG de modo multidimensional [Manes and Arbid, 1986]. Esta implementac¸a˜ o est´a sendo desenvolvida considerando-se as vantagens de programac¸a˜ o da linguagem Python, incluindo seu editor gr´afico e as bibliotecas gr´aficas dispon´ıveis.

2. Modelo de M´aquina Geom´etrica

Os Espac¸os Coerentes [Girard, 1986, Girard, 1987, Girard et al., 1989] introduzidos primeiramente para prover uma semˆantica denotacional para a L´ogica Linear, foram utilizados em [Reiser et al., 2001, Reiser, 2002] para caracterizar a estrutura ordenada do modelo de M´aquina Geom´etrica (MG), com o objetivo de obter uma representac¸a˜ o para computac¸o˜ es concorrentes e (ou) n˜ao-determin´ısticas. Neste modelo, as representac¸o˜ es da mem´oria e dos processos computacionais, possivelmente infinitos, envolvendo paralelismo e(ou) n˜ao determinismo, est˜ao rotulados por posic¸o˜ es de um espac¸o geom´etrico. A partir desta distribuic¸a˜ o espacial, obteve-se uma integrac¸a˜ o de conceitos impor´ tantes da Teoria da Concorrˆencia e da Algebra de Processos [Milner, 1990], pois a noc¸a˜ o de computac¸a˜ o no modelo MG e´ concebida como uma transic¸a˜ o de estados associada a uma localizac¸a˜ o espacial, capaz de modelar de forma expl´ıcita a concorrˆencia s´ıncrona e o conflito de acesso a` mem´oria. Por outro lado, induzida pela estrutura ordenada e fundamentada na Teoria dos Dom´ınios, foi definida uma linguagem de programac¸a˜ o textual possibilitando o desenvolvimento de programas no modelo MG[Reiser et al., 2003d, Reiser et al., 2003c] e sua correspondente semˆantica denotacional. A linguagem suporta a representac¸a˜ o operacional de processos parciais, modelando os estados parciais da computac¸a˜ o. Pelo procedimento de completac¸a˜ o s˜ao preservados os limites de computac¸o˜ es infinitas, garantindo que a soluc¸a˜ o para equac¸o˜ es recursivas definidas sobre os construtores do modelo MG sejam express˜oes v´alidas na linguagem textual. Entretanto, no modelo tamb´em podem ser representados programas com estrutura l´ogica mais complexa, compat´ıvel com as novas arquiteturas e sistemas de organizac¸a˜ o de computadores, como o processamento paralelo s´ıncrono e/ou distribu´ıdo [Reiser et al., 2003d]. Neste caso, o modelo MG salienta-se pela uniformidade da estrutura ordenada que possibilita tais representac¸o˜ es, significando uma forte e direta relac¸a˜ o entre estes sistemas geralmente tratados de forma isolada na literatura. A distribuic¸a˜ o espacial da mem´oria e dos processos, assim como a natureza indutiva da estrutura ordenada do modelo MG permitem a modelagem de construc¸o˜ es recursivas, aplicadas a` s computac¸o˜ es (n˜ao) determin´ısticas, incluindo dois tipos especiais de paralelismo: o espacial, com mem´oria e processos possivelmente infinitos, definidos por estruturas matriciais; e o temporal, na vers˜ao gen´erica do modelo, com mem´oria global transfinita e processos distribu´ıdos num conjunto enumer´avel de modelos MG, sincronizados no tempo. Na busca de uma semˆantica bi-dimensional capaz de interpretar tais computac¸o˜ es, introduz-se [Reiser et al., 2003e, Reiser et al., 2003a] a linguagem de programac¸a˜ o visual para o modelo MG (LVMG), cuja sintaxe e´ especificada de acordo com o proposto no Projeto GENGED [Bardohl and Ermel, 2001]. A especificac¸a˜ o da LVMG inclui a definic¸a˜ o da sintaxe abstrata (respons´avel pela estrutura l´ogica das express˜oes gr´aficas) e da sintaxe concreta (orientando o layout da cada express˜ao para manipulac¸a˜ o do usu´ario). Da mesma forma e´ constru´ıda a especificac¸a˜ o da gram´atica visual, integrando conceitos da Teoria dos Grafos [West, 1996, Wilson, 1996] e da Teoria Alg´ebrica [Milner, 1990], na representac¸a˜ o dos construtores: produto seq¨uencial e paralelo, somas determin´ıstica e n˜ao-determin´ısticas, e as correspondentes construc¸o˜ es recursivas. As regras que comp˜oe a gram´atica visual s˜ao definidas em duas etapas distintas, a preparac¸a˜ o (caracterizada pela representac¸a˜ o de objetos parciais) e a realizac¸a˜ o.

3. Linguagens Visuais Um dos principais objetivos da pesquisa envolvendo linguagens de programac¸a˜ o visuais e´ a melhoria no padr˜ao das linguagens de programac¸a˜ o, cujo contexto multidimensional inclui as linguagens textuais. As metas para alcanc¸ar esse objetivo e´ tornar a programac¸a˜ o mais acess´ıvel a um p´ublico mais espec´ıfico e auxiliar na correc¸a˜ o, validac¸a˜ o e velocidade de execuc¸a˜ o da programac¸a˜ o [Burnett and Ambler, 1989, Burnett and Ambler, 1992]. As linguagens visuais (LV) s˜ao usadas em muitas a´ reas de aplicac¸a˜ o, incluindo aprendizagem de conhecimento, aplicac¸o˜ es de t´ecnicas de programac¸a˜ o para pessoas que n˜ao programam, adaptac¸a˜ o de programas padronizados e o desenvolvimento de interfaces gr´aficas para usu´arios. A definic¸a˜ o de uma LV consiste na construc¸a˜ o de um alfabeto (visual) e uma gram´atica (visual), produzindo a especificac¸a˜ o da linguagem visual. Dada uma especificac¸a˜ o, uma linguagem visual e´ um conjunto de todos os diagramas (express˜oes da linguagem) que podem ser derivados da aplicac¸a˜ o das regras gramaticais a um diagrama inicial. De acordo com o conte´udo de uma especificac¸a˜ o de LV se constr´oi o editor de alfabeto e o editor da gram´atica. Seguindo o trabalho introduzido em [Bardohl and Ermel, 2001], s˜ao considerados dois tipos de sintaxe para construc¸a˜ o do alfabeto e da gram´atica de uma LV: 1. A sintaxe abstrata, respons´avel pela estrutura l´ogica das express˜oes da linguagem e representadas por diagramas especiais definidos por grafos dirigidos. 2. A sintaxe concreta, orientando a definic¸a˜ o do layout de cada diagrama, para manipulac¸a˜ o do usu´ario. Nesta abordagem, o alfabeto visual e´ representado por um grafo, e a gram´atica visual e´ representado por uma gram´atica de grafos. Um alfabeto visual estabelece um conjunto de s´ımbolos e conex˜oes utilizados na especificac¸a˜ o de uma linguagem visual, ou seja, define o vocabul´ario de uma LV. A construc¸a˜ o de cada s´ımbolo do alfabeto consiste na construc¸a˜ o de um grafo onde os nodos e arestas est˜ao relacionados por atributos e conex˜oes. Uma gram´atica visual e´ representada por uma gram´atica de grafos que consistem de um diagrama inicial e um conjunto finito de regras que geram outros diagramas da linguagem visual que no caso, representam os processos modelados pelo modelo MG.

4. Especificac¸a˜ o da Sintaxe para a LVMG Apresenta-se um resumo relacionado com o estudo da especificac¸a˜ o sint´atica da linguagem visual para representac¸a˜ o de processos interpretados no modelo MG, introduzida em [Cardozo et al., 2003, Reiser et al., 2003a]. Esta especificac¸a˜ o est´a dividida em duas atividades principais, descritas no pr´oximo par´agrafo. A primeira consiste na Especificac¸a˜ o do Alfabeto, composto pela Especificac¸a˜ o de S´ımbolos e pela Especificac¸a˜ o de Conex˜oes. Tendo-se o alfabeto, vˆem a segunda parte onde ocorre a Especificac¸a˜ o de Gram´aticas onde s˜ao constru´ıdas as regras que definem a gram´atica visual. 4.1. Especificac¸a˜ o do Alfabeto para a LVMG A seguir, s˜ao brevemente apresentados os grafos associados ao processo Identidade e aos processos elementares.

4.2. Processo Identidade O grafo que representa o processo identidade na LV para o modelo MG possui um nodo (objeto-processo) representado por uma seta na sintaxe concreta, e um nodo atributoac¸a˜ o respons´avel por sua identificac¸a˜ o nominal, conforme mostra a Figura 1. O atributoac¸a˜ o e´ identificado pela palavra Skip que pertence a um conjunto S de palavras e sua representac¸a˜ o e´ um retˆangulo com as extremidades arredondadas com dois arcos (conex˜oes): o primeiro com origem no nodo-atributo e que se liga ao conjunto S e o outro com origem no nodo-atributo e com destino no objeto-processo. Na sintaxe concreta, a func¸a˜ o de inclus˜ao e´ indicada por um arco tracejado e nomeado incl ac¸a˜ o, onde o nome do atributo e´ mapeado para a sua localizac¸a˜ o no diagrama de representac¸a˜ o do processo identidade e pr´oximo a ele fica uma especificac¸a˜ o quanto ao tamanho e ao nome da fonte utilizada.

Figura 1: Processo Identidade Figura 2: Processo Elementar

4.3. Processo Elementar Para a representac¸a˜ o gr´afica de um processo elementar no AV considera-se primeiramente a sintaxe abstrata. Nesta construc¸a˜ o, os atributos de um processo elementar s˜ao caracterizados pela posic¸a˜ o e ac¸a˜ o e constituem-se em objetos-atributo do objeto-processo e comp˜oem o grafo que representa um processo elementar. O atributo-posic¸a˜ o e´ determinado pelo r´otulo que pertence a um conjunto I de r´otulos e sua representac¸a˜ o e´ um retˆangulo com as extremidades arredondadas. De forma an´aloga, o atributo-ac¸a˜ o e´ identificado por uma palavra que pertence a S e sua representac¸a˜ o e´ tamb´em um retˆangulo com as extremidades arredondadas. Cada objeto-atributo tˆem 2 arcos (n-ac¸a˜ o, n-pos): 1. o primeiro com origem no nodo-atributo se liga ao conjunto que o define, e 2. o outro com origem no nodo-atributo e com destino no objeto-processo elementar. Na Sintaxe Concreta o diagrama de representac¸a˜ o do processo elementar e´ identificado por um retˆangulo com duas conex˜oes laterais e dividido em partes. Nas duas divis˜oes centrais colocam-se as correspondentes posic¸o˜ es e ac¸o˜ es. Esta tarefa e´ formalizada pelas func¸o˜ es de inclus˜ao, indicadas por arcos tracejados e nomeadas incl pos e incl ac¸a˜ o. As func¸o˜ es de inclus˜ao mapeiam os nomes dos atributos a sua localizac¸a˜ o no diagrama de representac¸a˜ o do processo elementar. Pr´oximo a elas fica uma declarac¸a˜ o do tamanho e do nome da fonte utilizada, conforme mostra a Figura 2. ¨ 4.4. Processo Sequencial A seguir, s˜ao apresentados a especificac¸a˜ o sint´atica do objeto processo seq¨uencial, resultante da aplicac¸a˜ o do construtor produto seq¨uencial.

Conforme mostra a Figura 3, pela sintaxe abstrata, o diagrama de representac¸a˜ o do produto seq¨uencial e´ definido sempre que se puder explicitar os dois objetos e os conectores que o constroem. Tanto o primeiro (identificado por um objeto-processo acrescido do conector “para”) quanto o segundo fator (identificado por um objeto-processo acrescido do conector “de”) s˜ao subgrafos gerados pela LV representando processos parciais ou elementos do alfabeto visual. Na sintaxe concreta o produto seq¨uencial e´ representado por dois nodos onde eles se concatenam formando um novo processo. O diagrama e´ composto tamb´em pelas func¸o˜ es de inclus˜ao, de dois argumentos, identificados neste caso pelas express˜oes inclui nome e comb desl. A especificac¸a˜ o completa de um processo seq¨uencial instanciado a` processos elementares, est´a explicitada na Figura 3.

Figura 3: Processo sequencial ¨ instanciado a processos elementares

5. Linguagem de Programac¸a˜ o Python A implementac¸a˜ o da ferramenta est´a sendo desenvolvida na linguagem Python, caracterizada como uma linguagem orientada a objetos e de f´acil aprendizagem. N˜ao h´a a necessidade de se definir vari´aveis, muito menos seus tipos (quando e´ feito uma referˆencia a alguma vari´avel o Python se encarrega de verificar qual ser´a o seu tipo dependendo do tipo de dado que for colocado). O Python tem bibliotecas de diversos tipos de dados e para quase todos tipos de aplicac¸o˜ es envolvendo computac¸a˜ o cient´ıfica e comercial [Rossum and Drake, 2003, Brown, 2001]. Salienta-se que a linguagem Python e´ capaz de manipular estruturas de dados de alto n´ıvel e adotar uma abordagem simples e efetiva para a programac¸a˜ o orientada a objetos. Sua sintaxe elegante e tipagem dinˆamica, em adic¸a˜ o a sua natureza interpretada, tornam Python ideal para scripting e para o desenvolvimento r´apido de aplicac¸o˜ es (RAD - Rapid Application Development) em diversas a´ reas e na maioria das plataformas. O interpretador Python e sua extensa biblioteca padr˜ao est˜ao dispon´ıveis na forma de c´odigo fonte ou bin´ario para a maioria das plataformas, e podem ser distribu´ıdos livremente. Al´em disso, este interpretador e´ facilmente extens´ıvel incorporando novas func¸o˜ es e tipos de dados implementados em C ou C++ (ou em qualquer outra linguagem acess´ıvel a partir de C), seja para desempenhar operac¸o˜ es cr´ıticas em m´axima velocidade, ou para vincular programas Python a bibliotecas que s´o estejam dispon´ıveis em formato bin´ario. Esta linguagem permite organizar programas em m´odulos que podem ser reutilizados em outros programas escritos em Python. Al´em disso, a linguagem Python possui v´arios m´odulos desenvolvidos para a Computac¸a˜ o Cient´ıfica. Neste trabalho est´a sendo utilizado como biblioteca gr´afica do Python a biblioteca wxPython, de f´acil aprendizagem possibilitando a criac¸a˜ o de objetos visuais.

Inserida na biblioteca wxPython, com a biblioteca OGL (Objects Graphics Library) tornou-se poss´ıvel a criac¸a˜ o de objetos geom´etricos (como linhas, quadrados, c´ırculos) fundamental para o desenvolvimento dos processos do modelo MG. Igualmente ao Python, as bibliotecas wxPython e OGL tˆem c´odigo-fonte aberto e e´ multiplaforma, ou seja, o software desenvolvido poder´a rodar em m´ultiplas plataformas, sem precisar de modificac¸a˜ o ou adaptac¸a˜ o.

6. Resultados Nesta sec¸a˜ o s˜ao descritos os resultados alcanc¸ados com relac¸a˜ o ao desenvolvimento do editor para a ferramenta APV-MG.

˜ da tela do editor para o APV-MG Figura 4: Visualizac¸ao

6.1. Criac¸a˜ o e gerac¸a˜ o da tela da ferramenta APV-MG O desenvolvimento do editor comec¸ou com o estudo e aplicac¸a˜ o da func¸a˜ o wxApp (func¸a˜ o da wxPython), que trabalha da seguinte maneira: assim que o programa for executado, uma classe (MyApp) que herdou essas func¸o˜ es do wxApp faz a chamada para a tela do programa, conforme mostra a Figura 4. A partir dessa classe ent˜ao e´ feita uma chamada para outra classe do programa (MyFrame) que cont´em todas as informac¸o˜ es necess´arias para a criac¸a˜ o das telas que o programa usar´a. Para isso foi utilizado a func¸a˜ o wxFrame, que serve para criar janelas. Os principais parˆametros para a criac¸a˜ o e gerac¸a˜ o destas janelas s˜ao a posic¸a˜ o na tela, o tamanho da janela e o t´ıtulo que identifica essa janela. Para a criac¸a˜ o das telas tamb´em foram usados alguns componentes da biblioteca wxPython, os quais s˜ao descritos nos pr´oximos par´agrafos. A inserc¸a˜ o de bot˜oes na tela viabiliza o acesso a determinadas func¸o˜ es do programa, sendo que foram utilizados neste trabalho trˆes modelos diferentes: 1. wxButton: e´ um bot˜ao padr˜ao sem nenhuma func¸a˜ o especial na qual deve-se informar para a criac¸a˜ o dele dados tipo: em que janela ser´a inserido o bot˜ao e a partir dessa janela em que posic¸a˜ o dela ser´a colocado, o tamanho do bot˜ao, e algum texto de identificac¸a˜ o ou uma figura que identifique a func¸a˜ o do bot˜ao. 2. wxToggleButton: outro modelo de bot˜ao por´em ele trabalha com um controle de dois estados, ou ele est´a acionado ou est´a desligado. Os dados de criac¸a˜ o s˜ao os mesmos do bot˜ao anterior por´em como j´a foi dito, tem essa vari´avel de controle (chamada Value) que pode ser utilizada.

3. wxBitmapButton: esse tipo de bot˜ao e´ utilizado quando e´ necess´ario a criac¸a˜ o de um bot˜ao com figuras ao inv´es de textos. Ele tamb´em trabalha com os mesmos parˆametros por´em no local do nome e´ colocado uma imagem. Isso foi poss´ıvel utilizando a func¸a˜ o wxBitmap na qual e´ informado o caminho e o nome do arquivo de foto que ser´a colocado no bot˜ao. Para a construc¸a˜ o desses bot˜oes foram aplicadas diferentes func¸o˜ es, dependendo do objetivo. Para criac¸a˜ o de telas que constroem pain´eis numa janela e possibilitada a criac¸a˜ o de barras de ferramentas nos programas foi aplicada a func¸a˜ o wxPanel. Essa func¸a˜ o utiliza os mesmos parˆametros de criac¸a˜ o de telas que o wxFrame, por´em foi colocado um dado a mais na criac¸a˜ o dessas barras que e´ o parˆametro wxRAISED BORDER. Ele faz com que a barra fique com uma borda dando um efeito diferente em relac¸a˜ o as outras janelas. Outras func¸o˜ es utilizadas forama a func¸a˜ o-menu (wxMenu) e a func¸a˜ o-barra de status. A func¸a˜ o-barra de status e´ adicionada apenas utilizando o comando CreateStatusBar, sem nenhum parˆametro e o programa ajusta-se no local correto. Para execuc¸a˜ o da func¸a˜ o-menu e´ necess´ario que se defina cada um dos grupos de menus (ex: Arquivo, Editar, Ajuda, etc.) para que, posteriormente, seja adicionado no menu principal. Junto com as definic¸o˜ es dos menus pode-se colocar uma descric¸a˜ o do que essa opc¸a˜ o ir´a realizar e essa descric¸a˜ o ser´a mostrada na barra de status. Como u´ ltima parte para a criac¸a˜ o da tela do programa e´ utilizada a func¸a˜ o denominada de wxShapeCanvas, da biblioteca OGL. Esta func¸a˜ o permite a criac¸a˜ o de uma a´ rea na tela utilizada para fazer a manipulac¸a˜ o dos objetos geom´etricos. O m´etodo de instanciac¸a˜ o da classe e´ o mesmo adotado para o wxFrame e wxPanel, informando posic¸a˜ o e tamanho. J´a dentro da classe e´ necess´ario ent˜ao se configurar algumas opc¸o˜ es. A primeira e´ a cor do fundo que e´ colocado como padr˜ao a cor branca, devido alguns sistemas operacionais como o Linux n˜ao adotar essa cor como padr˜ao. Na classe wxShapeCanvas e´ criado outro importante objeto chamado wxDiagram, onde ser˜ao armazenados objetos visualizados por esta classe. 6.2. Criac¸a˜ o e Gerac¸a˜ o de Processos e Construtores A Figura 5 mostra como s˜ao gerados os processos elementares e sequenciais.

˜ da edic¸ao ˜ de processos elementares e sequenciais Figura 5: Visualizac¸ao

Para a a criac¸a˜ o destes objetos foi escolhida a utilizac¸a˜ o do m´odulo wxDrawnShape. Nesse m´odulo foram utilizados func¸o˜ es para criac¸a˜ de linhas, na qual se informa em coordenadas cartesianas (x,y) o ponto inicial e o ponto final de cada linha. Desta forma foi poss´ıvel fazer a criac¸a˜ o do primeiro tipo de objeto (representac¸a˜ o visual do processo elementar) denominada a classe de ConsElem. Da mesma forma foi criado o processo resultante do produto sequencial. A representac¸a˜ o visual foi constru´ıda atrav´es de uma ligac¸a˜ o (linha horizontal) entre os objetos processos. Uma parte fundamental no desenvolvimento da ferramenta APV-MG envolveu o estudo e aplicac¸a˜ o de eventos, respons´aveis pelo acionamento de func¸o˜ es dentro do programa. Mais especificamente, foram utilizados dois tipos de eventos, os da biblioteca wxPython e o da biblioteca OGL, especificados logo a seguir: • EVT BUTTON: evento utilizado quando e´ acionado um bot˜ao; • EVT MENU: evento utilizado quando um menu e´ acionado; • EVT SIZE: evento que chama uma determinada func¸a˜ o quando ocorre alguma mudanc¸a no tamanho da tela. Utilizado principalmente para fazer um redimensionameno dos objetos da tela (barras de ferramentas) e para fazer os ajustes, mantendo-os proporcionais ao tamanho da tela; • EVT TOGGLEBUTTON: outro evento para construc¸a˜ o de bot˜oes; • EVT RIGHT(LEFT) UP(DOWN): evento acionado pelo mouse quando e´ feito um clique ou com o bot˜ao direito ou com o esquerdo do mouse. A este evento esta associada a tarefa de distinguir se o bot˜ao foi pressionado ou liberado (DOWN e UP respectivamente). Tamb´em d´a a informac¸a˜ o sobre sua posic¸a˜ o na tela. Pode haver mais de um evento igual, mas em a´ reas diferentes da tela; • EVT KEY UP(DOWN): evento semelhante ao anterior por´em associado a uma determinada tecla. A func¸a˜ o acionada por esse evento pode gerar uma lista das teclas que realizam alguma operac¸a˜ o, ou caso contr´ario, se a tecla n˜ao tiver na func¸a˜ o apena e´ descartado o evento; • OnLeftClick: evento semelhante ao EVT LEFT DOWN(UP), mas que s´o e´ acionado quando clicamos em objetos criados atrav´es da biblioteca OGL.

˜ do codigo ´ ˜ da tela e de objetos Figura 6: Visualizac¸ao associado a gerac¸ao

Figura 7: Tela Salvar Arquivo

6.3. Manipulac¸a˜ o de Arquivos Outra funcionalidade adicionada ao editor foi a possibilidade de salvar e posteriormente abrir um arquivo, conforme pode ser visualizada na Figura 7. A biblioteca em construc¸a˜ o para o desenvolvimento do APV-MG inclui uma rotina para salvar como arquivos os objetos desenhados. O comportamento desta func¸a˜ o e´ brevemente descrito neste par´agrafo. A princ´ıpio, foram varridos todos os objetos presentes no programa e fez-se a leitura de todas as suas propriedades importantes, um a um. Foram armazenados dados como posic¸a˜ o e informac¸o˜ es de escritas neles, assim como as poss´ıveis ligac¸o˜ es com outros objetos. Para guardar os dados foi utilizado um padr˜ao de gravac¸a˜ o em arquivo. A partir desse padr˜ao ent˜ao e´ poss´ıvel varrer esse arquivo salvo para que seja lido e reaberto pelo programa.

7. Conclus˜ao O ambiente APV-MG pode incentivar a pr´atica da programac¸a˜ o utilizando t´ecnicas de sincronizac¸a˜ o, modelagem da mem´oria (compartilhada) e do conflito de acesso. Alguns dos importantes benef´ıcios do uso das representac¸o˜ es visuais/espaciais em modelo computacionais que envolvam programac¸a˜ o paralela e distribu´ıda s˜ao: o n´umero de argumentos (aridade) envolvidos na definic¸a˜ o dos processos alg´ebricos, as (poss´ıveis) definic¸o˜ es recursivas dos construtores, a composic¸a˜ o funcional, as computac¸o˜ es paralelas e n˜ao-determin´ısticas relacionadas com a sincronizac¸a˜ o de processos, e finalmente, a distribuic¸a˜ o espacial dos processos e estados computacionais. Entende-se que estas caracter´ısticas da programac¸a˜ o visual sejam relevantes para tornar a programac¸a˜ o no modelo MG mais acess´ıvel aos usu´arios em geral, possibilitando sua aplicac¸a˜ o na Computac¸a˜ o Cient´ıfica, em especial no desenvolvimento de algoritmos da Matem´atica Intervalar, da ´ Algebra Linear e de Processos Estoc´asticos. Na fase de modelagem do ambiente visual, tem-se como primeira meta a definic¸a˜ o da linguagem visual, incluindo as especificac¸o˜ es do alfabeto e da gram´atica e contemplando an´alise da sintaxe abstrata e concreta. Este trabalho apresenta os resultados parciais obtidos com a introduc¸a˜ o e a implementac¸a˜ o do editor do alfabeto e da gram´atica, incluindo a criac¸a˜ o da interface do ambiente APV-MG. Foi estudada e aplicada a biblioteca gr´afica WxPython, possibilitando manipulac¸a˜ o de diagramas, definic¸a˜ o e construc¸a˜ o de func¸o˜ es de acesso ao ambiente, criac¸a˜ o e redimensionamento de objetos, interac¸a˜ o e uso de agentes, podem ser facilmente desenvolvidas nesta linguagem (livre e multiplataforma) e disponibilizados no ambiente.

Na implementac¸a˜ o do editor gr´afico para o alfabeto e para a gram´atica foram utilizadas estrat´egias da programac¸a˜ o visual e as bibliotecas dispon´ıveis para a linguagem Python. Na construc¸a˜ o do ambiente aplicam-se diferentes classes: (1) MyApp (aplica a func¸a˜ o wxApp para a inicializac¸a˜ o do programa) (2) MyFrame (usa as func¸o˜ es wxFrame, wxPanel)(3) MyShape (gerac¸a˜ o e inserc¸a˜ o de objetos gr´aficos)(4) MyEvent (manipulac¸a˜ o de eventos)(5) Classe Desenho. A modelagem do alfabeto viabiliza a definic¸a˜ o e a construc¸a˜ o de processos elementares e do produto sequencial. Atualmente est˜ao sendo implementadas as regras para o editor da gram´atica, envolvendo o restante dos construtores, como produto paralelo, soma determin´ıstica e n˜ao-determin´ıstica. Como trabalhos futuros, destacam-se o desenvolvimento e implementac¸a˜ o do simulador para o editor do modelo MG bem como a integrac¸a˜ o com as atividades desenvolvidas na etapa atual de definic¸a˜ o e implementac¸a˜ o do editor.

Agradecimentos Os autores s˜ao gratos pelo financiamento parcial da FAPERGS e do CNPq/PIBIC e CNPQ/CTINFO.

Referˆencias Bardohl, R. and Ermel, C. (2001). Visual specification and parsing of a statechart variant using genged. In Proc. Symposium on Visual Languages and Formal Methods, pages 5–7. Brown, M. C. (2001). Python: The Complete Reference. Osborne/McGraw-Hill, Berkeley. Burnett, M. M. and Ambler, A. L. (1989). Influence of visual technology on the evolution of language environments. 6(2):9–22. Burnett, M. M. and Ambler, A. L. (1992). A declarative approach to event-handling in visual programming languages. pages 34–40, Seattle, Washington. Cardoso, M. B., Prestes, D. G., Reiser, R. H. S., and Costa, A. C. R. (2003a). Especificac¸a˜ o de construtores recursivos para a linuagem visual da m´aquina geom´etrica. In Simp´osio de Inform´atica do Planalto M´edio. Cardoso, M. B., Reiser, R. H. S., A. C. R. Costa, L. L. B., and Prestes, D. G. (2003b). Introduzindo um ambiente de programac¸a˜ o visual para a m´aquina geom´etrica. In II Simp´osio de Inform´atica da Regi˜ao Centro do RS, pages 1–8, Santa Maria, Brasil. dispon´ıvel em CD do simp´osio. Cardoso, M. B., Reiser, R. H. S., Costa, A. C. R., and Dimuro, G. P. (2003c). Ambiente de programac¸a˜ o visual para a m´aquina geom´etrica. In VIII Simp´osio de Inform´atica. Cardoso, M. B., Reiser, R. H. S., Costa, A. C. R., and Dimuro, G. P. (2003d). Especificando a recurs˜ao na linuagem visual para o modelo de m´aquina geom´etrica. In XVIII Congresso Regional de Iniciac¸a˜ o Cient´ıfica e Tecnol´ogica em Engenharia, pages 1–5, Itaja´ı, SC. dispon´ıvel em CD do congresso. Girard, J., Lafont, Y., and Taylor, P. M. (1989). Visual Object-Oriented Programming. Cambridge University Press, Cambridge. Girard, J. Y. (1986). The system f of variable In Theoretical Computer Science, number 45, pages 159–192.

Girard, J. Y. (1987). Linear logic. In Theoretical Computer Science, pages 1–102. Manes, E. and Arbid, M. (1986). Algebraic Approach to program Semantics. Springer Verlag. Milner, R. (1990). Communication and Concurrency. Prentice Hall. Reiser, R. (2002). A m´aquina geom´etrica - um modelo computacional para concorrˆencia e n˜ao-determinismo usando como estrutura os Espac¸os Coerentes. PhD thesis, CPGCC/UFRGS - Porto Alegre. Reiser, R., Cardoso, M., Costa, A., and Dimuro, G. (2003a). Utilizando a programac¸a˜ o visual no modelo de m´aquina geom´etrica. In CLEI2003-XXIX Conferˆencia Latinoamericana de Inform´atica, pages 1–10. Universidad Major San Andr´es. Reiser, R., Costa, A., and Dimuro, G. (2001). First steps in the construction of the geometric machine model. In TEMA, pages 183–192. Reiser, R., Costa, A., and Dimuro, G. (2003b). The interval geometric machine. In Numerical Algorithms, volume 34, pages 1–10. Kluwer, Dordrecht. Reiser, R., Costa, A., and Dimuro, G. (2003c). Programming in the geometric machine. In Frontiers of Artificial Intelligence, pages 95–102. IOS Press. Reiser, R., Costa, A., and Dimuro, G. (2003d). A programming language for the interval geometric machine model. In Eletronic Notes in Theoretical Computer Science, volume 84, pages 1–12. Reiser, R., Costa, A., Dimuro, G., and Cardoso, M. (2003e). Specifying the geometric machine visual language. In IEEE Symposium on Visual Languages and Formal Methods, pages 1–3. Rossum, G. and Drake, L. (2003). Python tutorial. http://www.pythonorg/doc/current/tut/tut.html).

(dispon´ıvel via WWW em

West, D. (1996). Introduction to Graph Theory. Birkhauser. Wilson, R. (1996). Introduction to Graph Theory. Addison Wesley.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.