Man sieht hier einzelne Fragmente, die man häufig bei der Programmierung mit Schleifen antrifft. Es gibt eine lokale Variable, die vor dem

Ähnliche Dokumente
Der genaue Hintergrund der equals-methode wird zusammen mit der Klasse Object vorgestellt.

1 Algorithmische Grundlagen

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

2. Algorithmenbegriff

Zentralübung: Schleifeninvarianten

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

1. Die rekursive Datenstruktur Liste

Informatik II, SS 2014

Informatik I: Einführung in die Programmierung

Algorithmen und Datenstrukturen

Motivation. Typische Virenscanner finden nur bekannte Viren, aber keine Neuentwicklungen.

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

5.3 Korrektheit und Verifikation

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2. Hausübung Algorithmen und Datenstrukturen

Übung zur Vorlesung Berechenbarkeit und Komplexität

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Algorithmen. Von Labyrinthen zu. Gerald Futschek

Perlen der Informatik I Wintersemester 2012 Aufgabenblatt 7

Lösung Probeklausur Informatik I

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te

Algorithmen. Von Labyrinthen zu. Gerald Futschek

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Übungsaufgaben Blatt 3

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Wie man eine Sprache versteht

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Klausur zur Vorlesung Algorithmen und Datenstrukturen

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Einführung in die Objektorientierte Programmierung Vorlesung 2: Mikroskopisches und Makroskopisches Computational Thinking.

5.3 Korrektheit und Verifikation

III.1 Prinzipien der funktionalen Programmierung - 1 -

Formale Systeme Logik: Verifikation von Aussagen über Algorithmen. Ana Sokolova statt Robert Elsässer

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Einstieg in die Informatik mit Java

3. Übungsblatt zu Algorithmen I im SoSe 2017

Konzepte der Informatik

WS 05/06 mod Verifikation

Theoretische Informatik 1

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Der Begriff des Frameworks soll hier nicht weiter erläutert werden; er spielt aber in der späteren Programmierausbildung eine wichtige Rolle.

Einführung in die Informatik Turing Machines

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

Rekursive Funktionen (1)

Klausur zur Vorlesung Algorithmen und Datenstrukturen

Einführung in die Informatik Turing Machines

Software Engineering. Besprechung zur Uebung 6 Softwaretests. Reinhard Stoiber HS 07

Informatik II, SS 2018

Rekursive Funktionen (1)

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Probleme über Sprachen. Teil II.

Kontrollstrukturen -- Schleifen und Wiederholungen

Übung 1: Vorspann Ein physikalisches System

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Aufgaben aus den Übungsgruppen 8(Lösungsvorschläge)

Klammersprache Definiere

Komplexität von Algorithmen Musterlösungen zu ausgewählten Übungsaufgaben

Primzahlen und Programmieren

Das Pumping Lemma der regulären Sprachen

Einführung in die Informatik 1

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Abschnitt 11: Korrektheit von imperativen Programmen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

Elementare Konzepte von

