Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Полезное программирование
.pdf
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 экз.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
