JFLAP

JFLAP, програма (графичка алатка) за тестирање на задачи и проблеми од теоријата на формални јазици и автомати.
1 Вовед
JFLAP е графичка програма (visual framework), која е креирана за решавање на проблеми со конечни автомати. Тука спаѓаат Тјуринговите машини, конечните (детерминистички и недетерминистички) автомати, pushdown автоматите, регуларните јазици и граматики. Програмот освен што може да се користи за тестирање (внесување на одредена машина и преку одредени примери тестирање на нејзината работа), може да се користи и при извршување на некои специфични проблеми како што се:
* детминизрање на НКА
* минимизирање на ДКА
* претварање на ДКА во регуларен израз, граматика
* претварање на регуларен израз во КА
* претварање на ПДА во граматика
* претварање на граматика во ПДА
* и други проблеми
Програмата е многу лесна за користење и може да биде од голема помош при решавањето на проблеми од ваков тип. Не е единствена ваква програма, но се издвојува со модуларност и целосност, а моментално е најпознтата во самата област.
Програмата е бесплатана (кодот не е отворен) и може да се превземе од интернет страната на креаторите.
2 Инсталација и покренување
Инсталацијата е наједноставниот дел. Програмата е креирана во Јава, така што за нејзино покренување треба на некоја од јава-подржаните платформи да има веќе инсталирано јава виртуелна машина (Java Runtime Envivorment). Подетално за JRE-то може да се видат надворешните линкови. Се дистрибуира како извршива Jar датотека. Доколку на системот е извршено поврзување на Jar екстензијата со виртуелната машина тогаш програмат се покренува со двоен клик. Во спротивен случај од командна линија во директориумот каде се наожа Jar датотеката се извршува командата:
java -jar JFLAP.jar
Треба да се внимава доколку се превзема последната верзија од JFLAP, да се има и некоја од последните верзии на Јава (моментално JRE 1.5).
3 Користење
3.1 Основен екран
По стартувањето на програмот се појавува основната конфигурација на програмот. Освен едноставното мени со прилично очекувани опции, почетниот прозорец содржи листа од копчиња. Со избирање на некое од нив се отвара соодветниот едитор. Во менито постојат стандарди опции како што се: помош (составена од кратко упатсво), зачувување и отварање на веќе зачувани програми, излез и слично.
3.2 Едитори
Со кликање на некое од копчињата од листата на основниот екран се вклучува соодветниот едитор. Првите четири едитори (ТМ, КА, ПДА и ТМ со повеќе ленти) се многу слични. Тие се состојат од четри основни копчиња. Нивната функција по редослед е следната:
# Копче за својства – во овој мод кога во едиторот се внесени одредени состојби со десен клик се дава можност за избор на некој опции како што се: почетна состојба, крајни состојби и слично
# Копче за внесување состојби – во овој мод со кликање било каде во областа за едитрање се внесува состојба
# Копче за транзиции – во овој мод се врши поврзувањето на состојбите со помош на стрелки (ребра). Ова е воедно и најпроблематичниот и најважниот мод за работа. Се разликува во зависност од едиторот. Се користи на тој начин што доколку треба да се поврзат две состојби се клика на првата, се држи копчето од глушецот и се отпушта на втората. За креирање на премин во иста состојба само се клика на состојбата. По извршување на оваа акција се појавува одредено поле или полиња во кој се опишува преминот. Доколку се работи со КА се појавува само едно поле во кое се внесува аргументот на функцијата на премин. При користње на ТМ или ПДА се појавуваат три полиња. Нивната улога лесно се воочува (нормално различна е во зависност од контекстот – дали се користи ТМ или ПДА). Единствениот проблем при внесувањето на вредности во овии полиња е што кога се користи глушецот доааѓа до потешкотии кога стрелките кои ги креираме се под некаков агол. Во тој случај најдобро е да се кориси тастатурата, односно копчето Tab со кое се преминува од едно во друго поле.
# Копче за бришење – во овој мод се бришат состојби или премини со кликање над нив
Последните три едитори (граматики, L-системи и регуларни изрази) се различни од претходните, а и меѓу себе. Нивното користење се сведува на внесување на правила, аксиоми и регуларни изрази.
Во најголемиот број на едитори (односно таму каде што има логика), во менито постои подмени Input. Тука се внесуваат конкретни тест примери со кои се тестираат машините (или граматиката). Исто така постои и подемни Convert во кој се надени можности за конвертирање во зависност од контекстот (пример граматика во ПДА).
4 Забелешка
Овaa прогрма нема опција за внесување и проверка на нормални алгоритми. Начинот на кој тие би се проверувале со помош на компјутер е толку едноставен и може да се реши со неколку линии програмски код.
5 Кратенки
* КА – конечен автомат
* ДКА – детерминистички конечен автомат
* НКА – недетерминистички конечен автомат
* ПДА – push-down автомат
* ТМ – Тјурингова машина
6 Надворешни линкови
**