німі, або розгалуженімі.
Віходячі з того, что Кожна вершина графа вікорістовується для відображення елементарної Операції і визначення лінійного алгоритму, згідно Якого ВСІ Дії віконуються Тільки один раз и в строгій послідовності, у вершини винна містіті Тільки Одне вхідне ребро и Одне Вихідне .
У разі Використання вершин умовно оператора (IF. ELSE) в алгоритмах розгалуження на неї накладається обмеження згідно Якого Тільки вершина умовно оператора может мати два вихідних ребра: гілка Виконання умови и гілка НЕ ??Виконання умів (гілка ELSE) .
Обмеження на кількість вхідніх ребер вершини может мати віняток Тільки у тому разі, коли вершина є ськладової вершиною циклу DO ... WHILE, або вершиною Закінчення оператора (IF. ELSE).
2.7.1 Алгоритм АНАЛІЗУ перевіркі правільності графу
загально процес побудову алгоритму з допомо Розроблення модуля Складається з трьох основних етапів:
. Схематичного зображення алгоритму у вігляді графу
. Аналіз графу на Виконання обмежень
. Побудову псевдокод алгоритмом.
Аналіз графу віконується перед побудова псевдокод, для возможности его побудову, в разі неуспішного АНАЛІЗУ, буде бачено ПОВІДОМЛЕННЯ про помилки, яка вінікла при аналізі и можливіть причину ее ВИНИКНЕННЯ.
Обмеження, Які НЕ реалізовані на Рівні побудова графу перевіряються на стадії АНАЛІЗУ графу, среди них: перевірка на наявність початкової вершини «Введення Даних» та кінцевої вершини «Виведення Даних», перевірка графу на наявність незавершених гілок.
Алгоритм перевіркі на наявність незавершених гілок у графі, являє собою рекурсивний алгоритм обходу, в якому Кожна вершина перевіряється на кількість вихідних ребер, ЯКЩО ціх ребер больше нуля и вершини не вершиною виводу Даних, то результат АНАЛІЗУ буде НЕ успішнім.
нижчих наведено код, Який реалізує Дану перевірку:
/ / /
/ / / Повертає ознака наявності «висячих» вершин
/ / /
/ / / Початкова вершина графа
/ / / true - ЯКЩО Такі вершини є, інакше - false static bool HaveHangingNodes (GraphNode startNode)
{result=false;. InnerEntrisCount + +; (ILink link in startNode. Port. DestinationLinks)
{node=(GraphNode) link. ToNode; (node. IsLoop) continue;=HaveHangingNodes (node); (result) return true;
} (startNode. Port. DestinationLinksCount == 0) =! (StartNode is OutputDataNode); result;
}
Таким чином алгоритм АНАЛІЗУ графу можна зобразіті Наступний чином:
После успішного проходження шкірного з етапів перевіркі графу, аналіз буде вважатіся успішнім, что зробім можливіть подалі побудову псевдокод алгоритмом.
2.8 Вибір технології та мови програмування
Віходячі з поставлених вимог для розробки модуля реалізації алгорітмів на графах з візуалізацією ...