Как Петя Бейсиков Тоню Соображалкину программировать учил
- Автор: Бруно Мартузан
- Жанр: Околокомпьютерная литература / Детская образовательная литература / Basic, Visual Basic, VB Script, VBA и т.п.
- Дата выхода: 1987
Читать книгу "Как Петя Бейсиков Тоню Соображалкину программировать учил"
ЯЗЫКИ И ПРОГРАММИРОВАНИЕ
— Ошибок нет, но это не означает, что программу нельзя улучшить. Сразу видно, что программа стала бы короче, если воспользоваться оператором ON. Сначала нужно ввести символьную переменную, содержащую все выделенные согласные: Т" = «КГШЩЖЧХ». И после того как найдена предпоследняя буква введенного слова, следует искать ее в значении переменной Т" при помощи функции POS. Равенство значения этой функции нулю означает, что в родительном падеже надо использовать окончание «-ы». Тогда не понадобятся эти сравнения в строках 150–180.
Еще надо сказать, что программа ведь не охватывает все первое склонение. Есть еще слова, оканчивающиеся на «-я». Главное, программу легко изменить, чтобы учесть и этот случай. После строки сравнения последней буквы слова на совпадение с «-а» ставим строку сравнения с «-я», и если оказалось, что слово действительно кончается на «-я», переходим на строку 200 с присвоением переменной РД значения «И», потому что в этом случае слово в родительном падеже всегда оканчивается на «-и». И все.
— Так уж и все? А винительный падеж от «земля», что вижу? «Землю», а вовсе не «землу».
— Да, верно. Придется иметь еще одну символьную переменную наподобие РД, в которую засылать либо «у», либо «ю» в зависимости от того, какой буквой оканчивается слово.
— И это еще не все! В творительном падеже тоже другое окончание — «-ей», а не «-ой», и так просто получается только тогда, когда мы в этом окончании не пишем букву «ё», как надо было бы, скажем, в слове «землёй» или «судьёй». А слова на «-ия»?! У них ведь в дательном и творительном падеже окончание не «-е», а «-и». Плохо знаешь грамматику родного языка, Бейсиков!
— Этого не скроешь. Но все эти случаи все-таки запрограммировать можно, вводя специальные переменные для окончаний и проверив предпоследнюю букву, которую ты, надеюсь, сумеешь найти.
— Это-то я сумею. А как быть со словами, о которых я только что вспомнила? Существительные среднего рода, оканчивающиеся на «мя»— время, знамя, имя и так далее.
— Они относятся, кажется, к третьему склонению.
— Да, к третьему. Но вот, представь себе, приходит какой-нибудь шутник и вводит в программу вместо слова первого склонения слово «знамя», и мы начинаем его склонять — «знамя», «знами», «знаме», «знаму»… Представляешь, сколько смеху это вызвало бы? И ничего не сделаешь.
— Почему же нет. Можно проверять не одну, а две последние буквы — «мя» они или не «мя»? Нужно все эти слова запомнить в особом символьном массиве и введенное слово со всеми сравнивать — не совпадет ли.
— Все запомнить! И все сравнить! Это же страшная работа!
— Так уж оно получилось. Когда древние славяне создавали русский язык, то совершенно опрометчиво не учли потребности своей «потомочки» Тони, которая захочет заняться программированием. Слов на «мя» раз-два и обчелся, а что ты сказала бы, если бы понадобилось различить такие существительные, как «день» и «ночь», которые оканчиваются на «ь» и относятся к разным склонениям и родам. Опять другого выхода нет, и приходится все их запоминать в массивах, которые на сей раз получились бы куда больше.
— Жуть! Что и говорить.
— Ничего не поделаешь. Что-нибудь менять в русском языке уже поздно. Но ты не думай, что эти сравнения машина будет долго делать. Несколько сот слов она сравнит в один миг.
— Слушай! Что я подумала! А одушевленные и неодушевленные существительные во втором склонении? Как же их различить? Опять все запоминать?
— Можно у пользователя спрашивать — одушевленное это существительное или нет, а если по-честному, то надо запоминать. Многое пришлось бы запоминать, если хочешь сделать программу, склоняющую все имена существительные. Ведь мы же ничего не говорили о склонении во множественном числе. Один только именительный падеж множественного числа чего стоит. Например: сук — сучья, котенок — котята. Так что на быстрый успех не рассчитывай. Лучше подумай о том, как твою программу переделать в обучающую, чтобы она проверяла, как ученики усвоили склонение существительных первого склонения.
— Да? А как сделать, чтобы… ну, чтобы нельзя было заранее знать, какое слово машина будет, например, давать склонять.
— Опять нужно использовать символьные массивы. Ничего не поделаешь, придется в следующий раз о них поговорить.