Übergabeparameter bei Funktionen nutzen



  • Hallo

    zunächst einmal:
    Ich bin nicht sicher, ob ich das richtige Unterforum erwischt habe.
    Momentan programmiere ich einen Lebensdauertestcontroller, der vier Prüflinge steuert. Die Entwicklungsumgebung und Programmiersprache ist vom Hersteller mitgeliefert, basiert jedoch auf C++. Nun zu meiner Frage:

    Folgender Fall:
    Ich habe vier gleiche Prüflinge und möchte mit diesen auch gleiche Sachen anstellen (Spannung einstellen o. ä.), weshalb ich mir Funktionen geschrieben habe, die ich aufrufe. Also Übergabeparameter habe ich die Zahlen 1 bis 4 gewählt.

    Momentan wird danach in der Funktion eine Fallunterscheidung CASE aufgerufen und der entsprechende Code ausgeführt. Dieser ist jedoch für jeden Prüfling fast identisch, bis auf die anderen Variablennamen (z. B. Strom1 Strom2 etc.).

    Das scheint mir relativ viel unnötige Copy-Paste Arbeit zu sein und wenn ich den Code ändere muss ich sehr viel anpassen. Ich wundere mich, wie man dies eleganter lösen kann.
    Kann ich den Variablennamen inkrementieren oder den Übergabewert der Funktion mit dem Variablennamen verbinden?

    Ich hoffe, Ihr versteht mein Anliegen.

    Vielen Dank schon mal im Voraus! 🙂


  • Mod

    Du brauchst einen Container. Sollte in jedem Lehrbuch relativ bald drankommen. Hier vermutlich ein Vector oder Array, möglicherweise auch eine Map.



  • Hallo.
    Poste doch bitte mal den Code den du schon hast. Dann kann dir besser geholfen werden
    Gruß Marco



  • Danke für die superschnellen Antworten!!!

    Function Spannungsetzen(Pruefling:INT);
    
    Var
    
    SpannungSoll1:INT;
    SpannungSoll2:INT;
    SpannungSoll3:INT;
    SpannungSoll4:INT;
    
    End_Var;
    
    Case Pruefling of
    
    1:
    SpannungSoll1:=10;
    Break;
    2:
    SpannungSoll2:=10;
    Break;
    3:
    SpannungSoll3:=10;
    Break;
    4:
    SpannungSoll4:=10;
    Break;
    
    End_Case;
    End_Function;
    

    Das ist natürlich ein schwachsinniges Minimalbeispiel, da man die Spannung auch direkt setzen könnte. Es werden in der tatsächlichen Anwendung viele Werte gesetzt aber ich denke das reicht um sich ein Bild zu machen.

    Ich würde gerne den Übergabewert der Funktion (Hier also Prueflingsnummer) direkt in den Variablen stehen haben. Also z. B. SpannungSoll.Pruefling - das geht natürlich nur mit einem Umweg, den ich gerade suche 🙂

    Danke!



  • ionaselate schrieb:

    Also z. B. SpannungSoll.Pruefling - das geht natürlich nur mit einem Umweg, den ich gerade suche 🙂

    SeppJ schrieb:

    Du brauchst einen Container. Sollte in jedem Lehrbuch relativ bald drankommen. Hier vermutlich ein Vector oder Array, möglicherweise auch eine Map.



  • Das sieht nicht im entferntesten nach C++ aus.


  • Mod

    Ab ins Pascal-Forum! Oh, Moment...

    Aber auch in Pascal gibt es mindestens Arrays. Und auch in Pascal ist das noch viel größerer Schwachsinn als du denkst, denn das verändert doch bloß eine lokale Variable, die überhaupt gar kein Array zu sein bräuchte.



  • Hallo

    es gibt Arrays!
    Ich weiß nur nicht, wie die mir hier weiterhelfen sollen ...



  • SeppJ schrieb:

    Ab ins Pascal-Forum!

    Das sieht zwar ein bisschen wie Pascal aus, aber in Pascal gibt es nur "end", nicht "End_Function", "End_Case" usw.

    Könnte es sich vielmehr um SCL handeln? -> https://de.wikipedia.org/wiki/Strukturierter_Text

    Eine Suche nach "scl array" bringt z.B. als ersten Treffer dieses hier: http://www.sps-forum.de/simatic/2945-array-scl.html

    Jedenfalls hat das rein gar nix mit C++ zu tun.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten