Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmierung:pseudocode [2024/07/08 19:31] – swe | programmierung:pseudocode [2025/12/20 14:53] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~REVEAL~~ | + | # Pseudocode |
| - | ====== | + | |
| Programmcode, | Programmcode, | ||
| - | Dieser Code dient vielmehr der **Veranschaulichung** eines Algoritmus. Er hilft, einen Algorithmus zu verstehen. | + | Dieser Code dient vielmehr der **Veranschaulichung** eines Algoritmus. |
| - | ===== Problem ===== | + | Er hilft, einen Algorithmus zu verstehen, |
| - | * Interpretation von Programmcode wird erschwert durch | + | |
| - | * Eigenheiten der unterschiedlichen Programmiersprachen | + | |
| - | * Unterschiedliche Syntax | + | |
| - | ===== Pseudocode Eigenschaften ===== | + | |
| - | * Eliminiert diese Eigenheiten | + | |
| - | * Formulierung ist **ähnlich** einem Programm | + | |
| - | * Aber **ohne konkrete Syntax** einer bestimmten | + | |
| - | Wichtig bei der Erstellung von Pseudocode ist: | + | Es gibt, neben anderen, vor allem folgende 3 Notationen: |
| - | **Verständlichkeit** des Pseudocodes ist wichtiger als starre Konventionen! | + | |Notation |Beschreibung | |
| + | |----------|--------------| | ||
| + | |JANA - Java based abstract notation for algorithms |An Java angelehnt | | ||
| + | |Pseudo-Pascal |An Pascal angeleht. Sehr " | ||
| + | |Deutsches Pseudo-Pascal |wie Pseudo-Pascal, | ||
| - | **Unnötige Details vermeiden**: | ||
| - | **Im Kontext bleiben**: Wer ist Adressat und in welcher Problemdomäne befinde ich mich? Wem beantworte ich mit dem Pseudocode | + | --- |
| + | ### Pseudocode | ||
| + | - Eliminiert diese Eigenheiten | ||
| + | - Formulierung ist **ähnlich** einem Programm | ||
| + | - Aber **ohne konkrete Syntax** einer bestimmten Programmiersprache | ||
| - | ===== Aussehen ===== | ||
| - | Pseudocode kann... | ||
| - | ...Der **Syntax höherer Programmiersprachen** ähneln | ||
| - | <code > | ||
| - | if, then, else, for, in, | ||
| - | </ | ||
| - | ...Gemixt werden mit natürlicher Sprache | ||
| - | <code > | ||
| - | wenn, dann, sonst, ist, größer, kleiner, wahr ... | ||
| - | </ | ||
| - | ...Gemixt werden mit mathematischer Notation | ||
| - | <code > | ||
| - | <, !=, > | ||
| - | </ | ||
| - | ===== Variablen ===== | + | Laut [](https:// |
| - | Wie im echten Programm, müssen auch im Pseudocode | + | Erstellung von Pseudocode: |
| - | Der Unterschied zum echten Code ist, dass dies im Pseudocode | + | **Verständlichkeit** des Pseudocodes ist wichtiger als starre |
| + | Konventionen! | ||
| - | ==== Deklaration ==== | + | **Unnötige Details vermeiden**: |
| - | <code > | + | vorausgesetzt werden! |
| - | name; | + | |
| - | a; | + | |
| - | isBoolean; | + | |
| - | </ | + | |
| + | **Im Kontext bleiben**: Wer ist Adressat und in welcher Problemdomäne | ||
| + | befinde ich mich? Wem beantworte ich mit dem Pseudocode welche Frage? | ||
| - | ==== Initialisierung bzw. Deklaration + Initialisierung ==== | ||
| - | <code > | ||
| - | name = "Bugs Bunny"; | ||
| - | a = 2024; | ||
| - | isBoolean = true; | ||
| - | Eingabe a; | ||
| - | </ | ||
| + | --- | ||
| + | ### Blockdefinition | ||
| - | ===== Kontrollstrukturen ===== | ||
| - | Kontrollstrukturen können ebenfalls wunderbar in Pseudocode beschrieben werden. Dabei geht es ausschließlich darum, zu sehen, **welche** Kontrollstruktur verwendet wurde und wo sich **Anfang und Ende** der jeweiligen Struktur befindet. | ||
| - | ==== Bedingungen ==== | + | **JANA**: geschweifte Klammern |
| - | Denkbar sind stark an eine höhere Programmiersprache angelegte Konstrukte wie | + | ``` |
| - | <code > | + | { |
| - | Eingabe a | + | |
| - | if (a > 45) { | + | |
| - | Ausgabe: a | + | |
| } | } | ||
| - | else { | + | ``` |
| - | Ausgabe: Kein Treffer | + | |
| + | **Pseudo-Pascal**: | ||
| + | |||
| + | ``` | ||
| + | for (...) | ||
| + | Anweisung | ||
| + | end for | ||
| + | ``` | ||
| + | |||
| + | **Deutsches Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | WENN (...) | ||
| + | Anweisung | ||
| + | ENDE WENN | ||
| + | ``` | ||
| + | |||
| + | --- | ||
| + | ### Standard-Datentypen (mit Beispielen) | ||
| + | |||
| + | |||
| + | | **JANA** | ||
| + | | --------- | ----------------- | --------------------------- | | ||
| + | | int | integer | ||
| + | | float | ||
| + | | char | char | ZEICHEN | ||
| + | | boolean | boolean | ||
| + | | String | ||
| + | | Object | ||
| + | |||
| + | --- | ||
| + | |||
| + | ### 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) | ||
| + | ``` | ||
| + | ``` | ||
| + | +, | ||
| + | & // 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** | ||
| - | Konstrukte, die natürliche Sprache verwenden | + | ``` |
| - | <code > | + | WENN (...) DANN |
| - | EINGABE a | + | |
| - | WENN a kleiner 45 DANN | + | SONST WENN (...) DANN |
| - | | + | |
| SONST | SONST | ||
| - | | + | |
| - | </ | + | ENDE WENN |
| + | ``` | ||
| - | Wichtig: Da es bei diesem Format keine öffnende und schließende geschweifte Klammern gibt, muss durch korrekte **Einrückung** dafür gesorgt werden, dass Anfang und Ende des Blocks klar werden! | ||
| + | --- | ||
| - | ==== Loops ==== | + | ### Mehrfachauswahl (switch / case) |
| - | '' | + | **JANA** |
| - | <code > | + | |
| - | for(i=5, i< 10, i++){ | + | ``` |
| - | | + | switch |
| + | | ||
| + | Anweisung | ||
| + | } | ||
| + | case >=2: { | ||
| + | Anweisung | ||
| + | } | ||
| + | default: { | ||
| + | Anweisung | ||
| + | } | ||
| } | } | ||
| - | </ | + | ``` |
| - | <code > | + | **Pseudo-Pascal** |
| - | for (startwert i= 5, endwert i=10, schrittweite | + | |
| - | | + | ``` |
| + | case variable of | ||
| + | 1: Anweisung | ||
| + | >=2: Anweisung | ||
| + | else Anweisung | ||
| + | end case | ||
| + | ``` | ||
| + | |||
| + | **Deutsches Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | WERT VON variable ENTSPRICHT | ||
| + | | ||
| + | >=2: Anweisung | ||
| + | SONST Anweisung | ||
| + | ENDE WERT VON | ||
| + | ``` | ||
| + | |||
| + | --- | ||
| + | |||
| + | ### Kopfgesteuerte Schleife (while) | ||
| + | |||
| + | **JANA** | ||
| + | |||
| + | ``` | ||
| + | while (...) { | ||
| + | | ||
| } | } | ||
| - | </code> | + | ``` |
| - | <code > | + | |
| - | INPUT listOfNumbers | + | **Pseudo-Pascal** |
| - | FOR each number | + | |
| - | PRINT number | + | ``` |
| - | END FOR | + | while (...) do |
| - | </code> | + | Anweisung |
| + | end while | ||
| + | ``` | ||
| + | |||
| + | **Deutsches Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | SOLANGE (...) | ||
| + | Anweisung | ||
| + | ENDE SOLANGE | ||
| + | ``` | ||
| + | |||
| + | --- | ||
| + | |||
| + | ### Fußgesteuerte Schleife (do-while | ||
| + | |||
| + | **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) { | ||
| + | | ||
| + | } | ||
| + | ``` | ||
| + | |||
| + | **Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | foreach element in list | ||
| + | Anweisung | ||
| + | next element | ||
| + | ``` | ||
| + | |||
| + | **Deutsches Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | FÜR JEDES element VON liste | ||
| + | Anweisung | ||
| + | NÄCHSTES element | ||
| + | ``` | ||
| + | |||
| + | --- | ||
| + | |||
| + | ### Methodendeklaration (Funktion | ||
| + | |||
| + | **JANA** | ||
| + | |||
| + | ``` | ||
| + | String halloWelt(String text) { | ||
| + | return "Hallo " & text | ||
| + | } | ||
| + | ``` | ||
| + | |||
| + | **Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | FUNCTION halloWelt(text: | ||
| + | Anweisung | ||
| + | END halloWelt() | ||
| + | ``` | ||
| + | |||
| + | **Deutsches Pseudo-Pascal** | ||
| + | |||
| + | ``` | ||
| + | FUNKTION halloWelt(text: | ||
| + | RÜCKGABE "Hallo " & text | ||
| + | ENDE halloWelt() | ||
| + | ``` | ||
| + | |||
| + | --- | ||
| + | |||
| + | ### Arrays und Collections | ||
| + | |||
| + | **JANA** | ||
| + | |||
| + | ``` | ||
| + | int zahlenfeld[] | ||
| + | int zahlenfeld[1..100] | ||
| + | zahlenfeld[n, | ||
| + | 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 | ||
| + | ``` | ||
| + | |||