Логическое
программирование
Логическое
программирование
http://blogs.gotdotnet.ru/personal/sos
• программирование переключателей
• машинные коды
• язык ассемблера
• FORTRAN
1954-57 г., Дж.Бэкус
0000 0A 12 1F 4B C3 E0 EE F1
0008 C3 1D 23 17 F2 00 0C 0D
0010 …
MOV AX, [ARG1]
ADD AX, [ARG2]
MOV [RES], AX
JMP NEXT
ARG1: DB 10
ARG2: DB 20
RES: DB 0
NEXT: …
S = 0
DO 10 I=1,10
S = S + I*I
10 CONTINUE
• программирование переключателей
• машинные коды
• язык ассемблера
• FORTRAN
1977 г., Дж.Бэкус
def fac = eq 0 → 1;
*○[id,fac○(-○ [id,1])]
(defun factorial (n)
(if (<= n 1) 1
(* n (factorial (- n 1)))))
1950
1960
1970
1980
1990
2000
2010
♦ FP
♦ LISP
1958 г., Дж.Маккарти
• С, Pascal
○ С++
○ Java
○ C#
♦ Haskell
♥ Prolog
♥ Mercury
♦ F#
♦ OCaml
♦ ML
♦ Miranda
○ Python
?
?
♥ Datalog
♥ Oz
Императивное программирование
(Pascal)
function fact(x:integer):integer;
begin
if x=1 then fact:=1
else fact:=x*fact(x-1)
end;
for a:=1 to 10 do
for b:=1 to 10 do
for c:=1 to 10 do
if a*a+b*b=c*c then
write(a,b,c);;
[ for a in 1..10
for b in 1..10
for c in 1..10
when a*a+b*b=c*c ->
(a,b,c)
];;
solve(A,B,C) :-
for(A,1,10),
for(B,1,10),
for(C,1,10),
A*A+B*B =:= C*C.
zip3 [1..10] [1..10] [1..10] |>
filter (
fun (a,b,c)->a*a+b*b=c*c );;
Пролог удобен при быстром прототипировании определенного класса систем
Принципы, заложенные в основу логического программирования, помогут при решении реальных задач
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть