Opis podstawowych funkcji PC- SHELLa addfact - instrukcja addfact umożliwia utworzenie i dodanie faktu do bazy wiedzy - w sposób dynamiczny - podczas wykonywania programu z bloku control. neditbox - Instrukcja neditbox jest narzędziem do wprowadzania informacji liczbowej. Powoduje ona wyświetlenie okna zawierającego pole edycji liczb, tekst wiadomości dla użytkownika oraz przyciski "OK" oraz "ANULUJ". setsvstext - instrukcja służąca do zmiany domyślnych ustawień wartości systemu PC-Shell. Możliwe do zmiany są dwa parametry: problem oraz notconfirmed. Problem określa postać tekstu wyświetlanego w oknie konsultacji oraz w oknie rozwiązania goal - instrukcja goal inicjuje proces wnioskowania wstecz, którego zadaniem jest potwierdzenie danego celu (hipotezy). delnewfacts - instrukcja powoduje usunięcie z bazy wiedzy wszystkich nowych faktów, o ile takie się w niej znajdują. Do kategorii nowych faktów zalicza się te fakty, które nie są częścią opisu w bloku facts bazy wiedzy. slistbox - instrukcja wyświetlająca listę łańcuchów tekstowych spośród których użytkownik może wybrać jeden. Po naciśnięciu przycisku OK jego indeks znajdzie się w zmiennej Odp. vignette- instrukcja służąca do wyświetlenia winiety dla aplikacji użytkownika. Pojawienie się winiety powoduje zatrzymanie pracy programu zawartego w bloku control. Wznowienie pracy programu następuje po naciśnięciu przycisku 'OK', umieszczonego na winiecie. strcat - instrukcja umożliwia konkatenację dwóch łańcuchów znakowych, poprzez dołączenie do końca łańcucha reprezentowanego przez Sl początku łańcucha S2. Rezultat - połączone teksty - będzie umieszczony w zmiennej reprezentowanej tu przez Sl. messagebox - instrukcja messagebox powoduje wyprowadzenie informacji (komunikatu) reprezentowanego przez S2 w formie okna z przyciskiem "OK". createappwindow - instrukcja createappwindow otwiera okno aplikacji systemu PC-Shell. Okno przykrywa okno główne systemu PC-Shell, wraz z jego menu i paskami narzędziowymi, tworząc własne tło do pracy aplikacji. setappwintitle - instrukcja setappwintitle ustala tytuł okna aplikacji systemu PC-Shell. Funcje umożliwiające komunikacje z programem Excel
opensheet - instrukcja tworząca nowy skoroszyt o nazwie jako pierwszy argument i definiuje jego postać początkową na podstawie wzorca określonego w pliku o nazwie drugiego argumentu. Skoroszyt zostaje utworzony w systemie i od tego momentu jest on dostępny pod nazwą pierwszego argument w naszym przypadku jest to nazwa - Motor. setsheetvalue - instrukcja zapisująco w skoroszycie podanym skoroszycie, w danym arkuszu w komórce w wierszu W i kolumnie K wartość określoną w parametrze ostatnim. showsheet - instrukcja tworząca okno z widokiem skoroszytu otwartego za pomocą instrukcji opensheet. Parametr drugi określa, czy na widoku można wykonywać operacje edycji arkuszy. W naszym przypadku parametr ten zostal ustawiony na 1 - możliwość edycji. writesheet - instrukcja zapisująca zawartość skoroszytu o odpowiedniej nazwie w odpowiednim pliku. Funkcje odpowiadające za tworzenie menu createmenu - tworzy identyfikator nowe menu do użycia w instrukcji fullmenu. W naszym przypadku identyfikatorem jest nazwa MenuGl. createpopupmenu - tworzy nowe podmenu o nazwie w drugim parametrze. appendmenu - instrukcja służąca do tworzenia pozycji menu, którą podpinamy do menu identyfikowanego przez identyfikator MenuGl. fullmenu - powoduje uruchomienie okna aplikacji systemu. PRZYKŁAD PROGRAMU knowledge base inwestor facets //blok faset (deklaracje atrybutów) single yes; kwota_do_zainwestowania; //query"podaj kwotę" //val oneof,"do 5000", "od 5000 do 30000", "powyżej 30000"-; dochód_na_osobę: query"podaj dochód" val oneof,"poniżej średniej", "powyżej średniej"- //przyporzadkowanie atrybutowi dochód na osobę rysunku kasa.bmp picture "kasa.bmp"; przeznaczenie: query"podaj przeznaczenie" val oneof,"niewielki zakup", "większy zakup"-; termin_wykorzystania: query"podaj termin" val oneof{"do roku", "min za rok"}; wiek; //query"podaj wiek" //val oneof,"do 35", "powyżej 35"-;
ryzyko: query"podaj ryzyko" val oneof{"tak", "nie"}; stan_majątkowy: query"podaj stan" val oneof,"dobry", "zły"-; rules inwestycja: val oneof,"lokata_w_banku","fundusz_powierniczy","obligacje","nieruchomości","akcje"- //przyporzadkowanie atrybutowi inwestycja rysunku kasa.bmp picture "kasa.bmp"; //blok reguł //przykład reguły złożonej inwestycja="lokata_w_banku" if dochód_na_osobę="poniżej średniej") przeznaczenie= "niewielki zakup") ryzyko="nie"); inwestycja="fundusz_powierniczy" if przeznaczenie= "większy zakup", termin_wykorzystania="do roku") ryzyko="nie") stan_majątkowy="zły") stan_majątkowy="zły"); inwestycja="obligacje" if przeznaczenie= "większy zakup", termin_wykorzystania="min za rok") ryzyko="nie");
inwestycja="akcje" if ryzyko="tak"); //przykład reguły prostej inwestycja="nieruchomości" if kwota_do_zainwestowania>30000, ryzyko="nie"; //blok sterowania control //deklaracje zmiennych float Kwota, Wartosc[3], WartOdsetek, Liczba, Procenty; int Wiek, Odp, Czas; char Imie, Nazwisko, Suma, Tytuł*3+, Npoz*3+, Odsetki; //uruchomienie programu run; //tworzenie winiety i okna programu vignette("rodzaj inwestycji", "Przykładowa baza wiedzy", "Copyright by PO"); createappwindow; setappwintitle ("INWESTOR"); //menu programu menu "Opcje programu" 1."Wybór inwestycji" 2."Obliczenia" 3."Wyjście" case 1: //wprowadzenie zmiennej Imie seditbox (0,0,"Dane", "Podaj Imię",0,Imie); //wprowadzenie zmiennej Nazwisko seditbox (0,0,"Dane", "Podaj Nazwisko",0,Nazwisko); //połączenie (doklejenie) dwóch łaocuchów znakowych strcat(imie," "); strcat(imie,nazwisko); messagebox(0,0,"witaj w programie", Imie); //przypisanie zmiennej Odp wartości 1
Odp := 1; //sprawdzenie warunku while( Odp == 1 ) begin //wprowadzenie zmiennej Kwota neditbox (0,0,1,100000, "Podaj wysokośd kwoty jaką chcesz zainwestowad", Kwota); //dodanie faktu do bazy wiedzy addfact(_,kwota_do_zainwestowania,kwota); //wprowadzenie zmiennej Wiek neditbox (0,0,1,100000, "Ile masz lat?", Wiek); //dodanie faktu do bazy wiedzy addfact(_,wiek,wiek); //przekształcenie wartości liczbowej zmiennej Kwota do postaci łaocucha znakowego Suma ntos(kwota,suma); messagebox(0,0,"przypominam, że Twoja kwota do zainwestowania to ",Suma); //zainicjowanie procesu wnioskowania w tył goal("inwestycja=x"); //uruchomienie innej aplikacji Windows np. otwarcie pliku tekstowego bez konieczności opuszczania PC-Shell system("notepad.exe plik.txt"); messagebox(0,0,"info", "Powodzenia w inwestowaniu"); //umozliwienie kontynuacji lub zaniechania pewnych działao np. powtórzenie konsultacji confirmbox( 0, 0, "Czy chcesz kontynuowad konsultację?", "Naciśnij 'OK' jeśli tak, 'ANULUJ' jeśli nie", Odp ); //usunięcie z bazy wiedzy wszystkich nowych faktów delnewfacts; case 2: case 3: //deklaracja tytułów okna i kolumn Tytuł*0+:="Szacowanie wartości odsetek od lokaty bankowej"; Tytuł*1+:="Nazwa"; Tytuł*2+:="Wartośd"; //opis pozycji wierszy tablicy Npoz[0]:="KwotaDoZainwestowania"; Npoz*1+:="StawkaOprocentowania (w procentach/miesiąc)"; Npoz*2+:="CzasLokaty (w miesiącach)"; //utworzenie arkusza do wprowadzania danych liczbowych nsheetbox(0,0,3,0,tytuł,npoz,wartosc); //zapisanie procedury obliczenia wartości odsetek WartOdsetek:= (Wartosc[0]*Wartosc[1]/100*Wartosc[2])-Wartosc[0] ; //przekształcenie wartości liczbowej zmiennej WartOdsetek do postaci łaocucha znakowego Odsetki ntos(wartodsetek,odsetki); //wyświetlenie komunikatu messagebox(0,0,"szacowana wartośd odsetek wynosi",odsetki); //komunikat messagebox(0,0,"info","szkoda że chcesz opuścid program"); exit;