Autor Beitrag
newbie333
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 04.06.09 18:33 
Hi,
ich habe folgendes Problem:
Wir sollen zwischen Anweisung, Ausdruck, Wert und Datentyp unterscheiden können und auch eine Aussage darüber machen, ob das angegebene korrekt ist oder nicht.
Ich hab schon bei google gesucht und sicherlich auch lange alleine darüber nachgedacht, aber unsere Verbesserung in der Schule hat mich leicht verwirrt..
Deshalb fände ich es sehr nett, wenn mir hier jemand helfen könnte! :)
Danke schon mal im Vorraus.

Label1.top+Edit1.left ist ein Ausdruck, oder? Und ich denke mal er ist korrekt.
Bin aber - wie gesagt unsicher.

Label1.top := Edit1.text ist eine falsche Anweisung, da sich die Datentypen unterscheiden.. integer und string?

hierzu fällt mir auch noch eine Frage ein: Woher weiß ich denn wann einem Ausdruck integeroder realzugeordnet wird, wenn da jetzt nur Label1.topsteht?

Button1.height := 0.5*Button2.height ist das eine korrekte Anweisung?

und das größte Problem:
'100' Wert? Ausdruck? Auf jedenfall vom Typen string.


Wäre nett, wenn mir jemand behilflich sein könnte!

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 04.06.09 18:44 
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Label1.top := Edit1.text ist eine falsche Anweisung, da sich die Datentypen unterscheiden.. integer und string?

Korrekt.
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Button1.height := 0.5*Button2.height ist das eine korrekte Anweisung?

Falsch. Oder hast du schon mal halbe Pixel gesehen?
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
'100' Wert? Ausdruck? Auf jedenfall vom Typen string.

IMHO ein Wert.

Grüße,
Marc
Tropby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 71
Erhaltene Danke: 4

Vista, Win XP, Win 89
Turbo Delphi Ex.
BeitragVerfasst: Do 04.06.09 18:49 
Zitat:
Woher weiß ich denn wann einem Ausdruck integeroder realzugeordnet wird, wenn da jetzt nur Label1.topsteht?

In Delphi siehst du wenn du mit der Maus über den Ausdruck gehst (in den neueren Versionen) von welchem Typ der der Ausdruck ist.

z.B. bei Label1.top steht : System.Integer

Sonst siehst du auch wenn du hinter Label1 den Punkt machst ja so eine Liste. Dort steht dann auch von welchem Typ das ist.



Aber sowas wie top, left, height, width sind normalerweise immer ganze Zahlen da man ja schlecht ein Object wie schon gesagt auf halbe Pixel setzten kann.

_________________
Tropby
newbie333 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 04.06.09 18:50 
Na dann vielen Dank :)

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Das dumme daran ist halt, dass wir bei der Arbeit auf Blätter schreiben müssen und nicht in Delphi ;)

Danke.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 04.06.09 19:26 
Moin und :welcome: im Forum!

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Wir sollen zwischen Anweisung, Ausdruck, Wert und Datentyp unterscheiden können
Ich sehe das so (Kurzfassung, keinen Anspruch auf Vollständigkeit):
  • Datentyp
    Das ist nicht leicht zu erklären :? grob gesagt: Definition, wie ein Stück Speicher zu verwenden ist, also z.B. ob darin eine Ganzzahl im Bereich von -32768..32767 gespeichert werden kann oder ob es sich um eine Kette von Buchstaben handelt.
    Zu einem Datentyp gehören auch die Operatoren, die darauf anwendbar sind. Beispiel: Beim Datentyp Real ist der Operator "geteilt" erlaubt, beim Datentyp String ist er verboten (weil unsinnig).
  • Wert
    Eine Konstante (im Laufzeitsinn, nicht zur Entwurfszeit, um direkt entsprechenden Kommentaren vorzubeugen), die (zumindest in Delphi) einen Datentyp hat. Beispiele: 123 [Integer], 'Hallo' [String], 1.41 [Real]
    Man könnte auch sagen: ein Exemplar aus dem Wertebereich des Datentyps.
  • Variable
    Ein benannter Speicherort, der (zumindest in Delphi) einen Datentyp hat und einen Wert dieses Datentyps aufnehmen (speichern) kann. Beispiele: var Ganzzahl: Integer; var Wort: String;
  • Ausdruck
    Eine beliebige Kombination aus [Konstanten, Variablen, Funktionsergebnissen], die bei mehr als einem Element mit geeigneten Operatoren verknüpft sein müssen. Beispiele: 1+2+3'Hallo '+'du '+' da!'
    Ein Ausdruck ist wie eine Formel in der Mathematik zu sehen, analog hat ein Ausdruck in Delphi zum Zeitpunkt der Ausführung durch die CPU einen Wert.
  • Anweisung
    Ein "Arbeitsauftrag" für die CPU (bisher gab es noch nix zu tun, Werte, Variablen und Ausdrücke können in einem Programm nicht alleine stehen). Beispiel: MeineIntVar := 123; Allgemein: <Variable> := <Ausdruck>; wobei im Beispiel der Ausdruck nur aus einer Konstanten besteht (auch das ist ein korrekter Ausdruck).
    Anderes Beispiel: MeineStrVar := 'Hallo '+IntToStr(123); Hier ist der Ausdruck aus einer Konstanten und einem Funktionsergebnis zusammengesetzt.

    Achtung! Es gibt natürlich noch mehr Anweisungstypen, nicht nur Variablenzuweisungen, wie hier im Beispiel.
