Programming Taskbook 0
Введите размер и элементы: 5 2 3 4 5 6
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
Введите размер и элементы: 5 2 3 4 5 6
[2,3,4,5,6] Для большей наглядности можно перейти на новую строку после вво- да размера последовательности; это никак не повлияет на результат. Следует, однако, учитывать, что ввод данных в последовательность принципиальным образом отличается от ввода данных в массив. Чтобы в этом убедиться, достаточно после ввода данных попытаться дважды выве- сти эти данные, например: Writeln(a); Write(a); В случае массива ничего неожиданного не произойдет: содержимое массива просто выведется дважды. Однако при обработке последователь- ности результат будет иным: после первого вывода содержимого введен- ной последовательности программа опять попытается ввести такое же количество элементов последовательности (при этом никакого пригла- шающего сообщения выведено не будет). И если проанализировать дан- ную ситуацию, то можно понять, что именно такое поведение и является для последовательностей наиболее естественным. Ключевая идея состоит в том, что последовательность не хранит в памяти свои элементы. Она ге- нерирует их (тем или иным образом) лишь тот момент, когда эти элементы требуется обработать (например, вывести на экран). Если алгоритм гене- рации задан явным образом, то последовательность всегда генерирует одинаковый набор данных, и по поведению программы невозможно опре- Глава 3. Массивы и последовательности 55 делить, в какой момент эта генерация производится. Однако при вводе данных с клавиатуры ситуация иная: для того чтобы повторно сгенериро- вать последовательность необходимо ее повторно ввести, так как прежние значения элементов уже обработаны и забыты (последовательность пом- нит лишь свой размер). Необходимо также учитывать следующее. Ввод массива выполняется при выполнении того фрагмента, в котором ввод запрограммирован. Даже если бы мы не указали после этого фрагмента процедуру Write, память под массив была бы выделена и в нее занесены введенные значения элементов. Действия же по вводу последовательности фактически производятся толь- ко в момент перебора ее элементов. Поэтому если бы мы включили в про- грамму только приведенный выше единственный оператор, определяющий последовательность a, то при выполнении этого фрагмента были бы вы- полнены только действия по вводу единственного числа — размера после- довательности (в чем можно легко убедиться, закомментировав идущие далее вызовы процедуры Write: если в этом случае после ввода первого числа нажать Enter, то программа немедленно завершится). Описанная особенность ввода последовательностей означает, что ор- ганизовывать подобный ввод имеет смысл только если сразу после ввода последовательность будет обработана требуемым образом (обычно с при- менением цепочки запросов) и получен результат, после чего в программе не будет производиться обращений к этой последовательности. Заметим, что в такой ситуации обычно не требуется связывать последовательность с какой-либо переменной, так как в дальнейшем эта переменная в программе не будет использоваться. Как и для массивов, для последовательностей с числовыми и строко- выми элементами в PascalABC.NET предусмотрены специальные функции, упрощающие их ввод. Их имена аналогичны именам функций для ввода массивов, за исключением того, что текст «Arr» надо в них заменить на «Seq»: ReadSeqInteger, ReadSeqReal, ReadSeqString. Например, использованный ранее оператор для ввода целочисленной последовательности можно записать гораздо короче: var a := ReadSeqInteger (ReadInteger('Введите размер и элементы:')); Можно также указать отдельные приглашения для ввода размера и элементов, как в ранее рассмотренном примере с массивом: var a := ReadSeqInteger('Введите элементы:', ReadInteger('Введите размер:')); Еще раз подчеркнем, что ввод элементов будет выполняться только в момент перебора элементов последовательности. 56 Варианты функций ReadSeqInteger, ReadSeqReal, ReadSeqString реализо- ваны и в модуле PT4 электронного задачника. Как и в случае функций для ввода массивов, имеются варианты этих функций без параметров и с од- ним параметром — размером вводимой последовательности. Download 1.62 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling