<?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[Totaler Anfänger mit wenig Ahnung^^]]></title><description><![CDATA[<p>Hallo Leute.</p>
<p>Ich bin neu in diesem Forum und auch neueinsteiger was C++ angeht. Mit dem Programmieren hab ich von knapp einem halben Jahr in einer Wirtschaftsinformatikschule angefangen und bin nicht sehr weit mit meinen Kenntnissen, ich bin nicht halb so weit wie die meisten von euch, und will euch erst garnicht lange belässtigen mit diesem für mich verflucht grossen, aber für euch überhaupt kein Problem1^^. Also komme ich gleich zum Problem^^</p>
<p>Wir haben in der Schule ein Projekt &quot;Übungs Auftrag&quot; das bis nächste Woche fertig sein muss, es geht darum das wir uns anstellen wie irgendwelche Profis in C++ anstellen und ein Programm mit Planung usw. erstellen. Ich habe mich entschieden ein Programm zu erstellen, desen Funktion und Aufgabe darin besteht, die grösste Zahl von 5 eingegebenen raussucht. Mein Problem jetzt, ich weiss zwar wie ich die Eingabe des Users verlangen kann und wie ich etwas ausgeben lassen kann, aber was ich nicht richtig verstehe ist das Thema mit den &quot;for und &quot;while&quot; usw. schleiffen, um etwas richtiges Reissen zu können, es wäre sehr Nett wenn ihr mir helfen könntet und mir den Queltext von euch zeigen würdet. Danke im Vorraus!!.</p>
<p>MFG Antikoerper.K</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167682/totaler-anfänger-mit-wenig-ahnung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 02:22:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167682.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Dec 2006 17:58:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 17:58:40 GMT]]></title><description><![CDATA[<p>Hallo Leute.</p>
<p>Ich bin neu in diesem Forum und auch neueinsteiger was C++ angeht. Mit dem Programmieren hab ich von knapp einem halben Jahr in einer Wirtschaftsinformatikschule angefangen und bin nicht sehr weit mit meinen Kenntnissen, ich bin nicht halb so weit wie die meisten von euch, und will euch erst garnicht lange belässtigen mit diesem für mich verflucht grossen, aber für euch überhaupt kein Problem1^^. Also komme ich gleich zum Problem^^</p>
<p>Wir haben in der Schule ein Projekt &quot;Übungs Auftrag&quot; das bis nächste Woche fertig sein muss, es geht darum das wir uns anstellen wie irgendwelche Profis in C++ anstellen und ein Programm mit Planung usw. erstellen. Ich habe mich entschieden ein Programm zu erstellen, desen Funktion und Aufgabe darin besteht, die grösste Zahl von 5 eingegebenen raussucht. Mein Problem jetzt, ich weiss zwar wie ich die Eingabe des Users verlangen kann und wie ich etwas ausgeben lassen kann, aber was ich nicht richtig verstehe ist das Thema mit den &quot;for und &quot;while&quot; usw. schleiffen, um etwas richtiges Reissen zu können, es wäre sehr Nett wenn ihr mir helfen könntet und mir den Queltext von euch zeigen würdet. Danke im Vorraus!!.</p>
<p>MFG Antikoerper.K</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191363</guid><dc:creator><![CDATA[Antikoerper.K]]></dc:creator><pubDate>Wed, 13 Dec 2006 17:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 18:32:41 GMT]]></title><description><![CDATA[<p><a href="http://www.pronix.de/pronix-619.html" rel="nofollow">http://www.pronix.de/pronix-619.html</a><br />
(Das Buch behandelt C, was aber in deinem Fall<br />
keine Rolle spielen sollte, einfach alle printf<br />
gegen cout ersetzten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> oder sollt ihr mit Klassen arbeiten?)</p>
<p>Ein sehr guter Einstieg in das thema kontrollstrukturen.<br />
Auch for und while schleifen werden erklärt.</p>
<p>Soweit ich das Thema versteh sollt ihr wie die &quot;Profis&quot;<br />
euer Projekt erstmal durchplanen.<br />
Hast du das schon gemacht?</p>
<p>Ich hab mal Mitleid...<br />
Ich hock grad frustriert vor meinem Französischbuch<br />
und kann nachvollziehen wie es ist wenn man nix blickt.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

#define NUM 5

int main() {

    int werte[NUM];

    cout &lt;&lt; &quot;Programm gestartet&quot; &lt;&lt; endl;

    EINGABE:
    cout &lt;&lt; &quot;Bitte geben sie &quot; &lt;&lt; NUM &lt;&lt; &quot; Werte ein&quot; &lt;&lt; endl;

    try {
        //Werte einlesen
        for(int i = 0; i &lt; NUM; i++) {
            cin &gt;&gt; werte[i];
            //Ungültige Eingabe abfangen
            if(!cin.good())
                throw werte[i];
        }
    }
    //Ungültige Eingabe behandeln
    catch (int x) {
        cin.clear();
        cin.ignore(20,'\n');
        cout &lt;&lt; &quot;Ungültige Eingabe: &quot; &lt;&lt; x &lt;&lt; endl;
        goto EINGABE;
    }

    //Sortieren nach der Größe
    for(int i = 0; i &lt; NUM-1; i++) {
        for(int j = i+1; j &lt; NUM; j++) {
            if(werte[i] &lt;= werte[j])
                continue;
            int cache = werte[i];
            werte[i] = werte[j];
            werte[j] = cache;
        }
    }

    //Ausgabe
    cout &lt;&lt; &quot;Ihre &quot; &lt;&lt; NUM &lt;&lt; &quot; eingegebenen Werte der Größe nach sortiert&quot; &lt;&lt; endl;
    for(int i = 0; i &lt; NUM; i++) {
        cout &lt;&lt; werte[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    cout &lt;&lt; &quot;Programm beendet!&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1191367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191367</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Wed, 13 Dec 2006 18:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 18:26:38 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Also als Wirtschaftsinformatiker solltest du doch google und so weiter kennen.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191371</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 13 Dec 2006 18:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 20:29:44 GMT]]></title><description><![CDATA[<p>goto, dass ist aber extrem hässlicher Programmierstil, bitte keinem Anfänger sowas angewöhnen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191419</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Wed, 13 Dec 2006 20:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 20:29:24 GMT]]></title><description><![CDATA[<p>... hrmpf der hat das irgendwie noch mal gepostet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191421</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Wed, 13 Dec 2006 20:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 21:05:25 GMT]]></title><description><![CDATA[<p>Checker&amp;Murckser schrieb:</p>
<blockquote>
<p>goto, dass ist aber extrem hässlicher Programmierstil, bitte keinem Anfänger sowas angewöhnen</p>
</blockquote>
<p>Das ist immer irgendwie die Standardantwort, wenn irgendwer in irgendeinem Quellcode &quot;goto&quot; liest.<br />
Fakt ist aber IMHO, dass es manchmal einfach sauberer ist ein goto zu benutzen, vor allem, wenn es um so simple Sachen wie Zahlen sortieren geht. Klar gibt es auch ein dutzend andere Ansätze, wie man obiges Problem lösen kann, aber ein einziges! goto tut hier keinem Weh.</p>
<p>Und im übrigen: Wenn es so wahnsinnig schlimm und schlecht ist, mal goto zu benutzen, warum wird es dann nicht einfach vom offiziellem C++-Komitee als deprecated eingestuft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191433</guid><dc:creator><![CDATA[W0lf]]></dc:creator><pubDate>Wed, 13 Dec 2006 21:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 21:14:48 GMT]]></title><description><![CDATA[<p>Naja, diesen Teil kann man aber mit Hilfe einer do-while-Schleife schöner machen. Wirkt zumindest doch etwas übersichtlicher als ein goto es tut. goto macht finde ich mehr Sinn, für Sprünge aus mehrfach verschachtelten Blöcken (meist bei Schleifen), die man sonst über mehrere flags abfragen müsste. Hier sollte man ein flag benutzen, es sei denn man hat so wenig Speicher, dass man sich ne boolsche Variable nicht mehr leisten kann.</p>
<pre><code class="language-cpp">bool falseInput;
do {
    falseInput = false;
    cout &lt;&lt; &quot;Bitte geben sie &quot; &lt;&lt; NUM &lt;&lt; &quot; Werte ein&quot; &lt;&lt; endl;

    try {
        //Werte einlesen
        for(int i = 0; i &lt; NUM; i++) {
            cin &gt;&gt; werte[i];
            //Ungültige Eingabe abfangen
            if(!cin.good())
                throw werte[i];
        }
    }
    //Ungültige Eingabe behandeln
    catch (int x) {
        cin.clear();
        cin.ignore(20,'\n');
        cout &lt;&lt; &quot;Ungültige Eingabe: &quot; &lt;&lt; x &lt;&lt; endl;
        falseInput = true;
    }
} while(falseInput);
</code></pre>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191438</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 13 Dec 2006 21:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 21:49:42 GMT]]></title><description><![CDATA[<p>NewProggie schrieb:</p>
<blockquote>
<p>Fakt ist aber IMHO, dass es manchmal einfach sauberer ist ein goto zu benutzen, vor allem, wenn es um so simple Sachen wie Zahlen sortieren geht.</p>
</blockquote>
<p>Das ist schlichtweg falsch. Und selbst wenn es richtig wäre, müsste diese Behauptung immernoch bewiesen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191452</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 13 Dec 2006 21:49:42 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 22:07:15 GMT]]></title><description><![CDATA[<p>was ist goto?? noch nie gehört;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191460</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 13 Dec 2006 22:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 22:10:59 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>was ist goto?? noch nie gehört;)</p>
</blockquote>
<p>Sieht man doch oben. Es springt zu einer angegebenen (Sprung-)Marke.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191462</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 13 Dec 2006 22:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 22:23:38 GMT]]></title><description><![CDATA[<p>war eigntlic ironie.. aber trozdem danke;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191464</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 13 Dec 2006 22:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Wed, 13 Dec 2006 22:53:05 GMT]]></title><description><![CDATA[<p>Ja schon. Man sollte es aber zumindest kennen bzw. verstanden haben. Das man es möglichst vermeiden sollte, heißt nicht unbedingt gleich das man es am Besten aus seinem Gedächtnis löscht. Es kann durchaus ab und an Sinn machen auch mal ein goto zu verwenden. Auch wenn das eher der seltenere Fall (gibt mehr als genug bessere alternativen) ist.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191476</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 13 Dec 2006 22:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 09:55:16 GMT]]></title><description><![CDATA[<p>Vellas schrieb:</p>
<blockquote>
<p>Ja schon. Man sollte es aber zumindest kennen bzw. verstanden haben. ...</p>
</blockquote>
<p>&quot;Ironie&quot; bedeutet in diesem Zusammenhang, dass Boris durchaus &quot;goto&quot; kannte, wohl auch verstanden hat ....<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191601</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 14 Dec 2006 09:55:16 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 10:03:25 GMT]]></title><description><![CDATA[<p><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="👍"
    /> korrekt;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191606</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 14 Dec 2006 10:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 11:59:58 GMT]]></title><description><![CDATA[<p>Aber scheinbar nicht jeder in diesem Thread. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Abgesehen davon ist der Kommentar, egal ob ironisch oder nicht, nicht wirklich Sinnvoll. Macht mehr so den Eindruck man sollte es am Besten nicht kennen und das ist meiner Auffassung nach genau so falsch, wie es an unnötigen Stellen einzusetzen.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191680</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 14 Dec 2006 11:59:58 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 12:32:34 GMT]]></title><description><![CDATA[<p>ähm,. eine weiterführende diskussion der goto angelegenheit gehört zwar zu spam, aber ich möchte den moderator um nachsicht bitten.</p>
<p>Goto is schick,. in asm wird andauernd jmp benutzt,.. warum net in c/c++, vb, tp, etc... ??? mal ehrlich es is schnell, richtig angewendet isses sauber, und frisst wenig speicher,...<br />
mfg zeusi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191710</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Thu, 14 Dec 2006 12:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 12:44:40 GMT]]></title><description><![CDATA[<p>zeusosc schrieb:</p>
<blockquote>
<p>Goto is schick,. in asm wird andauernd jmp benutzt,.. warum net in c/c++, vb, tp, etc... ??? mal ehrlich es is schnell, richtig angewendet isses sauber, und frisst wenig speicher,...</p>
</blockquote>
<p>Also, entweder bist Du ein Troll oder Du hast keine Ahnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191718</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 14 Dec 2006 12:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 12:47:51 GMT]]></title><description><![CDATA[<p>zeusosc schrieb:</p>
<blockquote>
<p>Goto is schick,. in asm wird andauernd jmp benutzt,.. warum net in c/c++, vb, tp, etc... ??? mal ehrlich es is schnell, richtig angewendet isses sauber, und frisst wenig speicher,...<br />
mfg zeusi</p>
</blockquote>
<p>Naja, Assembler hat auch nicht so viele Schleifenkonstrukte (außer loop und die Befehle zur Stringverarbeitung fallen mir grad keine ein) und auch kein if-then-else (nur wenige Implementierungen zumindest). Da hast du wenig Möglichkeiten um jmp wegzubekommen. Aber in C++ würde ich es nicht bevorzugen, es macht die Lesbarkeit der Programme schwerer und bei großen Programmen kann sowas sehr unübersichtlich werden. In Assembler passt sowas auch rein, aber es passt weniger gut in höhere Programmiersprachen. Und ob ich jetzt eine Variable einsetze und Abfrage oder mit einem goto springe wird mein Programm nicht wesentlich schneller machen. Ich finde es besser als eine Exception zu werfen (was ja auch gerne gemacht wird). Man sollte aber nicht an so unnützlichen Stellen optimieren die nicht relevant sind. Ich glaube nen Byte haben die meisten Systeme noch frei für ein Flag. Und dann hat man doch wesentlich lieber eine gute Übersicht, als ein Programm was 2 Takte schneller läuft.</p>
<p>Eventuell sollte diese Diskussion zu goto lieber abgetrennt werden von diesem Topic.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191723</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 14 Dec 2006 12:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 13:40:06 GMT]]></title><description><![CDATA[<p>Das Problem mit dem &quot;richtig Angewand&quot; ist halt, das man dies nicht garantieren kann.</p>
<p>Zu meiner Zeit als Azubi fand ich immer diese verschachtelungen schlimm:</p>
<pre><code class="language-cpp">if(resoruceA ok)
{
     if(resourceB ok)
     {
          if(resourceC ok)
          {
              if(resourceD ok)
              {
                  if(resourceE ok)
                  {
                     // Mit den Resourcen arbeiten (irgendwo jenseits der 30 Spalten)
                     RäumeE auf
                  }
                  Räume D auf
              }
              Räume C auf
         }
         Räume B auf
     }
     Räume A auf
}
</code></pre>
<p>Das wollte ich nicht, also kam man zu einem;</p>
<pre><code class="language-cpp">if(!Resource A ok)
   {
      return;
   }

   if(!Resource B ok)
   {
      Raeume A auf;
      return;
   }

   if(!Resource C ok)
   {
      Raeume A auf;
      Raeume B auf;
      return;
   }

   if(!Resource D ok)
   {
      Raeume A auf;
      Raeume B auf;
      Raeume C auf;
      return;
   }

   if(!Resource E ok)
   {
      Raeume A auf;
      Raeume B auf;
      Raeume C auf;
      Raeume D auf;
      return;
   }

    // Mit Resourcen arbeiten

      Raeume A auf;
      Raeume B auf;
      Raeume C auf;
      Raeume D auf;
      Raeume E auf;

//    [...]
</code></pre>
<p>Damit war ich diese schleifen los aber wehe es kommt eine neue Resource dazu - wer denkt schon daran die überall einzutragen ?</p>
<p>Also noch schlimmer als die Schleifen und noch schwerer zu lesen.</p>
<p>Ich hab dann liebendgerne einfach mit einer Sprungmarke gearbeitet:</p>
<pre><code class="language-cpp">if(!Resource A ok)
      goto cleanup;

   if(!ResourceB ok)
      goto cleanup;

   if(!ResourceC ok)
      goto cleanup;

    if(!RecourceD ok)
      goto cleanup;

    if(!RecourceE ok)
      goto cleanup;

   // Mit den Resourcen arbeiten

cleanup:
    if(ResourceA ok)
       Räume A auf

    if(ResourceB ok)
       Räume B auf

    if(ResourceC ok)
       Räume C auf

    if(ResourceD ok)
       Räume D auf

    if(ResourceE ok)
       Räume E auf

}
</code></pre>
<p>Da war ich damals unheimlich stolz drauf, weil man einfach den Quellcode lesen konnte und sich nicht durch mehrfach verschatelte IFs hangeln musste.</p>
<p>War man am eigentlichen Quellcode angelangt, konnte man sichergehen das alles geklappt hatte, musste nicht im Editor Scrollen und konnte einfach alles was zum Aufräumen benötigt wird ans Ende stellen.</p>
<p>Ausnahmen bei der Bereinigung waren einfacher zu lesen und waren nicht irgendwo im Schleifenchaos untergebracht. Man sah einfach das aufgeräumt wurde und wie.</p>
<p>Bis auf einen Kollegen konnten sich damit anfreunden und die Pflege war einfacher. Aber dann geschah das schlimme, jemand setzte etwas Aufräumarbeit nicht hinter der Sprungmarke fort sondern klatschte die irgendwo anderst hin. Es gab für mich einfach keine Chance das zu erzwingen.</p>
<p>Dann durfte ich C++ Programmieren und der Vorgesetzte musste mit ziehen. Ich konnte diesen dann Zwingen bestimmte Regeln einzuhalten , was mir mit dem goto nicht Möglich war. Aufräumarbeiten konnten in Destruktoren gepackt werden etc.</p>
<p>Sobald man also ein goto im Quellcode geschrieben hat, sollte man überlegen, ob das die richrige Lösung ist. Allerdings sollte man auch nie vergessen, das man einen gewissen Aufwand/Nutzen ziehen muss. An manchen stellen ist ein goto nicht verherend aber wirtschaftlicher , vorallem wenn man unter Zeitdruck fremden Code umbauen müsste um die gotos los zu werden.</p>
<p>Ein goto kann also gerechtfertig sein, aber ich denke man kann sich vllt. darauf einigen, das C++ ausreichend Möglichkeiten bietet die Probleme die man mit goto umgehen will viel eleganter zu lösen.</p>
<p>In neuen Projekten also hat man immer die Möglichkeit das passend zu bauen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191767</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 14 Dec 2006 13:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 13:57:12 GMT]]></title><description><![CDATA[<p>Ein goto ist z.B gut, um aus einer inneren Schleife bei mehrfach verschachtelten Schleifen voll auszusteigen - also wo break es nicht schaffen kann - auch die äusseren Schleifen zu beenden. Die das goto aus der Sprache raushaben wollten, konnten sich nicht durchsetzen - das ist gut so. Das Gleiche gilt für Makros.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191796</guid><dc:creator><![CDATA[egon2]]></dc:creator><pubDate>Thu, 14 Dec 2006 13:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Thu, 14 Dec 2006 22:03:54 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>NewProggie schrieb:</p>
<blockquote>
<p>Fakt ist aber IMHO, dass es manchmal einfach sauberer ist ein goto zu benutzen, vor allem, wenn es um so simple Sachen wie Zahlen sortieren geht.</p>
</blockquote>
<p>Das ist schlichtweg falsch. Und selbst wenn es richtig wäre, müsste diese Behauptung immernoch bewiesen werden.</p>
</blockquote>
<p>Das goto in dem Beispiel ist grauselig, jawoll, weil es die &quot;goldene goto Regel&quot; verletzt: &quot;springe immer nur nach links und nach unten&quot;. Die 2. wichtige Regel, &quot;springe niemals über initialisierungen&quot;, erzwingt VC ja soweit ich mich erinnere.</p>
<p>Wenn man es so einsetzt sehe ich kein grosses Problem, und es kann wunder an Übersichtlichkeit tun, wenn man aus irgendeinem Grund keine Exceptions verwendet, aber trotzdem brav error-handling &amp; cleanup Code schreibt. Ein &quot;finally&quot; statement würde hier helfen, gibts aber leider auch nicht. Böh <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Mit Exceptions hab' ich goto kaum mehr verwendet, aber selbst dann noch ab und zu, wenn ich aus verschachtelten Schleifen &quot;braken&quot; möchte, und ohne goto ne zusätzliche Variable bräuchte. State ist eben ein notwendiges Übel, und ich will nicht noch mehr State haben als ich muss, dann lieber goto <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Wenn es in C++ ein &quot;break N&quot; statement (bzw. &quot;named loops&quot; und ein &quot;named break&quot; statement) gäbe, könnte ich bei Exception-freiem Code ganz darauf verzichten.</p>
<p>goto ist IMHO sehr &quot;C++ig&quot;, wenn man weiss was man tut soll mans nehmen, sonst sollte man lieber gleich die Finger von C++ lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1192099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1192099</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 14 Dec 2006 22:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Fri, 15 Dec 2006 07:03:17 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ein &quot;finally&quot; statement würde hier helfen, gibts aber leider auch nicht. Böh <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Braucht man doch auch nicht. Müll wird am Ende eines Blocks doch sowieso weggeräumt, auch wenn's Fehler gab -- solange der Fehler nur <em>irgendwann</em> gefangen wird:</p>
<pre><code class="language-cpp">struct Foo { ~Foo() { cout &lt;&lt; &quot;~Foo&quot; &lt;&lt; endl; } };

int main()
{
    try {
        Foo x;
        throw &quot;abcdefg&quot;;
    }
    catch (...) { cout &lt;&lt; &quot;catch&quot; &lt;&lt; endl; }
    cout &lt;&lt; &quot;Left block&quot; &lt;&lt; endl;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>~Foo
catch
Left block
</code></pre>
<p>D.h. 'finally' wird durch die Kapselung von Ressourcen in Klassen ersetzt. RAII ist IMHO einfach mächtiger. Und zwar so mächtig, dass Microsoft in .NET über den &quot;disposable pattern&quot; eine abgespeckte Version von RAII eingeführt hat und dafür sowohl in VB als auch in C# sogar syntaktischen Zucker für eingeführt hat, den 'Using'-Block, der mir in seiner Benutzung doch seehr C++-ig anmutet. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1192170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1192170</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 15 Dec 2006 07:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Fri, 15 Dec 2006 08:16:46 GMT]]></title><description><![CDATA[<p>egon2 schrieb:</p>
<blockquote>
<p>Ein goto ist z.B gut, um aus einer inneren Schleife bei mehrfach verschachtelten Schleifen voll auszusteigen - also wo break es nicht schaffen kann - auch die äusseren Schleifen zu beenden....</p>
</blockquote>
<p>Auch wenn es ebenfalls &quot;suboptimal&quot; wäre, würde ich bei sowas (wenn es wirklich nicht anders geht) immer noch lieber exceptions werfen...<br />
Und Makros sind eine echte Pest. <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 />
Wie hieß es so schön: &quot;...nur wenn man den Rücken an der Wand hat ... und ein Messer am Hals.... ein sehr, sehr scharfes Messer !&quot;</p>
<p>Ist &quot;finally&quot; nicht nur eine Krücke, die man braucht, weil man in Java keine Destruktoren hat ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1192186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1192186</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 15 Dec 2006 08:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Fri, 15 Dec 2006 09:21:16 GMT]]></title><description><![CDATA[<p>Ist ja schon lustig. Da fragt Antikoerper um Hilfe für ein einfaches Programm und dann wird ein goto-Thread draus. Für das vom OP skizzierte Problem gibt es auch eine Lösung ohne goto:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;     // istream_iterator
#include &lt;algorithm&gt;    // max_element

int main()
{
    using namespace std;
    cout &lt;&lt; &quot;Bitte einige Zahlen eingeben. Dies Programm bestimmt die groesste. \nBeenden Sie die Eingabe mit einem 'q' ...&quot; &lt;&lt; endl;
    istream_iterator&lt; double &gt; i = max_element( istream_iterator&lt; double &gt;( cin ), istream_iterator&lt; double &gt;() );
    if( i != istream_iterator&lt; double &gt;() )
        cout &lt;&lt; &quot;Die groesste Zahl Ihrer Eingabe ist: &quot; &lt;&lt; *i &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Gruß Werner :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1192229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1192229</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 15 Dec 2006 09:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Fri, 15 Dec 2006 09:32:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Das sieht ja ganz nett aus, aber ob das funktioniert? Istream-Iteratoren sind reine Input-Iteratoren und da ist nicht garantiert, daß verschiedene Kopien sich unabhängig voneinander bewegen können (und häufig werden sie auch so implementiert, daß sie sich nur ihren Stream merken und in op* den nächsten Wert vom Stream lesen). max_element benötigt mindestens einen Forward-Iterator.</p>
<p>Eine Lösung ohne Iteratoren:</p>
<pre><code class="language-cpp">int max_val,val;
while(cin&gt;&gt;val)
  if(val&gt;max_val) max_val=val;
cout&lt;&lt;&quot;größter Wert war:&quot;&lt;&lt;max_val&lt;&lt;endl;
</code></pre>
<p>Zur goto-Diskussion: Ja, goto sollte man kennen. Aber bevor man es einsetzt, sollte man überprüfen, ob man Alternativen hat (und Exceptions sind imho genauso ungeeignet für &quot;reguläre&quot; Programmabläufe).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1192244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1192244</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 15 Dec 2006 09:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Totaler Anfänger mit wenig Ahnung^^ on Fri, 15 Dec 2006 09:47:39 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Aber bevor man es einsetzt, sollte man überprüfen, ob man Alternativen hat (und Exceptions sind imho genauso ungeeignet für &quot;reguläre&quot; Programmabläufe).</p>
</blockquote>
<p>Was spricht denn jetzt bitte gegen Ausnahmen? Und wieso &quot;genauso&quot; ungeeignet? 'goto' ist deswegen ungeeignet, weil es nicht strukturgebunden ist und somit die Programmstruktur zerstört, das ist bei Ausnahmen nicht der Fall.<br />
Und wieso &quot;bevor man sie einsetzt&quot;? Welches Einsatzgebiet (außer eventuell dem Verlassen verschachtelter Schleifen) hat 'goto' denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1192255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1192255</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 15 Dec 2006 09:47:39 GMT</pubDate></item></channel></rss>