Jetzt kannst du nochmal deine Fragen durchgehen und die Antworten entsprechend formulieren, dann können wir dir sagen, ob du´s verstanden hast. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Robii
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Do 04.06.09 19:52 
Spannend. Jetzt habe auch ich etwas dazugelernt.So etwas kommt auch bei uns in der Arbeit dran.

Grüße.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 04.06.09 20:13 
"Wert" ist auch der einzige Begriff der vier, der mir nicht geläufig ist. Spontan hätte ich es mit "Literal" (oder auch "Ausdruck") gleichgesetzt.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Wert
Eine Konstante (im Laufzeitsinn, nicht zur Entwurfszeit, um direkt entsprechenden Kommentaren vorzubeugen), die (zumindest in Delphi) einen Datentyp hat. Beispiele: 123 [Integer], 'Hallo' [String], 1.41 [Real]
Man könnte auch sagen: ein Exemplar aus dem Wertebereich des Datentyps.
Also ein konstanter Ausdruck, d.h. 1+2+3 wäre auch einer?


Lustig wird's, wenn sich die Begriffe überlappen :zwinker: :
Wert ist immer auch ein Ausdruck, jedenfalls nach jeder Definition in diesem Thread.
Bestimmte Ausdrücke können auch als Anweisungen benutzt werden, z.B. Funktionsaufrufe: IntToStr(123) ist eine vollständige (und äußerst sinnvolle) Anweisung, 1 = 0 keine.

_________________
>λ=
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 04.06.09 20:25 
Moin!

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Wert
Eine Konstante (im Laufzeitsinn, nicht zur Entwurfszeit, um direkt entsprechenden Kommentaren vorzubeugen), die (zumindest in Delphi) einen Datentyp hat. Beispiele: 123 [Integer], 'Hallo' [String], 1.41 [Real]
Man könnte auch sagen: ein Exemplar aus dem Wertebereich des Datentyps.
Also ein konstanter Ausdruck, d.h. 1+2+3 wäre auch einer?
Ein Ausdruck hat (zur Laufzeit) einen Wert, ein Ausdruck ist keiner. ;)

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Lustig wird's, wenn sich die Begriffe überlappen :zwinker: :
Wert ist immer auch ein Ausdruck, jedenfalls nach jeder Definition in diesem Thread.
Andersrum wird ein Schuh draus, ein Ausdruck hat immer einen Wert. :) Denn: ein Wert kann aus beliebig vielen Ausdrücken hervorgehen. Trivalität: eine (zur Entwurfszeit) Konstante ist auch ein Ausdruck. Du hast - genau genommen - eine Ausdruckskonstante angegeben (real wird der Compiler das in eine einzelne Konstante übertragen).

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Bestimmte Ausdrücke können auch als Anweisungen benutzt werden, z.B. Funktionsaufrufe: IntToStr(123) ist eine vollständige (und äußerst sinnvolle) Anweisung, 1 = 0 keine.
Ich sagte ja, "kein Anspruch auf Vollständigkeit"... :zwinker: Die Bewertung eines Ausdrucks kann eben auch mit Arbeit für die CPU verbunden sein.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
newbie333 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 04.06.09 21:17 
Also wenn ich das richtig verstanden habe, würde ich das so machen:

27 ist ein Ausdruck UND ein Wert vom Typ integer

label1.top+Edit1.left ist ein Ausdruck vom typ integer, der korrekt ist

'HALLO' ist ein string, und ein Wert + Ausdruck? und ebenfalls korrekt

label2.left := label1.top eine korrekte Anweisung vom typ integer?

'100' Ein string, wert + ausdruck?

Edit1.left = 2*Label2.top-5 ein korrekter Ausdruck vom Typ boolean?

