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 />

Beispiel:<br />

/* Read a number and test if zero or non-zero */<br />

#<strong>in</strong>clude /* standard stream I/0 library */<br />

<strong>in</strong>t ma<strong>in</strong>(<strong>in</strong>t argc, char *argv[])<br />

{<br />

<strong>in</strong>t i;<br />

pr<strong>in</strong>tf("Ganze Zahl e<strong>in</strong>geben !\n");<br />

scanf("%d", &i); /* read number */<br />

if (i == 0) {<br />

pr<strong>in</strong>tf("value was zero (%d)\n", i);<br />

} else {<br />

pr<strong>in</strong>tf("value was positive or negative (%d)\n", i);<br />

}<br />

return 0;<br />

}<br />

Wenn <strong>die</strong> der if-Abfrage folgende Anweisung aus mehreren Anweisungen besteht, müssen <strong>die</strong>se<br />

<strong>in</strong> e<strong>in</strong>em Block zusammengefasst werden (In geschweiften Klammern e<strong>in</strong>geschlossen werden). Entsprechendes<br />

gilt für <strong>die</strong> auf else folgenden Anweisung(en). Gr<strong>und</strong>sätzlich empfiehlt es sich,<br />

auch e<strong>in</strong>zelne Anweisungen <strong>in</strong> Klammern zu setzen.<br />

Fehlermöglichkeiten:<br />

Das Zusammenfassen mehrerer Instruktionen zu e<strong>in</strong>em Block wird vergessen, oder direkt h<strong>in</strong>ter<br />

dem if() e<strong>in</strong> Semikolon gesetzt (= leere Anweisung), <strong>und</strong> statt "if(i == 0)" wird vor allem<br />

von Anfängern oft "if(i = 0)" geschrieben (Dies ist e<strong>in</strong>e gültige Syntax <strong>und</strong> wird vom Compiler<br />

höchstens mit e<strong>in</strong>er Warnung geahndet, es wird der Variable i der Wert 0 zugewiesen, <strong>und</strong> der<br />

Wert des Ausdrucks ist 0, <strong>und</strong> somit falsch).<br />

Beispiel:<br />

Bei der E<strong>in</strong>gabe von Werten durch den Benutzer muss mit Fehle<strong>in</strong>gaben gerechnet werden. Zum<br />

Beispiel mit ungültigen Zeichen bei der E<strong>in</strong>gabe von Zahlen. Solche Fehler können (<strong>und</strong> sollten)<br />

bereits bei der E<strong>in</strong>gabe abgefangen werden. Die Funktion scanf() gibt e<strong>in</strong>en Integerwert zurück,<br />

der <strong>die</strong> Anzahl der erfolgreichen Umwandlungen angibt: Wenn das E<strong>in</strong>lesen e<strong>in</strong>es oder mehrerer<br />

Werte nicht erfolgreich war, ist <strong>die</strong> Anzahl der erfolgreichen Umwandlungen kle<strong>in</strong>er als <strong>die</strong> Anzahl<br />

der e<strong>in</strong>zulesenden Argumente. Programmseitig kann man <strong>die</strong>se Eigenschaft wie folgt nutzen:<br />

if (scanf("%d", &i) == 1) { /* Es sollte 1 Argument e<strong>in</strong>gelesen werden */<br />

pr<strong>in</strong>tf("1 korrekter E<strong>in</strong>lesevorgang. Wert: %d\n", i);<br />

} else {<br />

pr<strong>in</strong>tf("Fehler beim E<strong>in</strong>lesen");<br />

}<br />

Aufgabe 9.1:<br />

if-Anweisungen können beliebig verschachtelt se<strong>in</strong>. Schreiben Sie e<strong>in</strong> Programm, <strong>in</strong> welchem Sie<br />

e<strong>in</strong>e ganze Zahl e<strong>in</strong>lesen <strong>und</strong> ausgeben, ob <strong>die</strong> e<strong>in</strong>gegebene Zahl grösser, gleich oder kle<strong>in</strong>er Null<br />

war.<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!