Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen
|
|
- Brigitte Lange
- vor 6 Jahren
- Abrufe
Transkript
1 Thema: Visualisieren von Sortieralgorithmen in Delphi (am Beispiel: Bubblesort und Quicksort) Ziel ist es, eine Animation des Bubblesort- und Quicksort-Algorithmus in Delphi für die Anwung im Unterricht zu programmieren 1. Die Vorgehensschritte der visuellen Umsetzung können mehr oder weniger einfach auf andere Visualisierungsprobleme (Sortieralgorithmen) übertragen werden. Animationen von Sortieralgorithmen gibt es im Internet inzwischen wie Sand am Meer, Animationen, die sich im Unterricht methodisch gut einsetzen lassen, sind jedoch rar. Manko der gängigen Animationen ist die fehle regelbare Geschwindigkeit und das Fehlen eines Einzelschrittmodus, in dem der Schüler 2 Vermutungen über ein zu erwartes Verhalten des Algorithmus im nächsten Sortierschritt treffen und die Vermutungen überprüfen kann. Quicksort beinhaltet hier zudem eine farbliche Visualisierung des Bereichs, auf dem die rekursive Prozedur gerade arbeitet. Im Zentrum steht also eine Benutzeroberfläche, die dem Schüler Einzelschritte der Algorithmen und eine in der Geschwindigkeit regelbare Animation ermöglichen. Auf einen guten Programmierstil wird hier Aufgrund einer gewissen Effizienz verzichtet, da diese Art der Visualisierungen für den Unterricht quick and dirty programmiert ihren Zweck erfüllen und die Schüler/innen nur mit dem Ergebnis, der Visualisierung arbeiten sollen, das Programm also nicht selbst programmieren oder nachprogrammieren müssen. 1) Bubblesort: Das Programm wird wie folgt aussehen: Bei der folgen Vorgehensweise steht die Umwandlung des Sortieralgorithmus in eine als Einzelschritt ausführbare Prozedur im Focus. 1 Minsort kann als Programm geladen werden, wird hier aber nicht zusätzlich aufgearbeitet. 2 Schüler wird in seiner generischen Bedeutung gebraucht. 1
2 Schritt 1: Der klassische Bubblesort: for j := n-1 downto 2 do for i := 1 to j do if a[i] > a[i+1] then vertausche (i, j); Schritt 2: Umwandlung der for-schleifen in while-schleifen j := n; // wegen: while (i < j) while (j > 1) do while (i < j) do if a[i] > a[i+1] then vertausche (i, j); inc (i); dec (j); Schritt 3: Die Schleifensteuerung wird in den Außenbereich der Prozedur Einzelschritt gelegt, i und j werden zu globalen Variablen und in der Prozedur, die das Feld mit Zufallszahlen belegt, initialisiert (kein guter Programmierstil, zugegeben, aber man sollte das Ziel nicht aus den Augen lassen) if (j > 1) then if (i < j) then if a[i] > a[i+1] then vertausche (i, i+1); inc (i); dec (j); procedure FeldErzeugen (Groesse : integer); var k : integer; j := Groesse; 2
3 Damit ist der Algorithmus für den Einsatz fertig. Nachfolg steht der Quelltext der zentralen Prozeduren, hier können weitere Informationen entnommen werden. Quelltext (Auswahl): 1) Die Prozedur zeichne visualisiert einen dem Feldinhalt entsprechen Balken im Zeichenfeld: procedure zeichne (pos : integer; farbe : TColor); Form1.Image1.Canvas.Pen.Width := 5; Form1.Image1.Canvas.Pen.color := farbe; Form1.Image1.Canvas.MoveTo(pos*7,0); Form1.Image1.Canvas.LineTo(pos*7, a[pos]*3); 2) FeldErzeugen belegt ein globales Array mit Zufallszahlen und zeichnet den Inhalt in die Zeichenfläche procedure FeldErzeugen (Groesse : integer); var k : integer; randomize; Form1.Image1.Canvas.Pen.Width := 5; Form1.Image1.Canvas.Pen.color := clwhite; Form1.Image1.Canvas.MoveTo(2,0); Form1.Image1.Canvas.LineTo(2,420); for k := 1 to Groesse do // +++ Feld löschen +++ Form1.Image1.Canvas.Pen.color := clwhite; Form1.Image1.Canvas.MoveTo(k*7,0); Form1.Image1.Canvas.LineTo(k*7,360); // +++ neues Feld erzeugen und zeichnen a[k] := random (120) + 1; zeichne(k, clblack); // Belegung der Laufvariablen j := Groesse; 3) vertausche als Hilfsprozedur zum Vertauschen und neu zeichnen zweier Feldinhalte: procedure vertausche (i, j : integer); var hilf : integer; zeichne (i, clwhite); zeichne (j, clwhite); // i,j vertauschen hilf := a[i]; a[i] := a[j]; a[j] := hilf; // i, j schwarz zeichnen zeichne (j, clred); 4) Die Eingangs erwähnte Prozedur Einzelschritt: if (j > 1) then if (i < j) then if a[i] > a[i+1] then vertausche (i, i+1); inc (i); dec (j); 5) Die Timersteuerung mit TrackBar: procedure TForm1.Timer1Timer(Ser: TObject); Einzelschritt; procedure TForm1.Button3Click(Ser: TObject); if (Timer1.Enabled) then Timer1.Enabled := false; Button1.Enabled := true; Button2.Enabled := true; Timer1.Enabled := true; Button1.Enabled := false; Button2.Enabled := false; procedure TForm1.TrackBar1Change(Ser: TObject); Timer1.Interval := TrackBar1.Position;. 3
4 2) Quicksort: Das Programm wird wie folgt aussehen: Kern der Vorgehensweise ist es, die rekursive Funktion soweit aufzubrechen, dass sie als Einzelschrittprozedur ausgeführt werden kann: Schritt 1: Der klassische Quicksort procedure sortieren (l, r : integer); var i, j : integer; trennwert, hilf : integer; i := l; j := r; trennwert := a[(l+r) div 2]; repeat while a[i] < trennwert do i := i + 1; while trennwert < a[j] do if i <= j then hilf := a[i]; 4
5 a[i] := a[j]; a[j] := hilf; i := i+1; until i>j; if l < j then sortieren (l, j); if i < r then sortieren (i, r); Schritt 2: Die beim rekursiven Aufruf übergebenen Grenzen werden in einer separaten Datenstruktur IntegerQueue abgelegt und beim rekursiven Aufruf wieder entnommen. (Denkbar ist hier auch ein Stack, der aber visuell Nachteile hat.) type TIntegerQueue = class a : array of integer; index : integer; procedure enqueue (wert : integer); function dequeue : integer; function isempty : boolean; constructor create (Feldgroesse : integer); implementation constructor TIntegerQueue.create (Feldgroesse : integer); index := 0; setlength (a, Feldgroesse + 1); procedure TIntegerQueue.enqueue (wert : integer); if index < length(a) then inc(index); a[index] := wert; function TIntegerQueue.dequeue : integer; var i : integer; if not isempty then result := a[1]; dec(index); for i := 1 to index do a[i] := a[i+1]; result := -1; 5
6 function TIntegerQueue.isempty : boolean; result := (index = 0); Schritt 3: Mit den Grenzen des gerade sortierten Feldes als globale Variablen kann der Algorithmus in der Einzelschrittprozedur nun wie folgt umgewetzt werden: if (not fertig) then if GrenzenHolen then l := keller.dequeue; r := keller.dequeue; sortierbereich (l, r, cllime); GrenzenHolen := false; trennwert := a[(l+r) div 2]; i := l; j := r; zeichne (j,clblue); // +++ Schleifen +++ if (i <= j) then //repeat Schleife if (a[i] < trennwert) then zeichne(i, clblack); i := i + 1; if (trennwert < a[j]) then if i <= j then // while Schleife vertauschen (i, j); i := i+1; 6
7 Quelltext: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, unit2, ComCtrls; type TForm1 = class(tform) Button1: TButton; Image1: TImage; Timer1: TTimer; Button2: TButton; Button3: TButton; TrackBar1: TTrackBar; Panel1: TPanel; Panel2: TPanel; Label1: TLabel; procedure Button1Click(Ser: TObject); procedure FormCreate(Ser: TObject); procedure Button2Click(Ser: TObject); procedure Timer1Timer(Ser: TObject); procedure Button3Click(Ser: TObject); procedure TrackBar1Change(Ser: TObject); private { Private-Deklarationen } public { Public-Deklarationen } const n = 100; var Form1: TForm1; a : array [1..n] of integer; keller : TIntegerQueue; // +++ globale Variablen für den Einzelschritt ++ i : integer = 1; j : integer = n; r, l, lauf : integer; trennwert, hilf : integer; fertig, GrenzenHolen : boolean; procedure FeldErzeugen (Groesse : integer); procedure vertauschen (i, j :integer); // graphisch procedure zeichne (pos : integer; farbe : TColor); procedure trennwertmarkieren (i, j : integer); procedure Sortierbereich (m, n : integer; farbe : TColor); implementation {$R *.dfm} procedure zeichne (pos : integer; farbe : TColor); Form1.Image1.Canvas.Pen.Width := 5; Form1.Image1.Canvas.Pen.color := farbe; Form1.Image1.Canvas.MoveTo(pos*7,0); Form1.Image1.Canvas.LineTo(pos*7, a[pos]*3); procedure FeldErzeugen (Groesse : integer); var i : integer; randomize; Form1.Image1.Canvas.Pen.Width := 5; Form1.Image1.Canvas.Pen.color := clwhite; Form1.Image1.Canvas.MoveTo(2,0); Form1.Image1.Canvas.LineTo(2,420); for i := 1 to Groesse do // +++ Feld löschen +++ Form1.Image1.Canvas.Pen.color := clwhite; Form1.Image1.Canvas.MoveTo(i*7,0); Form1.Image1.Canvas.LineTo(i*7,360); // +++ neues Feld erzeugen und zeichnen a[i] := random (120) + 1; zeichne(i, clblack); keller.enqueue(1); keller.enqueue(n); fertig := false; GrenzenHolen := true; procedure vertauschen (i, j : integer); var hilf : integer; zeichne (i, clwhite); zeichne (j, clwhite); // i,j vertauschen hilf := a[i]; a[i] := a[j]; a[j] := hilf; // i, j schwarz zeichnen procedure trennwertmarkieren (i, j : integer); var k : integer; markiert : boolean; markiert := false; for k := j-1 downto i+1 do if (a[k] = trennwert) then //zeichne (k, cllime); markiert := not markiert; break; if ((not markiert) and (i+1 < j)) then if (trennwert = a[i]) then // zeichne (i+1, cllime) // zeichne (j-1, cllime); procedure Sortierbereich (m, n : integer; farbe : TColor); Form1.Image1.Canvas.Pen.Width := 3; 7
8 Form1.Image1.Canvas.Pen.color := farbe; Form1.Image1.Canvas.MoveTo(m*7-4,0); Form1.Image1.Canvas.LineTo(m*7-4, 370); Form1.Image1.Canvas.MoveTo(n*7+4,0); Form1.Image1.Canvas.LineTo(n*7+4, 370); if (not fertig) then if GrenzenHolen then l := keller.dequeue; r := keller.dequeue; sortierbereich (l, r, cllime); GrenzenHolen := false; trennwert := a[(l+r) div 2]; i := l; j := r; zeichne (j,clblue); // +++ Schleifen +++ if (i <= j) then //repeat Schleife if (a[i] < trennwert) then zeichne(i, clblack); i := i + 1; if (trennwert < a[j]) then if i <= j then // while Schleife vertauschen (i, j); i := i+1; // +++ "rekursiver Aufruf" +++ if (i > j) then if (i < r) then keller.enqueue(i); keller.enqueue(r); if l < j then keller.enqueue (l); keller.enqueue(j); GrenzenHolen := true; sortierbereich (l, r, clwhite); // procedure Einzelschritt // +++ ButtonClick Methode +++ procedure TForm1.Button1Click(Ser: TObject); unit1.felderzeugen(n); Button2.Enabled := true; Button3.Enabled := true; procedure TForm1.Button2Click(Ser: TObject); Einzelschritt; // +++ Form Create +++ procedure TForm1.FormCreate(Ser: TObject); Image1.Canvas.Brush.Color := clwhite; Form1.Image1.Canvas.Pen.Width:= 5; keller := TIntegerQueue.Create(n); Felderzeugen (n); procedure TForm1.Timer1Timer(Ser: TObject); Einzelschritt; procedure TForm1.Button3Click(Ser: TObject); if (Timer1.Enabled) then Timer1.Enabled := false; Button1.Enabled := true; Button2.Enabled := true; Timer1.Enabled := true; Button1.Enabled := false; Button2.Enabled := false; procedure TForm1.TrackBar1Change(Ser: TObject); Timer1.Interval := TrackBar1.Position;. 8
9 unit Unit2; interface type TIntegerQueue = class a : array of integer; index : integer; procedure enqueue (wert : integer); function dequeue : integer; function isempty : boolean; constructor create (Feldgroesse : integer); implementation constructor TIntegerQueue.create (Feldgroesse : integer); index := 0; setlength (a, Feldgroesse + 1); procedure TIntegerQueue.enqueue (wert : integer); if index < length(a) then inc(index); a[index] := wert; function TIntegerQueue.dequeue : integer; var i : integer; if not isempty then result := a[1]; dec(index); for i := 1 to index do a[i] := a[i+1]; result := -1; function TIntegerQueue.isempty : boolean; result := (index = 0);. 9
Name. Aufgabe 1) Zur Erinnerung:
Aufgabe 1) Pick it up heißt das kleine Spiel, das mit Hilfe eines DELPHI-Projekts simuliert wurde. (s.anlage!) a) Analysiere das Projekt und beschreibe, was in dem Spiel geschieht. Kommentiere die einzelnen
MehrWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
unit sudoku; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TCvD_Sudoku = class(tform) Panel1: TPanel; Bevel1: TBevel; Bevel2:
Mehruses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;
unit madressliste; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist; type TMain = class(tform) Panel1: TPanel;
MehrGK Informatik /08 (bumue) Klausur
Aufgabe 1) Ein kleines DELPHI-Projekt soll ein Mini-Bingo Spiel simulieren. Dafür werden zuerst zufällig 5 verschiedene Würfelzahlen (zwischen 1 und 6) erwürfelt und in einem String-Grid nacheinander abgelegt.
Mehruses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mmanager, mausgabe, morderedlist, mereignis, mauto;
unit mcarwash8; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mmanager, mausgabe, morderedlist, mereignis, mauto; type Tmain = class(tform) btlos: TButton;
MehrSchriftliche Reifeprüfung aus INFORMATIK: Klasse 8D Haupttermin 2002/03
Schriftliche Reifeprüfung aus INFMATIK: Klasse 8D Haupttermin 2002/03 Name: 1. Programmieraufgabe: DELPHI a) Schreibe ein Delphi-Projekt CHARxxxx.DPR, das folgende Zeichenketten erzeugt: S 1 = A, S 2 =
MehrDelphi Grundkurs Seite 31
Delphi Grundkurs Seite 31 Beispiel 9 Notenanalyse Problem: Programm P09 Schulnoten in Editfeld eingeben: bei wird Text in Zahl x umgewandelt; Bei Eingabefehler (x < 1 oder x > 5 oder x nicht numerisch)
Mehr6. Grafikprogrammierung
Delphi Grundkurs Seite 49 6. Grafikprogrammierung Die Grafikoperationen beziehen sich immer auf die Zeichenoberfläche (Leinwand, Canvas) eines bestimmten Objekts. (0,0) des Formulars Image - Komponentenpalette
MehrKomponente NumEdit für Delphi 5.0
Komponente NumEdit für Delphi 5.0 NumEdit Handbuch Seite 1 von 9 INHALTSVERZEICHNIS Komponente NumEdit... 4 Private Funktion... 5 Protected Funktion... 5 Public Funktion... 6 Published Funktion... 6 Kompnenten
MehrMusterlösungen zu den RSA-Arbeitsblättern
Musterlösungen zu den RSA-Arbeitsblättern Arbeitsblatt 01: Aufgabe 1: a) 1 Uhr. b) 13 Uhr. Aufgabe 2: a) 21. b) 19. c) 48. d) 19. Aufgabe 3: a) 9. b) 7. Aufgabe 4: a) 13. b) 7. Arbeitsblatt 02: Aufgabe
MehrProgrammierung mit Delphi
Programmierung mit Delphi Programmierung Kommunikation Mensch Maschine Komponente Attribute Formular Größe, Farbe, Schaltflächen,... Label Beschriftung (Caption),... Edit... Button... Quellcode Anweisungen
Mehr12. Fachseminar Informatik Martin Jakobs Zustandsorientierte Modellierung (Standard 2)
Ergebnisse der Seminarsitzung vom 14. Januar 2008 Definition 1 Ein ist eine struktur- und verhaltenstreue Beschreibung eines eistierenden oder geplanten Sstems. Definition 2 Ein ist eine vereinfachte Nachbildung
MehrMaterialien 1: Java-Quelltext zu Beispiel 1
Materialien zu Beispiel 1 132 Materialien 1: Java-Quelltext zu Beispiel 1 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 exts Applet implements ActionListener //
MehrDelphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?
Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL? Von Padmalcom (20.03.2009) www.jofre.de Nach dem Tutorial 1 von Leonardo M. Ramé 1 Ja, es geht wirklich! Im Internet sind tausende Forenbeinträge
MehrAUFGABE 3: GUTE STUBE
63.01 Viktor Krückl Seite 3.1 AUFGABE 3: GUTE STUBE Lösungsidee und Programmdokumentation: Das herausfiltern der relevanten Wörter aus einer Zeile mache ich so. Ich speichere in der Menge stopper alle
MehrDelphi eine Einführung
Delphi eine Einführung 1. Die Entwicklungsumgebung Delphi ist ein sogenanntes RAD Werkzeug. RAD = Rapid Application Development = schnelle Anwendungsentwicklung Merkmale: - es gibt vorgefertigte Komponenten
MehrKomponente QPortUSB für Delphi 2006
Komponente QPortUSB für Delphi 2006 QPortUSB Handbuch Seite 1 von 20 INHALTSVERZEICHNIS Komponente...1 QPortUSB...1 für Delphi 2006...1 Allgemeines Nutzung und Gewährleistung...5 Installation...6 Start
MehrProgrammierung in Delphi
Berufsbildende Schule Wirtschaft Trier Programmierung in Delphi (Einführung in die IDE) Unterrichtsmaterialien von Christoph Oberweis Stand: 13.11.2011 1 Einführung in die Delphi-Programmierung Delphi-Entwicklungssystem
Mehr# % & & % # # % % & (
# % & & % # # % % & ( ) +! ! # # % # #&! () () +,!. /))0))) # 1 /))0))) 0 +213 0 4 5 6)78 9,)78 /1: ; 9 +:)) ; 6) 9 +,) 4 # 4 # 1 # 1 % #&! 0 ! < #!! 0! = > # %!? 1 1! 1 1 1 1 5 Α 6)1) 78,)1) 78 Α /1:
MehrUrsprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrDie Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp
Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert
MehrInstitut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache
Institut für Informatik Christian-Albrechts-Universität zu Kiel Borland Delphi Einführung in die Programmiersprache Geschichte Objective Pascal objektorienterte Programmiersprache Rapid Development schweizer
MehrFRIEDRICHSHAFEN. Konstruktion einer Apparatur zur Erstellung von Wärmebildern. ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht
ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht FRIEDRICHSHAFEN Konstruktion einer Apparatur zur Erstellung von Wärmebildern Philip Zimmermann Schule: Alexander-von-Humboldt-Gymnasium
MehrDELPHI 03 SIEBEN ÜBUNGSPROGRAMME. Herbert Paukert
Herbert Paukert: Programmieren in DELPHI Grundkurs, Teil 3 41 DELPHI 03 SIEBEN ÜBUNGSPROGRAMME Herbert Paukert [3.01] Quadratische Gleichungen "quagl" (- 42 -) [3.02] Die Statistik von Schulnoten "noten"
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrUE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
MehrInformatik Programmieren 6.Klasse
Informatik Programmieren 6.Klasse Inhalt 1. Datentypen... 1 1.1. Grundlegenden Datentypen in Delphi:... 2 1.2. Deklaration... 2 1.3. Globale Variablen... 2 1.4. Lokale Variablen... 3 1.5. Initialisierung/Zuweiseung
MehrKomponente PortIO für Delphi 5.0
Komponente PortIO für Delphi 5.0 PortIO Handbuch Seite 1 von 12 INHALTSVERZEICHNIS Komponente PortIO... 4 Private Funktion... 5 Protected Funktion... 6 Public Funktion... 7 Published Funktion... 8 Kompnenten
MehrProgrammieren in C. Strukturen und Zeiger. Prof. Dr. Nikolaus Wulff
Programmieren in C Strukturen und Zeiger Prof. Dr. Nikolaus Wulff Sortieren Im Praktikum wurde ein Modul zum Sortieren entwickelt. Es enthält verschiedene Sortieralgorithmen, die ausgewählt und erweitert
MehrInformatik II, SS 2016
Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm
MehrSortieren. Eine Testmenge erstellen
Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten
Mehrin eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n
6. Sortieren Umordnen von Objekten a in eine Folge ai,..., ai n, so daß bezgl. einer Ordnung gilt: a a, j < n Begriffe: ij i j + ) Stabilität : Ein Sortierverfahren heißt stabil, falls die relative Reihenfolge
MehrWorkshop 1 Idealgewicht, Version 1 Starten Sie Delphi. Erstellen Sie ein Formular, das ungefähr so aussieht wie die folgende Abbildung:
3. IDEALGEWICHT Kurz zum Ziel dieses Abschnitts: Wir wollen ein Programm schreiben, welches das Idealgewicht des Benutzers aus der Körpergröße und dem Geschlecht berechnet. Workshop 1 Idealgewicht, Version
MehrSortieralgorithmen OOPM, Ralf Lämmel
Unterhaltet Euch mal mit Euren Großeltern wie Sortieren früher funktionierte! Sortieralgorithmen OOPM, Ralf Lämmel 230 Eine unsortierte Liste 7 3 2 5 2 3 5 7 Die sortierte Liste 231 Wiederholung: Das Problem
MehrLWB VIII. Programmieren mit Delphi Zur Laufzeit verwaltete Objekte. Zur Laufzeit verwaltete Objekte. Am Beispiel des bekannten Memory-Spieles
Am Beispiel des bekannten Memory-Spieles Warum Spiele? fragen Sie. Ich antworte: um die Kunst der Erfindung zu vervollkommnen. (Leibniz) Mit seinen einfachen und unzweideutigen Regeln ist ein Spiel immer
MehrEINFACH. Programmier-Grundkurs. Rosa Mistelbauer
EINFACH Programmier-Grundkurs Rosa Mistelbauer Inhaltsverzeichnis Delphi Grundkurs Grundlagen 01 Entwicklungsumgebung von DELPHI 02 Beispiel 01 Begrüßung 04 Beispiel 02 Halbieren einer ganzen Zahl 07 Beispiel
MehrSyntax der Sprache PASCAL
Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +
Mehrjetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER
jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER KAPITEL 3 Grundsätzliches zu Object-Pascal jetzt lerne ich Für jede Programmiersprache
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrKurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am
1 Lösung 1 ( 4+4 Punkte) a) procedure VerschiebeZyklisch ( iofeld : tfeld); { verschiebt die Werte innerhalb eines Feldes eine Position nach rechts; der Wert iofeld[max] wird nach iofeld[1] übertragen
Mehr8.6 Visualisierung der Sortieralgorithmen
8.6 Visualisierung der Sortieralgorithmen 8.6.1 Problemstellung Schauen Sie sich den folgenden Quelltext eines Java-Applets an: import java.awt.*; import javax.swing.*; import java.awt.event.*; public
Mehr= a) Berechnen Sie die fehlenden Funktionswerte der Wertetabelle. n
Info 12 IF1 GK (GA) Bearbeitungszeit: 135 min Seite 1 Aufgabe 1: rekursive Funktionen Die Hofstadter-Funktion ist definiert durch: hof ( n hof ( n 1)) + hof ( n hof ( n 2)) hof ( n) = 1 a) Berechnen Sie
MehrINSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt.
Aufgabe 1 INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt. QUICK-SORT: Hängt davon ab ob PARTITION stabil ist. MERGE-SORT: Ja, Splitten, sowie Mergen ist stabil.
MehrÜbung Datenstrukturen. Sortieren
Übung Datenstrukturen Sortieren Aufgabe 1 Gegeben sei nebenstehender Sortieralgorithmus für ein Feld a[] ganzer Zahlen mit N Elementen: a) Um welches Sortierverfahren handelt es sich? b) Geben Sie möglichst
MehrKomponente PortUSB für Delphi 5.0
Komponente PortUSB für Delphi 5.0 Funktion nur mit der P8055-1 Karte von der Firma Velleman. PortUSB Handbuch Seite 1 von 1 INHALTSVERZEICHNIS Komponente PortUSB für Delphi 5.0... 1 Komponente PortUSB...
MehrKurs 1613 Einführung in die imperative Programmierung
Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { Programm sortiert das Eingabefeld iofeld aufsteigend var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1;
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
MehrInformatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto
programmieren in Delphi am Beispiel der konkreten Klasse Auto Auto -Baujahr -Typ -Besitzer -Farbe -Kilometerstand -Fahren() -Bremsen() Objekt1: Auto Typ: Golf Baujahr: 1998 Besitzer: Peter Farbe: rot Kilometerstand:
MehrMastermind. objektorientiert, mit Delphi. Patrick Breuer. November Spielbeschreibung 1. 3 Ein erstes Klassendiagramm 1.
Mastermind objektorientiert, mit Delphi Patrick Breuer November 2006 Inhaltsverzeichnis 1 Spielbeschreibung 1 2 Die Benutzeroberfläche (GUI) 1 3 Ein erstes Klassendiagramm 1 4 GUI mit Komponenten Arrays
MehrKurs 1613 Einführung in die imperative Programmierung Lösungen der Aufgaben zum Studientag
Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { Programm sortiert das Eingabefeld iofeld aufsteigend var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1;
MehrLösungen zu den Übungsaufgaben zu Feldern
Lösungen zu den Übungsaufgaben zu Feldern Aufgabe 1: Punktberechnung procedure TForm1.Button1Click(Ser: TObject); punkt = array[1..3] of double; d, p, q: punkt; abstand: double; // Eingabe p[1]:= StrToFloat(Edit1.Text);
MehrEin Softwareprojekt mit Delphi
IFB-Veranstaltung : OOP mit Delphi II U.Mayr : Turing-Simulator Ein Softwareprojekt mit Delphi Turing-Simulator, ein Softwareprojekt mit Delphi S. 2 Inhaltsverzeichnis 1. Ein Softwareprojekt : Die Simulation
MehrAufgabe (Schreibtischtest, lexikographische Ordnung)
Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem
MehrLisston. Dokumentation von Peter Munk
Lisston Dokumentation von Peter Munk 2003-2004 Inhaltsverzeichnis: Seite Kapitel 1 - Einleitung... 3 1.1 Was ist Lisston?... 3 1.2 Was bedeutet Lisston?... 3 1.3 Was kann Lisston leisten?... 3 1.4 Schematischer
MehrEinfache Sortierverfahren in Java, 1. Version
Einfache Sortierverfahren in Java, 1. Version http://www.r-krell.de 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
Mehrtdaten=record name : string; alter: integer; groesse:real; end;
tdaten=record - Zugriff auf Felder (name, alter, groesse) über externe Methoden, die für jede Unit und jede Variable dieses Records neu geschrieben werden müssen - Zugriff nicht kontrollierbar (immer Schreib-
MehrComputergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2
Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,
MehrSuchen und Sortieren Sortieren. Mergesort
Suchen und Mergesort (Folie 142, Seite 55 im Skript) Algorithmus procedure mergesort(l, r) : if l r then return fi; m := (r + l)/2 ; mergesort(l, m 1); mergesort(m, r); i := l; j := m; k := l; while k
MehrMergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie
Mergesort aus Wikipedia, der freien Enzyklopädie Mergesort ist ein rekursiver, stabiler Sortieralgorithmus, der ähnlich wie Quicksort nach dem Prinzip Teile und herrsche (engl. Divide and conquer) arbeitet.
MehrEinfache Sortierverfahren in Java, 2. Version
Einfache Sortierverfahren in Java, 2. Version http://www.r-krell.de Datei IntSortReihe2.java 1 // Verschiedene einfache Sortierverfahren + BucketSort 2 // Der (Zeit-)Aufwand nimmt mit (reihung.length)^2
MehrWie schreibe ich ein Programmierstils in Deutschland
1 Wintersemester 2006/2007 Hinweise zur Bearbeitung der Klausur zum Wir begrüßen Sie zur Klausur "Einführung in die imperative Programmierung". Lesen Sie sich diese Hinweise vollständig und aufmerksam
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
MehrCopyright, Page 1 of 7 Heapsort
www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
MehrAndroid-Apps Gegenüberstellung Delphi java
Android-Apps Gegenüberstellung 2/9 Grundsätzliches etc. Groß-/Kleinschreibung egal sensitiv! Zuweisung := = Kommentare // // { } /* */ Zeichenkettenbegrenzer: 'text' "text" Inkrementieren / Dekrementieren
MehrJava. public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; Java
Einführung Elementare Datenstrukturen (Folie 27, Seite 15 im Skript) Java Java public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; } protected Listnode K, D findnode(k
MehrQuicksort ist ein Divide-and-Conquer-Verfahren.
. Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.
MehrÜbung: Quicksort. Erster Schritt zu Quicksort: Felder "partitionieren"
Übung: Quicksort In der Vorlesung haben wir zum Sortieren die Prozedur mergesort kennen gelernt. Heute besprechen wir einen weiteren berühmten Sortieralgorithmus: quicksort Im Gegensatz zu mergesort, lässt
MehrINFORMATIK FÜR BIOLOGEN
Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie
MehrGrundkonzepte der objektorientierten Programmierung Teil 1
Grundkonzepte der objektorientierten Programmierung Teil 1 2 Objektorientierte Modellierung 1 2 1$ 3 4 5 6 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Miniwelt Modell System 3 Warum Objektorientierung? These: Marktreife
MehrArrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss
Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei
MehrSachinformation. TButton. TLabel. TMemo
Sachinformation Oft fehlt es im Informatik-Unterricht an kurzen, zielgerichteten Aufgaben (Übungsaufgaben), mit denen Schüler/innen den Umgang mit den grundlegenden Konzepten der Objektorientierung (auch
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrKlausur zu Grundlagen der Informatik I mit Lösungen 28. Februar 2005 (WS 2004/2005) Dr. Andreas F. Borchert Norbert Heidenbluth
Klausur zu Grundlagen der Informatik I mit Lösungen 28. Februar 2005 (WS 2004/2005) Dr. Andreas F. Borchert Norbert Heidenbluth A Nr Max Bewertung 1 14 2 12 3 14 4 12 5 12 6 12 7 12 8 12 Summe 100 Klausur
MehrKurs 1613 Einführung in die imperative Programmierung
1 Wintersemester 2003/2004 Hinweise zur Bearbeitung der Klausur zum Wir begrüßen Sie zur Klausur "Einführung in die imperative Programmierung". Lesen Sie sich diese Hinweise vollständig und aufmerksam
MehrKurs 1575, Klausur vom , Musterlösung
Aufgabe 1: Schleife, Fallunterscheidung (CASE) Schreiben Sie ein Programm, das eine positive ganze Zahl (im Gültigkeitsbereich von integer) einliest und ihre Ziffern in umgekehrter Reihenfolge als Text
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrSeite 1. Gliederung und Einordnung. Wiederholung. Unter- und Oberklassen: Beispiel
Gliederung und Einordnung 1.Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel
Mehrs(x, i) = i h 2 (x), i N 0
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 5 Prof. Dr. Helmut Seidl, S. Pott,
MehrReihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende
MehrSimulation von digitalen Schaltungen
Eckart Modrow Simulation von digitalen Schaltungen S. 1 Simulation von digitalen Schaltungen Inhalt: 1. Bezug zum Unterricht 2. Funktionsumfang des Simulators HASI 3. Klassenhierarchien 4. Die Erzeugung
MehrFormaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '
Sortieren & Co 164 165 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' 166 Anwendungsbeispiele Allgemein: Vorverarbeitung
MehrSortieren & Co. KIT Institut für Theoretische Informatik
Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung
MehrAlgorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
MehrFolienpaket 9 Themenschwerpunkte: Vererbung und Polymorphie /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Folienpaket 9 Themenschwerpunkte: Vererbung und Polymorphie 374 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Prinzipien der OOP Prinzip der Abstraktion Nach außen ist nur sichtbar, was ein Objekt
MehrAspekte objektorientierter Programmierung. mit Delphi
IFB-Veranstaltungen : 19.657 / 19.666A und weitere Von Pascal nach Delphi Aspekte objektorientierter Programmierung mit Delphi Ulrich Mayr, Trier Inhaltsverzeichnis OOP-Konzepte von Delphi verstehen und
MehrReihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang
Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen
MehrAufgabe 1: Weitere Aufgaben aus dem Buch 1. Bearbeiten Sie die Aufgaben 8.2, 8.5 und 8.6 zum DoME Beispiel.
Aufgabe 1: Weitere Aufgaben aus dem Buch 1. Bearbeiten Sie die Aufgaben 8.2, 8.5 und 8.6 zum DoME Beispiel. 8.2: CD: Zeitgeist (65 mins) Schiller tracks: 13 super CD :) 8.5: Es können nun Methoden von
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrKap. 3: Sortieren (3)
Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
MehrGliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
MehrDefinition der Hilfsprädikate
Denition der Hilfsprädikate fct sorted = (seq nat s) bool: if #s < 2 then true else rst(s) rst(rest(s)) sorted(rest(s)) a s = ( nat k: k#a = k#s) mit k# = 0 k# j s = if k == j then 1+ k#s else k#s 1 Annotierte
MehrProf. Dr. Margarita Esponda
Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
MehrTList-Tutorial von Johannes Tränkle
TList-Tutorial von Johannes Tränkle Einleitung Herzlich willkommen bei meinem kleinen Listentutorial. Das Tutorial soll euch TList ein klein wenig näher bringen und euch zeigen, wie ihr TList sinnvoll
MehrSortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2
Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen
Mehr