This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. # Pseudocode Programmcode, der nicht zur maschinellen Interpretation dient. Dieser Code dient vielmehr der **Veranschaulichung** eines Algoritmus. Er hilft, einen Algorithmus zu verstehen, ohne die Zielgruppe auf eine spezielle Programmiersprache festzulegen. Es gibt, neben anderen, vor allem folgende 3 Notationen: |Notation |Beschreibung | |----------|--------------| |JANA - Java based abstract notation for algorithms |An Java angelehnt | |Pseudo-Pascal |An Pascal angeleht. Sehr "sprechend" | |Deutsches Pseudo-Pascal |wie Pseudo-Pascal, nur mit deutschen Worten | --- ### Pseudocode Eigenschaften - Eliminiert diese Eigenheiten - Formulierung ist **ähnlich** einem Programm - Aber **ohne konkrete Syntax** einer bestimmten Programmiersprache Laut [](https://oer-informatik.de/pseudocode) ist wichtig bei der Erstellung von Pseudocode: **Verständlichkeit** des Pseudocodes ist wichtiger als starre Konventionen! **Unnötige Details vermeiden**: das Offensichtliche kann als bekannt vorausgesetzt werden! **Im Kontext bleiben**: Wer ist Adressat und in welcher Problemdomäne befinde ich mich? Wem beantworte ich mit dem Pseudocode welche Frage? --- ### Blockdefinition **JANA**: geschweifte Klammern ``` { Anweisung } ``` **Pseudo-Pascal**: Schlüsselwort `end` ``` for (...) Anweisung end for ``` **Deutsches Pseudo-Pascal** ``` WENN (...) Anweisung ENDE WENN ``` --- ### Standard-Datentypen (mit Beispielen) | **JANA** | **Pseudo-Pascal** | **deutsches Pseudo-Pascal** | | --------- | ----------------- | --------------------------- | | int | integer | GANZZAHL | | float | real | GLEITKOMMAZAHL | | char | char | ZEICHEN | | boolean | boolean | WAHRHEITSWERT | | String | String | ZEICHENKETTE | | Object | Object | OBJEKT | --- ### Beispielhafte Deklarationen **JANA** ``` int i int i := 0 Object o ``` **Pseudo-Pascal** ``` i: int i: int := 0 o: Object ``` **Deutsches Pseudo-Pascal** ``` i: GANZZAHL i: GANZZAHL := 0 o: OBJEKT ``` --- ### Operatoren Wichtig: Zuweisungsoperator ``` := // Zuweisung (besser als = im Pseudocode) ``` ``` +,-,/,* // Mathematische Operatoren & // Sollte kommentiert werden (Bit- oder Textoperation) <, >, ==, != // Vergleichsoperatoren : // Typdeklaration (nicht Division!) AND, OR, NOT // Logische Operatoren (ggf. deutsch verwenden) ``` --- ### Selektion / bedingte Anweisung (if / else if / else) **JANA** ``` if (...) { Anweisung } else if (...) { Anweisung } else { Anweisung } ``` **Pseudo-Pascal** ``` if (...) then Anweisung else if (...) Anweisung else Anweisung end if ``` **Deutsches Pseudo-Pascal** ``` WENN (...) DANN Anweisung SONST WENN (...) DANN Anweisung SONST Anweisung ENDE WENN ``` --- ### Mehrfachauswahl (switch / case) **JANA** ``` switch (variable) { case 1: { Anweisung } case >=2: { Anweisung } default: { Anweisung } } ``` **Pseudo-Pascal** ``` case variable of 1: Anweisung >=2: Anweisung else Anweisung end case ``` **Deutsches Pseudo-Pascal** ``` WERT VON variable ENTSPRICHT 1: Anweisung >=2: Anweisung SONST Anweisung ENDE WERT VON ``` --- ### Kopfgesteuerte Schleife (while) **JANA** ``` while (...) { Anweisung } ``` **Pseudo-Pascal** ``` while (...) do Anweisung end while ``` **Deutsches Pseudo-Pascal** ``` SOLANGE (...) Anweisung ENDE SOLANGE ``` --- ### Fußgesteuerte Schleife (do-while / repeat-until) **JANA** ``` do { Anweisung } while (...) ``` **Pseudo-Pascal** ``` repeat Anweisung until (...) ``` **Deutsches Pseudo-Pascal** ``` WIEDERHOLE Anweisung SOLANGE (...) ``` --- ### Zählergesteuerte Schleife (for) **JANA** ``` for (...) { Anweisung } ``` **Pseudo-Pascal** ``` for (...) Anweisung end for ``` **Deutsches Pseudo-Pascal** ``` ZÄHLE i VON 0 BIS 7 mit Schrittweite 2 Anweisung ENDE ZÄHLE ``` Die zur iterierende Menge kann relativ frei eingegeben werden, solange sie eindeutig definiert wird. Denkbar ist z.B.: ``` for (int i = 1..10) for (int i; i<=10; i++) for (int i = 1, 2, 3, .., 10) ``` --- ### Iteration über Listen (foreach) **JANA** ``` foreach (String txt in txtList) { Anweisung } ``` **Pseudo-Pascal** ``` foreach element in list Anweisung next element ``` **Deutsches Pseudo-Pascal** ``` FÜR JEDES element VON liste Anweisung NÄCHSTES element ``` --- ### Methodendeklaration (Funktion / Methode) **JANA** ``` String halloWelt(String text) { return "Hallo " & text } ``` **Pseudo-Pascal** ``` FUNCTION halloWelt(text: String) : String Anweisung END halloWelt() ``` **Deutsches Pseudo-Pascal** ``` FUNKTION halloWelt(text: String) : String RÜCKGABE "Hallo " & text ENDE halloWelt() ``` --- ### Arrays und Collections **JANA** ``` int zahlenfeld[] int zahlenfeld[1..100] zahlenfeld[n, m] zahlen2D[].length ``` **Pseudo-Pascal** ``` zahlenFeld = array [] of integer zahlenFeld = array [1..100] of integer zahlenFeld = array [1..n, 1..m] of integer zahlen2D[].length ``` **Deutsches Pseudo-Pascal** ``` zahlenFeld = eindimensionales Ganzzahlen-Array zahlenFeld = eindimensionales Ganzzahlen-Array mit 100 Elementen zahlenFeld = zweidimensionales Ganzzahlen-Array zahlen2D[].LÄNGE ```