Uvod u programski jezik LIStPprocessing 1 Savo Tomovi

  • Slides: 15
Download presentation
Uvod u programski jezik LIS(t)P(processing) 1 Savo Tomović

Uvod u programski jezik LIS(t)P(processing) 1 Savo Tomović

Uvodne napomene Programski jezici, klasifikacija § § Savo Tomović Vrijeme nastanka Zavisnost od računara

Uvodne napomene Programski jezici, klasifikacija § § Savo Tomović Vrijeme nastanka Zavisnost od računara Oblast primjene Način rješavanja problema • Proceduralni • Deklarativni (funkcionalni i logički) 2

Funkcionalni programski jezici Programiranje se zasniva na § Definisanju funkcije (pridruživanje imenu f-je izraza

Funkcionalni programski jezici Programiranje se zasniva na § Definisanju funkcije (pridruživanje imenu f-je izraza kojim se izračunava vrijednost f-je) Primjeni funkcije na argumente Program je niz definicija i poziva funkcija § § § Savo Tomović U definiciji funkcije se uvode uslovni izrazi Unutar definicije jedne funkcije može se pozvati ista funkcija 3

Osobine funkcionalnog stila programiranja Ne postoji eksplicitno zadavanje redosleda izračunavanja funkcija (program definiše izraz

Osobine funkcionalnog stila programiranja Ne postoji eksplicitno zadavanje redosleda izračunavanja funkcija (program definiše izraz koji je rješenje nekog problema) Nepostojanje naredbi, umjesto njih postoje izrazi (uslovni izrazi, rekurzivni pozivi) Nepostojanje sporednih efekata (isti izraz u istoj okolini daje isti rezultat) Savo Tomović Funkcije kao ravnopravni objekti 4

Osobine funkcionalnog stila programiranja (2) Ne-striktna semantika (izraz nije striktan ako ima vrijednost čak

Osobine funkcionalnog stila programiranja (2) Ne-striktna semantika (izraz nije striktan ako ima vrijednost čak i ako neki od njegovih operanada nemaju vrijednost) Statičko vezivanje (promjenljiva se za vrijednost vezuje u trenutku definisanja) § Primjer neka_je n = 1 i neka_je f(z) = z + n i neka_je n = 2 i f(3) Savo Tomović 5

LISP Stvorio ga je krajem 1950 -tih Mc. Carthy Bio je namijenjen simboličkom manipulisanju

LISP Stvorio ga je krajem 1950 -tih Mc. Carthy Bio je namijenjen simboličkom manipulisanju podacima Osobine § § Savo Tomović Definicija uslovnog izraza if-then-else Defincija liste kao jedine strukture podataka Funkcije kao objekti ravnopravni sa ostalim objektima programa Realizacija automatskog dodjeljivanja memorijskog prostora i proces “sakupljanja otpadaka” 6

LISP Program ima oblik liste Operatori se zadaju prefiksno Sadrži proceduralne elemente Naredbe dodjeljivanja

LISP Program ima oblik liste Operatori se zadaju prefiksno Sadrži proceduralne elemente Naredbe dodjeljivanja § Naredbe za eksplicitno određivanje redosleda § Striktnu semantiku § Dinamičko vezivanje 90% programa pisanih za oblast vještačke inteligencije je pisano na LISP-u § Savo Tomović 7

Tipovi podataka i operacije Logičke vrijednosti t reprezentuje tačno § NIL reprezentuje netačno Brojevi

Tipovi podataka i operacije Logičke vrijednosti t reprezentuje tačno § NIL reprezentuje netačno Brojevi § § Savo Tomović Standardni numerički tip je number Osnovne aritmetičke operacije +, -, * i / Ugrađene funkcije: abs, max, min, gcd, lcm, sqrt, log, cos, sin. . . 8

Tipovi podataka i operacije (2) Stringovi nizovi znakova ograničeni sa “ § funkcije: search,

Tipovi podataka i operacije (2) Stringovi nizovi znakova ograničeni sa “ § funkcije: search, subseq, string-upcase. . . S-izrazi § § atomi (simboli i brojevi) par (sastoje se od car i cdr komponente) lista (kompozicija parova povezanih preko njihove cdr komponente) Savo Tomović 9

Ugrađene funkcije LISP-a Funkcije za rad sa s-izrazima § § (qoute arg) – vraća

Ugrađene funkcije LISP-a Funkcije za rad sa s-izrazima § § (qoute arg) – vraća neizmijenjeni argument (cons arg 1 arg 2) – vraća par čija je car komponenta prvi argument, a cdr komponenta drugi argument § § § Savo Tomović (list arg 1 arg 2. . . argn) – kreira listu od argumenata (car arg) – vraća prvu komponentu para (cdr arg) – vraća drugu komponentu para 10

Ugrađene funkcije LISP-a (2) Numeričke funkcije § § § (* arg 1 arg 2.

Ugrađene funkcije LISP-a (2) Numeričke funkcije § § § (* arg 1 arg 2. . . argn) – proizvod argumenata (+ arg 1 arg 2. . . argn) – zbir argumenata (- arg 1 arg 2. . . argn) – vraća vrijednost koja se dobija kada se od prvog argumenta redom oduzimaju ostali § (/ arg 1 arg 2. . . argn) – funkcija dijeli prvi argument sa argumentima koji slijede u lijevo asocijativnom redosledu § § Savo Tomović (mod arg 1 arg 2) – ostatak dijeljenja (sin arg) – vraća sinus ugla izraženog u radijanima 11

Ugrađene funkcije LISP-a (3) Logičke i relacione funkcije § § (< | <= |

Ugrađene funkcije LISP-a (3) Logičke i relacione funkcije § § (< | <= | >= | > arg 1 arg 2) (eq obj 1 obj 2) – tačno ako argumenti ukazuju na isti podatak u memoriji § (equal obj 1 obj 2) – tačno ako argumenti posle izračunavanja imaju istu vrijednost § § § Savo Tomović (null obj) – provjerava da li je obj prazna lista (atom obj) – tačno ako obj nije par ili funkcija (number obj) – tačno ako je obj broj 12

Ugrađene funkcije LISP-a (4) Logičke i relacione funkcije (2) § (and obj 1 obj

Ugrađene funkcije LISP-a (4) Logičke i relacione funkcije (2) § (and obj 1 obj 2. . . objn) – vrijednost je konjunkcija argumenata § (or obj 1 obj 2. . . objn) – vrijednost je disjunkcija argumenata § Savo Tomović (not obj) – vrijednost je negacija vrijednosti obj 13

Ugrađene funkcije LISP-a (5) Uslovni izrazi § (if uslov izraz. T [inače]) – prvo

Ugrađene funkcije LISP-a (5) Uslovni izrazi § (if uslov izraz. T [inače]) – prvo se računa uslov. Ako je tačan vrijednost uslovnog izraza IF je jednaka vrijednosti izraz. T. Inače, vrijednost uslovnog izraza IF je jedanaka vrijednosti inače § (cond ((i e 1 e 2. . . en). . . )) – izračunavaju se vrijednosti i izraza dok se ne naiđe na prvi koji je tačan. Nakon toga se izračunavaju izrazi e 1, e 2, . . . , en, pri čemu je vrijednost cond izraza jednaka vrijednosti en. Savo Tomović 14

Ugrađene funkcije LISP-a (6) (let ((var 1 form 1). . . (varn formn)) e

Ugrađene funkcije LISP-a (6) (let ((var 1 form 1). . . (varn formn)) e 1 e 2. . . en) – izračunava se vrijednost izraza form 1, form 2, . . . , formn i vezuju se njihove vrijednosti za identifikatore var 1, var 2, . . . , varn. Izračunava vrijednosti izraza e 1, e 2, . . . , en i vrijednost poslednjeg en vraća kao vrijednost let bloka Savo Tomović 15