Write и writeLn — операторы вывода, применяемые в языке программирования Pascal (Паскаль). Всего две буквы разницы — а результат отличается. Оба служат для инициализации обращения к процедуре вывода информации на экран, на печать или в файл. На практике применяются оба, друг друга не исключают.
Определение
Оператор write инициализирует процедуру вывода информации на экран в одну строку.
Оператор writeLn инициализирует процедуру вывода информации на экран в одну строку с переводом курсора на следующую строчку.
Сравнение
Таким образом, разница между write и writeLn заключается не только в паре лишних букв, но и в дополнительной строке, отображаемой на экране. Это можно использовать для форматирования текста и улучшения его читабельности. Оператор write вынуждает следующие процедуры, выводящие информацию, использовать ту же самую строку, то есть текст получается неделимым. Оператор writeLn требует от следующих процедур вывода перехода к курсору, установленному на строку ниже. Ln в названии — от слова line — линия.
Процедуры Write и WriteLn выполняют вывод информации в устройство стандартного вывода. В консольных приложениях этим устройством может быть консоль (то есть экран), в графических приложениях – файл на диске.
Эти процедуры выполняют одно и то же действие. Отличие между ними только одно: процедура WriteLn после завершения вывода выполняет перевод строки. А процедура Write записывает данные подряд – без перевода строки.
Синтаксис для вывода на консоль:
procedure Write(Args : Arguments);
Синтаксис для вывода в файл:
procedure Write(var F: Text; Args : Arguments);
Аргументами (Arguments) могут быть переменные разных типов. Если используется несколько переменных, то они перечисляются через запятую. Например:
Причём, как уже было сказано, при выводе на консоль эти переменные могут быть разных типов. Также можно использовать и константы:
Если требуется перевод строки, то лучше использовать функцию WriteLn вместо Write:
Но можно использовать, например, символы перевода строки в конце списка аргументов:
При записи в файл можно работать как с типизированными файлами, так и с текстовыми файлами.
Если F (см. синтаксис) – это типизированный файл, то переменные, передаваемые как параметры (Args) должны иметь такой же тип, какой указан для файла F. Нетипизированные файлы использовать не допускается. Если параметр F не указан, то предполагается, что вывод выполняется на стандартное устройство (экран-консоль).
Если файл F имеет тип Text, то все необходимые преобразования будут выполнены таким образом, что выходная переменная будет в удобочитаемом формате. Это преобразование выполняется для всех числовых типов. Строки и типы PChar выводятся точно так, как они находятся в памяти.
При выводе на консоль целые числовые значения выводятся в обычном числовом формате. А вещественные числовые значения по умолчанию выводятся в научной нотации.
Чтобы выводить целые числа в поля фиксированной ширины или вещественные числа с фиксированным количеством знаков после запятой, используется специальный формат вывода. Но об этом в данной статье я говорить не буду, так как уже рассказывал об этом здесь.
Если во время выполнения процедуры Write/WriteLn происходит ошибка, то генерируется ошибка времени выполнения. Такое поведение не всегда приемлемо (например, во время чтения/записи файла). Поэтому в каких-то случаях генерацию ошибок отключают. Сделать это можно с помощью директивы компилятора .
Primary tabs

Forums:
В этом уроке мы рассмотрим инструкции (стандартные процедуры ввода/вывода):
Read и Readln
Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:
где переменнаяы — имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.
Приведем примеры записи инструкции read:
При выполнении инструкции read происходит следующее:
- Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша Enter.
- После нажатия клавиши Enter введенное значение присваивается переменной, имя которой указано в инструкции.
Например, в результате выполнения инструкции
и ввода с клавиатуры строки 21, значением переменной Temperat будет число 21.
Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, b и с — real, то в результате выполнения инструкции
и ввода с клавиатуры строки:
переменные будут иметь следующие значения:
Если в строке набрано больше чисел, чем задано переменных в инструкции read, то оставшаяся часть строки будет обработана следующей инструкцией read. Например, в результате выполнения инструкций
и ввода с клавиатуры строки
переменные получат следующие значения:
. Инструкция read (С); присвоит переменной с значение 18.
Readln
Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readln, , и следующая инструкция read или readln будет требовать нового ввода.
Например, в результате выполнения инструкции
и вводе с клавиатуры строки
перемнные получат следующие значения:
После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.
Перед каждой инструкцией read или readln следует располагать инструкцию write, для того чтобы .
Write и Writeln
- Write() — выводит на экран все переданные значения (аргументы передаются через запятую — это могут быть переменные или литералы разных типов).