3 Fragen zum C++ Programmieren(Einsteiger)



  • Hallo liebes Forum,
    Ich lernen nun seit 1 Woche C++(ohne jedwede Vorkenntnisse in Programmierung) und habe alles gut bis jetzt verstanden. Nur habe ich noch 3 Fragen die mich irritieren...

    1. Überall steht das die void-Funktion keine Werte zurückgibt doch wenn ich eine schreibe(Beispiel unten) gibt sie mir dich Werte wie strings, ints usw aus? Was wird genau als Wert bezeichnet?

    2. Ich habe mit meinen jetzigen Wissen einen Rechner gebastelt. Dieser läuft auch ganz gut ohne große Probleme nur möchte ich gerne die Rechnungen vom User irgendwo abspeichern und auf befehl des Users wieder ausgeben, wäre das möglich?

    3. Weshalb schreibt man Funktionen, und nicht einfach alles in die Main() hinein? Um das Programm kleiner zu halten?

    Hier mein Rechner (bitte nicht lachen.. wie gesagt 1 Woche Wissensstand.. ^^)

    #include <iostream>
    #include <cmath>
    #include <vector>

    using namespace std;

    double z1, z2;

    void Wurzelrechnung()
    {
    //funktion zur errechnung von Wurzeln.
    cout << "Bitte Wert zur berechnung der Wurzel eingeben: " << endl;
    cin >> z1;
    cout << "Die Wurzel von " << z1 << " wird berechnet..." << endl;
    cout << "Die Wurzel von " << z1 << " beträgt: " << sqrt(z1) << endl;

    }

    void Hochzahlen()
    {
    //Funktion zur errechnung von Hochzahlen.
    cout << "Bitte den ersten Wert eingeben: " << endl;
    cin >> z1;
    cout << "Bitte den zweiten Wert eingeben: " << endl;
    cin >> z2;

    pow(z1, z2);
    
    cout << z1 << "^" << z2 << " Ergibt : " << pow(z1, z2) << endl;
    

    }

    void GrundRechnung()
    {
    //Funktion für die Grundrechenarten.
    char OP;
    double summ;

    cout << "Bitte geben sie den ersten Wert ein: " << endl;
    cin >> z1;
    cout << "Bitte den Operator eingeben: ( + | - | * | / )" << endl;
    cin >> OP;
    cout << "Bitte den letzten Wert eingeben: " << endl;
    cin >> z2;
    
    switch(OP)
    {
    case '+':
        summ = z1 + z2;
        break;
    case '-':
        summ = z1 - z2;
        break;
    case '*':
        summ = z1 * z2;
        break;
    case '/':
        summ = z1 / z2;
        break;
    }
    cout << z1 << OP << z2 << " Ergibt: " << summ << endl;
    

    }

    int main()
    {
    //Auswahlsmenü zur jeweiligen Rechenart.
    int auswahl;

    cout << "Bitte wähle eine Rechenart: " << endl;
    cout << "1 für Grundrechenarten \n2 für Hochzahlen \n3 für Wurzelberechnung " << endl;
    cin >> auswahl;
    
    if(auswahl == 1)
    {
        GrundRechnung();
    }
    else if(auswahl == 2)
    {
        Hochzahlen();
    }
    else if(auswahl == 3)
    {
        Wurzelrechnung();
    }
    
    cout << endl;
    
    return main();
    

    }



    1. zurückgeben ist return ... nicht cout << ...
    2. ja, geht. Nein, ist nicht in zwei Sätzen erklärt
    3. stell dir 1000000 Zeilen in der main vor. Wartbarkeit, Modularisierung, Wiederverwendung ...


  • @Balgeroth sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    Weshalb schreibt man Funktionen, und nicht einfach alles in die Main() hinein? Um das Programm kleiner zu halten?

    du kannst auch dein ganzes programm in eine zeile schreiben. dann wird es noch kleiner. 😃



  • zu 2: ja du kannst es z.b. in eine datei schreiben. in gängigen lehrbüchern wird das thema "dateiein- und -ausgabe" umfassend behandelt. (2 sätze! 😀 )



  • @Balgeroth sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    Weshalb schreibt man Funktionen, und nicht einfach alles in die Main() hinein?

    pow ist auch eine Funktion (mit einem Rückgabetyp ungleich void)
    coutauch.

    Möchtest du diese Funktionen nachprogrammieren, bzw. jedesmal wenn du diese brauchst den Code hinschreiben?



  • @DirkB sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    pow ist auch eine Funktion (mit einem Rückgabetyp ungleich void)
    cout auch.

    std::cout ist keine Funktion, sodern eine Variable vom Typ std::ostream. Die Funktion zur Ausgabe, auf die @DirkB anspricht, ist operator<<. Man schaue nach zum Beispiel hier: https://en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt und https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt



  • @wob sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    sodern eine Variable vom Typ std::ostream

    Dann ist ein Objekt auch eine Variable. Und eine Klasse ein Typ.



  • @titan99_ sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    @wob sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    sodern eine Variable vom Typ std::ostream

    Dann ist ein Objekt auch eine Variable. Und eine Klasse ein Typ.

    Würde ich so sehen. Ist das nicht gängig? (immerhin heißt es im template<typename T>... ja auch "Typename" - und das kann eine Klasse sein oder ein primitiver Typ)



  • @wob sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    Würde ich so sehen. Ist das nicht gängig?

    Doch. Das war ein völlig überflüssiger Einwurf von @titan99_



  • @Bashar sagte in 3 Fragen zum C++ Programmieren(Einsteiger):

    Doch. Das war ein völlig überflüssiger Einwurf von @titan99_

    Ich wollte mich nur selbst vergewissern, ob das so sei, da meinerseits dabei eine Verunsicherung bestand.


Log in to reply