Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen

Größe: px
Ab Seite anzeigen:

Download "Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen"

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:

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

Mehr

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

Windows, 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:

Mehr

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;

uses 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;

Mehr

GK Informatik /08 (bumue) Klausur

GK 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.

Mehr

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mmanager, mausgabe, morderedlist, mereignis, mauto;

uses 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;

Mehr

Schriftliche Reifeprüfung aus INFORMATIK: Klasse 8D Haupttermin 2002/03

Schriftliche 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 =

Mehr

Delphi Grundkurs Seite 31

Delphi 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)

Mehr

6. Grafikprogrammierung

6. 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

Mehr

Komponente NumEdit für Delphi 5.0

Komponente 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

Mehr

Musterlösungen zu den RSA-Arbeitsblättern

Musterlö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

Mehr

Programmierung mit Delphi

Programmierung mit Delphi Programmierung mit Delphi Programmierung Kommunikation Mensch Maschine Komponente Attribute Formular Größe, Farbe, Schaltflächen,... Label Beschriftung (Caption),... Edit... Button... Quellcode Anweisungen

Mehr

12. Fachseminar Informatik Martin Jakobs Zustandsorientierte Modellierung (Standard 2)

12. 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

Mehr

Materialien 1: Java-Quelltext zu Beispiel 1

Materialien 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 //

Mehr

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?

Delphi 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

Mehr

AUFGABE 3: GUTE STUBE

AUFGABE 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

Mehr

Delphi eine Einführung

Delphi 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

Mehr

Komponente QPortUSB für Delphi 2006

Komponente 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

Mehr

Programmierung in Delphi

Programmierung 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:

Mehr

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Ursprü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

Mehr

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Die 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

Mehr

Institut 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 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

Mehr

FRIEDRICHSHAFEN. Konstruktion einer Apparatur zur Erstellung von Wärmebildern. ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht

FRIEDRICHSHAFEN. 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

Mehr

DELPHI 03 SIEBEN ÜBUNGSPROGRAMME. Herbert Paukert

DELPHI 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 Ü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

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

UE 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

Mehr

Informatik Programmieren 6.Klasse

Informatik 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

Mehr

Komponente PortIO für Delphi 5.0

Komponente 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

Mehr

Programmieren in C. Strukturen und Zeiger. Prof. Dr. Nikolaus Wulff

Programmieren 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

Mehr

Informatik II, SS 2016

Informatik 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

Mehr

Sortieren. Eine Testmenge erstellen

Sortieren. 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

Mehr

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n

in 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

Mehr

Workshop 1 Idealgewicht, Version 1 Starten Sie Delphi. Erstellen Sie ein Formular, das ungefähr so aussieht wie die folgende Abbildung:

Workshop 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

Mehr

Sortieralgorithmen OOPM, Ralf Lämmel

Sortieralgorithmen 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

Mehr

LWB VIII. Programmieren mit Delphi Zur Laufzeit verwaltete Objekte. Zur Laufzeit verwaltete Objekte. Am Beispiel des bekannten Memory-Spieles

LWB 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

Mehr

EINFACH. Programmier-Grundkurs. Rosa Mistelbauer

EINFACH. 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

Mehr

Syntax der Sprache PASCAL

Syntax 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 +

Mehr

jetzt 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 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

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu 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

Mehr

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am

Kurs 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

Mehr

8.6 Visualisierung der Sortieralgorithmen

8.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

= 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

Mehr

INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt.

INSERTION-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 Ü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

Mehr

Komponente PortUSB für Delphi 5.0

Komponente 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...

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 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 Ü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

Mehr

Informatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto

Informatik 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:

Mehr

Mastermind. objektorientiert, mit Delphi. Patrick Breuer. November Spielbeschreibung 1. 3 Ein erstes Klassendiagramm 1.

Mastermind. 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

Mehr

Kurs 1613 Einführung in die imperative Programmierung Lösungen der Aufgaben zum Studientag

Kurs 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;

Mehr

Lösungen zu den Übungsaufgaben zu Feldern

Lö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);

Mehr

Ein Softwareprojekt mit Delphi

Ein 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

Mehr

Aufgabe (Schreibtischtest, lexikographische Ordnung)

Aufgabe (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

Mehr

Lisston. Dokumentation von Peter Munk

Lisston. 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

Mehr

Einfache Sortierverfahren in Java, 1. Version

Einfache 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

Mehr

tdaten=record name : string; alter: integer; groesse:real; end;

tdaten=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-

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse 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,

Mehr

Suchen und Sortieren Sortieren. Mergesort

Suchen 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

Mehr

Mergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie

Mergesort. 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.

Mehr

Einfache Sortierverfahren in Java, 2. Version

Einfache 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

Mehr

Wie schreibe ich ein Programmierstils in Deutschland

Wie 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 Ü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)

Mehr

Copyright, Page 1 of 7 Heapsort

Copyright, 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Android-Apps Gegenüberstellung Delphi java

Android-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

Mehr

Java. public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; Java

Java. 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

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort 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. 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

Mehr

INFORMATIK FÜR BIOLOGEN

INFORMATIK 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

Mehr

Grundkonzepte der objektorientierten Programmierung Teil 1

Grundkonzepte 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

Mehr

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Arrays. 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

Mehr

Sachinformation. TButton. TLabel. TMemo

Sachinformation. 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlü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

Mehr

Klausur 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 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

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 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

Mehr

Kurs 1575, Klausur vom , Musterlösung

Kurs 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

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu 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

Mehr

Seite 1. Gliederung und Einordnung. Wiederholung. Unter- und Oberklassen: Beispiel

Seite 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

Mehr

s(x, i) = i h 2 (x), i N 0

s(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,

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. 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

Mehr

Simulation von digitalen Schaltungen

Simulation 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

Mehr

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Formaler. 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

Mehr

Sortieren & Co. KIT Institut für Theoretische Informatik

Sortieren & 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen 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

Mehr

Folienpaket 9 Themenschwerpunkte: Vererbung und Polymorphie /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 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

Mehr

Aspekte objektorientierter Programmierung. mit Delphi

Aspekte 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

Mehr

Reihungen. 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 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

Mehr

Aufgabe 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. 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

Mehr

1 Abstrakte Datentypen

1 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;

Mehr

Kap. 3: Sortieren (3)

Kap. 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 Ü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

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 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

Mehr

Definition der Hilfsprädikate

Definition 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

Mehr

Prof. Dr. Margarita Esponda

Prof. 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

Mehr

Heute. 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. 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

Mehr

TList-Tutorial von Johannes Tränkle

TList-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

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortieralgorithmen. 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