vereinfachen von if funktionen

Anfängerfragen zum Programmieren mit PureBasic.
Gn00bi
Beiträge: 22
Registriert: 10.04.2007 16:00

vereinfachen von if funktionen

Beitrag von Gn00bi »

Code: Alles auswählen

If s=0
t=0
ElseIf s=1
t=1
ElseIf s=2
t=2
ElseIf s=3
t=3
ElseIf s=4
t=4
ElseIf s=5
t=5
ElseIf s=6
t=6
ElseIf s=7
t=7
ElseIf s=8
t=8
ElseIf s=9
t=9
ElseIf s=10
t=10
ElseIf s=11
t=11
ElseIf s=12
t=12
ElseIf s=13
t=13
ElseIf s=14
t=14
ElseIf s=15
t=15
EndIf
wie kann ich das ganze vereinfachen
thx schonmal
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Und wenns nur zwischen 0 und 15 sein darf:

Code: Alles auswählen

if s >= 0 and s <= 15
  t=s
endif
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

... oder

Code: Alles auswählen

S = T * (T >= 0 And T <= 15)
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@jear
nein, so nicht! :? :(

Boole'sche Ausdrücke werden in PB nativ nicht unterstützt.

...hatten wir doch schon oft genug, nicht?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

jear hat geschrieben:... oder

Code: Alles auswählen

S = T * (T >= 0 And T <= 15)
Bohr, immer diese Leute, die alles in eine Zeile kriegen müssen, da platzt mir der Kragen...



... :roll: ... :lol:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@AND
:lol: soso


@Gn00bi

haben dir die ansätze was geholfen?
oder was willst du genau machen?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Gn00bi
Beiträge: 22
Registriert: 10.04.2007 16:00

Beitrag von Gn00bi »

hm ja danke habt mir schon geholfen hab da irgendwie viel zu kompliziert gedacht bei der sache!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Für AND51 noch die extrem langsame Variante :lol:

Code: Alles auswählen

Select s : Case 0 To 15 : t = s : EndSelect
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Danke! :lol: Du hast aber den Vermekr vergessen: "So soll man's nicht machen..."
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

PB-Hilfe hat geschrieben:Spezielle Informationen zur Verwendbarkeit logischer Ausdrücke

Logische Ausdrücke (z.B. "Position < 100") können uneingeschränkt mit Befehlen verwendet werden, die logische Ausdrücke erwarten (z.B. If, While, Until) sowie in Kombination mit logischen Operatoren (And, Or, XOr, Not).

In der vorliegenden PureBasic-Version liefern die Rückgabewerte der Vergleichsoperatoren (<, <=, =, >=, >, <>) Ergebnisse, die z.B. in Kombination mit mathematischen Ausdrücken zu unerwarteten Resultaten führen können. Verwenden Sie in solchen Fällen zusätzlich einen der Operatoren And, Or oder Not, um korrekte Ergebnisse zu erzielen.

Beispiel:
Counter = 0 : A = 20 : B = 20
Counter + (A=B) ; Counter wird um den Wert B erhöht (unabhängig vom Vergleichsergebnis)
Counter + (0 Or (A=B)) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Counter + (1 And (A=B)) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Counter + (Not Not (A=B)) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt

Sie können den zusätzlich benötigten Operator auch von einem Makro erstellen lassen.

Beispiel:
Macro Is(Bool)
(0 Or (Bool))
EndMacro

Counter = 0 : A = 20 : B = 20
Counter + Is(A=B) ; Counter wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Antworten