true ist ein korrekter ausdruckvom typ boolean .. auch ein Wert?

'false' wert, string, korrekt.. ausdruck?

(man sieht: ich versteh den unterschied zwischen Ausdruck und Wert noch nicht ganz)

Label1.caption ist ein korrekter ausdruck vom typ string

button1.heiht := 0.5*Button2.height ist eine falsche Anweisung vom typ integer/real

2*(Edit1.left+'75') ist ein falscher ausdruck, da unterschiedliche typen: string und integer

label1.visible := (Edit1.text= 'Hallo') ist eine korrekte Anweisung vom typ boolean


Danke für die Mühe!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 04.06.09 21:51 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Wert
Eine Konstante (im Laufzeitsinn, nicht zur Entwurfszeit, um direkt entsprechenden Kommentaren vorzubeugen), die (zumindest in Delphi) einen Datentyp hat. Beispiele: 123 [Integer], 'Hallo' [String], 1.41 [Real]
Man könnte auch sagen: ein Exemplar aus dem Wertebereich des Datentyps.
Also ein konstanter Ausdruck, d.h. 1+2+3 wäre auch einer?
Ein Ausdruck hat (zur Laufzeit) einen Wert, ein Ausdruck ist keiner. ;)
Ah, natürlich. Irgendwie hatte ich bei dir Laufzeit und Entwurfszeit genau vertauscht gelesen :lol: . Mathematisch gefasst also: Ein Datentyp ist eine Menge (plus dazugehörige Operationen), ein Wert Element davon. Und '100' wäre dann ein Literal (= Ausdruck), das einen bestimmten Laufzeitwert repräsentiert.


user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Lustig wird's, wenn sich die Begriffe überlappen :zwinker: :
Wert ist immer auch ein Ausdruck, jedenfalls nach jeder Definition in diesem Thread.
Andersrum wird ein Schuh draus, ein Ausdruck hat immer einen Wert.
Ja, die Aussage von mir hat sich dann natürlich gegessen :) . Ich hatte nur auf Ebene der Sprachdefinition überlegt.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Bestimmte Ausdrücke können auch als Anweisungen benutzt werden, z.B. Funktionsaufrufe: IntToStr(123) ist eine vollständige (und äußerst sinnvolle) Anweisung, 1 = 0 keine.
Ich sagte ja, "kein Anspruch auf Vollständigkeit"... :zwinker:
Es ging mir auch nicht darum, deine Definition zu vervollständigen, mein Beispiel der Funktionsaufrufausdrucksanweisung :mrgreen: war schließlich auch nur eines von mehreren Überlappungsmöglichkeiten ;) .

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Die Bewertung eines Ausdrucks kann eben auch mit Arbeit für die CPU verbunden sein.
Da der Ausdruck eben impure sein könnte, genau. Und Ausdrücke, die (auf höchster Ebene) eindeutig keine Nebeneffekte besitzen können, werden von der Sprache eben nicht als Anweisung zugelassen.

/add



user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
27 ist ein Ausdruck UND ein Wert vom Typ integer
Das, was bei dir im Quelltext steht, also die Syntax, ist ein Ausdruck. Bei der Auswertung zur Laufzeit wird daraus ein Wert.

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
label2.left := label1.top eine korrekte Anweisung vom typ integer?
Bei einer Zuweisung müssen die zwei Typen natürlich kompatibel sein, aber allgemein besitzt eine Anweisung keinen Datentyp.

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Edit1.left = 2*Label2.top-5 ein korrekter Ausdruck vom Typ boolean?

Und zur Laufzeit eben wieder ein Wert wie jeder Ausdruck.

_________________
>λ=
newbie333 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 04.06.09 22:03 
Ok, dankeschön.
Aber wenn ich in der Arbeit bei jedem Ausdruck auch Wert hinschreibe ist das dann richtig oder falsch?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 04.06.09 22:09 
Ich würde dir einen Haken geben ;) aber ich fürchte fast, dass dein Lehrer das etwas anders definiert als Narses. Hast du denn von ihm eine Definition oder Beispiele, bei denen Ausdruck und Wert nicht zusammen gegeben sind?

