Как оформить программу?

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

Когда работа над содержательной частью программы завершена, программа отлажена и работает, можно приступать к ее оформлению. Если речь идет о программе, которая должна стать полноценным продуктом, то этап оформления (создания удобного пользовательского интерфейса) средствами языка Турбо Паскаль порой отнимает у программиста существенно больше времени, нежели собственно программирование содержательной части задачи. Поэтому в настоящее время для создания профессионального пользовательского интерфейса (в частности оконного) используют специальные подходы и инструментальные средства, позволяющие буквально за несколько минут визуально сконструировать “оболочку” для Вашей программы. Но это тема для отдельного разговора. Если же это учебная программа, основная цель написания которой, освоение тех или иных приемов программирования, то оформление, в данном случае, является второстепенной задачей. Однако, даже в этом случае, целесообразно приложить некоторые усилия для создания минимальных элементов пользовательского интерфейса. К таким элементам можно, в частности, отнести: а) разнообразные сообщения, выводимые на экран программой, которые поясняют назначение программы, ожидаемые от пользователя действия и т.п.; б) простейшие меню для управления программой; в) представление результатов работы программы в удобной форме (например: вывод двумерного массива на экран в виде матрицы; вывод результатов табулирования в виде таблицы и т.п.).

Прежде чем рассматривать конкретные примеры оформления, выясним, какие стандартные средства предоставляет для этого Турбо Паскаль.

Поскольку речь здесь пойдет о работе с экраном в текстовом режиме, нужно выяснить, его особенности. Аппаратные средства IBM-совместимых персональных компьютеров, отвечающие за формирование изображения на экране монитора, устроены таким образом, что могут работать в двух различных режимах: текстовом и графическом. И в том и в другом режиме, изображение на экране формируется в виде маленьких точек – пикселей (см. подробнее здесь). Однако в текстовом режиме невозможно управлять отдельными точками. На экран можно выводить только фиксированные группы точек, формирующие те или иные символы (цифры, буквы, знаки и т.п.).

Каждый символ строится как группа "светящихся" и "погашенных" точек расположенных в виде прямоугольный матрицы – знакоместа. Любой символ занимает на экране одинаковое пространство.

Сам экран представляет собой прямоугольную матрицу знакомест (см. рис. ниже). По умолчанию экран содержит 25 строк в каждой из которых может располагаться до 80 символов.

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

Различные средства для работы с экраном в текстовом режиме реализованы в Турбо Паскале в виде подпрограмм (процедур и функций), собранных в библиотечном модуле CRT (этот модуль входит в состав файла turbo.tpl – turbo pascal library). Поэтому первое, что необходимо сделать подключить этот модуль к Вашей программе директивой USES:

USES CRT;

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

ClrScr процедура очистки экрана (точнее, процедура закраски экрана текущим цветом фона, по умолчанию устанавливается черный цвет фона). Текстовый курсор при этом перемещается в левый верхний угол экрана.

TextColor( CT )процедура установки цвета символов; параметр СT определяет номер цвета. В качестве СT можно использовать цифры от 0 до 15 или описанные в модуле CRT константы: Black=0, Blue=1, Green=2 и т.д. (по умолчанию устанавливается светло-серый цвет LightGray=7).

TextBackGround( CBg )процедура установки цвета фона; параметр СBg определяет номер цвета. В качестве СBg можно использовать цифры от 0 до 7 или описанные в модуле CRT константы: Black=0, Blue=1, Green=2 и т.д. Вызов этой процедуры не приводит сразу к изменению цвета фона всего экрана. Для того, чтобы весь экран окрасился в установленный цвет, нужно вызвать процедуру ClrScr.

GotoXY( X, Y )процедура перемещает текстовый курсор в позицию с координатами X и Y (X – номер столбца, Y – номер строки).

ReadKey : Charфункция возвращает код символа клавиши, нажатой на клавиатуре. Если к моменту вызова этой функции на клавиатуре не была нажата ни одна клавиша, то выполнение программы приостанавливается до тех пор, пока не будет нажата какая-нибудь клавиша. Это свойство можно использовать для организации задержек выполнения программы до нажатия любой клавиши.

Замечание: Начиная с 7-ой версии Турбо Паскаль разрешает вызывать функцию ReadKey не только в том месте программы, где предполагается наличие символьного значения (например, справа от оператора присваивания или как операнд символьного/строкового выражения), но и там где предполагается наличие оператора (т.е. вызывать функцию как процедуру).

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

PROGRAM Example_3;
USES CRT;
VAR
  a, b, y : Integer;
BEGIN
  TextBackGround( Blue );
  ClrScr;
  TextColor( Yellow );
  GotoXY(25,2);
  Write('Вычисление суммы двух целых чисел.');
  TextColor( LightCyan );
  GotoXY(2,5);
  Write('Введите число a: ');
  TextColor( White );
  ReadLn(a);
  TextColor( LightCyan );
  GotoXY(2,7);
  Write('Введите число b: ');
  TextColor( White );
  ReadLn(b);
  y := a + b;
  TextColor( LightCyan );
  GotoXY(2,9);
  Write('Сумма a+b = ');
  TextColor( White );
  Write(y);
  TextColor( LightGray );
  GotoXY(2,24);
  Write('Для завершения нажмите любую клавишу . . .');
  ReadKey;
  TextBackGround( Black );
  TextColor( LightGray );
  ClrScr;
END.

По сравнению с предыдущим примером (Example_2) текст программы существенно расширился. В нем даже не просто отыскать содержательную часть (y := a + b). Но не поленитесь, обязательно наберите этот текст и запустите программу. Результат, который Вы увидите на экране, возможно порадует Вас и придаст Вам оптимизма!

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

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

И последнее. Процесс оформления программы может оказаться делом весьма увлекательным. Однако помните, что все хорошо в меру. Вы можете потратить много времени занимаясь оформлением программы, тогда как содержательной части задачи посвятите гораздо меньше внимания это не правильно. При использовании цветового выделения не забывайте о гармоничном соотношении цветов. Не старайтесь одновременно использовать как можно больше цветов на экране. Излишне пестрая раскраска может только отвлекать внимание и даже мешать восприятию программы

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