bash.im ithappens.me zadolba.li
5285

Аргумент с потолка

Канун последнего экзамена. У меня всё в полном порядке, но другие студенты моей группы были не столь успешны в течение семестра и сейчас активно сражаются за зачёты по практическому курсу «Численные методы». Каждое задание — набор несложных шагов математического алгоритма, которые нужно воплотить в рабочую программу. Меня как самого понимающего ловят в светлом углу и суют под нос ноутбук с седьмой «дельфой», в которой открыт какой-то до ужаса неотформатированный код. «Помоги понять, что тут делается».

Беглый осмотр и пара вопросов к хозяину техники показывают, что программу писал не он, как она работает, он не понимает, а сдать надо через пару часов. Кто-то из группы выдал ему это зачтённое уже чудо с отеческим «там всё просто».

for i:=0 to n do
if i<>0 do ...

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

function f1(x: real) /* Первая производная функции */
function f2() /* Вторая производная функции */

Гениально! Второй производной аргумент, оказывается, не нужен. Оказалось, он берётся из глобальной производной, объявленной где-то наверху. Хорошо, не из массива с элементами [1, 2, 3, ...] — хотя это я тоже когда-то встречал.

while(iterations < 1000)

Конечно, проще сделать такую проверку, чем понять, почему программа уходит в бесконечный цикл и считает какую-то чушь вместо нормальных приближений итерационного метода.

Ручкой набросав на бумаге основы алгоритма задачи (ей-богу, десять строчек вместо пары экранов) и посоветовав написать всё с нуля, я пошёл отправлять эту историю. Может, тому, кто написал это чудо, хоть стыдно станет.