_________________
>λ=
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 04.06.09 23:29 
Moin!

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
27 ist ein Ausdruck UND ein Wert vom Typ integer
Theoretisch - ja. ;) Aber man wendet hier das Minimalprinzip an und würde 27 (nur) als Wert bezeichnen. :nixweiss:

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Aber wenn ich in der Arbeit bei jedem Ausdruck auch Wert hinschreibe ist das dann richtig oder falsch?
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
aber ich fürchte fast, dass dein Lehrer das etwas anders definiert als Narses.
Ich denke, er wird auch das Minimalprinzip verfolgen wollen. ;)

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Hast du denn von ihm eine Definition oder Beispiele, bei denen Ausdruck und Wert nicht zusammen gegeben sind?
Das wäre natürlich die einzig sichere Methode, das rauszufinden. Sollte dein Lehrer sich ausdrücklich nicht an das Minimalprinzip halten wollen, würde ich sagen, dass er sich auf sehr dünnes Eis begibt und das im Unterricht besser gut belegbar gefordert haben sollte. :|


user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
label1.top+Edit1.left ist ein Ausdruck vom typ integer, der korrekt ist
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
allgemein besitzt eine Anweisung keinen Datentyp.
Das würde ich auch so sehen, ein Ausdruck ist typenlos, erst der Wert hat den Typ. Demnach würde ich als "korrekte Antwort" formulieren: ... ist ein korrekter Ausdruck, der einen Wert vom Typ Integer hat. :idea:

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
'HALLO' ist ein string, und ein Wert + Ausdruck? und ebenfalls korrekt
Mein Vorschlag: ... ist ein Wert vom Typ String. Werte können nicht nicht korrekt sein, sie sind einfach das, was sie sind :gruebel: und damit immer korrekt (also weglassen). ;)

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
label2.left := label1.top eine korrekte Anweisung vom typ integer?
... ist eine korrekte Anweisung. Welchen Typ der Wert dieser hat, ist auf den ersten Blick nicht klar zu erkennen (innerhalb der VCL wäre der transportierte Wert Integer, aber das steht ja so nicht als Vorgabe dabei ;)).

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
'100' Ein string, wert + ausdruck?
Das solltest du jetzt wieder selbst beurteilen können. :)

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Edit1.left = 2*Label2.top-5 ein korrekter Ausdruck vom Typ boolean?
Also Boolean auf keinen Fall, es wird ja kein Wahrheitswert gebildet. Ich würde sagen: ... ist eine korrekte Anweisung, bei der ein Ausdruck, der einen Wert vom Typ Integer hat, zugewiesen wird. :nixweiss:

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
true ist ein korrekter ausdruckvom typ boolean .. auch ein Wert?

'false' wert, string, korrekt.. ausdruck?
Das müsstest du eigentlich auch wieder selbst hinkriegen.

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Label1.caption ist ein korrekter ausdruck vom typ string
Das ist in meinen Augen ein dämliches Beispiel/Aufgabe, weil hier die Grenzen etwas verwischen. In meinen Augen ist das eine Variable (genauer: eine Klasseneingenschaft, und spätestens hier zeigt der Lehrer kein gutes didaktisches Geschick mehr :?). Aber ich vermute, er möchte hören: ... ist ein korrekter Ausdruck, der einen Wert vom Typ String hat. :|

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
button1.heiht := 0.5*Button2.height ist eine falsche Anweisung vom typ integer/real
... ist eine fehlerhafte (=nicht ausführbare) Anweisung, da der Ausdruck einen Wert vom Typ Real liefert, aber das Ziel der Zuweisung ein Speicherplatz vom Typ Integer ist (wenn man mal wieder die VCL unterstellt). ;)

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
2*(Edit1.left+'75') ist ein falscher ausdruck, da unterschiedliche typen: string und integer
... ist ein nicht bewertbarer Ausdruck, da die Typen der Werte nicht kompatibel sind.

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
label1.visible := (Edit1.text= 'Hallo') ist eine korrekte Anweisung vom typ boolean
... ist eine korrekte Anweisung, bei der ein Ausdruck, der einen Wert vom Typ Boolean liefert, zugewiesen wird (auch hier unterstellen wir mal wieder die VCL).

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
(man sieht: ich versteh den unterschied zwischen Ausdruck und Wert noch nicht ganz)
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Bei der Auswertung zur Laufzeit wird daraus ein Wert.
Das ist der entscheidende Gedanke: ein Ausdruck ist sowas wie die Anleitung, wie man zu einem Wert kommt (im einfachsten Fall ist es bei einer Konstanten der Wert selbst, sonst muss die CPU halt ran und den Wert zur Laufzeit bestimmen/ausrechnen). :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 05.06.09 00:27 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
27 ist ein Ausdruck UND ein Wert vom Typ integer
Theoretisch - ja. ;) Aber man wendet hier das Minimalprinzip an und würde 27 (nur) als Wert bezeichnen. :nixweiss:
Dann wäre "Ausdruck" ja nie eine korrekte/minimale Antwort :?!?: . Eigentlich sollte man das Ganze auf die drei Compile-Time-Begriffe Typ/Ausdruck/Anweisung (wobei es "Typ" natürlich auch zur Laufzeit gibt, s.u.) beschränken, einen parallelen Begriff einer anderen Ebene hinzuzufügen macht wenig Sinn. Und genau deswegen gehe ich davon aus, dass der Lehrer eine andere und wahrscheinlich auch nicht ganz saubere Version von "Wert" vertritt ;) ("Literal" ist immmer noch mein heißester Tipp).

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Sollte dein Lehrer sich ausdrücklich nicht an das Minimalprinzip halten wollen, würde ich sagen, dass er sich auf sehr dünnes Eis begibt und das im Unterricht besser gut belegbar gefordert haben sollte. :|
Dass er zwischen Anweisungen und Ausdrücken unterscheidet, finde ich schon beeindruckend, aber wir sprechen hier immer noch über einen Info-Lehrer an einem Gymnasium :mrgreen: . Da werden auch mal Punkte abgezogen, weil die Lehrkraft keine "while not"-Schleife kennt ;) .

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
label1.top+Edit1.left ist ein Ausdruck vom typ integer, der korrekt ist
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
allgemein besitzt eine Anweisung keinen Datentyp.
Das würde ich auch so sehen, ein Ausdruck ist typenlos, erst der Wert hat den Typ. Demnach würde ich als "korrekte Antwort" formulieren: ... ist ein korrekter Ausdruck, der einen Wert vom Typ Integer hat. :idea:
Das war auf Anweisungen bezogen ;) . Einem Ausdruck würde ich den Compile-Time-Typ zuordnen, eben den, der vom Compiler zur Typprüfung benutzt wird, im Gegensatz zum Run-Time-Typ des eigentlichen Wertes, der erst bei der Auswertung bekannt ist (was natürlich erst bei Polymorphie eine Rolle spielt). So wird es auch bei ASTs dargestellt sein.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Edit1.left = 2*Label2.top-5 ein korrekter Ausdruck vom Typ boolean?
Also Boolean auf keinen Fall, es wird ja kein Wahrheitswert gebildet.
Das ist ein Vergleich, keine Zuweisung ;) .


