3. Entwurf von Algorithmen
|
|
|
- Franziska Friedrich
- vor 7 Jahren
- Abrufe
Transkript
1 3. Entwurf von Algorithmen 3.1 Algorithmen, Programmiersprachen und Programme 3.2 Systematischer Entwurf von Algorithmen 3.3 Schrittweise Verfeinerung 3.4 Ablaufsteuerung (Kontrollstrukturen) 3.5 Modularität 3.6 Rekursion 3.7 Daten und Datenstrukturen 3.8 Bäume Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 1
2 3.1 Algorithmen, Programmiersprachen & Programme Algorithmus: ein Verfahren zur systematischen, schrittweisen Lösung eines Problems Beschrieben in: Umgangssprache Programmiersprache mathematischem Formalismus (z. B. Turing-Maschine) Church-Turing-These "All reasonable definitions of 'algorithm' are equivalent." Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 2
3 Algorithmus vs. Programm Algorithmus Programmierung Programm in höherer Programmiersprache Übersetzung Programm in Maschinensprache Interpretation durch CPU (Gewünschter Ablauf wird ausgeführt) Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 3
4 Beispiele für Algorithmen Prozess Algorithmus Typische Schritte im Algorithmus Pullover stricken Strickmuster Linke Masche, rechte Masche stricken Modellflugzeug bauen Montageanleitung Kleider nähen Schnittmuster Nähe Saum spiele Musik Notenblatt Leime Rippe A an den Holm B kochen Rezept Zutaten (4 Personen) 400 g Tomatensoße, 1/2 l Wasser, 3 Teelöffel Chilipulver, 1 1/2 l Minutenreis, 1/2 kg zerstoßene Tortilla-Chips, 1/2 kg klein geschnittener Cheddarkäse Anleitung: vermenge Tomatensoße, Wasser, Chilipulver in einem mittelgroßen Topf und bringe es zum Kochen. Rühre den Reis ein, decke den Topf ab, nehme ihn vom Feuer und lasse ihn 10 Minuten stehen. Streue Tortilla-Chips und Käse darüber. Serviere das Essen, wenn gewünscht, mit Salatblättern und saurer Sahne. Aus: Syd's Kochbuch. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 4
5 Algorithmen als fundamentales Konzept unabhängig von der Programmiersprache unabhängig von der Rechner-Hardware Der Entwurf von Algorithmen ist ein kreativer Prozeß, der nicht automatisiert werden kann. Beispiel Summiere alle Zahlen zwischen 1 und 100: Lösung = 5050 Lösung 2 (1+100)+(2+99)+ (50+51) = 50*101 = 5050 Wir sehen: Die Effizienz eines Algorithmus ist ein wichtiges Entwurfskriterium. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 5
6 Richtlinien Ist das Problem lösbar? Welche Schritte müssen ausgeführt werden, um einen korrekten Algorithmus zu erhalten? Korrektheit heißt: Der Algorithmus erzeugt ein Resultat (ist endlich). Das Resultat ist korrekt. Ist der Algorithmus effizient? Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 6
7 Beispiele Unlösbares Problem Halteproblem Finde einen Algorithmus, der feststellt, ob ein beliebiger Algorithmus in endlicher Zeit irgendein Ergebnis liefert (=anhält). Sehr komplexes Problem Problem des Handlungsreisenden (traveling salesman) Für eine beliebige Topologie: Finde den kürzesten Weg, der alle Städte verbindet, die der Handlungsreisende aufsuchen soll. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 7
8 Schwierigkeiten beim Algorithmenentwurf Es existiert keine präzise Definition des Problems. Spezialfälle kommen vor, die nicht betrachtet wurden. Es ist schwer zu zeigen, dass der Algorithmus für alle möglichen Eingabedaten korrekt abläuft. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 8
9 Beispiele für Schwierigkeiten (1) Beispiel 1: Wegbeschreibung 1. am Laden rechts abbiegen 2. geradeaus bis zur nächsten Kreuzung 3. rechts abbiegen 4. dritte Querstraße links An welchem Laden? (UNPRÄZISE) Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 9
10 Beispiele für Schwierigkeiten (2) Beispiel 2: Finde Süden mit der Uhr 1. Richte kleinen Zeiger auf die Sonne. 2. Berechne die Winkelhalbierende zwischen dem kleinen Zeiger und h. 3. Winkelhalbierende zeigt nach Süden. Ausrichten des kleinen Zeigers durch Drehen am Stellknopf oder Drehen der gesamten Uhr? (UNPRÄZISE) Funktioniert nicht auf der Südhalbkugel! (Sonderfall vergessen) Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 10
11 Beispiele für Schwierigkeiten (3) Beispiel 3: Repariere Wasserhahn 1. Wasserhahn aufdrehen 2. warten, bis kein Wasser mehr fließt 3. Hahn abschrauben 4. Dichtung gegen neue Dichtung auswechseln 5. Hahn anschrauben 6. Hahn zudrehen 7. Haupthahn öffnen Endet nicht; Schritt 2 unendlich; es wurde vergessen, zu Anfang den Haupthahn zuzudrehen! Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 11
12 Folgerung Der Entwurf von Algorithmen muss auf systematische Weise diszipliniert durchgeführt werden. Methoden zum systematischen Entwurf und zur Analyse von Algorithmen (Komplexität und Korrektheit) sind hilfreich. In einem zweiten Schritt wird der Algorithmus als Computerprogramm formuliert. Dieser Schritt wird als Programmierung bezeichnet. Durch die Verwendung einer in Syntax und Semantik wohldefinierten Sprache wird sichergestellt, dass die einzelnen Anweisungen unmissverständlich sind auf dem Zielrechner ausführbar sind (Mächtigkeit, Detaillierungsgrad). Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 12
13 Formulierungsfehler Annahme: Es existiert ein Algorithmus, der nicht zu komplex ist. Welche Fehler können in der Formulierung auftauchen? Wir unterscheiden drei Klassen von Fehlern: syntaktische Fehler semantische Fehler logische Fehler Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 13
14 Klassifikation von Fehlern (1) a) Syntaktische Fehler Werden durch den Compiler oder Interpreter gefunden und als solche gekennzeichnet. Die Instruktion wird nicht ausgeführt. Beispiel: a = b * + c; Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 14
15 Klassifikation von Fehlern (2) b) Semantische Fehler Werden entweder während der Ausführung gefunden (Java Exception, segmentation fault im Betriebssystem) oder schlimmstenfalls nie gefunden. Beispiel: Feldgrenzenverletzung. Der Vektor a habe 100 Elemente. i = 101; a[i] = 17; Beispiel: Teilen durch 0 r = 0.0; s = 170/r; Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 15
16 Klassifikation von Fehlern (3) c) Logische Fehler Das Programm tut nicht, was der Programmierer eigentlich wollte. Beispiel: // berechne Kreisumfang circumference = PI * radius; // anstatt 2*PI*radius Viele semantischen und alle logischen Fehler können während des Testens und durch formale Verifikation gefunden werden. Wichtig: Tests sind im Gegensatz zur formalen Verifikation keine Korrektheitsbeweise für ein Programm! Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 16
17 3.2 Systematischer Entwurf von Algorithmen a) Problemstellung (a) (b) (c) Ist die Problemstellung verstanden bzw. wie lautet das eigentliche Problem? Wenn die Problemstellung nicht verstanden ist, dann weitere Informationen einholen. Wenn der Kern des Problems klar hervorgehoben ist, dann das eigentliche Problem formulieren. Ist die Problemstellung klar und exakt? Wenn nein, dann weitere Informationen zur Problemstellung beschaffen oder Problemstellung selbst präzisieren. Hat das Problem bereits einen Namen? Wenn nein, dann dem Problem einen kurzen und treffenden Namen geben. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 17
18 Problemstellung (2) (d) (e) (f) Was ist bekannt und was ist gegeben? Zusammenstellen aller bekannten Eingabegrößen bzw. objekte. Jedem Eingabeobjekt einen Namen geben und seinen Typ bzw. seine Art beschreiben. Was ist unbekannt bzw. was ist gesucht? Zusammenstellen aller bekannten Ausgabegrößen bzw. Ausgabeobjekte. Jedem Ausgabeobjekt einen Namen geben und seinen Typ festlegen. Welche Bedingungen für Ein- und Ausgabeobjekte müssen erfüllt sein bzw. werden gefordert? Zusammenstellen dieser Bedingungen (z. B. formelmäßige Zusammenhänge). Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 18
19 Anmerkung zur Problemstellung In der Praxis ist nur in den seltensten Fällen das zu lösende Problem von vorne herein klar beschrieben (spezifiziert)! Gründe Derjenige, der das Problem hat, und derjenige, der den Algorithmus entwerfen soll, sind oft nicht identisch. Sie haben meist unterschiedliches Vorwissen über die Anwendungsumgebung. Sie machen meist unterschiedliche selbstverständliche Annahmen. Deshalb: Spezifikationen sollten gemeinsam erarbeitet werden. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 19
20 Beispiel für eine unklare Aufgabenstellung (1) Problemstellung Berechne die Funktion f(x) = log(x) Fragen Was ist die Basis des Logarithmus? Wie ist x gegeben? In welchem Datentyp? Welchen Wertebereich hat x? Wie soll f(x) ausgegeben werden? Mit welcher Genauigkeit soll gerechnet werden? Was soll passieren, wenn ein unzulässiges x eingegeben wird? Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 20
21 Beispiel für eine unklare Aufgabenstellung (2) Spezifikation f(x) = log 10 (x) x, f(x) als IEEE double precision floating point-werte x: Eingabe f(x): Ausgabe Wertebereich: [0.3, 30]; in allen anderen Fällen Fehlermeldung ausgeben. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 21
22 Systematischer Entwurf von Algorithmen (1) b) Lösungsplan (a) Ist dasselbe Problem oder ein ähnliches bzw. vergleichbares Problem bekannt? (b) Wenn ja, dann versuche man, Kenntnisse über die Lösung zu erhalten. Ist ein allgemeineres Problem bekannt? Wenn ja, dann versuche man, Kenntnisse über die Lösung dieses Problems zu erhalten. Man prüfe, ob das gegebene Problem als Sonderfall des allgemeinen Problems behandelt werden kann. Wenn ja, dann wende man die allgemeine Problemlösung an. Wenn sich das Problem verallgemeinern lässt, ohne dass die Lösung erheblich schwerer wird, dann löse man das allgemeinere Problem. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 22
23 Systematischer Entwurf von Algorithmen (2) (c) (d) Lässt sich das Problem in ein einfacheres Teilproblem oder in mehrere einfachere, in sich geschlossene Teilprobleme aufteilen? Wenn ja, dann teile man das Problem auf und löse die Teilprobleme. Man stelle einen in Schritte gegliederten Lösungsplan auf. Sind die Teilprobleme zu lösen, dann nehme man für jedes Teilproblem einen Schritt. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 23
24 Kommentare zum Lösungsplan a.) Problem: Zeichne ein Dreieck auf dem Bildschirm. b.) Allgemeineres Problem: Zeichnen eines Polygons mit n Ecken auf dem Bildschirm. (Dreieck: n = 3, Rechteck: n = 4) Lösung des allgemeineren Problems erheblich schwerer? Dreieck: Linie von Ecke 1 nach Ecke 2 Linie von Ecke 2 nach Ecke 3 Linie von Ecke 3 nach Ecke 1 Polygon: Linie von Ecke 1 zu Ecke 2 Linie von Ecke 2 nach Ecke 3... Linie von Ecke n nach Ecke 1 c.) Teilproblem: Zeichnen einer Linie zwischen zwei Punkten auf dem Bildschirm. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 24
25 Was ist ein guter Algorithmus? Kriterien Ausführungszeit (Komplexität) Speicherbedarf für Programm und Daten Entwicklungszeit. Wird zunehmend wichtiger! Gut strukturiertes, wartbares Programm: sehr wichtig! Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 25
26 3.3 Schrittweise Verfeinerung Zerlegung eines Algorithmus in Teilalgorithmen, von denen jeder einzelne einfacher und überschaubarer ist als der ursprüngliche Algorithmus. Dadurch verbessern sich die Chancen, einen insgesamt korrekten Algorithmus zu entwerfen. Die Verfeinerung wird so lange fortgesetzt, bis die einzelnen Schritte unmittelbar auf dem Prozessor ausgeführt werden können: vom Menschen bis hin zur Programmiersprache, vom Compiler bis hin zur Maschinensprache. Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 26
27 Beispiel für schrittweise Verfeinerung (1) Algorithmus "Koche Kaffee" 1. Koche Wasser 2. Gib Kaffeepulver in die Tasse 3. Fülle Wasser in die Tasse Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 27
28 Beispiel für schrittweise Verfeinerung (2) Erste Verfeinerung (1.1) Fülle Wasserkessel (1.2) Schalte Herdplatte an (1.3) Warte, bis das Wasser kocht (1.4) Schalte Herdplatte aus (2.1) Öffne Kaffeeglas (2.2) Entnehme einen Löffel Kaffee (2.3) Kippe Löffel in die Tasse (2.4) Schließe Kaffeeglas (3.1) Gieße Wasser aus dem Kessel in die Tasse, bis die Tasse voll ist Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 28
29 Beispiel für schrittweise Verfeinerung (3) Zweite Verfeinerung {Algorithmus zur Zubereitung einer Tasse Kaffee} {Zuerst Wasser kochen} (1.1.1.) Stelle Kessel unter Wasserhahn (1.1.2.) Drehe Wasserhahn auf (1.1.3.) Warte, bis Kessel voll ist (1.1.4.) Drehe Wasserhahn zu (1.2.) Schalte Herdplatte an (1.3.1.) Warte, bis Kessel pfeift (1.4.) Schalte Herdplatte aus Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 29
30 Beispiel für schrittweise Verfeinerung (4) Zweite Verfeinerung (Fortsetzung) {Gib Kaffeepulver in die Tasse} (2.1.1.) Nehme Kaffeeglas aus dem Fach (2.1.2.) Entferne Deckel vom Kaffeeglas (2.2) Entnehme einen Löffel Kaffee (2.3.) Kippe Löffel in die Tasse (2.4.1.) Schraube Deckel auf das Kaffeeglas (2.4.2.) Stelle Kaffeeglas in das Fach zurück {Fülle Wasser in die Tasse} (3.1.) Gieße Wasser aus dem Kessel in die Tasse, bis die Tasse voll ist Praktische Informatik I Wolfgang Effelsberg 3. Entwurf von Algorithmen 3a - 30
3. Entwurf von Algorithmen 3a - 1
3. Entwurf von Algorithmen 3.1 Algorithmen, Programmiersprachen und Programme 3.2 Systematischer Entwurf von Algorithmen 3.3 Schrittweise Verfeinerung 3.4 Ablaufsteuerung (Kontrollstrukturen) 3.5 Modularität
Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen
Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)
Programmierkurs II. C und Assembler
Programmierkurs II C und Assembler Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2003 1-1 Inhalt Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Einführung in die Informatik I (autip)
Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis
Praktische Informatik I
Praktische Informatik I WS 2005/2005 Prof. Dr. Wolfgang Effelsberg Lehrstuhl für Praktische Informatik IV Universität Mannheim 1. Einführung 1-1 Inhaltsverzeichnis (1) 1. Einführung 1.1 Was ist Informatik?
Einführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum
Einführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
Einführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren
Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik
5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
5. Algorithmen K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 1. Berechne 2 n. Zu lösende Probleme 2. Berechne die Fakultät einer nat. Zahl: n! = 1 * 2 *... n 3. Entscheide,
Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax
Einführung in die Programmierung für NF Algorithmen, Datentypen und Syntax Ziele Begriffsbildungen: InformaCk, Algorithmus, Programm, Compiler und andere Einordnung von Java Ein einfaches Java- Programm
Algorithmierung und Programmierung - immer aktuell. Material, S.54ff.
Algorithmierung und Programmierung - immer aktuell Material, S.54ff. Was scheint den wichtig für IU? Mittelschule (10): PC-Technik kennenlernen Anwendungen beherrschen Grundwissen Internet Verständnis
Algorithmen versus Programmiersprachen
Coma I Einleitung Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen Literaturhinweise Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen
3.4 Ablaufsteuerung (Kontrollstrukturen)
3.4 Ablaufsteuerung (Kontrollstrukturen) Sequenz (Folge von Anweisungen) Der Kaffee-Algorithmus beinhaltet einfache Schritte, die einer nach dem anderen auszuführen sind. Wir sagen, ein solcher Algorithmus
Abschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung
Teil I Einführung Überblick 1 Vorbemerkungen 2 Algorithmen 3 4 Historischer Überblick Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 1 1 Vorbemerkungen Was ist Informatik? Informatik
Einführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag,
5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
Funktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1
Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm ([email protected]) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische
Angewandte Mathematik am Rechner 1
Angewandte Mathematik am Rechner 1 SOMMERSEMESTER 2017 Kapitel 3 [Bildquellen: Wikipedia User David Madore, Inductiveload ] Grundlagen 2: Funktionen, Berechenbarkeit und emergente Komplexität Michael Wand
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens [email protected] Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
Algorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion.
Algorithmus Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion. Hier einige informelle Erklärungen zum Algorithmus P
EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217
EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?
Grundlagen der Programmierung
Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 04.04.2018 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen
Kapitel 1: Algorithmen und ihre Analyse
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 1: Algorithmen und ihre Analyse Skript zur Vorlesung Algorithmen und Datenstrukturen
Programmieren lernen mit Perl
Xpert.press Programmieren lernen mit Perl Bearbeitet von Joachim Ziegler 1. Auflage 2002. Buch. XIV, 400 S. Hardcover ISBN 978 3 540 42685 1 Format (B x L): 15,5 x 23,5 cm Gewicht: 783 g Weitere Fachgebiete
Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.
Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung
Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen
Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen Anforderungen durch Logiken Modellierung zusammenhängender
1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer
Unentscheidbarkeitssätze der Logik
Unentscheidbarkeitssätze der Logik Elmar Eder () Unentscheidbarkeitssätze der Logik 1 / 30 Die Zahlentheorie ist nicht formalisierbar Satz (Kurt Gödel) Zu jedem korrekten formalen System der Zahlentheorie
1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?
1. Einführung Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? Wie beschreiben wir Algorithmen? Nach welchen Kriterien
Programme erstellen in Java
Programmieren mit Java Modul 0 Programme erstellen in Java Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Schreiben von Computerprogrammen 3 2.1 Computerprogramme bestehen aus Daten und Instruktionen.......
Verifizierende Testverfahren
Spezifikation Um einen Algorithmus zu schreiben, muss das zu lösende Problem genau beschrieben sein. Eine Spezifikation ist Verifizierende Testverfahren vollständig, wenn alle Anforderungen/alle relevanten
Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik
Informatik Teil 1 Wintersemester 2011/2012 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen Inhalt 1. Algorithmen -
Vom Problem über den Algorithmus zum Programm
2 Vom Problem über den Algorithmus zum Programm Computer sind heute praktisch überall zu finden. Entsprechend groß ist die Vielzahl der Problemstellungen, mit denen man bei der Entwicklung von Programmen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: [email protected]
Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik
Informatik 1 Teil 1 - Wintersemester 2012/2013 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen 0. Rechner und Programmierung
1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 2 Spezifikation Schrittweise Verfeinerung Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69,
Grundlagen der Informatik I Einführung
Grundlagen der Informatik I Einführung Konzepte imperativer Programmierung : Six, H.W., 99 Themen der heutigen Veranstaltung 1. Informatik, Computer, Programmierung 2. Problem und Algorithmus 3. Programme
Praktische Informatik I
Praktische Informatik I WS 2005/2005 Prof. Dr. Wolfgang Effelsberg Lehrstuhl für Praktische Informatik IV Universität Mannheim 1. Einführung 1-1 Inhaltsverzeichnis (1) 1. Einführung 1.1 Was ist Informatik?
Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.
1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften
Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise
Coma I Einleitung 1 Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen Literaturhinweise 2 Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen
Was Computer nicht berechnen können
Was Computer nicht berechnen können Hochschulinformationstag 13 Juni 2003 Christoph Kreitz Theoretische Informatik, Raum 119, Telephon 3064 kreitz@csuni-potsdamde http://wwwcsuni-potsdamde/ti Computer
Inhalt. Einführung in die Strukturierte Programmierung 15
Inhalt Einführung in die Strukturierte Programmierung 15 1.1 Was bedeutet Programmieren? 17 1.2 Was bedeutet Strukturierte Programmierung? 18 1.3 Was ist Pascal? 19 1.4 Was ist PS/k? 20 1.5 Warum wird
Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin
Kapitel 1 Einleitung 1.1. Begriff des Algorithmus Eine der ältesten Beschreibungstechniken für Abläufe: Benannt nach dem Mathematiker Al-Khwarizmi (ca. 780...840), der am Hof der Kalifen von Bagdad wirkte.
2. Hausübung Algorithmen und Datenstrukturen
Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 7.4.009. Hausübung Algorithmen und Datenstrukturen Sommersemester 009 Abgabetermin: Montag, 04.05.009, 10:00 Uhr 1
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen
Informatik Algorithmen und Programme
Informatik Algorithmen und Programme Seite 1 Grundlagen der Programmierung: Spezifikation Phasen der Software-Entwicklung Spezifikation Problem und seine Lösung beschreiben vollständig detailliert unzweideutig
Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen
Mächtigkeit von LOOP-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Die Programmiersprache LOOP Syntax Elemente eines LOOP-Programms Variablen
Algorithmus: Kochrezept
Algorithmus: Kochrezept Ziel: Menü mit drei Gängen für 4 Personen Grundlegende Spezifikation: 1. Vorspeise: Badische Flädlesuppe 2. Hauptgericht: Überbackene Schinkenröllchen mit Spargel 3. Dessert: Vanilleeis
2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
Programmieren Formulierung eines Algorithmus in einer Programmiersprache
Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:
Theoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: [email protected]
Netzwerktag, Atelier Mini-Biber-Kiste Regula Vonlanthen. Amt für obligatorischen deutschsprachigen Unterricht 1
Netzwerktag, 22.11.2017 Atelier Mini-Biber-Kiste Regula Vonlanthen Amt für obligatorischen deutschsprachigen Unterricht 1 Spielkarten Biber Informatikaufgaben der Internationalen Bebras- Gemeinschaft Leicht
Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen
Ludwig-Maximilians-Universität München München, 16.04.2018 Institut für Informatik Prof. Dr. Thomas Seidl Anna Beer, Florian Richter Algorithmen und Datenstrukturen SS 2018 Übungsblatt 1: Grundlagen Tutorien:
1 Karol stellt sich vor
Kapitel 1 Karol stell sich vor Seite 1 1 Karol stellt sich vor 1.1 Algorithmus Fritz hat zum Geburtstag einen CD-Player als Geschenk erhalten. Natürlich will er sofort das Geschenk ausprobieren und legt
4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
Grundlagen der Programmierung
Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 12.10.2016 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf
3. Methodik der Programmerstellung
3. Methodik der Programmerstellung 3.1 Vorgehen 3.2 Programmerstellung 3.2.1 Konventionen 3.2.2 Schlüsselwörter und Bezeichner 3.2.3 Fehlertypen 3.2.4 Programmierstil 3.3 Formaler Aufbau eines Pascal-Programms
VBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
Algorithmen und Berechnungskomplexität I
Algorithmen und Berechnungskomplexität I Prof. Dr. Institut für Informatik Wintersemester 2013/14 Organisatorisches Vorlesung Dienstag und Donnerstag, 12:30 14:00 Uhr (HS 1) Übungen 16 Übungsgruppen Anmeldung
Theoretische Informatik für Wirtschaftsinformatik und Lehramt
Theoretische Informatik für Wirtschaftsinformatik und Lehramt Entscheidungsprobleme Priv.-Doz. Dr. Stefan Milius [email protected] Theoretische Informatik Friedrich-Alexander Universität Erlangen-Nürnberg
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen
Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen
Verhalten Def. und Nutzen von Verhalten Algorithmen Pseudocode Schreibtischtest Verhalten & Pseudocode Das Verhalten beschreibt, wie sich die Datenstrukturen (Variablen) eines Programms verändern müssen,
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Einführung in die Programmierung
Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:
Variablen und Datentypen
Programmieren mit Python Modul 1 Variablen und Datentypen Selbstständiger Teil Inhaltsverzeichnis 1 Überblick 3 2 Teil A: Geldautomat 3 2.1 Einführung.................................. 3 2.2 Aufgabenstellung...............................
5. Einführung in die Algorithmik
[email protected] Informatik 11 Seite 1 5. Einführung in die Algorithmik Diesen Getränke-Automat werden wir demnächst programmieren. Der Roboter Karol hilft uns beim Einüben von Algorithmen. Will
II.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung
Gliederung der Vorlesung 1. Grundbegriffe. Elementare Graphalgorithmen und Anwendungen 3. Kürzeste Wege 4. Minimale spannende Bäume 5. Färbungen und Cliquen 6. Traveling Salesman Problem 7. Flüsse in Netzwerken
Grundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: [email protected]
11. Rekursion, Komplexität von Algorithmen
11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv
Theoretische Informatik. Berechenbarkeit
Theoretische Informatik Berechenbarkeit 1 Turing Maschine Endlicher Automat mit unendlichem Speicher Ein Modell eines realen Computers Was ein Computer berechnen kann, kann auch eine TM berechnen. Was
Ideen und Konzepte der Informatik
Ideen und Konzepte der Informatik Programme und Algorithmen Antonios Antoniadis 23. Oktober 2017 Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert
2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Assembler - Einleitung
Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache
Informatik 2-stündig
Klasse 11 Einführung in die objektorientierte Modellierung und Programmierung 20 Leitidee 3: Problemlösen und Modellieren kennen ein Konzept der objektorientierten Modellierung; können Beziehungen zwischen
2. Effizienz von Algorithmen
Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]
1 Vom Problem zum Programm
1 Vom Problem zum Programm Ein Problem besteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen. mathematisch: Ein Problem beschreibt eine Funktion f : E A, mit
