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



  • Ich bin der Meinung das er doch egal ist ob das C oder C+++ sauber ist, denn wer anfängt der wird auch nicht immer sauber schreiben..
    Und meine Grundregel ist sowieso, die Hauptsache ist, dass ein Program läuft. Und zwar Fehlerfrei.



  • Wow ich bin echt erstaunt.. Soviele Antworten in so kurzer Zeit ist echt super 👍

    Nun geht es ans eingemachte, denn das einzige was mich nochd avon abhält mit einem Tutorial zu beginnen ist die Tatsache, dass ich mit BeIDE dem Programm für Beos und Zeta nicht richtig umgehen kann oder besser gesagt garnicht.
    Gibt es hier niemanden, der davon Ahnung hat oder programmiert ihr alle für Windows und Linux ?

    Herzliche Grüße !



  • Hi,
    wenn es um die Grundlagen geht, ist es egal mit welchem Betriebssystem anfängt zu programmieren.
    Du könntest auch Notfalls mit einem Compiler für Windows programmieren, wenn du in ANSI C/C++ (das offizielle C/C++) programmierst und dann später auch einen Zeta Compiler umsteigen.

    Ansonsten gibt es sicherlich eine Hilfe bei der BeOS IDE.

    Liebe Grüße
    Reality



  • Benutzt du Zeta? Weil da ist meines Wissens die GNU Compiler Suite dabei. Infos wie man mit dem Compiler umgeht, müsste es im Netz geben.



  • Was für ein Gnu Compiler denn ? Ich habe hier keinen gesehen. Wiegesagt es gibt hier das Programm BeIDE, welches ganz gut sein soll und in dem ja schon so ein Compiler drin ist, dass soll das einzige sein was man braucht...
    Dieser Einstieg ist so schwer 😞
    Ich werde mir mal ein paar Turorials anschauen und versuchen das irgendwie mit dem Programm hinzubekommen..



  • 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


Anmelden zum Antworten