Readln что такое в паскале
Приветствую. Сегодня я хотел бы затронуть тему операторов ввода данных.
Ничего не напоминает? Те, кто внимательно читали предыдущую статью, скажут что эти операторы похожи на операторы вывода. И будут правы! Оператор readln отличается от оператора read только лишь тем, что после ввода данных переводит курсор на следующую строку
Возьмем для примера задачу №1 из первого урока. В ней, если вы помните, длину и ширину прямоугольника мы непосредственно вбивали в код программы. Сейчас мы немного поколдуем над кодом и сделаем так, чтобы эти данные можно было вводить с клавиатуры каждый раз при запуске программы.
Для этого вместо куска кода пишем
Попробуйте теперь запустить программу с измененным кодом. На всякий случай напишу весь код:
Заметили, как теперь при запуске программа ждет ввода данных? И пока ввод не будет осуществлен, она не продолжит выполнение. Но согласитесь, это мы с вами знаем, что при запуске программы нужно ввести значения длины и ширины, а кто-то другой, запустив ее, не догадается до этого. Поэтому нам нужно вывести на экран просьбу, что-то вроде «Введите длину». Для этого используем оператор вывода write. О нем я уже писал в предыдущем уроке.
Ход ваших рассуждений при составлении программы должен быть примерно следующим:
1) Мне нужно попросить пользователя ввести значения ширины прямоугольника. Для этого использую оператор вывода: writeln(‘Введите ширину прямоугольника’);
2) Теперь нужно чтобы программа прочитала это значение. Для этого использую оператор ввода: readln(A);
Здесь немного остановимся. Возможно у вас возник вопрос: «А что значит буква А в скобках?» Так вот, в скобках вы указываете ту переменную, которой будет присвоено значение, введенное с клавиатуры. В нашем случае ширину мы записываем в переменную А, следовательно и в скобках пишем ее.
3) Далее мне нужно попросить пользователя ввести длину. По аналогии с первым пунктом:
writeln(‘Введите длину прямоугольника’);
4) Считываем введенное значение по аналогии со 2-ым пунктом: readln(B);
Вот и все, соберем весь код в кучу:
1) Дописать перед строчкой write(P); строку: write(‘Периметр =’);
Запустите программу, протестируйте ее при разных значениях длины и ширины. Если возникли какие-то вопросы, не стесняйтесь задавать их, контакты для связи со мной находятся здесь. Ну, а если вопросов нет, можете приступать к следующему уроку
Процедуры write, writeln и readln
Это четвёртый урок по изучению языка программирования Паскаль для начинающих. В нём мы подробно ознакомимся с встроенными процедурами языка: write, writeln и readln. Первые две выводят информацию на экран, третья позволяет считывать информацию с клавиатуры и используется как пауза в программах. Очевидно, трудно переоценить то, чем они занимаются. Крайне мало найдётся программ, которые совсем ничего не писали бы на экране.
Наши простые программы все до единой что-то выводят на экран — пишут, чему они посвящены и какую информацию пользователь должен ввести с клавиатуры. А это значит, что все три процедуры используются буквально в каждой из них.
Процедуры write и writeln очень похожи друг на друга, они выводят на экран строки, переменные (точнее значения переменных) и результаты действия других процедур и функций. Основное их отличие состоит только в том, что первая выводит информацию на экран и курсор остаётся в той же строке сразу за последним символом, в то время как вторая курсор принудительно переводит на следующую строку — линию.
Перейдём к примерам.
Посмотрите листинг 1. Вообще-то для вас в нём не должно быть ничего нового. Когда мы собираемся передать нашей процедуре строку, мы обособляем её одиночными кавычками — апострофами. Так PascalABC поймёт, где начало строки, где её конец и выведет информацию на экран. Если мы запустим нашу программу в среде разработки без компиляции, то в окне вывода увидим переданную строку.
Не скажу, что выводимый текст был таким уж большим, но частенько случается так, что на экран нужно вывести длинные строки или значения нескольких переменных. В таких случаях, данные (аргументы) в процедуру передаются через запятую, а длинную строку, разбивают на более короткие и апострофами обособляют уже каждую короткую строку. Давайте немного перепишем нашу программу, теперь она примет следующий вид:
Обратите внимание, короткие строки — аргументы процедуры я написал с новой строки, сдвинув их на пару пробелов вправо. Когда аргументов будет ещё больше, такая форма записи будет более наглядной. Каждая короткая строка обособлена апострофами, между собою строки отделены запятой, а первая строка заканчивается пробелом. Если этого не сделать, последнее слово первой строчки неминуемо «прилипнет» к первому слову во второй.
Кроме того, чтобы можно было откомпилировать нашу программу и безболезненно её запускать, последним оператором я добавил процедуру readln без параметров. Впрочем, так мы её уже использовали в прошлых уроках.
Откомпилируйте программу, перейдите в папку с нею и запустите исполняемый файл. Открывается консольное окно программы, в нём напечатан наш текст, а курсор мигает в следующей строке. Вы можете набрать что-то с клавиатуры и завершить ввод, нажав клавишу «Enter». Пока любые введённые вами данные пропадут, но скоро мы научимся их принимать и обрабатывать. Пока же вернитесь к листингу программы, процедуру writeln замените на write. Снова откомпилируйте программу и запустите exe-файл. Несложно заметить, что теперь курсор мигает в самом конце нашего текста и ввод с клавиатуры начинается здесь же. Из этого можно сделать ещё один вывод: если вы используете процедуру write, после которой планируется ввод с клавиатуры, позаботьтесь о пробеле в конце выводимого текста, чтобы ввод с клавиатуры к нему не прилипал.
Уже на протяжении нескольких уроков (сегодняшний — не исключение), мы используем процедуру readln без параметров, для задержки. Давайте научим её принимать данные, введённые пользователем с клавиатуры, чтобы после использовать их в наших программах.
Для этого объявим в нашей программе переменные. Одна из них будет строкового типа String. Мы его ещё не проходили, но буквально через урок будем с ним знакомиться подробно. Сейчас же следует понимать, что в переменные этого типа можно сохранять строки, длина которых не превышает 255 символов. Давайте позволим пользователю ввести с клавиатуры его имя и возраст. Возраст сохраним в целочисленную переменную, а имя — в строковую. Программа принимает вид:
Переменные введены, теперь давайте научим нашу программу их читать. Прежде всего, при помощи процедуры writeln укажем пользователю, чего мы от него хотим, а потом используем write и readln для вывода текста и ввода данных в тех же строках. Пока наша программа выглядит так:
Обратите внимание, все строчки кроме последней оканчиваются пробелами. Вообще же, весь переданный процедуре writeln текст, будет выводиться как одна длинная строка. В общем случае, такая строка будет ограничена только габаритами консольного окна программы и всё, что не поместилось в одной строке, будет напечатано во второй и последующих строках, впрочем, переносами строк процедура не занимается.
Настало время, когда мы, наконец, введём данные с клавиатуры и используем их в нашей программе. Используем, правда, скромно — просто выведем их на экран, покажем, что мы их получили. Гораздо чаще, введённые данные используют для расчётов или разграничения доступа к функциям программы. Например, введённый пользователем возраст позволяет программе решить, может ли он ей пользоваться в принципе. Впрочем, мы не станем сегодня как-то проверять введённые данные. Да и сложно себе представить, как именно мы могли бы это сделать. В общем, доверимся пользователю, поверим в его честность. Наша программа приняла законченный вид:
Здесь следует обратить внимание на то, что выводя строки вместе со значениями переменных, пробелы мы уже добавляли как до, так и после них. Кроме того, слово «лет» указано именно в этой форме и она не будет меняться автоматически и подстраиваться под указанный возраст. Нужно учитывать, что фраза может принимать вид: «Вы указали, что вас зовут Владимир и вам 41 лет». Очевидно, за формами слов, падежами, склонениями и спряжениями глаголов нужно будет следить отдельно, но это уже выходит за рамки нашего сегодняшнего урока. Мы убедились, что программа работает — нам удалось воспользоваться теми данными, которые пользователь ввёл с клавиатуры. Последний вызов процедуры readln без параметров служит для задержки как и раньше.



