Was ist ein Algorithmus? Software Entwicklung 1
|
|
- Evagret Amsel
- vor 6 Jahren
- Abrufe
Transkript
1 Was ist ein Algorithmus? Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller In diesem Abschnitt beschäftigen wir uns dem Begriff des Algorithmus, der in der Informatik eine zentrale Rolle einnimmt. Dabei werden wir auf wichtige Konzepte wie Terminierung, Variablen, Ausführungszuständen, Aktionen und Zustandsänderung eingehen und den Unterschied zwischen Determinismus und Determiniertheit von Algorithmen kennenlernen. 1 Algorithmus Die imperative Modellierung und Programmierung baut auf den klassischen Algorithmusbegriff auf. Eine Berechnung dabei wird als zustandsändernder Ablauf betrachtet. Damit orientiert sie sich am Berechnungskonzept von Rechnern, das auch auf der Beschreibung von Abläufen basiert, in denen sich in jedem Schritt der Ausführungszustand ändern kann. 1 Es gibt viele Definitionen für den Begriff Algorithmus, die sich aber in den wesentlichen Aspekten gleichen. Definition Ein Algorithmus ist ein Verfahren zur schrittweisen Ausführung von (Berechnungs-) Abläufen, das sich präzise und endlich beschreiben lässt, so dass: die Beschreibung auf wohlverstandenen, ausführbaren ( effektiven ) Einzelschritten basiert; in jedem Schritt eine oder mehrere Aktionen (ggf. parallel) ausgeführt werden; jede Aktion von einem Zustand in einen Nachfolgezustand führt. Man sagt, die Ausführung eines Algorithmus terminiert, wenn sie nach endlich vielen Schritten beendet ist; andernfalls spricht man von einer nicht-terminierenden Ausführung. 1 Neben dem imperativen Programmierparadima, das unter anderem Java, C/C++, JavaScript oder Python zugrunde liegt, gibt das deklarative Programmierparadigma. Dabei wird von den einzelnen Verarbeitungsschritten abstrahiert. Programme in deklarativen Sprachen beschreiben den Zusammenhang zwischen Eingabe und Ausgabe, nicht aber, wie die Ausgabe anhand der Eingabe konkret berechnet werden soll. 1
2 Algorithmen lassen sich mit unterschiedlichen Sprachmitteln beschreiben: umgangssprachlich, mit mathematischer Sprache, in graphischer Notation, oder mit mit programmiersprachlichen Mitteln. Ein Algorithmus ist dabei unabhängig von der verwendeten Beschreibungstechnik bzw. Sprache. 1.1 Beispiel: Algorithmus zur Berechnung des größten gemeinsamen Teilers Betrachten wir als Beispiel einen Algorithmus zur Berechnung des größten gemeinsamen Teiles (ggt) zweier ganzer Zahlen. Zunächst die Formulierung in Umgangssprache: Seien m, n, v Variablen für Integer-Werte. Lese die Werte w1 und w2 ein, für die der ggt berechnet werden soll und weise w1 an m und w2 an n zu. Solange der Wert von m größer als 0 ist, führe die folgenden drei Schritte aus und prüfe danach wieder die Bedingung: Berechne n mod m und weise das Ergebnis an v zu; Weise den Wert von m an n zu; Weise den Wert von v an m zu; Gebe den Wert aus, den n enthält. Dieser Algorithmus kann auch in graphischer Notation als Flussdiagramm formuliert werden: 2
3 Als Java-Programm sieht der Algorithmus folgendermaßen aus: public class GGT { // Berechnet ggt fuer 2 gelesene Werte public static void main ( String [] args ){ int m = Integer. parseint ( args [0]) ; int n = Integer. parseint ( args [1]) ; while (m > 0) { int v = n % m; n = m; m = v; System. out. println (" ggt :" + n); 1.2 Variablen und Zustände Um die Zustände zwischen den Schritten präziser fassen zu können, werden in Programmen in der Regel Variablen verwendet. Wir erinnern uns: Definition Eine Speichervariable (oder einfach nur: Variable) ist ein Speicher/- Behälter für Werte. Charakteristische Operationen auf einer Variablen v: Zuweisen eines Werts w an v; Lesen des Wertes, den v enthält/speichert/hat. Der Zustand einer Variablen v ist undefiniert, wenn ihr noch kein Wert zugewiesen wurde; andernfalls ist der Zustand von v durch den gespeicherten Wert charakterisiert. Jeder Schritt bei der Ausführung eines Algorithmus führt von einem Ausführungszustand zum Nachfolgezustand. Ein Ausführungszustand ist gekennzeichnet durch 3
4 den Speicherzustand (im Wesentlichen der Zustand der Variablen); den Steuerungszustand (vereinfacht gesagt, die Stelle im Programm, an der die Ausführung angekommen ist). Ein Ausführungsschritt führt zu einer Zustandsänderung, also einer Veränderung von Speicher- und/oder Steuerungszustand. In einem Ausführungsschritt wird üblicherweise eine Aktion ausgeführt. Aktionen sind insbesondere: Zuweisungen an Variablen Prüfen von Bedingungen Kommunikation mit der Umgebung (Ein- und Ausgabe) Die Aktion bestimmt nachfolgende Steuerungszustände bzw. die Terminierung des Algorithmus. Der Ablauf eines Algorithmus zu gegebenen Eingaben wird charakterisiert durch die Sequenz der Ausführungszustände und die Sequenz der ausgeführten Aktionen. Definition Ein Algorithmus heißt deterministisch, wenn für alle Eingabedaten der Ablauf des Algorithmus eindeutig bestimmt ist. Andernfalls heißt er nicht-deterministisch. Beispiel Betrachten wir folgende Aufgabenstellung: Erkenne, ob eine Eingabezeichenreihe über Kleinbuchstaben eines der Worte hallo, hi oder salut enthält. Die Eingabe ist gegeben als eine Eingabezeichenreihe über Kleinbuchstaben; die möglichen Ausgaben sind ja (falls die Eingabe einer der genannten Zeichenfolgen enthält) bzw. nein (falls dies nicht der Fall ist). Der folgende nicht-deterministischer Algorithmus löst die Aufgabenstellung. Dabei bezeichnet z die Eingabe und prefixlen eine Variable, welche die Menge der Positionen enthält, an denen wir in z nach den Worten hallo, hi oder salut suchen werden. Wir initialisieren zunächst prefixlen := { 0,..., laenge(z) 2 Solange prefixlen, tue folgendes: Wähle ein x aus prefixlen aus; prefixlen := prefixlen \{x; w := z ohne die ersten x Buchstaben ; Prüfe, ob w mit hallo, hi oder salut beginnt; 4
5 Falls ja, terminiert der Algorithmus mit ja ; andernfalls fahre mit dem nächsten Durchlauf der Schleife fort. Terminiere mit der Ausgabe nein. Frage 1: Wieso ist der Algorithmus nicht-deterministisch? Eine weitere wichtige Eigenschaft von Algorithmen ist die Determiniertheit, der sich wesentlich vom Determinismus unterscheidet. Definition Ein Algorithmus heißt determiniert, wenn er bei gleichen zulässigen Eingabewerten stets das gleiche Ergebnis liefert. Andernfalls heißt er nicht-determiniert. Aus der Definition lässt sich ableiten, dass jeder Algorithmus, der eine mathematische Funktion berechnet, determiniert ist, da eine Funktion jedem Element der Definitionsmenge genau ein Element der Zielmenge zuordnet. Auch der nicht-deterministische Algorithmus des obigen Beispiels ist determiniert: Die Reihenfolge, in der die Elemente von prefixlen überprüft werden, ist nicht festgelegt. Das Ergebnis selbst wird aber nicht von der Reihenfolge beeinflusst. 2 Anweisungen in Java Anweisungen (engl. statements) sind wichtige programmiersprachliche Beschreibungsmittel in Programmiersprachen, die Programme in Form von Zustandsänderungen formulieren. Einfache Anweisungen beschreiben Aktionen. Zusammengesetzte Anweisungen beschreiben, wie mehrere Aktionen auszuführen sind. In diesem Abschnitt betrachten wir die folgenden Arten von Anweisungen: Einfache Anweisungen (Zuweisung, Prozeduraufruf [ nächste Vorlesung]) Anweisungsblöcke Schleifenanweisungen (while-, do-, for-anweisungen) Verzweigungsanweisungen: bedingte Anweisung Fallunterscheidung Auswahlanweisung Sprunganweisungen (Abbruchanweisung) 5
6 Diese Anweisungen sind finden sich in den meisten imperativen Sprachen. Wir geben für jeden Anweisungstyp die Syntax in Java an und diskutieren die Semantik. Für eine detaillierte Diskussion verweisen wir auf: Kapitel 1.3 aus R. Sedgewick, K. Wayne: Einführung in die Programmierung mit Java. 2011, Pearson Studium. 2.1 Variablendeklaration und -zuweisung Variablendeklaration Deklaration Typ Bezeichner ; Typ Bezeichner = Ausdruck; Typ PrimitiverTyp Bezeichner PrimitiverTyp byte short int long float double char boolean Zuweisungen 2 Zuweisung Bezeichner = Ausdruck ; In einer Zuweisung (und anderen Sprachkonstrukten) kann eine Variable v mit zwei Bedeutungen vorkommen. L-Wert a = 7 + a; R-Wert 1. Das Vorkommen links vom Zuweisungszeichen meint die Variable. Man spricht vom L-Wert (engl. l-value) des Ausdrucks v. 2. Das Vorkommen rechts vom Zuweisungszeichen meint den in v gespeicherten Wert. Man spricht vom R-Wert (engl. r-value) des Ausdrucks v. Die Unterscheidung wird wichtiger, wenn auch links des Zuweisungszeichens komplexere Ausdrücke stehen. 2 In Java ist eine Zuweisung syntaktisch ein Ausdruck, liefert also einen Wert und zwar das Ergebnis der Auswertung von der rechten Seite der Zuweisung. 6
7 2.2 Anweisungsblöcke Ein Anweisungsblock (engl. block statement) ist eine Liste bestehend aus Deklarationen und Anweisungen. Syntax in Java: Anweisung { DeklAnweisListe DeklAnweisListe ε Deklaration DeklAnweisListe Anweisung DeklAnweisListe Semantik: Stelle den Speicherplatz für die Variablen bereit und führe die Anweisungen der Reihe nach aus. Beispiel für einen Anweisungsblock: { int i; i = 7; int a; a = 27 % i; Üblicherweise schreibt man Deklarationen und Anweisungen untereinander, so dass ein Textblock entsteht. Anweisungen in einem Block werden in der Regel eingerückt, um die Lesbarkeit zu verbessern. { int i; int x; i = 34; x = i * 5; 2.3 Kontrollfluss: Verzweigungen und Schleifen Verzweigungsanweisungen (engl. branch statements / conditionals) stellen Bedingungen an die Ausführung einer Anweisung oder wählen einen von mehreren Zweigen zur Ausführung aus. Wir betrachten hier zunächst zwei Arten von Verzweigungsanweisungen: Bedingte Anweisung Fallunterscheidung Bedingte Anweisung Syntax in Java: Anweisung if ( Ausdruck ) Anweisung Semantik: Werte den Ausdruck aus; er muss sich zu einem boolschen Wert ergeben. Ist das Ergebnis true, führe die Anweisung aus. 7
8 Beispiel: Wir gehen in diesen Beispielen davon aus, dass die Integer-Variablen x,y,z bereits deklariert und initialisiert worden sind. // Absolutwert einer Zahl if (x < 0) { x = -x; // Testet, ob Divisor null ist, bevor die Division durchgefuehrt wird if (x!= 0) { z = y/x; // Sortieren von x und y: x soll kleiner als y sein if (x > y) { int t = x; x = y; y = t; Fallunterscheidung Syntax in Java: Anweisung if ( Ausdruck ) Anweisung else Anweisung Semantik: Werte den Ausdruck aus; er muss sich zu einem boolschen Wert ergeben. Ist das Ergebnis true, führe die erste Anweisung aus, andernfalls führe die Anweisung nach else aus. Beispiel: Fairer Münzwurf Math.random() liefert eine Zufallszahl aus dem Bereich [0.0, 1.0). if ( Math. random () < 0.5) { System. out. println (" Kopf "); else { System. out. println (" Zahl "); Beispiel: Maximum zweier Zahlen // Maximum von x und y int x, y; int max ; x =...; // Initialisieren von x y =...; // Initialisieren von y if ( x > y ) { max = x; else { max = y; 8
9 Frage 2: Wie ermittelt man das Maximum dreier Zahlen (x,y,z)? Schleifenanweisungen Schleifenanweisungen (engl. loop statements) steuern die iterative, d.h. wiederholte Ausführung von Anweisungen/Anweisungsblöcken. Wir betrachten hier die folgenden Schleifenanweisungen: while-anweisung do-anweisung Zählanweisung (for-anweisung) ( nächste Vorlesung) while-anweisung Syntax in Java: Anweisung while ( Ausdruck ) Anweisung Semantik: Werte den Ausdruck (sogenannte Schleifenbedingung) zu einem boolschen Wert aus. Ist die Bedingung erfüllt, führe die Anweisung aus, den sogenannten Schleifenrumpf, und wiederhole den Vorgang. Andernfalls beende die Ausführung der Schleifenanweisung. Beispiel: ggt Schleife zur Berechnung des größten gemeinsamen Teilers: while ( m > 0 ) { v = n % m; n = m; m = v; Bemerkung: Der Schleifenrumpf ist in den meisten Fällen ein Anweisungsblock. Syntaktisch korrekt ist aber auch z.b.: while ( true ) System. out. println (i); Das Gleiche gilt für bedingte Anweisungen und Fallunterscheidungen. Um Fehler zu vermeiden sollten Sie immer die Variante mit einem Anweisungsblock verwenden. Beispiel: Berechnung von Zweierpotenzen /* * Berechnet die Tabelle aller Zweierpotenzen, * die kleiner als 2^n sind. * Der Wert von n wird dabei als Befehlszeilenargument * uebergeben. */ public class Zweierpotenz { 9
10 public static void main ( String [] args ) { int n = Integer. parseint ( args [0]) ; int v = 1; int i = 0; while (i < n) { System. out. println (i + " " + v); v = 2 * v; i = i + 1; Terminierung Durch Programmierfehler ergeben sich bisweilen Situationen, in denen eine Schleife unendlich oft ausgeführt wird ( Endlosschleife ). Ein Programmierer muss sich daher immer die folgende Frage stellen: Wird die Ausführung der Schleife irgendwann abgebrochen? Konkret müssen folgende Fragen beantwortet werden können: 1. Welche Werte müssen die Variablen in der Schleifenbedingung annehmen, damit diese nicht mehr erfüllt ist? 2. Wie verändern sich die Werte dieser Variablen in jedem Schleifendurchlauf? 3. Wird die Schleifenbedingung daher irgendwann nicht mehr erfüllt? Als Hilfestellung kann man sich überlegen, welche Werte die Variablen annehmen, nachdem die Schleife das erste Mal, das zweite, etc., das letzte Mal durchlaufen wird. Beispiel: Terminierung des Programms zur Berechnung der Zweierpotenz 1. Die Schleifenbedingung ist nicht mehr erfüllt, wenn die Variable i größer oder gleich der Eingabe n ist. 2. In jedem Schleifendurchlauf wird der Wert der Variablen i um 1 erhöht, der Wert von n verändert sich nicht. 3. Fallunterscheidung: 1. Fall n 0: Da Variable i mit 0 initialisiert wird, wird die Schleifenbedingung nie erfüllt, und der Schleifenrumpf nicht ausgeführt. 2. Fall n > 0: Da i mit 0 initialisiert wird und in jedem Schleifendurchlauf um 1 erhöht wird, gilt nach dem k-ten Schleifendurchlauf, dass i den Wert k hat. Nach dem n-ten Schleifendurchlauf hat i also den Wert n, und die Schleifenbedingung ist dann nicht mehr erfüllt. 4. Diese beiden Fälle decken alle möglichen Eingabewerte für n ab; daher terminiert die Ausführung für alle Eingaben. 10
11 do-anweisung Syntax in Java: Anweisung do Anweisung while ( Ausdruck ) ; Semantik: Führe die Anweisung aus. Werte danach den Ausdruck zu einem boolschen Wert aus. Wenn die Bedingung erfüllt ist, wiederhole den Vorgang. Andernfalls beende die Ausführung der Schleifenanweisung. Die do-anweisung ist immer dann sinnvoll, wenn man einen Vorgang mindestens einmal ausführen muss. In solchen Situationen spart man sich gegenüber der Verwendung der while-schleife die anfänglich unnötige Auswertung der Bedingung. 2.4 Sprung- und Auswahlanweisungen Sprunganweisungen (engl. jump statements) legen eine Fortsetzungsstelle der Ausführung fest, die möglicherweise weit von der aktuellen Anweisung entfernt liegt. Wir betrachten hier nur Sprünge, die der Programmstruktur folgen Abbruchanweisung Syntax in Java: Anweisung break ; Semantik: Die Ausführung wird mit der Anweisung fortgesetzt, die nach der umfassenden Schleife oder Auswahlanweisung kommt. Typische Einsatzgebiete für die break-anweisung: 1. In Auswahlanweisung: siehe unten. 2. In Schleifenanweisungen: while ( true ) {... if( < Abbruchbedingung > ) break ; Auswahlanweisung Syntax in Java: Anweisung switch ( Ausdruck ) { FallListe 11
12 FallListe Fall FallListe ɛ Fall case Ausdruck : DeklAnweisListe default : DeklAnweisListe Auswahlanweisungen erlauben es, in Abhängigkeit vom Wert eines Ausdrucks direkt in einen von endlich vielen Fällen zu verzweigen. In Java gibt es dafür die switch-anweisung. Beispiel: public class SwitchExample { public static void main ( String [] args ) { String eingabe = args [0]; switch ( eingabe ) { case "a": System. out. println ("A wie Apfel "); break ; case "b": System. out. println ("B wie Banane "); break ; case "c": System. out. println ("C wie Clementine "); break ; default : System. out. println (" Falsches Eingabezeichen "); Die Werte hinter case müssen hierbei konstante Ausdrücke sein; Funktionen und veränderbare Variablen dürfen hier also nicht verwendet werden. Jeder Fall darf höchstens einmal in der Anweisung auftauchen. Der Typ des Ausdrucks muss dabei ein primitiver Typ, ein Aufzählungstyp oder String sein. Das Verwenden des Datentyps String in Auswahlanweisungen ist in Java erst seit Version 1.7 möglich. Die switch-anweisung wertet zuerst den Ausdruck aus und springt dann zum Fall mit dem entsprechenden Wert. Falls kein entsprechender Fall existiert springt die Ausführung zum default Fall, falls dieser auch nicht existiert zum Ende der switch- Anweisung.! Die Ausführung der switch-anweisung endet nicht, wenn der nachfolgende Fall beginnt. Es muss eine break-anweisung verwendet werden, um die Ausführung der switch-anweisung zu beenden. Weitere Arten von Anweisungen werden im Verlauf der Vorlesung noch behandeln. 2.5 Unterschied: Anweisung/Ausdruck Wir haben in der letzten Vorlesung bereits Ausdrücke kennengelernt. Ein Ausdruck (engl. expression) in Java ist (u.a.) ein Literal, ein Bezeichner (Variable, Name), die Anwendung einer Operation auf einen oder mehrere Ausdrücke, etc. 12
13 Ausdrücke sind das Sprachmittel zur Beschreibung von Werten. Die Auswertung von Ausdrücken liefert ein Ergebnis. Im Gegensatz dazu verändert die Ausführung von Anweisungen den Zustand. Im Allgemeinen liefern sie kein Ergebnis. Anweisungen können Ausdrücke enthalten, z.b. zur Beschreibung von Werten, die Variablen zugewiesen oder auf der Konsole ausgegeben werden sollen. Zusammenfassung: Neue Sprachelemente Anweisung { DeklAnweisListe Zuweisung if ( Ausdruck ) Anweisung if ( Ausdruck ) Anweisung else Anweisung while ( Ausdruck ) Anweisung do Anweisung while ( Ausdruck ) ; break ; switch ( Ausdruck ) { FallListe DeklAnweisListe Deklaration DeklAnweisListe Anweisung DeklAnweisListe ɛ Deklaration Typ Bezeichner ; Typ Bezeichner = Ausdruck; Typ PrimitiverTyp Bezeichner PrimitiverTyp byte short int long float double char boolean Zuweisung Bezeichner = Ausdruck ; FallListe Fall FallListe ɛ Fall case Ausdruck : DeklAnweisListe default : DeklAnweisListe 13
14 Hinweise zu den Fragen Hinweise zu Frage 1: Die Anweisung Wähle ein x aus prefixlen aus lässt die Auswahlreihenfolge offen. Der Ablauf des Algorithmus ist daher nicht eindeutig bestimmt, sondern kann bei gleicher Eingabe in jedem Programmdurchlauf anders sein. Hinweise zu Frage 2: Eine mögliche Implementierung ist die folgende: int x, y; int max ; x =...; // Initialisieren von x y =...; // Initialisieren von y if ( x > y ) { if ( x > z ) { max = x; else { max = z; else { if ( y > z ) { max = y; else { max = z; 14
Kapitel 04: Was ist ein Algorithmus? Software Entwicklung 1
Kapitel 04: Was ist ein Algorithmus? Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller In diesem Abschnitt beschäftigen wir uns dem Begriff des Algorithmus, der in der Informatik eine
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Der Begriff des Algorithmus Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 48 Der Begriff
Software Entwicklung 1. Der Begriff des Algorithmus. Der Begriff des Algorithmus I. Der Begriff des Algorithmus II
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Der Begriff des Algorithmus Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 48 Der Begriff
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Programmparameter in Java-Programmen verwenden Typumwandlungen verstehen und anwenden Begriff des Algorithmus
Definition: (Kette, noethersche Ordnung) Definition: (Kette, noethersche Ordnung) (2) Lemma: Terminierungskriterium:
Definition: (Kette, noethersche Ordnung) Definition: (Kette, noethersche Ordnung) (2) Sei (M, ) eine Ordnung. Eine Folge ϕ : N M heißt eine (abzählbar unendliche) aufsteigende Kette, wenn für alle i N
Definition: (Kette, noethersche Ordnung)
3. Funktionales Programmieren 3.4 Semantik, Testen und Verifikation Definition: (Kette, noethersche Ordnung) Sei (M, ) eine Ordnung. Eine Folge ϕ : N M heißt eine (abzählbar unendliche) aufsteigende Kette,
Programmiertechnik Kontrollstrukturen
Programmiertechnik Kontrollstrukturen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Kontrollstrukturen? Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,
Einstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
Martin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration
Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.
Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Kontrollstrukturen Was sind Kontrollstrukturen Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,
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
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
Begriffsklärung: (Effizienz) (2) Begriffsklärung: (deterministisch) Beispiel: (nicht-deterministischer Algorithmus) (2)
4. Prozedurales Programmieren 4.1 Der Begriff des Algorithmus Begriffsklärung: (Effizienz) (2) 4. Prozedurales Programmieren 4.1 Der Begriff des Algorithmus Begriffsklärung: (deterministisch) Mit den gemachten
Java Anweisungen und Ablaufsteuerung
Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht
Java Ablaufsteuerung (Beispiele)
Informatik 1 für Nebenfachstudierende Grundmodul Java Ablaufsteuerung (Beispiele) Kai-Steffen Hielscher Folienversion: 16. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Blöcke Anweisungen
EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
Vorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
Kapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
Martin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Wiederholung Anweisungen durch Methodenaufrufe Ausgabe
Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
Kapitel 3: Anweisungen
Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -66 Kapitel : Anweisungen Bedingte Anweisungen (Verzweigungen) Wiederholte Anweisungen (Schleifen) Abweisschleife Durchlaufschleife
Kapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
Javakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
Objektorientierte Programmierung
Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung
Kapitel 4: Anweisungen und Kontrollstrukturen
inführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 4: Anweisungen und Kontrollstrukturen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische
Vorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
Einstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
Java I Vorlesung Imperatives Programmieren
Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.
4.4 Imperative Algorithmen Prozeduren
4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):
Einstieg in die Informatik mit Java
Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for
Tag 3 Repetitorium Informatik (Java)
Tag 3 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Typkonvertierung
Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken
Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken Aufgabe 1.60 a) Welchen Wert erhält die boolesche Variable z in folgendem Beispiel? int i = 2, j = 5; boolean
EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
Intensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15
EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
2 Programmieren in Java I noch ohne Nachbearbeitung
1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser
FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:
2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden
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
Java: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
Grundlagen der Programmierung Teil1 Einheit III Okt. 2010
Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den
Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge
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
Kontrollstrukturen -- Schleifen und Wiederholungen
Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17
EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung
Übersicht Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung Einführung in die Programmierung 5. Grundlagen der funktionalen & imperativen Programmierung 1 Übersicht 5.1 Sorten und Abstrakte
3. Grundanweisungen in Java
3. Grundanweisungen in Java Die Grundanweisungen entsprechen den Prinzipien der strukturierten Programmierung 1. Zuweisung 2. Verzweigungen 3. Wiederholungen 4. Anweisungsfolge (Sequenz) Die Anweisungen
Vorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND
Imperative Programmierung in Java: Kontrollfluß II
2 Imperative Programmierung in va: Kontrollfluß II Martin Wirsing Ziele Lernen imperative Programme in va mit Zuweisung, Block, Fallunterscheidung, Iteration zu schreiben Lernen Kontrollflußdiagramme zur
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
JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
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
Javakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen
C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen Gehe nach links oder rechts Gehe solange geradeaus... Leibniz Universität IT Services Anja Aue Programmabläufe grafisch abbilden
Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1
Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir
Vorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen.
Grundlegende Programmstrukturen Seite 1 von 14 Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen. Sequenzen Eine Sequenz ist eine Folge von en (sblock) ohne Verzweigungen. Der
EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18
EINI LogWing/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
C-Propädeutikum Anweisungen
C-Propädeutikum Anweisungen Stefan Freitag freitag@uni-leipzig.de Universitätsrechenzentrum Universitätsbibliothek Universität Leipzig basiert auf den Originalfolien von Jörn Hoffmann Ausdrücke Institut
Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration
Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if
C- Kurs 04 Anweisungen
C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa@k.uni- leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm
Dr. Monika Meiler. Inhalt
Inhalt 4 C-Anweisungen...4-2 4.1 Ausdrucksanweisungen...4-3 4.2 Zusammengesetzte Anweisungen (Anweisungsblöcke)...4-3 4.3 Schleifenanweisungen...4-4 4.3.1 while - Schleife...4-4 4.3.2 do - Schleife...4-5
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: skuehn@informatik.htw-dresden.de
2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht
Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante
5. Elementare Befehle und Struktogramme
5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen
Grundlagen der Programmierung Teil1 Einheit III Okt. 2009
Grundlagen der Programmierung Teil1 Einheit III - 23. Okt. 2009 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Ausdrücke & Anweisungen
Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik
Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen Neben der Sequenz (Aneinanderreihung von Anweisungen)
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
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf
C++ - Einführung in die Programmiersprache Schleifen
C++ - Einführung in die Programmiersprache Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Schleifen Iterationsanweisungen. Wiederholung von Anweisungsblöcken.
Welche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement
Wenn... dann... if (condition) statement condition false true statement if (kontostand < 0) System.out.println("Oops..."); 31 ... sonst... if (condition) statement1 else statement2 condition false true
2 Teil 2: Nassi-Schneiderman
2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der
Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
Java für Anfänger Teil 4: Anweisungen. Programmierkurs Manfred Jackel
Java für Anfänger Teil 4: Anweisungen Programmierkurs 11.-15.10.2010 Manfred Jackel Anweisungen Werzuweisung (hatten wir schon) Verzweigung Fallunterscheidung Schleifen Methodenaufruf Wiederholung: Klassendeklaration
Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue
Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Anweisung int zahl; zahl = 2; zahl = zahl * 10; int zahl; ; Jede Anweisung endet mit einem
Einführung in die Informatik Iterationen
Einführung in die Informatik Iterationen Konstruktion, Anwendungen, Varianten Wolfram Burgard 1 Motivation Im vorangegangenen Kapitel haben wir mit der while-schleife eine Form von Wiederholungsanweisungen
Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
2.2 Syntax, Semantik und Simulation
2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?
Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um