Fachhochschule Regensburg Algorithmen und Datenstrukturen Begriffsklärung, Darstellung, Programmierung 1. Übungsblatt Algorithmen und Datenstrukturen Name: ________________________ Lehrbeauftragter: Prof. Sauer Vorname: _____________________ 1. Was können Sie über den Begriff Algorithmus aussagen? _______________________________ ________________________________________________________________________________ ________________________________________________________________________________ 2. Wie kann man Algorithmen allgemein beschreiben 1 ? Allgemein kann man Algorithmen als Vorschrift zur Ausführung einer Tätigkeit charakterisieren. 3. Welche Algorithmen sind Ihnen bekannt? Suchen, Sortieren, Berechnung kürzester Pfade, Textsuchalgorithmen 4. Mit welcher Programmiersprache haben Sie Algorithmen implementiert?____________________ 5. Welche Problemlösungstechniken der EDV kennen Sie? Divide and Conquer, vollständige Aufzählung (Enumeration), Backtracking, … 6. Welche Sprachen zur Formulierung von Algorithmen sind Ihnen bekannt? Natürliche Sprache, Flussdiagramme, algorithmische Sprache, formale Sprachen, Programmiersprachen 7. Was versteht man unter dem Begriff Algorithmenparadigma? Denkmuster, die einer Beschreibung eines Algorithmus zugrunde liegen 8. Welche Bausteine für den Aufbau von Algorithmen kennen Sie? Gib diese elementaren Bausteine für Algorithmenbeschreibungen an! Elementare Operation, Sequentielle Ausführung, Parallele Ausführung, Bedingte Ausführung, Scheifen, Unterprogramme, Rekursion 9. Welche Rolle spielen Datentypen im Zusammenhang mit Algorithmen? Die ausführbaren elementaren Schritte eines auf Rechnern ablaufenden Algorithmus basieren meistens auf Grundoperationen eines Datentyps 10. Was können Datentypen sein? Datentypen können einfacher Art sein (ganze oder reele Zahlen, 1 Skriptum Algorithmen und Datenstrukturen, SS 08, 1.1 1 logische Werte, Zeichen) oder Datentypen können zusammengesetzt sein (komplex) bzw. strukturiert sein (Felder, Zeichenfolgen, Strukturen) 10. Was legt demnach ein Datentyp fest? Ein Datentyp legt die Art der gespeicherten Information und deren Auswertemöglichkeit fest. 11. Welche Datenstrukturen sind Ihnen bekannt? Listen, Stapel, Schlangen, Bäume, Hash-Tabellen 12. Was verstehen Sie unter dem Begriff „komplexe“ Datenstruktur? Eine komplexe Datenstruktur ist ein Datentyp, der gleiche oder verschiedene elementare Datentypen (als Elemente der Datenstruktur) nach strukturellen Aspekten bzw. Prinzipien zusammenfasst 13. Was sind komplexe Datentypen? Komplexe Datentypen, sog. Datenstrukturen, werden durch Kombination primitiver Datentypen gebildet. Sie besitzen spezifische Operationen. 14. Wie werden komplexe Datenstrukturen unterschieden? Über das Anwendungsspektrum wird unterschieden: - generische Datentypen: Werden für eine Gruppe ähnlicher Problemstellungen entworfen und sind oft im Sprachumfang bzw. in Bibliotheken einer Programmiersprache enthalten Felder, Listen, Keller, Schlange, Verzeichnis, … - spezifische Datentypen: Dienen zur Lösung einer eng umschriebenen Problemstellung und werden im Zusammenhang mit einem konkreten Problem definiert. 15. Welcher Datentyp wird der „Sequenz“ zugeordnet? Als Sequenz bezeichnet man komplexe Datenstrukturen, die einfach eine Folge von Elementen bzw. Objekten darstellen. Im Gegensatz zur Liste ist die Referenzierung zwischen den Elementen bzw. Knoten nicht explizit definiert, sondern bspw. über einen Index oder eine Folgeschrift allgemein spezifiziert. Die Datei bzw. das File ist eine typische Form der Sequenz 16 Gegeben ist in Pseudocode-Darstellung ein Algorithmus: „Finden des größten Elements in einem Feld (Array) Algorithmus arrayMax(a,n) Input array a mit n Ganzzahlen Output größtes Element von a currentMax = a[0] for i = 1 to n-1 do 2 if a[i] > currentMax then currentMax = a[i] return currenMax Gib zu diesem Algorithmus ein vollständiges Java-Programm an. import java.util.*; public class TestAlgo { public static void main(String [] args) { int [] a; // Deklaration int i; // Scheifenvariable // initialisieren Scanner s = new Scanner(System.in); System.out.print("Anzahl Elemente: "); int n = s.nextInt(); a = new int[n]; for (i =0; i < n; i++) { System.out.print("2-stellige Zahl: " ); a[i] = s.nextInt(); } s.close(); // Ausgabe initialisiertes Feld System.out.println("Größtes Element: " + arrayMax(a)); } public static int arrayMax(int a[]) { int currentMax = a[0]; for (int i = 0;i < a.length; i++) if (a[i] > currentMax) currentMax= a[i]; return currentMax; } } 17. Schreibe ein vollständiges, Sortieralgorithmus zeigt. 2 ablauffähiges http://fbim.fh-regensburg.de/~saj39122/pgj/index.html , 3 Java-Programm 2 , das die Lösung eines