- Readln что это значит
- Процедуры Read и ReadLn
- Подпишись на новости, чтобы ничего не пропустить
- Операторы ввода read/readln
- Статьи к прочтению:
- Урок 8. Операторы ввода readln/read и диалоговые программы. Программирование на Pascal / Паскаль
- Похожие статьи:
- В чём отличие Read от ReadLn ?
- Решение
- Не читается readln в паскаль
Readln что это значит
Приветствую. Сегодня я хотел бы затронуть тему операторов ввода данных.
Операторов ввода существует всего два. А именно:
- read
- readln
Ничего не напоминает? Те, кто внимательно читали предыдущую статью, скажут что эти операторы похожи на операторы вывода. И будут правы! Оператор readln отличается от оператора read только лишь тем, что после ввода данных переводит курсор на следующую строку
Возьмем для примера задачу №1 из первого урока. В ней, если вы помните, длину и ширину прямоугольника мы непосредственно вбивали в код программы. Сейчас мы немного поколдуем над кодом и сделаем так, чтобы эти данные можно было вводить с клавиатуры каждый раз при запуске программы.
Для этого вместо куска кода пишем
Попробуйте теперь запустить программу с измененным кодом. На всякий случай напишу весь код:
Заметили, как теперь при запуске программа ждет ввода данных? И пока ввод не будет осуществлен, она не продолжит выполнение. Но согласитесь, это мы с вами знаем, что при запуске программы нужно ввести значения длины и ширины, а кто-то другой, запустив ее, не догадается до этого. Поэтому нам нужно вывести на экран просьбу, что-то вроде «Введите длину». Для этого используем оператор вывода write. О нем я уже писал в предыдущем уроке.
Ход ваших рассуждений при составлении программы должен быть примерно следующим:
1) Мне нужно попросить пользователя ввести значения ширины прямоугольника. Для этого использую оператор вывода: writeln(‘Введите ширину прямоугольника’);
2) Теперь нужно чтобы программа прочитала это значение. Для этого использую оператор ввода: readln(A);
Здесь немного остановимся. Возможно у вас возник вопрос: «А что значит буква А в скобках?» Так вот, в скобках вы указываете ту переменную, которой будет присвоено значение, введенное с клавиатуры. В нашем случае ширину мы записываем в переменную А, следовательно и в скобках пишем ее.
3) Далее мне нужно попросить пользователя ввести длину. По аналогии с первым пунктом:
writeln(‘Введите длину прямоугольника’);
4) Считываем введенное значение по аналогии со 2-ым пунктом: readln(B);
Вот и все, соберем весь код в кучу:
Запустите программу, посмотрите как она выполняется. На мой взгляд чего-то не хватает. Как думаете? Следует выводить на экран что-то типа «Ответ» или «Периметр = « перед тем как выведется результат расчета. А то у нас получается, что программа выводит какое-то число, а что за число — поди разбери. Для этого можно пойти двумя путями:
1) Дописать перед строчкой write(P); строку: write(‘Периметр =’);
2) Модернизировать предпоследнюю строчку кода write(P) . Делается это следующим образом: пишем оператор write, открываем круглую скобку, в одинарных кавычках пишем ‘Периметр = ‘, ставим запятую и после нее пишем переменную P. Вот как это будет выглядеть: write(‘Периметр = ‘,P);
Запустите программу, протестируйте ее при разных значениях длины и ширины. Если возникли какие-то вопросы, не стесняйтесь задавать их, контакты для связи со мной находятся здесь. Ну, а если вопросов нет, можете приступать к следующему уроку
Источник
Процедуры Read и ReadLn
Подпишись на новости, чтобы ничего не пропустить
Процедуры Read и ReadLn выполняют чтение информации из устройства стандартного ввода. В консольных приложениях этим устройством может быть, например, клавиатура (точнее — введённые с клавиатуры данные), в графических приложениях — файл на диске.
То есть эти процедуры являются “антиподами” процедур Write и WriteLn — выполняют противоположные им действия.
Процедуры Read и ReadLn выполняют схожие действия. Основное отличие между ними следующее: процедура ReadLn после завершения ввода выполняет перевод строки (а в случае с файлами читает файл строка за строкой). А процедура Read читает данные подряд — без перевода строки.
В Турбо Паскале я не помню такого (может просто забыл), но в FreePascal ввод с клавиатуры можно выполнять только процедурой ReadLn, а процедура Read почему-то не работает.
Синтаксис для вывода на консоль:
procedure Read(Args: Arguments);
Синтаксис для вывода в файл:
procedure Read(var F: Text; Args: Arguments);
Аргументами (Arguments) могут быть переменные разных типов. Если используется несколько переменных, то они перечисляются через запятую. Например:
Как уже было сказано, при вводе с консоли эти переменные могут быть разных типов. Но, в отличие от процедур Write/WriteLn использовать константы не допускается (и это логично))).
ВАЖНО!
При вводе данных следует учитывать, что в случае, если введённое пользователем значение имеет тип, отличный от типа переменной, в которую вводится это значение, то возникнет ошибка времени выполнения. Если, например, в указанном выше примере пользователь в качестве первого числа введёт вещественное значение (такое как 3.14), то программа завершится аварийно, так как переменная х имеет целый тип.
При чтении из файла можно работать как с типизированными файлами, так и с текстовыми файлами.
Если F (см. синтаксис) — это типизированный файл, то переменные, передаваемые как параметры (Args) должны иметь такой же тип, какой указан для файла F. Нетипизированные файлы использовать не допускается. Если параметр F не указан, то предполагается, что чтение выполняется из стандартного устройства ввода.
Если файл F имеет тип Text, то переменные должны иметь тип Char, Integer, Real или String.
Если при чтении файла нет данных, доступных для чтения, то в переменную F возвращается пустое значение (0 — для порядковых типов, пустая строка — для строковых).
В случае использования процедуры ReadLn, то есть при построковом чтении данных, конец строки обозначается определённой последовательностью символов (какими именно — зависит от операционной системы, для DOS/Windows это два символа — #10 и #13).
Маркер конца строки не является частью прочитанной строки и игнорируется.
Если во время выполнения процедуры Read/ReadLn происходит ошибка, то генерируется ошибка времени выполнения. Такое поведение не всегда приемлемо (например, во время чтения файла). Поэтому в каких-то случаях генерацию ошибок отключают. Сделать это можно с помощью директивы компилятора .
В разных отладочных и учебных программах процедуру ReadLn часто используют для того, чтобы консольное приложение не закрылось автоматически после выполнения. Для этого в конце программы просто записывают (как в примере выше):
То есть просто имя процедуры без параметров. В этом случае программа будет ожидать нажатия клавиши ENTER. Следовательно, программа не завершится, пока не будет нажата клавиша ENTER, и это позволит увидеть результат работы программы. Разумеется, в операционной системе DOS (и подобных) такой проблемы нет. Это актуально только для Windows.
Источник
Операторы ввода read/readln
Вспомним, что основное назначение ЭВМ — сэкономить человеческий труд. Поэтому необходимо обеспечить возможность, однажды написав программу, многократно ее использовать, вводя каждый раз другие данные. Такая гибкость в языке обеспечивается операторами Read и ReadLn. Этими операторами вводится информация с клавиатуры.
Общий вид:
Read(переменная, переменная…)
ReadLn(переменная, переменная…)
При выполнении процедуры Read ожидается ввод перечисленных в скобках значений. Вводимые данные нужно отделить друг от друга пробелами. Присваивание значений идет по очереди.
Например, если вводятся значения 53 и Х, то при выполнении оператора Read(a,b) переменной а будет присвоено число 53, а переменной Х — буква Х. Причем, отметим, чтобы не было аварийной ситуации, нужно правильно определить тип данных в разделе Var; в нашем случае а:integer, а b:char.
Особых различий при чтении и записи в использовании операторов Read и ReadLn нет. Часто процедуру ReadLn без параметров применяют в конце программы для задержки: до нажатия на клавишурезультат выполнения программы остается на экране. Это очень полезно делать для анализа результатов.
Примечание. Когда Вы ставите задержку экрана, обратите внимание на предыдущий ввод. Если данные запрашивались процедурой Read задержки не будет.
Решим задачу, в которой рассмотрим все возможные употребления этих процедур.
Пример: Найти среднее значение трех чисел.
Примечание. Чтобы найти среднее значение нескольких чисел, нужно сложить эти числа и сумму разделить на количество этих чисел.
Program Srednee;VarFirst, Second, Third : integer;Sum : real;BeginClrScr;Write (‘Введите первое число ‘);ReadLn(First);Write (‘Введите второе и третье числачерез пробел ‘);ReadLn(Second, Third);Sum := First + Second + Third;Sum := Sum/3;Write (‘Среднее значение ‘, First, ‘, ‘,Second, ‘ и‘, Third, ‘ равно ‘, Sum:5:2);ReadLn;End. |
Внимательно рассмотрите каждую строчку. Имя программы Srednee отражает содержание задачи. Кстати, договоримся о том, чтобы имя программы и имя файла, который содержит эту программу, совпадали. Далее идет подключение модуля Crt. В разделе Var описаны First, Second, Third как переменные целого типа, а Sum — действительного типа. Раздел операторов начинается со стандартной процедуры очистки экрана ClrScr (Clear Screen), которая находится в модуле Crt. Далее оператором Write мы выводим на экран сообщение ‘Введите первое число ‘, получив которое пользователь должен ввести число.
Теперь компьютер должен считать введенные символы и занести их в переменную First, это произойдет при выполнении следующего оператора ReadLn(First). Затем с помощью оператора Write запрашиваем значения еще двух чисел и считываем их в переменные Second и Third. Затем вычисляем их сумму и присваиваем полученное число переменной Sum. Чтобы найти среднее, нужно теперь полученное число разделить на 3 и сохранить результат в какой-либо переменной.
Совсем не обязательно описывать еще одну переменную для сохранения результата. Можно, как в нашей программе, значение переменной Sum разделить на 3 и результат опять присвоить той же переменной Sum. Теперь можно вывести результат вычислений на экран с помощью процедуры Write. И, наконец, последняя процедура ReadLn задержит наш вывод на экране до нажатия на клавишу.
При значениях переменных 5, 7 и 12, на экране увидите следующее:
Среднее значение 5, 7 и 12 равно 8.00
Оператор условия if:
if ab thenWrite(‘a больше b’)ElseWrite(‘а меньше b’); | if (если) – ключевое словоab – условиеthen (то) – ключевое слово Else (иначе) – ключевое словоЕсли переменная «а» больше переменной «b» мыувидим на экрана сообщение «а больше b», в ином случае «а меньше b» |
Цикл с предусловием while do: | |
a:=10;while ab dobegini:= i + 1;b:=i;writeln(b)end; | while do (делай… пока) – ключевые словаab – условиеbegin end – операторные скобкиЦикл будет выполняться до того момента, пока условиене будет ложным(false). При запуске, этого цикла, мы увидим на экране числа от 1 до 10. |
Цикл с пост условием repeat until: | |
a:=10;repeatbegini:= i + 1;b:=i;writeln(b)end;until a | repeat until (повторяй до тех пор пока)– ключевые словаa |
Цикл со счетчиком for do: | |
a:=10;for i:=1 to a dobeginb:=i;writeln(b)end; | for to do –ключевые словаi:=1 – начальное значениеa – конечное значениеbegin end операторные скобкиЦикл будет выполняться до того момента, покаусловие не будет ложным. На экране мы увидим числа от 1 до 10. |
Статьи к прочтению:
Урок 8. Операторы ввода readln/read и диалоговые программы. Программирование на Pascal / Паскаль
Похожие статьи:
Начнем знакомство с оператора вывода. Данный оператор очень часто встречается в паскалевских программах. Оператор вывода существует в двух вариантах:…
write(a); — стандартная процедура вывода значения переменной «а» или результата вычисления арифметического выражения на экран writeln(а); — вывод с…
Источник
В чём отличие Read от ReadLn ?
В чём отличие Read от ReadLn ?
Я раньше всегда писал Readln и даже не задумывался, чем эта функция отличается от Read. А тут писал программу, она всё никак не работала (вернее, неправильно работала), потом ReadLn поменял на Read, и всё заработало. Вот и возник соответственный вопрос.
Добавлено через 1 час 22 минуты 48 секунд
Ну, пожалуйста, кто-нибудь ответьте.
Read и Readln!
Здравствуйте, я до теперешнего момента понимал как работают процедуры Read и Readln,но когда писал.
В чем отличие read от read-line
Подскажите чем отличается read от read-line.
В чем отличие между методами Console.ReadLine() и Console.Read()
Всем добрый вечер! Скажите пожалуйста, в чем отличие между методами Console.ReadLine() и.
Почему Read работает как Readln? (ide PascalABC.NET 3.10 build 1200)
Люди, у кого стоит такая-же IDE (PascalABC.NET 3.10 build 1200) — у вас такая же шняга или нет.
Решение
При использовании read или readln строка ввода опускается все ниже-ниже. Как-то этого избежать?
При каждом использовании будь то read или readln строка ввода опускается все ниже-ниже, возможно.
Чем заменить readln в delphi?
Delphi 2010 File-New->Other-Concosole Aplication Readln не опознается. Может модуль какой.
Пропускается readln в цикле. В чем фокус?
Код: Program SPISOK; uses crt; type sp=record sur,nam,pat:string; age:integer;
В чем отличие While от Do. While?
Я понял ,что в While сначала проверяется условие,а потом если оно истинно выполняются операторы,а в.
Источник
Не читается readln в паскаль
Есть не законченый код для решения квадратного уравнения. Столкнулся с проблемой, если присвоить переменной тип string то readln(переменная) не будет читаться, если заменить на real, тоесть на число, то все работает, дело в том что мне нужно именно буквенное выражение. Что делать?
program n_zigota;
const
awnser_1_1 = 1;
awnser_1_2 = 2;
awnser_1_3 = 3;
awnser_1_4 = 4;
var
a,b,c:real;
users_awnser_1:real;
users_awnser_2:string;
writeln(‘Все ответы писать цифрами!’);
writeln(‘ ‘);
writeln(‘Выберите квадратноe уравнениe: ‘);
writeln(‘ ‘);
writeln(‘1) ax^2+bx+c=0’);
writeln(‘2) ax^2-bx+c=0’);
writeln(‘3) ax^2+bx-c=0’);
writeln(‘4) ax^2-bx-c=0’);
writeln(‘ ‘);
write(‘Квадратное уравнение: ‘);
read(users_awnser_1);
writeln(‘ ‘);
if users_awnser_1 = awnser_1_1 then begin
write(‘Запишите переменную a: ‘);
read(a);
write(‘Запишите переменную b: ‘);
read(b);
write(‘Запишите переменную c: ‘);
read(c);
writeln(‘ ‘);
writeln(‘Ваше уравнение: ‘,a,’x^2+’,b,’x+’,c,’=0′);
writeln(‘Верно?’);
readln(users_awnser_2);
end
если ошибок нет, может пролетать .. если ошибки есть — пиши о них.
и да, в моем паскале все норм
Замените все свои Read() на ReadLn() и будет вам счастье.
Фишка в том, что процедура Read() оставляет в буфере клавиатуры смвол перевода строки, который при чтении в строковую переменную и приводит к такому эффекту.
Процедура же ReadLn() очищает буфер клавиатуры полностью. Для проверки достаточно заменить Read(c) на ReadLn(c) и программа остановится в ожидании второго ответа юзера.
Источник