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

Операторы ввода read, readln в Pascal

Приветствую. Сегодня я хотел бы затронуть тему операторов ввода данных.

Операторов ввода существует всего два. А именно:

  1. read
  2. readln

Ничего не напоминает? Те, кто внимательно читали предыдущую статью, скажут что эти операторы похожи на операторы вывода. И будут правы! Оператор readln отличается от оператора read только лишь тем, что после ввода данных переводит курсор на следующую строку

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

Для этого вместо куска кода

A:=5;
B:=7;
пишем
read (A);
read (B);

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

program perimetr;
var A,B,P: integer;
begin
  read(A);
  read(B);
  P:=2*(A+B);
  write(P);
end.

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

Ход ваших рассуждений при составлении программы должен быть примерно следующим:
1) Мне нужно попросить пользователя ввести значения ширины прямоугольника. Для этого использую оператор вывода: writeln('Введите ширину прямоугольника');
2) Теперь нужно чтобы программа прочитала это значение. Для этого использую оператор ввода: readln(A);

Здесь немного остановимся. Возможно у вас возник вопрос: "А что значит буква А в скобках?" Так вот, в скобках вы указываете ту переменную, которой будет присвоено значение, введенное с клавиатуры. В нашем случае ширину мы записываем в переменную А, следовательно и в скобках пишем ее.
3) Далее мне нужно попросить пользователя ввести длину. По аналогии с первым пунктом:
writeln('Введите длину прямоугольника');
4) Считываем введенное значение по аналогии со 2-ым пунктом: readln(B);

Вот и все, соберем весь код в кучу:

program perimetr;
var A,B,P: integer;
begin
    writeln('Введите ширину прямоугольника');
    read(A);
    writeln('Введите длину прямоугольника');
    read(B);
    P:=2*(A+B);
    write(P);
end.

Запустите программу, посмотрите как она выполняется. На мой взгляд чего-то не хватает. Как думаете? Следует выводить на экран что-то типа "Ответ" или "Периметр = " перед тем как выведется результат расчета. А то у нас получается, что программа выводит какое-то число, а что за число - поди разбери. Для этого можно пойти двумя путями:

1) Дописать перед строчкой write(P); строку: write('Периметр =');

2) Модернизировать предпоследнюю строчку кода write(P). Делается это следующим образом: пишем оператор write, открываем круглую скобку, в одинарных кавычках пишем 'Периметр = ', ставим запятую и после нее пишем переменную P. Вот как это будет выглядеть: write('Периметр = ',P);

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