21. Februar 2019, 08:39:05
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] Logische Schreibweisen


hot_post Autor Thema: [gelöst] Logische Schreibweisen  (Gelesen 1653 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

21. Januar 2019, 11:24:23
Gelesen 1653 mal
Offline

EddiFox


Hallöchen,

welche Schreibweisen sollte man verwenden?
Sind die folgenden Schreibweisen denn Grundsätzlich richtig?

1. If Variable  (Ist Variable=True?)
2. If Not Variable  (Ist Variable=False?)
3. If Variable=True  (Ist Variable=True?)
4. If Not Variable=True  (Ist Variable=False?)
5. If Variable=False  (Ist Variable=False?)
6. If Not Variable=False  (Ist Variable=True?)

Laut Handbuch ist "Not" nur eine Invertierung.
Also aus True wird False oder andersrum.

Wie haltet ihr das, gibt es da bestimmte Regeln?
« Letzte Änderung: 22. Januar 2019, 06:23:14 von Werner Hampel »
  • gefällt mir    Danke
Bis denne
Oliver
KUKA - 3 Jahre dabei und immer noch am grübeln... :)

Heute um 08:39:05
Antwort #1

Werbung

Gast

21. Januar 2019, 12:35:00
Antwort #1
Offline

d4nuu8


Ich habe jetzt nicht ganz verstanden auf was du hinaus willst, aber ganz allgemein ist es schlechter Stil boolsche Variablen auf TRUE oder FALSE abzufragen:

; Schlecht
IF (SomeBooleanVariable == TRUE) THEN
...
ENDIF

IF (SomeBooleanVariable == FALSE) THEN
...
ENDIF

; Gut
IF (SomeBooleanVariable) THEN
...
ENDIF

IF (NOT SomeBooleanVariable) THEN
...
ENDIF
« Letzte Änderung: 21. Januar 2019, 18:02:41 von d4nuu8 »
  • gefällt mir    Danke

21. Januar 2019, 16:16:13
Antwort #2
Offline

drudge


btw. ein einfaches '=' ist eine Zuweisung und kein Vergleich
  • gefällt mir    Danke

21. Januar 2019, 18:04:23
Antwort #3
Offline

Loipe


Hallo

was ich auf den tot nicht ab kann ist

IF bBool==TRUE THEN
  bAndereBool = FALSE
ENDIF
IF bBool==FALSE THEN
  bAndereBool = TRUE
ENDIF

oder
IF bBool==TRUE THEN
  bAndereBool = FALSE
Else
  bAndereBool = TRUE
ENDIF


wenn doch

  bAndereBool = NOT bBool


reicht.

das selbe mit

IF nZahl>5 THEN
  bAndereBool = FALSE
ELSE
  bAndereBool = TRUE
ENDIF


wenn

  bAndereBool = (nZahl<=5)

recht

und IF die nen Zeilenumbruch machen

entschuldigung musste ich mal loswerden

Gruß Loipe

wer das hier liest hat zuviel zeit oder einen viel zu großen bildschirm

21. Januar 2019, 23:56:35
Antwort #4
Offline

EddiFox


Hi Leute,

danke für die Antworten. Bin gerade dabei ältere Programme auszumisten und neu zu schreiben. Da sind mir so ziemlich alle Variationen aufgefallen die man so schreiben kann. Die Programme wurden wohl durch mehrere Person gleichzeitig gepflegt, und jeder hatte seinen eigenen Stil :)
  • gefällt mir    Danke
Bis denne
Oliver
KUKA - 3 Jahre dabei und immer noch am grübeln... :)

Heute um 08:39:05
Antwort #5

Werbung

Gast

22. Januar 2019, 08:32:46
Antwort #5
Offline

Loipe


also vor

bBool == TRUE oder FALSE ist meiner meinung nach bBool und NOT bBool vorzuziehen.

  • gefällt mir    Danke
wer das hier liest hat zuviel zeit oder einen viel zu großen bildschirm

22. Januar 2019, 10:38:46
Antwort #6
Offline

Otto Sieben


Mmh,
nach meiner Auffassung:
bBOOL = TRUE ist eine direkte Zuweisung, bBOOL = not bBOOL eine Invertierung des aktuellen Zustands. Somit nur zu 50% identisch mit dem ersten Ausdruck. Es sei denn bBOOL kennt noch andere Zustände ausser TRUE and FALSE... :zwink:
  • gefällt mir    Danke
never touch a running system

22. Januar 2019, 12:40:12
Antwort #7
Offline

EddiFox


Eine Invertierung bedeutet Schwarz oder Weiß, True oder False also immer das Gegenteil. Da eine boolsche Variable aber nur 2 Zustände haben kann sehe ich da keine Probleme.
Genau wie bei Ein/Ausgänge, die Frage ich auch sehr oft mit z.B. "WAIT FOR DI04SGM_AUSWERFER_HINTEN  oder WAIT FOR NOT DI04SGM_AUSWERFER_HINTEN " ab. Bisher keine Probleme.
« Letzte Änderung: 22. Januar 2019, 12:47:01 von EddiFox »
  • gefällt mir    Danke
Bis denne
Oliver
KUKA - 3 Jahre dabei und immer noch am grübeln... :)

