Programming Taskbook 0


Download 1.62 Mb.
Pdf ko'rish
bet34/71
Sana21.06.2023
Hajmi1.62 Mb.
#1644761
TuriУчебное пособие
1   ...   30   31   32   33   34   35   36   37   ...   71
Bog'liq
Abramyan-Pascal2016-1

Замечание. При реализации вариантов функций ReadSeqInteger, Read-
SeqReal, ReadSeqString для электронного задачника Programming Taskbook 
было решено отказаться от «отложенного» характера их выполнения: ввод 
элементов последовательности выполняется ими немедленно, и введенные 
элементы сохраняются в памяти, подобно введенным элементам массивов. 
Отличие этих функций от аналогичных функций для ввода массивов со-
стоит лишь в том, что возвращаемый ими результат имеет тип последова-
тельности (а не массива). Подобная модификация не дает проявиться осо-
бенностям ввода последовательностей, описанным выше, и благодаря это-
му избавляет начинающего программиста от многих ошибок, которые ему 
на начальном этапе изучения последовательностей было бы трудно понять 
и исправить.
Обсудив средства ввода массивов и последовательностей, мы можем 
обратиться к задачам, в которых дается некоторый набор данных, требую-
щий обработки. Одной из простейших подобных задач является задача
Array7, в которой дается размер массива и его элементы и требуется выве-
сти элементы массива в обратном порядке. Очевидное решение, использу-
ющее цикл, выглядит следующим образом: 
Task('Array7'); // Вариант 1 
var a := ReadArrReal; 
for var i := a.Length - 1 downto 0 do 
Write(a[i]); 
Чтобы получить более краткое решение, можно использовать запрос, 
инвертирующий последовательность, т. е. располагающий ее элементы в 
обратном порядке (точнее, данный запрос возвращает новую последова-
тельность, которая является инвертированной по отношению к исходной). 
Этот запрос имеет имя Reverse и не требует параметров. Полученную в ре-
зультате применения этого запроса инвертированную последовательность 
можно сразу переслать задачнику, поэтому в решении не потребуется ис-
пользовать ни одной переменной: 
Task('Array7'); // Вариант 2 
ReadSeqReal.Reverse.Write; 
Запрос Reverse можно применить и к массиву, так как любой массив 
может быть неявно преобразован в последовательность: 
Task('Array7'); // Вариант 2a 
ReadArrReal.Reverse.Write; 


Download 1.62 Mb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling