Сборник юмористических произведений
Шрифт:
необходимой для успеха.
STATE /* вообще-то, это константа из языка Male C+, однако в послед
нее время она введена в большинство трансляторов языка С. Хотя мы счита
ем, что Male C+ более мужско-шовинисткий диалект, но... */
Принимает два состояния:
RULEZ - Все ОК, все отлично, великолепно и пр.
SUX - Все наоборот.
Примечание: В Male C вводится еще несколько констант, к сожалению, мужско-шовинистских. Не вдаваясь в подробности, мы опишем несколько для полноты картины:
BEER /* обычно принимает дробные значения, 0.3, 0.5, реже 1, 2 */
CAR /*
SPORT /* если не WORK, не SEX и не BEER, но SPORT, однако чаще всего
в пассивной форме наблюдения */
Забегая немного вперед, предлагаем для самостоятельного разбора простенькую программу с использованием вышеописанных констант (заметьте, что смысл программы надо искать исходя не только из одних операторов).
RULEZ;
IF (LOVE == SEX) BAD;
ELSE
IF (LOVE == WORK) SO-SO;
ELSE (LOVE == YES) GOOD;
LOVE == NO; VERY BAD;
END;
Короче, если вы чувствуете любовь, но не можете дать ей определение, это хорошо.
2. Переменные
2.1. Одиночные переменные
Переменные в языке Male C имеют примерно то же самое значение, что и в других языках. Однако, как в старых языках, в Male C нет необходимости явно определять тип переменных, когда их смысл ясен из контекста.
К примеру, если парикмахер плохо уложил вам волосы, это безусловно, Shit. А если он к тому же еще и сжег их, то это DOUBLE Shit. Для женщины Whisky редко бывает DOUBLE, а мужчина вполне может осилить такую порцию.
Wood, конечно, имеет тип FLOAT. А Axe - навряд ли. А для Submarine этот вопрос находится в стадии обсуждения.
GLASS обычно INT, но если применить к нему оператор BREAK, то навряд ли оно (он) останется целой(лым).
Skirt лучше всего SHORT (впрочем, вечером можно и LONG). А вот строковая константа (разговор двух женщин) почти всегда LONG а не SHORT.
Если женщина замужем, но на курорте она одна, то Husband для нее понятие VIRTUAL, однако дома, он, конечно, REAL.
Многие женщины хотели бы иметь CHAR (приходящую уборщицу), но чаще всего это остается UNSIGNED мечтой и пахать на кухне и на уборке приходится самой.
Charge может быть STATIC, а вот CURRENT (электрический) - по определению нет.
Особый тип переменной - LOGICAL. Хотя она принимает всего два значения TRUE и FALSE, это не значит, что на основании ее значения можно принимать какие-либо действия. Если MONEY is EMPTY, это еще не значит, что купить новую шляпку невозможно (особенно не советуем высказываться об умственных способностях своей жены, которая все же сделала это).
Примечание: в Male C+ и некоторых диалектах C для решения этой проблемы вводятся дополнительные значения этой переменной, типа ALMOST.TRUE или BETWEEN.TRUE.FALSE. Мы считаем, что в этом нет необходимости, т.к. не решается главная проблема: выбор. Если ваш муж возвращается очень поздно, в подпитии, странно пахнет духами и при этом говорит, что задержался на работе, это может хоть ALMOST.TRUE, хоть ALMOST.FALSE, все равно ничего, кроме скалки, не поможет. Через три месяца после вашей женитьбы жена может принести вам чернокожего младенца. Если при этом она убеждает вас, что ни с кем, кроме вас, последний год в близких отношениях не была, ваша LOVE к ней может заставить считать это и за BETWEEN. TRUE.FALSE и даже за TRUE. Однако вы, вероятней всего, будете едиственным в этом убеждении.
2.2. Наборы переменных
Наборы переменных - группа переменных, связаных общими свойствами. К примеру, массив Furniture [] содержит набор мебели, а составная переменная Age_of_Women - возраст женщины. INT LOVE [ SEX, Flirt, LOVE] очевидно обозначает набор состояний любви.
3. Операции присваивания.
Операции присваивания вообще одни из самых популярных у нас операций. Этим занимаются все, начиная с ваших детей и кончая государством.
Операции присваивания для переменных в общем такие же, как и в обычном C, кроме некоторых неважных случаев для упрощения понимания программ. Примеры:
MONEY = $100 то же самое, что MONEY is $100
IF ( FOUND ) то же самое, что FOUND
STATE is RULEZ то же самое, что RULEZ
4. Цикл DO.
По замыслу создателей языка, должен быть самым употребительным оператором. Действительно, разве всех нас не учили в детстве, что единственный путь к известности и достатку - труд? Однако многие из нас выросли и нашли разные пути к достатку и без утомительных циклов DO. К примеру, молодая девушка пишет в газеты бесплатных объявлений: "18 лет, обаятельная-привлекательная 90-60-90, без специальных навыков, расмотрю предложения от $500". Кстати, разберем это объявление на Male C и попробуем сделать выводы.
MONEY is EMPTY;
SEEK ( WORK );
IF ( MONEY $500) BREAK; /* Облом */
DO {
SEX;
WHILE (HEALTH is SO-SO);
}
Is STATE GOOD ?
Молодая-привлекательная без особых навыков, но с запросами от $500 может получить только определенную работу, причем весьма интенсивно. При этом, правда, ответ на последний оператор программы остается открытым. Кое-кому нравиться быть "секретуткой".
5. Особые операторы.
Смысл особых операторов можно понять из их перевода. Нет смысла перечислять их все, т.к. список существенно зависит от реализации языка. Однако мы разъясним смысл некоторых, используемых в этом руководстве.
SEEK - поиск. В скобках указывается переменная, по которой ведется поиск. SEEK ( Husband ) и SEEK ( Lover ) далеко не одно и то же, хотя, конечно, каждая женщина надеется, что ее муж всегда будет хорошим любовником, а ее любовник наконец разведется с женой и жениться на ней.
FOUND - найдено! Что найдено, смотрите в скобках. Следующий пример иллюстрирует хорошо известный факт, что искать черную кошку в темной комнате - безнадежное занятие.
DOUBLE Room = Cat = Black;
SEEK ( Cat );
FOUND ( EMPTY );
6. Оператор RETURN.
Все возвращается на круги своя. Таким образом, RETURN непосредственно связан с операторами циклов. Пример:
INT Age;
IF ( Age > 50 )
IF ( WORK is GOOD \!\! Alcohol is EMPTY ) HEALTH is GOOD;
ELSE HEALTH is BAD;
Age != RETURN;
DIE;
END;
Конечно, после 50 здоровье уже не то, особенно если вы злоупотребляли. С другой стороны, "Кто не курит и не пьет, тот здоровенький помрет" - годы не возвратишь.