Практическая информатика


         

Аргументы командной строки


Как и другие языки программирования, Ruby позволяет передавать данные в программу, использую аргументы командной строки. Все, что при старте программы указывается после ее имени, интерпретатор помещает в специальный массив ARGV, работа с элементами которого нечем не отличается от работы с другими массивами. Можно, например, проверить, с правильным ли количеством аргументов командной строки была вызвана программа. Далее приводится программа, прерывающий свое выполнение, если число аргументов меньше 2:

=begin Напишите программу подсчета суммы всех нечетных чисел, заключенных в интервале от K до L, где K и L - аргументы командной строки =end

if ARGV.length < 2 puts "Слишком мало входных данных" exit(1) end

s = 0 k = ARGV[0].to_i l = ARGV[1].to_i for i in k .. l s += i if i%2 != 0 end puts "Сумма нечетных чисел в интервале " + "от #{k} до #{l} равна #{s}"

Для экстренного прерывания процесса выполнения программы здесь использован встроенный метод exit.

Пример 1.10.

(html, txt)

Задача

Числами Фибоначчи называется последовательность целых чисел, задаваемая соотношениями: а0 = 0, a1 = 1, an = an-1+an-2. Напишите программу, получающую с качестве аргумента командной строки целое число n, и печатающую n-е число Фибоначчи.

Вариант 1 - рекурсивная функция

В следующей программе первый элемент массива ARGV преобразовывается в целое число и передается в качестве аргумента рекурсивной функции fib.

def fib(n) if n<2 n else fib(n-2)+fib(n-1) end end n = ARGV[0].to_i puts "#{n}-е число Фибоначчи равно #{fib(n)}"

Для вычисления с помощью этой программы, размещенной в файлe fib.rb, например, 30-го числа Фибоначчи достаточно выполнить команду

ruby fib.rb 30

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

Пример 1.11.

(html, txt)

Вариант 2 - использование массива

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

Содержание  Назад  Вперед