• Aucun résultat trouvé

Os Esquemas de Grafos de um algoritmo (Graph Schemes of algorithm – GSs) são um método de especificação gráfica que consiste num grafo dirigido composto por diferentes tipos de nodos interligados por arcos que definem os fluxos de execução possíveis de um algoritmo. Os GSs foram propostos em [Baranov74] e são também apresentados em [Baranov94]. A sua construção é bastante semelhante à de um fluxograma. A Figura 4.5 ilustra os vários tipos de nodos que podem aparecer num GS. Cada GS é composto pelo menos por dois nodos rectangulares com os cantos arredondados: um inicial denominado “Begin” e um final denominado “End” que determinam respectivamente o início e o fim do algoritmo. Além destes, um GS é também constituído por um conjunto finito de nodos operacionais (rectangulares) e um conjunto finito de nodos condicionais (losangulares). Os primeiros são utilizados para activar uma lista de sinais de saída quando o respectivo nodo é activado. Os nodos losangulares representam um teste ao valor lógico de um sinal de entrada que determinará o caminho a seguir no grafo, influenciando o fluxo de execução do algoritmo.

Begin End 0

1

Figura 4.5 – Tipos de nodos de um GS.

Um GS possui a seguinte descrição formal [Baranov94]:

• Cada GS possui um ponto de entrada representado por um nodo rectangular com os cantos arredondados e marcado com a etiqueta Begin e um ponto de saída que é também identificado por um nodo semelhante ao anterior mas marcado com a etiqueta End;

• Os nodos operacionais são representados graficamente por rectângulos e

possuem microinstruções do conjunto O={o1, o2, …, oK}. Qualquer

microinstrução ok possui um subconjunto de microoperações do conjunto

Y={y1, y2, …, yN}. Uma microoperação é um sinal de saída da unidade de controlo que provoca uma acção simples na unidade de execução, tal como o carregamento de um registo ou o incremento de um contador. É possível utilizar a mesma microinstrução em nodos operacionais diferentes. De facto, a noção de microinstrução é em tudo idêntica à de vector de saída usada na definição de FSM, pelo que são usados os mesmos símbolos;

• Cada nodo condicional possui apenas um elemento do conjunto X={x1, x2, …, xM}, que contém todas as condições lógicas. Uma condição lógica é um sinal de entrada, que comunica o resultado de um teste, como por exemplo o estado de um sensor ou o resultado de uma comparação. Diferentes nodos condicionais podem conter a mesma condição lógica;

• Todos os nodos possuem apenas uma entrada, à excepção do Begin, que não possui entrada. Todos os nodos operacionais possuem uma saída. O nodo

End não possui saída. Um nodo condicional tem duas saídas marcadas com

as etiquetas “0” (falso) e “1” (verdadeiro);

• As entradas e as saídas dos nodos são ligadas por linhas dirigidas (arcos) de uma saída para uma entrada, tal que:

• Uma saída ligue apenas a uma entrada;

• Uma entrada fique ligada a pelo menos uma saída;

• Um nodo deve ficar ligado de forma a fazer parte de pelo menos um caminho desde o nodo Begin até ao nodo End.

Na Figura 4.6 está ilustrado o GS que descreve o comportamento da unidade de controlo da máquina de venda automática. Neste caso assume-se que quando é atingido o nodo “End” a execução é automaticamente reiniciada no nodo “Begin”. De notar que apesar da semelhança visual entre os GSs e as ASMs, em particular se não forem usados os rectângulos delimitadores, os dois formalismos possuem diferenças fundamentais, das quais se realçam as seguintes:

• Enquanto nas ASMs está definido um bloco básico a ser usado na construção desse tipo de diagramas, nos GSs as entidades fundamentais são os vários tipos de nodos que podem ser interligados de qualquer forma desde que se respeitem as regras acima apresentadas;

• Ao contrário das ASMs, os GSs possuem nodos especiais de “Begin” e “End” que representam os pontos de entrada e de saída de um algoritmo; • Nas ASMs existe uma correspondência de um para um entre as caixas de

estado e os estados da FSM correspondente. No caso da máquina de Moore as saídas são especificadas no interior das caixas de estado enquanto na máquina de Mealy são colocadas nas caixas de saídas condicionais. Por oposição num GS não existe uma correspondência directa entre os nodos operacionais e os estados, devendo ser realizada a sua marcação com etiquetas que representam os estados. As regras de marcação dependem do tipo de modelo adoptado (Moore ou Mealy) e estão apresentadas em [Rocha99, Melo00]. Este é um dos motivos pelo qual se considera que os GS proporcionam uma descrição que é independente da implementação do circuito.

Tal como os STDs e as ASMs, os GSs também não suportam a representação explícita de concorrência e hierarquia, pelo que não são adequados para descrever sistemas complexos. No entanto, os Esquemas de Grafos Hierárquicos (Hierarchical

Graph Schemes - HGSs), introduzidos em [Sklyarov84], suportam descrições hierárquicas

baseadas no uso de macrooperações e de funções lógicas. Os Esquemas de Grafos Hierárquicos Paralelos (Parallel Hierarchical Graph Schemes - PHGSs), introduzidos em [Sklyarov87], além das descrições hierárquicas permitem que as macrooperações sejam invocadas em paralelo. Ambos são apropriados para descrever sistemas complexos e são descritos na próxima secção.

Begin M50 M100 Cancelar M50 M100 Cancelar M50 M100 Rejeição Rejeição Continuar Cancelar Cancelar Continuar Lata, Rejeição Devolução, Rejeição Lata, Troco, Rejeição End 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 E100 E200 E50 E150

ELataTroco ECancelada ELata

EInicial

Figura 4.6 – Exemplo de um esquema de grafos para descrição do comportamento da unidade de controlo da máquina de venda automática.