22. Januar 2019, 13:59:52
Antwort #8
Offline

Joern_E

ROBTEC Mitarbeiter

Moin Eddi,

welche Schreibweise Du verwendest ist - grundsätzlich - Deiner Vorliebe überlassen. Gut lesbar sind die schon vorgeschlagenen Varianten ...

IF bBool THEN
  ...
ENDIF

IF NOT bBool THEN
  ...
ENDIF

Wenn Du außerdem noch sinnvolle Variablennamen verwendest, wird der Code ohne zusätzliche Kommentare gut lesbar. ;)

Das gleiche Problem wie Du habe ich nämlich auch gerade. Ein Programm, in dem alle möglich Varianten (=TRUE, =FALSE, <>TRUE, ...  :roll: ) vorkommen. Nach dem Ausmisten und vergeben vernünftiger Variablen-, Prozeduren- und Funktionsnamen konnte ich 90% aller Kommentare entfernen. :)

Gruß
Jörn
  • gefällt mir    Danke
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.

Heute um 08:39:05
Antwort #9

Werbung

Gast

23. Januar 2019, 08:10:09
Antwort #9
Offline

Programmiersklave


Nur mal Interessehalber an dieses Thema gehängt, weil es hier wie selbstverständlich wieder auftaucht: aus welchem Teil der Hölle stammt eigentlich die Unart, unmittelbar VOR den eigentlichen Variablennamen einen Präfix zu hängen, der mit einem oder auch mehreren Buchstaben den Typ beschreibt? Als jemandem, der WÖRTER liest, macht mich das wahnsinnig! Und es ist so sinnlos....

Grüße,
Michael
  • gefällt mir    Danke

23. Januar 2019, 08:44:45
Antwort #10
Offline

Loipe


Sehe ich eigentlich genauso......

aber es gibt genügend diletanten die Sowas brauchen weil sie sich nichts merken können und für die faulen die Syntaxvervollständigung nutzen hats einen Vorteil wenn du mit dem Präfix anfängst kriegst du ne schöne liste aller mit dem Präfix.

aber generell gabe ich dir recht
  • gefällt mir    Danke
wer das hier liest hat zuviel zeit oder einen viel zu großen bildschirm

23. Januar 2019, 18:17:14
Antwort #11
Offline

Twister


Hi Programmiersklave,

hab mal gegoogelt...
Herr Charles Simonyi ist verantwortlich, er hat dieses System namens "Ungarische Notation" erfunden.
Ich erinnere mich dass es z.B. bei den Stäubli Robotern fest in der Programmiersprache verankert ist.

Grüße
Twister
« Letzte Änderung: 23. Januar 2019, 18:21:59 von Twister »
Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

23. Januar 2019, 19:16:40
Antwort #12
Offline

Roland Keller

Administrator
Ich wäre da etwas vorsichtiger mit meiner Ausdrucksweise. Bezeichnungen wie etwa Dilettanten und/oder Faule haben hier nichts zu suchen.
Für die Intelligenten und Fleissigen zu denen ich dich dann ja zählen sollte eine Frage. Woher weiß ich, wenn ich an einen Roboter komme ob z.B Greifer_offen eine Boolsche Variable ist oder ein digitaler Eingang?
Bevor ich da jemanden zumute irgendwelche Datenfiles zu durchsuchen verwende ich lieber die ungarische Notation.
bGreifer_offen, diGreifer_offen.
Ist das dilettantisch? Bin ich deswegen faul? Oder mache ich mir und anderen damit das Leben/Einlesen in ein Programm leichter?
-------------
Gruß
Roland

Wie poste ich falsch?
Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.

Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer

Heute um 08:39:05
Antwort #13

Werbung

Gast

23. Januar 2019, 19:25:44
Antwort #13
Offline

Martl


Servus,

die Leute die den Präfix vorne weglassen, sind meist auch die Leute deren Variablennamen nicht sinnvoll deklariert sind.
Woher weist du, wenn du nicht gerade selbst das Programm geschrieben hast obs ein Bool oder evtl. ein Digitaler Eingang ist?
Für mich erleichtert das ungemein die Lesbarkeit eines fremden Programms.

BTW: es gibt auch Programmierer die können ihr eigenes Programm nach einem Jahr nicht mehr lesen.

Würden sich alle daran halten dann gäbs nicht so eine Saustall wie in manchen Programmen.

dixxx => digital input
doxxx => digital output
gixxx => group input
goxxx => group output
aixxx => analog input
aoxxx => analog output
bxxxx => boolean
rxxx => real
nxxx => numeric/integer
sxxx => string

Musste ich mal loswerden. :zwink:

Grüße
Martl

23. Januar 2019, 19:34:58
Antwort #14
Offline

Martl


@Loipe

Es geht mir auch tierisch auf den Sack jedesmal die Config.dat zu durchsuchen um den Datentyp zu Erfahren.
(Es gibt auch noch Steuerungen vor der KRC 4, da musste man suchen)
Das selbe gilt auch für Deklarationen von z.B. digitalen E/As => die gehören in die Config.dat und nicht wie schon oft gesehen ins Dat-File von Unterprogrammen.

Solche Programmierer gehören mit Klobürste gekämmt. :genau:

Aus.

Grüße
Martl


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH