<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1837906</guid>
        <pubDate>Wed, 16 Jan 2008 18:49:45 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1837906</link>
        <description><![CDATA[amk: Возможно когда-то (в Древнем Риме) использовались оба обозначения, но сейчас общепринятым является только левый<br>В принципе и VC можно понимать как 95, но так не пишут (пишут XCV)]]></description>
        <author>amk</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1837071</guid>
        <pubDate>Wed, 16 Jan 2008 08:09:39 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1837071</link>
        <description><![CDATA[LuckLess: XCIX == IC ?:P]]></description>
        <author>LuckLess</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1833570</guid>
        <pubDate>Sun, 13 Jan 2008 10:46:01 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1833570</link>
        <description><![CDATA[Smike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1833211'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-12T19:57:56+00:00">12.01.08, 19:57</time></span><div class='quote '>Кстати, если кто не знает, число 99 можно написать не только как &#39;XCIX&#39;, но и как и как &#39;IC&#39;, а 8 как &#39;IIX&#39;, а не только &#39;VIII&#39;.</div></div><br>
Известно, но также известно, что такой способ записи не соответствует каноничным правилам и не рекомендуется. Да и не один из вышеприведенных алгоритмов этого не реализует. Можно конечно сделать, но это будет нерационально, так как придется вместо<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">with Roman[I + Ord(Odd(I)) + 1] do</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Прогонять по циклу через все цифры, меньше текущей.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1833211'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-12T19:57:56+00:00">12.01.08, 19:57</time></span><div class='quote '>А ты уверен, что твоя программа правильно в римское представление числа выводит?</div></div><br>
Последний вариант (пост №136) работает абсолютно идентично варианту с GOTO и с 2 циклами на числах до 1 000 000.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1833211'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-12T19:57:56+00:00">12.01.08, 19:57</time></span><div class='quote '>4, 9, 14, 99</div></div><br>
IV, IX, XIV, XCIX]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1833211</guid>
        <pubDate>Sat, 12 Jan 2008 19:57:56 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1833211</link>
        <description><![CDATA[amk: <strong class='tag-b'>Smike</strong><br>
А ты уверен, что твоя программа правильно в римское представление числа выводит?<br>
Как, например, она выписывает числа 4, 9, 14, 99?<br>
<br>
Кстати, если кто не знает, число 99 можно написать не только как &#39;XCIX&#39;, но и как и как &#39;IC&#39;, а 8 как &#39;IIX&#39;, а не только &#39;VIII&#39;.<br>
Но это не совсем стандартные варианты, особенно с восьмеркой.]]></description>
        <author>amk</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1832018</guid>
        <pubDate>Fri, 11 Jan 2008 12:26:04 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1832018</link>
        <description><![CDATA[Smike: Скомпилил с оптимизацией - разницы практически нет. У оптимизированного варианта чуть-чуть больше преимущество :)]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831991</guid>
        <pubDate>Fri, 11 Jan 2008 12:15:08 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831991</link>
        <description><![CDATA[Бобёр: хм.. на вид ошибка небольшая, но алгоритмически очень важная :)]]></description>
        <author>Бобёр</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831949</guid>
        <pubDate>Fri, 11 Jan 2008 11:53:57 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831949</link>
        <description><![CDATA[Smike: Ага, есть ошибка. Но небольшая. И её исправление ощутимо не влияет на скорость.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function IntToRomanOptimized(Value: Longint): string;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TRomanRec = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;Symbol: Char;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Amount: Word;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;// Отмеченные &quot;+&quot; элементы используются для уменьшения предыдущих значений,</div><div class="code_line">&nbsp;&nbsp;// все они на нечетных местах </div><div class="code_line">&nbsp;&nbsp;Roman: array [1..7] of TRomanRec = (</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;M&#39;; Amount: 1000), &nbsp;// 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;D&#39;; Amount: &nbsp;500), &nbsp;// 2</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;C&#39;; Amount: &nbsp;100), &nbsp;// 3 +</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;L&#39;; Amount: &nbsp; 50), &nbsp;// 4</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;X&#39;; Amount: &nbsp; 10), &nbsp;// 5 +</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;V&#39;; Amount: &nbsp; &nbsp;5), &nbsp;// 6</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;I&#39;; Amount: &nbsp; &nbsp;1) &nbsp; // 7 +</div><div class="code_line">&nbsp;&nbsp;);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;I: Integer;</div><div class="code_line">&nbsp;&nbsp;R: TRomanRec; &nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for I := Low(Roman) to High(Roman) do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;R := Roman[I];</div><div class="code_line">&nbsp;&nbsp; &nbsp;if Value &#62;= R.Amount then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := Result + StringOfChar(R.Symbol, Value div R.Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Dec(Value, Value div R.Amount * R.Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if R.Amount &#62; 1 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;with Roman[I + Ord(Odd(I)) + 1] do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if Value &#62;= R.Amount - Amount then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := Result + Symbol + R.Symbol;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Dec(Value, R.Amount - Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-01-11T11:56:12+00:00">11.01.08, 11:56</time></span></span><br>
Сравнивал на числах до миллиона. Файлы выходят идентичные. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-01-11T11:57:47+00:00">11.01.08, 11:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>LuckLess &#064; <time class="tag-quote__quoted-time" datetime="2008-01-11T11:31:14+00:00">11.01.08, 11:31</time></span><div class='quote '>зачем :blink: ? </div></div><br>
Для отладки. Сейчас попробую с оптимизацией, в релизной конфигурации. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-01-11T11:59:48+00:00">11.01.08, 11:59</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>LuckLess &#064; <time class="tag-quote__quoted-time" datetime="2008-01-11T11:31:14+00:00">11.01.08, 11:31</time></span><div class='quote '>А потом програмно и сравнивай - ищи отличия. </div></div><br>
Так неудобно. А я сохранил 3 текстовых файлика, потом скормил их Total Commander и сразу увидел различия, после чего быстро нашел и исправил ошибку.]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831927</guid>
        <pubDate>Fri, 11 Jan 2008 11:31:14 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831927</link>
        <description><![CDATA[LuckLess: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-11T11:03:15+00:00">11.01.08, 11:03</time></span><div class='quote '>Сейчас попробую еще в файл вывод сделать и сравнить.<br>
</div></div><br>
зачем в файл..<br>
просто результаты выполнения каждой функции сохраняй гденить. А потом програмно и сравнивай - ищи отличия. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-01-11T11:53:04+00:00">11.01.08, 11:53</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-11T11:03:15+00:00">11.01.08, 11:03</time></span><div class='quote '>Кстати, оптимизация была отключена.</div></div><br>
зачем  :blink: ?]]></description>
        <author>LuckLess</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831865</guid>
        <pubDate>Fri, 11 Jan 2008 11:03:15 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831865</link>
        <description><![CDATA[Smike: Ну, несколько тестовых примеров прогнал - полет нормальный. Сейчас попробую еще в файл вывод сделать и сравнить.<br><br>Кстати, оптимизация была отключена.<br><br>А ускорение в первую очередь за счет того что символы добавляются StringOfChar, она работает в разы быстрее, чем цикл, так как написана на асме.]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831817</guid>
        <pubDate>Fri, 11 Jan 2008 10:39:49 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831817</link>
        <description><![CDATA[Бобёр: погодь.. а твоя ускоренная процедура точно работает правильно?.. какое то подозрительное ускорение то.<br>и опять таки, супротивники там чего то про неоптимизируюищие компиляторы говорили.. только вот где их взять то, неоптимизирующие?]]></description>
        <author>Бобёр</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831708</guid>
        <pubDate>Fri, 11 Jan 2008 09:46:11 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831708</link>
        <description><![CDATA[Smike: Провел бенчмарк. Да, функция без GOTO работает дольше, примерно на 30%. Но я не долго думая написал более оптимизированный вариант:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function IntToRomanOptimized(Value: Longint): string;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TRomanRec = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;Symbol: Char;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Amount: Word;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;// Отмеченные &quot;+&quot; элементы используются для уменьшения предыдущих значений,</div><div class="code_line">&nbsp;&nbsp;// все они на нечетных местах </div><div class="code_line">&nbsp;&nbsp;Roman: array [1..7] of TRomanRec = (</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;M&#39;; Amount: 1000), &nbsp;// 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;D&#39;; Amount: &nbsp;500), &nbsp;// 2</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;C&#39;; Amount: &nbsp;100), &nbsp;// 3 +</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;L&#39;; Amount: &nbsp; 50), &nbsp;// 4</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;X&#39;; Amount: &nbsp; 10), &nbsp;// 5 +</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;V&#39;; Amount: &nbsp; &nbsp;5), &nbsp;// 6</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Symbol: &#39;I&#39;; Amount: &nbsp; &nbsp;1) &nbsp; // 7 +</div><div class="code_line">&nbsp;&nbsp;);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;I: Integer;</div><div class="code_line">&nbsp;&nbsp;R: TRomanRec; &nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for I := Low(Roman) to High(Roman) do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;R := Roman[I];</div><div class="code_line">&nbsp;&nbsp; &nbsp;if Value &#62;= R.Amount then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := Result + StringOfChar(R.Symbol, Value div R.Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Dec(Value, Value div R.Amount * R.Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if R.Amount &#62; 1 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;with Roman[I + Ord(Odd(I)) + 1] do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if Value &#62;= R.Amount - Amount then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := Result + Symbol + R.Symbol;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Dec(Value, R.Amount - Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
Так вот, этот вариант работает быстрее в арифметической прогрессии :)<br>
На 100 000 итераций он быстрее в 2 раза, чем с GOTO<br>
На 200 000 - в 3 раза<br>
На 300 000 - в 4 раза<br>
На 400 000 - в 5 раз<br>
...<br>
На 1 000 000 - в 13 раз&#33;<br>
<br>
В структурном программировании сила. :yes: GOTO - в могилу&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2008-01-11T10:13:00+00:00">11.01.08, 10:13</time></span></span><br>
ЗЫ: под итерациями подразумевается преобразование в римскую систему счисления чисел от единицы до количества итераций отсюда и скорость, потому что числа становятся все время длиннее.]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831530</guid>
        <pubDate>Fri, 11 Jan 2008 08:07:18 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831530</link>
        <description><![CDATA[Smike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831202'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T18:28:23+00:00">10.01.08, 18:28</time></span><div class='quote '>пару часов</div></div><br>
 :lol: Я перевел минут за 10. Ну может за 20.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831202'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T18:28:23+00:00">10.01.08, 18:28</time></span><div class='quote '>а по-тупому переписал все минут за пятнадцать как было</div></div><br>
Сомневаюсь. Набрать такой текстик за такое время сложновато. Даже копипастом. А потом проверить, отладить. Ужас.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1831202'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T18:28:23+00:00">10.01.08, 18:28</time></span><div class='quote '>Можешь сам попробовать перевести с миллион так чисел &quot;уродливым&quot; алгоритмом и своим и посмотреть какой быстрее </div></div><br>
Это мысль&#33; :rolleyes:]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831202</guid>
        <pubDate>Thu, 10 Jan 2008 18:28:23 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1831202</link>
        <description><![CDATA[amk: Эту функцию поддерживать уже не нужно. И читать даже не обязательно. Один раз запихнул в библиотекуу и пользуйся.<br>
Или вы думаете, что на запись римских чисел время от времени новые стандарты выходят?<br>
<br>
А код и в оригинале не так эффективен, каким мог бы быть. Совершенно не учитывается возможная встречаемость этих чисел. Я бы в начало еще строк несколько добавил, чтобы сперва диапазон определить, хотя бы до степени десятки.<br>
<br>
И вполне может быть что он именно переведен либо действительно с бейсика или даже с фортрана. И тот кто переводил здраво рассудил, что от добра добра не ищут, и не стал заморачиваться тем, как ему пару часов убить на то, чтобы от goto избавиться, а по-тупому переписал все минут за пятнадцать как было. Может только метки поменял, чтобы самому понятнее было, хотя они и в оригинале скорее всего такими были.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830240'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T08:23:43+00:00">10.01.08, 08:23</time></span><div class='quote '>Где бенчмарк?</div></div> А как я его тебе сделаю? У меня паскаля уже лет пятнадцать, как не стояло. Можешь сам попробовать перевести с миллион так чисел &quot;уродливым&quot; алгоритмом и своим и посмотреть какой быстрее]]></description>
        <author>amk</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830951</guid>
        <pubDate>Thu, 10 Jan 2008 14:58:23 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830951</link>
        <description><![CDATA[Бобёр: ну, вариант с goto непонятно для кого писался, поддерживать такое я не взялся бы.<br>во-первых: процедура не умещается на экран, во-вторых: странные ветвления, её спасает только то, что спецификация римской записи не производится каждые полгода :whistle:]]></description>
        <author>Бобёр</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830646</guid>
        <pubDate>Thu, 10 Jan 2008 12:48:00 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830646</link>
        <description><![CDATA[Smike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830498'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Бобёр &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T11:39:15+00:00">10.01.08, 11:39</time></span><div class='quote '>охоспади, застрелил бы &quot;аффтора&quot;, чесслово. </div></div><br>
Такое впечатление, что она переведена с какого-то раннего бейсика для спектрума. :yes: А переводивший решил не морочить голову переписыванием её на нормальный язык. А зря, времени на писанину не пришлось бы столько тратить ;)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830597'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T12:27:48+00:00">10.01.08, 12:27</time></span><div class='quote '>При том, что твой пример мне не кажется &quot;уродливым&quot;.</div></div><br>
Обоснуй. В моем примере 3 строчки кода (не считая управляющих конструкций и данных). Разобраться в них элементарно просто. Расширить - раз плюнуть, наращиваем только массив. А в коде с goto? Да там с пивом и за день можно не разобраться, от чего он вдруг стал глючить.<br>
<br>
<strong class='tag-b'>Вопрос в лоб: какой фрагмент кода лучше? С GOTO или без? Дождемся от тебя примеров &quot;читаемого и оптимизированного кода с GOTO&quot;?</strong><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830597'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T12:27:48+00:00">10.01.08, 12:27</time></span><div class='quote '>Ничем я не кидаюсь, это раз.</div></div><br>
А это что:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830597'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T12:27:48+00:00">10.01.08, 12:27</time></span><div class='quote '>Не подтвердил.</div></div><br>
?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830597'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T12:27:48+00:00">10.01.08, 12:27</time></span><div class='quote '>Аргументировать бессмысленно, так как у нас противоположные взгляды на один и тот же код, это два. </div></div><br>
Аргумент, если это действительно аргумент, способен убедить любого. А если это фразы типа &quot;венда-слюникс ацтой&quot;, &quot;не убедил&quot;, &quot;не подтвердил&quot;, &quot;о вкусах не спорят&quot;, то конечно доказать ничего не удастся. :D]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830597</guid>
        <pubDate>Thu, 10 Jan 2008 12:27:48 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830597</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830240'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T08:23:43+00:00">10.01.08, 08:23</time></span><div class='quote '>Причем тут комплексы?</div></div><br>
<br>
При том, что твой пример мне не кажется &quot;уродливым&quot;.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830240'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T08:23:43+00:00">10.01.08, 08:23</time></span><div class='quote '>Я лишь подтвердил</div></div><br>
<br>
Не подтвердил.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1830240'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-10T08:23:43+00:00">10.01.08, 08:23</time></span><div class='quote '>А ты только кидаешься штампами вместо того чтобы показать код и таким образом аргументировать свои тезисы.</div></div><br>
<br>
Ничем я не кидаюсь, это раз. Аргументировать бессмысленно, так как у нас противоположные взгляды на один и тот же код, это два.]]></description>
        <author>B.V.</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830498</guid>
        <pubDate>Thu, 10 Jan 2008 11:39:15 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830498</link>
        <description><![CDATA[Бобёр: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Есть такая известная функция, пришедшая еще из RX Library, теперь перекочивавшая в JVCL. Она переводит числа в римскую систему счисления из десятичной.</div></div><br>
охоспади, застрелил бы &quot;аффтора&quot;, чесслово.]]></description>
        <author>Бобёр</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830240</guid>
        <pubDate>Thu, 10 Jan 2008 08:23:43 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1830240</link>
        <description><![CDATA[Smike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1829868'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2008-01-09T20:27:55+00:00">09.01.08, 20:27</time></span><div class='quote '>Но исходный код работает на неоптимизирующих компиляторах несколько быстрее твоего.</div></div><br>
Где бенчмарк? ;)<br>
<br>
Вообще-то есть узкие места:<br>
- цикл for..in по записям (record) не больно эффективен, потому что копирует каждый раз запись в переменную. Если переписать цикл на индексы, будет немного быстрее, но не так красиво ;)<br>
- можно еще сделать кое-какие оптимизации, например добавлять не по 1-2 знака в цикле, а сразу скопом. Целочисленным делением подсчитать, сколько нужно знаков, установить длину строки и занести данные копированием области памяти. Но нужно ли? ;) Чрезмерная оптимизация в отнюдь не самых узких местах тоже вредна.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1829881'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2008-01-09T20:45:22+00:00">09.01.08, 20:45</time></span><div class='quote '>Комплексами, как Смайк, например, по этому поводу не страдаю.</div></div><br>
Причем тут комплексы? Я лишь подтвердил, что это уродливо, не универсально, неудобно, нелогично и некрасиво. И не соответствует стандартам структурного программирования. А ты только кидаешься штампами вместо того чтобы показать код и таким образом аргументировать свои тезисы.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>У goto есть свое предназначение, и если им не злоупотреблять - получается весьма читаемый и оптимизированный код.</div></div><br>
Можно пример подобного кода? Или мой первый фрагмент по твоему более читаемый и простой?]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829881</guid>
        <pubDate>Wed, 09 Jan 2008 20:45:22 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829881</link>
        <description><![CDATA[B.V.: Использую goto до сих пор (в VB/PB/C/C++), и собираюсь использовать впредь. Комплексами, как Смайк, например, по этому поводу не страдаю.<br>
У goto есть свое предназначение, и если им не злоупотреблять - получается весьма читаемый и оптимизированный код.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1829627'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-09T15:59:42+00:00">09.01.08, 15:59</time></span><div class='quote '>Правда ужасно?</div></div><br>
<br>
Кому как, знаешь ли...]]></description>
        <author>B.V.</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829868</guid>
        <pubDate>Wed, 09 Jan 2008 20:27:55 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829868</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1829627'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Smike &#064; <time class="tag-quote__quoted-time" datetime="2008-01-09T15:59:42+00:00">09.01.08, 15:59</time></span><div class='quote '>Правда так гораздо лучше?</div></div><br>
Это и без такой большой переделки можно без всяких goto написать. Но исходный код работает на неоптимизирующих компиляторах несколько быстрее твоего. Да и оптимизация не слишком-то поможет.]]></description>
        <author>amk</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829665</guid>
        <pubDate>Wed, 09 Jan 2008 16:28:36 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829665</link>
        <description><![CDATA[best_lamer: GoTo пришло из великого Фортрана&#33; Засим все кто думает что Goto &quot;пережиток...&quot; отступники и подлежат сожжению на костре&#33;  :lol:  <br><br>ЗЫ Мое высказывание прошу воспринимать шуткой.]]></description>
        <author>best_lamer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829627</guid>
        <pubDate>Wed, 09 Jan 2008 15:59:42 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1829627</link>
        <description><![CDATA[Smike: Есть такая известная функция, пришедшая еще из RX Library, теперь перекочивавшая в JVCL. Она переводит числа в римскую систему счисления из десятичной.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function IntToRoman(Value: Longint): string;</div><div class="code_line">label</div><div class="code_line">&nbsp;&nbsp;A500, A400, A100, A90, A50, A40, A10, A9, A5, A4, A1;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;&nbsp;while Value &#62;= 1000 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 1000);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;M&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 900 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A500</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 900);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;CM&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;goto A90;</div><div class="code_line">&nbsp;&nbsp;A400:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 400 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A100</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 400);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;CD&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;goto A90;</div><div class="code_line">&nbsp;&nbsp;A500:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 500 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A400</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 500);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;D&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;A100:</div><div class="code_line">&nbsp;&nbsp;while Value &#62;= 100 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 100);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;C&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;A90:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 90 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A50</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 90);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;XC&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;goto A9;</div><div class="code_line">&nbsp;&nbsp;A40:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 40 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A10</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 40);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;XL&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;goto A9;</div><div class="code_line">&nbsp;&nbsp;A50:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 50 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A40</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 50);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;L&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;A10:</div><div class="code_line">&nbsp;&nbsp;while Value &#62;= 10 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 10);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;X&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;A9:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 9 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A5</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;IX&#39;;</div><div class="code_line">&nbsp;&nbsp;Exit;</div><div class="code_line">&nbsp;&nbsp;A4:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 4 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A1</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;IV&#39;;</div><div class="code_line">&nbsp;&nbsp;Exit;</div><div class="code_line">&nbsp;&nbsp;A5:</div><div class="code_line">&nbsp;&nbsp;if Value &#60; 5 then</div><div class="code_line">&nbsp;&nbsp; &nbsp;goto A4</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value, 5);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;V&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;goto A1;</div><div class="code_line">&nbsp;&nbsp;A1:</div><div class="code_line">&nbsp;&nbsp;while Value &#62;= 1 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dec(Value);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := Result + &#39;I&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
Правда ужасно? ;) И это действительно так&#33; Я легко переписал её в гораздо более удобоваримый вид:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function IntToRoman(Value: Longint): string;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TRomanRec = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;Str: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Amount: Integer</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;Roman: array [1..13] of TRomanRec = (</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;M&#39;; Amount: 1000),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &#39;CM&#39;; Amount: &nbsp;900),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;D&#39;; Amount: &nbsp;500),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &#39;CD&#39;; Amount: &nbsp;400),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;C&#39;; Amount: &nbsp;100),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &#39;XC&#39;; Amount: &nbsp; 90),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;L&#39;; Amount: &nbsp; 50),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &#39;XL&#39;; Amount: &nbsp; 40),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;X&#39;; Amount: &nbsp; 10),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &#39;IX&#39;; Amount: &nbsp; &nbsp;9),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;V&#39;; Amount: &nbsp; &nbsp;5),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &#39;IV&#39;; Amount: &nbsp; &nbsp;4),</div><div class="code_line">&nbsp;&nbsp; &nbsp;(Str: &nbsp;&#39;I&#39;; Amount: &nbsp; &nbsp;1)</div><div class="code_line">&nbsp;&nbsp;);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;R: TRomanRec;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;for R in Roman do</div><div class="code_line">&nbsp;&nbsp; &nbsp;while Value &#62;= R.Amount do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := Result + R.Str;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Dec(Value, R.Amount);</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
Правда так гораздо лучше? Вот вам и еще один гвоздь в гроб GOTO :)]]></description>
        <author>Smike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1382034</guid>
        <pubDate>Tue, 19 Dec 2006 06:03:19 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1382034</link>
        <description><![CDATA[Necro666: Так ведь Marbledore написал, что ПРИШЛОСЬ делать в динамической памяти. <br>Я конечно не знаю, не пробовал, может где-нибудь в опциях компилятора и можно выставить stacksize=90G...]]></description>
        <author>Necro666</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1363401</guid>
        <pubDate>Sat, 02 Dec 2006 14:34:48 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1363401</link>
        <description><![CDATA[n0p: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Marbledore</span><div class='quote '>Ну и пришлось мне реализовывать рекурсию через динамическую память (со свапом, естественно, на 90 Гб), и естественно, через goto. Не знаю, честно говоря, способа, вручную реализовать рекурсию без использования goto.</div></div><br>
бу-га-га... рекурсия в целых 90гигов свапа через goto ака jmp?  вроде бы само -каллбачные(self-callback) ака рекурсивные фун-кции в конечном итоге юзают CALL и RET..  <br>
<br>
типа <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{$APPTYPE CONSOLE}</div><div class="code_line">program test;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure xren_evo_znaet(xz:integer );</div><div class="code_line">begin</div><div class="code_line">xz:= xz + 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;writeln (&#39;xren_evo_znaet: &#39;, xz );</div><div class="code_line">&nbsp;&nbsp;xren_evo_znaet (xz);</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">xren_evo_znaet(0);</div><div class="code_line">end.</div></ol></div></div></div></div><br>
хе.. доктор ватсон пришел за ней когда оно отсчитало до:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">xren_evo_znaet: 129466</div><div class="code_line">xren_evo_znaet: 129467</div><div class="code_line">xren_evo_znaet: 129468</div><div class="code_line">xren_evo_znaet: 129469</div><div class="code_line">xren_evo_znaet: 129470</div></ol></div></div></div></div>]]></description>
        <author>n0p</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1363347</guid>
        <pubDate>Sat, 02 Dec 2006 13:42:55 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1363347</link>
        <description><![CDATA[linuxfan: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1358695'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Marbledore &#064; <time class="tag-quote__quoted-time" datetime="2006-11-28T11:33:48+00:00">28.11.06, 11:33</time></span><div class='quote '>Вот такие разны люди, вот такие разные проекты...</div></div><br>
Я бы сказал, что цели у проектов разные. В коммерческих проектах, где надо осуществлять последующую поддержку кода, естественно, заботся о том, чтобы можно было с минимальными усилиями найти и исправить возникшую ошибку, т. е. навызывают единый стиль программирования, заставляют писать комментарии и т. д. В научных проектах все по-другому: любое исследование направлено на получение результата, поэтому люди науки пишут <em class='tag-i'>так</em>... В общем, единожды увидев, больше не захочется. Да и Fortran, используемый в научных кругах, ИМХО никак не способствует хорошему стилю.]]></description>
        <author>linuxfan</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1361652</guid>
        <pubDate>Thu, 30 Nov 2006 17:35:55 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1361652</link>
        <description><![CDATA[Evil J: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1352285'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SCINER &#064; <time class="tag-quote__quoted-time" datetime="2006-11-22T20:09:09+00:00">22.11.06, 20:09</time></span><div class='quote '>почему нельзя ? :blink:<br>
по сути это же условие с переходом. в чем отличие ?</div></div><br>
Есть некие элементы блок-схемы, более широкие, чем базовые (ромдики и пр.). Ветвление, цикл и пр.<br>
Вот в них то все и упирается.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1352285'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SCINER &#064; <time class="tag-quote__quoted-time" datetime="2006-11-22T20:09:09+00:00">22.11.06, 20:09</time></span><div class='quote '>по сути это же условие с переходом. в чем отличие ?</div></div><br>
Позволю напомнить, что goto - безусловный переход.]]></description>
        <author>Evil J</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1358695</guid>
        <pubDate>Tue, 28 Nov 2006 11:33:48 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1358695</link>
        <description><![CDATA[Marbledore: Вставлю свой комментарий :)<br>Приходилось мне реализовывать функцию... К сожалению, там такой алгоритм, который я сумел решить только через рекурсию. Ибо слаб в теории групп симметрии кристаллов, а американцы, которые уже 20 лет решают эту задачу, вообще признали ее нерешаемой на имеющихся компьютерных мощностях и решили нафиг приближенно.<br><br>Так вот, глубина этой рекурсии - около 5 миллиардов вызовов. Естественно, стэк на этом деле загибается подчистую. Ну и пришлось мне реализовывать рекурсию через динамическую память (со свапом, естественно, на 90 Гб), и естественно, через goto. Не знаю, честно говоря, способа, вручную реализовать рекурсию без использования goto.<br><br>Насчет оптимизации... Честно говоря, в таких проектах на удобство порграммирования смотрят непонимающе, как на средство для дебилов, которые не умеют думать, как компьютер. Ибо даже лишнее обращение к переменной - это лишний такт процессора (и памяти). А когда кусок кода выполняется на протяжении работы программы несколько триллионов раз... То за такое по голове бьют.<br><br>С другой стороны, подрабатываю в крупном проекте на С++. Тут, наоборот, все - для удобства программирования. Все пишется на языке постановки задач, объекты выделяются даже там, где вроде бы не нужны :) Иногда больше половины времени уходит на написание комментариев :)))) И тут, конечно, goto приводит просто к непониманию :)<br><br>Вот такие разны люди, вот такие разные проекты...]]></description>
        <author>Marbledore</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1352286</guid>
        <pubDate>Wed, 22 Nov 2006 20:10:00 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1352286</link>
        <description><![CDATA[SCINER: Если вспомнили про GoTo Значит он кому-то нужен.]]></description>
        <author>SCINER</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1352285</guid>
        <pubDate>Wed, 22 Nov 2006 20:09:09 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1352285</link>
        <description><![CDATA[SCINER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=1336339'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Evil J &#064; <time class="tag-quote__quoted-time" datetime="2006-11-09T17:18:30+00:00">09.11.06, 17:18</time></span><div class='quote '>Пробелма была не в этом. goto не вписывается в методологию структурного программирования. Программу с ними практически невозможно записать в виде блок-схемы. В этом то вся суть. А в плюсах еще деструкторы и пр...</div></div><br>
почему нельзя ? :blink: <br>
по сути это же условие с переходом. в чем отличие ?]]></description>
        <author>SCINER</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1336339</guid>
        <pubDate>Thu, 09 Nov 2006 17:18:30 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1336339</link>
        <description><![CDATA[Evil J: Пробелма была не в этом. goto не вписывается в методологию структурного программирования. Программу с ними практически невозможно записать в виде блок-схемы. В этом то вся суть. А в плюсах еще деструкторы и пр...]]></description>
        <author>Evil J</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1327544</guid>
        <pubDate>Fri, 03 Nov 2006 06:58:40 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1327544</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=964661'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2005-12-29T17:27:29+00:00">29.12.05, 17:27</time></span><div class='quote '>Также не было операторов BREAK, EXIT, HALT и других, которые нарушали стройную структуру программы </div></div><br>
