Beruflich Dokumente
Kultur Dokumente
Handbuch PscIDE
Handbuch PscIDE
PscIDE
Die Diplomarbeit ist eine Erweiterung des Buchs Algorithmen und Datenstrukturen (H. Dobler, G.
Pomberger, Pearson Studium 2008). In diesem Buch beschreiben die Autoren Dobler und Pomberger
Methoden der Programmierung und verwenden dafür einen speziellen Pseudocode. Da der Pseudo-
code nicht direkt ausführbar ist, ist das Testen der angeführten Pseudocode-Beispiele umständlich.
Deshalb kam der Wunsch nach einer Entwicklungsumgebung für diesen Pseudocode auf.
Das Ziel der Diplomarbeit war es, diese Entwicklungsumgebung zu konzipieren und zu implement-
ieren. Mit Hilfe der neu entstandenen Entwicklungsumgebung kann der Pseudocode automatisch
überprüft und in echte Programmiersprachen übersetzt werden. Die aktuelle Version unterstützt die
Umwandlung in die Programmiersprachen C++ und Pascal.
Die Entwicklungsumgebung wurde mit dem Framework Eclipse Rich Client Platform (RCP) entwickelt.
Der Compiler für den Pseudocode wurde mit dem Werkzeug javacc realisiert. Für weitere Details der
Implementierung sei auf die Diplomarbeit Algorithmen-Entwicklungssystem für Pseudocode (T.
Zauner, FH Hagenberg 2009) verwiesen.
Dieses Dokument gibt einen kurzen Einblick über die Installation und Benutzung der entstandenen
Entwicklungsumgebung PscIDE. Die Abkürzung PscIDE steht für Pseudocode integrated development
environment, also eine integrierte Entwicklungsumgebung für Pseudocode.
Anforderungen
Folgende Anforderungen sind nötig, damit PscIDE verwendet werden kann:
(3) Für das Starten der Entwicklungsumgebung PscIDE wird ein aktuelles Java Runtime Environ-
ment benötigt. Dieses kann unter http://www.java.com/de/download/ heruntergeladen und
anschließend installiert werden. Im September 09 war die Version 6 Update 16 als aktuellste
erhältlich. Die durchgeführten Tests mit dieser Version waren erfolgreich.
(4) Für das Übersetzen und Ausführen in echte Programmiersprachen werden noch zusätzliche
Compiler benötigt. Die Entwicklungsumgebung PscIDE ist auf die Compiler FreePascal (Pas-
cal) und Mingw (C++) optimiert. Installieren Sie diese Compiler auf Ihrem Computer.
Vor dem Testen des ersten Programms müssen die bereits installierten Compiler für Pascal und C++
eingebunden werden. Das Einbinden erfolgt mit den Compiler-Optionen-Dialogen (Options – Pascal/
C++ Compiler Options). Dort müssen die ausführbaren Dateien der Compiler ausgewählt werden (zB.
bei Freepascal fpc.exe, bei GCC c++.exe). Bei Standardinstallation von FreePascal und Mingw sehen
die Pfade wie folgt aus:
Anschließend kann dieser Code compiliert, in Pascal oder C++ übersetzt und zusätzlich noch ausge-
führt werden.
Compile – Compile (.pas): Übersetzt den Code in Pascal-Code.
Compile – Compile+Run (.pas): Übersetzt den Code in Pascal-Code und führt in anschließend aus.
Compile – Compile (.cpp): Übersetzt den Code in C++-Code.
Compile – Compile+Run (.cpp): Übersetzt den Code in C++-Code und führt in anschließend aus.
Alle erzeugten Dateien (.pas, .cpp und .exe) sind im gleichen Ordner, wie die Eingabedatei (.psc).
Testen Sie sowohl die Erzeugung und Ausführung nach Pascal und C++. Sehen Sie sich auch die er-
zeugten Codedateien an.
Wird das Programm hello.psc ausgeführt, wird zusätzlich noch eine Windows-Konsole gestartet und
das Programm dort ausgeführt:
Cheatsheets werden interaktiv in die Anwendung eingebunden. Mit Ihrer Hilfe soll sich der Benutzer
eingehender mit dem System beschäftigen und sich die Hände am System schmutzig machen.
Im Ordner examples finden sich noch weitere Beispiele für Pseudocode-Programme. Öffnen Sie diese
und machen Sie sich mit der Syntax des Pseudocodes vertraut. Zusätzlich finden Sie im Anhang noch
Grammatik Regeln, welche den Aufbau der Pseudocode-Programme beschreiben.
1 Start :
2 Program .
3
4 Program :
5 "program" Identifier
6 (ConstDecl | TypeDecl | VarDecl | FuncDef)*
7 Block .
8
9 ConstDecl :
10 "const" Identifier "=" (Integer|Floating) [";"] .
11
12 TypeDecl :
13 "type" (TypeSpecification)+ .
14
15 TypeSpecification :
16 Identifier "=" [Pointer] (Type|ArrayType|CompoundType) [";"] .
17
18 VarDecl :
19 "var" (VarSpecification)+ .
20
21 VarSpecification :
22 IdentifierList ":" [Pointer] (Type|ArrayType|CompoundType) [";"] .
23
24 Type :
25 ("int" | "bool" | "real" | "char" | "string" | Identifier) .
26
27 ArrayType :
28 "array" "[" ArraySpec (","ArraySpec)* "]" "of" Type .
29
30 ArraySpec :
31 (Integer|Identifier) ":" [(Integer|Identifier)] .
32
33 CompoundType :
34 "compound" (CompoundSpecification)+ "end" .
35
36 CompoundSpecification :
37 IdentifierList ":" [Pointer] (Type|ArrayType) [";"] .
38
39 Pointer :
40 "->" .
41
42 FuncDef :
43 FuncHead (VarDecl)* Block Identifier .
44
45 FuncHead :
46 Identifier "(" (FuncParList)* ")" [ ReturnType ] .
47
48 FuncParList :
49 ParameterType Identifier ":" [Pointer] (Type | ArrayType) .
50
51 ParameterType :
52 ("in" | "out" | "io") .
53
54 ReturnType :
55 ":" [Pointer] (Type | ArrayType) .