Для вывода результатов используется оператор. Turbo Pascal. Ввод и вывод данных. Операторы вывода данных

06.04.2024

Для ввода данных в языке Турбо Паскаль предусмотрены стандартные операторы (процедуры) – READ и READLN , которые предназначены для чтения данных, как с клавиатуры, так и из файла. В данном разделе рассматривается ввод данных только с клавиатуры. Добавление к оператору READ символов LN обеспечивает автоматический переход курсора после ввода данных на новую строку.

Формат оператора:

READ (a1,a2,a3,...,an);

Здесь a1,a2,a3,...,an – переменные, которым последовательно присваиваются значения. Если в тексте программы встречается оператор READ , компьютер приостанавливает работу и ожидает ввода значений переменных с клавиатуры. Когда все значения переменных, перечисленных в операторе ввода, введены, процесс выполнения программы продолжается.

READLN;

который выполняет переход на новую строку при вводе данных.

При вводе данных с помощью оператора READ нужно иметь в виду следующие основные правила:

  • логические данные в Турбо Паскале вводить не разрешается;
  • при вводе числовых данных, числа разделяются пробелом или символом окончания ввода (клавиша ENTER). Ввод всегда заканчивается нажатием клавиши ввода – ENTER;
  • пробелы перед числом и между числами игнорируются, поэтому их можно ставить в любом количестве;
  • если переменная описана как Integer , ее значение вводится как целое число, т.е. не допускается использование точки после числа;
  • если переменная описана как вещественная (Real), а ее значение является целым числом, то можно вводить число как целое (т.е. без точки) и как вещественное число – с точкой. Преобразование целого числа к вещественному числу будет выполнено автоматически;
  • ввод символьных данных имеет особенности. Поскольку пробел является символом, как и любой другой символ языка Турбо Паскаль, то символьные данные необходимо вводить сплошной строкой;
  • одной символьной переменной можно присвоить значение только одного символа;
  • нажатие клавиши ENTER воспринимается как символ, поэтому для правильного ввода символьных данных рекомендуется перед каждым оператором ввода символьных данных ставить оператор перехода на новую строку READLN , чтобы их ввод осуществлялся с новой строки.

ЗАДАЧА. Ввод данных.

Program a4; Var a,b,c:integer; {Переменные целого типа} x,y,z:real; {Переменные вещественного типа} s1,s2,s3:char; {Переменные символьного типа} Begin Write(‘Введите а,b,с:’); Readln(a,b,c); {Ввод целых: при вводе недопустима точка, но допустимо любое количество пробелов. Нажатие Enter после ввода значения переменной с, закачивает работу оператора READLN.} Write(‘Введитеx,y,z:’); Readln(x,y,z); {Ввод вещественных чисел} Writeln(‘Введите s1,s2,s3:’); Readln(s1,s2,s3);{Ввод значений символьных переменных. Ввод должен производится сплошной строкой.} End.

Введем в программу следующие исходные данные:

x=44.4, y=47.5, z=76

s1=’A’,s2=’B’,s3=’C’

Обозначим символом пробел при вводе. При вводе числа будем разделять пробелом. Между числами допускается любое количество пробелов. Тогда экран монитора при вводе данных может выглядеть следующим образом:

Введите a, b, c:23 {между числами}

Введите x, y, z:44.447.576 {допускается любое количество пробелов}

Введите s1,s2,s3:A B C

Вывод данных

Для вывода данных из памяти компьютера на экран монитора предназначен оператор Write .

Формат оператора:

Write(a1,a2,a3,...,an);

Здесь a1,a2,a3,...,an могут быть либо переменными, либо строкой символов, заключенной в апострофы. Все элементы перечисляются через запятую. Добавление к оператору WRITE символов LN обеспечивает автоматический переход курсора после вывода данных на новую строку.

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

WRITELN;

который выполняет переход на новую строку, поэтому последующий оператор вывода с параметрами будет выводить данные с новой строки. Оператор вывода без параметров часто используется для формирования пустых строк.

Параметрами оператора WRITE могут быть данные целого, вещественного, логического, символьного, а также типа string .

Расположение данных на экране монитора может быть задано параметрами оператора WRITE , тогда вывод называется выводом с форматами данных. Если в операторе WRITE форматы не используются, вывод называется бесформатным выводом или стандартной формой вывода.

