Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_Арифметические вычисления и сравнения в Прол...doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
89 Кб
Скачать
☆

2.3. Генератор случайных чисел

Для генерации случайных чисел в Visual Prolog предусмотрены два стандартных предиката. Один возвращает случайное вещественное число в диапазоне от 0 до 1, другой возвращает случайное число в диапазоне от 0 до данного числа.

Предикат random/1 возвращает случайное вещественное число RandomReal, удовлетворяющее условию: 0<= RandomReal<1. Формат предиката: random (RandomReal).

Предикат random/2 имеет два аргумента, его формат: random(MaxValaue, RandomInt). Этот предикат ставит в соответствие RandomInt случайное число, удовлетворяющее условию: 0<=RandomInt<MaxValaue. Предикат random/2 работает быстрее, чем random/1, т.к. имеет целочисленную арифметику.

Предикат randominit/1 имеет формат: randominit(Seed). По умолчанию случайное начальное значение генерируется как функция системного времени, а аргумент Seed устанавливает начальное значение. Основное назначение randominit – предоставить повторяемую последовательность псевдослучайных чисел для статистического тестирования.

Целочисленная и вещественная версии random используют одинаковое начальное значение и базовый генератор чисел.

3. Предикаты ввода-вывода

Вывод на экран. Для вывода на экран используется предикат write(). Его синтаксис:

  1. write(список переменных для вывода [управляющие символы]). Переменные разделяются запятыми;

  2. write(“строка для вывода [управляющие символы]”). Управляющие символы – \t, \r, \n и т.д.,

где \t – табуляция;

\r – возврат каретки;

\n – начало новой строки.

Для того чтобы начать вывод в новую строку используется предикат nl – new line.

Пример:

PREDICATES

s(string)

CLAUSES

s("Значение").

GOAL

s(W),

write("\tПрограмма пример\nВторая строка\n"),

write("Ответ =","\t",W), nl,

write("Конец программы"),nl,nl.

После запуска программа выдает следующий результат:

Программа пример

Вторая строка

Ответ = Значение

Конец программы

W=Значение

1 Solution

Последние две строки программа, а точнее утилита Test Goal, выдает автоматически.

Ввод с клавиатуры. Для ввода данных с клавиатуры используются предикаты:

readint(переменная) – ввод одной переменной типа INTEGER;

readreal(переменная) - ввод одной переменной типа REAL;

readchar(переменная) - ввод одной переменной типа CHAR.

Во всех случаях, кроме последнего, ввод необходимо заканчивать нажатием клавиши ENTER.

4. Порядок выполнения работы

1. Составить программу вычисления арифметического выражения.

Варианты заданий приведены в таблице 2.

При создании проекта в окне Application Expert на вкладке Target установить значение UI Strategy в Easywin. После создания проекта необходимо установить требуемые опции компилятора. Для чего открыть пункт меню OptionsProject ® Compiler Options. В появившемся окне выбрать пункт Nondeterm, снять флажки с пунктов Non Quoted Symbols, Strong Type Conversion Check и Check Type of Predicates.

Структура программы включает разделы предложений, предикатов и целей:

Predicates

/*описываются предикаты (аналоги прототипов функций на С++) с используемыми доменами.*/

result(real, real)

result2(real, real, real, real, real)

Clauses

/*описание правил (аналог описания функций С++). Правило – это конструкция Пролога, которая описывает, что можно логически вывести из других данных. Правило – это свойство или отношение, которое достоверно, когда известно, что ряд других отношений достоверен. Синтаксически эти отношения разделены запятыми.*/

% Например, вычисление суммы 2-х чисел Var1 и Var2

result(Var1, Var2):-

Var=Var1+Var2,

write(Var), nl.

% Вычисление значения выражения A*B/C+D-E

result2(A, B, C, D, E):-

F = A*B/C+D-E,

write(F), nl.

Goal

/* описываются цели. При запуске Пролог автоматически выполняет цель*/

readreal(X) % ввод переменной Х,

result(X, 2),

result2(5, 4, 3, 2, 1).

2. Для каждого задания написать 3 варианта программ:

– с заданием переменных в теле программы;

– с введением данных с клавиатуры;

– с заданием значений переменных с помощью генератора случайных чисел.

3. Используя тригонометрические функции Visual Prolog построить таблицу синусов, косинусов, тангенсов на экране. Левая колонка таблицы должна содержать величину угла в градусах, начиная от 0 до 360 градусов с шагом 60 градусов. Таблица должна иметь название, названия колонок, границы (линии разделяющие колонки и строки). Для формирования границ использовать знаки тире, подчеркивания и вертикальной линии (“–”, “_”, “|”). В результате должно получиться примерно следующее:

Программа пример

--------------------------

| Угол | Sin |

--------------------------

| 60 | 0.8660253949 |

--------------------------

Конец программы

Otvet=0.8660253949

1 Solution

4. Написать программу: В компании из десяти человек выбрать трех, которые побегут за Клинским, чипсами, раками. Определить счастливого обладателя приза BMW.