отличие break/exit/continue (halt - лишний в этом списке) от goto в том, что для этих операторов однозначно определена метка перехода. Если мы встретим в коде  Exit, то мы сразу поймем, что тут заканчивает процедура. или цикл(break) или итерация цикла. В случае же goto - вообще ничего определенного сказать нельзя. Этим он и плох....]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1126536</guid>
        <pubDate>Tue, 06 Jun 2006 08:22:43 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=1126536</link>
        <description><![CDATA[Ho Im: Вернулся return &mdash; надо записать. Хорошо сказано.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=982027</guid>
        <pubDate>Sat, 14 Jan 2006 12:56:18 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=982027</link>
        <description><![CDATA[Evil J: В последующих языках Никлауса Вирта вернулся return.]]></description>
        <author>Evil J</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=981494</guid>
        <pubDate>Fri, 13 Jan 2006 19:10:27 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=981494</link>
        <description><![CDATA[amk: Я Паскалем давно не пользовался, так что напутал. Действительно, не Return ..., а Result := ...; Exit. Или FuncName := ...; Exit.]]></description>
        <author>amk</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=980422</guid>
        <pubDate>Thu, 12 Jan 2006 22:16:05 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=980422</link>
        <description><![CDATA[Mechanic: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=980012'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>02077461 &#064; <time class="tag-quote__quoted-time" datetime="2006-01-12T15:16:57+00:00">12.01.06, 15:16</time></span><div class='quote '>return в Paskal???? А с какой версии?</div></div><br>
По-Pascal&#39;евски <strong class='tag-b'>Return</strong> звучит как <strong class='tag-b'>Exit</strong>.  :yes:]]></description>
        <author>Mechanic</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=980012</guid>
        <pubDate>Thu, 12 Jan 2006 15:16:57 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=980012</link>
        <description><![CDATA[02077461: return в Paskal???? А с какой версии?]]></description>
        <author>02077461</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=964661</guid>
        <pubDate>Thu, 29 Dec 2005 17:27:29 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=964661</link>
        <description><![CDATA[amk: &quot;Ни в коем случае не использовать GOTO, лучше его вообще отменить&quot; - это лозунг ортодоксального структурного программирования. Использовать RETURN где-либо, кроме как перед завершающим функцию END&#39;ом там такой же грех, если не больший чем использовать GOTO.<br>Кстати в оригинальном варианте языка Паскаль, предложенном Н.Виртом оператора RETURN вообще не было, вместо него использовался GOTO. Также не было операторов BREAK, EXIT, HALT и других, которые нарушали стройную структуру программы (для GOTO было сделано исключение).]]></description>
        <author>amk</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963567</guid>
        <pubDate>Thu, 29 Dec 2005 00:45:14 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963567</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Хоть одно слово о Windows покажи. Видно не там прочитал.</div></div><br>
Каюсь, текстовый браузер не показал рамок таблицы, а выравнивание по центру -- получилось с виду, как будто первый абзац предпоследнего (по хронологии) минуса приходится еще на последний.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963402</guid>
        <pubDate>Wed, 28 Dec 2005 20:34:46 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963402</link>
        <description><![CDATA[s-mike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Демо &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T11:19:31+00:00">28.12.05, 11:19</time></span><div class='quote '>Ну только если выше D6. Но зачем на нее переходить?</div></div><br>
По моему это естественно ;) Помимо новых возможностей и поддержки новых версий ОС (новыми компонентами, изменениями в VCL/RTL) мы получаем еще более продвинутую и удобную среду (особенно в Д2006 :wub: ) и техническую поддержку. Версии 5 и ниже уже давно никто не поддерживает и не продает.]]></description>
        <author>s-mike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963395</guid>
        <pubDate>Wed, 28 Dec 2005 20:29:12 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963395</link>
        <description><![CDATA[Evil J: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962356'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Демо &#064; <time class="tag-quote__quoted-time" datetime="2005-12-27T16:15:24+00:00">27.12.05, 16:15</time></span><div class='quote '>Вот именно - если конечно правильно расставлены try..finally<br>
<br>
А зачем мне замедлять работу процедуры поднятием исключений?<br>
Если у меня не выделятеся память и ресурсы для объектов?<br>
<br>
GOTO - прямой и самый быстрый переход.<br>
<br>
Нахрена мне еще время тратить на исключения? Ну вот скажи? Ради религии? Тогда В САД такую религию и религиозных деятелей.</div></div><br>
Причем тут время?<br>
В примере со вложенными циклами подразумевается большоее кол-во итераций - и исходя из этого дополнительная проверка условия выхода становится нежелательной (помимо некрасивости такого решения). А время, потраченное на обработку исключения и пр. - по сравнению с общим временем выполнения итераций - ничтожно. И вообще не всегда исключения в языках реализованы так, как вы похоже думаете.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962649'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T09:20:10+00:00">28.12.05, 09:20</time></span><div class='quote '>а тут всё зависит от того, что за условие. Если оно простое, то его лучше разбить на несколько, используя при этом continue. Если оно сложное, то можно вообще выделить этот обход по циклам в ОТДЕЛЬНУЮ ФУНКЦИЮ и делать из неё return по условию. RETURN - что может быть красивее?</div></div><br>
Красивее? Вообще то красиво, когда точка возврата одна.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=963065'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Демо &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T14:19:19+00:00">28.12.05, 14:19</time></span><div class='quote '>Кто-то где-то кому-то сказал, кто-то где-то прочитал, что использовать GOTO - плохой стиль. НУ И ЧТО?<br>
В результате, не поняв, почему его вдруг нельзя стало использовать, целиком полагаясь на авторитеты(&quot;старших товарищей&quot;), программисты вдруг становятся апологетами этих &quot;проповедников&quot;, по-существу, ограничивая ширину инструментов, средств программирования. И это касается не только оператора GOTO.</div></div><br>
Хорош goto или плох... но тем не менее он нарушает принципы структурного программирования и это факт, не зависящий ни от проповедников, ни от кого бы то ни было...<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><br>
А самому мне все равно - в Java goto просто нет. И исключения - мне не кажутся чем то страшным.<br>
Упреждая скажу - всякую чушь насчет недоязыка и пр. комментировать не собираюсь.</span>]]></description>
        <author>Evil J</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963097</guid>
        <pubDate>Wed, 28 Dec 2005 14:43:23 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963097</link>
        <description><![CDATA[Ho Im: Эт, предубеждения у меня кроссплатформеннее эмакса и программы Hello World :-) Так что не примешивай одно к другому.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963085</guid>
        <pubDate>Wed, 28 Dec 2005 14:36:47 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963085</link>
        <description><![CDATA[s-mike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=963012'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T13:41:54+00:00">28.12.05, 13:41</time></span><div class='quote '>В статистике рейтинга. Коль ставишь минус, то хоть причину придумай нормальную.</div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Довольно показывать свою некомпетентность&#33; :angry:</div></div><br>
Хоть одно слово о Windows покажи. Видно не там прочитал.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=963012'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T13:41:54+00:00">28.12.05, 13:41</time></span><div class='quote '>Не &quot;как в других&quot;, а в принципе. Это разные вещи.</div></div><br>
&quot;В принципе&quot; в Дельфи возможно все то, что ты написал. И без goto можно обойтись. Так что оставьте, батенька, свои линуховские предубеждения. И повкуривай книги Вирта и Borland&#39;овские RTFM. Разве можно спорить и пытаться что-то доказать, ну выучив матчасть?<br>
<br>
<strong class='tag-b'>Демо</strong>, имхо goto остался в языках не как возможность языка, а скорее просто для обратной совместимости.]]></description>
        <author>s-mike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963065</guid>
        <pubDate>Wed, 28 Dec 2005 14:19:19 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963065</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=963039'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Букер &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T14:03:19+00:00">28.12.05, 14:03</time></span><div class='quote '>Да еще и подобных стуктур дофига? <br>
Ну и будеш ты прыгать по своим меткам попусту теряя время.<br>
Хотя я программирование забросил, но вспоминается подобный случай, когда по молодости и наивности начал<br>
юзать goto там, где можно было обойтсь условиями и циклами. О чем через неделю написания кода горько об этом пожалел.</div></div><br>
<br>
Ну так сколько можно раз повторять то, что использовать соответствующие возможности языка нужно там, где это действительно оптимально.<br>
Кто говорит, что надо заменить условные ветвления и функции оператором GOTO? В приведенном примере НЕ НАДО усложнять простой и читаемый код излишними конструкциями.<br>
<br>
Повторю еще раз, что лично у меня ни разу не появлялась необходимость использовать тот же пресловутый оператор GOTO.<br>
И я не сторонник его использования. Использования без веских причин, коими я назову максимальную читабельность и простоту кода.<br>
<br>
Я лишь противник религиозного фанатизма без всяких причин и аргументов.<br>
<br>
Кто-то где-то кому-то сказал, кто-то где-то прочитал, что использовать GOTO - плохой стиль. НУ И ЧТО?<br>
В результате, не поняв, почему его вдруг нельзя стало использовать, целиком полагаясь на авторитеты(&quot;старших товарищей&quot;), программисты вдруг становятся апологетами этих &quot;проповедников&quot;, по-существу, ограничивая ширину инструментов, средств программирования. И это касается не только оператора GOTO.<br>
<br>
Я сам иногда за собой замечаю, что некоторое высказывание, даже доказанное(якобы) строго, довлеет над сознанием, и становится догмой.<br>
НО, иногда - вдруг(вот ведь какая оказия&#33;), появляется другое доказательство, которое опровергает первое.<br>
<br>
Я к чему последний абзац написал? А к тому, что иногда для правильной оценки не хватает малого - знаний.<br>
Поэтому и не надо принимать все на веру и становиться догматиком, так как этому может быть только 2 причины:<br>
1. Максимализм.<br>
2. Закостенелость мышления.]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963039</guid>
        <pubDate>Wed, 28 Dec 2005 14:03:19 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963039</link>
        <description><![CDATA[Букер: <strong class='tag-b'>Демо</strong>, это мелкий пример потипу &quot;Hello world&quot;, а если код строк этак на XXX тысяч?<br>
Да еще и подобных стуктур дофига? <br>
Ну и будеш ты прыгать по своим меткам попусту теряя время.<br>
Хотя я программирование забросил, но вспоминается подобный случай, когда по молодости и наивности начал<br>
юзать goto там, где можно было обойтсь условиями и циклами. О чем через неделю написания кода горько об этом пожалел.]]></description>
        <author>Букер</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963012</guid>
        <pubDate>Wed, 28 Dec 2005 13:41:54 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=963012</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> А я о них вспоминал?</div></div><br>
В статистике рейтинга. Коль ставишь минус, то хоть причину придумай нормальную.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ты считаешь недостатком языка то, что нельзя сделать что-то так, как в другом языке.</div></div><br>
Не &quot;как в других&quot;, а в принципе. Это разные вещи.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Знаю я программеров, которые из-за нестрогости и неструктурированности языка пишут программы как попало.</div></div><br>
Структурированные по-настоящему языки позволяют обойтись без goto.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962932</guid>
        <pubDate>Wed, 28 Dec 2005 12:46:14 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962932</link>
        <description><![CDATA[s-mike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T12:11:27+00:00">28.12.05, 12:11</time></span><div class='quote '>Кстати, смайк, потрудись объяснить, при каком монахе здесь Windows/Linux? Мы пока что _языки_ обсуждаем, независимо от их реализаций.</div></div><br>
А я о них вспоминал?<br>
<br>
Твои доводы - смешны. Ты считаешь недостатком языка то, что нельзя сделать что-то так, как в другом языке. А смысл делать все одинаково во всех языках? Тогда ни у одного из них не было бы своих преимуществ и недостатков.]]></description>
        <author>s-mike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962905</guid>
        <pubDate>Wed, 28 Dec 2005 12:21:41 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962905</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962887'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mechanic &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T12:10:06+00:00">28.12.05, 12:10</time></span><div class='quote '>Плохо. Я бы сказал, что совсем не структурирован. Нарисуй блок-схему.</div></div><br>
<br>
Так он точно так же структурирован, как и у тебя. За исключением GOTO. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-28T12:24:32+00:00">28.12.05, 12:24</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962884'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T12:09:41+00:00">28.12.05, 12:09</time></span><div class='quote '>Убогий недоязык</div></div><br>
<br>
Ты давно отыскивал ошибки в своей программе из-за несоответсвия типов, например?<br>
<br>
Знаю я программеров, которые из-за нестрогости и неструктурированности языка пишут программы как попало. отладка занимает времени больше, чем написание кода раз в 20.]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962890</guid>
        <pubDate>Wed, 28 Dec 2005 12:11:27 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962890</link>
        <description><![CDATA[Ho Im: Кстати, смайк, потрудись объяснить, при каком монахе здесь Windows/Linux? Мы пока что _языки_ обсуждаем, независимо от их реализаций.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962887</guid>
        <pubDate>Wed, 28 Dec 2005 12:10:06 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962887</link>
        <description><![CDATA[Mechanic: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Демо &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T11:19:31+00:00">28.12.05, 11:19</time></span><div class='quote '>А вот этот плохо структурирован?</div></div><br>
Плохо. Я бы сказал, что совсем не структурирован. Нарисуй блок-схему. ;)]]></description>
        <author>Mechanic</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962884</guid>
        <pubDate>Wed, 28 Dec 2005 12:09:41 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962884</link>
        <description><![CDATA[Ho Im: Убогий недоязык, так как 1) слишком verbose, 2) его break не позволяет задать уровень вложенности, что можно сделать даже в убогоньком недоязычке PHP (кстати, вложенность цикла всегда известна на этапе компиляции), 3) его for способен лишь крутить счетчик в арифметической поргрессии с шагом +1 или -1. Этого <strong class='tag-b'>мало</strong>, учитывая то, что нельзя задать дополнительное условие выхода из цикла. Поэтому пришлось извратиться с while. 4) наконец, удобная штука -- тернарный оператор ?: отсутствует напрочь. Поэтому даже простое вычисление с условием нельзя задать одним выражением, надо бить на if ... then ... else.<br>
<br>
И еще: 5) единственным воркараундом на многоуровневый break является таки goto.<br>
<br>
За сей аргументированный ответ можешь проставить еще один минус. Мне не жаль.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962818</guid>
        <pubDate>Wed, 28 Dec 2005 11:19:31 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962818</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962801'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>s&#045;mike &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T11:08:45+00:00">28.12.05, 11:08</time></span><div class='quote '>А что тебе там не нравится? Хорошо структурированный код, наглядный, однозначный, легче вносить правки.</div></div><br>
<br>
Хорошо структурированный, согласен.<br>
<br>
А вот этот плохо структурирован?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function FindAnAnswer: Boolean;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; X, Y, Z, Count: Integer;</div><div class="code_line">label</div><div class="code_line">&nbsp;&nbsp; LEnd;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; Result := False;</div><div class="code_line">&nbsp;&nbsp; Count := SomeConstant;</div><div class="code_line">&nbsp;&nbsp; for X := 1 to Count do</div><div class="code_line">&nbsp;&nbsp; &nbsp; for Y := 1 to Count do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; for Z := 1 to Count do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if ... { some condition holds on X, Y, and Z } then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result := True;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; goto LEnd;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; end;</div><div class="code_line">LEnd:</div><div class="code_line">end;</div></ol></div></div></div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962801'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>s&#045;mike &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T11:08:45+00:00">28.12.05, 11:08</time></span><div class='quote '>можно применить inline. В новых дельфях это уже есть.</div></div><br>
<br>
Ну только если выше D6. Но зачем на нее переходить?]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962815</guid>
        <pubDate>Wed, 28 Dec 2005 11:17:35 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962815</link>
        <description><![CDATA[Mechanic: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962649'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T09:20:10+00:00">28.12.05, 09:20</time></span><div class='quote '>меня за goto уволят , это вполне практичная штука </div></div><br>
Так бы и сказал сразу. Все остальные доводы надуманы.. ;)]]></description>
        <author>Mechanic</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962801</guid>
        <pubDate>Wed, 28 Dec 2005 11:08:45 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962801</link>
        <description><![CDATA[s-mike: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962773'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Демо &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:50:39+00:00">28.12.05, 10:50</time></span><div class='quote '>Это просто аналог сишного примера. Тоже не видно плюсов, кроме минуса в виде дополнительного вызова функции... -)</div></div><br>
Это правильный вариант решения. Чтобы небыло лишней функции в коде, можно применить inline. В новых дельфях это уже есть.<br>
<br>
А что тебе там не нравится? Хорошо структурированный код, наглядный, однозначный, легче вносить правки. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-28T11:12:30+00:00">28.12.05, 11:12</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962717'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:23+00:00">28.12.05, 10:24</time></span><div class='quote '>BugHunter, человеку, кажется, пример был нужен именно на убогом недоязычке Object Pascal.</div></div><br>
Для тебя Object Pascal недоязык, потому что ты его не знаешь? Именно это показали твои попытки написать пример без goto на нем. Лови <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong>.]]></description>
        <author>s-mike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962775</guid>
        <pubDate>Wed, 28 Dec 2005 10:52:18 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962775</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962762'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:46:17+00:00">28.12.05, 10:46</time></span><div class='quote '>тут, правда, довольно сложно будет выбрать удчаное имя для выделяемой функци, т.к. имя должно сигнализировать и об условии окончания цикла, и о том, что же в ней на самом деле происходит </div></div><br>
Мало того, при таком варианте могут быть проблемы в том случае, если набор действий А и набор действий B &quot;завязаны&quot; на текущее состояние переменных в методе, где крутится цикл. Грубо говоря, если каждый кейс меняет состояние нескольких переменных, объявленных за пределами цикла, то просто так ты это не разрулишь. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-28T10:54:34+00:00">28.12.05, 10:54</time></span></span><br>
А примеры того, где такое может понадобиться, можно найти в реализациях алгоритмов, хорошо описываемых логикой конечных автоматов.]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962773</guid>
        <pubDate>Wed, 28 Dec 2005 10:50:39 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962773</link>
        <description><![CDATA[Демо: <strong class='tag-b'>s-mike</strong><br>
<br>
Это просто аналог сишного примера. Тоже не видно плюсов, кроме минуса в виде дополнительного вызова функции... -)]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962764</guid>
        <pubDate>Wed, 28 Dec 2005 10:46:37 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962764</link>
        <description><![CDATA[s-mike: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure FindFirstAnswer;</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;function FindAnAnswer: Boolean;</div><div class="code_line">&nbsp;&nbsp;var X, Y, Z, Count: Integer;</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := False;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Count := SomeConstant;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for X := 1 to Count do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for Y := 1 to Count do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for Z := 1 to Count do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ... { some condition holds on X, Y, and Z } then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := True;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end; &nbsp;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;if FoundAnAnswer then</div><div class="code_line">&nbsp;&nbsp; &nbsp;... { code to execute when an answer is found }</div><div class="code_line">&nbsp;&nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;... {code to execute if no answer is found }</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>s-mike</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962762</guid>
        <pubDate>Wed, 28 Dec 2005 10:46:17 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962762</link>
        <description><![CDATA[BugHunter: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ну вот, уже объекты в ход пошли. Лишь бы goto не использовать... :)</div></div><br>
Ну, я ж говорю, всё зависит от объёма задачи :). Если она маленькая, то можно конечно, и goto применить :). Но что то мне в последнее время (года 3 :P ) такие не попадаются ;).<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Все очень просто. Вариант с дополнительным флагом вводит пенальти на сравнении с bool. В большинстве случаев это сравнение будет выполняться медленней, чем, например, просто сравнение двух int&#39;ов на неравенство. Вариант с вызовом функции, содержащей 3 цикла, чуть лучше, но тоже имеет свое пенальти, если, например, вызов не будет раскрыт в inline. Особенно, если в функцию придется передавать или возвращать из нее какую-то дополнительную информацию.</div></div><br>
Согласен<br>
<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool DoHast( int arg )</div><div class="code_line">&nbsp;switch ( arg )</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">&nbsp;&nbsp; case 0: &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 1:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; case 2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;//</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;AddAction1(); &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;&nbsp; case 3:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;//</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;AddAction2(); &nbsp; &nbsp;//расставил случайно</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;&nbsp; case 4:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 5:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;AddAction1();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;&nbsp; case 6:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;</div><div class="code_line">for (int n = 0; n &#60; some_value; ++ n)</div><div class="code_line">{ </div><div class="code_line">&nbsp;&nbsp;if ( !DoHast( arg ) ) &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<br>
тут, правда, довольно сложно будет выбрать удчаное имя для выделяемой функци, т.к. имя должно сигнализировать и об условии окончания цикла, и о том, что же в ней на самом деле происходит :yes:<br>
Возможно, я бы разбил это даже на 2 функции с более понятными именами. 2 switch-а вместо одного? Да. Ну и ладно. Нехай будет, но пускай будет прозрачно.]]></description>
        <author>BugHunter</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962757</guid>
        <pubDate>Wed, 28 Dec 2005 10:42:54 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962757</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962746'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:36:27+00:00">28.12.05, 10:36</time></span><div class='quote '>Ты не мычи, ты пальцем покажи</div></div><br>
<br>
Так если ты сишников лучше понимаешь, то аргументы тебе <strong class='tag-b'>Flex Ferrum</strong> приводит пока. Я вот с краю тут сижу, жду ответов(и аргументов) ;)]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962746</guid>
        <pubDate>Wed, 28 Dec 2005 10:36:27 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962746</link>
        <description><![CDATA[BugHunter: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Категоричность свойственна лишь тем, кто еще мало знает;)</div></div><br>
Ты не мычи, ты пальцем покажи :).]]></description>
        <author>BugHunter</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962745</guid>
        <pubDate>Wed, 28 Dec 2005 10:36:06 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962745</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962734'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:32:20+00:00">28.12.05, 10:32</time></span><div class='quote '>Это раз. А во вторых - когда я вижу большие case, я чаще всего вспоминаю про полиморфизм, но это конечно, не про плоский C. </div></div><br>
Ууу... А у нас уже придумали полиморфизм по значению аргумента? Не знал, не знал... А реализация такой фишки имеющимися средствами (по сложности) не войдет ни в какое сравнение с одним маленьким goto.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962734'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:32:20+00:00">28.12.05, 10:32</time></span><div class='quote '>Flex, я не знаю, чем goto туда, goto обратно будет в твоём примере лучше, чем вызов функции </div></div><br>
Какой? Напиши.]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962740</guid>
        <pubDate>Wed, 28 Dec 2005 10:34:46 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962740</link>
        <description><![CDATA[Демо: <strong class='tag-b'>BugHunter</strong><br>
<br>
Твой пример красив, но он не демонстрирует, почему GOTO <strong class='tag-b'>НЕЛЬЗЯ</strong> использовать... :lol:]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962737</guid>
        <pubDate>Wed, 28 Dec 2005 10:33:45 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962737</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962718'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:26+00:00">28.12.05, 10:24</time></span><div class='quote '>Можно, например, возвращать не bool, а объект &quot;точка&quot;, с невалидным состоянием если условие не выполнилось.</div></div><br>
Ну вот, уже объекты в ход пошли. Лишь бы goto не использовать... :)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962718'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:26+00:00">28.12.05, 10:24</time></span><div class='quote '>...я допускаю, что можно придумать извращённые случаи. Но вот 99% случаев к ним не относится. Конец истории. </div></div><br>
Но так ведь никто и не говорит, что goto нужно использовать везде и вся. Но, честно говоря, если, например, использование goto существенно поднимет скорость выполнения критичного по времени участка программы - то велика вероятность, что я им воспользуюсь. Все очень просто. Вариант с дополнительным флагом вводит пенальти на сравнении с bool. В большинстве случаев это сравнение будет выполняться медленней, чем, например, просто сравнение двух int&#39;ов на неравенство. Вариант с вызовом функции, содержащей 3 цикла, чуть лучше, но тоже имеет свое пенальти, если, например, вызов не будет раскрыт в inline. Особенно, если в функцию придется передавать или возвращать из нее какую-то дополнительную информацию.]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962734</guid>
        <pubDate>Wed, 28 Dec 2005 10:32:20 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962734</link>
        <description><![CDATA[BugHunter: Flex, я не знаю, чем goto туда, goto обратно будет в твоём примере лучше, чем вызов функции :).<br>Это раз. А во вторых - когда я вижу большие case, я чаще всего вспоминаю про полиморфизм, но это конечно, не про плоский C.]]></description>
        <author>BugHunter</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962723</guid>
        <pubDate>Wed, 28 Dec 2005 10:26:40 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962723</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962717'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:23+00:00">28.12.05, 10:24</time></span><div class='quote '>BugHunter, человеку, кажется, пример был нужен именно на убогом недоязычке Object Pascal.</div></div><br>
