Сборник задач по логическому программированию для студентов специальности «030100 информатика»

Вид материалаСборник задач

Содержание


Основные команды редактирования
Удаление текста.
Выбор режима вставки или режима замены
Автоматическое выравнивание.
Копирование, удаление фрагмента текста.
Использование подсказки.
Использование предикатов для работы с окнами
Использование окон для ввода и вывода
Подобный материал:
1   2   3   4   5   6   7   8   9

Основные команды редактирования


Управление курсором.

Передвижение курсора к определенной позиции достигается пролистыванием экранных страниц вверх или вниз и смещением его по экрану в пределах выбранной страницы. Для страничного пролистывания верх или вниз можно использовать клавиши PgUp(вверх) и PgDn(вниз), либо комбинациями клавиш Ctrl+R и Ctrl+C.

Для позиционирования курсора в пределах экранной страницы используются стрелки, помещенные в правой части клавиатуры. Когда курсор достигает верхней или нижней части экрана, то он начинает действовать в режиме скроллинга. Для смещения курсора на одну строку вверх или вниз можно использовать комбинации Ctrl+E и Ctrl+X.

Комбинации Ctrl+F сдвигает курсор на одно “слово” вправо, Ctrl+D – на один интервал вправо. Ctrl+А сдвигает курсор на одно “слово” влево, Ctrl+S – на один интервал влево.

Ctrl+Ноme возвращает курсор на начало текста на экране, а при нажатии Ctrl+ End курсор попадает в его конец.

Сдвинуть курсор в начало программы можно при помощи Ctrl+QR или Ctrl+PgUp, в конец программы Ctrl+QС или Ctrl+PgDn.

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

Удаление текста.

Для того чтобы удалить слово, нужно установить курсор в начало слова и нажать Ctrl+Т. Для удаления одного символа используется комбинация Ctrl+G или клавиша Delete.

Удаление строки достигается посредством размещения курсора в произвольной колонке строки и нажатия любой из двух комбинаций Ctrl+Y или Ctrl+Backspase.

Выбор режима вставки или режима замены

Редактор текстов работает в одном из двух режимов: либо в режиме вставки, либо в режиме замены. Слова Insert(вставка) или Owerwrite(замена) в строке статуса информируе, в каком режиме находится редактор в настоящий момент. Для переключения режима нужно нажать клавишу Insert или же комбинацию Ctrl+V.

Автоматическое выравнивание.

Режим автоматического выравнивания, задаваемый по умолчанию, обозначается на экране надписью Indent в строке статуса. Для отмены этого режима нужно нажать комбинацию клавиш Ctrl+QI. Надпись Indent при этом исчезнет. Возврат к режиму автоматического выравнивания осуществляется при помощи той же комбинации.

При редактировании уже существующей программы автоматическое выравнивание функционирует только при включенном режиме вставки.

Копирование, удаление фрагмента текста.

Поместите курсор в начало нужного фрагмента и нажмите комбинацию Ctrl+K+B, затем переведите курсор в конец строки и отметьте конец копируемого фрагмента нажатием комбинации Ctrl+K+K. Теперь весь отмеченный фрагмент будет выделен на экране. Установите курсор в необходимое место и нажмите комбинацию Ctrl+K+С.

Выделение исчезнет, если нажать комбинацию Ctrl+K+Н. Действие этой команды не зависит от положения курсора.

Удалить выделенный фрагмент можно сочетанием Ctrl+K+Y.

Использование подсказки.

Для получения полного перечня команд редактора и другой полезной информации нужно в режиме Edit главного меню нажать функциональную клавишу F1.


Использование предикатов для работы с окнами

В систему программирования Турбо-Пролог включено пять предикатов, позволяющих программе управлять окнами различных размеров. Это предикаты makewindow, shiftwindow, removewindow, clearwindow и gotowindow. С их помощью можно создавать несколько окон, выполнять ввод и вывод в определенные окна и устанавливать атрибуты окон.

Создание окон предикатом makewindow.

Предикат makewindow является основой всех операций над окнами в Турбо-Прологе. Его синтаксическая форма:

