Найти в Дзене

Write и WriteLn - профессор тоже может ошибиться

Всегда считал, что функция WriteLn в Паскале СНАЧАЛА выводит данные, а ПОТОМ переводит курсор на новую строку. Но тут в одной книге, рецензентами которой являются два профессора, прочитал, что на самом деле всё наоборот - сначала выполняется перевод строки, а потом - вывод данных:

То есть по словам автора, функция WriteLn СНАЧАЛА переводит строку, а ПОТОМ выводит данные (ну а как ещё трактовать выражение “выведет значение выражения с начала новой строки”).

Вот же ж блин! Вся жизнь промелькнула перед глазами! Неужели за 20 лет я этого не заметил? Даже засомневался, и решил проверить. Запустил свою любимую Lazarus (кстати, недавно вышла версия 3.0) и написал вот такой код:

-2

Уф… Всё-таки я ещё не в маразме. Всё-таки WriteLn:

  • СНАЧАЛА выводит данные
  • И только ПОТОМ переводит курсор на новую строку

Ну а если вам надо перевести курсор именно ПЕРЕД выводом, то можно воспользоваться нехитрым способом, который показан в конце этого кода - вставить перед выводом управляющие символы #10#13.

  • #10 - это перевод строки
  • #13 - это возврат каретки (перевод в начало строки)

В некоторых случаях можно обойтись только символом #10.

Так что и профессоры могут ошибаться. А вы тут ругаете в комментариях простого инженера за опечатки и неточности :-)

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.