PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen nacheinander durchlaufen und berechnen?



Enrico3
05.03.2007, 09:23
Hallo,

ich habe folgendes Problem:

Ich springe im Programm in eine Sub, dort wird eine Berechnung mit mehreren Variablen durchgeführt. Jetzt will ich aber nicht für jede Variable eine eigene Berechnung ins Programm schreiben, sondern das ganze so lösen, dass in der Sub eine Schleife läuft, die zu Beginn die erste Variable in die Berechnung schickt, beim zweiten Durchlauf die zweite Variable usw., bis alle durchlaufen und berechnet sind.
Ist das überhaupt möglich? Wenn ja, wie?

Ich habs schon mit Arrays probiert, aber bis jetzt noch recht erfolglos. Der Code soll ja möglichst klein bleiben.

Bestimmt könnte man das mit einer Zählvariable und einer anschließenden Fallabfrage machen, aber das wäre mir eigentlich schon zu viel Code.

Vielen Dank.

Grüße
Enrico

Vitis
05.03.2007, 11:21
klar ist das möglich.
Du hast mehrere Möglichkeiten, aber die eleganteste ist vermutlich
über ne Funktion, also ne Funktion bauen, die ne Rechenoperation
anhand der übergebenen Parameter durchführt und das Ergebnis zurückgibt.
Das kannste dann recht einfach im Code einbinden:

y = funktion_x(x)
x= Übergabeparameter
y= Rückgabewert

funktion funktion_x(tempwert)
tempwert=tempwert*tempwert
funktion_x=tempwert
end function

Ich weiß, ist pseudocode aber so in etwa geht das dann ... schau mal in die Bascom Hilfe über function.

Sauerbruch
05.03.2007, 11:25
Ich habs schon mit Arrays probiert, aber bis jetzt noch recht erfolglos. Der Code soll ja möglichst klein bleiben.


Was genau hat denn mit den Arrays nicht geklappt? Ich programmiere zwar erst seit ein paar Monaten mit BASCOM, habe aber genau so eine Aufgabe mit Arrays problemlos gelöst bekommen (EINE Subroutine, die einen Haufen Variablen nacheinander auf die selbe Art und Weise durchrechnet).

Auf die Code-Größe habe ich zwar nicht geachtet, kleiner geht´s aber m.E. nicht. Wie hast Du´s denn konkret versucht?

Enrico3
05.03.2007, 17:24
Hallo,

danke für eure Antworten.
Also das mit der Funktion ist mir schon klar, das roblem ist, das ich mehrere Variablen habe.
Konkret habe ich 4 Byte-Variablen, die ich gern in einem Zuge an eine Funktion oder Sub übergeben möchte:

Call T_berechnung(A , B , C , D)

A bis D sind also die Variablen, die sich ständig ändern.

Meine Sub sieht bis jetzt ungefähr so aus:



Sub T_berechnung(byref A As Byte, B As Byte, C As Byte, D As Byte)

Berechnung...

End Sub



Die Variablen sollen jetzt nacheinander berechnet und der berechnete Wert wieder zurück in dieselbe Variable geschrieben werden.
Also z.B. Variable A wird berechnet und das Ergebnis wird in Variable A gespeichert, danach wird Variable B berechnet und das Ergebnis in Variable B gespeichert, bis alle durchlaufen sind.

Nun möchte ich aber nicht vier mal zur Berechnung in die Sub springen, sondern halt alle Werte auf einmal berechnen und dann zurück springen.

Mein Problem ist jetzt, wie sage ich, dass nachdem die Variable A berechnet wurde dieselbe Berechnung mit Variable B...D gemacht werden soll?

Mit den Arrays habe ich versucht die Variablen zu speichern, hat auch funktioniert, nur weiß ich dann wieder nicht, wie ich ein Feld höher zähle und neu rechne.

Vielen Dank.

Grüße
Enrico

milkbubi
07.03.2007, 09:41
hi,
warum funktioniert denn dein array nicht?

wenn ich mich nicht irre müsste das doch einfach so irgendwie aussehen oder



dim var(4) as byte
dim index as byte
dim ergebnis as ???

for index = 1 to 4
ergebnis = var(index) 'hier die berechnung
next index


evt. auch for 0 to 3, weiß jetzt nicht wo der anfängt im array bei 0 oder 1.

mfg milkbubi

edit: Hab noch nachgesehen wird von 1 an adressiert.