Diskussion:C++-Programmierung/ Einführung in C++/ Hallo, du schöne Welt!

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Kritikpunkte 1: Fehler[Bearbeiten]

  • Leerzeichen spielen für den Compiler sehr wohl eine Rolle. So ist das Leerzeichen hinter int bei int x=0; zwingend notwendig, und wenn bei x+=2 das Pluszeichen vom Gleichheitszeichen durch Leerzeichen unterbrochen werden, ist der Ausdruck ebenfalls fehlerhaft.
Leerzeichen dürfen auch nicht im #include stehen #include < iostream > wird nicht funktionieren.
  • std::cout ist mitnichten "sozusagen der Bildschirm". Es ist der Standardausgabe-Strom, der auf vielen Betriebssystemen über ein Terminal mit dem Bildschirm verbunden ist. Wenn unter einer grafischen Oberfläche wie X11 oder Windows dem Programm kein Terminal zugewiesen wurde, geht die Ausgabe von std::cout verloren, sie erscheint also mitnichten "sozusagen auf dem Bildschirm".
--RokerHRO 10:05, 24. Sep. 2007 (CEST)[Antworten]
Diese Formulierung hatte mich auch etwas gestört. Ich habe die Stelle im Artikel etwas überarbeitet. Meinst du, es ist jetzt noch für Anfänger verständlich genug? --tim 00:34, 28. Sep. 2008 (CEST)[Antworten]

Kritikpunkte 2: Stil[Bearbeiten]

  • Ich weiß nicht, ob es so gut ist, dem Einsteiger gleich schlechten Stil anzutrainieren. using namespace std; ist aber durchaus schlechter Stil. Es hat schon seinen Grund, warum sämtliche Standardfunktionen, -Klassen und -Objekte im Namensraum std definiert sind. Wer tippfaul ist, und die Auswirkungen dieser Namensraumzusammenführung abschätzen kann, kann von mir aus seine Programme mit derartigen using-Direktiven vergiften. Ein Einsteiger kann dies jedoch nicht. Außerdem geht ihm dann der Überblick verloren, welche "Wörter" Schlüsselwörter und welche Bezeichner aus der Standardbibliothek sind. Er kennt sie ja schließlich noch gar nicht alle.
In fast allen Codebeispielen in diesem Buch wird dieser Namensraum verwendet. Ich denke, dass eine Warnung auf dieser Seite ausreichen würde, anstatt jetzt alle Beispiele abzuändern. Bei neuen Seiten sollte man dann einfach darauf achten, dass dieser Namensraum nicht benutzt wird. --tim 00:13, 28. Sep. 2008 (CEST)[Antworten]
  • Ich weiß nicht, ob Sätze wie "Beachten sollten Sie übrigens das C++ mit der Groß- und Kleinschreibung noch pingeligerer ist als so mancher Deutschlehrer." einem Buch zu mehr Seriösität verhelfen. Ich habe nichts gegen lockere Sprache in Sachbüchern. Aber dann bitte etwas gehaltvoller, mit dem jetzigen Satz kann niemand etwas anfangen. Es würde reichen, hinzuschreiben, dass die Groß-/Kleinschreibung bei C++ relevant ist, Schlüsselwörter und Namen der Standardbibliothek stets kleingeschrieben werden und es für die Groß-/Kleinschreibung von selbstdefinierten Namen gewisse Konventionen gibt, die man in späteren Kapiteln dann beschreiben kann und auf die hier dann nur verwiesen wird. Das war erstmal das Gröbste von meiner Seite. --RokerHRO 10:05, 24. Sep. 2007 (CEST)[Antworten]
Ich habe die Seite deinen Vorschlägen entsprechend angepasst. --tim 00:13, 28. Sep. 2008 (CEST)[Antworten]

Fehlender Befehl[Bearbeiten]

Im ganzen Buch fehlt der Befehl system("Pause") sonst kann man das Ergebnis nicht sehen -- Boris 20:29, 29. Jul. 2008 (CEST).[Antworten]

