Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];
Внизкол-во подстрок в строке Найти похожие ветки
← →
Неважно (2009-11-27 17:39) [0]ДД.
Есть строка01hello word01
Необходимо посчитать сколько "подстрок" 01 было в строке.
Есть что-нибудь из 1 команды или только циклом с PosEx ?
Спасибо
← →
Юрий Зотов © (2009-11-27 18:05) [1]> Есть что-нибудь из 1 команды или только циклом с PosEx?
В стандарте - нет такого. Возможно, есть где-нибудь в сторонних библиотеках, только быстрее и проще сделать цикл с PosEx.
← →
clickmaker © (2009-11-27 18:06) [2]> Есть что-нибудь из 1 команды
"циклом с PosEx - марш!"
← →
sniknik © (2009-11-27 18:18) [3]> быстрее и проще сделать цикл с PosEx.
а без дурацкого ограничения, на - ""только циклом с PosEx" или 1й командой", было бы еще проще.
← →
Sha © (2009-11-27 21:52) [4]> Есть что-нибудь из 1 команды
Конечно :)Edit3.Text:=IntToStr(Length(StringReplace(Edit1.Text,Edit2.Text,Edit2.Text+#0,[rfReplaceAll]))-Length(Edit1.Text));
← →
Игорь Шевченко © (2009-11-27 21:56) [5]Sha © (27.11.09 21:52) [4]
Хитро :)
Моей первой мыслью было, что ты убираешь подстроки и вычисляешь, насколько изменилась длина. Тут же смутило отсутствие деления. Пригляделся - совершенно иначе. Хитро, спасибо за науку.
← →
Sha © (2009-11-27 21:57) [6]Блин, забыл ник поменять, хотел запостить под ником "Ненужно".
← →
Sha © (2009-11-27 22:04) [7]> Игорь Шевченко
> Хитро :)
Да, но трюкачество все это.
В реальной программе такого никогда не написал бы.
← →
DVM © (2009-11-27 22:09) [8]
> Edit3.Text:=IntToStr(Length(StringReplace(Edit1.Text,Edit2.
> Text,Edit2.Text+#0,[rfReplaceAll]))-Length(Edit1.Text));
>
Хитро, но я несколько минут смотрел на это силясь понять что оно делает. :)
← →
Игорь Шевченко © (2009-11-27 23:00) [9]
> Да, но трюкачество все это.
И трюкачество на что-нибудь полезно - если есть лимит по размеру кода, например, или еще какие лимиты.
← →
Ухарь (2009-11-27 23:23) [10]Недостаток языка это :-(
когда такие вещи сложно сделать в одну строчку
← →
korneley © (2009-11-28 02:54) [11]
> Ухарь (27.11.09 23:23) [10]
> Недостаток языка это :-(когда такие вещи сложно сделать
> в одну строчку
Не вопрос. Надо просто придумать язык (и создать для него IDE), в котором будет операторСколькоПодстрокВСтроке()
Причём кол-во параметров варьируется. Займитесь на досуге. Ухарь.
← →
korneley © (2009-11-28 03:00) [12]
> Sha © (27.11.09 21:52) [4]
:))) Сильно и стильно. Но [7] - правильно.
← →
Ухарь (2009-11-28 11:39) [13]
> korneley © (28.11.09 02:54) [11]
>
>
> > Ухарь (27.11.09 23:23) [10]
> > Недостаток языка это :-(когда такие вещи сложно сделать
> > в одну строчку
>
> Не вопрос. Надо просто придумать язык (и создать для него
> IDE), в котором будет оператор СколькоПодстрокВСтроке()
> Причём кол-во параметров варьируется. Займитесь на досуге.
> Ухарь.
>
Все уже давно придумано, и если бы Вы интересовались темой, были бы в курсе.
← →
korneley © (2009-11-28 12:34) [14]
> Ухарь (28.11.09 11:39) [13]
> Все уже давно придумано, и если бы Вы интересовались темой,
> были бы в курсе.
Как это напоминает "Всё уже украдено до нас" :) И тема разобрана по частям ещё в прошлом веке. Дональд Кнут. "Искусство программирования." Том третий.
← →
_ (2009-11-28 13:23) [15]
> В реальной программе такого никогда не написал бы.
Почему?
← →
Ухарь (2009-11-28 15:04) [16]
> korneley © (28.11.09 12:34) [14]
Я про громоздкость синтаксиса паскале, если что.
В частности, синтаксиса циклов
← →
DVM © (2009-11-28 15:52) [17]
> Ухарь (28.11.09 15:04) [16]
Ну ты не обобщая, более "громозок" чем например в си только цикл for
Но в чем громоздкость
while () do
или
repeat
until ()
← →
Юрий Зотов © (2009-11-28 18:56) [18]> Ухарь (28.11.09 15:04) [16]
> Я про громоздкость синтаксиса паскале, если что.
> В частности, синтаксиса циклов
А в чем же громоздкость-то?
← →
Не занят (2009-11-28 20:55) [19]
> _ (28.11.09 13:23) [15]
>
>
> > В реальной программе такого никогда не написал бы.
>
>
> Почему?
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler
← →
Ухарь (2009-11-28 21:21) [20]
> DVM © (28.11.09 15:52) [17]
> Юрий Зотов © (28.11.09 18:56) [18]
Громоздкость например в том, что я не могу объявить переменную прямо по месту - например внутри цикла. И в том, что я обязан описывать ее тип, хотя во многих случаях компилятор мог бы сам это понять. И в многочисленых begin end;
> Не занят (28.11.09 20:55) [19]
>
>
> > _ (28.11.09 13:23) [15]
> >
> >
> > > В реальной программе такого никогда не написал бы.
> >
> >
> > Почему?
>
>
> Any fool can write code that a computer can understand.
> Good programmers write code that humans can understand.
> Martin Fowler
Дело не в этом.
Пример понятен, но он работает неоптимально. Это по сути трюк
← →
@!!ex © (2009-11-28 21:32) [21]> [20] Ухарь (28.11.09 21:21)
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять. И в многочисленых begin end;
Это дело вкуса.
По мне так почти все перечисленное - скорее минусы.
Пожалуй соглашусь только с тем, что объявление инкремента внутри цикла был бы удобнее.
← →
DVM © (2009-11-28 21:35) [22]
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять.
И слава богу, что это так. Меньше шансов допустить ошибку.
> И в многочисленых begin end;
Ну { и } разве что покороче, но их количество не меньше.
← →
_ (2009-11-28 22:08) [23]
> Не занят (28.11.09 20:55) [19]
На АСМе же пишут и ни чО. ;)
← →
Юрий Зотов © (2009-11-28 22:23) [24]> Ухарь (28.11.09 21:21) [20]
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла.
Где бы переменная ни объявлялась, ее объявление все равно присутствует, и поэтому громоздкость кода одинакова. И гораздо удобнее, когда все объявления сосредоточены в одном месте, а не разбросаны по коду.
А уж если рассматривать циклы, то более громозким скорее окажется код на C или Java (где каждый цикл объявляет свой счетчик, тогда как в Delphi он может быть общим для нескольких циклов).
> И в том, что я обязан описывать ее тип, хотя во многих случаях
> компилятор мог бы сам это понять.
Похоже, Вам просто не приходилось писать (и, главное, отлаживать) программы на языках, в которых существуют дефолтные объявления переменных. Иначе отсутствие таких объявлений Вы бы назвали не недостатком, а очень большим достоинством. Как и строгую типизированность.
> И в многочисленых begin end;
Чем оно хуже столь же многочисленных {} - совершенно непонятно. Блок есть блок на любом языке - и на любом языке его начало и конец должны быть как-то обозначены. В этом смысле begin-end даже лучше, чем {} - потому что заметнее и поэтому делают код более читабельным.
====================
К вопросу о громоздкости - просто убивает огромное количество лишних скобок в java. Читабельность кода резко снижается. Например:
1. Вызов функции без параметров. Компилятор и так знает, что вызывается функция, и что она без параметров - так на фига же ему еще () нужны?
2. if (логическое_выражение) оператор;
На фига логическое выражение заключать в скобки? Синтаксис и без них однозначен.
3. try {...} catch {...} finally {...};
Во всех секциях {} - лишние. Синтаксис однозначен и без них.
и т.п.
======================
Моя любимая фича из серии "на фига нам такая краткость?".
public int sum(int x, int y) {
return x + y;
}
public int func() {
int i = 1;
return func(i, i++);
}
Вопрос - что вернет func?
Как только на него ответите, так тут же и поймете, что сокращения типа ++ или -- более вредны, нежели полезны. Гораздо лучше написать "громоздкое"i := i + 1
, но с абсолютно предсказуемым результатом.
← →
Юрий Зотов © (2009-11-28 22:26) [25]Опечатка: конечно,
return sum
, а неreturn func
.
← →
Не занят (2009-11-28 22:28) [26]
> Дело не в этом.
> Пример понятен, но он работает неоптимально. Это по сути
> трюк
С неоптимально не спорю. Но не хотелось бы встречаться с таким "понятным" кодом в работе. Вот тоже неоптимальный, но мне такой намного понятнее.Result := 0;
function CountOf...
while Pos(subStr, str) > 0 do
begin
Inc(Result);
Replace(str, subStr, "");
end;
// sorri за мой Delphi...
← →
Не занят (2009-11-28 22:32) [27]
> _ (28.11.09 22:08) [23]
>
>
> > Не занят (28.11.09 20:55) [19]
>
>
> На АСМе же пишут и ни чО. ;)
>
Delphi не для этого...
← →
Не занят (2009-11-28 22:41) [28]
> 1. Вызов функции без параметров. Компилятор и так знает,
> что вызывается функция, и что она без параметров - так
> на фига же ему еще () нужны?
>
А я не знаю, я хочу читать код и сразу видеть что ShowModal() это вызов метода, показывающего форму, а не просто проверка свойства ПоказыватьКогдаНибудьПотомМодально.
← →
DVM © (2009-11-28 22:43) [29]
> 2. if (логическое_выражение) оператор;
> На фига логическое выражение заключать в скобки?
тоже всегда интересовало, зачем так.
← →
Anatoly Podgoretsky © (2009-11-29 00:21) [30]
> К вопросу о громоздкости - просто убивает огромное количество
> лишних скобок в java. Читабельность кода резко снижается.
> Например:
Аполитично рассуждаешь, это не для программиста, а для языка и производно для компилятора строителя. Им так легче было строить, а программисты - лишнее, паразитическое звено.
← →
korneley © (2009-11-29 03:11) [31]
> Anatoly Podgoretsky © (29.11.09 00:21) [30]
> ...а программисты - лишнее, паразитическое звено.
Эт, точно... (с) тов. Сухов. Нафига они (программисты) вообще нужны? Только проблемы создают: "это не работает, тут не оптимально..." :))
← →
Германн © (2009-11-29 03:37) [32]
> korneley © (29.11.09 03:11) [31]
>
>
> > Anatoly Podgoretsky © (29.11.09 00:21) [30]
> > ...а программисты - лишнее, паразитическое звено.
>
> Эт, точно... (с) тов. Сухов. Нафига они (программисты) вообще
> нужны? Только проблемы создают: "это не работает, тут не
> оптимально..." :))
Уж как я с этим согласен! Ты, Михалыч, даже не подозреваешь!
:)
← →
korneley © (2009-11-29 03:43) [33]
> Германн © (29.11.09 03:37) [32]
Одна беда: без работы останусь :))) Хотя можно, конечно, по методу О. Бендера переквалифицироваться в дворники. Кстати! Не знаю, что лучше...
← →
korneley © (2009-11-29 03:51) [34]И вообще: "Смерть эксплуататорам и программистам!" (с) И.Охлобыстин, Р.Качанов, к/ф "Даун Хаус"
← →
Игорь Шевченко © (2009-11-29 04:04) [35]
> И гораздо удобнее, когда все объявления сосредоточены в
> одном месте, а не разбросаны по коду.
Вообще-то неудобнее, но это от Вирта пошло, за что ему долго будет икаться.
Паскаль по сравнению с С более строгий, но и более громоздкий.
← →
korneley © (2009-11-29 04:31) [36]
> Игорь Шевченко © (29.11.09 04:04) [35]
Эээ, батенька ;) "Громоздкий" = "Менее удобный"? Если да, то кому? В конце концов: "Вам шашечки, или ехать?" И в Паскале с кучами можно такого начудить, что Си за счастье будет. Вот я - за строгую типизацию и предварительное объявление переменных. Правда... "Но этот пес не чужд парадоксов: Он влюблен в этих женщин, И с его точки зренья он прав." :) По разному бывает :)))
← →
korneley © (2009-11-29 04:38) [37]Увлёкся, в "по-разному", дефис пропустил :(
← →
Anatoly Podgoretsky © (2009-11-29 12:12) [38]> korneley (29.11.2009 03:43:33) [33]
Конечно дворник, голова не болит и с лицензиями на инструмент просто, в любом орешнике.
← →
Игорь Шевченко © (2009-11-29 20:44) [39]korneley © (29.11.09 04:31) [36]
Просто громоздкий. Об удобстве я речь не вел, по мне так удобный, а то, что нельзя переменную по месту использования в локальном блоке объявлять - так это неудобно. Но не переписывать же из-за этого компилятор, верно ?
← →
Alx2 © (2009-11-29 21:38) [40]Юрий Зотов © (28.11.09 22:23) [24]
А уж если рассматривать циклы, то более громозким скорее окажется код на C или Java (где каждый цикл объявляет свой счетчик, тогда как в Delphi он может быть общим для нескольких циклов).
Но ведь С++ и Java не требуют объявления своего счетчика для каждого цикла.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.007 c