[Guide] Das erste Programm!

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Guide] Das erste Programm!

      Hallo Core'ler,
      in diesen Tutorial möchte ich euch erklären wie man eine einfach Ausgabe in der
      Konsole programmieren kann. Ich werde zuerst denn Code Posten und dann eine
      Erklärung dazu schrieben. Ich werde Versuchen die Erklärung so kurz wie möglich zu halten.
      Aber zuerst etwas Allgemeines.

      Der Compiler
      Den Compiler muss man sich so vorstellen das er denn Quellcode in eine für denn Computer verständliche Sprache umwandelt, da der Computer ja nur 0 und 1 kennt. Zuerst ließt der Compiler alle Prärprozessor Anweisung die mit einem # gekennzeichnet werden. Dann geht er Zeile für Zeile vor und übersetzt denn Code. Damit der Code ohne Fehler compiliert werden kann muss der Quellcode und natürlich der Compiler sich an denn ANSI Standard halten.

      Der ANSI Standard
      Da es ja verschiedene Betriebssysteme gibt gibt es ja auch verschiedene Compiler die denn Quelltext für die verschiedenen Betriebssysteme Übersetzten müssen. Deswegen wurde der ANSI Standard ( American National Standards Institute ) eingeführt. Wenn ein Compiler und der Programmierer sich an diesen Standard hält kann der Quellcode immer ohne Fehler compiliert werden.

      Quellcode:

      Quellcode

      1. 01: #include <iostream> // Header Datei inkludieren
      2. 02:
      3. 03: using namespace std; // Standart setzen
      4. 04:
      5. 05: int main() // main - Funktion
      6. 06: {
      7. 07: cout << "Hallo Welt!" << endl; // Ausgabe
      8. 08:
      9. 09: return 0; // Rückgabe Wert
      10. 10: }


      Ausgabe:

      Quellcode

      1. Hallo Welt!


      Erklärung:
      In Zeile 1 steht [FONT="Courier New"][COLOR="Silver"]#include <iostream>[/COLOR][/FONT]. Alle Anweisungen die mit einem # Anfangen nennt man Prärprozessor Anweisungen. Diese werden von dem Compiler zuerst "gelesen" erst danach geht er Zeile für Zeile vor und wandelt denn Code in eine für denn Computer verständliche Sprache um. Dann folgt ein include <iostream>. Das include bedeutet das eine fremde Datei eingebunden wird. Das iostream steht für Input/Output Stream. Ohne diese wäre kein cout oder cin möglich. Das iostream wird von eckigen Klammern (< >) "umschlungen". Diese muss man benutzten wenn man eine Header Dateien einbindet die nicht selber geschrieben wurde oder separat installiert wurden. In Zeile 3 steht [FONT="Courier New"]using namespace std;[/FONT] Hier wird der Namens Bereich std (Standart) festgelegt. Dies benutzt man wenn man mit mehreren Quellcode Dateien arbeitet. Da man Funktionen und Variablen Namen zuweisen kann, würde es zu Konflikten kommen wenn mehrere Variablen oder Funktionen gleiche Namen hat. Deswegen weißt man ihnen einen Namensbereich zu (in diesem Fall std).

      In Zeile 5 steht [FONT="Courier New"][COLOR="Silver"]int main()[/COLOR][/FONT]. Der Integer Datentyp (int) bedeutet in diesem Fall das die Funktion main() einen Wert des
      Typs int zurück liefert. Was Datentypen sind und wozu man sie braucht werde ich aber später nochmal erklären. main() ist eine Funktion. Funktionen benutzt man um einen oft genutzten teil zusammen zufassen um ihn nicht immer neu schreiben zu müssen (z.B.: Menüs in Spielen). Dadurch wird der Quellcode übersichtlicher und leichter zu verstehen. Da wir aber kein Meter langen Quellcode haben scheint dies ja eigentlich ziemlich unnötig. Jedes C++ Programm braucht aber eine Funktion die main - Funktion. Diese dient als Einsprungpunkt für das Programm. In denn klammern () werden Parameter ( Werte) übergeben (z.B.: bei einer komplexen Rechnung), Da es aber nur eine Funktion gibt ist das eigentlich überflüssig. Nach dem Funktionsnamen folgt der Code Block der zu der Funktion gehört. Ein Code Block wird mit einer öffnenden geschweiften Klammer eingeführt und mit einer schleißenden geschweiften Klammer geschlossen. Was zwischen denn Klammern steht ist das Herzstück des Quellcodes, da hier das Programm erst los geht.

      In Zeile 7 steht [COLOR="SILVER"][FONT="Courier New"]cout << "Hallo Welt!" << endl;[/FONT][/COLOR]. cout (console out) weißt dem Compiler an das etwas ausgegeben werden soll. Danach folgen zwei eckige Klammern ( << ). Alles was danach kommt wird ausgegeben. Text denn man ausgeben will wird in Ausrufungszeichen ( "" ) angegeben. In unserem Fall "Hallo Welt", man kann natürlich dort hinschreiben was man will aber im Laufe der Zeit hat es sich so eingebürgert das man als erstes Programm eine Ausgabe mit Inhalt "Hallo Welt" schreibt. Nach dem Text folgen 2 weitere eckige Klammern und ein endl. Das endl bedeutet Übersetzt end of line, also das hier das Ende der Zeile ist und alles was danach kommt wird in der nächsten Zeile ausgegeben. Am Ende der cout Anweisung steht ein Semikolon ( ; ), dass dem Compiler an weißt das der cout "Befehl" nun beendet ist.

      In Zeile 9 steht [COLOR="Silver"][FONT="Courier New"]return 0;[/FONT][/COLOR]. Dies hat mehrere Aufgaben. 1. sagt return 0 dem Compiler das Wert 0 zurück gegeben wird. JEDE Funktion muss einen Wert zurück geben, da sie sonst nicht funktioniert. In diesem Fall sagen wir einfach das der Wert 0 zurück gegeben werden soll. Funktionen werde ich aber in einem anderen Tutorial nochmal genau erklären. Die 2. Aufgabe von return ist, dass es dem Compiler sagt das die Funktion ( in diesem Fall main() ) nun beendet wird.

      Falls noch irgend etwas unklar ist bitte ich darum dies hier in denn Thread oder mir PM mitzuteilen.

      Mfg Nydn
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Nydn;96491 schrieb:

      JEDE Funktion muss einen Wert zurück geben, da sie sonst nicht funktioniert. In diesem Fall sagen wir einfach das der Wert 0 zurück gegeben werden soll.

      Falsch. Funktionen müssen nicht zwangsläufig einen Wert zurückgeben (Stichpunkt 'void').

      Nydn;96491 schrieb:

      In denn klammern () werden Parameter ( Werte) übergeben (z.B.: bei einer komplexen Rechnung), Da es aber nur eine Funktion gibt ist das eigentlich überflüssig.

      Das empfinde ich wiederum als unklar:
      Dem Einstiegspunkt eines normalen C++ Programmes können 2 Parameter übergeben werden, konkrete Kommandozeilenargumente (als Array) und deren Anzahl. Aber normalerweise keine Parameter für eine Rechnung, also verstehe ich nicht inwiefern das gemeint sein soll.

      Ansonsten ist es relativ anschaulich erklärt und enthält keine weiteren, größeren Fehler (soweit ich das überblickt habe).
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]Muss 0x00 rechtgeben, ehrlich gesagt mir gefällt irgendwie sowieso einiges net dran, da stört mich was, kann aber auch sein dass es halt so ist, weiß es nicht, jedenfalls ich habe da so meine Dinge dran die mir nicht recht gefallen und so.

      @Jok3r
      Nich nur er hat das beste Tut, ich eigentlich auch.
      Ich sags mal so, von allen Tuts die das Hallo Welt Programm als Basis haben, was ja beim Proggen eh üblich ist, dass man damit anfängt, hat sich halt nunmal eingebürgert ;D, haben ich und Nydn die 2 besten meiner Meinung nach.
      Die anderen beiden sind auch gut, aber da fehlts einerseits an Stärke und so Zeugs

      So Post Ende

      Und nochn Free Push von mir xD[/SIZE][/COLOR][/FONT]
    • Falsch. Funktionen müssen nicht zwangsläufig einen Wert zurückgeben (Stichpunkt 'void').

      Das mit void hab ich vergessen D=, werde es sofort editieren.
      Das empfinde ich wiederum als unklar:
      Dem Einstiegspunkt eines normalen C++ Programmes können 2 Parameter übergeben werden, konkrete Kommandozeilenargumente (als Array) und deren Anzahl. Aber normalerweise keine Parameter für eine Rechnung, also verstehe ich nicht inwiefern das gemeint sein soll.

      Wenn man z.B. die Variablen vorher definiert und in der Rechnungs - Funktion, dann einfach nur die Rechnung schreibt. O=
      Für die Mühe ein Thanks :D

      Was soll das heißen, dass es nicht gut ist ?

      mfG [COLOR="Gray"]Nydn[/COLOR]
    • du hast zwar etwas zu namespace std; erklärt was die wenigsten in dem ersten tutorial machen, aber dennoch würde ich noch hinschreiben, dass man in dem Programm den namespce für das cout benötigt und man stattdessen auch std::cout ...; schreiben kann.

      sonst ganz gut aber naja wie ich schon im anderen thread gepostet hab finde ich es überflüssig noch mehr zu machen wo es sich vllt 5 durchlesen um etwas zu lernen... naja egal ich will nicht das wieder eine diskusion kommt aber das ist mein feedback ;)
    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Ach Sacred, geh und versteck dich in Visual Basic 2010 (oder 2008, je nachdem was du nutzt)
      Nur weil Vb vll ein Aff.GehSterben() hat ums sich ein besseres OS als Windows zu proggen, brauchste sowas nichs chreiben.
      In C++ sind nämlich auch 2 einfache Befehle cout zum ausgeben und cin.get() in dem Fall um die Konsole aufzulassen.
      In beiden Sprachen machen diese sprachenspezifischen Befehle da gleiche und zwar Text in der Konsole ausgeben.
      Nur mit dem Unterschied, dass sie anders heißen^^[/SIZE][/COLOR][/FONT]
    • Sacred;171245 schrieb:

      Oh Gott vie kompliziert das ist, einen einfachen text ausgeben zu lassen xD
      Bei VB ist das in einer Console nur so:


      Quellcode

      1. void main() { std::cout << "Hallo Welt!" << endl; }


      Ist sogar nur eine Zeile =o.
      Wir beachten jetzt mal nicht das C++ direkt in Maschinen code compiliert und .NET basierende Sprache erst in NET code und dan via Framework in maschinencode umwandeln tut.
    • internetfreak;171268 schrieb:

      Ach Sacred, geh und versteck dich in Visual Basic 2010 (oder 2008, je nachdem was du nutzt)
      Nur weil Vb vll ein Aff.GehSterben() hat ums sich ein besseres OS als Windows zu proggen, brauchste sowas nichs chreiben.
      In C++ sind nämlich auch 2 einfache Befehle cout zum ausgeben und cin.get() in dem Fall um die Konsole aufzulassen.
      In beiden Sprachen machen diese sprachenspezifischen Befehle da gleiche und zwar Text in der Konsole ausgeben.
      Nur mit dem Unterschied, dass sie anders heißen^^



      'cout>>;' -> kann auf eine Variable zugreifen also sie einlesen.

      'cin.get();' -> ist indem fall ein ReadKey
    • Sacred;171275 schrieb:

      so komische sinnlose Sachen drinne vorkommen.
      "std" "<<" "endl"

      komische sachen?

      diese komische sachen machen es einen sachen einfacher zu verstehen z.B komm ich mit der Console von c++ besser aus als die von C#


      <<
      etwas wird geschrieben

      std
      ist ein Befehl

      void main()
      sachen werden nur ausgeschrieben und nicht eingelesen

      cout
      schreib befehl

      korrigieren falls falsch

      e:
      der rest sollte klar sein
    • [COLOR="DeepSkyBlue"]

      Sacred;171275 schrieb:

      void main() { std::cout << "Hallo Welt!" << endl; }
      Ich frage mich nur, wiesoo da so komische sinnlose Sachen drinne vorkommen.
      "std" "<<" "endl"
      Ich mein, bei VB is es wenigstens Englisch..


      std = Studio
      endl = EndLoop
      cout = CreateOutput
      cin = CreateInput
      << = Hinein in einen Befehl
      >> = Hinaus aus einem Befehl

      So kannst du dir ganz einfache "Eselsbrücken" bauen und dir die Sachen so besser merken.[/COLOR]
    • ehm nicht ganz Tekumi:
      std = Standard
      endl = end of line ( flush wird erzeugt )
      cout = console out
      cin = console in
      << / >> = Manipulations Operator ( oder so xD )
      und void steht für nichts. ( keine rückgabewert )

      Sacred, das ist auch englisch oO