Difference between revisions of "Pascal for Java users/de"

From Free Pascal wiki
Jump to navigationJump to search
m
 
(35 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Pascal for Java users}}
 
{{Pascal for Java users}}
==Übersetzen von gemeinsamen Programm-Teilen==
+
<br>
Die verlinkte englisch sprachige Seite zeigt, wie gemeinsame Probleme in verschiedenen Programmiersprachen, einschließlich Java und FreePascal / Object Pascal gelöst werden können.<br>
+
Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].<br>
 +
<br>
 +
=Übersetzen von gemeinsamen Programm-Teilen=
 +
Die verlinkte englischsprachige Seite zeigt, wie gemeinsame Probleme in verschiedenen Programmiersprachen, einschließlich Java und FreePascal / Object Pascal gelöst werden können.<br>
 
[http://rosettacode.org/wiki/Category:Pascal Rosetta Code]
 
[http://rosettacode.org/wiki/Category:Pascal Rosetta Code]
  
==Übersetzen von Java Operatoren==
+
=Übersetzen von Java-Operatoren=
 +
==Arithmetische Operatoren==
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
|-
 
| &nbsp; =
 
| &nbsp; :=
 
| &nbsp; Zuweisung
 
 
|-
 
|-
 
| &nbsp; +
 
| &nbsp; +
Line 26: Line 26:
 
| &nbsp; /
 
| &nbsp; /
 
| &nbsp; /
 
| &nbsp; /
| &nbsp; Division
+
| &nbsp; Gleitkommadivision
 
|-
 
|-
 
| &nbsp; %
 
| &nbsp; %
Line 32: Line 32:
 
| &nbsp; Modulo (Division ohne Rest)
 
| &nbsp; Modulo (Division ohne Rest)
 
|-
 
|-
| &nbsp; !
+
| &nbsp; ++
| &nbsp; Not
+
| &nbsp; Inc
| &nbsp; Nichten (Den Wahrheitswert in sein Gegenteil ändern)
+
| &nbsp; inkrementieren (Hochzählen)
 +
|-
 +
| &nbsp; --
 +
| &nbsp; Dec
 +
| &nbsp; dekrementieren (Herunterzählen)
 +
|}
 +
 
 +
==Relationale Operatoren==
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 
|-
 
|-
 
| &nbsp; ==
 
| &nbsp; ==
 
| &nbsp; =
 
| &nbsp; =
| &nbsp; Vergleich
+
| &nbsp; gleich
 
|-
 
|-
 
| &nbsp; !=
 
| &nbsp; !=
 
| &nbsp; <>
 
| &nbsp; <>
 
| &nbsp; ungleich
 
| &nbsp; ungleich
 +
|-
 +
| &nbsp; <
 +
| &nbsp; <
 +
| &nbsp; kleiner
 +
|-
 +
| &nbsp; <=
 +
| &nbsp; <=
 +
| &nbsp; kleiner gleich
 +
|-
 +
| &nbsp; >
 +
| &nbsp; >
 +
| &nbsp; grösser
 +
|-
 +
| &nbsp; >=
 +
| &nbsp; >=
 +
| &nbsp; grösser gleich
 +
|}
 +
 +
==Logische Operatoren==
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 +
|-
 +
| &nbsp; !
 +
| &nbsp; Not
 +
| &nbsp; Negation (Den Wahrheitswert in sein Gegenteil ändern)
 
|-
 
|-
 
| &nbsp; &&
 
| &nbsp; &&
 
| &nbsp; And
 
| &nbsp; And
| &nbsp; logisches UND
+
| &nbsp; logisches UND mit Kurzschlussauswertung<br>
 +
&nbsp; In Free Pascal ist dies die Standard-Compilereinstellung
 
|-
 
|-
 
| &nbsp; <nowiki> || </nowiki>
 
| &nbsp; <nowiki> || </nowiki>
 
| &nbsp; Or
 
| &nbsp; Or
| &nbsp; logisches ODER
+
| &nbsp; logisches ODER mit Kurzschlussauswertung
 +
&nbsp; In Free Pascal ist dies die Standard-Compilereinstellung
 +
|-
 +
| &nbsp; &
 +
| &nbsp; And
 +
| &nbsp; logisches UND mit Komplettauswertung<br>
 +
&nbsp; In Free Pascal ist dies die Compilerdirektive {$B ON}
 +
|-
 +
| &nbsp; <nowiki> | </nowiki>
 +
| &nbsp; Or
 +
| &nbsp; logisches ODER mit Komplettauswertung
 +
&nbsp; In Free Pascal ist dies die Compilerdirektive {$B ON}
 
|-
 
|-
 
| &nbsp; ^
 
| &nbsp; ^
 
| &nbsp; Xor
 
| &nbsp; Xor
 
| &nbsp; exclusives ODER
 