Бесформатный вывод . Форма представления выводимых данных зависит от типа данных:

  • значения логического типа выводятся в виде логических значений TRUE и FALSE ;
  • значения символьных переменных выводятся в виде соответствующих символов;
  • символьная константа выводится в том виде, как она записана, но без апострофов;
  • значения величин целого типа выводятся как целые числа;
  • значения величин вещественного типа выводятся в формате с плавающей точкой.

При бесформатном выводе отводимое количество позиций равно размеру данных. При выводе символа отводится одна позиция, при выводе целого числа – число позиций равно числу значащих цифр плюс одна позиция под знак, если число отрицательное. Это необходимо учитывать при последовательном выводе данных, например чисел, чтобы значения разных переменных не сливались друг с другом.

ПРИМЕР. Рассмотрим фрагмент программы :

var m,n:integer; begin n:=1234; m:=7890; write(n,m); end.

Оператором write(n,m); на экран монитора выводятся целые числа: n=1234 и m=7890 . Поскольку используется вывод без форматов данных, результат будет иметь вид:

Два числа слились. Для того чтобы числа не сливались необходимо использовать разделяющие пробелы или разнесение информации по разным строкам.

write(n,’ ’,m);{между числами поставлен пробел}

Результат:

1234 7890

или

Результат:

1234

Форматный вывод . Для вывода вещественных чисел необходимо указать в операторе WRITE формат представления числа, который имеет вид:

WRITE(<переменная>:m:n);

где: m – целое число, указывающее общее количество позиций отводимое под значение переменной, включая позицию под знак числа, точку и количество цифр дробной части; n – целое число, определяющее количество цифр дробной части.

Выводимая информация выравнивается по левому краю. При этом подавляется печать ведущих нулей, т.е. если для вывода числа было выделено четыре позиции, то на экран монитора будет выведено, например, 6 , а не 0006 .

Пример. Выведем значение переменной A , равное 401.3 оператором write(A:8:2) . На экран монитора будет выведено:

401,30
8 позиций

Символом обозначен пробел.

Вывод вещественных чисел выполняется по следующим правилам:

  1. Если число имеет меньшую длину, чем m , то оно будет дополнено слева пробелами.
  2. Если число имеет большую длину, чем m , то параметр m игнорируется и число будет выведено полностью.
  3. Если дробная часть больше, чем параметр n , то число округляется. Округление не изменяет самого значения переменной, меняется только представление числа на мониторе.
  4. Если параметр n не указан, то ни дробная часть числа, ни десятичная точка не выводятся. Вывод осуществляется в формате с плавающей запятой.

В качестве примера рассмотрим печать вещественного числа в различных форматах.

program write; var x:real; begin x:=-12345.12345; writeln("Печать вещественного числа":50); writeln("Печать в фиксированном формате"); writeln(x:3:0); writeln(x:3:1); writeln(x:12:5); writeln(x:20:5); writeln; writeln("Печать в плавающем формате"); writeln(x); writeln(x:3); writeln(x:5); writeln(x:15); writeln(x:16); end.

Результат работы программы:

Печать вещественного числа

Печать в фиксированном формате

Печать в плавающем формате

1.2345123450E+04

1.234512345E+04

Для вывода целых чисел необходимо указать в операторе WRITE формат представления числа, который имеет вид:

WRITE(<переменная>:k);

где:

k – целое число, указывающее общее количество позиций, отводимое под значение переменной.

В целых числах отсутствует дробная часть, поэтому нет необходимости указывать в формате число позиций дробной части.

Как организован ввод-вывод данных с терминального устройства? Для начала (кто не знает), определим терминальное устройство. Терминальное устройство - это клавиатура, дисплей, т.е. то, с чем пользователь обычно работает. Какие существуют операторы ввода вывода Паскаль ?

Ввод данных Паскаль:

Как ввести данные в Паскале? Очень легко и просто! Ввод исходных данных в Паскале осуществляется процедурой readln:

readln(b1,b2,…,bk)

В этом примере процедура readln осуществляет чтение k значений исходных данных и присваивает эти значения переменным b1, b2,…, bk с переходом на новую строку (похожая процедура read отличается от readln отсутствием перехода на следующую строку). Когда мы вводим данные в Паскале, происходит своеобразное преобразование внешней формы во внутреннюю, которую определяет тип переменных.

Переменные, входящие в состав списка ввода, могут относиться к разным типам: целому, действительному, символьному. Однако чтение логических данных не допускается в Паскале. Исходные данные (т.е. их значения) отделяются друг от друга нажатием клавиши Enter и Tab, пробелами (при вводе данных недопустимо разделять числа запятыми).

