![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
кол-во подстрок в строке [D7]
Неважно © (2009-11-27 17:39:00)ДД.
Есть строка01hello word01
Необходимо посчитать сколько "подстрок" 01 было в строке.
Есть что-нибудь из 1 команды или только циклом с PosEx ?
Спасибо
Юрий Зотов (2009-11-28 22:23:00) [41]> Ухарь (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:08:00) [42]
> Не занят (28.11.09 20:55) [19]
На АСМе же пишут и ни чО. ;)
DVM (2009-11-28 21:35:00) [43]
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять.
И слава богу, что это так. Меньше шансов допустить ошибку.
> И в многочисленых begin end;
Ну { и } разве что покороче, но их количество не меньше.
@!!ex (2009-11-28 21:32:00) [44]> [20] Ухарь (28.11.09 21:21)
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять. И в многочисленых begin end;
Это дело вкуса.
По мне так почти все перечисленное - скорее минусы.
Пожалуй соглашусь только с тем, что объявление инкремента внутри цикла был бы удобнее.
Ухарь (2009-11-28 21:21:00) [45]
> 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
Дело не в этом.
Пример понятен, но он работает неоптимально. Это по сути трюк
Не занят (2009-11-28 20:55:00) [46]
> _ (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 18:56:00) [47]> Ухарь (28.11.09 15:04) [16]
> Я про громоздкость синтаксиса паскале, если что.
> В частности, синтаксиса циклов
А в чем же громоздкость-то?
DVM (2009-11-28 15:52:00) [48]
> Ухарь (28.11.09 15:04) [16]
Ну ты не обобщая, более "громозок" чем например в си только цикл for
Но в чем громоздкость
while () do
или
repeat
until ()
Ухарь (2009-11-28 15:04:00) [49]
> korneley © (28.11.09 12:34) [14]
Я про громоздкость синтаксиса паскале, если что.
В частности, синтаксиса циклов
_ (2009-11-28 13:23:00) [50]
> В реальной программе такого никогда не написал бы.
Почему?
korneley (2009-11-28 12:34:00) [51]
> Ухарь (28.11.09 11:39) [13]
> Все уже давно придумано, и если бы Вы интересовались темой,
> были бы в курсе.
Как это напоминает "Всё уже украдено до нас" :) И тема разобрана по частям ещё в прошлом веке. Дональд Кнут. "Искусство программирования." Том третий.
Ухарь (2009-11-28 11:39:00) [52]
> korneley © (28.11.09 02:54) [11]
>
>
> > Ухарь (27.11.09 23:23) [10]
> > Недостаток языка это :-(когда такие вещи сложно сделать
> > в одну строчку
>
> Не вопрос. Надо просто придумать язык (и создать для него
> IDE), в котором будет оператор СколькоПодстрокВСтроке()
> Причём кол-во параметров варьируется. Займитесь на досуге.
> Ухарь.
>
Все уже давно придумано, и если бы Вы интересовались темой, были бы в курсе.
korneley (2009-11-28 03:00:00) [53]
> Sha © (27.11.09 21:52) [4]
:))) Сильно и стильно. Но [7] - правильно.
korneley (2009-11-28 02:54:00) [54]
> Ухарь (27.11.09 23:23) [10]
> Недостаток языка это :-(когда такие вещи сложно сделать
> в одну строчку
Не вопрос. Надо просто придумать язык (и создать для него IDE), в котором будет операторСколькоПодстрокВСтроке()Причём кол-во параметров варьируется. Займитесь на досуге. Ухарь.
Ухарь (2009-11-27 23:23:00) [55]Недостаток языка это :-(
когда такие вещи сложно сделать в одну строчку
Игорь Шевченко (2009-11-27 23:00:00) [56]
> Да, но трюкачество все это.
И трюкачество на что-нибудь полезно - если есть лимит по размеру кода, например, или еще какие лимиты.
DVM (2009-11-27 22:09:00) [57]
> Edit3.Text:=IntToStr(Length(StringReplace(Edit1.Text,Edit2.
> Text,Edit2.Text+#0,[rfReplaceAll]))-Length(Edit1.Text));
>
Хитро, но я несколько минут смотрел на это силясь понять что оно делает. :)
Sha (2009-11-27 22:04:00) [58]> Игорь Шевченко
> Хитро :)
Да, но трюкачество все это.
В реальной программе такого никогда не написал бы.
Sha (2009-11-27 21:57:00) [59]Блин, забыл ник поменять, хотел запостить под ником "Ненужно".
Игорь Шевченко (2009-11-27 21:56:00) [60]Sha © (27.11.09 21:52) [4]
Хитро :)
Моей первой мыслью было, что ты убираешь подстроки и вычисляешь, насколько изменилась длина. Тут же смутило отсутствие деления. Пригляделся - совершенно иначе. Хитро, спасибо за науку.