| &nbsp; exclusives ODER
 +
|}
 +
==Bit Operatoren==
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 +
|-
 +
| &nbsp; ~
 +
| &nbsp; Not
 +
| &nbsp; Einerkomplement
 +
|-
 +
| &nbsp; &
 +
| &nbsp; And
 +
| &nbsp; bitweises UND
 +
|-
 +
| &nbsp; <nowiki> | </nowiki>
 +
| &nbsp; Or
 +
| &nbsp; bitweises inclusives ODER
 +
|-
 +
| &nbsp; ^
 +
| &nbsp; Xor
 +
| &nbsp; bitweises exclusives ODER
 
|-
 
|-
 
| &nbsp; >>
 
| &nbsp; >>
 
| &nbsp; Shr
 
| &nbsp; Shr
| &nbsp; bitweises '''sh'''ift '''r'''ight
+
| &nbsp; bitweises Rechtsschieben mit Vorzeichen
 +
|-
 +
| &nbsp; >>>
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; bitweises Rechtsschieben ohne Vorzeichen
 
|-
 
|-
 
| &nbsp; <<
 
| &nbsp; <<
 
| &nbsp; Shl
 
| &nbsp; Shl
| &nbsp; bitweises '''sh'''ift '''l'''eft
+
| &nbsp; bitweises Linksschieben
 +
|}
 +
==Zuweisungs Operatoren==
 +
Hinweis:
 +
C-artige Operatoren werden in Free Pascal über die Kommandozeilenoption -Sc ermöglicht.
 +
C-artige Operatoren werden in Lazarus über die Projekteinstellungen ermöglicht.
 +
<br>
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 
|-
 
|-
| &nbsp; ++
+
| &nbsp; =
| &nbsp; Inc
+
| &nbsp; :=
| &nbsp; inkrementieren (Hochzählen)
+
| &nbsp; Einfache Zuweisung
 +
|-
 +
| &nbsp; +=
 +
| &nbsp; +=
 +
| &nbsp; Additionszuweisung
 +
|-
 +
| &nbsp; -=
 +
| &nbsp; -=
 +
| &nbsp; Subtraktionszuweisung
 +
|-
 +
| &nbsp; *=
 +
| &nbsp; *=
 +
| &nbsp; Multiplikationszuweisung
 +
|-
 +
| &nbsp; /=
 +
| &nbsp; /=
 +
| &nbsp; Divisionszuweisung
 +
|-
 +
| &nbsp; %=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; Modulo Zuweisung
 +
|-
 +
| &nbsp; &=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; UND Zuweisung
 +
|-
 +
| &nbsp; <nowiki>|</nowiki>=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; ODER Zuweisung
 +
|-
 +
| &nbsp; ^=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; Exclusive ODER Zuweisung
 +
|-
 +
| &nbsp; >>=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; Rechtsschiebe Zuweisung
 +
|-
 +
| &nbsp; >>>=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; Rechtsschiebe Zuweisung mit Nullexpansion
 +
|-
 +
| &nbsp; <<=
 +
| &nbsp; ist in Free Pascal nicht vorhanden
 +
| &nbsp; Linksschiebe Zuweisung
 +
|}
 +
==Sonstige Operatoren==
 +
{| class="wikitable"
 +
! Java !! Pascal !!
 +
|-
 +
| &nbsp; &
 +
| &nbsp; @
 +
| &nbsp; Adresse von ...
 +
|-
 +
| &nbsp; *
 +
| &nbsp; ^
 +
| &nbsp; Zeiger / Pointer
 +
|}
 +
 
 +
==Ternärer Operator==
 +
<br>
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 
|-
 
|-
| &nbsp; --
+
| &nbsp; ?
| &nbsp; Dec
+
| &nbsp; ist in Free Pascal nicht vorhanden
| &nbsp; dekrementieren (Herunterzählen)
+
| &nbsp; Erlaubt die verkürzte Schreibweise von If-Else Verzweigungen und gibt einen Wert zurück<br>
 +
&nbsp; Verwendung:<br>
 +
&nbsp; Ergebnisfeld = Bedingung <b>?</b> Wahrfall : Falschfall<br>
 +
&nbsp; <br>
 +
&nbsp; Beispiel:<br>
 +
&nbsp; Für ein Maximum in Java:<br>
 +
&nbsp; max = ( a > b ) ? a : b;<br>
 +
&nbsp; <br>
 +
&nbsp; Dies entspricht in Pascal folgendem if-else-Konstrukt:<br>
 +
&nbsp; if a > b Then<br>
 +
&nbsp; &nbsp; &nbsp; max := a<br>
 +
&nbsp; else<br>
 +
&nbsp; &nbsp; &nbsp; max := b;<br>
 
|}
 
|}
== Übersetzen von Java Kommentarzeichen==
+
 
 +
