21.11.2013 Aufrufe

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

Nach der Verzweigung zu e<strong>in</strong>er Marke wird das Programm sequentiell fortgesetzt, wobei <strong>die</strong> Marken<br />

ke<strong>in</strong>e Bedeutung mehr haben. Mit der break-Anweisung kann e<strong>in</strong> switch jederzeit beendet<br />

werden. E<strong>in</strong> break ist also notwendig, wenn <strong>die</strong> Anweisungen der nächsten case-Konstanten<br />

nicht ausgeführt werden sollen. Es ist ke<strong>in</strong>e Reihenfolge für case <strong>und</strong> default vorgeschrieben.<br />

9.2 Schleifen<br />

In e<strong>in</strong>er Schleife wird e<strong>in</strong>e Gruppe von Anweisungen, der sogenannte Schleifen-Rumpf, mehrfach<br />

ausgeführt. Zur Bildung e<strong>in</strong>er Schleife stehen <strong>in</strong> C drei Anweisungen zur Verfügung: while, dowhile<br />

<strong>und</strong> for.<br />

9.2.1 While<br />

Anweisung A<br />

while(Ausdruck)<br />

Anweisung<br />

Anweisung B<br />

Bei der while-Anweisung wird <strong>die</strong> zugehörige Anweisung<br />

solange wiederholt, wie der Ausdruck wahr ist.<br />

Sobald der Ausdruck falsch ist, wird mit der auf <strong>die</strong><br />

while-Schleife folgenden Anweisung B weitergefahren.<br />

Wenn der while Ausdruck von Anfang an falsch<br />

ist, wird <strong>die</strong> Schleifen-Anweisung gar nie Ausgeführt.<br />

Anweisung A<br />

while (Ausdruck)<br />

Anweisung<br />

Anweisung B<br />

Nehmen wir an, Sie wollen herausf<strong>in</strong>den, wie lange Sie sparen müssen um Millionär zu werden,<br />

wenn Sie jeden Monat h<strong>und</strong>ert Taler sparen <strong>und</strong> zur Bank br<strong>in</strong>gen, wobei das Kapital noch verz<strong>in</strong>st<br />

wird. In C könnte das Problem folgendermassen gelöst werden:<br />

me<strong>in</strong>_guthaben = 0.0;<br />

monat = 0;<br />

while(me<strong>in</strong>_guthaben < 1000000.0) { /* Wiederholen bis Millionaer */<br />

me<strong>in</strong>_guthaben = me<strong>in</strong>_guthaben * 1.003; /* monatl. Z<strong>in</strong>ssatz 0,3% */<br />

me<strong>in</strong>_guthaben += 100.0; /* Monatsrate */<br />

monat++; /* Monatszaehler <strong>in</strong>krementieren */<br />

}<br />

pr<strong>in</strong>tf("Nach %d Monaten b<strong>in</strong> ich endlich Millionaer \n", monat);<br />

9.2.1.1 Fehlerquelle<br />

Wenn am Ende der Whileschlaufe e<strong>in</strong> Semikolon gesetzt wird, gilt <strong>die</strong>ses als leere Anweisung, welche<br />

solange wiederholt wird, wie <strong>die</strong> while-Bed<strong>in</strong>gung wahr ist.<br />

/* Fehler, Block wird hoechstens e<strong>in</strong>mal durchlaufen, While moeglichger */<br />

/* weise nie beendet */<br />

while(me<strong>in</strong>_guthaben < 1000000.0);<br />

{<br />

me<strong>in</strong>_guthaben = me<strong>in</strong>_guthaben * 1.003 + 100.0; /* monatl. Z<strong>in</strong>s u. Rate */<br />

}<br />

Diesen Fehler kann man vermeiden, wenn <strong>die</strong> öffnende geschweifte Klammer gleich an while<br />

angefügt wird (Zum<strong>in</strong>dest wird so der Fehler offensichtlich):<br />

while(me<strong>in</strong>_guthaben < 1000000.0) {<br />

me<strong>in</strong>_guthaben = me<strong>in</strong>_guthaben * 1.003 + 100.0; /* monatl. Z<strong>in</strong>s u. Rate */<br />

}<br />

Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 35/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!