Технология логического программирования. Отличие языков логического программирования от языков процедурного программирования

Автор работы: Пользователь скрыл имя, 31 Марта 2014 в 11:53, курсовая работа

Краткое описание

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

Содержание

Введение…………………………………………………………………….2
1. Технология логического программирования. Отличие языков логического программирования от языков процедурного программирования…………………………………………………...…3
1.1 Логико-смысловая модель на уровне «сущность», «особенное» и «единичное» ...……………………………………………………….……10
1.2 Измерение объема заданного сообщения в кодировках КОИ-8 и Unicode…………………………………………………………………… 14
1.3 Нахождение количества информации, которые переносят заданные буквы согласно вероятностному подходу………………….……………16
1.4 Составление таблицы истинности для логического выражения ….18
2. Решение задач, направленных на умение производить вычисления в разных системах счисления и составление прямых, обратных и дополнительных кодов для целых чисел ………………………...…….20
2.1 Перевод двоичного числа в восьмеричную и шестнадцатеричную системы счисления…………………………………………………….….20
2.2 Перевод десятичного числа в двоичное число с точностью……….22
2.3 Составление прямого, обратного и дополнительного кодов заданных чисел…………………….………………………………………………... 24
Заключение ………….……………………………………………….…. 26
Список использованной литературы………………………….……...….27

Вложенные файлы: 1 файл

КР-ПЗ.docx

— 174.19 Кб (Скачать файл)

Язык Пролог и логическое программирование и широко используются для создания баз знаний и экспертных систем и исследований в сфере искусственного интеллекта на основе логических моделей баз знаний и логических процедур вывода и принятия решений. [4]

Рассмотрев логическое программирование, можно сформулировать основные особенности языков этой группы и их отличия от языков группы процедурного программирования:

    • декларативный принцип у логического программирования (описание самого объекта программирования) в отличие от императивного (описывает процесс вычисления) у процедурного;
    • строгая ориентация на символьные вычисления, а не числовые;
    • возможность логической неполноты данных, а в процедурных языках изъяны алгоритма зачастую приводят к ошибкам вычислений.

Именно по этим отличительным свойствам видно, что логическое программирование – абсолютно другой подход к программированию в целом. Данная технология программирования приобретает актуальность с момента появления интеллектуальных систем и их повсеместного использования, когда для написания программы необходим подход, который позволяет построить программу не используя традиционные алгоритмы, а применяя обучение программ, использование баз знаний.

 

    1. Логико-смысловая модель (ЛСМ) – описание исследуемого или изучаемого объекта с использованием координатно-матричных семантических фракталов. В ЛСМ выделяют два компонента: логический и смысловой (семантический). Логический компонент раскрывает порядок расстановки координат (осей) и узлов, представлен нумерацией осей и последовательностью расположения точек (от центра к периферии). Смысловой компонент раскрывает содержание координат и узлов, представлен их названиями. Логико-смысловые модели можно строить на уровнях трех философских категорий «сущность», «особенное», «единичное». Уровень «сущность» характеризует объект исследования в общем, составные элементы исследуемого объекта конкретизируются на уровне «особенное». Уровень «единичное» раскрывает частные проявления уровней «особенное» и «сущность». Пример ЛСМ уровня «сущность» представлен на рис. 2. [1]

 

АЛГОРИТМ построения логико-смысловой модели на уровне «сущность»:

1. Выбрать объект конструирования  и определить его место в  системе объектов, которой он  принадлежит.

2. Определить тип логико-смысловой  модели, проанализировав выбранный  объект

3. Выделить набор осей  для каркаса в соответствии  с выбранным типом ЛСМ, назвать  оси.

4. Проранжировать оси.

5. Разместить объект конструирования  в центре каркаса.

6. Выделить, назвать и  проранжировать узловые точки каждой оси в соответствии с выбранным типом оси.

7. Разместить узловые  точки с названиями в виде  словосочетаний, аббревиатур, формул  на соответствующих осях. [1]

 

Рис. 2 Пример ЛСМ уровня «сущность»

 

 

Рис. 3 Пример ЛСМ уровня «особенное»

 

Рис. 4 Пример ЛСМ уровня «единичное»

 

 

1.2. Измерьте объем информационного  сообщения «Добрые люди, что звезды  и небо – звезды и небо! –  А я человек!..» согласно техническому  подходу в кодировках КОИ-8 и  Unicode и выразите его в битах, килобайтах и мегабайтах:

Решение. Согласно техническому подходу при кодировании символьной информации в кодах КОИ-8 каждый символ, включая пробелы и знаки препинания, кодируется 1 байтом или 8 битами. Подсчитаем общее число символов в сообщении. Для этого запишем каждый символ в отдельную пронумерованную клетку таблицы:

Таблица 1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

д

о

б

р

ы

е

 

л

ю

д

и

,

 

ч

т

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

о

 

з

в

е

з

д

ы

 

и

 

н

е

б

о

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

 

-

 

з

в

е

з

д

ы

 

и

 

н

е

б

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

о

!

 

-

 

а

 

я

 

ч

е

л

о

в

е

61

62

63

64

к

!

.

.


 

Информационный объем данного сообщения в кодировке КОИ-8 составляет:

64 байт (64*1 байт = 64 байт);

512 бит (64*8 бит = 512 бит);

Примерно 0,0625 Кбайт (64 байт * 1 Кбайт / 1024 байт ≈ 0,0625Кбайт);

Примерно 5,91 *10-5 Мбайт (0,0625 Кбайт * 1 Мбайт / 1024 Кбайт ≈  6,1*10-5 Мбайт).

Согласно техническому подходу при кодировании символьной информации в Unicode каждый символ, включая пробелы и знаки препинания, кодируется 2 байтами или 16 битами. Тогда информационный объем данного сообщения в кодировке Unicode составляет:

128 байт (64 * 2 байт = 128 байт);

1024 бит (128 * 8 бит = 992 бит);

Примерно 0,125 Кбайт;

Примерно 1,22*10-4 Мбайт.

 

1.3. Найти количество информации, которую переносят буквы «т»  и «в» согласно вероятностному  подходу в тексте:

«Рентабельность является одним из центральных понятий экономики. Показателем рентабельности, или рентабельностью, называют отношение прибыли фирмы за некоторый промежуток времени к себестоимости за этот же период. Изменение показателя рентабельности характеризует динамику развития производства, прибыльность или убыточность хозяйственной деятельности фирм, отраслей и т. д. До недавнего времени уровень рентабельности играл важнейшую роль при определении налога с прибыли предприятия или фирмы, потому что ставка налога на прибыль существенно зависела от рентабельности. В 1991 – 1993 гг. в России был установлен предельный уровень рентабельности в 50 %. В настоящее время в субъектах Российской Федерации действует иная схема расчета налога на прибыль.»

Решение. Согласно вероятностному подходу необходимо определить общее число букв в тексте и число букв «т» и «в» в нем. Текст содержит примерно 632 букв, то есть . Буква «т» в тексте встречается 50 раз, то есть . Поделив 50 на 632, мы получим величину 0,079, которая представляет собой среднюю частоту, с которой в рассматриваемом тексте встречается буква «т» или вероятность появления буквы «т» в тексте (), то есть = 50 / 632 = 0,079. Найдем количество информации , которое переносит одна буква «т» в рассматриваемом тексте, для чего вычислим двоичный логарифм от величины 0,079:

 

Буква «в» в тексте встречается 23 раза, то есть . Поделив 23 на 632, мы получим величину 0,036, которая представляет собой среднюю частоту, с которой в рассматриваемом тексте встречается буква «в» или вероятность появления буквы «в» в тексте (), то есть . Найдем количество информации , которое переносит одна буква «в» в рассматриваемом тексте, для чего вычислим двоичный логарифм от величины 0,036:

 

Ответ: количество информации, которое переносит одна буква «т», равно 3,662 бит; количество информации, которое переносит одна буква «в», равно 4,797 бит. [1]

 

1.4 Составить таблицу истинности  и функциональную схему для  логического выражения:

 

Решение. Проанализируем условие. Обозначим через n – число переменных, входящих в логическое выражение. Поскольку логическое выражение содержит три переменные, то сложное высказывание состоит из 3 простых, то есть n = 3. Тогда число строк в таблице истинности равно 2n = 23 = 8, плюс 2 строки для заголовка, т.е. всего 2n + 2 = 23 + 2 = 10 строк. Число столбцов в таблице равно сумме числа переменных (n) и числа всех логических операций (k), входящих в высказывание. Имеем 3 переменные (X,Y,Z), то есть n=3 и 8 логических операций (2 дизъюнкции, 2 конъюнкции,4 отрицания), то есть k=8. Поэтому в таблице истинности будет 11 столбцов (n+k=3+8=11)

