| imho.ws |
![]() |
|
|
|
# 1 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Опубликовано в Datamation, Март 1977 года (!)
Этот тест расскажет о вашем программировании больше, чем вы хотели бы знать. Задача: Переменная I представляет собой целое число. I принимает значения 1 или 2. Если I оказалось равным 1, то замените его на 2, и наоборот. Сравните ваше решение с десятью предложенными. Найдите одно или несколько наиболее похожих на ваше и прочитайте в разделе "Категории" краткую характеристику. Вы можете кодировать на любом языке, но для сравнения предпочтительнее использовать PL/1. Решения:[LIST=1][*] Код:
IF I='2' THEN I=1; ELSE I=2; Код:
IF I=2 THEN I=1; IF I=1 THEN I=2; Код:
IF I=1 THEN GOTO SKIP; I=1; GOTO DONE; SKIP:I=2; DONE: Код:
J=2; IF I=2 THEN J=1; I=J; Код:
DECLARE SWITCH LABEL; IF I=1 THEN SWITCH=ONE; IF I=2 THEN SWITCH=TWO; GOTO SWITCH; ONE: I=2; GOTO DONE; TWO: I=1; DONE: Код:
DECLARE ONETWO(2) FIXED BIN(31) INIT(2,1); I=ONETWO(I); Код:
I=3-I; Код:
I=I-(I/2*2)+1; Код:
IF I=2
THEN DO;
I=1;
END;
ELSE DO;
I=2;
END;
Код:
IF I=1 THEN I=2; ELSE DO;IF I=2 THEN I=1; ELSE DO;
PUT LIST('НЕДОПУСТИМОЕ ЗНАЧЕНИЕ I: ',I,' ЗАМЕНЕНО НА 1');
I=1;
END;END;
Категории:[LIST=2][*]Недавний выпускник школы IBM. Не более одного из десяти окончивших эту школу знают разницу между 2 и "2". Удивительно, как можно вообще программировать без знания столь фундоментальных понятий.[*]Преподаватель программирования. Это решение хуже предыдущего. Много ли, однако, обучающих программированию сами написали и отладили хотя бы одну программу?[*]Программист на Фортране, только что закончивший курсы по PL/1. Да, старую собаку не научишь новым штукам! Это решение дает верный результат, но это всё, что можно про него сказать.[*]Программист на Ассемблере, прошедший тот же курс. Это решение не является ни прямым, ни эффективным. В нём есть та прелесть, что оно не содержит самомодифицирующихся кодов, но это лишь результат возврата на землю после изучения языка высокого уровня.[*]Системный аналитик. Прекрасная иллюстрация для тех, кто думает, что главная обязанность системного аналитика - это разработка такого алгоритма, в котором окажется некомпетентным даже хороший и опытный программист.[*]Computer scientist. Наверное, это самое умное решение. Однако такое "сальто-мортале" без комментариев оказывается весьма непонятным. Искусство требует жертв, а жертвой будет тот, кто будет разбираться в этой программе - может быть, сам автор спустя три месяца.[*]Математик. Очень похоже на предыдущее, столь же элегантно, но опять-таки та же проблема: как в этом разобраться?[*]Секретчик. Программист, заботящийся о секретности своей программы. Вот работа настоящего композитора, и, конечно, никаких комментариев. "Я могла бы придумать и более запутанный способ, как это сделать", - с гордостью сказала Белая Королева.[*]Структурный программист. Каждому ясно, что сие произведение - структурная программа. Но структурная программа характеризуется не отступами от края листа, а прежде всего наличием внутренней логики.[*]Хороший программист. Заметьте, что ни одно из предыдущих решений не проверяло диапазон значений I, а это весьма опасно. Вас не спасет ни структурность, ни фантастические алгоритмы, ни элегантность решения, если вдруг окажется, что I первоначально не было равно ни единице, ни двойке.[/LIST=2]
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! Последний раз редактировалось Ghost; 26.12.2003 в 09:45. |
|
|