PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein paar Frage zum Pausieren und zu if und switchcase



Pammy
25.11.2008, 14:44
Hallo =)

Ich habe vor kurzem mit C++ begonnen und nun haben sich bei mir ein
paar Fragen aufgetan:

1. Welche Befehl zum Pausieren der Konsole sollte ich am Besten verwenden. Ich kenne bisher system("Pause") und getch().

2. In welchem Fall sollte ich if und else anwenden und in welchem ich switch case nehmen sollte.
(Ist es so, dass man if und else nimmt wenn man Datentpypen benutzen will die nicht int sind?

Meine 3. Frage hat eigentlich weniger etwas mit C++ zu tun, jedoch weiß ich nicht in welches Forum ich diese Frage posten sollte:
Kennt jemand ein Buch, dass den Einstieg in das Erstellen von 2-D und 3-D Objekten bzw Bitmaps erklärt?

Danke schonmal im Vorraus für Antworten

mfg Pammy

Crashkid
25.11.2008, 14:46
1. break;
(simpelste oder nicht?)

Pammy
25.11.2008, 14:58
Aber kann man break nicht nur im switch case benutzen?
Bei mir kommt: error C2043: Schlüsselwort 'break' ungültig

enco
25.11.2008, 15:24
1. break funktioniert auch in Schleifen um diese zu verlassen. Mit pausieren hat das nichts zu tun.
Eine Möglichkeit wäre noch die Funktion Sleep() aus der windows.h, damit pausierst du dein Programm für eine bestimmte Zeit.

2. If und Else benutzt du wenn du nur eine oder maximal zwei mögliche Antworten hast.
Switch hingegen kannst du nutzen wenn es mehrere Möglichkeiten gibt.
Generell kann ein Switch immer durch viele IF's ersetzt werden.

3. Les dich hier mal durch http://www.spieleprogrammierer.de/

Pammy
25.11.2008, 15:35
Vielen Dank genau das, was ich eigentlich gesucht habe =)

Zum Sleep() nochmal: Eigentlich hätte ich es gern so, dass "Taste drücken zum Fortfahren" in der Art kommt aber egal.

Danke!

Master of Chaos
25.11.2008, 16:21
Wenn du willst kannst du auch einfach das mit Taste drücke zum fortfahren normal als Text ausgeben lassen und danach dann "cin.get();" schreiben. Der Befehl wartet dann einfach auf eine Eingabe von dir.

LG,
Master of Chaos

Pammy
25.11.2008, 16:48
Super genau das was ich gesucht hab =)

Danke

-[RiDER]-
27.11.2008, 22:20
Hi :D

If und Else benutzt du wenn du nur eine oder maximal zwei mögliche Antworten hast.
Switch hingegen kannst du nutzen wenn es mehrere Möglichkeiten gibt.
Generell kann ein Switch immer durch viele IF's ersetzt werden.
Das ist Unsinn.

Die switch-case-Anweisung verwendest Du, wenn Du genau eine Variable auf verschiedene genau definierte Werte überprüfen willst, die if-Anweisung erlaubt Dir auch Vergleiche, also z.B. "größer als", "kleiner als", außerdem logische Verknüpfungen (z.B. and und or, findet z.B. Anwendung, wenn Du überprüfen möchtest, ob Variable a einen bestimmten Wert hat und Variable b einen anderen bestimmten Wert hat - mit switch-case-Anweisungen so gut wie garnicht umsetzbar...).

Beispiel:
int i;
int j;

[...]

switch(i) // im gesamten switch-case-Statement dreht sich alles um die Variable i!
{
case 1: // nur Überprüfung auf konkrete Werte möglich!
[...]
default: // wenn keins der geprüften konkreten Ereignisse eingetreten ist
[...]
}

if((i == 1 && j == 999) || (i >= j)) // der gesamte Ausdruck muss true "ergeben"
{
[...]
}else if(!(*)(int*)i[i^j*(i <<= j)]) // vom ersten Fall völlig unabhängiger Ausdruck
{
[...]
}else // wenn keiner der geprüften Ausdrücke true "ergab"
{
[...]
}

Mit der Anzahl der überprüfbaren Ausdrücke (war das mit "Antworten" gemeint???) hat das nichts zu tun!
Es stimmt, dass man switch-case-Anweisungen immer durch if-Anweisungen ersetzen kann, wenn man aber ein swich-case-Konstrukt anwenden kann, sollte man das auch tun, es ist meist übersichtlicher, vor allem anderen ist es aber viel schneller... ;)

GreetZ RiDER :D :D :D

Pammy
30.11.2008, 11:12
Und stimmt es, dass man im switch-case nur Ineteger benutzen kann?

blackberry
30.11.2008, 14:39
Und stimmt es, dass man im switch-case nur Ineteger benutzen kann?

In meinem Buch steht folgendes:
"Die switch-Anweisung setzt den Programmablauf mit einer von mehreren Anweisungen in Abhängigkeit vom Wert eines Ausdrucks ab, der einen Integer-Typ besitzen muß. [...] Für den kontrollierenden Ausdruck findet Integer-Erweiterung statt (§ A.6.1)"
(A.9.4 "Auswahlanweisungen", S. 220, "Programmieren in C", Brian W. Kernighan, Dennis M. Ritchie)

mo0wm
30.11.2008, 15:26
Es ist aber auch möglich Char's einzusetzen

blackberry
30.11.2008, 16:53
Es ist aber auch möglich Char's einzusetzen

Char's werden über Integer-Erweiterung zu int's erweitert.

mo0wm
30.11.2008, 16:58
Char's werden über Integer-Erweiterung zu int's erweitert.

Das war mir schon bewusst. Nur für einen Anfänger in C++ ist das vielleicht etwas zu hoch...

s23_
30.11.2008, 16:58
Also Fakt ist, dass man sowohl char als auch int in 'nem Switch verwenden kann. Wie auch von mo0wm schon erwähnt wurde..

GregorSamsa
30.11.2008, 17:16
Man muss einfach folgendermaßen denken:

Wenn ich ein 'a' habe, dann habe ich als dezimal eine 65 und hexadezimal eine 41. Es kommt also nur auf die Schreibweise an:

In C heisst das:
'a' ist gleich 65 ist gleich 0x41