C++ Builder < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Hey ihr!
Ich habe leider bei den letzten Informatikstunden nicht teilnehmen können, ich war krank. Ich habe insgesamt 3 doppel Stunden verpasst, muss denoch in zwei Wochen die Arbeit nach schreiben.
Ich hoffe, ihr könnt mir meine Fragen klären!
Ich muss wissen, was eine while und eine if Struktur ist, wann diese verwendet werden, wie die Befehle lauten, wie der Aufbau ist. Dies wird garantiert ein Schwerpunkt der Arbeit werden und ich kenne mich nicht aus damit.
Ich hoffe ihr könnt mir helfen! Danke schon mal im vorraus!
Lg,
Sarah
|
|
|
|
Hallo,
also eigentlich sind beide Anweisungen recht einfach. Übersetz Dir doch mal If. Das bedeutet ja soviel wie falls. Wenn Du jetzt in einem Programm etwas haben möchtest von der "falls <xy> dann mache <abc> ansonsten <def>" dann ist if genau richtig (eventuell ohne ansonsten <def>). Möchtest Du wiederholt etwas machen, dann ist eine "solange <xy> mache <abc>" garnicht so schlecht. Die Frage die sich stellt ist dann natürlich nur, wie muss das genau in C/C++ ausschauen und was kann man für <xy> und <abc> einsetzen.
Also konkreter. Nehmen wir an Du hast zwei Variablen x und y und möchtest ausgeben "beide gleich", "x größer" oder "y größer" je nachdem was zutrifft. Also Du hast sowas wie "falls x gleich y ist, dann gebe "beide gleich" aus, anonsten falls x größer y ist gebe "x größer" aus ansonsten gebe "y größer" aus. In C/C++ ist das <xy> jetzt ein Ausdruck, d.h. ein Term, der einen Wert "zurückgibt" (z.B. if, while tun das nicht). Es muss ein Boolscher Ausdruck im allgemeinen sein (d.h. mit Wahrheitswerten). Allerdings wird in C eine Zahl dafür mißbraucht, wobei 0 identisch zu falsch ist und nicht 0 wahr. Aber es gibt die logischen Operator, wie Gleichheit (==), Ungleichheit (!=), Kleiner (<), Kleinergleich (<=), etc. Aufgepasst, während "=" die Zuweisung signalisiert, ist "==" für den Test auf Gleichheit. "=" ist auch ein Operator, der einen Wert zurück gibt, da muss man aufpassen...
Also zurück, zu unserem eigentlich Beispiel:
falls x gleich y ist, dann gebe "gleich" aus übersetzt sich zu
if (x == y) cout << "beide gleich";
das "ansonsten" leitet man mit "else" ein. Also würde das ganze sein:
if (x == y) cout << "beide gleich"; else if (x > y) cout << "x größer"; else cout << "y größer";
Manchmal muss man aber mehr machen als eine Ausgabe. Mehrere Anweisungen werden dafür eventuell benötigt. Dann muss man diese Anweisungen in geschweifte Klammern setzen. Wie zum Beispiel:
if (x == y) { cout << "beide gleich"; z = x; } else if (x > y) { cout << "x größer"; z = x; } else { cout << "y größer"; z = y; }
(Kleine Aufgabe für Dich: was hat y nach dieser Anweisung für einen Wert?)
Konkret, man hat etwas von der Form
if (<boolscher Ausdruck>) <anweisung>
oder
if (<boolscher Ausdruck>) <anweisung> else <anweisung>
wobei <anweisung> entweder eine einzelne Anweisung ist oder ein Block eingeschlossen durch geschweifte Klammern.
Entwas leichter fällt jetzt hoffentlich eine while-Schleife einzusetzen. Nehmen wir an, Du möchtest etwas wiederholt machen. Als einfaches Beispiel sagen wir, dass wir die Zahlen 1 bis 1000 ausgeben möchten, ohne dazu immer wieder den Code zu kopieren (z.B. was ist wenn wir das auf 10000 ändern möchten). Wir wollen etwas von der Art: solange ein Zähler kleiner oder gleich 1000 ist, gebe diesen Zähler aus. solange == while ->
while (zaehler <= 1000) { cout << zahler << "\n"; zaehler = zaehler + 1; }
um genau zu sein, müssen wir natürlich auch den Zähler deklarieren und initialisieren:
int zaehler = 1;
while (zaehler <= 1000) { cout << zahler << "\n"; zaehler = zaehler + 1; }
wir können das auch vereinfachen:
int zaehler = 1;
while (zaehler <= 1000) cout << zaehler++ << "\n";
aber das ist in meinen Augen schlechter Programmierstil.
Konkret sieht eine While-schleife wie folgt aus
while (<boolscher ausdruck>) <anweisung>
wobei, wie oben, <anweisung> eine einzelne Anweisung ist, oder ein Anweisungsblock in geschweiften Klammern.
Wichtig ist bei sowas die Unterscheidung zwischen "=" und "==". Folgendes ist legaler C++ Code:
if (i = 0) cout << "i = 0";
die Ausgabe wird allerdings nie erscheinen. Denn was wird gemacht. Durch "i = 0" wird der Variablen "i" der Wert 0 zugeordnet, das ist auch das Ergebnis der "i = 0" Operation. Das wird als "falsch" interpretiert. Dagegen würde aber
if (i == 0) cout << "i = 0";
das gewünschte Ergebnis liefern, denn "==" Vergleicht, "=" weist zu.
Ich hoffe das war ausführlich genug.
--
Gruß
Matthias
|
|
|
|