Всегда считал, что функция WriteLn в Паскале СНАЧАЛА выводит данные, а ПОТОМ переводит курсор на новую строку. Но тут в одной книге, рецензентами которой являются два профессора, прочитал, что на самом деле всё наоборот - сначала выполняется перевод строки, а потом - вывод данных:
То есть по словам автора, функция WriteLn СНАЧАЛА переводит строку, а ПОТОМ выводит данные (ну а как ещё трактовать выражение “выведет значение выражения с начала новой строки”).
Вот же ж блин! Вся жизнь промелькнула перед глазами! Неужели за 20 лет я этого не заметил? Даже засомневался, и решил проверить. Запустил свою любимую Lazarus (кстати, недавно вышла версия 3.0) и написал вот такой код:
Уф… Всё-таки я ещё не в маразме. Всё-таки WriteLn:
- СНАЧАЛА выводит данные
- И только ПОТОМ переводит курсор на новую строку
Ну а если вам надо перевести курсор именно ПЕРЕД выводом, то можно воспользоваться нехитрым способом, который показан в конце этого кода - вставить перед выводом управляющие символы #10#13.
- #10 - это перевод строки
- #13 - это возврат каретки (перевод в начало строки)
В некоторых случаях можно обойтись только символом #10.
Так что и профессоры могут ошибаться. А вы тут ругаете в комментариях простого инженера за опечатки и неточности :-)
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.