Вопросы и Упражнения
Вопросы для самоконтроля
- Какие формы обращения к подпрограмме вы знаете?
- Что такое область видимости переменной?
- Как ограничить область видимости переменной?
- Чем отличаются переменные, объявленные при помощи функции ту о от переменных, объявленных при помощи функции local ()?
- Каким образом данные передаются в подпрограмму и из подпрограммы?
- Что такое передача параметров по ссылке и по значению?
- Какой тип данных называется typegiob?
- Как осуществить передачу по ссылке параметра-массива?
- В каких случаях функция local () не может быть заменена функцией my ()?
- Что такое прототип?
- Какие значения будут иметь переменные $х, @list1, @list2 после выполнения программы
#!/usr/bin/perl $х = 0; @list1 = (1, <strong>2</strong>, 3); @list2 = funcO; sub func { local ($x); $x = 1; @list1 = (4, 5, 6); ___ } "X \
Упражнения
- Напишите подпрограмму, которая выводит пронумерованный список своих аргументов.
- Напишите подпрограмму, которая выводит пронумерованный список своих аргументов в обратном порядке.
- Напишите подпрограмму, которая подсчитывает число символов из стандартного ввода и выводит результат.
- Напишите подпрограмму, которая выводит свои параметры-массивы в обратном порядке по элементам.
- Напишите подпрограмму, которая для двух своих параметров-массивов осуществляет взаимный обмен элементов с одинаковыми индексами.
- Одной из известных задач, для решения которых применяется рекурсия, является задача о Ханойских башнях.
- На плоскости установлены три стержня: а, b, с (рис. 11.1).
На стержень а нанизаны n дисков, расположенных по возрастанию диаметра. Необходимо переместить диски со стержня а на стержень с, используя стержень b и соблюдая следующие ограничения: можно перемещать только один диск одновременно, диск большего диаметра никогда не может находиться на диске меньшего диаметра.
Напишите подпрограмму, которая описывает последовательность переноса дисков в ходе решения задачи, выводя сообщения вида:
Перенос диска со стержня а на стержень с.
Рис. 11.1. Задача о Ханойских башнях