Programming Taskbook 0
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
- Bu sahifa navigatsiya:
- Array1 ); // Вариант 5
Глава 3. Массивы и последовательности 51 Для использования нужной начальной части этой последовательности надо, как обычно, использовать соответствующий вспомогательный за- прос, например уже известный нам запрос Take: Task('Array1'); // Вариант 5 AllOddGen.Take(ReadInteger).Write; Пример функции AllOddGen еще более наглядно демонстрирует осо- бенности функций с конструкцией yield. Несмотря на то что в теле функции присутствует бесконечный цикл, ее вызов не приводит к зацикливанию. Фактически, как уже было сказано, ее вызов вообще не приведет к выпол- нению содержащихся в ней операторов. Ее тело будет выполняться только тогда, когда последовательности потребуется перебрать свои элементы, и итерации будут повторяться лишь до тех пор, пока не будут получены те элементы, которые требуются. Если в функции, возвращающей последовательность, не будет вызва- но ни одной конструкции yield, то будет возвращена пустая последователь- ность. Подобная ситуация возникнет, например, при вызове OddGen(0). 3.7. Ввод массивов и последовательностей. Инвертирование. Срезы Рассмотрев различные способы создания массивов и последовательно- стей, мы пока еще не обсудили варианты организации ввода этих структур. Очевидным вариантом организации ввода массива является цикл for. Вначале запрашивается размер массива, затем в цикле вводятся его эле- менты. Для большей наглядности ввод данных следует сопровождать при- глашающими сообщениями. Благодаря тому, что в PascalABC.NET для ор- ганизации ввода предусмотрены не только традиционные процедуры, но и функции (см. п. 1.2), ввод размера можно выполнить непосредственно при инициализации массива. Кроме того, инициализацию можно объединить с описанием массива. В результате ввод, например, массива целых чисел можно организовать следующим образом: var a := new integer[ReadInteger('Введите размер массива:')]; Print('Введите элементы массива:'); for var i := 0 to a.Length - 1 do a[i] := ReadInteger; При выполнении этого фрагмента вначале будет выведено приглаше- ние «Введите размер массива», после которого пользователь должен вве- сти размер (целое число). Введенный размер сразу будет передан в кон- структор массива, что обеспечит выделение памяти под требуемое число элементов. Затем выводится приглашение на ввод элементов, после чего в цикле выполняется сам ввод. Заметим, что элементы можно вводить либо в одной строке, разделяя их пробелами, либо в различных строках, нажимая 52 после ввода каждого элемента клавишу Enter. Можно также комбинировать эти варианты. Для проверки правильности ввода можно использовать процедуру Write: Write(a); Приведем результат выполнения предыдущего фрагмента, дополнен- ного процедурой Write: 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