=Übersetzen von Java Kommentarzeichen=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 96: Line 249:
 
| &nbsp; Kommentarzeile
 
| &nbsp; Kommentarzeile
 
|}
 
|}
==Übersetzen von Java Anweisungsblöcken==
+
=Übersetzen von Java Anweisungsblöcken=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 108: Line 261:
 
| &nbsp; Ende / Abschluss eines Anweisungsblocks
 
| &nbsp; Ende / Abschluss eines Anweisungsblocks
 
|}
 
|}
==Übersetzen von Java Schleifentypen==
+
=Übersetzen von Java Schleifentypen=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
 
|-
 
|-
| &nbsp; for( ..., ..., ...++)
+
| &nbsp; for( ...; ...; ...++)
 
| &nbsp; For ... To ... Do
 
| &nbsp; For ... To ... Do
| &nbsp; Kopfgesteuerte Schleife, die Hochgezählt wird  
+
| &nbsp; Kopfgesteuerte Schleife, die hochgezählt wird  
 
|-
 
|-
| &nbsp; for(..., ..., ...--)
+
| &nbsp; for(...; ...; ...--)
 
| &nbsp; For ... Downto ... Do
 
| &nbsp; For ... Downto ... Do
| &nbsp; Kopfgesteuerte Schleife, die Heruntergezählt wird  
+
| &nbsp; Kopfgesteuerte Schleife, die heruntergezählt wird  
 
|-
 
|-
| &nbsp; for (type var : arr) // For Each Schlleife
+
| &nbsp; for (Datentyp ...: Array) // For Each Schleife
 
| &nbsp; For ... in
 
| &nbsp; For ... in
 
| &nbsp; Kopfgesteuerte Schleife, für das Durchsuchen von Mengen
 
| &nbsp; Kopfgesteuerte Schleife, für das Durchsuchen von Mengen
Line 134: Line 287:
 
| &nbsp; do ... while!(...)
 
| &nbsp; do ... while!(...)
 
| &nbsp; Repeat ... Until ... Not
 
| &nbsp; Repeat ... Until ... Not
| &nbsp; Fussgesteuerte Schleife mit Nichtung des Ergebnisses des Ausdrucks
+
| &nbsp; Fussgesteuerte Schleife mit Nichtung des Ergebnisses des Ausdrucks
 
|}
 
|}
==Übersetzen von Java Verzweigungen / Bedingungen==
+
 
 +
=Übersetzen von Java Verzweigungen / Bedingungen=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 148: Line 302:
 
| &nbsp; If-Bedingung mit Sonstzweig
 
| &nbsp; If-Bedingung mit Sonstzweig
 
|-
 
|-
| &nbsp; switch(...) case ...: ...break
+
| &nbsp; switch(...) case ...: ...break;
| &nbsp; Case ... Of ...: ... End  
+
| &nbsp; Case ... Of ...: ... End;
 
| &nbsp; Case-Bedingung  
 
| &nbsp; Case-Bedingung  
 
|-
 
|-
| &nbsp; switch(...) case ...: ... break default
+
| &nbsp; switch(...) case ...: ... break; default ...;
| &nbsp; Case ... Of ...: ... Else ... End
+
| &nbsp; Case ... Of ...: ... Else ... End;
 
| &nbsp; Case-Bedingung mit Sonst-Zweig
 
| &nbsp; Case-Bedingung mit Sonst-Zweig
 
|}
 
|}
==Übersetzen von Java Verzweigungen- / Schleifenabbrüchen==
+
 
 +
=Übersetzen von Java Verzweigungen- / Schleifenabbrüchen=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 168: Line 323:
 
| &nbsp; Die continue-Anweisung ermöglicht es, den aktuellen Schleifendurchlauf zu beenden
 
| &nbsp; Die continue-Anweisung ermöglicht es, den aktuellen Schleifendurchlauf zu beenden
 
|}
 
|}
==Übersetzen von Java Prozeduren und Funktionen==
+
=Übersetzen von Java Prozeduren und Funktionen=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 182: Line 337:
 
| &nbsp; return
 
| &nbsp; return
 
| &nbsp; FunctionName := ...
 
| &nbsp; FunctionName := ...
| &nbsp; Diese Pascal Schreibwese ist überholt (deprecated)
+
| &nbsp; Diese Pascal-Schreibweise ist überholt (deprecated)
 
|-
 
|-
 
| &nbsp; return
 
| &nbsp; return
Line 188: Line 343:
 
| &nbsp; Einer Funktion Ihren Rückgabewert zuweisen
 
| &nbsp; Einer Funktion Ihren Rückgabewert zuweisen
 
|}
 
|}
==Übersetzen von Java Dateiheadern==
+
=Übersetzen von Java Dateiheadern=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 204: Line 359:
 
| &nbsp; Hauptprogramm
 
| &nbsp; Hauptprogramm
 
|}
 
|}
== Übersetzen von Java Datentypen ==
+
=Übersetzen von Java Datentypen=
 
{| class="wikitable"
 
{| class="wikitable"
! Java type !! Pascal [[Data_type/de|type]] !! Size (bits) !! Range
+
! Java Datentyp !! Pascal Datentyp !! Speichergrösse in Bits !! Range
 
|-
 
|-
 
| &nbsp; byte
 
| &nbsp; byte
 
| &nbsp; Shortint
 
| &nbsp; Shortint
| &nbsp; 8-bit
+
| &nbsp; 8-Bit
 
| &nbsp; -128 .. 127
 
| &nbsp; -128 .. 127
 
|-
 
|-
 
| &nbsp; short
 
| &nbsp; short
 
| &nbsp; SmallInt
 
| &nbsp; SmallInt
| &nbsp; 16-bit
+
| &nbsp; 16-Bit
 
| &nbsp; -32768 .. 32767
 
| &nbsp; -32768 .. 32767
 
|-
 
|-
 
| &nbsp; int
 
| &nbsp; int
 
| &nbsp; LongInt
 
| &nbsp; LongInt
| &nbsp; 32-bit
+
| &nbsp; 32-Bit
 
| &nbsp; -2147483648..2147483647  
 
| &nbsp; -2147483648..2147483647  
 
|-
 
|-
 
| &nbsp; long
 
| &nbsp; long
 
| &nbsp; Int64
 
| &nbsp; Int64
| &nbsp; 64-bit
+
| &nbsp; 64-Bit
 
| &nbsp; -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807  
 
| &nbsp; -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807  
 
|-
 
|-
 
| &nbsp; float
 
| &nbsp; float
 
| &nbsp; Single
 
| &nbsp; Single
| &nbsp; 32-bit
+
| &nbsp; 32-Bit
 
| &nbsp; 1.5E-45 .. 3.4E+38
 
| &nbsp; 1.5E-45 .. 3.4E+38
 
|-
 
|-
 
| &nbsp; double
 
| &nbsp; double
 
| &nbsp; Double
 
| &nbsp; Double
| &nbsp; 64-bit
+
| &nbsp; 64-Bit
 
| &nbsp; 5.0E-324 .. 1.7E+308
 
| &nbsp; 5.0E-324 .. 1.7E+308
 
|-
 
|-
 
| &nbsp; boolean
 
| &nbsp; boolean
 
| &nbsp; Boolean
 
| &nbsp; Boolean
| &nbsp; 8-bit
+
| &nbsp; 8-Bit
 
| &nbsp; False bzw. True
 
| &nbsp; False bzw. True
 
|-
 
|-
 
| &nbsp; char
 
| &nbsp; char
 
| &nbsp; WideChar
 
| &nbsp; WideChar
| &nbsp; 16-bit
+
| &nbsp; 16-Bit
| &nbsp; 2 Zeichen codieren ein sichtbares Zeichen
+
| &nbsp; 2 Bytes codieren ein sichtbares Zeichen
 
|-
 
|-
 
| &nbsp; String
 
| &nbsp; String
 
| &nbsp; WideString
 
| &nbsp; WideString
| &nbsp; 0-bit bis ∞
+
| &nbsp; 0-Bit bis ∞
 
| &nbsp; Zeichenkette
 
| &nbsp; Zeichenkette
 
|}
 
|}
== Übersetzen von Java Aufzählungen (Enumerationen) ==
+
 
 +
=Übersetzen von Java Aufzählungen (Enumerationen)=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 262: Line 418:
 
&nbsp; Die Konstante MAXVALUE enthält den Wert 1
 
&nbsp; Die Konstante MAXVALUE enthält den Wert 1
 
|}
 
|}
== Übersetzen von Java Arrays ==
+
=Übersetzen von Java Arrays=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 274: Line 430:
 
| &nbsp;
 
| &nbsp;
 
|}
 
|}
==Java Objektorientierung==
+
=Übersetzen der Java Objektorientierung=
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
 
|-
 
|-
| &nbsp; null
+
| &nbsp; class Klassenname{...}
| &nbsp; Nil
+
| &nbsp; Klassenname = Class ... End;
| &nbsp;
+
| &nbsp; Leitet eine Klassendeklaration ein
|-
+
&nbsp; Schreibweise für Free Pascal und Delphi
| &nbsp; class TheClass { }
 
| &nbsp; TheClass = Class End
 
| &nbsp; FPC / Delphi
 
|-
 
| &nbsp; class TheClass { }
 
| &nbsp; TheClass = Object End
 
| &nbsp; FPC / Turbo Pascal
 
|-
 
| &nbsp; class TheClass<T> { }
 