Вывод данных Паскаль:

Теперь расскажем о выводе данных в Паскале. Чтобы вывести на экран результат работы вашей программы, обычно пользуются двумя процедурами:

write(b1,b2,…bk) — осуществляет вывод значений переменных b1, b2,…, bk в строку экрана.

writeln(b1,b2,…, bk) - производит как вывод данных на экран, так и переход к началу следующей строки.

Процедура writeln может использоваться без параметров, тогда просто производится пропуск исходной строки и переход к началу следующей. В списке вывода переменные могут иметь нескольких типов: целый, действительный, символьный или булевский. К элементам списка вывода относятся еще выражения и строки. Форма представления значений в поле вывода соответствует типу переменных и выражений:

  • целочисленные величины выводятся как целые десятичные числа,
  • величины действительного типа представляются как действительные десятичные числа с десятичным порядком,
  • величины символьного типа и строки выводятся в виде символов,
  • величины логического типа - в виде true и false (логические константы).

Оператор вывода создает возможность задать ширину поля вывода для каждого элемента списка вывода, которые будут иметь вид: А:К, где А - строка или выражение, К - выражение либо целочисленная константа. Возникают две ситуации при этом:

  1. В случае, когда выводимое значение занимает в поле вывода меньше позиций, чем К, перед ним устанавливаются пробелы.
  2. Когда же значение не помещается в рамках поля К, то этому значению отводится нужное количество позиций.

Элемент списка вывода для величин действительного типа может иметь вид: А:К:М, где А - выражение действительного типа или переменная, К - ширина поля вывода (выражение или константа), М - число цифр дробной части выводимого значения(выражение или константа). В данной ситуации действительные значения будут выведены как десятичное число с фиксированной точкой. Представим пример записи операторов вывода:

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

Операторы присваивания

В языке Паскаль оператор присваивания обозначается двумя символами «:=», между которыми не ставится пробел. В левой части данного оператора должна стоять переменная, а в правой части - выражение, значение которого будет присвоено переменной.

Очень часто в Паскале можно увидеть конструкцию вида p:=p+1. Данная запись не содержит ошибки. Внутри компьютера данный оператор выполняется следующим образом: сначала берется исходное значение переменной, к которому прибавляется единица. После этих действий результат вычислений помещается в переменную p. Таким образом в языке Паскаль реализуется инкремент переменной.

Очень важно следить, чтобы все переменные, которые участвуют в правой части оператора присваивания, были определены к моменту его исполнения. В качестве правых частей для вычисления численных переменных операторы присваивания используют арифметические выражения, состоящие из переменных, констант, знаков операций, скобок и вызовов функций. В общем случае правила построения выражений аналогичны математической записи. Бинарные операции, применимые к целочисленным данным приведены в таблице 1 .

Для примера реализации операции присваивания рассмотрим задачу вычисления гипотенузы треугольника по двум известным катетам. Согласно теореме Пифагора, гипотенуза будет рассчитываться по формуле:

Таблица 1 - Бинарные арифметические операции над типом integer

Исходный код программы:

Program Op_prisv;

c:=sqrt(a*a+b*b);

В данной программе использованы только операторы присваивания. При этом в двух случаях переменным просто присваивается начальное значение - это катеты треугольника. А в третьем случае происходит вычисление выражения, определяющего корень из суммы квадратов катетов.

В результате выполнения данного кода программа вычислит значение гипотенузы треугольника со сторонамиa, b, и занесет это значение в переменную c.

Операторы ввода-вывода

Ввод и вывод необходимы для связи программы с внешним миром - таким образом можно получать входные данные от пользователя и выводить полученные результаты на экран. Очевидно, программа без вывода не имеет смысла. В предыдущем примере было рассмотрено вычисление гипотенузы прямоугольного треугольника, однако, без использования оператора вывода нельзя узнать результат, полученный при исполнении программы.

В языке Паскаль операторы ввода-вывода правильнее называть процедурами. Они служат для обмена данными между программой и внешними устройствами. Так, например, можно ввести данные с клавиатуры, из файла, вывести данные на экран или в файл.

