;Program pro evidenci letadel ; ;nasledujici tabulka obsahuje vsechny udaje o letounech. ; nakladni letadlo - nosnost [t] ; dopravni letadlo - kapacita [osob] ; Nazev typ nosnost[t] dolet[km] max. rychlost[km/h] datum prvniho letu kapacita[osob] ;----------------------------------------------------------------------------------------------------- ; Airbus A380 dopravni 853 15200 1176 2005 ; Antonov An-225 nakladni 250 15400 850 1988 ; Antonov An-124 nakladni 150 15000 865 1982 ; Antonov An-2 dopravni 12 845 258 1947 ; Iljusin IL-62M dopravni 198 11000 900 1971 ; Concorde dopravni 120 7250 2330 1969 ; Boeing 747-400 dopravni 416 14205 1093 1988 ; Lockheed C-5 nakladni 122 11700 931 1968 ; Lockheed C-17 nakladni 77 4482 830 1991 ; ;================================================================================================== (deffacts letadla (letadlo "Airbus A380" "dopravni" 853 15200 1176 2005) (letadlo "Antonov An-225" "nakladni" 250 15400 850 1988) (letadlo "Antonov An-124" "nakladni" 150 15000 865 1982) (letadlo "Antonov An-2" "dopravni" 12 845 258 1947) (letadlo "Iljusin IL-62M" "dopravni" 198 11000 900 1971) (letadlo "Concorde" "dopravni" 120 7250 2330 1969) (letadlo "Boeing 747-400" "dopravni" 416 14205 1093 1988) (letadlo "Lockheed C-5" "nakladni" 122 11700 931 1968) (letadlo "Lockheed C-17" "nakladni" 77 4482 830 1991) ) (deffacts MenuFact (menu) ) (defrule menu ?x <- (menu) => (retract ?x) (printout t " " crlf crlf crlf) (printout t "Vyberte akci a stisknete klavesu enter " crlf) (printout t "Vypis vsech letadel................................... 1" crlf) (printout t "Vypis podle maximalni rychlosti....................... 2" crlf) (printout t "Vypis vsech nakladnich letadel........................ 3" crlf) (printout t "Vypis vsech dopravnich letadel s doletem nad 12000 km 4" crlf) (printout t "KONEC PROGRAMU........................................ k" crlf crlf) (printout t "Napiste cislo prikazu, ktery chcete provest:") (assert (VybranyPrikaz (read))) (printout t " " crlf crlf) ) (deffunction JednotkaNosnosti (?typLetadla) ( if (eq ?typLetadla "dopravni") then (return " osob") else if (eq ?typLetadla "nakladni") then (return "tun") else (return "error")) ) (deffunction VypisLetadlo(?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet ) (printout t " " ?nazev ", " ?typ ", " ?nosnost " ") (printout t (JednotkaNosnosti ?typ)) (printout t ", " ?dolet " "km ", " ?maxRychlost " "km/h", "rok " " ?vzlet crlf) (return 0) ) ; pravidlo pro vypis vsech letadel (defrule VypisVsechnaLetadla (VybranyPrikaz 1) (letadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) => (VypisLetadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) ) ; maximalni rychlost (defrule MaximalniRychlost (VybranyPrikaz 2) => (printout t "Vyberte operator porovnavani <, >, =: ") (assert(OperatorPorovnavani (read))) (printout t "Zadejte max. rychlost (km/h): ") (assert(ZadanaMaxRychlost (read))) (assert(VybranyPrikaz PrikazMaxRychlost)) (printout t "podmince vyhovuji tato letadla:" crlf) ) (defrule MaxRychlostMensi (VybranyPrikaz PrikazMaxRychlost) (ZadanaMaxRychlost ?rychlost) (OperatorPorovnavani <) (letadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost&:(< ?maxRychlost ?rychlost) ?vzlet) => (VypisLetadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) ) (defrule MaxRychlostVetsi (VybranyPrikaz PrikazMaxRychlost) (ZadanaMaxRychlost ?rychlost) (OperatorPorovnavani >) (letadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost&:(> ?maxRychlost ?rychlost) ?vzlet) => (VypisLetadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) ) (defrule MaxRychlostRovnost (VybranyPrikaz PrikazMaxRychlost) (ZadanaMaxRychlost ?rychlost) (OperatorPorovnavani eq) (letadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost&:(eq ?maxRychlost ?rychlost) ?vzlet) => (VypisLetadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) ) ; vypis vsech nakladnich letadel (defrule VypisNakladnichLetadel (VybranyPrikaz 3) => (assert(VybranyPrikaz prikazNakladniLetadla)) (printout t "vypis vsech nakladnich letadel:" crlf) ) (defrule NakladniLetadla (VybranyPrikaz prikazNakladniLetadla) (letadlo ?nazev ?typ&:(eq "nakladni" ?typ) ?nosnost ?dolet ?maxRychlost ?vzlet) => (VypisLetadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) ) ; vypis Vypis vsech dopravnich letadel s doletem nad 12000 km (defrule VypisDopravLetadla_12000km (VybranyPrikaz 4) => (assert(VybranyPrikaz prikazVypisDopravLetadla_12000km)) (printout t "Vypis vsech dopravnich letadel s doletem nad 12000 km:" crlf) ) (defrule DopravLetadla_12000km (VybranyPrikaz prikazVypisDopravLetadla_12000km) (letadlo ?nazev ?typ&:(eq "dopravni" ?typ) ?nosnost ?dolet&:(> ?dolet 12000) ?maxRychlost ?vzlet) => (VypisLetadlo ?nazev ?typ ?nosnost ?dolet ?maxRychlost ?vzlet) ) (defrule KonecProgramu (VybranyPrikaz k) => (printout t "Program byl ukoncen " crlf) (halt) )