| &nbsp; Generic TheClass = Class<T> End
 
| &nbsp; Generische Klassen werden  erst ab FPC 2.2.2 unterstützt
 
 
|-
 
|-
| &nbsp; TheClass()
+
| &nbsp; class Klassenname{...}
| &nbsp; Constructor CtorName
+
| &nbsp; Klassenname = Object ... End;
| &nbsp; Der Name des Konstructors ist entweder '''Init''' oder '''Create'''
+
| &nbsp; Leitet eine Klassendeklaration ein
 +
&nbsp; Schreibweise für Free Pascal und Turbo Pascal
 
|-
 
|-
| &nbsp; native
+
| &nbsp; class Klassenname<T> {...}
| &nbsp; StdCall
+
| &nbsp; Generic Klassenname = Class<T> ... End;
| &nbsp; Pascal / FPC Standardaufrufkonvention
+
| &nbsp; Leitet eine Klassendeklaration ein
 +
&nbsp; Generische Klassen werden erst ab Free Pascal 2.2.2 unterstützt
 
|-
 
|-
| &nbsp; native
+
| &nbsp; Klassenname(...)
| &nbsp; CDecl
+
| &nbsp; Constructor Klassenname.Konstruktorname(...);
| &nbsp; C Standardaufrufkonvention
+
| &nbsp; In Java ist der Name des Konstructors der Klassenname<br>
 +
&nbsp; In Free Pascal ist der Name des Konstruktors Create
 
|-
 
|-
 
| &nbsp; abstract
 
| &nbsp; abstract
 
| &nbsp; Abstract
 
| &nbsp; Abstract
| &nbsp; Kennzeichnet eine Abstrakte Klasse
+
| &nbsp; Kennzeichnet eine abstrakte Klasse oder eine abstrakte Methode,
 +
&nbsp; d. h. die Klasse oder Methode wird nicht implementiert.
 
|-
 
|-
 
| &nbsp; implements
 
| &nbsp; implements
Line 320: Line 469:
 
| &nbsp; final
 
| &nbsp; final
 
| &nbsp; Final
 
| &nbsp; Final
| &nbsp; Verhindert das nachträgliche Ändern oder Überschreiben von Virtuellen Methoden
+
| &nbsp; Verhindert das nachträgliche Ändern oder Überschreiben von virtuellen Methoden
|-
 
| &nbsp; instanceof
 
| &nbsp; Is
 
| &nbsp; Bestimmt die Klassenzugehörigkeit eines Objektes
 
 
|-
 
|-
 
| &nbsp; interface
 
| &nbsp; interface
 
| &nbsp; TheInterface = Interface
 
| &nbsp; TheInterface = Interface
 
| &nbsp; Deklariert die Schnittstelle einer Klasse
 
| &nbsp; Deklariert die Schnittstelle einer Klasse
|-
 
| &nbsp; new primitive_type[#]
 
| &nbsp; SetLength(ArrayVar, #)
 
| &nbsp;
 
 
|-
 
|-
 
| &nbsp; new Class()
 
| &nbsp; new Class()
| &nbsp; InstanceVar := TheClass.Create
+
| &nbsp; InstanzVariable := Klassenname.Create
| &nbsp;
+
| &nbsp; Initialisierung von Referenz-Datentypen
 
|-
 
|-
 
| &nbsp; private
 
| &nbsp; private
Line 368: Line 509:
 
| &nbsp; this
 
| &nbsp; this
 
| &nbsp; Self
 
| &nbsp; Self
 +
| &nbsp; Bezeichnet die Klasse "in der man sich gerade befindet" (Selbstreferenz)
 +
|-
 +
| &nbsp; transient
 
| &nbsp;
 
| &nbsp;
 +
| &nbsp; Die Variable soll bei der Speicherung von Objekten (Serialisierung) nicht gespeichert werden.
 +
|-
 +
|}
 +
==Freigabe eines Objektes==
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 +
|-
 +
| &nbsp; null
 +
| &nbsp; Nil
 +
| &nbsp; Gibt die Referenz auf ein Objekt frei. Mehr ist in Java nicht nötig, den Rest erledigt in Java der Garbage-Collektor.<br>
 +
&nbsp; In Pascal führt der Aufruf FreeAndNil(...) zum selben Ergebnis.
 +
|}
 +
==Klassenbestimmung==
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 +
|-
 +
| &nbsp; instanceof
 +
| &nbsp; Is
 +
| &nbsp; Bestimmt die Klassenzugehörigkeit eines Objektes
 +
|}
 +
==Werfen von Exceptions==
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 
|-
 
|-
 
| &nbsp; throw
 
| &nbsp; throw
Line 375: Line 542:
 
|-
 
|-
 
| &nbsp; throws
 