makewindow(Window_number, Screen_attribute, Frame_attribute, Frame_string, Starting_row, Starting_column, Window_height, Window_width)

Значения восьми параметров определяют характеристики окна.

Параметр Window_number, целое число, идентифицирует окно в программе. Это число используется в качестве ссылки предикатом gotowindow и др.

Целочисленное значение, присвоенное аргументу Screen_attribute, определяет цвета символов и фона. Выбираемые значения атрибута зависят от того, какой монитор используется цветной или монохромный.

Целочисленные значения Screen_attribute задают комбинацию цветов текста и фона. Для монохромных мониторов эти значения приведены табл. 1. Значения атрибутов экрана для цветного графического адаптера приведены в табл. 2.


Таблица 1.

Атрибуты цвета

Цвет текста

Цвет фона

Screen_attribute

Примечание

Черный

Черный

0

Пустой экран

Белый

Черный

7

Позитивное изображение

Черный

Белый

112

Негативное изображение

Таблица 2.

Соответствие между значением атрибута, цветом текста и цветом фона для окон Турбо-Пролога.

Цвет текста

Значение атрибута

Цвет фона

Значение атрибута

Черный

0

Черный

0

Синий

1

Синий

16

Зеленый

2

Зеленый

32

Голубой

3

Голубой

48

Красный

4

Красный

64

Фиолетовый

5

Фиолетовый

80

Коричневый

6

Коричневый

96

Белый

7

Белый

112

Серый

8




Светло-синий

9




Светло-зеленый

10




Светло-голубой

11




Светло-красный

12




Светло-голубой

13




Желтый

14




Интенсивно-белый

15





Наряду с указанным существуют три необязательных атрибута, задание которых определяет вывод символов с подчеркиванием, изображение с высоким разрешением и вывод мерцающих символов. Вывод символов с подчеркиванием реализуется, если к значению аргумента Screen_attribute добавить 1. Для получения изображения с высоким разрешением, нужно к основному значению атрибута экрана добавить 8. Символы будут мерцающими, если к значению атрибута экрана добавить 128.

Чтобы вычислить значение Screen_attribute для различных комбинаций цветов, прежде всего, выберите необходимый цвет текста и цвет фона. Затем сложите соответствующие значения атрибутов. Если вы хотите, чтобы символы мерцали, прибавьте к результирующему значению 128. Вычисленное значение используется как второй аргумент в предикате makewindow, т.е. Screen_attribute.

Чтобы создать окно с белыми символами на черном фоне, сложите 7 (белый текст) и 0 (черный фон), результат будет 7.

Аргумент Frame_attribute предиката makewindow есть целое число, значение которого определяет рамку окна. Если значение атрибута - 0, окно не имеет видимой границы. Другие значения определяют рамку окна с параметрами, указанными в табл. 3.

Часть значений атрибута рамки окна задает ее цвет. Это делается аналогично заданию значения атрибута экрана. Если задается мерцающая граница, то она всегда будет белой, с мерцающей тонкой линией (в середине границы), имеющей указанный цвет.

Аргумент Frame_string задает метку окна. Например, меткой окна может быть "Главное Меню", "Окно Вывода". Строка, задаваемая в качестве атрибута Frame_string, будет размещена в центре верхней линии рамки окна. Значение метки окна также может быть не определено, что соответствует отсутствию метки. В этом случае вводится аргумент, состоящий из двух последовательных знаков кавычки.

Таблица 3.

Значение атрибута, определяющего цвет рамки окна в Турбо-Прологе.

Значение атрибута

Вид рамки окна

0

Нет рамки

1

Синяя рамка

2

Зеленая рамка

3

Светло-синяя рамка

4

Красная рамка

5

Фиолетовая рамка

6

Желтая рамка

7

Белая рамка

8

Коричневая рамка

-1

Мерцающая белая рамка

-2

Мерцающая желтая рамка

-3

Мерцающая фиолетовая рамка

-4

Мерцающая красная рамка

-5

Мерцающая светло-синяя рамка

