Priekšmets: Funkcionāla programmēšana

Preview:

DESCRIPTION

Priekšmets: Funkcionāla programmēšana. Algoritmu realizācija. Asociētais profesors Vjačeslavs Šitikovs Rīgas Tehniskā universitāte Datorzinātnes un Informācijas Tehnoloģijas fakultāte Lietišķo datorsistēmu programmatūras profesoru grupa E-mail: vss@latnet.lv http:// www.cs.rtu.lv. - PowerPoint PPT Presentation

Citation preview

1

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Priekšmets: Funkcionāla programmēšana

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/00072RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Algoritmu realizācija

Asociētais profesors Vjačeslavs ŠitikovsRīgas Tehniskā universitāteDatorzinātnes un Informācijas Tehnoloģijas fakultāte Lietišķo datorsistēmu programmatūras profesoru grupaE-mail: vss@latnet.lvhttp://www.cs.rtu.lv

3

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Pamatliteratūra• Šitikovs V. “Programmēšanas valoda LISP.

Lekciju konspekts“ // RTU, 2002, 36 lpp.– Valodas LISP īss apraksts ar piemēriem un

paskaidrojumiem• Šitikovs V. “Programmēšanas valoda LISP.

Lekciju konspekts“ // RTU, 2002 / Internet - http://www.cs.rtu.lv/PubsLoc/Sitikovs /saturs.htm

– Valodas LISP īsa apraksta Internet-versija ar piemēriem un paskaidrojumiem

4

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ieteicamajā literatūra• Маурер У. Введение в программирование на языке

ЛИСП. – М.: Мир, 1976. – 104.– Valodas LISP īss apraksts ar piemēriem un paskaidrojumiem

krievu valodā.• Graham P. “On Lisp. Advanced Techniques for Common

Lisp”// Prentice Hall, 1993, 432 pages (free download from http://www.paulgraham.com/onlisptext.html)

– Valodas LISP detalizēts apraksts.• Schwarz M. „LISP Tutorial“ / Internet. - http://cs1.cs.nyu.edu/

phd_students/schwarz/NLCP/lisp.html– Valodas LISP detalizēta apraksta interaktīva versija

5

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads• Visu programmēšanas valodu kopu

var sadalīt:– algoritmiskās vai imperatīvas (instrukciju

valodās) – nealgoritmiskās

• Algoritmiskās– norādīta nepieciešamā darbību secība – universālas programmēšanas valodas

• Pascal, C, Basic u.t.t.

6

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads (2)

• speciālu uzdevumu risināšanā– GPSS - vispārējas apkalpošanas sistēmu

modelēšanai– PROLOG - teorēmu pierādījuma tipa

uzdevumiem– LISP - dialoga realizēšanai valodā, kura

ir tuva dabīgai valodai

7

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads (3)

• LISP– saīsinājums no LISt Processing -

sarakstu apstrādāšana– nealgoritmiska programmēšanas valoda– funkcionāla programmēšanas valoda

8

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads (4)Imperatīva valoda

Input (a,b)

c := a + b

Print (c)

Sakums -> Vidus

-> Nobeigums

Funkcionāla valoda

Print (Plus Input() Input() )

Nobeigums ( Vidus (Sakums) )

9

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads (5)

• LISP– Džona Maikarta vadībā– Masačūsetas tehnoloģiskajā institūtā– 1960.gadā– lai aprakstītu simbolisko izteiksmju

rekursīvās funkcijas

10

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads (6)

• LISP– funkciju valoda– katra konstrukcija, kura ir uzrakstīta

valodā LISP, tiek apskatīta kā funkcija• (A B C) ir A(B,C)• sin x

– algoritmiskā valodās izskatās kā sin(x)– valodā LISP kā (sin x)

11

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Ievads (7)

• valodā LISP izņēmumu nav– x + y

• tiek pierakstīts kā (+ x y)

• par funkcijas argumentu var būt citas funkcijas rezultāts

– (A+B)*(C+D)• tiek pierakstīts kā (*(+ A B)(+ C D))

12

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts

• Alfabēts– burti– cipari– ierobežotāji

• ( - kreisa apaļa iekāva• ) - laba apaļa iekāva• _ - intervāls

• Litera - drukāta zīme no alfabēta

13

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (2)

• Atoms – patvaļīga literu secība, kura atrodas

starp diviem ierobežotājiem un pie kuras nepieder paši ierobežotāji

– konstrukcijā (A(ATOM X24)-ABC(-10 2.5)) atomi ir• A ATOM X24 -ABC -10 2.5

14

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (3)

• Atomi– konstantes– identifikatori

• mainīgie• funkciju vārdi• jāsākas ar burtu un tam jāsastāv tikai no

burtiem un cipariem• nav ierobežojumu mainīgā vārda garumam

15

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (4)

• rezervēti identifikatori– T - patiess (true),– F - nepatiess (false),– NIL - tukšums, kurš bieži tiek lietots

“nepatiess” vietā

16

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (5)

• Mainīgajam var būt vērtība

• Viens no vērtību piešķiršanas veidiem– izmantojot funkciju SETQ

• (SETQ X 5) analoģiski X:=5• (SETQ X (+ Y 1)) analoģiski x:=y+1• (SETQ X Y) analoģiski x:=y• (SETQ X (QUOTE Y)) analoģiski x:=“y”

– (SETQ X ‘Y)

17

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (6)• SETQ

– netieši tiek izmantota funkcija QUOTE– piešķires funkcija SET

• (SET X Y) nozīme ka vērtībai X tiek piešķita Y vērtība– Ja X ir vienāds ar 3 un Y ir vienāds ar 6, tad

funkcija SET piešķirt skaitlim 3 skaitļa 6 vērtību, kas ir bezjēdzība

– (SET(QUOTE X) Y) vai (SETQ X Y)• piešķir mainīgajam X vērtību 6

18

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (7)• ja X vērtība ir simbols Z

– (SET X Y) ievieto mainīgajā Z mainīgā Y vērtību• analoģiski z:=y

19

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (8)• Saraksti

– elementu secība, kura ietverta apaļās iekavās– saraksta elements - atoms vai saraksts– saraksta elementu atdalītāji – intervāli