fl diese Variablen haben jeweils den Wahrheitswert "wahr" oder "falsch", es sind damit boolesche Variablen (Datentyp: bool bzw.

Logik. Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block Aussage

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

1 Vom Problem zum Programm

Konzepte der Informatik

Einführung in die Informatik Algorithms

1 Vom Problem zum Program

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Variablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele

Einführung in die Theoretische Informatik

Algorithmen und ihre Programmierung -Teil 2-

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

IR Seminar SoSe 2012 Martin Leinberger

einlesen n > 0? Ausgabe Negative Zahl

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Theoretische Informatik Kap 2: Berechnungstheorie

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP Programme

In einem mathematischen Modell wird dies beschrieben durch einen funktionalen Zusammenhang: x = f (t).

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Computeranwendung und Programmierung (CuP)

DAP2-Klausur

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

1 Grundlagen. 1.1 Aussagen

Transkript:

214 215

Man sieht hier einzelne Fragmente, die man häufig bei der Programmierung mit Schleifen antrifft. Es gibt eine lokale Variable, die vor dem Schleifenstart initialisiert und die innerhalb der Schleife hochgezählt wird. In der Abbruchbedingung wird geprüft, ob die lokale Variable einen bestimmten Wert angenommen hat. 216 217

218 219

Man kann sich zur Übung ein Programm überlegen, das die erste gerade Zahl ab dem Wert start, also start oder start+1, bestimmt und dann mit einem Zähler mit Zweierschritten (zaehler = zaehler +2) die nachfolgenden geraden Zahlen ausgibt. Wird diese Methode mehrfach direkt hintereinander aufgerufen, werden die neu berechneten geraden Zahlen an die existierende Liste angehängt. Ist dies nicht gewünscht, kann man vorher die Liste z. B. mit setzahlen(null) löschen. 220 221

Es hängt von der Art der Programmiersprache ab, wie man Listen abarbeiten kann. Der Ansatz, die Länge der Liste zu nutzen und innerhalb einer Schleife von Null an bis zur Listengröße zu zählen, dabei über eine Listen-Methode auf die Elemente zuzugreifen, wird überall unterstützt. 222 223

224 225

Zur Prüfung, ob eine Zahl zahl eine Primzahl ist wird zunächst der Fall abgehandelt, dass es ein Wert kleiner zwei ist, da es sich dann garantiert um keine Primzahl handeln kann. Danach wird angenommen, dass es sich um eine Primzahl handelt. Es wird dann für jede Zahl zwischen 2 und zahl (genauer zahl- 1) geprüft, ob diese Teile von zahl ist. Ist dass der Fall wird die Annahme verworfen und das Ergebnis auf false gesetzt. 226 227

Einschub: Nachdem angefangen wurde, nicht nur nach einer Lösung für eine nicht triviale Aufgabenstellung zu suchen, sondern auch diese zu optimieren, kann man systematisch erfassen was man gerade macht. Man sucht nach einem Algorithmus, einem Verfahren, das die gestellte Aufgabe löst und zusätzlich besondere Anforderungen erfüllt, wie z. B. besonders schnell zu sein. 228 229

Die hier genannten Eigenschaften kann man durchaus teilweise hinterfragen: - Die dynamische Endlichkeit hat zur Folge, dass ein nicht terminierendes Programm nicht die Übersetzung eines Algorithmus sein kann. Da es sich hierbei um einen Programmierfehler handeln kann, ist diese Aussage für diesen Fall in Ordnung. Kritischer ist es bei Steuerungsprogrammen, wie z. B. Kraftwerksteuerungen, die nach dem Start immer funktionieren sollen. Da aber auch solche Programme einen systematischen Weg zur Terminierung der angeschlossenen Systeme und damit auch der Software haben sollen, ist die Erklärung auch hier sinnvoll. - Beim Determinismus wird gefordert, das genau die gleiche Situation immer zum genau gleichen Folgeschritt führen soll. Formal muss man sich die Frage stellen, wie es dann mit Programmen, wie zur Steuerung von Spielautomaten, aussieht, die Zufall benötigen. Da es echten Zufall in Programmen nicht geben kann, sind auch diese Programme deterministisch. Natürlich kann man einen Pseudo-Zufall in Abhängigkeit von vielen Parametern, wie der Systemzeit oder Messwerten von Sensoren herstellen. Die Frage, ob es überhaupt einen echten Zufall gibt, führt eher zu philosophischen Betrachtungen. Bei der dynamischen Endlichkeit wird für die Rechenzeit eine Anzahl von Schritten als Maximalwert angegeben. Da für jede Zahl nur eine endliche Anzahl von Schritten, hier angenommen x, durchgeführt wird, muss das Programm auch nach endlich vielen Schritten terminieren. Damit ist gezeigt, dass die Rechenzeit endlich ist und, dass das Programm terminiert. 230 231

Die Suche nach den innerhalb bestimmter Randbedingungen optimalen Algorithmen ist eine zentrale Aufgabe der Informatik. Die Praxis zeigt, dass eine ingenieurmäßige Herangehensweise mit der Kenntnis von vielen erfolgreichen Lösungen für bestimmte Problemgruppen zur Findung guter Algorithmen wesentlich beiträgt. Dieser Ansatz ist wesentlicher Bestandteil der Informatik- Ausbildung. 232 233

Hier wird zunächst nur gezeigt, wie man Listenelemente auswählt und in neue Listen überträgt. Eine spannende, aber etwas später behandelte Frage ist, ob es sich um die selben (ja) oder nur um die gleichen (nein) Objekte handelt. Diese Frage spielt solange keine Rolle, wie die Objekte nicht verändert werden. 234