Для ввода с клавиатуры в языке Паскаль существует два оператора: Readи Readln. Для вывода на экран - Writeи Writeln. Дополнение «ln» произошло от английского слова «line» - строка, линия. Операторы, заканчивающиеся на «ln» в результате своих действий переводят курсор на новую строку. Так, например, при работе оператора Write курсор останется на следующей позиции после последнего выведенного символа. А в случае оператора Read очередные данные будут считываться из той же строки, где стоит курсор.

Традиционная запись данных операторов содержит параметры, однако, их может и не быть. В таком случае оператор Writeln будет реализовывать просто переход на новую строку, а оператор Readlnбудет ждать ввода любой клавиши.

Кроме стандартного вывода данных в языке Паскаль предусмотрен и форматированный вывод, который существует для того, чтобы сделать отображение на экране более понятным. Форматированный вывод содержит количество позиций, которые при выводе необходимо отвести под значение переменной .

В качестве примера использования операторов ввода-вывода модифицируем задачу определения гипотенузы прямоугольного треугольника следующим образом:

Program Op_vvod_vyvod;

write("Катет a = ");

write("Катет b = ");

c:=sqrt(a*a+b*b);

writeln("Гипотенуза = ",c:3:2);

writeln("Для завершения нажмите любую клавишу...");

В данной программе используются операторы ввода исходных данных - катетов прямоугольного треугольника. Для вывода результата на экран используется форматированный вывод. Результаты работы программы приведены на рисунке 9.


Рисунок 9 - Пример работы с операторами ввода-вывода

Кроме того, в программе используется оператор Readln без параметров, который подтверждает завершение программы. Так, после нажатия любой клавиши программа выдаст сообщение о том, что ее работа завершена (см. рисунок 10).


Рисунок 10 - Пример работы оператора ввода без параметров

При рассмотрении примера работы оператора присваивания мы столкнулись с необходимостью узнать результат выполнения программы. Мы разобрались с тем, как информацию сохранять (в переменных), как обрабатывать (с использованием выражений), но два фундаментальнейших информационных процесса остались вне нашего внимания: получение информации и передача ее во внешний по отношению к компьютеру мир. Пока наши программы могут использовать лишь информацию, которая находится непосредственно в тексте программы. Узнать, какие значения в данный момент имеют переменные, также не представлялось возможным. Программирование в таких условиях теряет смысл.

Взаимодействие устройств обработки и хранения информации с внешней редой (хотя бы с пользователем) является совершенно необходимым. За такой интерфейс в языке Паскаль отвечают операторы ввода-вывода информации. Эти инструкции позволяют ввести аргументы, параметры расчетов во время выполнения программы (а не на этапе ее написания), осуществить вывод рассчитанных данных в понятном человеку виде.

Операторы ввода (форматы операторов):

Read(<Список ввода>); Readln(<Список ввода>);

В таком формате эти команды позволяют вводить данные в переменные во время выполнения программы с клавиатуры. Элементами списка ввода могут быть имена переменных, которые должны быть заполнены значениями, введенными с клавиатуры. Выполнение операторов ввода происходит так: ход программы приостанавливается, на экран выводится курсор, компьютер ожидает от пользователя набора данных для переменных, имена которых указаны в списке ввода. Пользователь с клавиатуры вводит необходимые значения в том порядке, в котором они требуются списком ввода, нажимает Enter. После этого набранные данные попадают в соответствующие им переменные и выполнение программы продолжается.

Примечание: данные при вводе разделяются пробелами.

Разница между работой процедур Read и Readln (от Read line) состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln - с новой строки.

Для вывода информации в Паскале также есть две команды:

Write(<Список вывода>); Writeln(<Список вывода>);

Такой формат использования Write и Writeln позволяет выводить на экран монитора данные из списка вывода. Элементами списка вывода могут являться имена переменных, выражения, константы. Прежде чем вывести на экран компьютер значения выражений сначала вычислит. Элементы списка, также как и в операторах ввода, разделяются запятыми. Различие между двумя операторами вывода таково: после выполнения оператора Writeln (от Write line) происходит переход на новую строчку, а после выполнения инструкции Write, переход на новую строчку не происходит и печать по последующим командам вывода Write или Writeln будет происходить на той же строчке. При вызове оператора Writeln без параметров просто происходит переход на новую строчку.

Приведем пример использования операторов ввода и вывода:

Program Inteface;

Write("Введите радиус круга "); {Печать на экране просьбы о вводе}

Readln(R); {Ввод значения в

переменную R с клавиатуры}

