КП-01: модуль Out и переменные

Это первый блок занятий по Компонентному Паскалю. Здесь мы научимся выводить данные.
Есть много способов это делать. Тут будет рассмотрен модуль Out. Он умеет выводить в журнал текст и числа.

вывод символа. (отступ делать табом!)

MODULE Study;
IMPORT Out;
BEGIN
  Out.Char("t");
END Study.

вывод строки

MODULE Study;
IMPORT Out;
BEGIN
  Out.String("привет мир!");
END Study.

вывод строк

MODULE Study;
IMPORT Out;
BEGIN
  Out.String("привет мир!");
  Out.String("привет мир!");
  Out.String("привет мир!");
END Study.

перенос каретки

MODULE Study;
IMPORT Out;
BEGIN
  Out.String("привет мир!");
  Out.Ln;
  Out.String("привет мир!");
  Out.Ln;
  Out.String("привет мир!");
  Out.Ln;
END Study.

удобный синтаксис (после точки с запятой идёт пробел)

MODULE Study;
IMPORT Out;
BEGIN
  Out.String("привет"); Out.Ln;
  Out.String("привет"); Out.Ln;
  Out.String("привет"); Out.Ln;
END Study.

1-разрядный вывод целого числа

MODULE Study;
IMPORT Out;
BEGIN
  Out.Int(5,1);Out.Ln;
END Study.

многоразрядный вывод целого числа

MODULE Study;
IMPORT Out;
BEGIN
  Out.Int(435,0);Out.Ln;
  Out.Int(435,1);Out.Ln;
  Out.Int(435,2);Out.Ln;
  Out.Int(435,3);Out.Ln;
  Out.Int(435,4);Out.Ln;
  Out.Int(435,5);Out.Ln;
  Out.Int(435,6);Out.Ln;
END Study.

многоразрядный вывод вещественного числа
(запятая — тоже разряд)

MODULE Study;
IMPORT Out;
BEGIN
  Out.Real(356.45,5);Out.Ln;
  Out.Real(356.45,6);Out.Ln;
  Out.Real(356.45,7);Out.Ln;
END Study.

переменные CHAR, INTEGER, REAL

MODULE Study;
IMPORT Out;
VAR
a:CHAR;
b:INTEGER;
c:REAL;
BEGIN
  a:="h";
  b:=356;
  c:=356.45;
  Out.Char(a);Out.Ln;
  Out.Int(b,6);Out.Ln;
  Out.Real(c,6);Out.Ln;
END Study.

Строковый массив

Из-за некоторых особенностей языка,
в каждой строке на один символ больше, чем кажется.
Это спецсимвол, чтобы комп всегда видел конец строки.

Подробности:
В КП различают массивы литер и строки.
Строки бывают константы, а бывает — хранятся в массивах.
Строка в массиве заканчивается 0X — нулевой литерой.Если нуль в массив не влезает -это ошибка.
Изначально, когда комп выделяет память под массив, он её не чистит.
Поэтому, изначально, массив забит мусорными значениями.
Потом мы помещаем в него строку.
Но, дело в том, что строка может оказаться заметно короче длины массива.
Поэтому, после окончания строки, у нас будет ещё несколько ячеек, забитых «мусором».
Допустим VAR s, t: ARRAY N OF CHAR.
Тогда s := t означает присваивание всего массива, N элементов, а s := t$ означает скопировать строку, содержащуюся в t, массив s.

MODULE Study;
IMPORT Out;
VAR
a:ARRAY 4 OF CHAR;
BEGIN
  a:="ggg";
  Out.String(a);
END Study.

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

Прокрутить вверх