• Atdalītājs ir nepieciešams, ja abi saraksta blakus elementi ir atomi.

– Sarakstu piemēri• (A B C D) • (x) ((((100)))) (1(2 3)4)• () - tukšs saraksts

20

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (9)• Izteiksme ir atoms vai saraksts

– Dažām izteiksmēm var būt vērtības• Izteiksmes vērtība arī var būt izteiksme

– Izteiksmes, kurām var būt vērtība• konstantes, mainīgie• saraksti

– griešanās pie funkcijām» (P Q R) ir funkcijas P vērtība no argumentiem

Q un R» (G) - funkcija bez argumentiem

21

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (10)• Ir tikai viens konstrukcijas veids, kurš

tiek izskatīts valodā LISP - tās ir funkcijas

• Pārējie valoda LISP līdzekļi, tādi kā:– jaunu funkciju noteikšana– nosacījuma un beznosacījuma vadības

nodošana u.t.t.– tiek noteikti ar speciālu funkciju palīdzību

22

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (11)• Funkcija QUOTE

– Funkcija QUOTE vienīgā, kura neatbilst noteikumam, ka pirmais saraksta elements ir funkcijas vārds, bet pārējie saraksta elementi ir tas funkcijas argumenti

– (QUOTE(saraksts)) vērtība ir pats saraksts

23

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (12)• (SETQ X (1 2 3)) ir bezjēdzīga

– nozīmē: "mainīgajam x piešķirt funkcijas 1 vērtību ar argumentiem 2 un 3

• (SETQ X (QUOTE (1 2 3)))– mainīgajam X ir piešķirta saraksta vērtība– saīsināti (SETQ X ‘(1 2 3))

• funkcijas LIST vērtība ir tās argumentu saraksts

– (LIST 1 2 3) vērtība ir (1 2 3)

24

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (13)• ja mainīgajam x ir piešķirta vērtība 2

– (LIST 1 x 3 x) vērtība ir (1 2 3 2)– (QUOTE(1 x 3 x)) vērtība ir (1 x 3 x)

• Par daudzu funkciju vērtību var būt saraksts

– (DIVIDE 65 3) vērtība ir (21 2), kur• 21 - veselā daļa un 2 - dalījuma atlikums

25

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (14)• Ja par funkcijas argumentu jābūt

atomam un šī argumenta vietā ir saraksts kaut arī no viena elementa, tas noved pie kļūdas. Piemēram,

– (SETQ X (LIST 3))– (SETQ Y (PLUS X 1)) - kļūda, jo

mainīgajam X būs vērtība (3)

26

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Valodas apraksts (15)• Apakšsaraksts - saraksts, kurš

ietverts citā sarakstā

• ((1 6)7((8 4)3))– (1 6)– 7– ((8 4)3)

• (8 4) • 3

27

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursija• griežas pašas pie sevis

– tieši vai arī netieši– griežas pati pie sevis – tieši– A griežas pie B un B pie A – netieši

• Vispārīgā gadījumā ķēdīte var būt garāka

– n! = n * (n-1)!• Pilnīgs noteikums 0! = 1

– izteiksme ir atoms vai (izteiksmju secība)

28

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju izveidošana• Parasti funkciju aprakstā ir četras

pamatdaļas:– apraksta sākuma pazīme (vārds

FUNCTION, PROCEDURE u.t.t.)– funkcijas vārds– parametru saraksts pēc kārtas– nākošie teikumi, kuri patiesība nosaka

(definē) funkciju

29

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju izveidošana (2)• Valodā LISP

– DEFUN - funkcija, lai aprakstītu funkciju• 3 argumenti

– (DEFUN A (B C) D)• D ir funkcijas A ar argumentiem B un C

apraksts

– (DEFUN A (X Y) (+ X Y))– (DEFUN P (X) (* X X))

• (P 7) rezultāts ir 49

30

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju izveidošana (3)• Parametri

– formālie• tiek lietoti funkcijas aprakstam• tikai identifikatori

– faktiskie• lai grieztos pie funkcijas• var būt izteiksmes

31

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju izveidošana (4)• F(x,y) = x*x-y*y

• (DEFUN F (X Y) (-(* X X) (* Y Y)))– X un Y - formālie parametri– 4 un 3 – faktiskie parametri– (F 4 3) nozīmē, ka

• X saistās ar 4• Y saistās ar 3• F(4,3) =4*4-3*3=16-9=7

32

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju izveidošana (5)• (DEFUN F (X) (- (* X X) (* Y Y)))

– funkcijas vērtība ir atkarīga no tā, kāda vērtība funkcijas izskaitļošanas brīdī būs mainīgajam Y

– X ir saistošs (lokālais) mainīgais– Y ir brīvais (globālais) mainīgais

33

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei• trīs primitīvākās

– CAR, CDR un CONS

• CAR– arguments ir saraksts– vērtība ir pirmais saraksta elements– Ja x ir (2 6 4 7), tad (CAR x) ir 2– Ja x ir (2 (6 (4 (7)))), tad (CAR x) ir 2– Ja x ir ((2 6)(4 7)), tad (CAR x) ir (2 6)

34

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (2)• CAR

– Ja x ir ((((2)6)4)7), tad (CAR x) ir (((2)6)4)– Ja x ir atoms, tad (CAR x) novedīs pie

kļūdas– (CAR (1 2 3)) ir bezjēdzīga

• griešanos pie funkcijas 1 no argumentiem 2 un 3

– (CAR (QUOTE (1 2 3))) vērtība ir 1

35

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (3)• CDR

– arguments ir saraksts– vērtība ir saraksta atlikums bez pirma

elementa– Ja x ir (2 6 4 7), tad (CDR x) ir (6 4 7)– Ja x ir ((2 6)(4 7)), tad (CDR x) ir ((4 7))– Ja x ir ((((2) 6) 4) 7), tad (CDR x) ir (7)

36

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (4)• CDR

– Ja x ir saraksts ar precīzi vienu elementu, tad (CDR x) ir NIL, kurš šajā gadījumā apzīmē tukšu sarakstu

– Ja x ir atoms, tad (CDR x) novedīs pie kļūdas

37

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (5)• CONS

– savāc (savieno) to, ko CAR un CDR ir sadalījusi daļās

– pirmais arguments vienalga kas– otrais arguments obligāti saraksts– Ja x ir 2 un y ir (6 4 7), tad (CONS x y) ir

(2 6 4 7)

38

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (6)• CONS

– Ja x ir 2 un y ir ((6 (4(7)))), tad (CONS x y) ir (2 (6 (4 (7))))

– Ja x ir (2 6) un y ir ((4 7)), tad (CONS x y) ir ((2 6)(4 7))

– Ja x ir (((2) 6) 4) un y ir (7), tad (CONS x y) ir ((((2) 6) 4) 7)

– (CONS (CAR x) (CDR x)) ir x

39

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (7)• CAR un CDR kombinācijas

– (CAR (CDR L)) – saraksta L otrais elements• saīsināti (CADR L)

– (CAR (CDR (CDR L))) – saraksta L trešais elements• saīsināti (CADDR L)

– u.t.t.

40

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (8)• Atkarībā no realizācijas

D D– C ... R

A A

– (CDADDR Y) nozīmē

(CDR (CAR (CDR (CDR Y))))

41

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas sarakstu apstrādei (9)• APPEND

– savieno savā starpā divus sarakstus– Ja X ir (1 2 3) un Y ir (4 5 6), tad

(APPEND X Y) ir (1 2 3 4 5 6)– (CONS X Y) būtu ((1 2 3) 4 5 6)

42

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Predikāti• funkcijās, kuru vērtība (rezultāts) var

būt "patiesība" vai "meli“

• Valodā LISP predikātiem ir vērtība– T - patiess vai– NIL - nepatiess

43

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Predikāti (2)• Funkcija ATOM

– arguments ir atoms vai saraksts– ja atoms, tad funkcijas vērtība ir T, pretējā

gadījumā NIL– ja X ir 5, tad (ATOM X) ir T– ja X ir simbols, tad (ATOM X) ir T– ja X ir (1 2 3), tad (ATOM X) ir NIL

44

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Predikāti (3)• Funkcija NULL

– pārbauda vai tās argumenta vērtība nav NIL

– ja X ir 5, tad (NULL X) ir NIL– ja X ir (1 2 3), tad (NULL X) ir NIL– ja X ir NIL, tad (NULL X) ir T – ja X ir saraksts no viena elementa, tad

(NULL X) ir NIL, bet (NULL (CDR X)) ir T

45

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Predikāti (4)• Funkcija EQUAL

– pārbauda vai divu tās argumentu vērtība ir vienāda

– ja X ir (4 6 (8 3)) un Y ir ((4 6) 8 3), tad (EQUAL X Y) ir NIL

– ja X ir (+ 2 2) rezultāts un Y ir 4, tad (EQUAL X Y) ir T

46

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Predikāti (5)• Funkcija ZEROP

– pārbauda vai tās arguments ir nulle– burts P nosaukumā nozīmē "predicate“– ja arguments ir nulle, tad funkcijas

vērtība ir T, pretējā gadījumā - NIL.

• Funkcija GREATERP vai >– divi argumenti

• Citas funkcijas >= < <= <> u.t.t.

47

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Nosacījuma izteiksmes• nosacījuma operatora vietā, kā

parasti, ir nosacījuma funkcija

• funkcija COND– dažos gadījumos varam izlasīt sākot ar

"ja"– (COND ((ZEROP S)(SETQ Y 12)))

• ja S ir nulle, tad piešķirt mainīgajam Y vērtību 12

48

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Nosacījuma izteiksmes (2)• COND

– nenoteikts argumentu skaits– katrs no argumentiem ir pāris

• saraksts no diviem elementiem

– pirmais pāra elements ir nosacījums– otrais pāra elements ir lielums vai darbība– (COND ((> A 65) 10) ((> A 21) 30) (T 0))

49

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Nosacījuma izteiksmes (3)• COND

– nenoteikts argumentu skaits– katrs no argumentiem ir pāris

• saraksts no diviem elementiem

– pirmais pāra elements ir nosacījums– otrais pāra elements ir lielums vai darbība– (COND ((> A 65) 10) ((> A 21) 30) (T 0))

• if A>65 then 10 else if A>21 then 30 else 0

50

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Nosacījuma izteiksmes (4)• Vispārējā gadījumā

– LISP pēc kārtas apskata katru pāri no pirmā līdz pēdējam

– ja nosacījuma vērtība nav T tiek ņemts nākošais pāris

– ja nosacījuma vērtība ir T, tad LISP apstājas šajā vietā un par rezultātu ņem dotā pāra otro elementu

– pārbaude uz T, bet uz ne NIL

51

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Nosacījuma izteiksmes (5)• Vispārējā gadījumā

– LISP pēc kārtas apskata katru pāri – ja nosacījuma vērtība ir NIL tiek ņemts nākošais

pāris– ja nosacījuma vērtība kaut kas cits, bet ne NIL,

tad LISP apstājas šajā vietā un par rezultātu ņem dotā pāra otro elementu

– (COND ((CDR L) 2) (T 1)) vērtība būs 2, ja L ir saraksts no vairāk kā viena elementa

– Pēdējais pāris ar T nodrošina ka nosacījuma izteiksmei vienmēr ir vērtība (else sastāvdaļa)

52

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvas funkcijas • faktoriāla rekursīvais nosacījums:

– 0! = 1;– n! = n*(n-1)!

• algoritmiska valodā:integer procedure fact(n);

integer n;

fact:=if n =0 then 1 else n x fact (n-1);

end

53

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvas funkcijas (2) • Valodā LISP

(DEFUN FACT (N)

(COND ((ZEROP N) 1)

(T (* N (FACT (- N 1))))

)

)

54

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Sarakstu rekursīvā apstrāde• Noteiksim funkciju ADD

– saskaita visus saraksta elementus• ja L ir (1 2 3 4 5), tad (ADD L) ir 15

(DEFUN ADD (L) (COND

((NULL L) 0)

(T (+ (CAR L)(ADD (CDR L))))

) )

55

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Sarakstu rekursīvā apstrāde (2)• Līdzīgā veidā var noteikt funkciju