S:=4*ARCTAN(1)*SQR(R); {Вычисление площади круга (pR2)}

Writeln("Площадь круга радиусом ",R," равна ",S)

Эта программа запрашивает у пользователя значение радиуса круга, обеспечивает возможность ввести его значение, рассчитывает и выводит на экран величину площади круга с таким радиусом. Таким образом, появляется возможность, не внося изменений в текст программы, вводить различные значения радиуса и получать, соответствующие им значения площади круга. Для этого достаточно несколько раз запустить программу. Также эта программа демонстрирует следующее правило: выдача результатов должна быть прокомментирована так, чтобы был ясен смысл напечатанных чисел. Действительно, ведь можно было бы ограничиться Writeln(S), но значение выведенного программой числа в этом случае было бы ясно только тому, кто эту программу написал.

Для того, чтобы просмотреть результат работы этой программы, ее необходимо сначала откомпилировать. Сделать это в Паскале можно, нажав сочетание клавиш Ctrl+F9. Программа будет проверена на ошибки (если они найдутся, то вам будет выдано сообщение вверху экрана и курсор встанет на место ошибки). Если ошибок не нашлось, то результат будет выдан и просмотреть его можно, если нажать сочетание клавиш Alt+F5.

Набор программы на Паскале похож на набор обычного текстового файла, только для этого используется среда ТурбоПаскаль. Запустить ее можно с Вашего Рабочего стола.

Пример . Определить объём и площадь боковой поверхности цилиндра с заданными радиусом основания R и высотой H.

Program Cylinder;

R, {радиус основания цилиндра}

H, {высота цилиндра }

V, {объем цилиндра }

S: Real; {площадь боковой поверхности цилиндра}

Write("Введите высоту цилиндра: "); ReadLn(H);

Write("Введите радиус основания: "); ReadLn(R);

V:= Pi * R * R * H;

S:= 2 * Pi * R * H; WriteLn;

WriteLn("Объем цилиндра = ", V: 5: 2); {Здесь 5 – общее количество позиций, занимаемых переменной V при выводе, а 2 - количество позиций в дробной части значения V}

WriteLn("Площадь боковой поверхности = ",);

Задание для лабораторной работы.

1. Вычислить длину окружности, площадь круга и объём шара одного и того же заданного радиуса.

2. Вычислить значение функции y = 3x 2 + 4(sin(x)- x 3)

Ввод данных - это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи. Вывод - обратный процесс, когда данные передаются из оперативной памяти на внешние носители (принтер, дисплей, магнитные устройства и т.д.). Результаты решения всякой задачи должны быть выведены на один из этих носителей.

Основными устройствами ввода-вывода у персонального компьютера являются клавиатура и дисплей (экран монитора). Именно через эти устройства главным образом осуществляется диалог между человеком и ПК.

Оператор ввода read

Процедура ввода с клавиатуры (обращение к стандартной процедуре ввода) имеет следующий формат:

Read(<список ввода>)

где <список ввода> - это последовательность имен переменных, разделенных запятыми. При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке Паскаль недопустимо. Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter .

Если в программе имеется несколько операторов read , то данные для них вводятся потоком, т.е. после считывания значений переменных для одного оператора read данные для следующего оператора читаются из той же строки на экране, что и для предыдущего до окончания строки, затем происходит переход на следующую строку.

Другой вариант оператора ввода с клавиатуры имеет вид:

Readln(<список ввода>)

Этот оператор отличается от read только тем, что после считывания последнего в списке значения для одного оператора readln данные для следующего оператора будут считываться с начала новой строки.

Оператор вывода write

Оператор вывода на экран (обращение к стандартной процедуре вывода) имеет следующий формат:

Write(<список вывода>)

Переменные, составляющие список вывода, могут относиться к целому, действительному, символьному или логическому типам. В качестве элемента списка вывода кроме имен переменных могут использоваться выражения и строки. При выводе на экран нескольких чисел в строку они не отделяются друг от друга пробелами. Программист сам должен позаботиться о таком разделении.

Второй вариант процедуры вывода на экран:

Writeln(<список вывода>)

Его действие отличается от оператора write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор writeln , записанный без параметров, вызывает перевод строки.

Вывод каждого значения в строку экрана происходит в соответствии с шириной поля вывода, определяемой конкретной реализацией языка. Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE .

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций. Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А - переменная или выражение действительного типа, К - ширина поля вывода, М - число цифр дробной части выводимого значения. К и М - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.