mal wieder ein Taschenrechner

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mal wieder ein Taschenrechner

    Hallo,
    ich habe vor kurzem mit dem programmieren in C++ begonnen (ist meine erste Programmiersprache).
    Das Buch ist "Magnum C++", ein ziemlich gutes Buch wie ich finde.

    Jedenfalls habe ich gerade einen Taschenrechner programmiert (ohne Vorlage) und möchte wissen ob das ein guter "Programmierstil" ist,
    oder ob ich/ oder was ich verbessern sollte.

    Ich bedanke mich jetzt schon mal für eure Hilfe.




    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int addieren(int a, int b)
    4. {
    5. return(a + b);
    6. }
    7. int subtrahieren(int a, int b)
    8. {
    9. return(a - b);
    10. }
    11. int dividieren(int a, int b)
    12. {
    13. return(a / b);
    14. }
    15. int multiplizieren(int a, int b )
    16. {
    17. return(a * b);
    18. }
    19. int main()
    20. {
    21. char entscheidung;
    22. int zahl1, zahl2;
    23. cout << "Ein einfaches Rechenprogramm mit ganzen Zahlen" << endl << endl;
    24. for (int i = 1; i > 0;)
    25. {
    26. cout << "Menue:" << endl;
    27. cout << "(A)ddieren" << endl;
    28. cout << "(D)ividieren" << endl;
    29. cout << "(M)ultiplizieren"<< endl;
    30. cout << "(S)ubtrahieren" << endl << endl;
    31. cout << "(B)eenden" << endl << endl;
    32. cin >> entscheidung;
    33. switch (entscheidung)
    34. {
    35. case 'A':
    36. case 'a':
    37. cout << "Bitte geben Sie die zwei Zahlen ein, die Sie miteinander addieren moechten: " << endl;
    38. cin >> zahl1;
    39. cin >> zahl2;
    40. cout << "Ergebnis: ";
    41. cout << addieren(zahl1, zahl2) << endl << endl;
    42. break;
    43. case 'D':
    44. case 'd':
    45. cout << "Bitte geben Sie die zwei Zahlen ein, die Sie miteinander dividieren moechten: " << endl;
    46. cin >> zahl1;
    47. cin >> zahl2;
    48. cout << "Ergebnis: ";
    49. cout << dividieren(zahl1, zahl2) << endl << endl;
    50. break;
    51. case 'M':
    52. case 'm':
    53. cout << "Bitte geben Sie die zwei Zahlen ein, die Sie miteinander multiplizieren moechten: " << endl;
    54. cin >> zahl1;
    55. cin >> zahl2;
    56. cout << "Ergebnis: ";
    57. cout << multiplizieren(zahl1, zahl2) << endl << endl;
    58. break;
    59. case 'S':
    60. case 's':
    61. cout << "Bitte geben Sie die zwei Zahlen ein, die Sie miteinander subtrahieren moechten: " << endl;
    62. cin >> zahl1;
    63. cin >> zahl2;
    64. cout << "Ergebnis: ";
    65. cout << subtrahieren (zahl1, zahl2) << endl << endl;
    66. break;
    67. case 'B':
    68. case 'b':
    69. return 0;
    70. default:
    71. cout << endl << "Ungueltiger Wert" << endl << "Bitte versuchen Sie es erneut: " << endl << endl;
    72. }
    73. }
    74. }
    Alles anzeigen
  • hallo,

    was mir sofort auffällt, du hast überhaubt keine kommentare drin. es ist mir klar das es sich hier lediglich um ein übungsprojekt handelt, aber gewöhn dir an, immer alles zu kommentieren.
    wenn du irgendwann mal komplexere programme schreibst oder sogar im team an einem projekt arbeitest ist es sehr wichtig das man immer schön alles kommentiert hat!

    thx, truespin
  • truespin schrieb:

    es ist mir klar das es sich hier lediglich um ein übungsprojekt handelt, aber gewöhn dir an, immer alles zu kommentieren.

    Klingt so, als würdest du zu den Programmierern gehören, die für meinen Geschmack mit dem Kommentieren übertreiben. Meiner Meinung nach ist guter, selbsterklärender Code meistens die beste Dokumentation und zumindest der zweite Punkt ist hier erfüllt.
  • Hallo PakMan,
    Was ich zur besserenLesbarkeit verändern würde und auch empfehle ist in der Zeile 31 die for Schleife durch eine do while Schleife zu ersetzen, oder daraus eine while Schleife zu machen.

    statt dieser for Schleife

    for (int i = 1; i > 0;)
    {
    //...
    }

    eine do while Schleife

    do {
    //...
    } while(entscheidung != 'b' || entscheidung != 'B')

    oder eine while Schleife

    while (true) {
    //...
    }


    Zudem kannst du nach jeder neuen Auswahl den Bildschirm wieder löschen, was zur besseren Lesbarkeit führt.
    #include <windows.h>
    system("CLS"); // clear screen


    Anmerkung:
    // sind Kommentare

    eine for Schleife benutzt man meistens dann, wenn die Anzahl der Wiederholungen festgelegt sind.
  • Danke für die Tipps!

    Das mit den Kommentaren werd ich mir wohl angewöhnen müssen,
    wenn ich den Quellcode anderer lese finde ich Kommentare ja auch sinnvoll,
    nur selbst bin ich leider etwas faul;-)

    Der Befehl "CLS" wurde in meinem Buch noch garnicht erwähnt, obwohl schon ich bei Seite 400 bin.
    Werde ich mir aber merken.

    Also ein guter Programmierstil definiert sich darunter dass man keine "Gotos" benutzt,
    keine Endlosschleifen einfügt und den Quellcode nachvollziehbar für andere Programmierer gestaltet?

    Es wurde und wird zwar immer wieder behauptet (in meinem Buch), dass man unbedingt einen guten Programmierstil schreiben sollte,
    nur wurde nicht so verständlich erklärt was ein guter Programmierstil denn überhaupt ist.
  • @ Florian:
    nein gehörte ich sicher nicht. ich bin selbst immer recht kommentierfaul, aber es ist einfach wichtig wenn man in einem team arbeitet. ich sage nicht das man jede zeile kommentieren muss, aber man sollte funktionen kurz beschreiben. alleine schon weil verschiedene neue entwicklungsumgebungen später beim aufrufen der funktion dir z.b. die übergabeparameter usw. die du ja kommentiert hast per intellisens anzeigt und du dann eben nicht erst nachsehen muss was da so alles übergeben werden muss bzw. was das überhaubt würd parameter sind.
    auch wenn man schleifen oder rekursionen hat sollte man die doch einfach kurz erklären... so kann man sich viel schneller in den code einarbeiten. ebenso halte ich es für sinnvoll, wichtige variablen zu kommentieren. ich rede nicht von irgendwelchen countern die keinen menschen interessiern...

    thx,
    truespin


    edit:
    @pakman:
    das kannst du so nicht sagen... auch endlosschleifen werden in der softwareentwicklung verwendet z.b. in steuergeräten für autos oder irgendwelchen fertigungsmaschinen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von truespin ()