Das ist kein Befehl, sondern Murks. Es gibt auf der Welt noch andere Betriebssysteme, als die von Microsoft. --84.131.141.70 21:18, 29. Jul. 2008 (CEST)[Antworten]
Immoment kann ich auch mehr C++ und würde vorschlagen <conio.h> und getch() anzugeben. Sieht auch schöner aus.-- Boris 21:47, 5. Sep. 2008 (CEST)[Antworten]
conio.h und getch() sind nicht ISO-C++, sondern höchst proprietäre Dinge. Und wozu soll das auch gut sein? Die Quellcodes sind Konsolenprogramme, die man tunlichst auch von der Konsole (z.B. xterm, Shell, Terminal, DOS-Fenster) startet. Dann sieht man auch das Ergebnis. --84.131.147.118 22:36, 5. Sep. 2008 (CEST)[Antworten]
Die meisten die Dev-C++ benutzten drücken einfach auf Kompilieren und ausführen und sehen dann nichts. Mich hat das am am Anfang auch irritiert. Warum soll conio.h proprietär sein. Im Header steht: "This file has no copyright assigned and is placed in the Public Domain."-- Boris 15:52, 6. Sep. 2008 (CEST)[Antworten]
Ich kannte conio.h nur von Borland- und MS-Compilern/-IDEs. Wenn es nicht proprietär ist, ist es aber auf jeden Fall nicht portabel, da nur unter DOS/Windows vorhanden (wie ja auch "pause"). Wenn es nur darum geht, zu verhindern, dass das Konsolenfenster sich vorzeitig schließt, kann man auch getchar() oder cin.get() nehmen - das ist wenigstens ANSI-/ISO-Standard. --84.131.180.240 18:08, 6. Sep. 2008 (CEST)[Antworten]
Für Anfänger wäre es nützlichzu wissen, dass es sich um ein Konsolenprogramm handelt, dass automatisch schließt, wenn man dies nicht verhindert.-- Boris 10:44, 27. Sep. 2008 (CEST)[Antworten]

Ich hab mal ne Hinweisbox hinzugefügt, allerdings halte ich es nicht für sinnvoll, am Programmende einen Tastendruck abzuwarten. Konsolenprogramme werden für die Ausführung auf der Konsole geschrieben und wenn man sie von dort startet währe es äußerst nervig am Programmende immer noch einen unsinnigen Tastendruck zu machen.

Wer dennoch direkt aus der IDE starten will, kann mal nachschauen ob es eine Möglichkeit gibt, diese Ausführung über eine Batchdatei zu steuern. Keine Ahnung ob das irgendwo geht, aber wenn dann ist der Code für die Batch:

Programmname (inklusive Pfad)
Pause

Gruß --Prog 17:42, 27. Sep. 2008 (CEST)[Antworten]

Notwendigkeit von "return 0;"[Bearbeiten]

Muss man "return 0;" am Ende der main()-Funktion schreiben? Bei mir funktioniert es auch ohne diese Zeile. Das Programm beendet sich auch, wenn man den Wert ändert. Welchen Zweck hat also dieses "return 0;", wenn der Rückgabewert von main() gar nicht ausgewertet wird? --tim 00:42, 28. Sep. 2008 (CEST)[Antworten]

return 0; ist bei main() nicht umbedingt nötig, da diese Funktion einige Sonderrechte hat. Der Compiler gibt am Ende der Funktion implizit 0 zurück wenn kein return angegeben wurde. Es erfüllt im Grunde gar keinen Zweck, aber so oder so wird 0 an das Betriebssystem zurückgegeben. Es ist also reine Geschmackssache diese Anweisung zu schreiben.
PS: Mein vorheriger Beitrag war als Antwort auf den letzten über dem Strich gemeint, ich wollte nur nicht noch eine Einrückungsebene tiefer gehen. ;-) Gruß --Prog 15:21, 28. Sep. 2008 (CEST)[Antworten]