-6

Мерцающая светло-зеленая рамка

-7

Мерцающая синяя рамка

-8

Мерцающая серая рамка

Аргумент Starting_row есть целое число, определяющее верхнюю строку (линию) создаваемого окна. Максимальное количество строк, умещающихся на экране, 25. Значение 4 указывает, что окно начинается с четвертой строки. Нумерация начинается с 0.

Аргумент Starting_column указывает крайний левый столбец окна. Значения аргумента изменяются от 0 до 79.

Аргумент Window_height определяет количество строк, занимаемых создаваемым окном.

Аргумент Window_width указывает число столбцов, занимаемых окном.

Предикат shiftwindow используется для смены текущего окна (переключения). Его форма: shiftwindow(Window_number).

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

В то же время Турбо-Пролог "помнит" предыдущие окна и их атрибуты. Например, если окно 3 имеет такие атрибуты, что оно будет перекрывать текущее окно (окно 4), то выполнение предиката shiftwindow (3) вызовет появление окна 3, в которое вложено окно 4. Информация из окна 4, частично закрытая окном 3, сохраняется и появится на экране, когда произойдет переключение и окно 4 вновь станет текущим.

Предикат gotowindow позволяет выполнять быстрое переключение между двумя окнами, которые не перекрываются. Его форма: gotowindow (Window_number).

Этот предикат выполняется быстрее, чем shiftwindow, и поэтому его следует использовать для переключения между окнами, содержащими большое количество текста.

Предикат clearwindow. Данный предикат удаляет из текущего окна все текстовые и графические изображения. Предикат не имеет аргументов. Окно и рамка окна, если она имеется, не разрушаются. Окно целиком закрашивается соответствующим цветом фона.

Предикат removewindow удаляет текущее окно с экрана. Предикат аргументов не имеет. Все текстовые и графические изображения, находящиеся в окне, также удаляются. Если за данным окном находится другое окно, то это окно и его содержимое становятся видимыми. Если удаляется последнее из заданных окон, на экране появляется то изображение, которое было на нем до создания окон.


Использование окон для ввода и вывода

С любым текущим окном работают стандартные предикаты ввода и вывода – readln,readint,readchar - также.

По умолчанию, курсор расположен в верхнем левом углу окна. Используя предикат cursor и помещать курсор в любую позицию текущего окна. Этот предикат имеет вид: cursor (Row_number, Col_number ).

Аргументы Row_number и Col_number являются целыми числами, задающими номера строки и столбца, по отношению к верхней строке и крайнему левому столбцу экрана. Строки и столбцы нумеруются, начиная с нуля: предикат cursor(0,0) обеспечивает вывод текста, начиная с верхнего левого угла экрана.

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

makewindow( 1,7,7,"", 1,1, 8,28),

cursor(4,12),

write("Доброе утро!").


Пример 1.

Программа 1. Работа с окнами

Predicates

start

run(integer)

do_sums

set_up_windows

clear_windows

Clauses

start:- set_up_windows, do_sums.

set_up_windows :-

makewindow(l, 7, 7, “”, 0, 0, 25, 80),

makewindow( 1, 7, 7, "Left operand", 2, 5, 5, 25),

makewindow(2, 7, 7,"", 2, 35, 5, 10),

nl, write(" PLUS"),

makewindow(2, 7, 7, "Right operand", 2, 50, 5, 25),

makewindow(3, 7, 7, "Gives", 10, 27, 5, 25),

makewindow(4, 7, 7,"", 17, 22, 5, 35).

do_sums :- run(_), clear_windows, do_sums.

run(Z) :-

shiftwindow(l),

cursor(2, 1), readint(X),

shiftwindow(2),

cursor(2, 10), readint(Y),

shiftwindow(3), Z=X+Y, cursor(2, 10), write(Z),

shiftwindow(4),

write(" Please press the space bar"),

readchar(_).

Clear_windows :-

shiftwindow(l), clearwindow,

shiftwindow(2), clearwindow,

shiftwindow(3), clearwindow,

shiftwindow(4), clearwindow.