Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

05.07.2009, 23:08

Zitat von »"K-Bal"«

Ich seh das nicht so tragisch, wenn man dann mal so weit ist und Software für mehrere Systeme schreiben möchte kann man immer noch darauf zurückkommen. Ist aber okay wenn man mal als Anfänger davon gehört hat.


Was hältst du von dem Argument das system("pause") absoluter overkill is? Wenn ich kurz umreißen darf was das Teil macht: Es wird ein neuer "cmd.exe" Prozess gestartet welcher das Kommando "pause" übergeben bekommt. Der Prozess wird den string nun parsen um herauszufinden was er tun muss. Wenn er dann herausgefunden hat dass es sich um den Befehl "pause" handelt wird er irgendwas tun was gewisse änhlichkeit mit cin.get() aufweist (vermutlich ne endlosschleife über _kbhit() oder so). Dein Programm wartet inzwischen dass der Prozess sich beendet. Wenn der Benutzer nun eine Taste drückt beendet sich der cmd.exe Prozess und dein Programm läuft weiter...
Da es noch dazu nicht portierbar ist und es andere portierbare und weitaus weniger ressourcenfressende Lösungen gibt die auch nicht irgendwie komplizierter sind halt ich system("pause") für absolut daneben.

Natürlich, bei nem einfachen Hello World Programm ist das sowieso alles egal ;)

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

12

05.07.2009, 23:12

Zitat von »"K-Bal"«

Zitat von »"PCShadow"«

Zitat von »"K-Bal"«

Ohja, die Linux Community wird unheimlich jammern, wenn sie dieses Programm nicht benutzen können ;)

darum gehts nicht
der Punkt ist, das man nicht OS-Spezifische Sachen nutzt, wenn der Standard auch Möglichkeiten dazu bietet


Ich seh das nicht so tragisch, wenn man dann mal so weit ist und Software für mehrere Systeme schreiben möchte kann man immer noch darauf zurückkommen. Ist aber okay wenn man mal als Anfänger davon gehört hat.


Also gerade bei system("pause"); kann ich nicht verstehen, wiso man das nehmen sollte...
cin.get() ist kürzer, schneller, unabhängiger einfach besser ;)

Nagut ich denke das es nicht so schlimm ist, den system("")-begfehl zu benutzen (gerade bei system("cls"); )
aber dann fangen die leute an befehle wie system("color 2d") zu benutzen und fragen sich dann auf einmal wiso ihr Programm so langsam läuft...
also lieber immer gleich ne richtige Funktion benutzen ;)

Pixma

Frischling

Beiträge: 35

Wohnort: Mainz

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

13

05.07.2009, 23:32

hmm, ok wusste net das der system("PAUSE") Befehl so viele Nachteile hat und das förmlich nach overkill schreit.
Werde dann auch cin.get() benutzen.
Danke dass ihr mir das erklärt habt, was das macht. :p :p

Gruß Pixma

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

05.07.2009, 23:37

Zitat von »"Databyte"«

[...] (gerade bei system("cls"); )


Wenn auch vielleicht nicht einfacher, besser gehts allemal...

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

15

06.07.2009, 01:45

Zitat von »"dot"«

Zitat von »"Databyte"«

[...] (gerade bei system("cls"); )


Wenn auch vielleicht nicht einfacher, besser gehts allemal...


;) naja ich weiß nicht ob man als anfänger schon durchblickt, wie man mit diesen Funktionen die Konsole löschen kann... ;)

little_Progger

Treue Seele

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

16

10.08.2009, 12:21

ich habe das immer so gelöst
int main ()
{
int S; // Variable für die abfrage die das programm so lange warten lässt
// bis sie durch eine eingabe und bestätigung durch "enter" bestätigt wurde

cout << "Hier kommt die konkurenz!!" << endl;

cin >> S; // hier wird die abfrage nun erledigt und so lange gewartet bis etwas
// eingegeben wurde

return 0;
}

Das mit den variablen und cin und so weiter wirst du schon sehr bald lernen...ist so finde ich die einfachste und durchschaubarste methode da ich selber (in kapitel 7) den befehl "system("Pause") nicht kenne.

17

10.08.2009, 14:00

1. Es gibt keine Befehle, nur ausdrücke und Statements. system("PAUSE") ist ein funktionsaufruf, also ein ausdruck.
2. statt ne dummy-variable zu verwenden, könntest du auch eifnach cin.get() aufrufen. insbesondere wenn die dummy-variable n int ist, in dem fall wird nämlich das failbit gesetzt falls im stream keine Zahl rumläuft, was dazu führt, das bis zu nem aufruf von cin.clear() alle folgenden operationen fehlschlagen, je nach einstellung des streams kanns sogar passieren, das du ne exception um die ohren gehauen bekommst.
3. system() sollte man allerdings soweiso möglichst nciht verwenden, da es platformabhängig ist, und es für sachen wie PAUSE ne platformunabhängige lösung gibt, die in der regel sogar schneller ist.

little_Progger

Treue Seele

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

18

11.08.2009, 13:11

ja ich weiß das wohl aber was kappiert ein anfänger wohl eher?

int S;

und das dann mit cin >> S; abfragen


oder cin.get () ?

eindeutig das ganz altmodische "cin >>".
is für vortgeschrittene schwachsinnig aber für anfänger bis kapitel 3 oder 4 noch völlig ausreichend.

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

19

11.08.2009, 13:46

Zitat

ja ich weiß das wohl aber was kappiert ein anfänger wohl eher?

int S;

und das dann mit cin >> S; abfragen


oder cin.get () ?

eindeutig das ganz altmodische "cin >>".
is für vortgeschrittene schwachsinnig aber für anfänger bis kapitel 3 oder 4 noch völlig ausreichend.

Und was ist, wenn der Anfänger sich so etwas schlechtes angewöhnt und nicht bemerkt, dass es etwas schlechtes ist? Lieber etwas verwenden, das man momentan (noch) nicht ganz versteht, das aber keine Probleme bereitet, als sich etwas schlechtes anzugewöhnen, das einem dann später mal Probleme bereiten kann. Als Anfänger kann man sowieso noch nicht alles verstehen und muss bestimmte Dinge einfach mal als gegeben hinnehmen, um sie dann später, wenn man mehr Ahnung hat, versuchen zu verstehen.
Signaturen werden überbewertet

20

11.08.2009, 13:49

little_Progger

Lässt ja mächtig den Pädagogen raushängen.
Ich denke, was wer wo und wie lernt, kannst du nicht beurteilen.

Wie von PCShadow schon angedeutet, ist der Ausdruck "Befehl" im Zusammenhang mit Funktionen usw. hier nicht gern gesehen.

Wie sagte Dieter Nuhr so schön?
"Wenn man keine Ahnung hat, einfach mal die Klappe halten!"
fka tm

Werbeanzeige