if (Syntax) ändern [erledigt]

Hallo, kann mir jemand das…

if ((encoderPos != 5) && (encoderPos != 6) && (encoderPos != 7) && (encoderPos != 8))

mal verkürzen, vereinfachen.

Gruß und Dank Andreas

Da wäre es sinnvoll zu wissen, welche Werte encoderPos annehmen kann.

Ansonsten (ungetestet)

if (!((encoderPos >= 5) && (encoderPos <= 8)))

Gruß Tommy

Hallo, wäre es nicht... bei allen anderen Werten soll es ja ausgeführt werden. Gruß und Dank Andreas

für mich siehts nach oder aus
e<5 || e>8

Hallo Tommy56, das hast Du ziemlich gut gemacht...

Wenn ich es mir anschaue, dann ist es ganz einfach. Danke schön. Gruß Andreas

ich finde panpiras Lösung einfacher

Die Variante von Panpira ist einfacher.

Gruß Tommy

Edit: ElEspanol war schneller (Die Postanzahl pro Zeit scheint begrenzt zu sein)

Hallo,
ja auf den ersten Blick…

jetzt:

if (!((encoderPos >= 5) && (encoderPos <= 11)))


e<5 || e>11

nun kommt 17 dazu…

if (!((encoderPos >= 5) && (encoderPos <= 11)) && (encoderPos != 17))

e<5 || e>11 && ??

mit dem “oder” hätte ich dann doch eine zweite Abfrage, “und” anhängen
funktioniert doch nicht??
Gruß und Spaß
Andreas

hi,

in pascal gab es dafür mengen und mit IN stellte man fest, ob ein bestimmtes element vorhanden ist.

gibt es keine einfache, schnelle methode, um festzustellen, ob eine zahl in einem array vorhanden ist?

gruß stefan

Bedingungsoptimierungen funktionieren nur dann sinnvoll, wenn alle Werte bekannt sind. Nachträgliche Erweiterungen sind meistens nicht effizient.

Können da noch mehr Ausschlüsse komen? Evtl. lohnt dan ein Bit-Array, in dem pro index (zahl) wahr (1) oder falsch (0) abgelegt ist.

Gruß Tommy

wenn dann
( e<5 || e>11 ) && e!=17

Hallo,
um das hier mal zum Ende zu bringen…
Ich optimiere gerade einen 78k-Sketch, der benötigte 5 Taster für seine
verschiedenen Aufgaben. Diese Taster gingen mir auf den Zwickel und ich habe
sie gegen einen Encoder getauscht.
Das funktioniert auch alles…
Wenn ich jetzt von EncoderPos-0 zu EncoderPos-5 will, dann hangel ich mich
durch EncoderPos-1 bis EncoderPos-4.
Was nach sich zieht, das die Aufgaben 1 bis 4 angegriffen werden.

Nun könnte ich eine “Zeitsperre” im Sinne von-

verändert sich die EncoderPos noch? Nein, erfülle Aufgabe X
verändert sich die EncoderPos noch? Ja, warte…

Es geht mir aber gewaltig gegen den Strich, eine “ZeitBremse” zu nutzen.
Das muß in Echzeit geschehen.
Also fliegt diese EncoderGeschichte wieder raus. Dafür kommt ein Menü, das
über den Encoder die MenüPunkte anwählt, und dann über die EncoderTaste
direkt diese Aufgabe erfüllt.

Also, vielen Dank für eure Hilfe. Wenn ich wieder etwas “schweres” habe,
dann melde ich micht.
Gruß und Dank
Andreas

P.S.
( e<5 || e>11 ) && e!=17

Hier wird doch Pos 17 erfüllt…

Ich habe EncoderPos-17 gewählt.
Dann ist

( e<5 || e>11 )

erfüllt…

aber && e!=17

ist nicht erfüllt.

Das rauscht also durch, weil && verknüpft.
Bei && müssen doch beide Bedingungen erfüllt sein.

eben, wenn e 17 ist, dann ist e==17 erfüllt, aber e!=17 eben nicht

Ich kann mich ja irren, aber…

if (!((encoderPos >= 5) && (encoderPos <= 11)) && (encoderPos != 17))

e<5 || e>11 && ??

wenn ich den oberen Teil in Fließtext ausdrücke, dann steht da doch:

gehe immer dann in die “if”, wenn der Encoder nicht größer oder gleich 5 ist (also nur bei 0-4 und bei allen Minuszahlen) und wenn der Encoder nicht kleiner oder gleich 11 ist (also nur ab 12 aufwärts) und der Encoder darf auch nicht 17 sein.

also wenn ich mir das so ansehe, kann diese “if” niemals true sein…

also wenn ich mir das so ansehe, kann diese "if" niemals true sein...

Doch. Die Klammern sind etwas trickreich: Ich lese "Wenn nicht zwischen 5 und 11, und wenn nicht 17"

Das gilt für alle bis 4 , 12..16, und alle ab 18

Hallo,
genau…

ich bin immer noch der Meinung, das dieses “( e<5 || e>11 ) && e!=17” nicht funktioniert.
Wenn e17 ist… weil, und-Verknüpfung.

Gruß und Spaß
Andreas

Doch, das if (( e<5 || e>11 ) && e!=17) funktioniert auch.
Im Zweifelsfall ausprobieren.

Gruß Tommy

Hallo,
probiert- und?? Funktioniert! Ja, Jaaa :blush:
Gruß und Dank
Andreas

Freut mich, dass es jetzt bei euch auch funktioniert. Ich hätte es fast ausprobiert, so habt ihr mich verunsichert :confused:

:) Die Klammern waren aber auch fies...aber nun hab ich s auch verstanden. Vielen Dank!