1 Wykład 1 Zakres przedmiotu Obliczenia symboliczne

Transkrypt

1 Wykład 1 Zakres przedmiotu Obliczenia symboliczne
Wykład 1
Zakres przedmiotu „Obliczenia symboliczne II”
Co to są obliczenia symboliczne
Rodzaje obliczeń symbolicznych
Wprowadzenie do języka Icon
Obliczenia symboliczne
Rodzaje obliczeń
obliczenia numeryczne
przetwarzanie danych
obliczenia symboliczne
Zakres przedmiotu
Obliczenia symboliczne i ich rodzaje
Język Icon
Przykłady obliczeń symbolicznych
Przetwarzanie języka naturalnego
Rodzaje obliczeń symbolicznych
Matematyka nienumeryczna
Sztuczna (maszynowa) inteligencja
W ujęciu Turinga każde obliczenie można
sprowadzić do przetwarzania symboli.
Matematyka nienumeryczna
różniczkowanie symboliczne
całkowanie nieoznaczone
upraszczanie wyrażeń
rozwiązywanie równań, układów równań
rozwiązywanie równań różniczkowych
przekształcenia Laplace’a
analiza obwodów elektrycznych
analiza i synteza automatów skończonych
...
Sztuczna inteligencja
dowodzenie twierdzeń
programy symulujące wnioskowanie indukcyjne
i przez analogię
programy grające w gry (logiczne)
przetwarzanie języka naturalnego
...
1
Języki programowania
obliczeń symbolicznych
Czym jest ICON?
Cechy języka:
Icon jest językiem programowania wysokiego
poziomu, szczególnie nadający się do
przetwarzania tekstów i struktur danych.
wysoki poziom
dynamiczne typy danych
dynamiczny przydział pamięci
łatwe operowanie na symbolach (tekstach)
struktury danych wysokiego poziomu (listy, tablice
asocjacyjne, zbiory, itp.)
łatwe manipulowanie tymi strukturami
Jest językiem imperatywnym, proceduralnym,
o składni zbliżonej do języków C i Pascal oraz
dużo mocniejszej semantyce.
Następca języka Snobol stworzony przez
Ralpha Griswolda z Uniwersytetu w Arizonie.
Przykładowe języki:
Lisp, Prolog, Smalltalk, Python, Icon
Literatura i materiały
R.E. Griswold, M.T. Griswold
„The Icon Programing Language”, PEER-TO-PEER
T.W. Christopher
„Icon Programing Language Hanbook”
C. Jeffery, S. Mohamed, R. Pereda, R. Parlett
„Programing with Unicon”
Literatura i materiały
Strony WWW
http://www.cs.arizona.edu/icon
http://unicon.sourceforge.net
Lista dyskusyjna
comp.lang.icon
R.E. Griswold, M.T. Griswold
„Icon”, WNT 1987
Dziedziny zastosowań
przetwarzanie języków naturalnych
przekształcanie danych
przekształcanie programów komputerowych
manipulowanie wzorami
formatowanie dokumentów
algorytmy sztucznej inteligencji
programy jednokrotnego wykonania
programy prototypowe
Cechy języka
różne platformy sprzętowe (przenośność)
IDOL - nakładka obiektowa
grafika
bogata biblioteka IPL
„długi” integer
struktury danych wysokiego poziomu
zaawansowane mechanizmy sterujące
2
Preprocesor języka Icon
$define name text
$define name
(_UNIX, _MSDOS, ...)
$undef name
$ifdef name
kod
$else
kod
$endif
$include plik
Przykład programu
#
# program oblicza NWD
#
procedure main()
x:=read()
y:=read()
while x~=y do
if x>y then x:=x-y else y:=y-x
write(x)
end
Oddzielna translacja i łączenie
Plik źródłowy: nwd.icn
procedure nwd(x,y)
while x~=y do
if x>y then x:=x-y
else y:=y-x
return x
end
Translacja:
icont -c nwd
Powstają pliki:
nwd.u1 nwd.u2
Program główny: prog.icn
link nwd
procedure main()
...
z:=nwd(24,32)
...
end
Struktura programu
import bibliotek
deklaracje nowych typów (rekordów)
deklaracje zmiennych globalnych
procedury (brak zagłębiania)
procedura main()
Translacja i wykonanie
Plik źródłowy:
hello.icn
procedure main()
write(”hello”)
end
Translacja:
Wykonanie:
icont hello.icn
icont hello
./hello
iconx hello
Charakterystyka języka
Brak deklaracji rezerwujących pamięć
Pamięć dla zmiennych przydzielana
automatycznie
Brak deklaracji zmiennych
Automatyczna konwersja typów
Program składa się z wyrażeń
Wyrażenia kończą się sukcesem lub zawodzą
3
Sukces lub niepowodzenie
read()
zm:=wyrażenie
a<b
if a>0 then r:=”dodatnie” else r:=”ujemne”
r:=(if a>0 then ”dodatnie” else ”ujemne”)
find(s1,s2)
write(read())
wiersz:=read()
write(wiersz)
Struktury sterujące
if wyr then wyr_1
if wyr then wyr_1
else wyr_2
case wyr of
{
wyr_1
: wyr_2
...
...
...
default : wyr_n
}
Zastosowania pętli
while l:=read() do
write(l)
while write(read())
repeat
{
... break wyr
}
repeat
{
...
repeat
{
...
if wyr then break break
...
}
...
}
Sukces lub niepowodzenie procedury
procedure power(a,b)
return a^b
end
procedure nsqrt(x)
if x>=0 then return sqrt(x) else fail
end
Struktury sterujące - pętle
while wyr1 do wyr2
until wyr1 do wyr2
while not (wyr1) do wyr2
repeat wyr
break wyr
next
Typy danych w Iconie
null
integer
real
cset
string
set
list
table
file
procedure
co-expression
window
record
4