Fachhochschule Regensburg

Werbung
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
Herunterladen