user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
Label1.caption ist ein korrekter ausdruck vom typ string
Das ist in meinen Augen ein dämliches Beispiel/Aufgabe, weil hier die Grenzen etwas verwischen. In meinen Augen ist das eine Variable (genauer: eine Klasseneingenschaft, und spätestens hier zeigt der Lehrer kein gutes didaktisches Geschick mehr :?). Aber ich vermute, er möchte hören: ... ist ein korrekter Ausdruck, der einen Wert vom Typ String hat. :|
Es ist ein valider "Memberzugriffsausdruck" :nixweiss: . Und "Variable" ist doch gar kein Begriff, den er unterscheiden muss, also würde ich auch einen Variablenzugriff eindeutig als Ausdruck klassifizieren. Die Eigenschaft an sich könnte man als "TLabel.Caption" repräsentieren, aber eine Syntax gibt es dafür ja nicht.

_________________
>λ=
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 05.06.09 00:40 
Moin!

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Eigentlich sollte man das Ganze auf die drei Compile-Time-Begriffe Typ/Ausdruck/Anweisung (wobei es "Typ" natürlich auch zur Laufzeit gibt, s.u.) beschränken, einen parallelen Begriff einer anderen Ebene hinzuzufügen macht wenig Sinn. Und genau deswegen gehe ich davon aus, dass der Lehrer eine andere und wahrscheinlich auch nicht ganz saubere Version von "Wert" vertritt ;) ("Literal" ist immmer noch mein heißester Tipp).
Könnte gut sein. ;) Da wir leider nicht mehr Infos haben... :nixweiss:

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Da werden auch mal Punkte abgezogen, weil die Lehrkraft keine "while not"-Schleife kennt ;) .
Abgründe... :?

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Das war auf Anweisungen bezogen ;) .
:oops: Recht hast du.

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Das ist ein Vergleich, keine Zuweisung ;) .
Da hat doch einer den Doppelpunkt rauseditiert, damit ich hier doof dastehe... :motz: Asche auf mein Haupt... :( ich geh besser pennen... :gaehn: ;)

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Und "Variable" ist doch gar kein Begriff, den er unterscheiden muss, also würde ich auch einen Variablenzugriff eindeutig als Ausdruck klassifizieren.
Jup. :flehan: Ich geh pennen...

cu :gaehn:
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
newbie333 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Sa 20.06.09 11:06 
Danke, hat geklappt in der Arbeit :)