Frage zu Funktionsdeklarationen



  • Hallo!

    edit: Ich habe dazu schon die Lösung gefunden. (siehe unten) Dabei ist jedoch eine zweite Frage aufgetaucht.

    Ich habe einige funktionsabfolgen, die grundsätzlich sehr einfach sind, aber irsinnig viel platz am bildschrim wegnehmen und dadurch mein programm total unübersichtlich werden lässt..

    nun meine frage: wie kann ich diese abfolgen von funktionen mit einer shortcutfunktion im programm aufrufen?

    z.B.:
    anstelle von

    double x = 0
    x = x + 1 /* = BerechnungWertx */
    

    und

    cout<< "Die Variable x hat den Wert<< x <<endl; 
    system("pause"); /* = AusgabeWertx */
    

    die Shortcuts

    BerechnungWertx
    AusgabeWertx
    

    Kann man diese Abfolgen von Funktionen auch in andere Dateien aulagern (z.B BerechnungWertx.cpp und AusgabeWertx.cpp, und sie dann in eine main.cpp zu gegebener Zeit einladen?)

    Ich bräuchte bitte sehr sehr einfache Bsps., da ich in der hinsicht von c++ noch ein ziemlicher noob bin und eigentlich noch die denkweise vom batchprogrammieren intus hab...

    Vllt. kennt jemand von einige gute bsps im Netz, die das sehr anschaulich erklären.

    Vielen Dank!

    lg,
    LeFish



  • Hallo!

    Also ich habe diese shortcuts gefunden. der quellcode würde dann so aussehen:

    void BerechnungWertx()
    {
    double x = 0;
    x = x + 1; /* = BerechnungWertx */
    }
    
    void AusgabeWertx()
    {
    cout<< "Die Variable x hat den Wert<< x <<endl; 
    system("pause"); /* = AusgabeWertx */
    }
    
    int main()
    {
    BerechnungWertx();
    AugabeWertx();
    }
    

    Meine Frage nun: Sind variablen und deren Werte, die innerhalb einer dieser Funktionsshortcuts definiert wurden, global verfügbar?

    Danke!

    LeFish



  • Nein sind sie nicht. Und ja du kannst die Funktionen auch auslagern in andere Dateien.

    Mein Tipp: Nimm einmal (rasch wenn es denn sein muss) ein C++ Tutorial durch. Findest genug, einige hier im Forum haben ihre eigenen geschrieben.

    z.B kannst du dich auf www.volkard.de umsehen.



  • Das sind keine "Shortcuts", sondern ganz normale Funktionen - und deren Variablen sind nur lokal gültig. Was du dort als "Shortcuts" haben willst, könntest du am ehesten mit Präprozessor-Makros umsetzen:

    #define BerechnungWertX double x=0;x=x+1;
    #define AusgabeWertX cout<< "Die Variable x hat den Wert"<< x <<endl; \
    system("pause");
    

    PS: Über den Stil dieser Definitionen könnte man noch stundenlang diskutieren 😉



  • Hallo

    Sind variablen und deren Werte, die innerhalb einer dieser Funktionsshortcuts definiert wurden, global verfügbar?

    Nein, die Variablen in Funbktionen (auch deren Parameter) sind grundsätzlich lokal.
    Zum Austauschen von Werten zwischen Variablen gibt es zwei direkte Möglichkeiten : Rückgabewert und Parameter, dir als Referenzen übergeben werden.

    bis bald
    akari



  • Hallo!

    Habe den Code nun nochmalig umgeschrieben. Eure Vorschläge (Rückgabewert) hab nun versucht einzubauen. Kann ich nun so Variablen von einer Funktion in die nächste übegeben?

    double x = 0;
    
    double BerechnungWertx()
    {
    x = x + 1; /* = BerechnungWertx */
    
    return x;
    }
    
    void AusgabeWertx()
    {
    cout<< "Die Variable x hat den Wert<< x <<endl; 
    system("pause"); /* = AusgabeWertx */
    }
    
    int main()
    {
    x = BerechnungWertx();
    AugabeWertx();
    }
    


  • Hallo

    Das mit dem Rückgabewert ist schon richtig. Du solltest allerdings ganz auf globale Variablen verzichten. Nun must du natürlich noch das Ergebnis an die Ausgabefunktion übergeben

    double BerechnungWertx(double x)
    {
    return x++;
    }
    
    void AusgabeWertx(double x)
    {
    cout<< "Die Variable x hat den Wert "<< x <<endl;
    system("pause"); /* = AusgabeWertx */
    }
    
    int main()
    {
    double x = 1.4;
    x = BerechnungWertx(x);
    AugabeWertx(x);
    }
    

    bis bald
    akari



  • // double x = 0; Globale Variablen vermeiden
    
    double BerechnungWertx( double x_ )  // x_ als Parameter nur local
    {
    x_ += 1; /* = BerechnungWertx */
    
    return x_;
    }
    
    void AusgabeWertx( double x_ )  // x_ dito
    {
    cout<< "Die Variable x hat den Wert " << x_ <<endl; 
    system("pause"); /* = AusgabeWertx */
    }
    
    int main()
    {
    double x = 0;  // x als lokale Variable in main()
    x = BerechnungWertx( 0 );
    AugabeWertx( x );
    }
    

    edit: zu lahm...


Anmelden zum Antworten