goto - с любимыми не расставайтесь, или break не тащит

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Ответить
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

Seenkao писал(а):По идее это вообще ни кому нафиг не надо. Большинство уложатся в разумные пределы массива.

Вот-вот, и ты сам привёл такие (несуществующие) массивы с размерами, не поддерживаемыми индексом for'а, как довод в пользу goto.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

Seenkao писал(а):думаю дальше продолжать не надо

Да как скажешь, общение с тобой - занятие так себе, пожалуй, в будущем можно от этого воздержаться.
Seenkao писал(а):Одно то, что её запускаешь и она без ошибок запускается, показывает, что наобум ты программу написать не можешь.

Ну, сознаюсь, грешен, наобум не могу. А ты, засчитыватель, и правда сумел её запустить?
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

runewalsh писал(а):Ты так говоришь «только», будто 99,99999% кода в мире — твои (и используют goto вместо while), а не наоборот.

Когда я пишу, примерно так и есть.
runewalsh писал(а):Не-не-не, речь шла про *сортировку массива* (более того, *пузырьком*) Перечитай сам себя:

Сквозняк писал(а):
Прицепились к этому пузырьку, который представляет собой квадратичную функцию с обработкой исключений через goto. А если сортировать массивы с длиной int64, то для компиляции в 32 бита циклы for придётся заменять на циклы goto.


Cортировку массива во внешнем хранилище ты будешь делать другими алгоритмами, чем сортировку массивов в памяти со случайным доступом.

Цикл for прекрасно натягивается и на внешний массив, нужно только чтобы внутри у него адреса преобразовывались. Вам нужен был пузырёк? Вот он и есть. А если будет не пузырёк, то почему там не должно быть цикла for? Опять же, сортировка пузырьком может быть не всего терабайтного массива, а его частей, где цикл for рулит и педалит. Моя твоя не понимай.
Seenkao
энтузиаст
Сообщения: 568
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

runewalsh писал(а):и ты сам привёл такие (несуществующие) массивы с размерами,
это был не я )))
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

Да, я уже заметил. Ну путаю вас, сорь. Мне в любом случае надоело.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

runewalsh писал(а):Да, я уже заметил. Ну путаю вас, сорь. Мне в любом случае надоело.

а что за волшебница на аватаре, с ноткой?
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

скалогрыз
Это моя предпочитаемая внешность персонажа игрока из Elona+, он в начале игры собирается из составляющих (пол, причёска, одежда, аксессуары, цвет кожи и остального). Нота означает радость либо опьянение.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

runewalsh писал(а): из Elona+

понятно, а я всё безуспешно пытался угадать :)
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Читать такое на форуме по Паскалю, по крайней мере, очень странно. :shock:
мимо_проходил
незнакомец
Сообщения: 9
Зарегистрирован: 09.11.2020 10:11:09

Сообщение мимо_проходил »

Сквозняк писал(а):можете добавлять в вики.

Лучше сразу на govnocod.ru, вангую оглушительный успех.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

мимо_проходил писал(а):
Сквозняк писал(а):можете добавлять в вики.

Лучше сразу на govnocod.ru, вангую оглушительный успех.

И что характерно, код считающийся расово правильным, с классами вместо гото, является исключительно токсичным, нечитаемым и с глюками, которые проще обойти костылями чем исправить. Например, в лазарусе, в дочерней форме, в событии "формкреате" ставишь размеры этой формы и при при её запуске - хрясь, ошибка. Зато если эти же параметры поменять из родительской формы, то ничего не падает. Вот где говнокод - в классах, а то, что написано с гото, работает одинаково хорошо при любой погоде и стек не рушит. Потому критически важные вещи лучше писать через гото.
мимо_проходил
незнакомец
Сообщения: 9
Зарегистрирован: 09.11.2020 10:11:09

Сообщение мимо_проходил »

Сквозняк писал(а):Вот где говнокод - в классах

Не перекладывай с больной головы на здоровую. Речь не о классах, а о твоей "пузырьковой"(лучше сказать пупырьковой) сортировке, эпизод номер раз:

Код: Выделить всё

PROCEDURE BUBLESORT1(VAR BB3: ARRAY OF BYTE);//СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ
VAR
Q3: BYTE;
A2,S2,D2: LONGINT;
LABEL
100;
BEGIN
S2:=LENGTH(BB3);
IF S2<2 THEN GOTO 100;
IF S2=2 THEN BEGIN
   IF BB3[1]<BB3[0] THEN BEGIN
      Q3:=BB3[1];
      BB3[1]:=BB3[0];
      BB3[0]:=Q3;
                         END;
   GOTO 100;
             END;
S2:=S2-2;
FOR D2:=0 TO S2 DO
  FOR A2:=0 TO S2 DO IF BB3[A2]>BB3[A2+1] THEN BEGIN
      Q3:=BB3[A2+1];
      BB3[A2+1]:=BB3[A2];
      BB3[A2]:=Q3;
                                               END;
100:
END;

Всё, что выше первого for - просто мусор, выкинем его:

Код: Выделить всё

PROCEDURE BUBLESORT1(VAR BB3: ARRAY OF BYTE);//СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ
VAR
Q3: BYTE;
A2,D2: LONGINT;
BEGIN
FOR D2:=0 TO LENGTH(BB3)-2 DO
  FOR A2:=0 TO LENGTH(BB3)-2 DO IF BB3[A2]>BB3[A2+1] THEN BEGIN
      Q3:=BB3[A2+1];
      BB3[A2+1]:=BB3[A2];
      BB3[A2]:=Q3;
                                               END;
END;

Что касаемо вложенных for - пузырёк - сортировка, конечно, непрактичная, но на отсортированных данных она отработает за O(N).
Твой пупырёк на любых данных работает за O(N^2).
Словом, однозначно имеет смысл попытать с ним счастья на вышеуказанном ресурсе.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Сквозняк
При чем тут классы? это особенность реализации. "формкреате" вызывается когда форма еще недоконца создана, нефиг там ее размеры ковырять. на других виджсетах ошибки скорее всего небудет
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

мимо_проходил писал(а):Что касаемо вложенных for - пузырёк - сортировка, конечно, непрактичная, но на отсортированных данных она отработает за O(N).
Твой пупырёк на любых данных работает за O(N^2).


Вот что интересно у математиков, так это их способность нести чушь с серьёзным выражением лица и искренне в неё веровать. Как свою математическую теорию измерять то собрался? Её доказательство находится в пределах погрешности измерений. У математиков обычно с логикой проблема, об этом ещё Блёз Паскаль писал. Человек дружащий с логикой поостерёгся бы фразы " на любых данных". Внезапно, бывают задачи, на которых нужно сортировать массивы, длина которых редко доходит до полусотни, даже до четверти редко доходит. Соответственно, квадратичный цикл выполняется быстро. Но не только его время нужно считать, но и затраты системы на разворачивание в рабочее состояние сортировальной машины - выделение ресурсов, возврат ресурсов в систему. Одни загрузки выжрут сколько-то времени и машинных мощностей. И вместе с накладными расходами алгоритм с лишним кодом может быть медленнее, особенно, если выполняется на менее крутом железе и других системных библиотеках. А если будет задача с большими данными, тогда под неё алгоритм оптимизируется, добавятся ускорители, которые на коротких массивах неэффективны, или другая сортировка применится. А тот алгоритм что я написал - базовый и не содержит ни указателей, ни классов, ни вызовов сторонних функций, которые и произведут всю сортировку.
Ответить