29 мар. 2010 г.

Наивные пионеры

Поражаюсь наивности некоторых моих учеников. Предыстория такова: на каникулы задал всем классам парочку задач на ruby. Решение попросил прислать на почту. Мы только начали изучать программирование, поэтому задачи были простые: перевести массив из евро в рубли, найти сумму неотрицательных элементов массива. И тут одна девушка присылает следующий замечательный код:


  1. sourceArrayEuro = [1510152025]
  2. euro_to_rub = 41
  3. resultArrayRub = sourceArrayEuro.map { |elem| elem * euro_to_rub }
  4. printf('ArrayEuro = [ ')
  5. sourceArrayEuro.each { |elem| printf('EURO %d; ', elem) }
  6. puts ']'
  7. puts 'Euro_to_rub = ' + euro_to_rub.to_s
  8. printf('ArrayRub = [ ')
  9. resultArrayRub.each { |elem| printf('%d RUB; ', elem) }
  10. puts ']'

Особенно меня порадовала camel-like нотация (которой я, кстати, не придерживаюсь для именования переменных, printf (привет, noname-c++-программист), использование итераторов в качестве циклов, а не блоков.

В общем, нехорошо так палиться, ой нехорошо.

p.s. правильное решение - на порядок проще:


  1. sourceArrayEuro = [1510152025]
  2. euro_to_rub = 40 # 41 - это уже мечты
  3. resultArrayRub = sourceArrayEuro.map { |elem| elem*euro_to_rub}
  4. puts "Значения в рублях: #{resultArrayRub}"