<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Eine Frage am Rande (&amp;quot;Goto&amp;quot;?)]]></title><description><![CDATA[<p>Hallo,<br />
ich wollte nur mal fragen, was es mit dem Befehl &quot;Goto&quot; auf sich hat. Ich lese gerade ein Buch über C++ und in dem steht, dass man es auf jeden Fall vermeiden sollte diesen Befehl zu benutzen. Es scheint mir aber doch ganz sinnvoll, wenn man zu verschiedenen abschnitten im code springen kann. Was ist also so schlecht an diesem Befehl? Giebt es da eventuell einen Haken oder bug oder sowas??<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144195/eine-frage-am-rande-quot-goto-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 14:50:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144195.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Apr 2006 19:08:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 19:08:20 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich wollte nur mal fragen, was es mit dem Befehl &quot;Goto&quot; auf sich hat. Ich lese gerade ein Buch über C++ und in dem steht, dass man es auf jeden Fall vermeiden sollte diesen Befehl zu benutzen. Es scheint mir aber doch ganz sinnvoll, wenn man zu verschiedenen abschnitten im code springen kann. Was ist also so schlecht an diesem Befehl? Giebt es da eventuell einen Haken oder bug oder sowas??<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038126</guid><dc:creator><![CDATA[beginner23]]></dc:creator><pubDate>Sat, 15 Apr 2006 19:08:20 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 19:09:37 GMT]]></title><description><![CDATA[<p>Es gibt halt fast immer bessere Möglichkeiten. Die Zahl der Fälle, wo die beste Lösung ein goto ist, ist so gering, dass man dieses Schlüsselwort ohne Probleme aus der Sprache entfernen könnte und nix würde abgehen. Anfängern gibt man deshalb natürlich gerne den Tipp, es einfach nicht zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038129</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 15 Apr 2006 19:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 19:19:07 GMT]]></title><description><![CDATA[<p>Mit dem befehl goto machst du dein ganzes script total unübersichtlich, da du mit ihm an jede beliebige Stelle im Code springen kannst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038137</guid><dc:creator><![CDATA[Fred123]]></dc:creator><pubDate>Sat, 15 Apr 2006 19:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 19:34:54 GMT]]></title><description><![CDATA[<p>Uhahaha jetzt muss ich natürlich auch meinen Senf dazugeben(*zwinker*)</p>
<p>Imho erlauben Campiler manche Dinge nicht, bzw springen nicht exakt zum Label(Weil es u.U. nicht geht)</p>
<pre><code class="language-cpp">goto label;
int x;

label:
if(x == 3)
 tuwas();
x = 3;

tuwasanderes();
</code></pre>
<p>Wird zu tuwasanderes(); springen, wobei das ein schlechtes Beispiel ist, weil man eigentlich das dazwischen wegoptimieren könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Das ist ein weiterer Beweis für Fred123's Antwort.</p>
<p>Sei noch zuletzt gesagt:<br />
Anfänger benutzen ogt goto(es sei den sie kennen's nich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )<br />
Fortgeschrittene benutzen es nie<br />
Erfahrene benutzen es manchmal</p>
<p>Ich sag nich ob das stimmt oder nich, sonst gib's ne Diskusion!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038151</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Sat, 15 Apr 2006 19:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 20:18:55 GMT]]></title><description><![CDATA[<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038207</guid><dc:creator><![CDATA[Praetorian]]></dc:creator><pubDate>Sat, 15 Apr 2006 20:18:55 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 20:46:35 GMT]]></title><description><![CDATA[<blockquote>
<p>aus [...] Performacegründen</p>
</blockquote>
<p>Stimmt. Wenn ich mir mein Assembler Listing im Compiler anschaue... das ist schon verdammt komplex mit so einem goto aus einer Schleife zu springen. Brauch das viele Befehle... und die Laufzeit erst...</p>
<p>Und wie du <strong>break</strong> nicht verwenden willst <em>und dann auch noch</em> lesbaren und schnellen Code schreiben willst ist mir ein Rätsel...</p>
<p>Du machst dann eher so</p>
<pre><code class="language-cpp">bool ok = true;
for(int i = 0;i &lt; 100 &amp;&amp; ok; ++i){
  ...
  if(fehler())     //Hoffen dass wir noch zum Schleifenende kommen
    ok = false;
}
</code></pre>
<p>gell?</p>
<p>Ich finde auch immer das break überhauptnicht für sich spricht. break, break... brechen! Ne... da wird doch gar nix gebrochen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038217</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Sat, 15 Apr 2006 20:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sat, 15 Apr 2006 23:42:07 GMT]]></title><description><![CDATA[<p>das problem mit goto ist, dass sich der programmfluss teilweise nicht mehr direkt aus dem quellcode erschliesst. es kann teilweise sehr unübersichtlich werden, wenn an dutzende verschiedene stellen gesprungen wird, mal nach &quot;oben&quot;, mal nach &quot;unten&quot; usw.</p>
<p>break und continue hingegen sorgen nur dafür, dass ein codeblock übersprungen oder abgebrochen wird. egal was in einem block mit break oder continue passiert, es wird auf jeden fall der nachfolgende block als nächstes abgearbeitet.</p>
<p>break und continue sorgen sogar häufig dafür, dass code übersichtlicher wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038262</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 15 Apr 2006 23:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 10:00:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Praetorian schrieb:</p>
<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>ich finde Pauschalisierungen pauschal schlecht. Denn in der Kernel- bzw. Treiberprogrammierung z.B. wird goto ständig verwendet, und zwar gerade wegen der Übersichtlichkeit. Deiner Aussage nach würde ja kein Kernelprogrammierer etwas auf sich halten... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><a href="http://ezs.kr.hsnr.de/TreiberBuch/html/sec.technik.html" rel="nofollow">http://ezs.kr.hsnr.de/TreiberBuch/html/sec.technik.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038358</guid><dc:creator><![CDATA[CarstenJ]]></dc:creator><pubDate>Sun, 16 Apr 2006 10:00:11 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 10:20:17 GMT]]></title><description><![CDATA[<p>Es mag ja sein das goto unter C manchmal noch nützlich, aber unter C++ braucht man es nie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038369</guid><dc:creator><![CDATA[asdfasdf]]></dc:creator><pubDate>Sun, 16 Apr 2006 10:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 10:39:28 GMT]]></title><description><![CDATA[<p>CarstenJ schrieb:</p>
<blockquote>
<p>ich finde Pauschalisierungen pauschal schlecht.</p>
</blockquote>
<p>ich halte sogar alle generalisierungen für falsch.</p>
<blockquote>
<p>Denn in der Kernel- bzw. Treiberprogrammierung z.B. wird goto ständig verwendet, und zwar gerade wegen der Übersichtlichkeit. Deiner Aussage nach würde ja kein Kernelprogrammierer etwas auf sich halten... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>korrekt.</p>
<blockquote>
<p><a href="http://ezs.kr.hsnr.de/TreiberBuch/html/sec.technik.html" rel="nofollow">http://ezs.kr.hsnr.de/TreiberBuch/html/sec.technik.html</a></p>
</blockquote>
<p>da steht</p>
<blockquote>
<p>Im Wesentlichen wird innerhalb des Linux-Kernels goto immer im gleichen Konstrukt verwendet, nämlich um aus einer Funktion auszuspringen und dabei durchgeführte Initialisierungen wieder rückgängig zu machen.</p>
</blockquote>
<p>wer unter c++ sowas macht statt destruktoren zu benutzen, der taugt wenig.<br />
in c ist goto was anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038377</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 10:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 11:03:35 GMT]]></title><description><![CDATA[<p>Praetorian schrieb:</p>
<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>Ähem, wenn du auf break verzichtest, bin ich gespannt, wie du ne switch Anweisung schreibst, oder ist die jetzt auch schon böse?<br />
Imho haben break und continue ihre daseinsberechtigung.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038386</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 16 Apr 2006 11:03:35 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 11:08:14 GMT]]></title><description><![CDATA[<p>Man der Mensch meint ja auch ein break&amp;Co würden die Performance verschlechtern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038390</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Sun, 16 Apr 2006 11:08:14 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 11:13:56 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>Ähem, wenn du auf break verzichtest, bin ich gespannt,</p>
</blockquote>
<p>durchs bessere return.</p>
<blockquote>
<p>wie du ne switch Anweisung schreibst, oder ist die jetzt auch schon böse?</p>
</blockquote>
<p>in der tat, switch rutsch ab zu den bösen buben. die hauptaufgaben *waren*</p>
<p>je nach eingabe was machen<br />
ersetzt durch nachgucktabellen mit funktionsobjekten (oft mit dem geschenk, daß die tabellen benutzerkonfigurierbar sind)</p>
<p>je nach extem typ was machen<br />
ersetzt durch virtuelle funktionen</p>
<blockquote>
<p>Imho haben break und continue ihre daseinsberechtigung.</p>
</blockquote>
<p>continue senkt bei vortests in schleifen die versachachtelungstiefe und macht übersichtlicher. für break sehe ich eher nachteile, es verleitet einen zur strukturierten programmierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038394</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 11:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 11:22:21 GMT]]></title><description><![CDATA[<p>Praetorian schrieb:</p>
<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>ich habe zufällig lebenden c++-code mit goto drin. wenn ich mich recht erinnere an zwei stellen. ich durchsuche mal die platte.<br />
würdest du so nett sein und mich in der korrekten verwendung von schleifen unterweisen, indem du meine funktionen, die goto enthalten, umschreibst, daß sie kein goto mehr verwenden und dabei lesbarer und/oder performanter werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038399</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 11:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 11:36:53 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Praetorian schrieb:</p>
<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>ich habe zufällig lebenden c++-code mit goto drin. wenn ich mich recht erinnere an zwei stellen. ich durchsuche mal die platte.<br />
würdest du so nett sein und mich in der korrekten verwendung von schleifen unterweisen, indem du meine funktionen, die goto enthalten, umschreibst, daß sie kein goto mehr verwenden und dabei lesbarer und/oder performanter werden?</p>
</blockquote>
<p>Wird jetzt sehr schwierg ohne den Code zu haben, ist aber nur so ne kleinigkeit am Rande.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038408</guid><dc:creator><![CDATA[Ähm]]></dc:creator><pubDate>Sun, 16 Apr 2006 11:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 12:11:26 GMT]]></title><description><![CDATA[<p>hab nur zwei gefunden, die in code stecken, den man nachvollziehen kann.<br />
<a href="http://www.volkard.de/siff/goto.rar" rel="nofollow">http://www.volkard.de/siff/goto.rar</a></p>
<p>wobei zu bemerken ist, daß der folgende durchaus goto verwendet, um lesbaren code bei großer performance zu erhalten.</p>
<pre><code class="language-cpp">//http://www.geocities.com/acmesofties/wpcq110.htm
/*
the following code is the macro expansion of

#define compare(i,j)\
	if(a[i][0]!=a[j][0] | a[i][1]!=a[j][1]) goto label##i##j;\
	if(a[i][2]!=a[j][2] | a[i][3]!=a[j][3] | a[i][4]!=a[j][4]) goto label##i##j;\
	return true;\
label##i##j:\

int wpc107(int a[5][5])
{
	compare(0,1)
	compare(0,1)
	compare(0,3)
	compare(0,4)
	compare(1,2)
	compare(1,3)
	compare(1,4)
	compare(2,3)
	compare(2,4)
	compare(3,4)
	return false;
}

//sometimes i used | instead of || or if to expensive jmps.
*/

int wpc107(int a[5][5])
{
	if(a[0][0]!=a[1][0] | a[0][1]!=a[1][1]) goto label01;
	if(a[0][2]!=a[1][2] | a[0][3]!=a[1][3] | a[0][4]!=a[1][4]) goto label01;
	return true;
label01:
	if(a[0][0]!=a[2][0] | a[0][1]!=a[2][1]) goto label02;
	if(a[0][2]!=a[2][2] | a[0][3]!=a[2][3] | a[0][4]!=a[2][4]) goto label02;
	return true;
label02:
	if(a[0][0]!=a[3][0] | a[0][1]!=a[3][1]) goto label03;
	if(a[0][2]!=a[3][2] | a[0][3]!=a[3][3] | a[0][4]!=a[3][4]) goto label03;
	return true;
label03:
	if(a[0][0]!=a[4][0] | a[0][1]!=a[4][1]) goto label04;
	if(a[0][2]!=a[4][2] | a[0][3]!=a[4][3] | a[0][4]!=a[4][4]) goto label04;
	return true;
label04:
	if(a[1][0]!=a[2][0] | a[1][1]!=a[2][1]) goto label12;
	if(a[1][2]!=a[2][2] | a[1][3]!=a[2][3] | a[1][4]!=a[2][4]) goto label12;
	return true;
label12:
	if(a[1][0]!=a[3][0] | a[1][1]!=a[3][1]) goto label13;
	if(a[1][2]!=a[3][2] | a[1][3]!=a[3][3] | a[1][4]!=a[3][4]) goto label13;
	return true;
label13:
	if(a[1][0]!=a[4][0] | a[1][1]!=a[4][1]) goto label14;
	if(a[1][2]!=a[4][2] | a[1][3]!=a[4][3] | a[1][4]!=a[4][4]) goto label14;
	return true;
label14:
	if(a[2][0]!=a[3][0] | a[2][1]!=a[3][1]) goto label23;
	if(a[2][2]!=a[3][2] | a[2][3]!=a[3][3] | a[2][4]!=a[3][4]) goto label23;
	return true;
label23:
	if(a[2][0]!=a[4][0] | a[2][1]!=a[4][1]) goto label24;
	if(a[2][2]!=a[4][2] | a[2][3]!=a[4][3] | a[2][4]!=a[4][4]) goto label24;
	return true;
label24:
	if(a[3][0]!=a[4][0] | a[3][1]!=a[4][1]) goto label34;
	if(a[3][2]!=a[4][2] | a[3][3]!=a[4][3] | a[3][4]!=a[4][4]) goto label34;
	return true;
label34:
	return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1038416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038416</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 12:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 13:46:17 GMT]]></title><description><![CDATA[<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>Mal so ne Frage: Wie lange programmierst du schon in c++? Für jede switch-anweisung brauchst du den Befehl break, außer du willst es mit tausenden umwegen machen.. Und jedes Programm hat menüs zum auswählen, diese menüs bestehen meistens aus einer switch-anweisung.. also, wenn ich ein großes Programm schreibe benutze ich ziehmlich oft den break-Befehl..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038464</guid><dc:creator><![CDATA[Fred123]]></dc:creator><pubDate>Sun, 16 Apr 2006 13:46:17 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 13:51:58 GMT]]></title><description><![CDATA[<p>Fred123 schrieb:</p>
<blockquote>
<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>Mal so ne Frage: Wie lange programmierst du schon in c++? Für jede switch-anweisung brauchst du den Befehl break, außer du willst es mit tausenden umwegen machen.. Und jedes Programm hat menüs zum auswählen, diese menüs bestehen meistens aus einer switch-anweisung.. also, wenn ich ein großes Programm schreibe benutze ich ziehmlich oft den break-Befehl..</p>
</blockquote>
<p>ähm. das hängt wohl ziemlich stark von der gui-lib ab. ich gehe davon aus, daß den menupunkten methoden zugeordnet werden. und sehe da kein einziges switch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038466</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 13:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 14:08:52 GMT]]></title><description><![CDATA[<p>hallo volkrad! Nehmen wir an, ich will ein Programm programmieren, dass ein Menü ausgibt.. Dann würde der Code meiner meinung nach so lauten:</p>
<pre><code>#include &lt;iostream.h&gt;
int menu();
void Dotaskone();
int main()
{
     bool exit=false;
     for (;;)
     {
          int choice=menu();
          switch(choice);
          {
             case (1):
               Dotaskone();
              [b] break;[/b]// :D 
            case (2)
            exit=true;
            break;
          }
          if (exit)
          break;
      }
     return 0;
}
int menu()
{
    int choice;
    cout&lt;&lt;&quot; ****Menue***\n\n&quot;;
    cout&lt;&lt;&quot;(1)rechteck zeichnen\n&quot;;
    cout&lt;&lt;&quot;(2)Beenden\n \n&quot;;
    cin&gt;&gt; choice;
    return choice;
}
void Dotaskone()
{
  cout&lt;&lt;&quot; Irgendwas machen..\n&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1038472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038472</guid><dc:creator><![CDATA[Fred123]]></dc:creator><pubDate>Sun, 16 Apr 2006 14:08:52 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 14:16:14 GMT]]></title><description><![CDATA[<p>Fred123 schrieb:</p>
<blockquote>
<p>Dann würde der Code meiner meinung nach so lauten:</p>
</blockquote>
<p>nicht zwingend. je weiter man die funktionale zerlegung treibt, desto schwächer wird break und desto stärker wird return.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int menu() {
	cout&lt;&lt;&quot; ****Menue***\n\n&quot;;
	cout&lt;&lt;&quot;(1)rechteck zeichnen\n&quot;;
	cout&lt;&lt;&quot;(2)Beenden\n \n&quot;;
	int choice;
	cin&gt;&gt; choice;
	return choice;
}

void Dotaskone() {
	cout&lt;&lt;&quot; Irgendwas machen..\n&quot;;
}

bool on1(){
	Dotaskone();
	return true;
}

bool on2(){
	return false;
}

bool dispatch(){
	switch(choice){
		case 1: return on1();
		case 2: return on2();
	}
}

int main() {
	while(dispatch(menu()))
		;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1038476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038476</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 14:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 17:11:21 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>Ähem, wenn du auf break verzichtest, bin ich gespannt,</p>
</blockquote>
<p>durchs bessere return.</p>
</blockquote>
<p>Aber dann gefährde ich u.U. Single Entry Single Exit...</p>
<blockquote>
<blockquote>
<p>wie du ne switch Anweisung schreibst, oder ist die jetzt auch schon böse?</p>
</blockquote>
<p>in der tat, switch rutsch ab zu den bösen buben. die hauptaufgaben *waren*</p>
<p>je nach eingabe was machen<br />
ersetzt durch nachgucktabellen mit funktionsobjekten (oft mit dem geschenk, daß die tabellen benutzerkonfigurierbar sind)</p>
</blockquote>
<p>kann man ja auch std::maps nehmen.</p>
<blockquote>
<p>je nach extem typ was machen<br />
ersetzt durch virtuelle funktionen</p>
</blockquote>
<p>Stimmt, aber manchmal ist die Welt nicht nur reines OOP und switch kann praktisch sein.</p>
<p>Fred123 schrieb:</p>
<blockquote>
<blockquote>
<p>Jeder Programmierer, der etwas auf sich hält, benutzt die Befehle 'break', 'continue' und vor allem 'goto' nicht, aus Lesbarkeits- und Performacegründen. Sie lassen sich allesamt durch Verwendung von Schleifen, if-Anweisungen usw. vermeiden.</p>
</blockquote>
<p>Mal so ne Frage: Wie lange programmierst du schon in c++? Für jede switch-anweisung brauchst du den Befehl break, außer du willst es mit tausenden umwegen machen.. Und jedes Programm hat menüs zum auswählen, diese menüs bestehen meistens aus einer switch-anweisung.. also, wenn ich ein großes Programm schreibe benutze ich ziehmlich oft den break-Befehl..</p>
</blockquote>
<p>Mal so ne Frage: Hast du schon mal mit einer aktuellen GUI - Lib gearbeitet? Gtkmm z.B. benutzt Funktoren, um Widgets eine Methode zuzuweisen. Kein switch. Auch QT benutzt kein switch. Zeig mir eine Lib, die (a) gut designt ist und (b) sowas blödes wie switch zur Menüauswahl voraussetzt.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038600</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 16 Apr 2006 17:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 18:16:41 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>Ähem, wenn du auf break verzichtest, bin ich gespannt,</p>
</blockquote>
<p>durchs bessere return.</p>
</blockquote>
<p>Aber dann gefährde ich u.U. Single Entry Single Exit...</p>
</blockquote>
<p>Single Entry haben wir doch eh. und Single Exit ist ja auch inzwischen kompletter müll. wir haben destruktoren und diese regel ist kaputt. wir haben konstrukte wiederentdeckt, die ohne single exit viel einfacher sind und schneller und besser aussehen und die regel ist doppelt kaputt.<br />
das deutete ich schon um 13:13 an mit &quot;für break sehe ich eher nachteile, es verleitet einen zur strukturierten programmierung.&quot; und meine damit die veralteten teile dieser religion, die von dogmatikern weitergefahren und sogar noch verbreitet werden.</p>
<p>GPC schrieb:</p>
<blockquote>
<p>aber manchmal ist die Welt nicht nur reines OOP und switch kann praktisch sein.</p>
</blockquote>
<p>deswegen ist switch auch nicht so böse wie goto. aber 98% der switch-sichtungen sind folge schlechten designs. du fragst dich, wo gut designte gui-libs switch nehmen und ich frage mich überhaupt, wo gut designte software switch nimmt (außer, man benutzt schlechte libs, die einen zwingen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038634</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Apr 2006 18:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Sun, 16 Apr 2006 18:46:10 GMT]]></title><description><![CDATA[<p>Single Entry Single Exit...</p>
<p>das war zu Pascal Zeiten wichtig... oder zumindest üblich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038646</guid><dc:creator><![CDATA[__gast]]></dc:creator><pubDate>Sun, 16 Apr 2006 18:46:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Mon, 17 Apr 2006 04:54:43 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>hab nur zwei gefunden, die in code stecken, den man nachvollziehen kann.<br />
<a href="http://www.volkard.de/siff/goto.rar" rel="nofollow">http://www.volkard.de/siff/goto.rar</a></p>
<p>wobei zu bemerken ist, daß der folgende durchaus goto verwendet, um <strong>lesbaren</strong> code bei großer performance zu erhalten.</p>
<pre><code class="language-cpp">//http://www.geocities.com/acmesofties/wpcq110.htm
/*
the following code is the macro expansion of

#define compare(i,j)\
	if(a[i][0]!=a[j][0] | a[i][1]!=a[j][1]) goto label##i##j;\
	if(a[i][2]!=a[j][2] | a[i][3]!=a[j][3] | a[i][4]!=a[j][4]) goto label##i##j;\
	return true;\
label##i##j:\

int wpc107(int a[5][5])
{
	compare(0,1)
	compare(0,1)
	compare(0,3)
	compare(0,4)
	compare(1,2)
	compare(1,3)
	compare(1,4)
	compare(2,3)
	compare(2,4)
	compare(3,4)
	return false;
}

//sometimes i used | instead of || or if to expensive jmps.
*/

int wpc107(int a[5][5])
{
	if(a[0][0]!=a[1][0] | a[0][1]!=a[1][1]) goto label01;
	if(a[0][2]!=a[1][2] | a[0][3]!=a[1][3] | a[0][4]!=a[1][4]) goto label01;
	return true;
label01:
	if(a[0][0]!=a[2][0] | a[0][1]!=a[2][1]) goto label02;
	if(a[0][2]!=a[2][2] | a[0][3]!=a[2][3] | a[0][4]!=a[2][4]) goto label02;
	return true;
label02:
	if(a[0][0]!=a[3][0] | a[0][1]!=a[3][1]) goto label03;
	if(a[0][2]!=a[3][2] | a[0][3]!=a[3][3] | a[0][4]!=a[3][4]) goto label03;
	return true;
label03:
	if(a[0][0]!=a[4][0] | a[0][1]!=a[4][1]) goto label04;
	if(a[0][2]!=a[4][2] | a[0][3]!=a[4][3] | a[0][4]!=a[4][4]) goto label04;
	return true;
label04:
	if(a[1][0]!=a[2][0] | a[1][1]!=a[2][1]) goto label12;
	if(a[1][2]!=a[2][2] | a[1][3]!=a[2][3] | a[1][4]!=a[2][4]) goto label12;
	return true;
label12:
	if(a[1][0]!=a[3][0] | a[1][1]!=a[3][1]) goto label13;
	if(a[1][2]!=a[3][2] | a[1][3]!=a[3][3] | a[1][4]!=a[3][4]) goto label13;
	return true;
label13:
	if(a[1][0]!=a[4][0] | a[1][1]!=a[4][1]) goto label14;
	if(a[1][2]!=a[4][2] | a[1][3]!=a[4][3] | a[1][4]!=a[4][4]) goto label14;
	return true;
label14:
	if(a[2][0]!=a[3][0] | a[2][1]!=a[3][1]) goto label23;
	if(a[2][2]!=a[3][2] | a[2][3]!=a[3][3] | a[2][4]!=a[3][4]) goto label23;
	return true;
label23:
	if(a[2][0]!=a[4][0] | a[2][1]!=a[4][1]) goto label24;
	if(a[2][2]!=a[4][2] | a[2][3]!=a[4][3] | a[2][4]!=a[4][4]) goto label24;
	return true;
label24:
	if(a[3][0]!=a[4][0] | a[3][1]!=a[4][1]) goto label34;
	if(a[3][2]!=a[4][2] | a[3][3]!=a[4][3] | a[3][4]!=a[4][4]) goto label34;
	return true;
label34:
	return false;
}
</code></pre>
</blockquote>
<p>Ne, hätte ich auch nicht lesbarer hin bekommen. Schon so aussagekräftige Namen wie a und label##. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038857</guid><dc:creator><![CDATA[123456z7u8]]></dc:creator><pubDate>Mon, 17 Apr 2006 04:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Mon, 17 Apr 2006 08:44:10 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>Ähem, wenn du auf break verzichtest, bin ich gespannt,</p>
</blockquote>
<p>durchs bessere return.</p>
</blockquote>
<p>Aber dann gefährde ich u.U. Single Entry Single Exit...</p>
</blockquote>
<p>Single Entry haben wir doch eh. und Single Exit ist ja auch inzwischen kompletter müll. wir haben destruktoren und diese regel ist kaputt. wir haben konstrukte wiederentdeckt, die ohne single exit viel einfacher sind und schneller und besser aussehen und die regel ist doppelt kaputt.</p>
</blockquote>
<p>Also gut, nieder mit SESE. Ich habe es eh nie befolgt, weil ich lieber da raus bin, wo's sinnvoll war <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<blockquote>
<p>das deutete ich schon um 13:13 an mit &quot;für break sehe ich eher nachteile, es verleitet einen zur strukturierten programmierung.&quot; und meine damit die veralteten teile dieser religion, die von dogmatikern weitergefahren und sogar noch verbreitet werden.</p>
</blockquote>
<p>Hättest du nicht mal Lust, einen Styleguide zu schreiben? In die Richtung &quot;Volkards coding standards&quot; oder so?</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038883</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 17 Apr 2006 08:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage am Rande (&amp;quot;Goto&amp;quot;?) on Mon, 17 Apr 2006 09:22:11 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>Hättest du nicht mal Lust, einen Styleguide zu schreiben? In die Richtung &quot;Volkards coding standards&quot; oder so?</p>
</blockquote>
<p>hab damit sogar schonmal angefangen. <a href="http://volkard.de/siff/StyleGuide.doc.rar" rel="nofollow">http://volkard.de/siff/StyleGuide.doc.rar</a> (oh, in wenigen monaten hat die datei ihren 10. geburtstag).<br />
aber der wurde so nichts. ich finde, daß stil-regeln auf jeden fall gut begründet sein müssen. sonst passieren doch nur sachen wie</p>
<blockquote>
<p>Ich habe es eh nie befolgt, weil ich lieber da raus bin, wo's sinnvoll war</p>
</blockquote>
<p>damit mutierte der styleguide aber zu nem abklatsch von &quot;effektiv c++ programmieren&quot;. und später zum c++-kurs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1038894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1038894</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 17 Apr 2006 09:22:11 GMT</pubDate></item></channel></rss>