| &nbsp; throws
| &nbsp;
+
| &nbsp; ist in Free Pascal nicht vorhanden
| &nbsp; Deklariert die zuwerfende Exception im Kopf des Unterprogramms
+
| &nbsp; Gibt im Methodenkopf einer Klasse oder Methode an,
|-
+
&nbsp; welche Ausnahme(n) von der Klasse bzw. Methode ausgelöst werden kann.
| &nbsp; transient
 
| &nbsp;
 
| &nbsp; Das Feld soll nicht serialisiert werden
 
|-
 
 
|}
 
|}
===Fangen von Exceptions===
+
 
 +
==Fangen von Exceptions==
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
Line 395: Line 559:
 
| &nbsp; Fehlerbehandlung mit einem Block für Abschlussarbeiten
 
| &nbsp; Fehlerbehandlung mit einem Block für Abschlussarbeiten
 
|}
 
|}
===Threads===
+
==Threadprogrammierung==
 
{| class="wikitable"
 
{| class="wikitable"
 
! Java !! Pascal !! Kommentare
 
! Java !! Pascal !! Kommentare
 
|-
 
|-
 
| &nbsp; synchronized
 
| &nbsp; synchronized
| &nbsp;
+
| &nbsp; Synchronize(@...)
| &nbsp;
+
| &nbsp; Dient der Synchronisation mit dem Hauptthread.
 
|-
 
|-
 
| &nbsp; volatile
 
| &nbsp; volatile
 
| &nbsp;
 
| &nbsp;
| &nbsp;
+
| &nbsp; Variablen, die dem Datenaustasch mit anderen Threads dienen, werden in Java mit volatile deklariert.<br>
 +
&nbsp; In Free Pascal sind alle global definierten Variablen volatile.
 +
|}
 +
 
 +
=Aufruf von Fremdfunktionen (z. B. aus Dll's)=
 +
{| class="wikitable"
 +
! Java !! Pascal !! Kommentare
 +
|-
 +
| &nbsp; native
 +
| &nbsp; StdCall
 +
| &nbsp; Pascal / FPC Standardaufrufkonvention
 +
|-
 +
| &nbsp; native
 +
| &nbsp; CDecl
 +
| &nbsp; C Standardaufrufkonvention
 
|}
 
|}
 
<br>
 
<br>
 
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 14:28, 24 March 2013 (UTC)
 
--[[User:Olaf|Olaf]] 14:28, 24 March 2013 (UTC)
[[Category:Code/de]]
+
[[Category:Code/de]]{{AutoCategory}}

Latest revision as of 09:03, 12 January 2014

Deutsch (de) English (en)

Zurück zu den Zusätzlichen Informationen.

Übersetzen von gemeinsamen Programm-Teilen

Die verlinkte englischsprachige Seite zeigt, wie gemeinsame Probleme in verschiedenen Programmiersprachen, einschließlich Java und FreePascal / Object Pascal gelöst werden können.
Rosetta Code

Übersetzen von Java-Operatoren

Arithmetische Operatoren

Java Pascal Kommentare
  +   +   Addition
  -   -   Subtraktion
  *   *   Multiplikation
  /   /   Gleitkommadivision
  %   Mod   Modulo (Division ohne Rest)
  ++   Inc   inkrementieren (Hochzählen)
  --   Dec   dekrementieren (Herunterzählen)

Relationale Operatoren

Java Pascal Kommentare
  ==   =   gleich
  !=   <>   ungleich
  <   <   kleiner
  <=   <=   kleiner gleich
  >   >   grösser
  >=   >=   grösser gleich

Logische Operatoren

Java Pascal Kommentare
  !   Not   Negation (Den Wahrheitswert in sein Gegenteil ändern)
  &&   And   logisches UND mit Kurzschlussauswertung

  In Free Pascal ist dies die Standard-Compilereinstellung

  ||   Or   logisches ODER mit Kurzschlussauswertung

  In Free Pascal ist dies die Standard-Compilereinstellung

  &   And   logisches UND mit Komplettauswertung

  In Free Pascal ist dies die Compilerdirektive {$B ON}

  |   Or   logisches ODER mit Komplettauswertung

  In Free Pascal ist dies die Compilerdirektive {$B ON}

  ^   Xor   exclusives ODER

Bit Operatoren

Java Pascal Kommentare
  ~   Not   Einerkomplement
  &   And   bitweises UND
  |   Or   bitweises inclusives ODER
  ^   Xor   bitweises exclusives ODER
  >>   Shr   bitweises Rechtsschieben mit Vorzeichen
  >>>   ist in Free Pascal nicht vorhanden   bitweises Rechtsschieben ohne Vorzeichen
  <<   Shl   bitweises Linksschieben

Zuweisungs Operatoren

Hinweis: C-artige Operatoren werden in Free Pascal über die Kommandozeilenoption -Sc ermöglicht. C-artige Operatoren werden in Lazarus über die Projekteinstellungen ermöglicht.

Java Pascal Kommentare
  =   :=   Einfache Zuweisung
  +=   +=   Additionszuweisung
  -=   -=   Subtraktionszuweisung
  *=   *=   Multiplikationszuweisung
  /=   /=   Divisionszuweisung
  %=   ist in Free Pascal nicht vorhanden   Modulo Zuweisung
  &=   ist in Free Pascal nicht vorhanden   UND Zuweisung
  |=   ist in Free Pascal nicht vorhanden   ODER Zuweisung
  ^=   ist in Free Pascal nicht vorhanden   Exclusive ODER Zuweisung
  >>=   ist in Free Pascal nicht vorhanden   Rechtsschiebe Zuweisung
  >>>=   ist in Free Pascal nicht vorhanden   Rechtsschiebe Zuweisung mit Nullexpansion
  <<=   ist in Free Pascal nicht vorhanden   Linksschiebe Zuweisung

Sonstige Operatoren

Java Pascal
  &   @   Adresse von ...
  *   ^   Zeiger / Pointer

Ternärer Operator


Java Pascal Kommentare
  ?   ist in Free Pascal nicht vorhanden   Erlaubt die verkürzte Schreibweise von If-Else Verzweigungen und gibt einen Wert zurück

  Verwendung:
  Ergebnisfeld = Bedingung ? Wahrfall : Falschfall
 
  Beispiel:
  Für ein Maximum in Java:
  max = ( a > b ) ? a : b;
 
  Dies entspricht in Pascal folgendem if-else-Konstrukt:
  if a > b Then
      max := a
  else
      max := b;

Übersetzen von Java Kommentarzeichen

Java Pascal Kommentare
  /*   {   Anfang eines Kommentars
  /*   (*   Anfang eines Kommentars
  */   }   Ende eines Kommentars
  */   *)   Ende eines Kommentars
  //   //   Kommentarzeile

