Absoluter Neuling möchte C ++ lernen...



  • Niemals aufgeben, sag ich da nur.
    Programmieren kann nämlich ganz schön spaßig sein. 🙂

    Liebe Grüße
    Reality



  • Na das habe ich inzwischen auch oft gehört, aber der richtige Einstieg ist verdammt schwer oder er fällt mir sehr schwer...



  • AlternativEnde schrieb:

    Na das habe ich inzwischen auch oft gehört, aber der richtige Einstieg ist verdammt schwer oder er fällt mir sehr schwer...

    Vor allem ist C++ imho nicht wirklich dazu geeignet, mit Spaß programmieren zu lernen. Viel zu komplex. Wenn ich damals statt der qbasic.exe nur nen C-Compiler gehabt hätte, wäre ich sicher nicht solange dran geblieben.



  • Deine komische BeIDE sollte doch ähnlich aussehen wie eine andere IDE unter Win oder Lin. Also neue Datei oder neues Projekt starten. So was wie Konsole(nanwendung) aussuchen. Sourcecode eingeben, als xxx.cpp abspeichern und dann irgendwo build oder kompilieren suchen. Anschließend sollte in dem Verzeichnis (oder eins drunter) eine lauffähige Binär-Datei (Win: exe) sein. Es gibt bestimmt im Inet eine Kurzanleitung für deine IDE. Ansonsten steige um auf Windows und verwende Dev-C++.



  • Ja genau ich kann da ein neues Projekt erstellen und dann auswählen zwischen
    BeSTL
    Be Application
    usw.

    Dazu tut sich direkt die nächste Frage auf 😉
    Muss ich immer BeSTL auswählen und das ganze als .cpp speichern ? Gibt es da auch andere Möglichkeiten oder wann muss ich das anders machen ?

    Desweiteren kann ich dann auf Make klicken, aber der bringt mir manchmal so komische Fehlermeldungen... Ich schau mal nach...



  • Beim lesen ind er Mittagspause ist mir gerade noch etwas eingefallen und zwar scheinen die Kommentare nicht so zu gehen wie sie in dem Tutorial stehen. Dort steht das man mehrzeilige so macht /..../ und einzeilige //... so, aber das wird bei mir rot markiert... Muss das denn hinter dem ; stehen oder davor oder wie ist das ??



  • /*
    Mehr-
    zeiliger
    Kommentar
    */
    
    //Einzilig
    

    Man beachte das es /**/ heißt und nicht // 😉
    Entweder kannst du hinter dem Semikolon oder in der Zeile darüber deinen Kommentr setzten. Dasliegt an dir 🙂



  • Nein, bei Kommentare musst du kein ; machen. Das es rot markiert wird, ist vielleicht das Syntax-Highlighting, also rot == Kommentar. Oder du verschluckst durch dein Kommentar ein Befehl.

    Liebe Grüße
    Reality



  • Sie sind in ordnung, wenn sie rot markiert sind habe ich heruas gefunden 🙂
    Alles klar das soll so sein....



  • Probier mal folgendes aus:

    1.Programm:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
      const double PI = 3.14159265;
      double C, L, f;
      cout << "Kapazitaet in MikroFarad: ";
      cin  >> C;
      cout << "Induktivitaet in MilliHenry: ";
      cin  >> L;
    
      f = 1 / ( 2 * PI * sqrt(L/1e3 * C/1e6) );
    
      cout << "Frequenz: " << f << " Hz" << endl;
    }
    

    2.Programm:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
      int     jahre, monate;
      double  zinssatz, zins, tilgung, kapital, monatsrate, 
              zinssumme=0, tilgungsumme=0;
    
      cout << "Kapital:    "   ; cin >> kapital;
      cout << "Zinssatz:   "   ; cin >> zinssatz;
      cout << "Jahre:      "   ; cin >> jahre;
      cout << "Monatsrate: "   ; cin >> monatsrate;
      cout << endl;
    
      monate = 12 * jahre;
    
      cout << setw(10) << " "       << setw(18) << "Zins" 
           << setw(16) << "Tilgung" << setw(16) << "Kapital" << endl << endl;  
    
      for(int i=1; i<=monate; ++i)
      {
        zins       = kapital * zinssatz/1200.0; // monatlicher Zins
        tilgung    = monatsrate - zins;
        kapital    = kapital - tilgung;
    
        cout.setf(ios::fixed,ios::floatfield); // Formatierung
        if((zins >= 0) && ((kapital + monatsrate) > 0) )
        {
            cout << setw( 4) << i <<". Monat: "
                 << setw(15) << setprecision(2) << zins    << ' ';
    
          if(kapital >=0)
          {
            cout << setw(15) << setprecision(2) << tilgung 
                 << setw(16) << setprecision(2) << kapital << endl;
            tilgungsumme += tilgung;
            zinssumme    += zins;
          }
          else
          {
            tilgung +=kapital;
            kapital  = 0; 
            cout << setw(15) << setprecision(2) << tilgung 
                 << setw(16) << setprecision(2) << kapital << endl;
            tilgungsumme += tilgung;
            zinssumme    += zins;
          }
        }
      }
      cout << setw(12) << endl << "Summe:"
           << setw(16) << setprecision(2) << zinssumme    << ' '
           << setw(15) << setprecision(2) << tilgungsumme << endl; 
    }
    


  • Warning : file does not end in newline
    ausfuehrbar.cpp line 20 }
    Error : /boot/home/TestC/test/ausfuehrbar.cpp: In function int main()': parse error before3.14159265358979323846'
    ausfuehrbar.cpp line 10 const double PI =3.14159265;

    Das ist der erste Error bei dem ersten Programm

    Der zweite

    Warning : file does not end in newline
    ausfuehrbar.cpp line 20 }

    Bei dem zweiten Programm

    Warning : file does not end in newline
    ausfuehrbar.cpp line 56 }

    Es funktioniert aber trotzdem....



  • Was nun ? was hat das zu bedeuten ?



  • Das mit dem "Warning : file does not end in newline" kannst du durch eine neue zeile am Ende des Programms(also nach der letzten schließenden }-Klammer) beheben.



  • Naja, immerhin kannst du schon kompilieren und linken. warnings sind auch keine errors! 😉 Geht doch.

    Jetzt mal das:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    class Lampe
    {   
        private:
            int helligkeit_;
    
        public:
            Lampe() : helligkeit_(0){}
    
            void dimmen(int wert)
            {
                helligkeit_ = wert;
            }
    
            bool getEin() const {return getHelligkeit();}
            int  getHelligkeit() const {return helligkeit_;}
    };
    
    class Schalter
    {   
        private:
            bool ein_;
    
        public:
            Schalter() : ein_(false){}    
            void schalten()    
            {
                ein_ = !ein_;
            }
            bool getEin() const {return ein_;}  
    };
    
    class Beleuchtung
    {
        private:
            vector<Schalter> v_;
            Lampe l_;
    
        public:
            Beleuchtung( vector<Schalter> v, Lampe l ) : v_(v),l_(l){}
    
            void schalten(int i)
            {
                v_[i].schalten();
                if( 
                    (  v_[0].getEin() &&  v_[1].getEin() &&  v_[2].getEin() )   ||
                    (  v_[0].getEin() && !v_[1].getEin() && !v_[2].getEin() )   ||
                    ( !v_[0].getEin() &&  v_[1].getEin() && !v_[2].getEin() )   ||
                    ( !v_[0].getEin() && !v_[1].getEin() &&  v_[2].getEin() )   
                  )
                    l_.dimmen(100);
                else 
                    l_.dimmen(0);
            }
    
            void status() const
            {
                cout << "S1: "   << (v_[0].getEin()?"an ":"aus") << "  " 
                     << "S2: "   << (v_[1].getEin()?"gerade  ":"gekreuzt") << "  "
                     << "S3: "   << (v_[2].getEin()?"an ":"aus") << "  " 
                     << "Lampe: "      << (l_.getEin()?"an ":"aus") << " "
                     << "Helligkeit: " << l_.getHelligkeit() << endl;      
            }    
    };    
    
    int main()
    {
        Lampe l1;
        Schalter s1,s2,s3;
        vector<Schalter> v;
        v.push_back(s1);
        v.push_back(s2); 
        v.push_back(s3); 
        Beleuchtung b1(v,l1);
        for(int i=0; i<3; ++i)
        {
            b1.schalten(0);
            b1.status();
            b1.schalten(1);
            b1.status();
            b1.schalten(2);
            b1.status();
        }    
    }
    

    vector ist eine Klasse der STL.



  • DAs funktioniert auch herrvorragend, auch wenn ich wieder nicht weiß was das Programm macht oder wie es funktioniert.. 😞
    Ich habe da mal ne Frage was haltet ihr von den beiden folgendes Büchern, wenn ich mir die kaufe auch in bezug auf die Programmierung die ich nacher anstrebe unter Zeta ?

    http://www.amazon.de/exec/obidos/ASIN/3826629841/qid=1091614277/sr=2-3/ref=sr_2_0_3/028-2171445-1055752

    http://www.amazon.de/exec/obidos/ASIN/3826629841/qid=1091614277/sr=2-3/ref=sr_2_0_3/028-2171445-1055752



  • Meinte noch als zweites Buch folgendes:

    http://www.amazon.de/exec/obidos/ASIN/382663117X/qid=1091715816/sr=1-1/ref=sr_1_10_1/028-2171445-1055752

    Komischerweise waren oben zweimal die selben links...

    Also was meint ihr ?



  • AlternativEnde schrieb:

    Also was meint ihr ?

    Wenn du wie gesagt ein absoluter Anfänger bist, solltes du OOP für Dummies imho erstmal meiden, weil dort gleich, wie der Titel des Buches schon aussagt ;), mit OO-Konzepten loslegt wie Konstruktor, Vererbung, etc.
    Das Buch ist locker geschrieben und ist später für dich besser geeignet.
    Mehr dazu: http://www.c-plusplus.net/titelanzeige.php?ISBN=3826629841
    Das zweite Buch von dir genannt, habe ich nicht gelesen, daher kann ich keine Meindung dazu sagen.
    Mein Vorschlag ist: http://www.amazon.de/exec/obidos/ASIN/3826608240/marcbackccecke
    Erst wird die prozedurale Programmierung beschrieben, danach geht es dann mit OOP los.
    Leider wird die STL nur angeschnitten, das letze Kapitel befasst sich mit Container, was für dich aber noch unwichtig ist.



  • Ok werde weiter schauen und erstmal noch ein bisschen mit den online Sachen lernen.
    Ich habe nämlich ein kleines Problem mit meinem BeIDE undzwar folgendes
    Wenn ich diesen Code aus dem Beispiel

    #include <iostream.h>
    int // <-- da mit void dann kommt folgender Fehler * main()
    {
    float radius;
    float hoehe;
    cout<<"Bitte geben Sie den Radius ein: " ;
    cin>>radius;
    cout<<"Bitte geben Sie die Höhe ein: " ;
    cin>>hoehe;
    const float PI=3.14f;
    float grundflaeche=PI*radius*radius;
    float volumen=(grundflaeche*hoehe)/ 3;
    cout<<"Das Volumen betraegt: "<<volumen<<endl;
    };

    Error : return type for `main' changed to `int'
    volumenkegel.cpp line 3 {

    Was ist das wo meint das Programm nen Fehler zu sehen ?
    Für den Rest bin ich nun zu müde um das zu erfahren, denn da sind noch ein paar Sachen in dem Programm die in dem Tutorial leider nicht erklärt sind..

    Vielen DANK !



  • Hallo,

    Was ist das wo meint das Programm nen Fehler zu sehen ?

    Du hast die Stelle doch selber gekennzeichnet und die Meldung sagt eigentlich auch schon alles aus.

    void main() // falsch
    int main() // richtig
    


  • Aha super 🙂
    Dann ist die Frage, ob es an dem Programm liegt ja geklärt 🙂
    Wunderschön.. Bisher macht mir C++ echt Spaß und es ist super zu sehen wie die PRogramme laufen und ich dazu lerne


Anmelden zum Antworten