<br>
Мне все равно, на недоязычке Си приведен пример или на любом другом. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-28T10:28:56+00:00">28.12.05, 10:28</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962718'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:26+00:00">28.12.05, 10:24</time></span><div class='quote '>Конец истории.</div></div><br>
<br>
Вряд ли. :lol: <br>
<br>
Категоричность свойственна лишь тем, кто еще мало знает;)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962718'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:26+00:00">28.12.05, 10:24</time></span><div class='quote '>Посмотри на мой пример, разве не красавец?</div></div><br>
<br>
Вряд ли он красивее и целесообразнее единственного вызова GOTO в той же функции. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-28T10:31:22+00:00">28.12.05, 10:31</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962717'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:24:23+00:00">28.12.05, 10:24</time></span><div class='quote '>BugHunter, человеку, кажется, пример был нужен именно на убогом недоязычке Object Pascal.</div></div><br>
<br>
Еще добавлю, что чем мазать - дело вкуса, поэтому оставь свои выпады при себе.]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962722</guid>
        <pubDate>Wed, 28 Dec 2005 10:26:20 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962722</link>
        <description><![CDATA[Flex Ferrum: Пока Демо думает над своим примером, я предложу задачу коллегам по цеху (т. е. С-шникам). Задачка проста:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">for (int n = 0; n &#60; some_value; ++ n)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; switch (...)</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">&nbsp;&nbsp; case 0:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 3:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 4:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 5:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; case 6:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">}</div></ol></div></div></div></div><br>
Задача: модифицировать код так, чтобы при выполнении веток 0, 1 и 4 в <em class='tag-i'>том числе</em> выполнился некий набор действий (назовем его А), и цикл завершился, при выполнении веток 2 и 5 - в том числе выполнился некий набор действий B и цикл завершился. Во всех остальных случаях ни А ни B выполняться не должно и цикл должен крутиться дальше.]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962718</guid>
        <pubDate>Wed, 28 Dec 2005 10:24:26 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962718</link>
        <description><![CDATA[BugHunter: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>А если в постусловии мне нужно знать - в какой строке/столбце/слое это условие выполнилось?</div></div><br>
А это уже зависит от. Вариантов разрулить масса. Это, скорее, зависит от предполагаемых размеров программы и желаем ли мы этот код хоть как то использовать в будущем :yes:. Можно, например, возвращать не bool, а объект &quot;точка&quot;, с невалидным состоянием если условие не выполнилось.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Непонятно, чем лучше дополнительная функция...</div></div><br>
Посмотри на мой пример, разве не красавец? При отладке мы чаще всего будем CheckPoint4Condition пропускать мимо, зная, что именно происходит в нём исключительно из названия :yes:.<br>
<br>
<br>
...я допускаю, что можно придумать извращённые случаи. Но вот 99% случаев к ним не относится. Конец истории.]]></description>
        <author>BugHunter</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962717</guid>
        <pubDate>Wed, 28 Dec 2005 10:24:23 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962717</link>
        <description><![CDATA[Ho Im: <strong class='tag-b'>BugHunter</strong>, человеку, кажется, пример был нужен именно на убогом недоязычке Object Pascal.]]></description>
        <author>Ho Im</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962712</guid>
        <pubDate>Wed, 28 Dec 2005 10:22:21 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962712</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962709'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:14:56+00:00">28.12.05, 10:14</time></span><div class='quote '> Он придерживается той же религии, что и я - читаемость кода</div></div><br>
<br>
В этом я совершенно согласен.<br>
<br>
НО&#33; Я и без Фаулера достаточно книг прочитал. И в каждой из них достаточно ошибок. Поэтому старший это или не старший товарищ, но прежде всего нужно думать своей головой и подходить критически к тому, что пишут &quot;старшие товарищи&quot;, руководствуясь прежде всего целесообразностью и здравым смыслом.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962709'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:14:56+00:00">28.12.05, 10:14</time></span><div class='quote '>Давай, давай, хочу на это посмотреть</div></div><br>
<br>
Без меня уже привели примеры.]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962710</guid>
        <pubDate>Wed, 28 Dec 2005 10:14:56 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962710</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962704'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Flex Ferrum &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:12:39+00:00">28.12.05, 10:12</time></span><div class='quote '>А если в постусловии мне нужно знать - в какой строке/столбце/слое это условие выполнилось?</div></div><br>
<br>
Да даже если и надо знать. Непонятно, чем лучше дополнительная функция...]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962709</guid>
        <pubDate>Wed, 28 Dec 2005 10:14:56 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962709</link>
        <description><![CDATA[BugHunter: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Начнем с того, что пример надуман и задача поставлена некрасиво.</div></div><br>
Пример абсолютно реальный, 3-х мерность - это ещё что, вот когда у нас в задаче 9 и более параметров... я бы посмотрел на того героя, который бы корректно разрулил это goto-ами.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ты апологет Фаулера?</div></div><br>
а ты читал его? У него книжка состоит из противоположных советов:<br>
&quot;выделите&quot; / &quot;соберите&quot;, в зависимости от ты можешь выбрать что нибудь на свой вкус :). Он придерживается той же религии, что и я - читаемость кода :).<br>
<br>
<br>
..Хоим, я вижу, ты маргинал во всём. Это.. хм. Странно :yes:<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Не надо молиться на знаменитости. Они тоже ошибаются. Им точно так же свойственны заблуждения. </div></div><br>
Я не молюсь, а всего лишь учусь у старших товарищей. Чего и вам желаю.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Не 20, а всего один;)<br>
Ладно. Лучше все-таки на конкретном примере. Сейчас сделаю.</div></div><br>
Давай, давай, хочу на это посмотреть :yes:]]></description>
        <author>BugHunter</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962704</guid>
        <pubDate>Wed, 28 Dec 2005 10:12:39 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962704</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962697'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T10:05:33+00:00">28.12.05, 10:05</time></span><div class='quote '>Вот тебе правильный ответ.</div></div><br>
А если в постусловии мне нужно знать - в какой строке/столбце/слое это условие выполнилось?]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962699</guid>
        <pubDate>Wed, 28 Dec 2005 10:08:47 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962699</link>
        <description><![CDATA[Демо: <strong class='tag-b'>BugHunter</strong><br>
<br>
Кхм. Чем лучше вызов функции, чем один безусловный переход?]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962697</guid>
        <pubDate>Wed, 28 Dec 2005 10:05:33 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962697</link>
        <description><![CDATA[BugHunter: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Бухантер, я все понимаю, но за такое название функции я бы вспомнил разработчика очень многими &quot;добрыми&quot; словами. Назначение функции должно быть понятным из его названия. А смотря на метод CheckPoints4Condition, который, к тому же, вызывается всего из одного места, я буду очень долго гадать - а зачем и кому он понадобился...</div></div><br>
Ну, к данному названию придираться не стоит, я его придумал за 0.5 секунды. Тут всё зависит от конкретного условия. CheckPoints4Condition - за это я бы тоже растерзал :).<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Добавлено Сегодня, 12:49<br>
Цитата (Ho Im @ Сегодня, 12:40)<br>
О&#33;<br>
</div></div><br>
<br>
Хоим, такой большой, а дурачком притворяешься.<br>
Вот тебе правильный ответ.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool CheckPoint4Condition( CMatrix* matrix )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;for ( int i = 0; i &#60; matrix.GetMaxX(); i++ ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;for ( int j = 0; i &#60; matrix.GetMaxY(); j++ ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for ( int k = 0; i &#60; matrix.GetMaxZ(); k++ ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( condition ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;return false;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">//...</div><div class="code_line">&nbsp;</div><div class="code_line">if ( CheckPoint4Condition( &amp;matrix ) ) {</div><div class="code_line">&nbsp;&nbsp;//условие выполнилось &nbsp;</div><div class="code_line">} else {</div><div class="code_line">&nbsp;&nbsp;//беда с условием</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Гм. Кто-то еще (в условии задачи) хотел красивости решения. :whistle: Это раз. Второй момент. В каком варианте больше потенциальных источников ошибок - в варианте с goto или без него?</div></div><br>
:yes:]]></description>
        <author>BugHunter</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962694</guid>
        <pubDate>Wed, 28 Dec 2005 10:02:33 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962694</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962685'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Ho Im &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T09:55:15+00:00">28.12.05, 09:55</time></span><div class='quote '>Начнем с того, что пример надуман и задача поставлена некрасиво.</div></div><br>
На счет надуманности примера... Ну как тебе сказать, я, когда ковырялся в алгоритмах уравнивания геодезических сетей, достаточно часто сталкивался с необходимостью подобного нагромождения циклов и постпроцессинга результатов.]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962686</guid>
        <pubDate>Wed, 28 Dec 2005 09:55:24 +0000</pubDate>
        <title>Аналог функции GOTO Бейсика</title>
        <link>https://forum.sources.ru/index.php?showtopic=125327&amp;view=findpost&amp;p=962686</link>
        <description><![CDATA[Демо: Во. Здесь, надеюсь, все правильно?[/quote]<br>
<br>
А здесь дополнительное условие в каждом цикле разве не усложняет код? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-12-28T09:57:21+00:00">28.12.05, 09:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=125327&view=findpost&p=962667'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BugHunter &#064; <time class="tag-quote__quoted-time" datetime="2005-12-28T09:40:18+00:00">28.12.05, 09:40</time></span><div class='quote '>и вообще, что я тут распинаюсь, ты прочитай для начала хотя бы Фаулера, что ли.</div></div><br>
<br>
Ты апологет Фаулера?<br>
<br>
Не надо молиться на знаменитости. Они тоже ошибаются. Им точно так же свойственны заблуждения. <br>
<br>
]]></description>
        <author>Демо</author>
        <category>Holy Wars</category>
      </item>
	
      </channel>
      </rss>
	