Практическая информатика




Примеры программ - часть 3


Пример

Напишите программу на языке Пролог, печатающую сумму всех цифр введенного с клавиатуры числа.

Для решения данной задачи воспользуемся двумя предикатами. Предикат сумма/2 имеет своим первым аргументом число, сумма цифр которого является его вторым аргументом. Второй предикат - печать_суммы/0- запрашивает число, вызывает предикат сумма/2 и печатает полученный результат.

сумма(X,Y):- integer(X), X<10, Y is X. сумма(X,Y):- integer(X), X1 is X//10, сумма(X1,Y1), Z is X mod 10, Y is Y1+Z.

печать_суммы:- write('Введите число (в конце точка): '), read(X), nl, сумма(X,Y), write('Сумма цифр числа '), write(X), write(' равна '), write(Y), nl.

Правило печать_суммы не имеет аргументов, данные вводятся с клавиатуры и затем, при помощи механизма унификации, передаются другим подцелям данного правила.

Пример

Напишите программу на языке Пролог, вводящую с клавиатуры два числа - координаты точки на плоскости и определяющую, попадает ли данная точка в круг единичного радиуса с центром в начале координат.

inside(X,Y,попадает):- number(X), number(Y), X**2+Y**2=<1. inside(X,Y,не_попадает):-number(X), number(Y), X**2+Y**2>1.

/* Ввести два числа и вызвать предикат inside/3 */

input:-write('Введите x-координату: '), read(X), nl, write('Введите y-координату: '), read(Y), nl, inside(X,Y,R), write(R).

Задание

Напишите процедуры на языке Пролог для решения следующих задач и приведите примеры использования этих процедур.

  1. Измените последнюю из рассмотренных программ так, чтобы пользователь мог ввести координаты центра круга.
  2. Найдите количество цифр во введенном числе.
  3. Определите максимальную цифру введенного числа.
  4. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определите, сколько клеток будет через N часов (N=3, 6, ..., 24, т. е. кратно 3), если первоначально была одна амеба.




Содержание  Назад  Вперед