PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 10x IF THEN, oder was eleganteres möglich??



dl1akp
29.11.2005, 14:58
Hallo Leute,

habe mal ne Frage. Ich lese mit dem ADC einen Spannungswert und will nun bei verschiedenen Werten 10 verschiedene "Dinge" ablaufen lassen.

Muß ich nun 10x z.B.

IF Wert = 5 Then Gosub xyz
IF Wert = 10 THEN GOSUB klm usw.

machen, oder gibt es auch eine elegantere, vielleicht sogar sparsamere Variante?

Sowas steht leider in keinem Buch, oder kennt jemand eines über strukturierte Programmiereung in BASIC??

Danke, Andreas

maze2k
29.11.2005, 15:07
Es gibt in Basic wenn ich mich nicht irre so etwas:



myVar = 3;
select case myVar
case 1
print "one"
case 2
print "two"
case 3
print "three"
case else
print "not 1, 2 or 3"
end select

maze2k
29.11.2005, 15:08
Das ist sowas wie switch in Java oder C...

PicNick
29.11.2005, 15:28
Ich find' den "Select case" bei mehrfach Abfragen (der gleichen Variablen) am saubersten und gut zu lesen
Es gibt aber auch die "ELSEIF" Methode, die "IF-Bäume" etwas handsamer macht, besonders wenn unterschiedliche Bedingungen gefragt werden müssen:
IF bedingung1 THEN
----
ELSEIF bedingung2 THEN
----
ELSEIF bedingung3 THEN
----
END IF

darwin.nuernberg
29.11.2005, 16:17
Ohne weiteren Kommentar:


' Analog Input Test
'

$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
Config Adc = Single , Prescaler = Auto

Start Adc
Dim W As Word , Channel As Byte


Channel = 1

Print "Startup";

Do
W = Getadc(channel)

Select Case W
Case 0 : Print "Null"
Case Is < 10 : Print "weniger als 10"
Case 100 To 200 : Print "irgendwo zwischen 100 und 200"
Case Is < 500 : Print "Sehr viel"
Case Else : Print "irgendwas anderes"

End Select

Waitms 100

Loop

Stop Adc
End

Rage_Empire
29.11.2005, 18:23
mir würde auch noch der "on...goto"-Befehl einfallen. kommt aber auf die Anwendung, bzw. das gewünschte Ergebnis an.