Так же, как и для операторов вывода информации, операторы read и reeadln являются операторами обращения к встроенным процедурам ввода информации.
Операторы read (считывать) и readln, который происходит от двух английских слов read (считывать) и line (строка) используются в программах для ввода информации в память компьютера и "считывания " значений в переменную.
Рассмотрим работу этих операторов и процедур ввода информации.
В нашей программе есть процедура readln(a). При выполнении программы, встретив оператор readln, компьютер приостановит работу в ожидании ввода информации. После того, как мы введем с клавиатуры значение переменной a - 16, компьютер присвоит это значение переменной a, т.е. отправит его в ячейку памяти с именем a и продолжит выполнение программы. Этот процесс мы называем "считыванием " значения в переменную.
Итак, процедуры read и readln "считывают" значения переменных и присваивают их тем переменным, которые записаны в них.
Таких переменных может быть несколько, тогда они записываются в этих операторах через запятую, например:
read(a, b, c, n, g, j, i), readln(e,f, k, p, d) и т.п.
Чем же отличается работа процедур read и readln?
Процедура read потребует после себя ввод или вывод информации в одну строку, а процедура readln дает возможность после себя вводить и выводить информацию с начала новой строки.
Например:
В программе: write("Введите значения a и b "); read(a, b);
write("Ввод информации в одну строку");
При выполнении этой части программы, на экран будет выведено все то, что записано в первом операторе write, затем в той же строке будет находиться курсор, и компьютер будет ждать ввода значений a и b. Введем их значения - 2 и 3, разделяя их пробелом или, иначе говоря, через пробел. После этого, в той же строке будет выдана информация записанная в следующем операторе write.
На экране:
Введите значения a и b 2 3 Ввод информации в одну строку
В программе:
writeln("Введите значения a, b и c); readln(a, b, c);
writeln("Ввод и вывод информации с начала строки");
На экране:
Введите значения a, b и c
Ввод и вывод информации с начала строки
Арифметические операции с целыми числами. Переменные целого типа. Вещественный тип
В языке Паскаль используются целые числа, к которым относятся все натуральные числа, образовавшиеся в процессе подсчета предметов: 1, 2, 3, 4, 5, 6, ...; отрицательные числа: ..., -6, -5, -4, -3, -2, -1 и число ноль: 0. Целые числа образуют следующий ряд:
6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, ...
В Паскале допускается диапазон целых чисел от -32768 до 32767.
Переменные , принимающие целые значения, записываются в разделе описаний с указанием типа integer (целый).
Например: var a, b, c, a1, b34, nomb: integer;
Значения другого типа этим переменным в одной программе присвоить нельзя.
Арифметические операции с целыми числами и переменными целого типа в языке Паскаль
Знак "_" означает пробел. Пробелы между именами переменных и названием операции (div) - обязательны. (Происходит от английского division - деление).
Остаток от деления a на b. a_mod_b
Read (процедура)
Для типизированных файлов, считывает компонент файла в переменную.
- Для текстовых файлов, считывает одно или большее количество значений
в одну или большее количество переменных
Объявление
Типизированные файлы
Procedure Read(F , V1 [, V2,...,Vn ]);
Текстовые файлы
Procedure Read([ Var F: Text; ] V1 [, V2,...,Vn ]);
Режим
Windows, Real, Protected
Замечания
Для строковых переменных:
Read считывает все символы до (но не включая) следующего маркера конца строки или пока Eof (F) станет равным True. Read не переходит к следующей строке после чтения. Если полученная в результате строка длиннее, чем максимальная длина строковой переменной, то она усекается. После первого Read, каждые последующие вызовы Read будут видеть маркер конца строки и возвращать строку нулевой длины.
Используйте несколько обращений к ReadLn, чтобы считать несколько строковых значений.
Когда включена опция Extended Syntax , процедура Read может считывать строки с нулевым окончанием в нуль-основанные массивы символов.
Для переменных типа Integer или Real :
Read будет пропускать любые пробелы, метки табуляции или маркеры конца строки, предшествующие числовой строке. Если числовая строка не соответствует ожидаемому формату, происходит ошибка ввода/вывода, иначе переменной присваивается полученное значение. Следующий Read начнется с пробела, знака табуляции или маркера конца строки, которые завершали числовую строку.
См. также
Пример
uses Crt, Dos;
var
F :
Text;
Ch :
Char
;
begin
{ Получаем имя файла из командной строки }
Assign(F,
ParamStr
(1
));
Reset
(F);
while
not
EOF
(F) do
begin
Read
(F,
Ch);
Write
(Ch);
{ Выводим содержимое файла на экран }
end
;
end
.
Вы находитесь в разделе материалов по пограммированию на Паскале. Перед тем как начать программировать, надо прояснить некоторые понятия, которые нам понадобятся в начале. Ведь просто так программировать нельзя. Мы не можем записать программу словами – компьютер кроме нулей и единиц больше ничего не понимает. Для этого в Паскале создана специальная символика – язык Паскаля, набор зарезервированных слов, которые нельзя использовать в своих программах больше нигде, кроме как по назначению. Перечислим основные понятия, которые нам понадобятся в начале:
✎ 1) program – по-английски «программа», пишется в самом начале кода, после чего идет название программы латиницей и точка с запятой. Например: program Summa; − программа под названием Summa. Но эту часть кода, называемую заголовком программы, можно и не писать − она присутствует только для наглядности и показывает, какую задачу решает данная программа. Здесь мы употребили слово «код» − так называется текстовая запись программы.
✎ 2) integer – по-английски означает «целое число» (или просто «целое») и в Паскале используется для обозначения 32-битных (8 байт) целых чисел со знаком с диапазона [-2147483648, 2147483647] . Что означают эти большие числа, мы потом разберем.✎ 3) real – с английского «реальный», «настоящий», «вещественный», «действительный». В языке Паскаль этим термином обозначаются вещественные числа с диапазона [-1.8∙10 308 , 1.8∙10 308 ] . Это очень большие числа, но значащих цифр выводится 15 – 16. Кстати, типы данных integer и real в среде программирования PascalABC.Net всегда автоматически выделяются синим цветом.
✎ 4) const – аналог англ. «constant», означающее «постоянная», «константа». В Паскале это величина, которая не может изменяться. Записывается так:
Эту запись надо воспринимать так, как она пишется: число N равно 12, S равно 5, «пи» равно 3,14 (как и в математике, только вместо запятой в Паскале используется точка). В последней строке мы использовали двойной слэш (две косые черты), после которых идет текст, – так в Паскале пишутся комментарии, и их программа не воспринимает. Всё, что начинается двойным слэшом и до конца строки – это комментарий, который пишется для пояснения к программе и всегда выделяется другим цветом (в PascalABC.Net - это зеленый, в Turbo Pascal не используется такой вид комментария). Существует и другой тип комментария – это {текст, заключенный в фигурные скобки, так же, как и здесь, тоже выделяющийся зеленым цветом} . Этот вид комментария может действовать несколько строк подряд – от начала скобки и до её закрытия, и всё, что находится в середине такой конструкции, компилятор не воспринимает как код и просто пропускает.
В действительности формат записи const немножко сложнее. По правилам мы должны были записать:
|
После объявления каждой величины указывается её тип, а потом присваивается значение. Но предыдущая запись тоже верна, поскольку компилятор Паскаля настроен так, что он автоматически определяет тип постоянной. Но этого нельзя сказать о следующем типе чисел – переменных.
✎ 5) var – происходит от англ. «variable» («переменная», или «изменчивый»), что в Паскале означает величину, которая в процессе программы может изменять свое значение. Записывается так:
Как видно из записи, знака «=» здесь нет – пересчитываются переменные одного типа (через запятую) и после двоеточия указывается только тип. Переменные N, m (целые) и Q, r, t (вещественные) в программе могут изменять значения в пределах integer и real соответственно. Ещё одно замечание: описание переменных всегда стоит после описания констант (постоянных) – сначала идет конструкция const , а потом var .
✎ 6) begin – в переводе с английского означает «начинать» и Паскале означает начало основной программы, в которой записываются команды (операторы). После слова begin точка с запятой не ставится.
✎ 7) end – по-англ. «конец», и в языке Pascal означает то же (конец программы). После последнего слова end всегда стоит точка. Мы выделили слово «последнего», поскольку использование конструкции begin – end возможно ещё в одном случае: это так называемые операторные скобки, которые применяются для объединения нескольких операций под одним оператором. Но об этом потом. Таким образом, основная программа будет выглядеть так:
|
Здесь операторы в теле программы – это разные команды компилятору.
✎ 8) write – по-английски означает «писать». Этот оператор выводит на экран текст, помещенный в него, поэтому так и называется – оператор вывода. Текст, помещенный в него, выделяется синим и записывается так:
Write("этот текст выведен на экране" );
Сообщение, находящееся в скобках и кавычках, будет показано в окне консоли (просто в скобках без кавычек нельзя). После выполнения этого оператора мы увидим на экране:
этот текст выведен на экране
В таком виде оператор write используется в том случае, когда надо показать подсказку, пояснение, комментарий и т. п. А от если необходимо вывести ещё и числовое значение, скажем, S = 50 кв. м, то используется формат:
Write(, S);
В результате получим на экране результат:
Величина площади равна: S = 50
А при необходимости вывести единицы измерения, надо после S снова вставить текст в кавычках:
Write("Величина площади равна: S = " , S, " кв.м" );
После выполнения последнего оператора вывода получим вывод на экран:
Величина площади равна: S = 50 кв.м
✎ 9) writeln – то же, что и write, но после выполнения курсор будет переведен на следующую строку.
✎ 10) read – в переводе с английского означает «читать», поэтому read называется оператором считывания, или ввода данных. Записывается как read(N), что означает необходимость ввода величины N, где N – любое число, или текст, или другой тип переменной. Например, если надо ввести возраст человека, которому 32 года, мы можем записать так:
В первой строчке этого кода программа выводит вопрос «Каков Ваш возраст? » и переводит курсор в следующую строку (окончание ln); во второй строке мы выводим « Year = » (в начале пробел); далее мы видим оператор readln(Year) означающий необходимость введения возраста Year (число 32); наконец, выводим сообщения «Мой возраст », «32 » и « года. » поочередно. Необходимо внимательно следить за пробелами. В результате выполнения данного кода мы получим сообщение:
Каков Ваш возраст?
Year = 32
Мой возраст 32 года
✎ 11) readln – то же, что и read, только с переводом на новую строку. Действительно, в приведенном выше примере после введения числа Year мы только в следующей строке пишем: «Мой возраст 32 года ».
Это пока что все. На следующей странице мы напишем первую программу, и в программировании на Паскале это будут наши
Тема: Ввод - вывод. Операторы Read (Readln), Write (Writeln). Простейшие линейные программы.
Решим задачу, прокомментировав каждое свое действие в фигурных скобках. Напомним, что комментарий не воспринимается компьютером, а нам он нужен для того, чтобы лучше понять как работает программа.
Задача . Напишите программу, которая бы очищала экран и вычисляла произведение двух чисел, вводимых пользователем.
Program Proizv2; Uses Crt;{Подключаем модуль Crt} Var number1, {переменная, в которой будет содержаться первое число} number2, {переменная, в которой будет содержаться второе число} rezult {переменная, в которой будет содержаться результат} : integer; Begin ClrScr;{Используем процедуру очистки экрана из модуля Crt} Write ("Введите первое число "); Readln (number1); {Введенное пользователем число считываем в переменную number1} Write ("Введите второе число "); {Выводим на экран символы, записанные между апострофами} Readln (number2); {Введенное пользователем число считываем в переменную number2} rezult:= number1 * number2; {Находим произведение введенных чисел и присваиваем переменной rezult} Write ("Произведение чисел ", number1, " и ", number2, " равно ", rezult); {Выводим на экран строчку, содержащую ответ задачи} Readln;{Процедура задержки экрана} End. |
Чтобы лучше понять действие программы, наберите ее на компьютере и проверьте ее действие. Ответьте на вопросы:
- почему программу назвали Proizv2?
- зачем в раздел Uses поместили модуль Crt?
- какое назначение переменных number1, number2, rezult?
- какой тип у этих переменных? что это значит?
- если присвоить переменным number1 и number2 соответственно значение 5 и 7, то какую строчку выдаст компьютер при исполнении последней процедуры Write? Запишите ее в тетрадь.
- в каких строчках у пользователя запрашиваются значения переменных?
- в какой строчке происходит умножение чисел?
- что делает оператор присваивания в этой программе?
Задание . Измените программу так, чтобы она запрашивала у пользователя еще одну переменную и выводила результат произведения трех чисел.
Операторы Write и WriteLn
Мы уже использовали операторы Write и WriteLn, но нам необходимо подробнее остановиться на правилах применения этих операторов.
Write (англ. писать) - оператор, который используется для вывода информации на экран. Оператор WriteLn выполняет то же самое действие, но так как у него есть еще окончание Ln (line - англ. линия, строка), то после вывода на экран нужного сообщения, он дополнительно переводит курсор на следующую строчку.
Общий вид:
Write (список выражений)
WriteLn (список выражений)
Процедуры Write и WriteLn используются не только для вывода результата, но и для вывода различных сообщений или запросов. Это позволяет вести диалог с пользователем, сообщать ему, когда ему нужно ввести значения, когда он получает результат, когда он ошибся и др.
Например, при выполнении процедуры WriteLn(‘Найденное число ‘,а), будет напечатана строчка, заключенная в апострофы, а затем выведено значение переменной а.
Оператор WriteLn можно применить и без параметров. В этом случае напечатается строка, состоящая из пробелов, и курсор будет переведен на другую строку. Это иногда нам нужно для лучшего восприятия ввода данных.
Операторы Read и ReadLn
Вспомним, что основное назначение ЭВМ - сэкономить человеческий труд. Поэтому необходимо обеспечить возможность, однажды написав программу, многократно ее использовать, вводя каждый раз другие данные. Такая гибкость в языке обеспечивается операторами Read и ReadLn. Этими операторами вводится информация с клавиатуры.
Общий вид:
Read(переменная, переменная...)
ReadLn(переменная, переменная...)
При выполнении процедуры Read ожидается ввод перечисленных в скобках значений. Вводимые данные нужно отделить друг от друга пробелами. Присваивание значений идет по очереди.
Например, если вводятся значения 53 и Х, то при выполнении оператора Read(a,b) переменной а будет присвоено число 53, а переменной Х - буква Х. Причем, отметим, чтобы не было аварийной ситуации, нужно правильно определить тип данных в разделе Var; в нашем случае а:integer, а b:char.
Особых различий при чтении и записи в использовании операторов Read и ReadLn нет. Часто процедуру ReadLn без параметров применяют в конце программы для задержки: до нажатия на клавишу
Примечание . Когда Вы ставите задержку экрана, обратите внимание на предыдущий ввод. Если данные запрашивались процедурой Read задержки не будет.
Решим задачу, в которой рассмотрим все возможные употребления этих процедур.
Задача . Найти среднее значение трех чисел.
Примечание . Чтобы найти среднее значение нескольких чисел, нужно сложить эти числа и сумму разделить на количество этих чисел.
Наберите текст задачи и внимательно рассмотрите каждую строчку. Имя программы 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 равно 8.00
Просмотрите внимательно эту строчку и сравните со строчкой вывода результата в нашей программе. Протестируйте программу еще несколько раз для других значений переменных.
Выберите с учителем задачи для решения из следующего перечня:
- Ввести два числа a и b. С помощью оператора присваивания обменять их значения:
а) с использованием промежуточной переменной (x:=a; a:=b; b:=x);
b) без использования промежуточной переменной (a:=a-b; b:=a+b; a:=b-a). - Составить программу, которая запрашивает у пользователя целое число, действительное число, произвольный символ и строку, а затем все выводит в одной строчке.
- Выведите на экран свою фамилию, имя и отчество, а через две строки - дату своего рождения.
- Написать программу для печати звездочками одной из фигур:
а) елочки (нескольких елочек);
б) снежинки (нескольких снежинок);
в) домика.Например,*
* *
* *
***********
* *
* *
* *
* *
*********** - Составить свою визитную карточку.
* Иванов Сергей *
* Пролетарская 74 кв. 55 *
* Телефон 45-72-88 *
******************************* - Составьте диалог пользователя с компьютером на произвольную тему.
Например, машина задает два вопроса “Как тебя зовут?” и “Сколько тебе лет?”; после введения имени (Антон) и числа (15) выводит на экран “Да... Через 50 лет тебе уже будет 65 лет, а звать тебя будут не Антон, а дед Антон” - Запросить у пользователя два числа и вывести на экран результат суммы, разности, произведения и частного этих чисел полным ответом.
- Запросить у пользователя два числа и вывести на экран результат целочисленного деления и остаток от целочисленного деления в виде таблицы. Например, при вводе чисел 5 и 3 на экране должна быть такая таблица:
**************************
* X * Y * div * mod *
**************************
* 5 * 3 * 1 * 2 *
************************** - Написать программу, которая запрашивает название животного и число, а затем выводит на экран фразу типа "Белка съест 10 грибов" (при вводе слова "белка" и числа 10).
- Организуйте диалог продавца (компьютер) и покупателя (пользователь) при покупке какого-либо товара по следующей схеме: предложение товара по определенной цене, запрашивание количества покупаемого товара, определение и вывод на экран денежной суммы, которую должен заплатить покупатель за покупку.
Процедура Readln используется не только для задержки экрана. Ее основная задача - ввод данных с клавиатуры. В этой статье мы научимся вводить числа с клавиатуры, и потом выводить их на экран. Для этого нам будет необходимо познакомиться с разделом для описания переменных Var, а также с одним из типов данных, используемых в Pascal.
Program number3; uses crt; var n:integer; begin clrscr; write (‘Введите число с клавиатуры:’); readln (n); writeln (‘Вы ввели число ’,n); readln end.
В строке №3 мы записываем служебное слово Var. Оно используется для объявления переменных. Переменные – это различные значения, числа или слова, которые могут меняться в процессе выполнения программы. Когда мы вводим с клавиатуры числа или буквы, они записываются в переменые. После слова Var через пробел указываем идентификатор переменной (т.е ее название, которое мы придумываем сами). Переменные – это не служебные слова, программист задает их сам. В данном случае мы задали одну переменную «n» и в дальнейшем мы будем использовать только эту переменную. После записи переменной через двоеточие указывается тип данных. Существует несколько типов данных Один из них - Integer (целый). Он дает понять программе, что наша переменная «n» может быть только целым числом, лежащим в диапазоне от -32768 до 32767. Использование различных типов данных зависит от конкретных потребностей программиста при написании программы. Самое главное на данном этапе понять, что если в своей программе вы собираетесь использовать какое-то число, то для него нужно указать переменную (в нашем случае «n») и тип данных (в нашем случае Integer).
В строке №7 мы записываем оператор для ввода данных с клавиатуры Readln. Этот оператор вызывает встроенную процедуру ввода данных и на этом этапе программа останавливается и начинает ждать ввода данных. Мы уже использовали этот оператор для задержки экрана. В данной программе после оператора Readln в круглых скобках указывается наша переменная «n». То число, которое мы будем вводить с клавиатуры, запишется в эту переменную. Соответственно, это число должно соответствовать параметрам переменной, т.е. должно быть целым, лежащим в диапазоне -32768 до 32767. После того как программа дойдет до 7-ой строки, она выведет на экран сообщение «Введите число с клавиатуры: » и будет ждать. На этом этапе мы должны ввести какое-то число и нажать Enter.
Строка №8. Здесь мы записываем оператор вывода на экран Writeln. Он будет выводить сообщение «Вы ввели число», а также будет выводить значение нашей переменной «n» (т.е. то значение, которое мы введем с клавиатуры). Заметьте, что в строке №8 перед переменной «n» мы ставим запятую, а сама переменная не заключается в апострофы.
Теперь наберем программу в Паскале.
Запускаем (Сtrl+F9). Набираем число, например, 5 и нажимаем Enter.