Übersetzen von Java Anweisungsblöcken

Java Pascal Kommentare
  {   Begin   Anfang eines Anweisungsblocks
  }   End   Ende / Abschluss eines Anweisungsblocks

Übersetzen von Java Schleifentypen

Java Pascal Kommentare
  for( ...; ...; ...++)   For ... To ... Do   Kopfgesteuerte Schleife, die hochgezählt wird
  for(...; ...; ...--)   For ... Downto ... Do   Kopfgesteuerte Schleife, die heruntergezählt wird
  for (Datentyp ...: Array) // For Each Schleife   For ... in   Kopfgesteuerte Schleife, für das Durchsuchen von Mengen
  while (...)   While ... Do   Kopfgesteuerte Schleife
  do ... while(...)   Repeat ... Until   Fussgesteuerte Schleife
  do ... while!(...)   Repeat ... Until ... Not   Fussgesteuerte Schleife mit Nichtung des Ergebnisses des Ausdrucks

Übersetzen von Java Verzweigungen / Bedingungen

Java Pascal Kommentare
  if(...)   If ... Then   If-Bedingung
  if(...) ... else   If ... Then ... Else   If-Bedingung mit Sonstzweig
  switch(...) case ...: ...break;   Case ... Of ...: ... End;   Case-Bedingung
  switch(...) case ...: ... break; default ...;   Case ... Of ...: ... Else ... End;   Case-Bedingung mit Sonst-Zweig

Übersetzen von Java Verzweigungen- / Schleifenabbrüchen

Java Pascal Kommentare
  break   Break   Die break-Anweisung ermöglicht es, vorzeitig eine Schleife (oder ein switch-case-Konstrukt) zu verlassen
  continue   Continue   Die continue-Anweisung ermöglicht es, den aktuellen Schleifendurchlauf zu beenden

Übersetzen von Java Prozeduren und Funktionen

Java Pascal Kommentare
  void Prozedurname(...)   Procedure Prozedurname(...)   Unterprogramm (Prozedur) ohne Rückgabewert
  datentyp Funktionsname(...)   Function Funktionsname(...): Datentyp   Unterprogramm (Funktion) mit Rückgabewert
  return   FunctionName := ...   Diese Pascal-Schreibweise ist überholt (deprecated)
  return   Result := ...   Einer Funktion Ihren Rückgabewert zuweisen

Übersetzen von Java Dateiheadern

Java Pascal Kommentare
  package ...;   Unit ...;   Einbinden der Pascal Unit bzw. des Java Packages
  import ...;   Uses ...;   Bindet Bibliotheken und Klassen ein
  public static void main(String[...] args) {...}   Program ProgramName; Begin ... End.   Hauptprogramm

Übersetzen von Java Datentypen

