Console Output

Для вывода текста в консоль (на экран) используется модуль Out, поэтому, если ваша программа производит вывод в консоль, она должена импортировать модуль Out (см. вторую строку программы).

В следующей программе записано восемь команд (восемь последовательных вызовов процедур). Процедура Out.String выводит строку, заключённую в кавычки, а процедура Out.Ln переносит строку.

MODULE Prog1; IMPORT Out; BEGIN Out.String("Утро"); Out.Ln; Out.String("День"); Out.Ln; Out.String("Вечер"); Out.Ln; Out.String("Ночь"); Out.Ln END Prog1.

В результате работы данной программы на экран будет выведено следующее:

Утро День Вечер Ночь

Два вызова Out.Ln подряд образуют пустую строку:

MODULE Prog2; IMPORT Out; BEGIN Out.String("Начало"); Out.Ln; Out.Ln; Out.String("Конец") END Prog2. Начало Конец

Рассмотрим более сложную линейную программу:

MODULE Prog3; IMPORT Out; BEGIN Out.String("Здравствуйте"); Out.String("Товарищи"); Out.Ln; Out.String("Станция"); Out.Ln; Out.String("Мир"); Out.Ln; Out.Char("!"); Out.Int(752, 5); Out.Ln; Out.String("Конец") END Prog3.

В результате работы данной программы на экран будет выведено следующее:

ЗдравствуйтеТоварищи Станция Мир ! 752

Обратите внимание, что слова «Здравствуйте» и «Товарищи» выведены в одной и той же строке, причём слитно. Это происходит потому, что задача ЭВМ — строго выполнять те поручения, которые ей даёт программист. Если программист не указал, что должен быть выведен пробел, то пробел не будет выведен. То же самое относится и к переносу строки.

Out.Char выводит один символ и работает быстрее, чем Out.String. Процедура Out.Int используется для вывода целых чисел и принимает два параметра. Первый параметр — это выводимое число (в нашем примере это 752). Второй параметр — это количество символов, которое отводится на экране под данное число. В нашем случае это 5. Так как десятичная запись числа 752 состоит из трёх цифр, слева от него выводится два пробела (чтобы общее количество символов составило пять). Это используется для вывода чисел по столбцам. Если вы не хотите, чтобы дописывались пробелы, передавайте вторым параметром число 0.

Обратите внимание на вызов процедуры Out.String("Конец") в самом конце программы — соответствующей строки на экране нет. Как уже было сказано раньше, гарантировано появится на экране только то, что было выведено до вызова Out.Ln (или Out.Flush, которая не переносит строку).

Любую строку можно разбить на несколько меньших строк и вывести отдельно. Результат будет точно такой же, как если бы вся строка была выведена сразу.

Out.String("Здравствуйте"); Out.Ln; Out.String("Здра"); Out.String("вс"); Out.String("тву"); Out.String("й"); Out.String("те"); Out.Ln Здравствуйте Здравствуйте

С помощью Out.String можно вывести и пробел:

Out.String("До"); Out.String(" "); Out.String("встречи!"); Out.Ln До встречи!

На экран будет выведено только то, что написано в кавычках (ср. пробелы после слова «до»).

Out.String("До "); Out.String("встречи!"); Out.Ln; Out.String("До" ); Out.String("встречи!"); Out.Ln До встречи! Довстречи!

Для наглядности мы пишем каждую команду в программе с новой строки. Иногда, если команды сильно связаны по смыслу и не очень длинные, их можно написать на одной строке. Обратите также внимание на то, что в начале каждой строки между BEGIN и END поставлено по два пробела. Это отступы. Они сдвигают часть текста программы, заключённую в «операторные скобки» вправо, визуально выделяя её в блок. В линейных программах это не играет большой роли, но в более сложных программах это необходимо, поэтому вырабатывайте привычку к отступам с первых дней программирования.

Рассмотрите данный пример вывода чисел.

MODULE Prog4; IMPORT Out; BEGIN Out.Int(123, 3); Out.Ln; Out.Int(456, 4); Out.Ln; Out.Int(78, 4); Out.Int(9, 0); Out.Ln; Out.Int(123, 0); Out.Ln; Out.Int(123, 1); Out.Ln; Out.Int(-153, 8); Out.Int(78, 8); Out.Ln; Out.Int(19, 8); Out.Int(22, 8); Out.Ln END Prog4. 123 456 789 123 123 -153 78 19 22

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