Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C Grundkurs

Kritische Konstruktionen

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In diesem Video sehen Sie typische logische Fehler beim Formulieren von Bedingungen und unübersichtliche Kodierungen bei komplexeren if-else-Konstruktionen, die Sie vermeiden sollten.
03:56

Transkript

In diesem Video möchte ich Ihnen einen typischen Fehler zeigen, der beim Formulieren von Bedingungen sehr oft gemacht wird. Diesen Bedingungen, wie sie etwa bei einer IF-Anweisung auftauchen, aber auch bei Schleifen. Sie sehen hier ein ganz einfaches Beispiel. Ich habe eine Variable vom Typ INT, der weise ich den Wert A zu. Und hier habe ein if(a=2) printf("Hello world!"). A ist natürlich 1 und hier wollte ich auf 2 überprüfen. Dem entsprechend sollte kein "Hello World" auftauchen. Tut es aber! Was läuft schief? Nun... Das hier! Das ist das einfache Gleichheitszeichen. Einen Vergleich formuliert man allerdings mit einem doppelten Gleichheitszeichen. Das ist eine Zuweisung. A bekommt den Wert 2 zugewiesen, hat dann den Wert 2 und 2 wird von C als TRUE interpretiert, als WAHR. Das kann man so machen. Natürlich. Aber in der Regel ist es eben nicht geplant. Das ist ein logischer Fehler im Lauf des Programms und ein ganz übler Fehler in vielen C-Programmen, weil der Compiler das nicht als Fehler erkennen kann. Das ist ein Problem, dass C nur die nummerische 0 als FALSE interpretiert und jeden Wert ungleich 0 als TRUE. Achten Sie unbedingt beim Formulieren einer Bedingung in IF aber auch in Schleifen drauf, dass Sie nicht bei einem Vergleich eine Zuweisung machen. Im übrigen möchte ich auch dringend davon abraten, bei verschachtelten IF ELSE Konstruktionen, ohne Blöcke zu arbeiten. Sonst weiß man sehr oft nicht wo ein ELSE hingehört. Schauen Sie sich einmal diese Konstruktion an. Ich habe hier zwei Variablen A und B vom Typ INT. Die Variable A hat den Wert 88 und die Variable B den Wert 67. Ich überprüfe hier: Ist A < 100? Ist B 80? Und dann gebe ich hier das JA aus, oder das NEIN. Meine Frage ist jetzt: Was gibt er wirklich aus? Und zweitens, wohin gehört das ELSE? Zum ersten IF, oder zum zweiten IF? Nun... Wir können es einmal laufen lassen. Er gibt NEIN aus. Das ist aber hier kaum, sinnvoll zu erkennen, worauf sich das ELSE bezieht. Man sollte solche Konstruktionen dringendst vermeiden und sauber mit Blöcken arbeiten. Denn wenn man das hier dann schachtelt, über geschweifte Klammern, dann ist eindeutig klar, worauf sich dieses ELSE bezieht. Das war vorher genau so, aber es war sehr schwer zu lesen. Sie haben also in diesem Video nur zwei Fälle gesehen, wie man in C kritische Konstruktionen bauen kann. Zum Teil, in dem man nicht drauf achtet und Dinge verwechselt - Gleichheits-Operator, Zuweisungsoperator. Oder indem man unübersichtlich kodiert, auf Klammern verzichtet, wo sie nicht zwingend notwendig sind, aber für die bessere Übersichtigkeit auf jeden Fall notiert werden sollten. Ich kann Ihnen nur empfehlen, dass Sie versuchen, möglichst übersichtlich zu kodieren und gerade bei dem Zuweisungs- und Vergleichsoperator aufpassen wie ein Schießhund.

C Grundkurs

Lernen Sie das Syntaxkonzept von C von Grund auf kennen vor und sehen Sie, wie mit einer geeigneten Entwicklungsumgebung Programme Schritt für Schritt entstehen.

4 Std. 36 min (70 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!