![]() |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
|
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
![]() 1971/1972, das macht wenig Unterschied. Mit C/C++ kann man sehr elegante Konstrukte machen, wenn man will, und Pascal's begin-end muss man nicht unbedingt schön finden :stupid: Für mich ist es halt ein unentschieden :-D |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Pascal ist einer der Urväter ... C kam 1-2 Jahre später .... die haben bestimmt bei uns abgeguckt (das aber nicht sonderlich gut :duck:)
Es haben Beide auch Algol als Vorfahre. Wobei für Pascal die Ursprünge schon in den 5 Jahren davor begannen (siehe dem, der Algol W erfand :stupid:) Spätestens bei C# haben sie beim Pascal abgeguckt ... bzw. sie hatten sich Anders Hejlsberg als Cheffentwickler geklaut, drum sehen da auch einige Bezeichner so bissl delphiig aus. ![]() siehe auch der Screenshot da ganz unten ![]() |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Helft mir mal. Gab's bei Fortran 77 überhaupt zwei verschiedene Zeichen für Zuweisung und Vergleich?
O. T. : Und das mit der Sinnhaftigkeit des Unterrichts erlebe ich mehr im 'modernen' Physikunterricht. Da sollte ich mal was erklären, fand aber in Heft und Buch nur Philosophisches zur Solarenergie.... :-D |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
|
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Ok, wenn wir schon beim theoretisieren sind.
Die Frage ist ja , warum gibt es ÜBERHAUPT zwei verschiedene Zeichen. Bei einem Vergleich wäre das ja gar nicht nötig, weil das "if" ja schon alles dazu sagt:
Delphi-Quellcode:
Das Problem sind wohl die direkten Zuweisungen aus einem boolschen Operator:
a = 1234; // Zuweisung
if ( a = 1234 ) then // Vergleich begin end
Delphi-Quellcode:
Im 2ten Fall weiß der Compiler nicht genau, ob er b zuweisen soll, oder a.
a = 1234;
b = a = 1234; // Zuweisung und Vergleich, b wäre dann True Wenn der Compiler schlauer wäre, dann sollte er das meiner Meinung nach trotzdem hinbekommen, denn das erste "=" müsste IMMER eine Zuweisung sein, oder nicht? Gibt es eventuell andere Fälle, wo eine Unterscheidung Zuweisung und Vergleich nötig wäre? Sehe ich auf die Schnelle nicht. Eine Zuweisung innerhalb von komplexeren Vergleichen würde ich sowieso als Seiteneffekt, und Fehler ansehen. ! Also: Weg mit all dem überflüssigem Zeug und nehmen wir nur "=" für Alles :-D |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
... und dann ist da noch die C-Syntax:
Code:
Es wird AIst6 aufgerufen, weil das Gleichheitszeichen in der If-Abfrage als Zuweisung interpretiert wird und eine Zuweisung auch noch den zugewiesenen Wert zurückliefert. Der ist in diesem Fall <> 0 also True.
a = 5;
if (a=6) { AIst6(); // wird aufgerufen } else { AIstNicht6(); } In Delphi entspräche das
Delphi-Quellcode:
Wenn also die ersten C Compiler nicht versucht hätten, Tipparbeit zu sparen, sprich,
a := 5;
a := 6; // in C findet dies in der If-Abfrage statt if a = 6 then AIst6() else AIstNicht6();
Code:
immer einen Boolschen Wert liefern würde statt Wert1 auf Wert2 zu setzen, brauchte man den ganzen Kladderadatsch nicht.
(Wert1 = Wert2)
Aber es war halt wichtiger (oder cooler?), schreiben zu können:
Code:
statt
a = b = c = 10;
Code:
Und der Mist zog sich danach durch alle von C abgeleiteten Sprachen. Das führte dann dazu, dass man statt
a = 10;
b = 10; c = 10;
Code:
immer
if (a == 5)
Code:
schreiben sollte. Was das Problem etwas entschärfte, denn falls man ein '=' vergisst, schlägt die Zuweisung auf die Konstante fehl.
if (5 == a)
Inzwischen warnen die Compiler vermutlich, wenn sie in If-Abfragen etc. (x=y) finden, aber da bin ich nicht mehr auf dem Laufenden. Ich bin vor mehr als 20 Jahren aus den C-ähnlichen Sprachen ausgestiegen. |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
Da Pascal(aka Procedural Delphi) aus dem Universitäts- und Lehrumfeld kommt , benutzt es mathematische Symbole soweit das geht. "=" wird zum vergleichen benutzt. ":=" das Definitionszeichen wird zum Zuweisen genutzt....das Zuweisungszeichen wäre iegentlich ein links pfeil...aber sowas wie "<-" führt zu Verwirrungen bei negativen zahlen "a<-7" könnte ja a kleiner -7 heißen oder +7 der variable a zuweisen. Wenn man Mathe-Formel-Editoren hatte benutzte man früher auch oft das Indentiätszeichen "≡" für zuweisungen aber das ist eben nach ISO 31-11 ![]() nicht mehr en vogue und "≡" sollte jetzt nur noch für Identität/Kongruenz genutzt werden. Delphi benutzt ":=" weil es damals noch keine coolen unicode zeichen gab wie Definition linksseitig "≔" oder eben "≝" (das ist ein = mit dem Wort DEF oben drüber). Es gibt übrigens noch eine ganze Reihe anderer operatoren die wir in Delphi nicht haben ...zum Glück... z.b. "test auf unifizierbarkeit" wie in Prolog.... |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
die Werte gehen also immer nach unten bzw links nach rechts beim setzen aufgebaut: seter: push b push a push 1234 geter: pop 1234 pop a pop b bei Pascal werden Variablen-ähnlich nach oben aufgebaut. hat beides sein für und wider... |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Ich halte es für ein Gerücht, dass bei einer Zuweisung der Stack benutzt wird. Wir sind doch nicht bei FORTH :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz