Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
de:modul:m307:learningunits:lu01:aufgaben:03 [2026/02/10 09:02] (aktuell) – [Hinweise] vdemir
Zeile 1: Zeile 1:
 +====== LU01.A03 - myBubbleSort ======
  
 +===== Rahmenbedingungen =====
 +  * Sozialform: Einzelarbeit
 +  * Hilfsmittel: Openbooks
 +  * Zeit: 45 Minuten
 +  * Erwartetes Resultat: JavaScript-File, das eine Reihe von Zahlen und Buchstaben der Reihen nach, aufsteigend oder absteigend, sortieren kann.
 +===== Hinweise =====
 +Wichtig bei der Umsetzung Ihrer Lösung ist, dass sie nach best-practise programmieren. Konkret heisst das: 
 +  * Ihr Script, sowie die verwendeten Subroutinen (Funktionen, Methoden) müssen ei-nen Header haben: Autor, Datum, Angaben zur Input-, und Output-Parameter, eine kurze Beschreibung zum Verhalten der Funktion.  
 +  * Bei fehlenden Parametern wird die eingebende Person entsprechend über das HTML-Formular oder der Kommandozeile informiert.
 +  * Verwenden Sie die unbedingt die passenden Datentypen (primitive oder komplexe).
 +  * Verwenden Sie keine JS-Bibliotheken, sondern programmieren Sie alle relevanten Funktionen selbst. Letztendlich ist das das eigentliche Ziel dieser Übung.
 +  * Aus Gründen der Datenkapselung und der umsichtigen Programmierung realisieren sie Ihre Funktionen ausschliesslich mit Inputparameter und Return-Values. Es wird also möglichst nicht auf globale Werte innerhalb der Methoden zugegriffen.
 +  * Die für die Berechnung benötigten Werte können über Commandline, als Variable oder über ein simples HTML-Formular eingegeben werden.
 +  * Verschwenden Sie keine Zeit in eine //schöne“ Oberflächengestaltung//, weil es aktuell um Programmier-Praxis, und nicht um Gestaltung geht.
 +
 +===== Auftrag =====
 +Sortierungen finden wir überall in unserem Alltag. Beispielsweise sind unsere Kontakte alphabetisch sortiert, in der Regel aufsteigend. Der **BubbleSort-Algorithmus** ist ein solcher Sortieralgorithmus, der sehr gut zu Schulungszwecken verwendet werden kann. 
 +
 +[[https://studyflix.de/informatik/bubblesort-1325|Studyflix: Bubblesort]]
 +
 +[[https://studyflix.de/informatik/bubblesort-klausuraufgabe-1684|Bubblesort-Aufgabe]]
 +
 +Nachfolgend finden Sie die Struktogramme von zwei Varianten des Sortier-Algorithmus
 +
 +==== Teilauftrag 1: Statisch =====
 +In zwei FOR-Schleifen wird ein unsortiertes Array eine feste Anzahl mal durchlaufen. Die Anzahl der Schleifendurchlaeufe ist abhaengig von der Anzahl unsortierter Array-Elemente.
 +
 +{{:de:modul:m307:learningunits:lu01:aufgaben:bubblesortv1.gif?400|Bubblesort Variante 1 - Statisch}}
 +
 +
 +==== Teilauftrag 2: Flag =====
 +Variante 2 arbeitet intelligenter als die Variante 1. Mittels eines //Flag// (Ampel) wird bei jedem Durchlauf des Arrays ermittelt, ob die korrekte Sortierung vorliegt. Falls nicht wird ein weiterer Durchlauf gestartet.
 +
 +{{:de:modul:m307:learningunits:lu01:aufgaben:bubblesortv2.gif?400|Variante 2 mit Fertig-Flag}}
 +  
 +
 +==== Teilauftrag 3: Benchmarking =====
 +Um die Effizienz der Vertauschungen beider Varianten miteinander vergleichen zu können, brauchen wir eine Art //Benchmarking//, also einen Tausch- und einen Schleifen-Zähler, welche an der passenden Stelle im Code eingefügt werden müssen. 
 +  - Der Tausch-Zähler wird inkrementiert (hochgezählt), sobald zwei Zahlen vertauscht werden mussten, weil Sie in der falschen Reihenfolge vorlagen. 
 +  - Der Schleifenzähler wird in der inneren Schleife gesetzt, sodass der die Anzahl Schleifen-Durchläufe mitzählt.
 +
 +
 +==== Teilauftrag 4: Wahlweise Auf- oder absteigend sortiert =====
 +Passen Sie Ihre Algorithmen so an, sodass die beim Funktionsaufruf festelegen können, ob auf oder absteigend sortiert werden muss. Dazu müssen Sie einen zusätzlichen Parameter mitgegen.
 +
 +===== Lösungen =====
 +[[de:modul:m307:learningunits:lu01:Lösungen:02|LU01.L03]]
 +
 +
 +
 +----
 +[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Volkan Demir