Difference between revisions of "Pascal for Java users/de"
m |
|||
(48 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Pascal for Java users}} | {{Pascal for Java users}} | ||
− | + | <br> | |
− | Die | + | 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= | |
+ | ==Arithmetische Operatoren== | ||
{| class="wikitable" | {| class="wikitable" | ||
! Java !! Pascal !! Kommentare | ! Java !! Pascal !! Kommentare | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| + | | + | ||
Line 34: | Line 26: | ||
| / | | / | ||
| / | | / | ||
− | | | + | | Gleitkommadivision |
|- | |- | ||
| % | | % | ||
Line 40: | Line 32: | ||
| Modulo (Division ohne Rest) | | Modulo (Division ohne Rest) | ||
|- | |- | ||
− | | | + | | ++ |
− | | | + | | Inc |
− | | | + | | inkrementieren (Hochzählen) |
+ | |- | ||
+ | | -- | ||
+ | | Dec | ||
+ | | dekrementieren (Herunterzählen) | ||
+ | |} | ||
+ | |||
+ | ==Relationale Operatoren== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
| == | | == | ||
| = | | = | ||
− | | | + | | gleich |
|- | |- | ||
| != | | != | ||
| <> | | <> | ||
| ungleich | | ungleich | ||
+ | |- | ||
+ | | < | ||
+ | | < | ||
+ | | kleiner | ||
+ | |- | ||
+ | | <= | ||
+ | | <= | ||
+ | | kleiner gleich | ||
+ | |- | ||
+ | | > | ||
+ | | > | ||
+ | | grösser | ||
+ | |- | ||
+ | | >= | ||
+ | | >= | ||
+ | | grösser gleich | ||
+ | |} | ||
+ | |||
+ | ==Logische Operatoren== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
+ | |- | ||
+ | | ! | ||
+ | | Not | ||
+ | | Negation (Den Wahrheitswert in sein Gegenteil ändern) | ||
|- | |- | ||
| && | | && | ||
| And | | And | ||
− | | logisches UND | + | | logisches UND mit Kurzschlussauswertung<br> |
+ | In Free Pascal ist dies die Standard-Compilereinstellung | ||
|- | |- | ||
| <nowiki> || </nowiki> | | <nowiki> || </nowiki> | ||
| Or | | Or | ||
− | | logisches ODER | + | | logisches ODER mit Kurzschlussauswertung |
+ | In Free Pascal ist dies die Standard-Compilereinstellung | ||
+ | |- | ||
+ | | & | ||
+ | | And | ||
+ | | logisches UND mit Komplettauswertung<br> | ||
+ | In Free Pascal ist dies die Compilerdirektive {$B ON} | ||
+ | |- | ||
+ | | <nowiki> | </nowiki> | ||
+ | | Or | ||
+ | | logisches ODER mit Komplettauswertung | ||
+ | In Free Pascal ist dies die Compilerdirektive {$B ON} | ||
|- | |- | ||
| ^ | | ^ | ||
| Xor | | Xor | ||
| exclusives ODER | | exclusives ODER | ||
+ | |} | ||
+ | ==Bit Operatoren== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
+ | |- | ||
+ | | ~ | ||
+ | | Not | ||
+ | | Einerkomplement | ||
+ | |- | ||
+ | | & | ||
+ | | And | ||
+ | | bitweises UND | ||
+ | |- | ||
+ | | <nowiki> | </nowiki> | ||
+ | | Or | ||
+ | | bitweises inclusives ODER | ||
+ | |- | ||
+ | | ^ | ||
+ | | Xor | ||
+ | | bitweises exclusives ODER | ||
|- | |- | ||
| >> | | >> | ||
| Shr | | Shr | ||
− | | bitweises | + | | bitweises Rechtsschieben mit Vorzeichen |
+ | |- | ||
+ | | >>> | ||
+ | | ist in Free Pascal nicht vorhanden | ||
+ | | bitweises Rechtsschieben ohne Vorzeichen | ||
|- | |- | ||
| << | | << | ||
| Shl | | Shl | ||
− | | bitweises | + | | 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 | ||
|- | |- | ||
− | | ++ | + | | = |
− | | | + | | := |
− | | | + | | Einfache Zuweisung |
+ | |- | ||
+ | | += | ||
+ | | += | ||
+ | | Additionszuweisung | ||
+ | |- | ||
+ | | -= | ||
+ | | -= | ||
+ | | Subtraktionszuweisung | ||
+ | |- | ||
+ | | *= | ||
+ | | *= | ||
+ | | Multiplikationszuweisung | ||
+ | |- | ||
+ | | /= | ||
+ | | /= | ||
+ | | Divisionszuweisung | ||
+ | |- | ||
+ | | %= | ||
+ | | ist in Free Pascal nicht vorhanden | ||
+ | | Modulo Zuweisung | ||
+ | |- | ||
+ | | &= | ||
+ | | ist in Free Pascal nicht vorhanden | ||
+ | | UND Zuweisung | ||
+ | |- | ||
+ | | <nowiki>|</nowiki>= | ||
+ | | 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== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! | ||
+ | |- | ||
+ | | & | ||
+ | | @ | ||
+ | | Adresse von ... | ||
+ | |- | ||
+ | | * | ||
+ | | ^ | ||
+ | | Zeiger / Pointer | ||
+ | |} | ||
+ | |||
+ | ==Ternärer Operator== | ||
+ | <br> | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
− | | | + | | ? |
− | | | + | | ist in Free Pascal nicht vorhanden |
− | | | + | | Erlaubt die verkürzte Schreibweise von If-Else Verzweigungen und gibt einen Wert zurück<br> |
+ | Verwendung:<br> | ||
+ | Ergebnisfeld = Bedingung <b>?</b> Wahrfall : Falschfall<br> | ||
+ | <br> | ||
+ | Beispiel:<br> | ||
+ | Für ein Maximum in Java:<br> | ||
+ | max = ( a > b ) ? a : b;<br> | ||
+ | <br> | ||
+ | Dies entspricht in Pascal folgendem if-else-Konstrukt:<br> | ||
+ | if a > b Then<br> | ||
+ | max := a<br> | ||
+ | else<br> | ||
+ | max := b;<br> | ||
+ | |} | ||
+ | |||
+ | =Übersetzen von Java Kommentarzeichen= | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
| /* | | /* | ||
Line 99: | Line 248: | ||
| // | | // | ||
| Kommentarzeile | | Kommentarzeile | ||
+ | |} | ||
+ | =Übersetzen von Java Anweisungsblöcken= | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
− | | | + | | { |
− | |   | + | | Begin |
− | | | + | | Anfang eines Anweisungsblocks |
|- | |- | ||
− | | | + | | } |
− | | | + | | End |
− | | | + | | Ende / Abschluss eines Anweisungsblocks |
+ | |} | ||
+ | =Übersetzen von Java Schleifentypen= | ||
+ | {| class="wikitable" | ||
+ | ! 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= | ||
+ | {| class="wikitable" | ||
+ | ! 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= | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
| break | | break | ||
| 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= | ||
+ | {| class="wikitable" | ||
+ | ! 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= | ||
+ | {| class="wikitable" | ||
+ | ! 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= | ||
+ | {| class="wikitable" | ||
+ | ! 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)= | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
| enum TheEnum = {MINVALUE, MAXVALUE} | | enum TheEnum = {MINVALUE, MAXVALUE} | ||
− | | TheEnum = ( MINVALUE, MAXVALUE ) | + | | TheEnum = (MINVALUE, MAXVALUE) |
+ | | Die Konstante MINVALUE enthält den Wert 0<br> | ||
+ | Die Konstante MAXVALUE enthält den Wert 1 | ||
+ | |} | ||
+ | =Übersetzen von Java Arrays= | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
+ | |- | ||
+ | | Datentyp[] arrayName = new Datentyp[...]; | ||
+ | | Datentyp: Array[...] Of Datentyp; | ||
| | | | ||
|- | |- | ||
− | | | + | | Datentyp arrayVar[...] = new Datentyp[...]; |
− | | | + | | Datentyp: Array[...] Of Datentyp; |
| | | | ||
+ | |} | ||
+ | =Übersetzen der Java Objektorientierung= | ||
+ | {| class="wikitable" | ||
+ | ! 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<br> |
+ | 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 | | implements | ||
| SomeClass = Class(SomeInterface) | | 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 | | interface | ||
| TheInterface = Interface | | TheInterface = Interface | ||
− | | | + | | Deklariert die Schnittstelle einer Klasse |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| new Class() | | new Class() | ||
− | | | + | | InstanzVariable := Klassenname.Create |
− | | | + | | Initialisierung von Referenz-Datentypen |
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| private | | private | ||
Line 239: | Line 490: | ||
| Public | | Public | ||
| | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| static | | static | ||
Line 264: | Line 507: | ||
| Ruft den Elternkonstruktor auf | | 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== |
− | + | {| class="wikitable" | |
+ | ! 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.<br> |
+ | In Pascal führt der Aufruf FreeAndNil(...) zum selben Ergebnis. | ||
+ | |} | ||
+ | ==Klassenbestimmung== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
− | | | + | | instanceof |
− | | | + | | Is |
− | | | + | | Bestimmt die Klassenzugehörigkeit eines Objektes |
+ | |} | ||
+ | ==Werfen von Exceptions== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
| throw | | throw | ||
Line 285: | Line 542: | ||
|- | |- | ||
| throws | | 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== |
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
| try { ... } catch { ... } | | try { ... } catch { ... } | ||
Line 299: | Line 558: | ||
| begin ... try try ... except ... end; finally ... end; ... end; | | begin ... try try ... except ... end; finally ... end; ... end; | ||
| Fehlerbehandlung mit einem Block für Abschlussarbeiten | | Fehlerbehandlung mit einem Block für Abschlussarbeiten | ||
+ | |} | ||
+ | ==Threadprogrammierung== | ||
+ | {| class="wikitable" | ||
+ | ! Java !! Pascal !! Kommentare | ||
|- | |- | ||
− | | | + | | synchronized |
− | | | + | | Synchronize(@...) |
− | | | + | | Dient der Synchronisation mit dem Hauptthread. |
|- | |- | ||
| volatile | | volatile | ||
| | | | ||
− | | | + | | Variablen, die dem Datenaustasch mit anderen Threads dienen, werden in Java mit volatile deklariert.<br> |
− | + | In Free Pascal sind alle global definierten Variablen volatile. | |
− | |||
− | |||
− | |||
|} | |} | ||
− | = | + | =Aufruf von Fremdfunktionen (z. B. aus Dll's)= |
{| class="wikitable" | {| class="wikitable" | ||
− | ! Java | + | ! Java !! Pascal !! Kommentare |
|- | |- | ||
− | | | + | | native |
− | | | + | | StdCall |
− | | | + | | Pascal / FPC Standardaufrufkonvention |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
+ | | native | ||
+ | | CDecl | ||
+ | | 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 10: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: |
Ü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)