Top.Mail.Ru

Turbo Pascal. Ввод и вывод данных

Для ввода данных в языке Турбо Паскаль предусмотрены стандартные операторы (процедуры) –  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.

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

 a=1, b=2, c=3 

 x=44.4, y=47.5, z=76 

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

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

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

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

 Введите 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 . Поскольку используется вывод без форматов данных, результат будет иметь вид:

  12347890  

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

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

Результат:

 1234 7890 

или

writeln(n); {после вывода числа n, курсор перейдет на новую строку}

writeln(m); {после вывода числа m, курсор перейдет на новую строку}

Результат:

 1234 

 7890 

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

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

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

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

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

ris121ris121 401,30  
ris108
8 позиций

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

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

  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.

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

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

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

 -12345 

 -12345.1 

 -12345.12345 

 -12345.12345 

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

 -1.2345123450E+04 

 -1.2E+04 

 -1.2E+04 

 -1.23451234E+04 

 -1.234512345E+04 

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

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

где:

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

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