Java Datentyp Pascal Datentyp Speichergrösse in Bits Range
  byte   Shortint   8-Bit   -128 .. 127
  short   SmallInt   16-Bit   -32768 .. 32767
  int   LongInt   32-Bit   -2147483648..2147483647
  long   Int64   64-Bit   -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807
  float   Single   32-Bit   1.5E-45 .. 3.4E+38
  double   Double   64-Bit   5.0E-324 .. 1.7E+308
  boolean   Boolean   8-Bit   False bzw. True
  char   WideChar   16-Bit   2 Bytes codieren ein sichtbares Zeichen
  String   WideString   0-Bit bis ∞   Zeichenkette

Übersetzen von Java Aufzählungen (Enumerationen)

Java Pascal Kommentare
  enum TheEnum = {MINVALUE, MAXVALUE}   TheEnum = (MINVALUE, MAXVALUE)   Die Konstante MINVALUE enthält den Wert 0

  Die Konstante MAXVALUE enthält den Wert 1

Übersetzen von Java Arrays

Java Pascal Kommentare
  Datentyp[] arrayName = new Datentyp[...];   Datentyp: Array[...] Of Datentyp;  
  Datentyp arrayVar[...] = new Datentyp[...];   Datentyp: Array[...] Of Datentyp;  

Übersetzen der Java Objektorientierung

Java Pascal Kommentare
  class Klassenname{...}   Klassenname = Class ... End;   Leitet eine Klassendeklaration ein

  Schreibweise für Free Pascal und Delphi

  class Klassenname{...}   Klassenname = Object ... End;   Leitet eine Klassendeklaration ein

  Schreibweise für Free Pascal und Turbo Pascal

  class Klassenname<T> {...}   Generic Klassenname = Class<T> ... End;   Leitet eine Klassendeklaration ein

  Generische Klassen werden erst ab Free Pascal 2.2.2 unterstützt

  Klassenname(...)   Constructor Klassenname.Konstruktorname(...);   In Java ist der Name des Konstructors der Klassenname

  In Free Pascal ist der Name des Konstruktors Create

  abstract   Abstract   Kennzeichnet eine abstrakte Klasse oder eine abstrakte Methode,

  d. h. die Klasse oder Methode wird nicht implementiert.

  implements   SomeClass = Class(SomeInterface)   Implementiert ein Interface
  extends   SubClass = Class(BaseClass)   Bezeichnet die Klasse von der geerbt wird
  final   Final   Verhindert das nachträgliche Ändern oder Überschreiben von virtuellen Methoden
  interface   TheInterface = Interface   Deklariert die Schnittstelle einer Klasse
  new Class()   InstanzVariable := Klassenname.Create   Initialisierung von Referenz-Datentypen
  private   Private  
  protected   Protected  
  public   Public  
  static   Static  
  static   Class Function  
  static   Class Procedure  
  super   Inherited   Ruft den Elternkonstruktor auf
  this   Self   Bezeichnet die Klasse "in der man sich gerade befindet" (Selbstreferenz)
  transient     Die Variable soll bei der Speicherung von Objekten (Serialisierung) nicht gespeichert werden.

Freigabe eines Objektes

Java Pascal Kommentare
  null   Nil   Gibt die Referenz auf ein Objekt frei. Mehr ist in Java nicht nötig, den Rest erledigt in Java der Garbage-Collektor.

  In Pascal führt der Aufruf FreeAndNil(...) zum selben Ergebnis.

Klassenbestimmung

Java Pascal Kommentare
  instanceof   Is   Bestimmt die Klassenzugehörigkeit eines Objektes

Werfen von Exceptions

Java Pascal Kommentare
  throw   Raise   Wirft eine Exception
  throws   ist in Free Pascal nicht vorhanden   Gibt im Methodenkopf einer Klasse oder Methode an,

  welche Ausnahme(n) von der Klasse bzw. Methode ausgelöst werden kann.

Fangen von Exceptions

Java Pascal Kommentare
  try { ... } catch { ... }   Try Begin ... End Except Begin ... End   Fehlerbehandlung mit einem Try-Block
  try { ... } catch { ... } finally { ... }   begin ... try try ... except ... end; finally ... end; ... end;   Fehlerbehandlung mit einem Block für Abschlussarbeiten

Threadprogrammierung

Java Pascal Kommentare
  synchronized   Synchronize(@...)   Dient der Synchronisation mit dem Hauptthread.
  volatile     Variablen, die dem Datenaustasch mit anderen Threads dienen, werden in Java mit volatile deklariert.

  In Free Pascal sind alle global definierten Variablen volatile.

Aufruf von Fremdfunktionen (z. B. aus Dll's)

Java Pascal Kommentare
  native   StdCall   Pascal / FPC Standardaufrufkonvention
  native   CDecl   C Standardaufrufkonvention



--Olaf 14:28, 24 March 2013 (UTC)