Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Тест. Какой Вы программист?

Этот тест расскажет о вашем программировании больше, чем вы сами хотели бы знать.

Страница не найдена
      Переменная 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;

            КАТЕГОРИИ
1. Недавний выпускник школы IBM.
Не более одного из десяти окончивших эту школу знают разницу между 2 и "2". Удивительно, как можно вообще программировать без знания столь фундаментальной концепции.
2. Преподаватель программирования.
Это решение хуже предыдущего. Много ли, однако, обучающих программированию сами написали и отладили хотя бы одну программу?
3. Программист на FORTRAN'е, только что окончивший курс PL/1.
Да, старую собаку не научишь новым штукам! Это решение дает верный результат, но это все, что можно про него сказать.
4. Программист на ассемблере, прошедший тот же курс.
Это решение не является ни прямым ни эффективным. Возможно, это результат обучения языку PL/1. В нем есть та прелесть, что оно не содержит самомодифицирующих кодов, но это лишь результат возврата на землю после изучения языка высокого уровня.
5. Системный аналитик.
Прекрасная иллюстрация для тех, кто думает, что обязанность системного аналитика — такая разработка алгоритма, в которой окажется некомпетентен даже хороший и опытный программист.
6. Сomputer Scientist.
Наверное, это самое умное решение. Однако такие "сальто-мортали" без комментариев оказываются весьма непонятными. Искусство требует жертв, а жертвой будет тот, кто разбирается в этой программе — может быть, сам автор через три месяца.
7. Математик.
Очень похоже на предыдущее, столь же элегантно, но опять-таки встает проблема: как же в нем разобраться?
8. Программист, заботящийся о секретности своей программы.
Вот работа настоящего композитора, и конечно, никаких комментариев. "Я могла бы придумать и более запутанный способ, как это сделать, — с гордостью сказала белая королева".
9. Структурный программист.
Каждому ясно, что сие произведение — структурная программа. Иногда заботятся только о том, сколько колонок надо отступить от края листа. Настоящее структурное программирование — это прежде всего техника, и применять её надо с умом.
10. Хороший программист.
Заметьте, что ни одно из решений 1-9 не проверяло диапазон значений I, а это весьма опасно. К несчастью, вас не спасут ни структурность, ни фантастические алгоритмы, ни элегантность решения, если вдруг окажется, что I первоначально не было равно ни единице ни двойке.

Опубликовано: 2012.09.25, последняя правка: 2021.12.18    09:35

ОценитеОценки посетителей
   ██████████████████ 8 (42.1%)
   █████████ 4 (21.0%)
   ███████ 3 (15.7%)
   █████████ 4 (21.0%)

Отзывы

✅  2020/01/24 08:51, Андрей          #0 

Постановка задачи довольно кривая (не понятно что надо сделать). Примеры решений в основном тоже.
Моё решение примерно такое
checkState(i == 1 !! i == 2);
return i == 1 ? 2 : 1;

✅  2020/01/24 18:31, Автор сайта          #1 

Постановка задачи такая: если переменная i равна 1, то присвоить ей 2. Если 2, то присвоить 1. Иначе ничего не делать. В вашем решении не предусмотрен «return» для значения, отличного от 1 и 2.

Вот вариант с единственным оператором сравнения на языке D:
j = (i -1) >>> 1;     // битовый сдвиг с вращением
if (! (-2 & j)) i = ~j + 1;

✅  2020/01/25 12:55, kt          #2 

Эту задачу-шутку я помню очень давно.
Удивительно, что самая простая (и правильная) запись почему-то изначально не была приведена в списке (например, на PL/1):

if x=1 then x=2; else if x=2 then x=1;

Добавить свой отзыв

Написать автору можно на электронную почту
mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Содержание

Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

Компьютерный юмор

●  Шутливые языки программирования

●  Если бы языки программирования были женщинами

●  Избранные компьютерные анекдоты

●  Короткие фразы

●  Компьютерный юмор в картинках

●  Компьютерные были

●  Реальная жизнь смешнее анекдотов

●  Деньги = работа / знание

●  Проект «Генезис»

●  Настоящие программисты не используют Паскаль

●  Краткое руководство по всем языкам программирования

●  Тест. Какой Вы программист?

●  Русские программисты

●  О Линусе Торвальдсе

●  Этой компанией была Microsoft

●  Анекдоты про Билла Гейтса

●  Мультик анальный

●  Русский мат в коде Microsoft Office

●  Google довоевался

●  Смешные и неприличные названия сайтов

●  Сочинение «Как я провела лето» в SMS-стиле

Новости и прочее




Последние отзывы

2024/11/21 11:02 ••• Автор сайта
Продолжение цикла и выход из него

2024/11/12 20:24 ••• Вежливый Лис
Правила языка: строки, комментарии

2024/11/12 13:10 ••• Вежливый Лис
Новости и прочее

2024/11/12 00:32 ••• Автор сайта
Оценка надёжности функции с несколькими реализациями

2024/11/06 02:50 ••• Иван
Энтузиасты-разработчики компиляторов и их проекты

2024/11/05 23:51 ••• Борис К.
Изменение приоритетов операций

2024/11/05 23:38 ••• Борис К.
Шестнадцатиричные и двоичные константы

2024/11/04 12:50 ••• Неслучайный читатель
Русский язык и программирование

2024/11/01 12:11 ••• ИванАс
Русской операционной системой должна стать ReactOS

2024/10/27 14:01 ••• Автор сайта
О русском ассемблере

2024/09/29 23:40 ••• Автор сайта
Десятка худших фич C#

2024/09/29 13:10 ••• Автор сайта
ЕС ЭВМ — это измена, трусость и обман?

2024/09/22 21:08 ••• Вежливый Лис
Бесплатный софт в мышеловке