MULT– saraksta skaitļu reizinājums

• ja L ir (1 2 3 4 5), tad (MULT L) ir 120

(DEFUN MULT (L) (COND

((NULL L) 1)

(T (* (CAR L)(MULT (CDR L))))

) )

56

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Apakšsaraksti un rekursija• Funkcija ADD strādā nepareizi, ja

saraksts L satur apakšsarakstus– funkcijas PLUS argumenti var būt tikai

atomi

• Noteiksim funkciju ADD2– saskaita visus saraksta un to

apakšsarakstus elementus• ja L ir (1 (2 (3 4)) 5), tad (ADD2 L) ir 15

57

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Apakšsaraksti un rekursija (2)(DEFUN ADD2 (L) (COND

((NULL L) 0)

((ATOM (CAR L))

(+ (CAR L) (ADD2 (CDR L)))

)

(T (+ (ADD2 (CAR L)) (ADD2 (CDR L))))

) )

(ADD2 ‘(3 ((8 4) 7 (5 6))))

58

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvie predikāti• COND

– pāru otrais elements• T vai NIL

• Funkcija MEMBER – divi argumenti:

• atoms X• saraksts L

– ja X ir L sastāvdaļa, tad (MEMBER X L) ir T, pretējā gadījumā NIL

59

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvie predikāti (2)(DEFUN MEMBER (X L) (COND

((NULL L) NIL)

((EQUAL X (CAR L) T)

(T (MEMBER X (CDR L))) ))

(MEMBER ? ?)

60

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Loģiskie operatori• "loģiskais UN" (konjunkcija)• "loģiskais VAI" (disjunkcija)• noliegums (inversija)• funkcija NOT

– viens arguments– vērtība ir T, ja par argumentu kalpo NIL,

un NIL, ja par argumentu kalpo kaut kas atšķirīgs no NIL• Faktiski tā dara to pašu, ko funkcija NULL

61

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Loģiskie operatori (2)• Funkcija AND

– nenoteikts argumentu skaits– vērtība vienmēr būs NIL, ja kaut viens arguments

vienāds ar NIL– pretējā gadījumā vērtība būs T

• Funkcija OR– nenoteikts argumentu skaits– vērtība vienmēr būs T, ja kaut viens arguments

nav vienāds ar NIL– pretējā gadījumā vērtība būs NIL

62

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Loģiskie operatori (2)• Noteiksim funkciju MEM2

– saistīta ar MEMBER tieši tāpat, kā ADD2 ar ADD

– pārbaudīs • vai pirmais arguments nav kāda saraksta

loceklis• vai kāda tā apakšsaraksta loceklis• vai kāda tā apakšsaraksta apakšsaraksta

loceklis• un tā tālāk

63

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Loģiskie operatori (3)(DEFUN MEM2 (X L) (COND

((NULL L) NIL)

(T (OR (COND ((ATOM (CAR L)) (EQUAL X (CAR L)))

(T (MEM2 X (CAR L)))

)

(MEM2 X (CDR L))

) ) )

64

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvās funkcijas no diviem sarakstiem

• ka tiek noteikta funkcija APPEND– apvieno divus sarakstus(DEFUN APPEND (L M) (COND((NULL L) M)(T (CONS (CAR L) (APPEND (CDR L) M ) ))) )

(APPEND L M ) ja L ir (1 2 3) un M ir (4 5 6)

65

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvās funkcijas no diviem sarakstiem (2)

• noteiksim funkciju EQUAL– argumenti var būt saraksti ar apakšsarakstiem – ar funkcijas EQ palīdzību

• argumenti tikai atomi

– saraksti L un M ir vienādi, ja• vienādi ir to pirmie elementi (CAR L) un (CAR M)• un vienādas arī atlikušās sarakstu daļas (CDR L) un

(CDR M)• jābūt vienādiem abiem šiem pāriem

66

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursīvās funkcijas no diviem sarakstiem (3)

(DEFUN EQUAL (L M) (COND((NULL L) NULL M))((ATOM L) (AND (ATOM M) (EQ L M)))((ATOM M) NIL)(T (AND (EQUAL (CAR L) (CAR M)) (EQUAL (CDR L) (CDR M))) )) )

67

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas tipu izzināšanai• predikāts NUMBERP

– viens arguments– predikāta vērtība ir T ja argumentam ir

skaitliska vērtība– ja X ir 5, tad (NUMBERP X) ir T– ja X ir simboli ABC, tad (NUMBERP X) ir

NIL– ja X ir (1 2 3), tad (NUMBERP X) ir NIL

68

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas tipu izzināšanai (2)• funkcijas FIXP un FLOATP

– viens arguments– FIXP vērtība ir T ja arguments ir skaitlis ar

fiksētu punktu– FLOATP vērtība ir T ja arguments ir skaitlis ar

peldošu punktu– ja X ir 7, tad (FIXP X) ir T, bet (FLOATP X) ir NIL– ja X ir 7.5, tad (FIXP X) ir NIL, bet (FLOATP X) ir T

69

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas tipu izzināšanai (3)• Noteiksim funkciju COUNTFIXFLOAT

– funkcijas arguments ir saraksts L– funkcijas vērtība būs saraksts no diviem

elementiem• pirmais elements – ciparu skaits formā ar fiksētu

punktu• otrais - ciparu skaits ar peldošu punktu

– ja X ir (T LAM 5.6 3(8((9.1 4.122 J)B 6 3.1 R)), tad– (COUNTFIXFLOAT X) ir (3 4)

70

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas tipu izzināšanai (4)(DEFUN COUNTFIXFLOAT (L) (COND((NULL L) (QUOTE (0 0)))((ATOM L) (COND ((FIXP L) (QUOTE (1 0))) ((FLOATP L) (QUOTE (0 1))) (T (QUOTE (0 0))) )(T (SUM2 (COUNTFIXFLOAT (CAR L)) (COUNTFIXFLOAT (CDR L))) ) ))

71

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas tipu izzināšanai (5)(DEFUN SUM2 (L M)

(CONS (+ (CAR L) (CAR M))

(LIST (+ (CADR L) (CADR M)))

)

)

ja X ir (4 3), bet Y ir (7 2), tad

(SUM2 X Y) ir (11 5)

72

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Dažadi piemeri• Skaitlisko elementu summa

– Anoloģiski ADD, bet sarakstā L var but simboliskie atomi

(DEFUN ADDNUM (L) (COND ((NULL L)0)

((NUMBERP (CAR L)) (+ (CAR L) (ADDNUM (CDR

L))))

(T(ADDNUM (CDR L))) ))

73

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Dažadi piemeri (2)• Skaitlisko elementu skaits

– sarakstā L var but simboliskie atomi

(DEFUN QUANNUM (L) (COND ((NULL L)0)

((NUMBERP (CAR L)) (+ 1 (QUANNUM (CDR L))))

(T(QUANNUM (CDR L))) ))

74

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Dažadi piemeri (3)• Atomu skaits sarakstā

– sarakstā L var but apakšsaraksti

(DEFUN NUMATOM (L) (COND ((NULL L)0)

((ATOM (CAR L)) (+ 1 (NUMATOM (CDR L))))

(T(NUMATOM (CDR L))) ))

75

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Dažadi piemeri (4)• Atomu skaits sarakstā un

apakšsarakstus

(DEFUN ATOMS (L) (COND ((NULL L)0)

((ATOM (CAR L)) (+ 1 (ATOMS (CDR L))))

(T(+ (ATOMS (CAR L)) (ATOMS (CDR L)))) ))

76

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Dažadi piemeri (5)• Minimalais elements

– Sarakstā tikai skaitli

(DEFUN MIN (L) (COND ((NULL L)NIL)

((NULL (CDR L))(CAR L))

((< (CAR L) (MIN (CDR L)))(CAR L))

(T(MIN (CDR L))) ))

77

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Dažadi piemeri (6)• Minimalais elements

– Sarakstā ne tikai skaitli

(DEFUN MINI (L) (MIN (ONLYNUM (L))))

(DEFUN ONLYNUM (L) (COND ((NULL L)NIL)

((NUMBERP (CAR L)) (CONS (CAR L) (ONLYNUM (CDR L))))

(T(ONLYNUM (CDR L))) ))

78

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. uzdevums

Uzdevuma Nr Studenta Nr Uzdevuma Nr Studenta Nr

1 1, 11, 21, ... 6 6, 6, 26. ...

2 2, 12, 22, ... 7 7, 17, 27, ...

3 3, 13, 23, ... 8 8, 18, 28, ...

4 4, 14, 24, ... 9 9, 19, 29, ...

5 5, 15, 25, ... 10 10, 20, 30, ...

79

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. Uzdevums (2)1. Atrast negatīvo un pozitīvo elementu

summas (saraksts no atomiem un apakšsarakstiem)

2. Atrast negatīvo, nulles un pozitīvo elementu skaitus (saraksts no atomiem un apakšsarakstiem)

3. Nošķirot elementus lai pirmie būtu atomi un pēc tam apakšsaraksti (saraksts no atomiem un apakšsarakstiem)

80

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. Uzdevums (3)4. Nošķirot elementus lai pirmie būtu

apakšsaraksti un pēc tam atomi jeb kura secība (saraksts no atomiem un apakšsarakstiem)

5. Nošķirot elementus lai pirmie būtu negatīvie un pēc tam pozitīvie tāda paša secība ka sākotnējā saraksta (saraksts no atomiem)

81

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. Uzdevums (4)6. Izsvītrot dublikātus lai palika pirmais no

tiem (saraksts no atomiem un apakšsarakstiem)

7. Izsvītrot dublikātus lai palika pēdējais no tiem (saraksts no atomiem un apakšsarakstiem)

8. Izsvītrot elementus ar līdzīgu vērtību un pretējo zīmi lai palika pirmais (saraksts no atomiem un apakšsarakstiem)

82

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. Uzdevums (5)9. Izsvītrot elementus ar līdzīgu vērtību un

pretējo zīmi lai palika pēdējais (saraksts no atomiem un apakšsarakstiem)

10. Izskaitļot atkārtojošos elementus skaitli (saraksts no atomiem un apakšsarakstiem)

83

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. Uzdevums (6)Saraksts no atomiem un apakšsarakstiem

(2 -3 (4 3 0 2) (4 -4) (2 (2 0 2)) -3)

Saraksts no atomiem (5. uzdevums)

(2 -3 4 -4 2 0 2 -3)

Uzvards, variants

Rezultāts?

84

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

1. Uzdevums (7)• Atskaite

– Uzdevums– Pirmteksts– kontrolpiemeri

• Mans variants• Visi principiāli atšķirojušies varianti

– Min» Pirmais, pedejais, vidū» Vienigais, atkartojušais» Pozitivs, negativs

85

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG - izteiksmes• secīgu operatoru veids• pārveido funkcionālo pierakstu uz

nefunkcionālo pierakstu– realizē algoritmiskās valodās jēdzienus:

• apraksti• operatori• iezīmes• vadības nodošana• nosacījuma izteiksmes• vērtību atgriešana

86

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG – izteiksmes (2)• Apraksti

– pirmais funkcijas PROG arguments• mainīgo saraksts, kuri tiks izmantoti dotajā PROG

– parametri netiek ieslēgti šajā sarakstā– mainīgā tips netiek noteikts

• atkarīgs no piešķirtas vērtības

– mainīgo vērtībām jābūt noteiktām, līdz to lietošanas momentam

– mainīgie var būt saraksti• var izmantot masīvu vietā

87

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG – izteiksmes (3)• Operatori

– piešķirta PROG argumentu loma– SETQ un SET tipa izteiksmes

• Iezīmes– piešķirta PROG argumentu loma– vienmēr atsevišķs atoms

• atšķiras no griešanās pie funkcijām

88

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG – izteiksmes (4)• ir trīs tipu PROG argumenti:

– pirmais arguments• PROG- mainīgo saraksts

– operatori• lai grieztos pie funkcijām

– iezīmes

• argumentu skaits ir neierobežots

89

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG – izteiksmes (5)• Vadības nodošana

– operators GO– vienīgais arguments ir iezīme– (GO SIGMA)

• nozīmē vadības nodošanu uz iezīmi SIGMA• operatoram, kurš seko tūlīt pēc šīs iezīmes

90

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG – izteiksmes (6)• Nosacījuma izteiksmes

– funkcija COND– divas atšķirības no izmantošanu funkcijās

• pāra otrais elements nav lielums, bet ir operators– jebkura tipa

• pēdējam pārim nav obligāti jāsākas ar T– Tas ir analoģiski operatoram IF-THEN bez ELSE daļas

• Vērtības atgriešana– funkcija RETURN– viens arguments– PROG - izteiksmes vērtība

91

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Faktoriāls• Variants algoritmiska valodā:

INTEGER FUNCTION FACT(N)I=NJ=1

1 IF (I .EQ. 0) GOTO 2J=J*II=I-1GOTO 1

2 FACT=JRETURNEND

92

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG - Faktoriāls• Variants valodā LISP:

(DEFUN FACT (N) (PROG (I J)

(SETQ I N) (SET J 1)

K (COND ((ZEROP I) (GO L)))

(SETQ J (* J I))

(SETQ I (- I 1))

(GO K)

L (RETURN J) ))

93

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Sarakstu apstrāde• tas nebūtu saraksts, bet gan drīzāk

viendimensiju masīvs• Indekss

– mainās ar vieninieku lai pāriet uz nākošo masīva elementu

• funkcija CDR izsvītro pirmo saraksta elementu

– algoritmiska valodā:S=0

DO 1 I=1,100

1 S=S+A(I)

94

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Sarakstu apstrāde (2)• pārrakstīsim funkciju ADD, izmantojot

PROG- izteiksmes(DEFUN ADD (L) (PROG (M N)(SETQ M L) (SETQ N 0)A (COND ((NULL M) (RETURN N)))(SETQ N (+ N (CAR M)))(SETQ M (CDR M)) (GO A) ))• nav tik efektīva un “caurspīdīga” kā

rekursīvā

95

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Sarakstu veidošana• pats efektīvākais saraksta apstrādes veids

– apstrāde no sākuma– CAR un CDR

• veidot sarakstu visefektīvāk no beigām– pēdējo elementu jāizskaitļo pirmo– jauni elementi jāpievieno saraksta sākumā– pirmo saraksta elementu jāizskaitļo pēdējo– CONS

96

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Sarakstu veidošana (2)• Noteiksim programmu REVERSE

– pārraksta sarakstu apgrieztā kartībā

(DEFUN REVERSE (L) (PROG (M P)

(SETQ M L) (SETQ P NIL)

A(COND (( NULL M) (RETURN P)))

(SETQ P (CONS (CAR M) P))

(SETQ M (CDR M)) (GO A) ))

97

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Sarakstu veidošana (3)• Izveidošana it ka no sakuma• noteiksim funkciju DOUBLE

– dubulto katru veselu skaitli no veselu skaitļu saraksta

(DEFUN DOUBLE (X) (COND ((NULL X) X)

(T (CONS (+ (CAR X)(CAR X))

(DOUBLE (CDR X))

) ) ) )

98

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas darbība• Divdimensiju masīvs - sarakstu

saraksts– vieninieku matrica δij NxN,

• δij = 1, ja i=j un• δij = 0, ja i nav = j,• kur 1<= i, j <=N

– N=4 • ( (1 0 0 0) (0 1 0 0) (0 0 1 0) (0 0 0 1) )

99

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas darbība (2)• Noteiksim funkciju UNITMATR

– (UNITMATR N) rezultāts ir vieninieku masīvs NxN

(DEFUN UNITMATR (N) (PROG (I J K L Z)I - matricas rindas kārtas numursJ - matricas stabiņa kārtas numursK- saraksts, kurš atbilst tekošai rindaiL - rezultējoša matricaZ - tekošais matricas rindas elements

100

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkcijas darbība (3)(SETQ I N) (SETQ L NIL)

A (SETQ J N) (SETQ K NIL)B (COND ((EQUAL I J)(SETQ Z 1))

(T (SETQ Z 0)) )(SETQ K (CONS Z K)) (SETQ J (- J 1))(COND ((> J 0)(GO B)))(SETQ L (CONS K L) (SETQ I (- I 1))(COND ((> I 0)(GO A)))(RETURN L) ))

101

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Programmas saīsināšana• izmantot funkciju vienlaicīgi gan

darbību izpildei gan vērtības iegūšanai– nomainīt divus operatorus

(SETQ J (- J 1)) (COND ((> J 0) (GO B)))

– uz vienīgo operatoru(COND ((> (SETQ J (- J 1)) 0) (GO B)))• atņemt 1 no vērtības J• iegūt jaunu J vērtību• pārbaudīt jaunu J vērtību

102

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. uzdevums

Uzdevuma Nr Studenta Nr Uzdevuma Nr Studenta Nr

1 1, 11, 21, ... 6 6, 6, 26. ...

2 2, 12, 22, ... 7 7, 17, 27, ...

3 3, 13, 23, ... 8 8, 18, 28, ...

4 4, 14, 24, ... 9 9, 19, 29, ...

5 5, 15, 25, ... 10 10, 20, 30, ...

103

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (2)• Ir dots saraksts

( (a11 a12 ... a1n)

(a21 a22 ... a2m)

...

(ak1 ak2 ... akp) )

( b1 b2 ... bk )

( c1 c2 ... cx )x = max {n, m, ... ,p}

104

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (3)1. Atrast negatīvo un pozitīvo elementu

summas (aij - atomi)

2. Atrast negatīvo, nulles un pozitīvo elementu skaitus (aij - atomi)

3. Nošķirot elementus lai pirmie būtu atomi un pēc tam apakšsaraksti (aij - atomi vai apakšsaraksti)

105

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (4)4. Nošķirot elementus lai pirmie būtu

apakšsaraksti un pēc tam atomi jeb kura secība (aij - atomi vai apakšsaraksti)

5. Nošķirot elementus lai pirmie būtu negatīvie un pēc tam pozitīvie tāda paša secība ka sākotnējā saraksta (aij - atomi)

106

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (5)6. Izsvītrot dublikātus lai palika pirmais no

tiem (aij - atomi)

7. Izsvītrot dublikātus lai palika pēdējais no tiem (aij - atomi)

8. Izsvītrot elementus ar līdzīgu vērtību un pretējo zīmi lai palika pirmais (aij - atomi)

107

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (6)9. Izsvītrot elementus ar līdzīgu vērtību un

pretējo zīmi lai palika pēdējais (aij - atomi)

10. Izskaitļot atkārtojošos elementus skaitli (aij - atomi)

108

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (7)

Apakšsaraksti no atomiem

( ( 2 -3 4 0 -2)

(-4 0 2)

(-3 3 -4 3) )

Uzvards, variants

Rezultāts?

109

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

2. Uzdevums (8)Apakšsaraksti no atomiem un

apakšsarakstiem

( ( (2) -3 (4) 0 -2)

( -4 0 2)

((-3) (3)-4 3) )

Uzvards, variants

Rezultāts?

110

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Predikāti• jāatgriež T vienā vietā un NIL citā

– pie kam var būt vairāki RETURN operatori vienā PROG- izteiksmē

• piemērs– Predikāta arguments ir saraksts, kurš attēlo

spēļu kārtis– Katra kārts tiek attēlota ar sarakstu, sastāvošu

no diviem elementiem• masts• lielums• (Pīķa dūzis) (Kārava 10) (Kreiča 5)

111

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Predikāti (2)• Noteiksim funkciju PIKUNAV

(DEFUN PIKUNAV (L) (PROG (M P)

(SETQ M L)

A (COND ((NULL M) (RETURN T)))

(SETQ P (CAR M)) (SETQ M (CDR M))

(COND ((EQUAL (CAR P) ‘Pīķa) (RETURN NIL)))

(GO A) ))

112

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursija• PIKUNAV funkcionāla veida

(DEFUN PIKUNAV (L) (COND

((NULL L) T)

(T (AND (NOT (EQUAL (CAAR L) ‘Pīķa))

(PIKUNAV (CDR L))

) )

) )

113

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Predikāti (3)(DEFUN ERCENU_VAIRĀK_KĀ_PĪKU (L)

(PROG ( M P X Y) ;X,Y - ērčeņu pīķu skaits(SETQ M L) (SETQ X 0) (SETQ Y 0)A (COND ((NULL M) (RETURN (> X Y))))

(SETQ P (CAR M)) (SETQ M (CDR M))(COND ((EQUAL (CAR P) ‘Erceni)

(SETQ X (+ X 1)) ) ((EQUAL (CAR P) ‘Pīķa )

(SETQ Y (+ Y 1)) ) )(GO A) ))

114

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

PROG. Predikāti (3)(DEFUN ERCENU_VAIRĀK_KĀ_PĪKU (L)

(PROG ( M P X Y)(SETQ M L) (SETQ X 0) (SETQ Y 0)A (COND ((NULL M) (RETURN (> X Y))))

(SETQ P (CAR M)) (SETQ M (CDR M))(COND ((EQUAL (CAR P) ‘Erceni)

(SETQ X (+ X 1)) ) ((EQUAL (CAR P) ‘Pīķa )

(SETQ Y (+ Y 1)) ) )(GO A) ))

115

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursija• funkcionāla veida

(DEFUN ERCENU_VAIRĀK_KĀ_PĪKU (L)(> (PIKI L) (ERCENI L)) )(DEFUN PIKI (L) (COND((NULL L) 0)((EQUAL (CAAR L) ‘Pīķa) (+ 1 (PIKI (CDR

L))))(T(PIKI (CDR L))) ))(DEFUN ERCENI (L) ...

116

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Rekursija PROG- izteiksmēs• apakšsarakstus apstrāde

(DEFUN ADD2 (L) (PROG (M N X)

(SETQ M L) (SETQ N 0)

A (COND ((NULL M) (RETURN N)))

(SETQ X (CAR M)) (SETQ M (CDR M))

(COND ((ATOM X) (SETQ N (+ N X)))

(T (SETQ N (+ N (ADD2 X)))) )

(GO A) ))

117

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Saīsināšana• iepriekšējais variants

(COND ((ATOM X) (SETQ N (+ N X)))

(T (SETQ N (+ N (ADD2 X)))))

• īsāk(SETQ N (+ N (COND ((ATOM X) X)

(T (ADD2 X)) )))

118

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Apakšsarakstus apstrāde• Noteiksim funkciju ADD3

– arguments ir apakšsarakstus saraksts– vērtība - katra apakšsaraksta elementus summa

atsevišķi– ja X ir ((2 4)(3 1)(6 2)), tad (ADD3 X) ir (6 4 8)

(DEFUN ADD3 (L) (COND (( NULL L) NIL)(CONS (ADD2 (CAR L)) (ADD3 (CDR L))) ))

119

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju apvienošanaK=0

Y = X

Z = X

(COND ((ZEROP K) (PROG NIL (SETQ Y X) (SETQ Z X)) ))

(COND ((ZEROP K) (PROGN (SETQ Y X) (SETQ Z X)) ))

120

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju apvienošana (2)• Noteiksim funkciju OPPMAX

– argumenti• skaitļu saraksts L• simbolu saraksts M

– vērtība - saraksta M elements, kurš pēc sava stāvokļa atbilst maksimālajam elementam no saraksta L

– ja L ir (3 7 13 9) un M ir (T E S T), tad (OPPMAX L M) ir S

121

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju apvienošana (3)(DEFUN OPPMAX (L M) (PROG (A B U V Y Z)

A - kandidāts uz maksimālo elementusākotnēji saraksta L pirmais elements

B - atbilstošais sarakstā M elementssākotnēji arī pirmais

Ja tiek atrasts elements, kurš ir lielāks par A, tad jaunu vērtību iegūst gan A gan B

122

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Funkciju apvienošana (4)(SETQ A (CAR L)) (SETQ B (CAR M))

(SETQ U (CDR L)) (SETQ V (CDR M))

G (COND ((NULL U) (RETURN B)))

(SETQ Y (CAR U)) (SETQ Z (CAR V))

(SETQ U (CDR U)) (SETQ V (CDR V))

(COND ((> Y A)

(PROGN (SETQ A Y)(SETQ B Z)) ))

(GO G) ))

123

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļošanas noteikums(SETQ Z 3)(SETQ Y (+ Z (SETQ Z 6))) ;y=3+6=9(SETQ Y (+ (SETQ Z 6) Z))) ;y=6+6=12

• funkcijas izskaitļošanas noteikums– lai izskaitļotu funkciju, tas argumenti gan

atomi, gan griešanas pie funkcijām, tiek izskaitļoti pēc kārtas no kreisās uz labo

– pēc tam funkcijas definīcija tiek pielietota šim vērtību sarakstam

124

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļošanas noteikums (2)• AND un OR izskaitļotas citādā veidā

– (AND X Y ...)• vērtība ir ne NIL, ja visi argumenti ir ne NIL• ja X ir NIL, tad (AND X Y) vērtībai ir jābūt NIL• nav nepieciešams izskaitļot Y• tas ne tikai saīsina laiku, bet arī aizsargā no

kļūdu rašanās• (AND (ATOM M)(EQ L M)) ; pareizi• (AND (EQ L M) (ATOM M)) ; kļūdaini

125

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļošanas noteikums (3)– (OR X Y ...)

• vērtība ir ne NIL, ja ik viens argumenti ir ne NIL

• ja X ir ne NIL, tad (OR X Y) vērtībai ir jābūt ne NIL

• nav nepieciešams izskaitļot Y• saīsina laiku

126

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļojoša funkcija• ja ir mainīgais, kura vērtība ir saraksts• ja saraksts var saprast ka griešanās

pie funkcijas– par pirmo elementu kalpo funkcijas vārds– citi elementi ir tās funkcijas argumenti

• lai atrast šīs funkcijas vērtību jālieto funkciju EVAL

• ja X ir (+ 2 3), tad (EVAL X) ir 5

127

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļojoša funkcija (2)• ar EVAL palīdzību var izpildīt operatoru

– kuru ir izveidojusi paša LISP- programma– kurš var mainīties programmas izpildes procesā

• noteikt funkciju– mainīgais NAME – funkcijas nosaukums– mainīgais PARAMETERLIST - šīs funkcijas

parametru saraksts– mainīgais DESCRIPTION – šis funkcijas apraksts

128

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļojoša funkcija (3)(EVAL (LIST ‘DEFUN NAME PARAMETERLIST

DESCRIPTION ))• Funkcija LIST izveido sarakstu formā

(DEFUN n p d), – kur n, p un d – ir mainīgajos NAME,

PARAMETERLIST un DESCRIPTION atbilstošā vērtība

• Pēc tam šis saraksts tiek izskaitļots – būs definēta jauna funkcija

129

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Izskaitļojoša funkcija (4)• ja NAME ir simbolu rinda “DIFFERENCE”• ja PARAMETERLIST ir (X Y) - ir saraksts no

burtiem X un Y• ja DESCRIPTION ir saraksts (PLUS X

(MINUS Y))• tad augstāk minētā EVAL izpilde kalpos

funkcijas DIFFERENCE noteikšanai

130

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Programma kā dati• programma ir sarakstu struktūra

• izmantosim mainīgos, kuru vērtības būs programmas dažādas sastāvdaļas

• izskatīsim funkciju

(FOR I J K L DESCR)– kura atbilst operatoram

for I:=J step K until L do DESCR;

131

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Programma kā dati (2)• funkcijas (FOR I J K L DESCR) vērtībai

jābūt :( ( SETQ I J)

B (COND ((> I L) (GO A))) descr (SETQ I (+ I K)) (GO B)

A )kur descr – mainīgajā DESCR vērtība

• būtiska problēma iezīmes B un A

132

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Programma kā dati (3)• iezīmes B un A problēma

– nav iespējams garantēt, ka simboli B un A netiks izmantoti kā iezīmes programmas daļā, kuru ietver DESCR

– Ir iespējams izsaukt FOR vairākas reizes vienā programmā

– tas novedīs pie atkārtoti noteiktām iezīmēm– šī problēma tiek risināta ar valoda LISP funkcijas

GENSYM• funkcija bez argumentiem• ģenerē atomus kuri atšķiras no atomiem, kuri

tika iegūti ar tās palīdzību agrāk

133

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Programma kā dati (4)(DEFUN FOR (I J K L D) (PROG (W X Y Z)(SETQ X (APPEND D (LIST (LIST ‘SETQ I

(LIST ‘+ I K)))))

(SETQ Y (GENSYM)) (SETQ Z (GENSYM))(SETQ X (APPEND X (LIST (LIST ‘GO Y) Z) ))(SETQ W (LIST (LIST ‘SETQ I J)

Y (LIST ‘COND (LIST (LIST ‘> I L) (LIST ‘GO Z )))))

(RETURN (APPEND W X)) ));W - veidojamās programmas pirmā daļa, X - otra

134

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Programma kā dati (5)• Funkcijas (FOR ‘N 1 2 100 ‘((PRINT

N))) rezultāts(SETQ X (APPEND D

(LIST (LIST ‘SETQ I

(LIST ‘+ I K) ) ) ) )

X iegūs vērtību

((PRINT N) (SETQ N (+ N 2 )))

135

ESF projekts2005/0125/VPD1/ESF/PIAA/04/APK/3.2.3.2/

0062/0007RTU akadēmiskās studiju programmas

“DATORSISTĒMAS” kursu pilnveidošana

Bibliography• Huhns M.N. and Singh M.P. (Eds.). Readings in Agents. Morgan

Kaufmann, 1998• Knapik M. and Johnson J. Developing Intelligent Agents for Distributed

Systems, McGraw-Hill, 1998• Murch R. and Johnson T. Intelligent Software Agents, Prentice Hall

PTR, 1999• Russell S. and Norvig P. Artificial Intelligence. A Modern Approach,

Prentice Hall, 2003• Shrikantaiah T.K. and Koenig M.E.D. (Eds.) Knowledge Management

for Information Professionals, ASIS Monograph Series, 1999• Tiwana A. The Knowledge Management Toolkit, Prentice Hall, 2000.• Weiss G. (Ed.) Multiagent Systems. A Modern Approach to Distributed

Artificial Intelligence, The MIT Press, 2000

Recommended