Заполним первые 3 столбца значениями 0 и 1, перебирая все возможные значения простых переменных:

В столбце X чередуем 4 нуля и 4 единицы (2n / 21 = 8 : 2 = 4).

В столбце Y чередуем 2 нуля и 2 единицы (2n / 22 = 4 : 2 = 2).

В столбце Z чередуем 1 ноль и 1 единицу (2n / 2n = 2 : 2 = 1).

Таким образом, все возможные варианты учтены и никакие два не совпадают. Заполним таблицу истинности в соответствии с таблицей истинности для логических операций (табл. 4). Получим:

 

Таблица 2

1

2

3

4

5

6

7

8

9

10

11

X

Y

Z

¬2

1˄4

¬3

5˅6

¬1

8˅2

7˄9

¬10

0

0

0

1

0

1

1

1

1

1

0

0

0

1

1

0

0

0

1

1

0

1

0

1

0

0

0

1

1

1

1

1

0

0

1

1

0

0

0

0

1

1

0

1

1

0

0

1

1

1

1

0

0

0

1

1

0

1

1

1

0

1

0

0

0

1

1

1

0

0

0

1

1

0

1

1

0

1

1

1

0

0

0

0

0

1

0

1


 

Составим по структурной формуле F соответствующую функциональную схему.

Рис. 5

Функциональная схема логического высказывания

 

  1. РЕШЕНИЕ ЗАДАЧ, НАПРАВЛЕННЫХ НА УМЕНИЕ ПРОИЗВОДИТЬ ВЫЧИСЛЕНИЯ В РАЗНЫХ СИСТЕМАХ СЧИСЛЕНИЯ И СОСТАВЛЕНИЕ ПРЯМЫХ, ОБРАТНЫХ И ДОПОЛНИТЕЛЬНЫХ КОДОВ ДЛЯ ЦЕЛЫХ ЧИСЕЛ

 

    1. Перевести двоичное число 10011,0101101 в восьмеричную и шестнадцатеричную системы счисления.

Решение. Воспользуемся правилами перевода чисел из двоичной системы счисления в восьмеричную и шестнадцатеричную системы:

Правило перевода числа из двоичной системы счисления в восьмеричную. Число необходимо разбить на триады (тройки цифр), начиная с младшего разряда для целой части числа и старшего разряда для дробной. Для крайних триад в случае необходимости дополнить их нулями. Затем каждой триаде присвоить значение, соответствующее восьмеричной системе счисления, и записать эти цифры в том же порядке.

Таким образом число 10011,01011012 разбивается на следующие триады:

010 = 2

011 = 3

После этих чисел начинается дробная часть.

010 = 2

110 = 6

100 = 4

Значения соответствия чисел двоичной и восьмеричной системы берем из таблицы 2.

Запишем перевод числа в общем виде:

10011,01011012 = 010.011,010.110.100 = 23,2648

Правило перевода числа из двоичной системы счисления в шестнадцатиричную. Число необходимо разбить на тетрады (четверки цифр), начиная с младшего разряда для целой части числа и старшего разряда для дробной. Для крайних тетрад в случае необходимости дополнить их нулями. Затем, каждой тетраде присвоить значение, соответствующее шестнадцатиричной системе счисления, и записать эти цифры в том же порядке.

Таким образом число 10011,01011012 разбивается на следующие тетрады:

0001= 1

0011 = 3

После этих чисел начинается дробная часть.

0101 = 5

1010 = A

Значения соответствия чисел двоичной и шестнадцатиричной системы берем из таблицы 2.

Запишем перевод числа в общем виде:

10011,01011012 =0001.0011,0101.1010 = 13,5A16

Таблица 3


Вычислить 2811*(31915 – 2739), записав результат в тринадцатеричной системе счисления.

Решение. Переведем все числа в одну систему счисления – десятичную.  Для этого пронумеруем разряды чисел справа налево, начиная с нулевого и вычислим сумму произведений степеней основания системы счисления и цифр числа. Получим:

Информация о работе Технология логического программирования. Отличие языков логического программирования от языков процедурного программирования