[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:

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

    Ausgabe:

    Code
    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

  • [FONT="Courier New"][COLOR="Red"][SIZE="3"]Für die Mühe ein Thanks :D[/SIZE][/COLOR][/FONT]

    [SIZE=3][COLOR=White]MfG Zer0[/COLOR][/SIZE]

    [CENTER]

    [SIZE=2]We are in the Core![/SIZE][SIZE=2][COLOR=White][/COLOR]
    [/SIZE]
    [/CENTER]

  • Es gibt zwar viele solcher Tutorials trozdem hast du das hier am besten erklärt.
    Welche Funktion was macht etc.
    Ich hoffe doch das weitere solcher Tutorials kommen =)

    [CENTER]

    [COLOR=sandybrown][SIZE=4]Victory over all[/SIZE][/COLOR]
    [COLOR=orange]-*Victoria Justice*-[/COLOR]

    [COLOR=sandybrown]Besucht doch mal meinen Blog!
    Dort findet ihr aktuelle Projekte, Downloads und Code Snippets
    [/COLOR]
    [COLOR=darkorange]http://www.jok3r.de[/COLOR]
    [/CENTER]

  • Zitat von Nydn;96491

    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').

    Zitat von Nydn;96491

    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).

    [CENTER][/CENTER]

  • [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]

  • Zitat

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


    Das mit void hab ich vergessen D=, werde es sofort editieren.

    Zitat

    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=

    Zitat

    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 ;)

  • das ist ein programm das einfach nur in dieses schwarze fenster (konsole) Hallo Welt! hineinschreibt.

  • Zitat von Syrius;109816

    was für ein programm ist das den
    hat einer ein paar pics ?

    Wenn du alles druchgelesen hättest, würdest du es wissen...

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

    Zitat

    Console.WriteLine("Hallo Welt")
    Console.Readkey

    [CENTER][LEFT]

    Zitat von Kuroibara;170836


    Lol sorry jetzts reichts mir mit dir du hast doch nen Knall junge [COLOR=DarkGreen]geh in deine Ecke[/COLOR] [COLOR=Red]und[/COLOR] [COLOR=Green]verschwinde von hier.[/COLOR]

    [/LEFT]

    [LEFT]
    [/LEFT]
    [/CENTER]

  • [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]

  • Zitat von Sacred;171245

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

    Code
    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.

  • Zitat von internetfreak;171268

    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

  • 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..

    [CENTER][LEFT]

    Zitat von Kuroibara;170836


    Lol sorry jetzts reichts mir mit dir du hast doch nen Knall junge [COLOR=DarkGreen]geh in deine Ecke[/COLOR] [COLOR=Red]und[/COLOR] [COLOR=Green]verschwinde von hier.[/COLOR]

    [/LEFT]

    [LEFT]
    [/LEFT]
    [/CENTER]

  • Zitat von Sacred;171275

    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#


    Zitat

    <<

    etwas wird geschrieben

    Zitat

    std

    ist ein Befehl

    Zitat

    void main()

    sachen werden nur ausgeschrieben und nicht eingelesen

    Zitat

    cout

    schreib befehl

    korrigieren falls falsch

    e:
    der rest sollte klar sein

  • [COLOR="DeepSkyBlue"]

    Zitat von Sacred;171275

    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]

    [COLOR=Red][/COLOR][CENTER]
    [/CENTER]

  • 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

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!