Вывод на экран

Что делать, чтобы стать программистом Что делать, чтобы стать программистом

Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее...

Вывод на экран - это тоже очень важный момент в программировании. Потому что большинство данных передаётся пользователю именно через экран.

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

procedure Write(var Файл;
                Параметры);

Если выполняется запись в стандартное устройство вывода (например, на экран), то файл не указывается:

procedure Write(Параметры);

Файл - это файловая переменная.

Параметры - это одна или несколько переменных. Если переменных несколько, то они перечисляются через запятую и выводятся поочерёдно.

Процедура WriteLn выполняет аналогичные действия, только в конце своей работы ещё и переводит курсор на новую строку.

Впрочем, всё это вы уже знаете. Однако есть ещё кое-какие фишки, которые можно применять с процедурой Write в консольных приложениях.

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

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


Вывод с одинаковой шириной

Этот формат удобно использовать для вывода таблиц. Для символов отводится одинаковое количество знакомест на экране, поэтому столбцы таблицы получаются одинаковой ширины. Формат такой:

Write(S:W);

Где S - это число, которое выводится на экран, а W - ширина поля, в которое это значение выводится. Выравнивание происходит по правой стороне, то есть пробелы добавляются слева перед числом.


Вывод вещественных чисел

Мы с вами до сих пор неохотно работали с вещественными числами, потому что на экране они выглядели устрашающе - слишком много знаков после запятой.

Однако эта проблема легко решается с помощью форматирования:

Write(S:W:N);

Где S - это число, которое выводится на экран, а W - ширина поля, в которое это значение выводится, N - количество знаков после запятой. Выравнивание происходит по правой стороне, то есть пробелы добавляются слева перед числом.

Пример использования форматированного вывода на экран приведён в листинге 24.2.

Листинг 24.2. Форматированный вывод на экран в консольных приложениях.
program inout;

var i : integer;
    z : single;

begin
  for i := 1 to 100 do
    begin
      case i of
      10, 20, 30, 40, 50, 60, 70, 80, 90, 100 : WriteLn(i:5);
      else Write(i:5)
      end;
    end;
  Write(#10#13);
  for i := 1 to 50 do
    begin
      z := 3 / i;
      case i of
      5, 10, 15, 20, 25, 30, 35, 40, 45, 50 : WriteLn(z:10:4);
      else Write(z:10:4)
      end;
    end;
  ReadLn;
end.

Есть ещё очень полезная подпрограмма, которая пригодится вам при выводе информации на экран. Это процедура GoToXY, которая объявлена в модуле CRT:

procedure GoToXY(X, Y : TCRTCoord);

И пусть вас не пугает неизвестный тип TCRTCoord. На самом деле это обычный целочисленный тип данных с диапазоном 1..255. Отличие от типа Byte заключается только в том, что здесь нет значения 0, так как в Паскале координаты экрана начинаются с единицы. Хотя это не означает, что в качестве переменных для установки координат вы не можете использовать тип Byte или другой целочисленный.

Процедура GoToXY устанавливает курсор в координаты, заданные в соответствующих переменных.

Экран консольного приложения ещё со времён ДОС поделен на некоторое количество знакомест. В одно знакоместо можно вывести один знак (символ). Стандартный размер экрана - 80х25 символов. То есть 80 символов в ширину (координата Х) и 25 символов в высоту (координата Y).

Левый верхний угол имеет координаты (1, 1). Нижний правый угол имеет координаты (80, 25).

Пример использования:

var x, y  : TCRTCoord;

begin
  x := 6;
  y := 2;
  GoToXY(x, y);
  Write('Hello!!!');
  GoToXY(x, y+4);
  Write('Press any key...');
  repeat
  until KeyPressed;
end.


Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика