Тема: Ввод - вывод. Операторы Read (Readln), Write (Writeln)

Read и ReadLn выполняют чтение информации из устройства стандартного ввода. В консольных приложениях этим устройством может быть, например, клавиатура (точнее - введённые с клавиатуры данные), в графических приложениях - файл на диске.

То есть эти процедуры являются “антиподами” - выполняют противоположные им действия.

Процедуры Read и ReadLn выполняют схожие действия. Основное отличие между ними следующее: процедура ReadLn после завершения ввода выполняет перевод строки (а в случае с файлами читает файл строка за строкой). А процедура Read читает данные подряд - без перевода строки.

ПРИМЕЧАНИЕ:

В Турбо Паскале я не помню такого (может просто забыл), но в ввод с клавиатуры можно выполнять только процедурой ReadLn, а процедура Read почему-то не работает.

Синтаксис для вывода на консоль:

procedure Read(Args: Arguments);

Синтаксис для вывода в файл:

procedure Read(var F: Text; Args: Arguments);

Аргументами (Arguments ) могут быть разных . Если используется несколько переменных, то они перечисляются через запятую. Например:

Var x, y: integer; z: real; str: string; begin WriteLn("Введите три целых числа через пробел:"); ReadLn(x, y, z); WriteLn("Вы ввели: ", x, ", ", y, ", ", z:0:2); ReadLn(str); WriteLn(str + str); ReadLn; end.

Как уже было сказано, при вводе с консоли эти переменные могут быть разных типов. Но, в отличие от процедур Write/WriteLn использовать не допускается (и это логично))).

ВАЖНО!
При вводе данных следует учитывать, что в случае, если введённое пользователем значение имеет тип, отличный от типа переменной, в которую вводится это значение, то возникнет ошибка времени выполнения. Если, например, в указанном выше примере пользователь в качестве первого числа введёт вещественное значение (такое как 3.14), то программа завершится аварийно, так как переменная х имеет целый тип.

При чтении из файла можно работать как с типизированными , так и с текстовыми файлами.

Если F (см. синтаксис) - это типизированный файл, то переменные, передаваемые как параметры (Args) должны иметь такой же тип, какой указан для файла F . Нетипизированные файлы использовать не допускается. Если параметр F не указан, то предполагается, что чтение выполняется из стандартного устройства ввода.

Если файл F имеет тип Text , то переменные должны иметь тип , или .

Если при чтении файла нет данных, доступных для чтения, то в переменную F возвращается пустое значение (0 - для , пустая строка - для строковых).

В случае использования процедуры ReadLn, то есть при построковом чтении данных, конец строки обозначается определённой последовательностью символов (какими именно - зависит от операционной системы, для DOS/Windows это два символа - #10 и #13).

Маркер конца строки не является частью прочитанной строки и игнорируется.

Если во время выполнения процедуры Read/ReadLn происходит ошибка, то генерируется ошибка времени выполнения. Такое поведение не всегда приемлемо (например, во время чтения файла). Поэтому в каких-то случаях генерацию ошибок отключают. Сделать это можно с помощью .

ПРИМЕЧАНИЕ:

В разных отладочных и учебных программах процедуру ReadLn часто используют для того, чтобы консольное приложение не закрылось автоматически после выполнения. Для этого в конце программы просто записывают (как в примере выше):

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

4. Операторы write и writeln. Процедуры вывода информации

Вы обратили внимание, что в программе были использованы операторы write и writeln. Английское слово write переводится - писать, а слово writeln происходит как сокращение от двух английских слов write - писать и line - строка.

Кроме операторов write и writeln мы говорим о процедурах вывода информации.

Что же такое процедура ?

Понятие процедуры - одно из основных понятий Паскаля. Ему подобна подпрограмма на языке Бейсик.

Процедура - это некоторая последовательность операторов языка Паскаль, имеющая имя и к которой можно обратиться из любого места основной программы, указав ее имя.

Выше мы говорили об операторах вывода информации, хотя в Паскале, в отличие от Бейсика нет операторов вывода информации, а через служебные слова write и writeln происходит обращение к стандартной или встроенной процедуре вывода информации. Стандартная процедура не нуждается в предварительном описании, она доступна любой программе, в которой содержится обращение к ней. Вот почему обращение к write или writeln напоминает оператор PRINT - вывода информации на языке Бейсик.

Разница между оператором вывода и обращением к процедуре вывода состоит в том, что имя процедуры вывода, как и любой другой процедуры Паскаля не является зарезервированным словом, а, следовательно, пользователь может написать свою собственную процедуру с именем write или writeln. Но это очень редко используется на практике.

Таким образом, операторы write и writeln являются операторами обращения к встроенным процедурам вывода информации.

Обе эти процедуры выводят информацию на экран, если эта информация содержится в виде значений переменных, тогда достаточно в скобках в операторах write или writeln записать имена этих переменных, например: write(a), writeln(f). Если таких переменных несколько, то их записывают через запятую, например: write(a, b, c, d), writeln(e,f, g, h).

Если информацией являются слова, предложения, части слов или символы, тогда она заключается между знаками "; " "; - апостроф , например:

write("Введите длину пути"),

writeln("Значение скорости равно"

Возможен одновременный вывод и символьной информации и значений переменных, тогда в операторе write или writeln они разделяются запятыми, например:

write("Значение температуры равно ", t),

writeln("Скорость равна ", v, " при времени движения ", t).

Заметьте, в конце слов, перед апострофом оставлен пробел.

Для чего это сделано ? Конечно, чтобы следующая числовая информация была разделена со словами пробелом.

В чем состоит отличие в работе процедур write и writeln?

Процедура write требует от следующих процедур ввода или вывода, информацию вводить или выводить ее на ту же строку (в одну строку ).

Если в программе указан оператор write и за ним следуют еще операторы write или writeln, то выводимая ими информация будет присоединяться к строке информации первого оператора write.

Например: write("Сегодня и завтра будут ");

write("выходные дни ");

На экран выводится:

Сегодня и завтра будут выходные дни

Пробел между словом ";будут"; и ";выходные"; обеспечивается за счет пробела в конце первой строки. Если его не будет, то вывод произойдет слитно :

write("Сегодня и завтра будут");

write("выходные дни");

Сегодня и завтра будутвыходные дни

Еще некоторые примеры: t:=20;

write("Время движения равно ");

write(" секунд");

Время движения равно 20 секунд

write("Сумма чисел равна ");

write(", а произведение ");

Сумма чисел равна 30, а произведение 216

Процедура writeln обеспечивает для следующих процедур ввода или вывода информации вводить или выводить ее с начала каждой новой строки .

В программе:

writeln("Сегодня вечером, вечером, вечером,");

writeln("Когда пилотам, скажем прямо, делать нечего");

На экран выводится:

Сегодня вечером, вечером, вечером,

Когда пилотам, скажем прямо, делать нечего

В программе:

writeln("Сумма и разность чисел равны:");

На экране:

Сумма и разность чисел равны:

5. Операторы read и readln. Процедуры ввода информации

Так же, как и для операторов вывода информации, операторы 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

Ввод и вывод информации с начала строки

Глава 2. Ввод и выполнение программ

1. В интегрированной среде Турбо Паскаль 7.0.

После запуска Турбо Паскаля на экране появится следующая оболочка (см. рис. 3):

Рис. 3

Верхняя строка открывшегося окна содержит ";меню "; возможных режимов работы Турбо Паскаля, нижняя - краткую справку о назначении основных функциональных клавиш. Вся остальная часть экрана принадлежит окну текстового редактора, очерченному двойной рамкой и предназначенному для ввода и редактирования текста программы.

Когда мы вводим программу, то работаем с текстовым редактором, встроенным в среду Турбо Паскаль. Поэтому ниже мы и познакомимся с работой редактора и основными его командами.

Признаком того, что среда находится в состоянии редактирования, является наличие в окне редактора курсора - небольшой мигающей черточки.

Для создания текста программы нужно ввести этот текст с помощью клавиатуры подобно тому, как это делается при печатании текста на пишущей машинке. После заполнения очередной строки следует нажать на клавишу B>Enter> ";Ввод ";, чтобы перевести курсор на следующую строку (курсор всегда показывает место на экране, куда будет помещен очередной вводимый символ программы).

Окно редактора имитирует длинный и достаточно широкий лист бумаги, часть которого видна в окне экрана. Если курсор достиг нижнего края, осуществляется прокрутка окна редактора: его содержимое смещается вверх на одну строку и внизу появляется новая строка ";листа ";. Наибольшая длина строки на Турбо Паскале - 126 символов.

Окно можно смещать относительно листа с помощью следующих клавиш:

PgUp - на страницу вверх (PaGe UP - страница вверх);

PgDn - на страницу вниз (PaGe DowN - страница вниз);

Home - в начало текущей строки (HOME - домой);

End - в конец текущей строки (END - конец);

Ctrl-PgUp - в начало текста;

Ctrl-PgDn - в конец текста.

Клавишами управления курсора “курсор ” можно смещать по тексту на экране (заметьте, только по тексту!). По ";чистому "; не исписанному экрану курсор не перемещается!

Если Вы ошиблись при вводе очередного символа, его можно стереть с помощью клавиши, обозначенной стрелкой влево (клавиша Backspace - B>Забой>, она располагается справа и вверху зоны основных алфавитно-цифровых клавиш над клавишей B>Enter> - “Ввод ”). Клавиша B>Delete > (Delete - стирать, удалять ) стирает символ, на который в данный момент указывает курсор, а команда Ctrl-Y - всю строку, на которой располагается курсор. Следует помнить, что редактор Турбо Паскаля вставляет в конце каждой строки невидимый на экране символ-разделитель. Этот символ вставляется клавишей B>Ввод>, а стирается клавишей B>Забой> или B>Delete > . С помощью вставки/стирания разделителя можно ";разрезать ”/";склеить "; строки.

Чтобы ";разрезать "; строку, следует подвести курсор к нужному месту и нажать клавишу B>Ввод>, чтобы ";склеить "; соседние строки, нужно установить курсор в конец первой строки и нажать клавишу B>Delete > или установить курсор в начало следующей строки и нажать клавишу B>Забой>.

Режим вставки

Нормальный режим работы редактора - режим вставки, в котором каждый вновь вводимый символ как бы ";раздвигает "; текст на экране, смещая вправо остаток строки. Следует учитывать, что ";разрезание "; и последующая вставка пропущенных символов возможна только в этом режиме.

Примеры ";разрезания ";, ";склеивания "; строк и вставки символов в текст.

Пусть по каким-то причинам на экране получена такая запись:

Program Serg; var

a, b, c: integer;

Если говорить об эстетической стороне написания программы, то желательно, чтобы раздел описаний, который начинается со слова var, начинался с красной строки. Для внесения изменений в текст установим курсор на букву v и нажмем клавишу B>Ввод>, при этом часть текста после курсора и под ним переместится на следующую строку, получим:

Program Serg;

a, b, c: integer;

Для большей красоты и наглядности, не перемещая курсора, а оставляя его на букве v , нажмем несколько раз клавишу B>Пробел>. Вся строка передвинется на вправо и запись станет такой:

Program Serg;

a, b, c: integer;

Допустим другую ситуацию, когда часть текста ";разорвалась "; и ее нам надо ";склеить ";, например, получилось так:

write("Введите число лет, кото

рое было бы Серёже ";);

Устанавливаем курсор в начало второй строки перед буквой ";р"; и нажимаем клавишу B>Забой>, получим:

write("Введите число лет, которое было бы Серёже ");

Можно поступить иначе, установить курсор в конец первой строки после буквы ";о"; и нажимая несколько раз клавишу B>Delete> ";подтягивать"; нижнюю строчку вверх.

С помощью клавиш B>Забой> и B>Delete > можно ";соединять "; ";разорванную ” строку. Например, в такой ситуации:

write("Вве дите число лет, которое было бы Сереже ");

Устанавливаем курсор перед буквой ";д"; и нажимаем несколько раз клавишу B>Забой> до тех пор, пока слово ";Введите"; примет нужную конструкцию, или, установив курсор после буквы ";е"; нажать несколько раз клавишу B>Delete>.

Вставка пропущенных символов делается еще проще.

Например, вы пропустили несколько букв:

wrte("Ввете число лет, которое было бы Сеже ");

В первом слове пропущена буква ";i";, в слове ";Введите"; пропущены две буквы ";ди";, в слове ";Сережа"; буквы ";ер";.

Установим курсор на букву ";t"; в первом слове и наберем с клавиатуры ";i";, она тут же вставится на нужное место. Далее установим курсор на букву ";т"; в слове ";Ввете"; и наберем с клавиатуры ";ди";, слово ";раздвинется "; и буквы ";ди"; станут на свои места. Установим курсор на ";е"; в слове ";Сежа"; и наберем ";ер";,

Режим наложения

Редактор может также работать в режиме наложения новых символов на существующий старый текст: в этом режиме новый символ заменяет собой тот символ, на который указывает курсор, а остаток строки справа от курсора не смещается вправо. Для перехода к режиму наложения надо нажать клавишу B>Insert > (Ins ert - вставка), если нажать эту клавишу еще раз, вновь восстановится режим вставки. Признаком того, в каком режиме работает редактор, является форма курсора: в режиме вставки курсор похож на мигающий символ подчеркивания, а в режиме наложения он представляет собой крупный мигающий прямоугольник, заслоняющий символ целиком.

Режим автоотступа

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

Режим автоотступа поддерживает хороший стиль оформления текстов программ: отступы от левого края выделяют различные операторы и делают программу более наглядной.

Отказаться от режима автоотступа можно командой Ctrl-O I (при нажатой клавише Ctrl нажимается сначала клавиша O , затем клавиша O отпускается и нажимается клавиша I ), повторная команда Ctrl-O I восстановит режим автоотступа.

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

Команды редактирования

Backspac - B>Забой> - стереть символ слева от курсора;

Del - стереть символ, на который указывает курсор;

Ctrl-Y - стереть строку, на которой располагается курсор;

Enter - B>Ввод> - вставить новую строку, ";разрезать "; старую;

Ctrl-Q L - восстановить текущую строку (действует, если

курсор не покидал измененную строку).

Работа с блоком

Ctrl-K B - пометить начало блока;

Ctrl-K Y - стереть блок;

Ctrl-K V - переместить блок;

Ctrl-K P - напечатать блок;

Ctrl-K H - спрятать/отобразить блок (снять пометку);

Ctrl-K K - пометить конец блока;

Ctrl-K C - копировать блок;

Ctrl-K W - записать блок в дисковый файл;

Выполнение программы

После того, как программа набрана можно попробовать ее выполнить.

Для этого нажимаем клавиши B>Ctrl>+ (удерживая клавишу B>Ctrl>, нажать клавишу B>F9>). Эту же операцию можно выполнить, перейдя в основное меню, нажав клавишу B>F10>, а затем перемещением указателя выбрать опцию Run и нажать клавишу B>Ввода>.

На экране раскроется меню второго уровня, связанное с этой опцией. Новое меню как бы ";выпадает "; из верхней строки, поэтому такое меню часто называют выпадающим (Pull-down). Экран станет таким (см. рис. 4):

Рис. 4

Теперь надо найти в новом меню опцию RUN (пуск) и нажать клавишу B>Ввод>.

Если не было ошибки при вводе текста, то, спустя несколько секунд, произойдет смена изображения на экране. Турбо Паскаль предоставляет экран в распоряжение работающей программы пользователя. Такой экран называется окном программы.

В ответ на запрос:

Введите число лет, которое было бы Серёже, надо ввести 16 и нажать клавишу B>Ввод>.

После завершения прогона (работа программы часто называется ее прогоном) на экране вновь появится окно редактора с текстом программы. Если Вы не успели разглядеть изображение окна программы, то нажмите Alt-F5. При этом окно редактора скроется и вы сможете увидеть результаты работы программы. Чтобы вернуть экран в режим воспроизведения окна редактора, надо нажать на любую клавишу.

Можно экран сделать более удобным, чтобы видеть результаты работы программы. Для этого в нижней части экрана можно открыть второе окно.

Для этого нажмите клавишу F10, чтобы перейти к режиму выбора из главного меню, подведите указатель к опции Debug (отлаживать) и нажмите клавишу B>Ввод> - на экране раскроется меню второго уровня, связанное с этой опцией. Экран станет таким (см. рис. 5):


Рис. 5

Найдите в новом меню опцию OUTPUT (вывод программы), подведите к ней указатель и нажмите клавишу B>Ввод>.

В нижней части экрана появится второе окно, но оно уже не будет исчезать.

Теперь добьемся того, чтобы на экране демонстрировалось два окна одновременно: снова нажмите клавишу F10, выберите WINDOW , нажмите клавишу B>Ввод>, подведите указатель к опции TILE (черепица) и нажмите клавишу B>Ввод>.

Если все сделано правильно, экран примет вид (см. рис. 6):

Рис. 6

Двойная рамка, очерчивающая окно программы, свидетельствует о том, что именно это окно активно в данный момент.

Сделаем активным окно редактора: нажмем клавишу B>Alt> и, не отпуская ее, - клавишу с цифрой 1 (окно редактора имеет номер 1, окно программы - номер 2, эти номера написаны в верхних правых углах рамок). Теперь всё готово к дальнейшей работе с программой.

Первые ошибки и их исправление

1. Не поставлена точка с запятой, например, после оператора readln(a). После пуска программы, нажатием клавиш B>Ctrl>+B>F9>, в верхней строке экрана появится написанное красным цветом сообщение:

Error 85: ";;"; expected.

(Ошибка 85: ";;"; отсутствует.)

Редактор установит курсор на следующий символ после пропущенного знака, в нашем примере на переменную b. После нажатия любой клавиши, сообщение об ошибке исчезает и редактор переходит в режим вставки. Надо подвести курсор к нужному месту, поставить точку с запятой - “;” и продолжить работу.

2. В описании переменных не записана переменная, а в программе она присутствует, например переменная c . После пуска программы, будет выдано сообщение:

Error 3: Unknown identifier.

(Ошибка 3: Неизвестный идентификатор.)

Курсор будет установлен на эту переменную, в нашем примере на переменную c . Надо исправить ошибку, т.е. записать переменную c в раздел описаний переменных и продолжить работу.

3. Не поставлена точка после оператора end в конце программы. Сообщение компилятора будет таким:

Error 10: Unexpected end of file.

(Ошибка 10: Неправильный конец файла.),

курсор установится на букву ";e "; в слове ";end ";. Надо поставить точку и снова выполнить программу.

Запись файла на диск

Итак, программа отредактирована и выполнена (прокручена), теперь ее надо записать на диск. Для этого можно воспользоваться основным меню, в котором выбрать опцию ";File "; (см. рис. 7). Последовательность действий такова: 1) нажать клавишу F10 и перейти в основное меню; 2) переместить указатель на опцию ";File "; и нажать B>Ввод>, откроется второе меню опции ";File ";:

Рис. 7

Вы можете из этого меню выбрать опцию ";Save ";. Она записывает содержимое активного окна редактора в дисковый файл.

Если нажать клавишу B>Ввод>, то среда запросит имя файла, если такового не было установлено и окно было связано с именем NONAME00.PAS. Вы можете изменить имя, или оставить его прежним.

Эта опция вызывается непосредственно из редактора клавишей B>F2>.

Можно выбрать опцию SAVE AS . Она записывает содержимое активного окна редактора в дисковый файл под другим именем.

Диалоговое окно этой опции имеет вид (см. рис. 8):

Рис. 8

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

Построчная запись текста программы

В Паскале нет правил разбивки текста программы на строки.

Однако для записи программы можно дать некоторые

Очень важно, чтобы текст программы был расположен наглядно не только ради красоты, но (и это главное!) ради избежания ошибок. (Найти ошибки в наглядном тексте значительно легче.)

1. Каждый оператор следует писать с новой строки, за исключением коротких и по смыслу связанных операторов.

Например,

write ... readln ... - записываются в одной строке, короткие операторы присваивания можно записать в одну строку:

a:= 23; b:= 105; c:= -11.2.

2. Операторы одного уровня, находящиеся в разных строках, должны быть выровнены по вертикали, т.е. одинаково отодвинуты от левого края.

Например, запишем последовательность операторов для определения суммы цифр трехзначного числа:

s:= a div 100;

d:= a div 10 mod 10;

e:= a mod 10;

Здесь все операторы равноценны, последовательно идут один за другим, поэтому все начинаются с одной и той же вертикальной позиции.

3. Операторы, включенные в другой оператор, следует сдвинуть вправо на несколько позиций (желательно одинаково).

if ... then

4. Рекомендуется вертикально выравнивать пары базовых слов: begin и end , с которыми мы уже познакомились, а также слова, с которыми мы познакомимся позже: repeat и until , record и end , case и end .

Вот несколько самых популярных вариантов размещения оператора if :

а) if ... then ...

else ...

б) if ... then ...

else ...

в) if ...

then ...

else ...

г) if ...

then ...

else ...

д) if ... then ... else ...

6. Комментарии пишутся либо рядом с конструкцией (идентификатором, оператором, его частью), которую они объясняют, либо в отдельной строке.

Документ

программированием программирования программирования , общего... Гробовая тишина . › Несколько раз парное программирование прошло...

  • Алистэр коуберн парное программирование преимущества и недостатки

    Документ

    Исследования, связанных с программированием и организационной эффективностью. Удивительно... языка программирования , определенных способов проектирования и программирования , общего... Гробовая тишина . › Несколько раз парное программирование прошло...

  • Введение в нейролингвистическое программирование новейшая психология личного мастерства

    Документ

    Будет называться?" В результате получилось Нейролингвистическое программирование - громоздкое словосочетание, за которым скрываются... неразговорчивый, вокаль­ный, звучать, голос, говорит, тишина , диссонанс, созвучный, гармоничный, пронзительный, тихни...

  • НЕЙРОЛИНГВИСТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ (методическое пособие для начинающих)

    Документ

    ПСИХОТЕРАПЕВТИЧЕСКИЙ ЦЕНТР "ЛАД" В.И.ЭЛЬМАНОВИЧ НЕЙРОЛИНГВИСТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ (методическое пособие для начинающих) ЧАСТЬ1. ... МОДАЛЬНОСТИ (А). 1. Если громкость = 0, то «слушает тишину» , если громкость максимальная, то «горит...

  • Я думаю многим это будет интересно)))

    Инструкции read и readln

    Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:

    read (Переменная1, Переменная2, ... ПеременнаяN)

    где переменнаяы - имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.

    Приведем примеры записи инструкции read:

    read(a); read(Cena,Kol);

    При выполнении инструкции read происходит следующее:

    1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша .

    2 http://tissot.ua/ купить наручные часы часы купить киев. . После нажатия клавиши введенное значение присваивается переменной, имя которой указано в инструкции.

    Например, в результате выполнения инструкции

    read(Temperat);

    и ввода с клавиатуры строки 21, значением переменной Temperat будет число 21.

    Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, ь и с - real, то в результате выполнения инструкции read(a,b,c); и ввода с клавиатуры строки:

    4.5 23 0.17

    переменные будут иметь следующие значения:

    а = 4,5; b = 23,0; с = 0,17.

    Если в строке набрано больше чисел, чем задано переменных в инструкции read, то оставшаяся часть строки будет обработана следующей инструкцией read http://crystal.lviv.ua crystal crystal. . https://mainvisa.com.ua фото приглашение в украину для иностранных граждан. . Например, в результате выполнения инструкций

    read(А,В); read(С);

    и ввода с клавиатуры строки

    10 25 18

    переменные получат следующие значения: А=10, B = 25. Инструкция read (С); присвоит переменной с значение 18.

    Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readin, оставшаяся часть строки теряется, и следующая инструкция read или readin будет требовать нового ввода.

    Например, в результате выполнения инструкции

    readin(А,В); read(С);

    и вводе с клавиатуры строки

    10 25 18

    переменные получат следующие значения: А=10, B = 25. После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

    Перед каждой инструкцией read или readin следует располагать инструкцию write, для того чтобы подсказать пользователю, какие данные ожидает от него программа. Например, фрагмент программы вычисления стоимости покупки может иметь вид:

    writeln("Введите исходные данные.");

    Write("Цена изделия:");

    Readln(Сеnа);

    write("Количество в партии:");

    Readln(Kol);

    write("Скидка:");

    readln(Skidka);

    Если тип данных, вводимых с клавиатуры, не соответствует или не может быть приведен к типу переменных, имена которых указаны в инструкции read (readin), то программа аварийно завершает работу (инструкции, следующие за read, не выполняются), и на экран выводится сообщение об ошибке.

    Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:

    read (Переменная!, Переменная2, ... ПеременнаяЩ где переменнаяы - имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.

    Приведем примеры записи инструкции read:

    Read(а); read(Cena,Kol);

    При выполнении инструкции read происходит следующее:

    1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша .

    2. После нажатия клавиши введенное значение присваивается переменной, имя которой указано в инструкции.

    Например, в результате выполнения инструкции

    Read(Tempérât);

    и ввода с клавиатуры строки 21, значением переменной Tempérât будет число 21.

    Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, ь и с - real, то в результате выполнения инструкции read (а, b, с); и ввода с клавиатуры строки:

    4.5 23 0.17

    переменные будут иметь следующие значения: а = 4,5; ь = 23, о; с = 0,17.

    Если в строке набрано больше чисел, чем задано переменных в инструкции read, то оставшаяся часть строки будет обработана следующей инструкцией read. Например, в результате выполнения инструкций:

    Read (а, В) ; read(С);

    и ввода с клавиатуры строки

    10 25 18

    переменные получат следующие значения: а = 10, в = 25. Инструкция read (С); присвоит переменной с значение 18.

    Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readln, оставшаяся часть строки теряется, и следующая инструкция read или readln будет требовать нового ввода.

    Например, в результате выполнения инструкции:

    Readln (а, В) ; read(С);

    и вводе с клавиатуры строки

    10 25 18

    переменные получат следующие значения: а = ю, в = 25. После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

    Перед каждой инструкцией read или readln следует располагать инструкцию write, для того чтобы подсказать пользователю, какие данные ожидает от него программа. Например, фрагмент программы вычисления стоимости покупки может иметь вид:

    Writeln("Введите исходные данные."); write("Цена изделия:"); readln(Сепа); write("Количество в партии:"); readln(Kol); write("Скидка:"); readln(Skidka);

    Если тип данных, вводимых с клавиатуры, не соответствует или не может быть приведен к типу переменных, имена которых указаны в инструкции read (readln), то программа аварийно завершает работу (инструкции, следующие за read не выполняются), и на экран выводится сообщение об ошибке.

    Программы отличаются только одной строкой. Первая программа не требует пояснений - она печатает число 36. Во второй программе нигде не сказано, чему равны a и b, а вместо этого включен оператор ReadLn. Поговорим о нем.

    ReadLn читается "рид"лайн", переводится "читай строку". Он приказывает компьютеру остановиться и ждать, когда человек введет с клавиатуры определенную информацию, после чего продолжить работу. В частности, ReadLn (a,b) будет ждать ввода двух целых чисел.

    Таким образом, если первая программа после запуска будет работать без остановки до самого конца и без хлопот выдаст результат, то вторая программа на операторе ReadLn остановится и будет ждать. Во время этого ожидания человек должен на клавиатуре набрать число 20 (так как первым в списке оператора ReadLn стоит a), затем нажать клавишу пробела, затем набрать 16 и нажать клавишу Enter. Паскаль воспринимает нажатие пробела, как сигнал человека о том, что закончен набор на клавиатуре одного числа и сейчас начнется набор другого. После набора на клавиатуре последнего числа необходимо нажать клавишу Enter в знак того, что ввод чисел для данного оператора ReadLn закончен и компьютер может продолжать работу. В соответствии с этим компьютер сразу же после нажатия Enter прекращает ожидание и прежде всего направляет число 20 в память, в ячейку a, число же 16 - в ячейку b. На этом он считает выполнение оператора ReadLn законченным и переходит к следующему оператору - WriteLn. В результате будет напечатано число 36.

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

    В подтверждение важности первой причины напишем программу для решения следующей задачи: В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику - две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.

    Придумаем имена переменным величинам:

    kol_krol - количество кроликов в зоопарке

    kol_slon - количество слонов в зоопарке

    norma_krol - сколько морковок в день положено кролику

    norma_slon - сколько морковок в день положено слону

    vsego - сколько всего требуется морковок

    А теперь напишем программу:

    VAR kol_krol,kol_slon,norma_krol,norma_slon,vsego:Integer;

    norma_slon:=100;

    ReadLn (kol_krol);

    vsego:= norma_krol * kol_krol + norma_slon * kol_slon;

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

    Компьютер, выполнив автоматически первые два оператора (norma_krol:=2 и norma_slon:=100), останавливается на операторе ReadLn. Служитель вводит число 60, после чего компьютер посылает это число в ячейку kol_krol и переходит к выполнению следующего оператора (kol_slon:=3). В конце концов на мониторе появится ответ: 420.

    Вот схематическое изображение процесса выполнения программы:

    ПОРЯДОК ИСПОЛНЕНИЯ ОПЕРАТОРОВ

    ЧТО НАХОДИТСЯ В ЯЧЕЙКАХ ПАМЯТИ

    ReadLn (kol_krol)

    vsego:=norma_krol

    На следующее утро, обнаружив, что 5 кроликов продано другому зоопарку, служитель запускает ту же самую программу, вводит число 55 и получает ответ - 410.

    На этом несколько фантастичном примере я хотел показать, что применение ReadLn позволяет создавать программы, которые, оставаясь приятно неизменными, позволяют легко решать задачу в любое время для любых значений исходных данных. Можно было бы пойти по другому пути - вместо ReadLn использовать оператор присваивания, например kol_krol:=60. Но в этом случае программист каждое утро должен был бы бежать в зоопарк, чтобы исправлять в программе этот оператор присваивания.

    Оператор ReadLn можно писать и без скобок, просто так: ReadLn . Выполняя оператор в такой записи, компьютер остановится и будет ждать, но не ввода какой-то информации, а просто нажатия на клавишу Enter. Таким образом, это просто оператор создания паузы в процессе выполнения программы. О том, зачем нужны паузы, поговорим чуть ниже.

    Кроме оператора ReadLn для ввода данных применяется также оператор Read. Для начинающего программиста различия в их применении несущественны. Мы будем пока употреблять только ReadLn. Оператор Read без скобок паузу не создает.

    Интернет