home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1997 #3 / amigamamagazinepolishissue03-1 / ma_1995 / 12 / ami044.txt < prev    next >
Text File  |  1997-04-07  |  5KB  |  234 lines

  1.  
  2. -----------------Uwaga! Fragmenty w >...< boldem------------------
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. SYSTEMY EKSPERCKIE
  10.  
  11. <lead>Miîe Panie, szanowni Panowie... Dzisiaj stawiamy przed sobâ
  12. wielce ambitne zadanie: postaramy sië stworzyê "sztucznâ
  13. inteligencjë" o nazwie HAL (zupeînie jak w "Odysei kosmicznej
  14. 2001").
  15.  
  16. <a>Krzysztof Prusik
  17.  
  18. <txt>Jasne jest juû chyba dla wszystkich, ûe nawet tak
  19. zaawansowany technologicznie komputer, jak Amiga, bez
  20. odpowiedniego oprogramowania nie jest w stanie wykonywaê nawet
  21. elementarnych czynnoôci (nie wspominajâc o myôleniu). Zabierzmy
  22. sië wiëc do dzieîa i sprawmy, ûeby nasza Amisia "odezwaîa sië"
  23. przyjaznym nam gîosem.
  24.  
  25. <l>Screen Open 0,640,256,2,Hires : Clw
  26.  
  27. Print
  28.  
  29. Print " Czeôê, nazywam sië HAL"
  30.  
  31. Print " A Ty, jak masz na imië?";
  32.  
  33. Input IMIE$
  34.  
  35.  
  36. <txt>Po wykonaniu tych kilku rozkazów Amiga zachowa sië juû jak
  37. superkomputer HAL, dyplomatycznie przedstawiajâc sië i pytajâc
  38. uûytkownika o imië. Gdybyômy do naszego komputera podîâczyli
  39. czujniki gîosu, lub nawet linii papilarnych, Amiga szybko i bez
  40. problemu sprawdziîaby, kim jesteômy, ale tak, musi nam zadaê
  41. odpowiednie pytanie, ûeby wiedzieê z kim ma doczynienia.
  42.  
  43. <l>' Wnioskowanie
  44.  
  45. If IMIE$="Staô"
  46.  
  47.     ZNAM_GO=True
  48.     
  49. Else
  50.  
  51.     ZNAM_GO=False
  52.     
  53. End If
  54.  
  55. ' Wyprowadzenie wyniku
  56.  
  57. If ZNAM_GO
  58.  
  59.     Print " Miîo Cië znowu widzieê, ";IMIE$
  60.     
  61. Else
  62.  
  63.     Print " Niestety nie mieliômy jeszcze okazji sië zapoznaê"
  64.     
  65.     IDENTYFIKACJA_OSOBY
  66.     
  67. End If
  68.  
  69. <sr>Wnioskowanie
  70.  
  71. <txt>Jeûeli uûytkownik wpisze "Staô" (przypuôêmy, ûe tak ma na
  72. imië), komputer bëdzie juû wiedziaî, kto siedzi przy klawiaturze.
  73. W przeciwnym razie moûe zadaê serië pytaï uzupeîniajâcych, a
  74. nawet spróbowaê samodzielnie wnioskowaê (i ewentualnie zapisaê
  75. nowo zdobyte przez siebie informacje na dysk, w celu przyszîego
  76. ich wykorzystania). Patrz rys. 1.
  77.  
  78. ----------------------!Rys.1!---------------------------
  79.  
  80. <l>Procedure IDENTYFIKACJA_OSOBY
  81.  
  82.     ' zmienne globalne
  83.     
  84.     Shared IMIE$,WIEK,KOBIETA
  85.     
  86.     ' wycinamy jednâ literë z prawego koïca
  87.     
  88.     KONCOWKA$=Right$(IMIE$,1)
  89.     
  90.     ' próba wnioskowania: czy mëûczyzna?
  91.     
  92.     If KONCOWKA$<>"a"
  93.     
  94.         Print " Myôlë, ûe jesteô pîci mëskiej"
  95.     
  96.         Print " Mylë sië? ";
  97.     
  98.     Else
  99.     
  100.         Print " Czyûbym miaî doczynienia z kobietâ? ";
  101.     
  102.     End If
  103.     
  104.     Input ODPOWIEDZ$
  105.     
  106.     ' ustalamy zmiennâ KOBIETA
  107.     
  108.     If ODPOWIEDZ$="tak"
  109.     
  110.         KOBIETA=True
  111.     
  112.     Else
  113.     
  114.         KOBIETA=False
  115.     
  116.     End If
  117.     
  118.     ' wyprowadzenie odpowiedzi HAL-a
  119.     
  120.     If KOBIETA
  121.     
  122.         Print " Bardzo lubië rozmawiaê z dziewczynami"
  123.     
  124.     Else
  125.     
  126.         Print " I jeszcze jeden facet przy komputerze"
  127.     
  128.     End If
  129.     
  130.     ' ile masz lat?
  131.     
  132.     Print IMIE$;"Ile masz lat?";
  133.     
  134.     Input WIEK
  135.     
  136.     ' wnioskujemy i odpowiadamy
  137.     
  138.     If WIEK>15
  139.     
  140.        Print "Wiëc jesteô juû dorosî";
  141.        
  142.         If KOBIETA
  143.       
  144.             Print "â kobietâ"
  145.       
  146.         Else
  147.       
  148.             Print "ym mëûczyznâ"
  149.  
  150.         End If
  151.  
  152.     Else
  153.  
  154.         Print "A wiëc jesteô juû prawie dorosî";
  155.  
  156.         If KOBIETA
  157.  
  158.             Print "a"
  159.  
  160.         Else
  161.  
  162.             Print "y"
  163.  
  164.         End If
  165.  
  166.     End If
  167.  
  168. End Proc
  169.  
  170. <txt>I tu zaczynajâ sië
  171.  
  172. <sr>Schody
  173.  
  174. <txt>1. A co bëdzie, gdy uûytkownik programu napisze odpowiedú
  175. duûymi literami? Bo przecieû, pomimo tego, ûe dla nas
  176. "TAK"="Tak"="tak"="TaK", to jednak dla komputera sâ to zupeînie
  177. róûne sîowa. Moûna temu zaradziê wykonujâc (w odpowiednich
  178. miejscach programu):
  179.  
  180. <l>If Upper$(ODPOWIEDZ$)="TAK"
  181.  
  182. <txt>Wtedy wielkoôê liter nie ma znaczenia, bo i tak wszystkie
  183. zostanâ zamienione na duûe.
  184.  
  185. <przyp>Uwaga! Upper$ AMOS-a nie uwzglëdnia polskich znaków w
  186. standardzie AmigaPL. Na dysku doîâczonym do ksiâûki (AMOS Pro w
  187. praktyce, wyd. RaWi sc.) umieôciîem wîasnâ procedurë, która
  188. eliminuje të wadë AMOS-a.
  189.  
  190. <txt>2. A co bëdzie, gdy ktoô za wprowadzonâ odpowiedziâ dopisze
  191. spacjë? Moûemy temu zaradziê nastëpujâco:
  192.  
  193. <l>If Left$(Upper$(ODPOWIEDZ$),3)="TAK)
  194.  
  195. <txt>Dziëki temu pod uwagë bëdzie brany tylko jeden trzyliterowy
  196. wyraz z lewej strony odpowiedzi.
  197.  
  198. 3. A jeôli uûytkownik wciônie spacjë przed wprowadzonâ przez
  199. siebie odpowiedziâ? Hmm. Moûemy po prostu przeszukaê ciâg wpisany
  200. przez uûytkownika i sprawdziê, czy wystëpuje w tam sîowo "TAK".
  201.  
  202. <l>If Instr(Upper$(ODPOWIEDZ$),"TAK")<>0
  203.  
  204. <txt>Funkcja >Instr< zwraca wartoôê róûnâ od zera, gdy w tekôcie
  205. przeszukiwanym >Upper$(ODPOWIEDZ$)<, znajdzie sië poszukiwane "TAK".
  206.  
  207. <txt>4. No dobrze, ale jeôli ktoô zamiast "tak", wpisze np.
  208. "oczywiôcie"? Ha! Trzeba uwzglëdniê wszystkie moûliwe odpowiedzi.
  209.  
  210. <l>If ODPOWIEDZ$="tak" or ODPOWIEDZ$="oczywiôcie" or ...
  211.  
  212. <txt>5. A jak komputer zareaguje na odpowiedú "nie wiem", "nie
  213. chcë powiedzieê" albo "nie mam ochoty z Tobâ gadaê"? Hmm. Moûe
  214. niech wypowie w takim wypadku po prostu:
  215.  
  216. <l>Print " Zdecyduj sië, albo z Tobâ nie rozmawiam."
  217.  
  218. <txt>i powtórzy swoje pytanie.
  219.  
  220. 6. Brr! Gdy to wszystko uwzglëdnimy i zakodujemy w postaci
  221. programu w AMOS-ie, HAL niestety nadal bëdzie niedoskonaîy i moûe
  222. sië nawet zdarzyê, ûe nie zrozumie tego, co "mówi" do niego osoba
  223. siedzâca przed klawiaturâ. Bo przecieû w jëzyku naturalnym
  224. istniejâ tysiâce zwrotów typu: "miîo sië z Tobâ rozmawia, HAL".
  225. Co bëdzie, gdy uûytkownik naszego programu uûyje jednego z nich?
  226. Czy HAL musi zgîupieê? Aleû nie, niech po prostu poprosi:
  227.  
  228. <l>Print  " Nie rozumiem tego, co napisaîeô, ";IMIE$
  229.  
  230. Print " Nie moûesz wyraûaê sië jaôniej?"
  231.  
  232. <txt>i powtórzy swoje ostatnie pytanie.
  233.  
  234.