AuD Übung 01 (Stefan Bosse) [7.11.2025]
Gruppe und Namen der Mitglieder
Punkte:Total/21./22./23./2

Es wird wex mit websocket (ws) Protokoll benötigt. Der wex Service muss vor Aufrufen der Übung gestartet werden.

Übung Notation (01)

In dieser Übung sollen zwei Ziele erreicht werden:

  1. Grundlegendes Verständnis von Notation und Beschreibung von Algorithmen
  2. Praktische Implementierung einer Pseudonotation

Ausgabe : 7.11.2025

Abgabe : 17.11.2025

Notation für Algorithmen

Wir betrachten hier vier Ebenen der Notation zur Beschreibung von Algorithmen:

  1. Struktugramme
  2. Ablaufdiagramme
  3. Pseudonotation
  4. Programmiersprache

Struktugramm

Ausgangspunkt ist ein Struktugramm für die Berechnung der Größten Gemeinsamen Teilers (GGT) zweier ganzer Zahlen, wie nachfolgend gezeigt.

#label

Ablaufdiagramm

Es soll das Struktugramm zunächst in ein Ablaufdiagramm transformiert werden. Das Diagramm wird textuell mit einer einfachen Notation beschrieben:

<label> : <type0>
<label> : <type>("text")
<label> -> <label>
<label>("anno") -> ..
<type0> := start,end
<type> := branch,data,input,output,start,end
--- Beispiele ---
branch1 : branch("a>0")
assign1 : data("a:=0")
input1  : input("x,y,z")
output1 : output("z")
assign1 -> branch1
branch1("true")  -> output1
branch1("false") -> assign1

Dabei haben wir Eingabe und Ausgabeoeprationen, Start und Ende Markierungen, Berechnung (Daten, Ausdrücke, Variablenzuweisung) und Verzweigung (Branch).

Nachfolgend soll das Programmflussdiagramm für die GGT Berechnung beschrieben werden. Durch Drücken des "Play" Knpofes wird der Text in eine Grafik übersetzt (sofern keine Syntaxfehler gefunden werden). Initial ist nur der Anfang und das Ende gezeigt sowie ein Beispiel für eine Verzweigung.

Aufgabe 1. Fertige nachfolgend das Programmflussdiagramm für den GGT Algorithmus nach obigen Struktugramm an.

Flussdiagramm

 ▸ 
 ✗ 

c3RhcnQKaW5wdXQxOmlucHV0KCJhLGIiKQphc3NpZ24xOmRhdGEoIng9YSB5PWIiKQpjb25kMTpicmFuY2goIng+eSDiiKcgeT4wPyIpCmNvbmQyOmJyYW5jaCgieD55PyIpCmFzc2lnbjI6ZGF0YSgieDo9eC15IikKYXNzaWduMzpkYXRhKCJ5Oj15LXgiKQpjb25kMzpicmFuY2goInk9MD8iKQpvdXRwdXQxOm91dHB1dCgieCIpCm91dHB1dDI6b3V0cHV0KCJ5IikKZW5kCnN0YXJ0LT5pbnB1dDEKaW5wdXQxLT5hc3NpZ24xCmFzc2lnbjEtPmNvbmQxCmNvbmQxKCJOZWluIiktPmNvbmQyCmNvbmQxKCJKYSIpLT5jb25kMwpjb25kMigiSmEiKS0+YXNzaWduMgpjb25kMigiTmVpbiIpLT5hc3NpZ24zCmFzc2lnbjItPmNvbmQxCmFzc2lnbjMtPmNvbmQxCmNvbmQzKCJKYSIpLT5vdXRwdXQxCmNvbmQzKCJOZWluIiktPm91dHB1dDIKb3V0cHV0MS0+ZW5kCm91dHB1dDItPmVuZA==

Pseudonotation

Folgend soll unsere Pseudonotation verwendet werden (ε ist ein Ausdruck, i ist eine Anweisung oder ein Anweisungsblock {}, also eine Sequenz von Anweisungen):

x=ε
if (cond) i1
if (cond) i1 else i2
while (cond) i1
do i1 while (cond)
switch (ε) {
  case v1: i1; break;
  case v2: i2; break;
  default: i3; 
}
function foo(a,b,c) { .. return ε }
{ i1;i2; .. }
{
  i1
  i2
  ..
}
print(...)

Aufgabe 2. Nun soll das Ablaufdiagramm (oder Struktugramm) in Pseudonotation wie in der Vorlesung eingeführt umgesetzt werden.

Pseudonotation vom GGT Algorithmus (Play Button prüft Syntax)

 ▸ 
 ✗ 
 ≡ 

ZnVuY3Rpb24gZ2d0KGEsYikgewogICAgeD1hO3k9YgogICAgd2hpbGUgKHg+MCAmJiB5PjApIHsKICAgICAgaWYgKHg+eSkgewogICAgICAJeD14LXk7CiAgICAgIH0gZWxzZSB7CiAgICAgIAl5PXkteDsKICAgICAgfQogICAgfQogICAgaWYgKHk9PTApIHsKICAgICAgcmV0dXJuIHg7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4geTsKICAgIH0JCiAgfQ==

Implementierung mit Java

Es stehen nur die Basisfunktionen von Java zur Verfügung. Hier:

Aufgabe 3. Implementiere den GGT Algorithmus als statische Methode int ggt(int a,int b) und teste sie für fünf Fälle. Die Ausgabe findet in der main Methode statt und die ggt Methode gibt den GGT zurück.

Java Code (Ggt.java)

cHVibGljIGNsYXNzIEdndCB7CiAgc3RhdGljIGludCBnZ3QoaW50IGEsaW50IGIpIHsKICAgIGludCB4PWEseT1iOwogICAgd2hpbGUgKHg+MCAmJiB5PjApIHsKICAgICAgaWYgKHg+eSkgewogICAgICAJeD14LXk7CiAgICAgIH0gZWxzZSB7CiAgICAgIAl5PXkteDsKICAgICAgfQogICAgfQogICAgaWYgKHk9PTApIHsKICAgICAgcmV0dXJuIHg7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4geTsKICAgIH0JCiAgfQogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgewogICAgLy8gVE9ETwogICAgU3lzdGVtLm91dC5wcmludGxuKGdndCgzNiw0KSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2d0KDQsMzYpKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihnZ3QoMTk4LDQ0KSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2d0KDIxNSw4NCkpOwogICAgU3lzdGVtLm91dC5wcmludGxuKGdndCgxMDAwLDEwMCkpOyAgICAKICB9Cn0=

Test. Ausführung von make (Linux, Mac) oder makew (Windows) und run. (websh index 0)
Type help or hit TAB for a list of commands.


Hilfe



Created by the NoteBook Compiler Ver. 1.40.1 (c) Dr. Stefan Bosse (Sat Nov 08 2025 19:43:10 GMT+0100 (Central European Standard Time))