Тест
Какой Вы программист?
Этот тест расскажет о вашем программировании больше, чем вы сами
хотели бы знать.
Переменная I представляет собой полное слово с фиксированной
точкой. I принимает значения 1 либо 2. Если I оказалось равным 1,
замените его на 2 и наоборот.
Сравните ваше решение с десятью предложенными. Найдите одно или
несколько наиболее похожих на ваше и прочитайте в разделе "категории"
краткую характеристику. Вы можете кодировать на любом языке, но для
сравнения предпочтительнее всего использовать PL/1.
РЕШЕНИЯ
1. IF I='2' THEN I=1;
ELSE I=2;
2. IF I=2 THEN I=1;
IF I=1 THEN I=2;
3. IF I=1 THEN GOTO SKIP;
I=1;
GOTO DONE;
SKIP: I=2;
DONE:
4. J=2;
IF I=2 THEN J=1;
I=J;
5. 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:
6. DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
. . .
I=ONETWO(I);
7. I=3-I;
8. I=I-(I/2*2)+1;
9. IF I=2
THEN DO;
I=1;
END;
ELSE DO;
I=2;
END;
10. IF I=1 THEN I=2;
IF I^=2 THEN DO;
PUT LIST('ПЛOXOE I - ЗAMEHEHO HA 1');
I=1;
END;
КАТЕГОРИИ
- Недавний выпускник школы IBM.
Не более одного из десяти окончивших эту школу знают разницу между
2 и "2". Удивительно, как можно вообще программировать без знания столь
фундаментальной концепции.
- Преподаватель программирования.
Это решение хуже предыдущего. Много ли, однако, обучающих
программированию сами написали и отладили хотя бы одну программу?
- Программист на FORTRAN'е, только что окончивший курс PL/1.
Да, старую собаку не научишь новым штукам! Это решение дает верный
результат, но это все, что можно про него сказать.
- Программист на ассемблере, прошедший тот же курс.
Это решение не является ни прямым ни эффективным. Возможно, это
результат обучения языку PL/1. В нем есть та прелесть, что оно не
содержит самомодифицирующих кодов, но это лишь результат возврата на
землю после изучения языка высокого уровня.
- Системный аналитик.
Прекрасная иллюстрация для тех, кто думает, что обязанность
системного аналитика - такая разработка алгоритма, в которой окажется
некомпетентен даже хороший и опытный программист.
- Сomputer Scientist.
Наверное, это самое умное решение. Однако такие "сальто-мортали"
без комментариев оказываются весьма непонятными. Искусство требует
жертв, а жертвой будет тот, кто разбирается в этой программе - может
быть, сам автор через три месяца.
- Математик.
Очень похоже на предыдущее, столь же элегантно, но опять-таки
встает проблема: как же в нем разобраться?
- Программист, заботящийся о секретности своей программы.
Вот работа настоящего композитора, и конечно, никаких комментариев.
"Я могла бы придумать и более запутанный способ, как это сделать, - с
гордостью сказала белая королева".
- Структурный программист.
Каждому ясно, что сие произведение - структурная программа. Иногда
заботятся только о том, сколько колонок надо отступить от края листа.
Настоящее структурное программирование - это прежде всего техника, и
применять ее надо с умом.
- Хороший программист.
Заметьте, что ни одно из решений 1-9 не проверяло диапазон значений
I, а это весьма опасно. К несчастью, вас не спасут ни структурность, ни
фантастические алгоритмы, ни элегантность решения, если вдруг окажется,
что I первоначально не было равно ни единице ни двойке.
Источник: ?
|