Ein paar fragen eines Neulings



  • Joe199 schrieb:

    1.Welcher Kompiler kommt für mich in Frage ?

    Unter Windows würde ich sagen MinGW und der Microsoft Compiler und als IDE Codeblocks oder Microsoft Visual Express Edition. Die Geschmäcker sind da sehr verschieden, für meinen reicht mir Codeblocks.

    Joe199 schrieb:

    2.Hat jemand erfahrung mit dem Buch cC++ von A bis Z?

    Der Autor hat hier keinen guten Ruf, da er zwar sehr anfängerfreundlich schreibt aber viele Fehler macht und auch Sachverhalte unvollständig erklärt.
    Bessere Bücher sind: Der C++ Programmierer, C++ Primer(ebook), Die C++ Programmiersprache(eher für Fortgeschrittene) und Effektiv C++(auch für Könner)

    Joe199 schrieb:

    3.Weches Wissen sollte ich mir zusätzlich aneignen?
    Welche Mathematischen etc. Kentnisse brache ich um anzufangen?

    Um anzufangen reichen die Kenntnisse aus der Schule, je nach dem wie tief du in die Informatik einsteigen willst brauchst du noch was über diskrete Mathematik, Algorithmen und Datenstrukturen, Entwurfsmuster und vielleicht was zur Softwareentwicklung im Allgemeinen.

    Gruß Blue-Tec



  • Hi,

    danke erstmal für die Antworten.

    Ich habe mir jetzt mal MSVC++ Express 2010 geladen, leider blickt der das auch nicht mit meinem "Hello World".

    Nichts wird angezeigt.

    Ich hab mich vor ca. 2 Jahre mit C++ beschäftigt da wurde die Console geöffnet.

    Ich will ja blos mit den wenigen "Befehlen" die ich kennen gelernt habe ein wenig herumexperimentieren.

    MfG



  • Achte darauf das du ein leeres win32-konsolenprojekt erzeugst dann sollte sich beim Starten ein Konsolenfenster öffnen. Bei Codeblocks läuft dann das Programm durch und du musst nochmal mit einer Taste bestätigen wenn du es beenden möchtest. Ich glaube bei Microsoft musst du dieses Verhalten per Hand einbauen, ein Art dies zu tun wäre vor dem return 0; ein SYSTEM("Pause"); zu setzen. Ein elegantere Weg ist hier irgendwo in einem Artikel erklärt.

    Gruß Blue-Tec



  • Las mich raten:Das Consolen-Fenster geht gleich wieder zu, wenn Du Dein Programm gestartet hast?



  • Hallo,

    nein es wurde nichtmal Kompiliert.
    Aber nachdem ich gegooglet hab hab ich#s herausgefunden an was es lag,
    ich hatte Vista und müsste ein Paar einstellungen ändern. 😉

    Okay damit hab ich aber nur "Hello World" zum laufen gebracht.
    Irgendetwas stimmt immernoch nicht. 😞

    Wenn ich

    #include <iostream>
    using namespace std;
    int Alter;
    
    void main()
    {
            cout << "Wie alt sind Sie? ";
            cin  >> Alter;
            cout << '\n';
            if(Alter >= 18);
            {
                    cout << "Sie sind: " << Alter << " Jahre alt\n";
            }
            if(Alter < 18);
            {
                    cout << "Du bist: " << Alter << " Jahre alt\n";
            }
    		 cin.get();
       return 0;
    }
    

    Dann kommt:

    1>------ Erstellen gestartet: Projekt: Aufgabe 1, Konfiguration: Debug Win32 ------
    1>  Aufgabe 1.cpp
    1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(13): warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?
    1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(17): warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?
    1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(21): error C2562: 'main': 'void'-Funktion gibt einen Wert zurück
    1>          c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(7): Siehe Deklaration von 'main'
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Obwohl ich den Code Aus dem Tut http://multidev.de/tutorial-programmieren/c++-book.php#22 kopiet habe.
    Auserdem ist doch vor Return ein Semikolon.

    Weis jjemand was ich noch machen kann? 👍



  • Das Semikolon hinter der if-Bedingung ist falsch und es muß "int main()" heißen:

    int main()
    {
      //...
    
      if(Alter >= 18)
      {
    
      }
      if(Alter < 18)
      {
    
      }
    }
    

    Ältere Compiler von Microsoft akzeptierten leider auch "void main()", dies ist aber nicht standardkonform.

    Nachtrag:
    Das Tutorial ist eindeutig nicht auf dem neuesten Stand. Obwohl dort als Datum 2006 angegeben ist, verwendet er dort "Visual C++ 6", und dieser Compiler (mehr als 10 Jahre alt!) entspricht nicht dem aktuellen C++ Standard. Neben dem falschen "void main" werden auch noch die alten Include-Dateien <iostream.h> anstatt <iostream> verwendet.

    Such dir lieber ein aktuelleres Tutorial...



  • Auch neuere Compiler akzeptieren "void main"... und es ist sehr wohl Standard Conform, wenn Du ein C++ Programm schreibst...



  • Hallo Jochen,

    wie kommst du denn darauf? Man muß nicht explizit "return 0;" am Ende der main()-Funktion hinschreiben, aber die Deklaration muß "int main()" lauten, s.a. int main() oder void main()?

    Um es noch explizit klarzustellen:
    natürlich kann ein spezieller Compiler zusätzlich auch "void main()" erlauben, jedoch wäre dies dann nicht mehr portabel im Sinne von "Standard C++".



  • das 2. sollte schon ein "else if" sein



  • Th69 schrieb:

    die Deklaration muß "int main()" lauten, s.a. http://www.c-plusplus.net/forum/viewtopic-var-t-is-39346.html
    ...jedoch wäre dies dann nicht mehr portabel im Sinne von "Standard C++".

    Da bringst Du was durcheinander... Der Link bezieht sicht auf C99, was nun mal mit C++ nix zu tun hat. Und ich hatte mich auch C++ bezogen...
    Aber das was ja hier gar nicht das Thema... sorry für die Verwirrung...



  • RageR schrieb:

    das 2. sollte schon ein "else if" sein

    Ist genau genommen nicht notwendig, da die andere Bedingung nicht mehr efüllt sein kann, wenn die erste es ist - und andersrum.

    Tatsächlich wäre es also sogar besser ein if (...) {} else {} heranzuziehen.





  • --- schrieb:

    RageR schrieb:

    das 2. sollte schon ein "else if" sein

    Ist genau genommen nicht notwendig, da die andere Bedingung nicht mehr efüllt sein kann, wenn die erste es ist - und andersrum.

    Tatsächlich wäre es also sogar besser ein if (...) {} else {} heranzuziehen.

    stimmt



  • oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)



  • RageR schrieb:

    oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)

    oder man nimmt gleich nen datentyp der keine negativen zahlen hergibt am besten "unsigned char";)



  • RageR schrieb:

    RageR schrieb:

    oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)

    oder man nimmt gleich nen datentyp der keine negativen zahlen hergibt am besten "unsigned char";)

    Es ging ja eh nur darum abzufragen, ob das eingegebene Alter größer oder gleich 18 ist.

    Wenns größer oder gleich 18 => Volljährig, die Anrede ist: Sie.
    Ansonsten => Nicht volljährig, die Anrede ist: Du.

    Und unsigned char kannst du nicht nehmen, da std::cin dann ein Zeichen einliest und keine Zahl. 😉



  • --- schrieb:

    Und unsigned char kannst du nicht nehmen, da std::cin dann ein Zeichen einliest und keine Zahl. 😉

    c++ is eben madig :p



  • Hmm da hab ich n Problem will mir ja nicht von anfang an einen schlechten Stil angewöhnen.

    Kennt einer ein Tutorial das auch so (meiner Meinung nach) gut Strukturiert und simpel erklärt ist wie :
    http://multidev.de/tutorial-programmieren/c++-book.php#11

    nur sollte es ein wenig aktueller und einen besseren Programmierstil aufweisen.
    Hab mich schon dumm gegooglet aber nichts besonderes gefunden.

    Was sagt ihr zu dem buch Visual c++ 6 ?

    LG
    Joe199φ



  • Joe199 schrieb:

    Hmm da hab ich n Problem will mir ja nicht von anfang an einen schlechten Stil angewöhnen.

    Kennt einer ein Tutorial das auch so (meiner Meinung nach) gut Strukturiert und simpel erklärt ist wie :
    http://multidev.de/tutorial-programmieren/c++-book.php#11

    nur sollte es ein wenig aktueller und einen besseren Programmierstil aufweisen.
    Hab mich schon dumm gegooglet aber nichts besonderes gefunden.

    Was sagt ihr zu dem buch Visual c++ 6 ?

    LG
    Joe199φ

    Das Buch Visual C++ 6 steht bei mir im Regal und verstaubt. Es ist uralt und zeigt sich mit einem Cover, wo void main() drauf steht. Horror, vergiss das Buch!!!

    Etwas weiter links in meinem Regal steht C++ Lernen und professionell anwenden. Allerdings bin ich mir nicht sicher, ob man das als Anfänger bereits so gut nachvollziehen kann. Such mal im Forum nach Buchempfehlungen. Die Frage gabs schon häufiger. 😉



  • Das Tutorial ist übrigens auch durchgefallen, weil es einen uralten Compiler verwendet und nicht mehr aktuellen Code beibringt:

    #include <iostream.h> // Uralt
    
    void main() // Falsch
    {
    	cout << "Hallo Welt\n";
    }
    

    Richtig wäre:

    #include <iostream>
    
    int main()
    {
     std::cout << "Hallo, Welt!\n";
    
     return 0; // Bei standardkonformen Compilern optional
    }
    

Anmelden zum Antworten