Taschenrechner (Stroustrup Kapitel6)



  • Du kannst eine Funktion zuerst deklarieren, also ihren Namen bekannt geben.

    Hast du z.B. die folgende Funktion:

    int Func(double Decimal, int& Counter, float f = 2.2f, const std::string& Name = "Hallo")
    {
       // ...
    }
    

    Dann schreibst du einfach die Signatur mit den Defaultparametern als Deklaration. Man nennt dies auch den Prototypen der Funktion:

    int Func(double Decimal, int& Counter, float f = 2.2f, const std::string& Name = "Hallo");
    

    Zur Verdeutlichung kannst du auch den Speicherklassenspezifizierer extern angeben (der bei Angabe von keiner Speicherklasse für Funktionsdeklarationen automatisch angenommen wird) - besonders hilfreich, wenn man z.B. auch statische Speicherklassenspezifizierer für Funktionen benutzt ( static ) und davon abgrenzen will:

    extern int Func(double Decimal, int& Counter, float f = 2.2f, const std::string& Name = "Hallo");
    

    Bei der Definition darf man dann die Defaultparameter nicht noch einmal angeben:

    int Func(double Decimal, int& Counter, float f, const std::string& Name)
    {
       // ...
    }
    

  • Administrator

    -> Kapitel 7 lesen 🙂

    Grüssli


  • Mod

    Unmittelbar vor der Definition der Funktion term wird das auch im Buch, Kapitel 6.1.1 angesprochen, technisch gesehen ist also auch ein Fehler beim Abschreiben.


  • Administrator

    camper schrieb:

    Unmittelbar vor der Definition der Funktion term wird das auch im Buch, Kapitel 6.1.1 angesprochen, technisch gesehen ist also auch ein Fehler beim Abschreiben.

    Das steht tatsächlich dort. Habe es gerade nachgelesen. Ich meine, ich habe das Buch auch gelesen, aber das hätte ich nun wirklich nicht mehr auswendig gewusst. Was machst du in deiner Freizeit? Bücher auswendig lernen? 😃

    Grüssli



  • Hallo,

    Dravere schrieb:

    camper schrieb:

    Unmittelbar vor der Definition der Funktion term wird das auch im Buch, Kapitel 6.1.1 angesprochen, technisch gesehen ist also auch ein Fehler beim Abschreiben.

    Das steht tatsächlich dort. Habe es gerade nachgelesen. Ich meine, ich habe das Buch auch gelesen, aber das hätte ich nun wirklich nicht mehr auswendig gewusst. Was machst du in deiner Freizeit? Bücher auswendig lernen? 😃

    Grüssli

    Schliesst du völlig aus, dass er einfach nachgeschlagen hat, aus Interesse? Wahrscheinlich glaubst du auch, dass viele den Standard auswendig kennen (das ist nicht der Punkt, man muss nur wissen, wo man Dinge finden kann) 🙂

    Bei mir zu Hause liegt dieses Buch auch immer griffbereit, um einfach mal nachzusehen, wie das eine oder andere dort beschrieben wurde, wenn eine Frage zu diesem Buch hier im Forum kommt.

    MfG,

    Probe-Nutzer



  • Probe-Nutzer schrieb:

    Bei mir zu Hause liegt dieses Buch auch immer griffbereit, um einfach mal nachzusehen, wie das eine oder andere dort beschrieben wurde, wenn eine Frage zu diesem Buch hier im Forum kommt.

    MfG,

    Probe-Nutzer

    😮

    Aber irgendwer muss ja den guten Samariter spielen 😃


  • Administrator

    Probe-Nutzer schrieb:

    Schliesst du völlig aus, dass er einfach nachgeschlagen hat, aus Interesse? Wahrscheinlich glaubst du auch, dass viele den Standard auswendig kennen (das ist nicht der Punkt, man muss nur wissen, wo man Dinge finden kann) 🙂

    Ich habe auch sofort zum Buch gegriffen. Aber ich kam nicht auf die Idee das Kapitel nochmals durchzulesen. Ich habe sogar die ersten paar duzend Zeilen gelesen, weil ich gedacht hatte, dass vielleicht sowas am Anfang erwähnt wurde.

    Danach habe ich den Kapitel Aufbau angeschaut und gesehen, dass dies auf der ersten Seite von Kapitel 7 erwähnt wird.

    Wenn er das ganze Kapitel 6 nochmals gelesen hat, finde ich das schon wahnsinnig.
    Naja, vielleicht gehe ich halt einfach von der Tatsache aus, dass der Leser sein Buch schon richtig lesen wird. Und wenn er es nicht tut, ist er selber Schuld. Daher ist es nicht meine Aufgabe, für den Leser das Buch zu lesen und deshalb auch nicht die Aufgabe von camper, was dann wohl zur Schlussfolgerung geführt hat, dass er das auswendig weiss. Würde mich ja ehrlich gesagt nicht erstaunen 😃

    Grüssli



  • So erst mal vielen dank.

    Naja, vielleicht gehe ich halt einfach von der Tatsache aus, dass der Leser sein Buch schon richtig lesen wird. Und wenn er es nicht tut, ist er selber Schuld.

    Stimmt ich wusste aber zuerst nicht warum dort dann expr() schon mal aufgerufen wurde. Ich habe dann eine falsche Schlussfolgerung gezogen und als es dann nach kapitel 6.16 laufen sollte und es nicht tat... wusste ich nicht wieter und mir kam es gar nicht in den sinn das die funktion deshalb schon deklariert war. Deshalb habe ich es beim 2und 3mal lesen auch eher überlesen. Ich dachte mir natürlich das der fehler irgentwo bei mir liegen muss (wo auch sonst 😃 ) Tja aber wenn man zulange vor einem code sitzt will es einem nicht einfallen^^.

    Im nachhinein ist mir natürlich auch kalr warum das da steht und ich weis auch nicht warum ichs nicht sofort verstanden habe. 😉

    Also noch mal vielen dank.

    Gruß

    Walter



  • Was soll eigentlich das hier?

    int main()
    {
    
        table["pi"] = 3.1415926535897932385;
        table["e"] = 2.7182818284590452354;
    
        while(cin)
        {
            get_token();
    
     // --> Sinn!?
            if (curr_tok==END)
            {
                break;
            }
            if (curr_tok==END)
            {
                continue;
            }
      // <--
    
            cout<<expr(false)<<'\n';
        }
        system("PAUSE");
        return no_of_errors;
    }
    


  • Hallo,

    Blaaaaa schrieb:

    Was soll eigentlich das hier?

    int main()
    {
    
        table["pi"] = 3.1415926535897932385;
        table["e"] = 2.7182818284590452354;
    
        while(cin)
        {
            get_token();
    
     // --> Sinn!?
            if (curr_tok==END)
            {
                break;
            }
            if (curr_tok==END)
            {
                continue;
            }
      // <--
    
            cout<<expr(false)<<'\n';
        }
        system("PAUSE");
        return no_of_errors;
    }
    

    Ist Unsinn, richtig steht es hier:

    http://www.research.att.com/~bs/dc.c

    MfG,

    Probe-Nutzer



  • Hab ich richtig nur abschriebfehler habe es in meinem Programm schon geändert gehabt habs nur hier nicht übernommen.

    lg

    Walter


Anmelden zum Antworten