Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Prolog > Лекции по Prolog


Автор: Guedda 5.11.2006, 10:50
Модератор: Все вопросы по лекциям оставлять http://forum.vingrad.ru/index.php?showtopic=119851

Автор: Guedda 5.11.2006, 11:08
Декларативная и процедурная семантика программ.


    Как и любые другие языки, языки программирования обладают синтаксисом и семантикой. Синтаксис определяет, как записывать конструкции программы, а семантика - как интерпритировать те или иные конструкции, т.е. какой в них вкладывается смысл.
    В процедурном программировании семантика определяет, как должны производиться вычисления (оператор цикла, безусловный оператор, и т.д.). В логическом программировании каждое утверждение описывает случай, когда некоторое отношение истинно. Мы объявляем эти случаи, поэтому говорим о декларативном программировании.
    Однако в процедурном программировании имеются декларативные моменты и наоборот. 

Код

y = x + 1;

C одной стороны этот пример показывает, как по Х вычислить Y, а с другой, логической, стороны записано некое свойство, что
Цитата

Y > X на 1

Аналогично правило в прологе допускает две трактовки:
Пример.
Код

сын(X,Y) :- отец(Y,X), мужчина(X).
  • Декларативный смысл:
    Цитата

    Для любых X,Y, если Y является отцом X, и X является мужчиной, то X является сыном Y.
  • Процедурная трактовка:
    Цитата

    Для того, чтобы показать, что X является сыном Y, нужно показать, что Y является отцом X, и X - это мужчина.
    Язык Пролог строится на логическом программировании, поэтому он является декларативным языком. С другой стороны, в нём имеются процедурные моменты, связанные с конкретным способом вычислений.

Автор: Guedda 13.11.2006, 14:11
Списки.


Списки являются основными элементами программирования на языке Prolog. 
Синтаксис: 
Элементы списка записываются в квадратных скобках через запятую:
Код

[a,b,c,d]
[a,b,c,[d]]


В последнем примере [d] - это тоже список, только с одним элементом. 
Элементами списка могут быть любые термы. Элементом может быть и пустой список. Все списки делятся на голову и хвост, где хвост - это последний элемент списка, а голова - все остальные элементы. Пустой список не делится на голову и хвост.

Автор: MissStone 18.11.2008, 02:18
это не по лекциям ли Рубанчика В.Б? smile 

Автор: Misha_White 19.2.2009, 17:55
Цитата(Guedda @ 13.11.2006,  21:11)
Списки.

Все списки делятся на голову и хвост, где хвост - это последний элемент списка, а голова - все остальные элементы. Пустой список не делится на голову и хвост.

Неверно! Голова - это первый элемент списка, а хвост - все остальное... smile 

Автор: hkdkest 5.6.2009, 16:28
думаю к лекциям не помешают исходники =)

http://www.codingrus.ru/readarticle.php?article_id=765
http://www.codingrus.ru/readarticle.php?article_id=766
http://www.codingrus.ru/readarticle.php?article_id=767
http://www.codingrus.ru/readarticle.php?article_id=768
http://www.codingrus.ru/readarticle.php?article_id=769
http://www.codingrus.ru/readarticle.php?article_id=770
http://www.codingrus.ru/readarticle.php?article_id=771
http://www.codingrus.ru/readarticle.php?article_id=772
http://www.codingrus.ru/readarticle.php?article_id=774
http://www.codingrus.ru/readarticle.php?article_id=775
http://www.codingrus.ru/readarticle.php?article_id=776
http://www.codingrus.ru/readarticle.php?article_id=777
http://www.codingrus.ru/readarticle.php?article_id=778
http://www.codingrus.ru/readarticle.php?article_id=779
http://www.codingrus.ru/readarticle.php?article_id=780
http://www.codingrus.ru/readarticle.php?article_id=781
http://www.codingrus.ru/readarticle.php?article_id=782
http://www.codingrus.ru/readarticle.php?article_id=783
http://www.codingrus.ru/readarticle.php?article_id=784
http://www.codingrus.ru/readarticle.php?article_id=785
http://www.codingrus.ru/readarticle.php?article_id=786
http://www.codingrus.ru/readarticle.php?article_id=787
http://www.codingrus.ru/readarticle.php?article_id=788
http://www.codingrus.ru/readarticle.php?article_id=789
http://www.codingrus.ru/readarticle.php?article_id=790

Автор: hkdkest 19.6.2009, 14:48
продолжение...

• http://codingrus.ru/readarticle.php?article_id=919
• http://codingrus.ru/readarticle.php?article_id=920
• http://codingrus.ru/readarticle.php?article_id=921
• http://codingrus.ru/readarticle.php?article_id=922
• http://codingrus.ru/readarticle.php?article_id=924
• http://codingrus.ru/readarticle.php?article_id=925
• http://codingrus.ru/readarticle.php?article_id=926
• http://codingrus.ru/readarticle.php?article_id=927
• http://codingrus.ru/readarticle.php?article_id=928

Автор: rrrFer 4.4.2013, 14:34
Если к лекциям не мешают исходники, я тоже добавлю чуть чуть: 
http://pro-prof.com/archives/866
http://pro-prof.com/archives/846
http://pro-prof.com/archives/845
http://pro-prof.com/archives/838
http://pro-prof.com/archives/825
http://pro-prof.com/archives/817

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)