Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Полезное программирование

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
result:=newS; end; {----------------------------------------------------------} function Empty( S : string) : boolean; var i : integer;
begin
result:=true; for i:=1 to Length(S) do if S[i] <> ‘ ‘ then begin result:=false; Break; end; end; {----------------------------------------------------------} function DeleteWord( S : string; nomer : integer) : string; var num : integer; inWord : boolean; found : boolean; theWord : string; theEnd : integer; i : integer;
begin
S:=TrimSpaces(S); num:=0; inWord:=false; found:=false; theWord:=’’; theEnd:=Length(S); for i:=1 to Length(S) do begin if S[i] = ‘ ‘ then begin inWord:=false; if found then begin theEnd:=i-1; Break; end; end else begin if not inWord then Inc(num); inWord:=true; if num = nomer then found:=true; if found then theWord:=theWord + S[i];
end;
end;
251Простенький модуль для работы со строками. Простой, но очень полезный
252 Приложения. Справочник обо всём
Delete( S, 1, theEnd);
result:=S; end; {----------------------------------------------------------}
function Flatten( stroka : string) : string; begin
result:=Trim( AnsiLowerCase(stroka)); end; {----------------------------------------------------------} function WINstr( wStr : string) : boolean; var nANSI, nOEM : integer; ordStr : integer; i : integer;
begin
result:=true;
nANSI:=0; nOEM:=0;
for i:=1 to Length(wStr) do begin ordSTR:=Ord(wStr[i]);
if ((ordStr >= 128) and (ordStr <=175)) or ((ordStr >= 224) and (ordStr <=241)) then Inc(nOEM); if ((ordStr >= 192) and (ordStr <= 255)) {or ((ordStr >= 142) and (ordStr <= 255))} then Inc(nANSI); end;
if nOEM > nANSI then result:=false; end; {----------------------------------------------------------}
function IsEngChar( ch : char) : boolean; begin
result:=((ch>=’A’) and (ch<=’Z’)) or ((ch>=’a’) and (ch<=’z’)) end; {----------------------------------------------------------}
end.
Задания для самостоятельного
развития
Сначала обязательная программа. По одному заданию на каждую главу.
1. Найдите в интернетах картину «Масленица», автор то ли Куклин, то ли
Окуклин. Если долго смотреть на картину, можно заболеть той же болез-
нью, что и автор. Угадайте, какой именно болезнью. Об этом вас обязатель-
но спросят на собеседовании. Говорят, правильному психиатру для пра-
вильного ответа достаточно надеть белый халат.
2. Нарисуйте график чего-то действительно нетрадиционного. Необязатель-
но ведь на вход поступают именно числа, в смысле просто действительные
числа. А если мы сейчас живём в учебнике функций комплексного пере-
менного? Необходимо ли для этого 3D отображение? И достаточно ли для
этого 3D отображения? А если и аргумент и значение являются множе-
ствами?
3. Напишите объект — генератор знаков числа π неограниченной точности.
Найдите индекс, с которого начинается номер вашего телефона. Если не
нашли, придумайте правдоподобное объяснение, почему не нашли. Этот
навык пригодится вам в общении с руководством.
4. А если нужно хранить данные по напольным весам индивидуально для
каждой квартиры? Для каждого дома? Для района? Для всего города? На
каком этапе сломается текущая версия вашей программы? На каком этапе
вы задумаетесь?
5. Осмотрите по часовой стрелке ваших коллег, сотрудников и подчинённых.
Вычислите, кто из них больше всех будет сопротивляться внедрению VSS.
Внедрите. Убедитесь в своей правоте. Запишите фамилии в блокнотик.
6. На всяком ли языке программирования можно написать динамическую
библиотеку? Найдите язык, на котором нельзя. Докажите. А теперь напи-
шите на нём библиотеку и докажите, что были неправы.
7. Что-то я задумался. Опыты по измерению скорости сортировки я проводил
над массивом из ста тысяч элементов, случайным образом заполненным.
И это правильно. А что, если взять массив из ста тысяч, а лучше из ста мил-
лионов элементов, но с самого начала правильно упорядоченных? Какая
сортировка будет эффективнее? Из теории мы знаем, что если элементы
почти упорядочены, то сортировка Шелла выбывает из соревнования.
Проверьте.
254 Задания для самостоятельного развития
8. Прочтите внимательно:
М.Р.Шура-Бура, В.С.Штаркман «Вычислительная машина М-20. Ин­струкция по математической эксплуатации», М, 1962
Запрограммируйте крестики-нолики. На худой конец — обход шахматным
конем всех клеток шахматной доски без повторений. Это возможно. Вы справи­тесь.
9. Очень простое задание. Найдите книгу
А.Е.Ферсман «Занимательная геохимия», Издательство Академии наук СССР, Москва, 1959
Это то издание, которое я с полпинка нашёл, как сейчас принято говорить, в
электрическом Интернете. Когда я был маленький я читал издание примерно со­рок девятого года. Нет, я не настолько старый. Вот такие книги были тогда в би­блиотеках. Впрочем, год выпуска абсолютно неважен, потому что академик Ферс­ман умер в сорок пятом году, оставив книгу в набросках и черновиках. Дописали книгу неизвестные писатели. В смысле, неизвестно, были ли они писателями.
Как результат — книга ни разу не занимательная, с Перельманом («Занима-
тельная физика», «Занимательная геометрия и далее по списку) не сравнить. Не сравнить даже с книгой того же Ферсмана «Занимательная минералогия».
А зачем здесь эта книга? Сама книга для наших целей не очень интересна, зато
интересно приложение к ней под названием «Геохимик в поле». Прочитайте, там немного страниц. Подумайте.
А теперь о главном. То есть, о математике. В Университете, где я учился, есть
человек, доказавший, что нечёиных совершенных чисел не бывает. Я об этом уз­нал из городской версии Комсомольской Правды. Тянет ли это открытие на Но­белевку, или на что там Перельман плюнул и растёр? Тянет ли это на доктор­скую? Почему этого человека не любят в Университете?
10. Объедините всё вместе, все три задачи — бредогенератор, поиск скрытого
смысла и выбор ближайшего слова. Вы вводите инструкции для бредогене-
ратора с орфографическими ошибками, по принципу — как слышится, так
и пишется. Отвлекитесь, изучите технологию ввода в компьютер японских иероглифов.
Узнайте, какие преимущества японский ввод в компьютер даёт малограмотным японцам и гайдзинам (уточните значение этого слова и является ли оно в Япо­нии матерным). Выясните, почему у китайцев с этим проблемы, завидуют ли они японцам, и как это может влиять на межнациональные отношения.
Скорректируйте текст с помощью технологии поиска ближайшего слова. Вы-
бирать слово лучше из словаря языка с кириллицей, но не очень русского. По­пробуйте болгарский или монгольский. Найдите в этом тайный смысл.
Обязательная программа закончена, теперь произвольная.
1. Запрограммируйте этот ряд, по возможности, не ругаясь матом. Говорят,
он очень быстро сходится. Это вас утешит. Канадские математики Джонатан и Питер Борвейны в 1987 году нашли уди-
вительный ряд:
2. Нарисуйте в графике Turbo Pascal версии 5.5 ваше видение отказа Перель-
мана от кучи денег. Деньги покрасить зелёным цветом. Перельмана изо-
бразить в кипе, с пейсами, с оседельцем и в кокошнике одновременно. Для
перехода на следующий уровень программистского мастерства обязатель-
но дорисовать balalaika, домашний medved и samovar с vodka. Для высшего
уровня — водка должна кипеть. Полезная ссылка http://www.luth.org/web_extras/Flynn_Balalaika-GAL.pdf
3. Запрограммируйте, в конце концов, функцию для вычисления функции
Дирихле. Без матов, но рекурсивно.
255Простенький модуль для работы со строками. Простой, но очень полезный
4. Путём статистического анализа докажите, что все сочинения Шолохова
написал Солженицин, а все манускрипты Солженицина — Шолохов. Путём Гугля выясните, кто все эти люди, упомянутые в предыдущем пункте —
Щолохов, Манускрипт и Солженицин.
5. Напишите эмулятор М-20 на IBM PC или под Windows, как вам больше
нравится формулировать. Легко? А теперь наоборот! А вы что хотели?
Комлев Николай Юрьевич
Полезное программирование
Ответственный за выпуск:
В. Митин
Верстка и обложка:
СОЛОН-Пресс
По вопросам приобретения обращаться:
ООО «СОЛОН-Пресс»
123001, г. Москва, а/я 82
Телефоны: (495) 617-39-64, (495) 617-39-65
E-mail: kniga@solon-press.ru, www.solon-press.ru
Оптовые закупки
ООО КТК «Галактика»
115487, г. Москва, проспект Андропова, д. 38
Телефоны: (499) 782-38-89
E-mail: books@alians-kniga.ru, hhttps://www.galaktika-dmk.com/
По вопросам подписки на журнал «Ремонт & Сервис» обращаться:
ООО «СОЛОН-Пресс»
тел.: (495) 617-39-64, www.remserv.ru
ООО «СОЛОН-Пресс»
115487, г. Москва,
пр-кт Андропова, дом 38, помещение № 8, комната № 2.
Формат 70×100/16. Объем 16 п. л. Тираж 20 экз.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]