3. Algorithmenentwurf und JAVA. Informatik II für Verkehrsingenieure

Ähnliche Dokumente
Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Elementare Konzepte von

3. Anweisungen und Kontrollstrukturen

Objektorientierte Programmierung

Java Anweisungen und Ablaufsteuerung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Java Ablaufsteuerung (Beispiele)

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Java I Vorlesung Imperatives Programmieren

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Javakurs für Anfänger

Vorkurs Informatik WiSe 16/17

Einstieg in die Informatik mit Java

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

2 Programmieren in Java I noch ohne Nachbearbeitung

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

JAVA-Datentypen und deren Wertebereich

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Intensivübung zu Algorithmen und Datenstrukturen

Vorkurs Informatik WiSe 17/18

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Javakurs für Anfänger

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Imperative Programmierung in Java: Kontrollfluß II

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Einfache Rechenstrukturen und Kontrollfluss

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Einfache Rechenstrukturen und Kontrollfluß

Algorithmen zur Datenanalyse in C++

Vorlesung Programmieren

Vorlesung Programmieren

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Ein erstes Java-Programm

Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Objektorientierte Programmierung OOP Programmieren mit Java

Grundlagen der Modellierung und Programmierung, Übung

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Einführung in die Programmierung Wintersemester 2011/12

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Kapitel 04: Was ist ein Algorithmus? Software Entwicklung 1

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Programmieren I. Kapitel 5. Kontrollfluss

Java für Anfänger Teil 4: Anweisungen. Programmierkurs Manfred Jackel

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Einführung in die Programmierung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Java-Applikationen (Java-Programme)

Java - Programmierung - Prozedurale Programmierung 1

Programmiervorkurs Einführung in Java Tag 1

4.4 Imperative Algorithmen Prozeduren

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Wo sind wir? Kontrollstrukturen

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

Was ist ein Algorithmus? Software Entwicklung 1

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Welche Informatik-Kenntnisse bringen Sie mit?

Java: Eine kurze Einführung an Beispielen

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

2 Teil 2: Nassi-Schneiderman

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Java: Syntax-Grundlagen III

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Arbeitsblätter für Algorithmierung und Strukturierung C #

Informatik Vorkurs - Vorlesung 2

Grundelemente objektorientierter Sprachen (1)

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Kontrollstrukturen und Logik

RO-Tutorien 3 / 6 / 12

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Kapitel 4: Anweisungen und Kontrollstrukturen

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

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Transkript:

3. Algorithmenentwurf und JAVA Informatik II für Verkehrsingenieure

Schwerpunkt 1 ALGORITHMEN UND UMSETZUNG Aufgabe Algorithmus Programm Eigentliche Entwicklung der Verfahrensidee Codierung Algorithmenentwurf Konzeptionell getrennte Schritte (bei kleineren Aufgaben oft verschmolzen) ZIEL 1 VON INFORMATIK II von der Aufgabe zum Algorithmus 2

Definitionsversuch ALGORITHMUS Anleitung, wie ein bestimmtes Ziel zu einem Problem bzw. einer Aufgabe erreicht werden kann Anleitung ist dabei in der Art einer Liste von Anweisungen, die abgearbeitet werden müssen je Kontext sind die Anweisungen hinreichend primitiv zu halten eine Anweisung wie z.b. löse das Problem sind unzulässig BEACHTE Bei der Definition ist nicht festgeschrieben, wer die Anweisungen ausführt (kann sowohl Computer als auch Mensch sein) Wichtig - Es muss in jedem Fall klar definiert sein, was getan werden muss - Es muss klar sein, was die erste Anweisung ist - Es muss klar sein, welche Anweisung nach der Ausführung einer beliebigen Anweisung als nächstes auszuführen ist 3

Beispiel AUFGABE In einem Zimmer befindet sich ein Haufen Abfall (1m³), der in den Müllcontainer im Keller gebracht werden muss. 4

Schleifen-Konstrukt UM SCHREIBARBEIT ZU SPAREN, FASST MAN WIEDERHOLTE AKTIONEN HÄUFIG ZUSAMMEN Was vollkommen legitim ist Solange eindeutig bleibt, was genau getan werden muss 5

Verallgemeinerung WAS IST, WENN DER MÜLLBERG GRÖSER ALS 1M³ IST ODER DER MÜLLKORB MEHR FASST ALS ANGENOMMEN? 6

Weiteres Element WEITERES ELEMENT FÜR ALGORITHMEN Gewisse Sachen merken Wie das Merken genau aussieht, spielt dabei erst einmal keine Rolle - Mensch: Gedächtnis, Notizblock, sonstige Erinnerungsstütze - Computer: Arbeitsspeicher, Festplatte, Für jede Sache, die zu merken ist, müssen wir einen bestimmten Platz reservieren Wir wollen die Möglichkeit lassen, nach gewisser Zeit an dieser Stelle neue Informationen zu merken Merken ist dabei nichts Ergänzendes, sondern es wird immer die alte Information an dieser Stelle vergessen und überschrieben mit der neuen Information 7

Problem (2) AUFGABE Es soll berechnet werden, was n hoch k (n^k). n und k sollen dabei nicht negative, ganzen Zahlen (also ohne Nachkommastellen) sein. Dem Ausführer wird als Voraussetzung gegeben, dass er multiplizieren kann. 8

Algorithmus 9

Problem (3) AUFGABE Entwickeln Sie einen Algorithmus zur Addition zweier großen Zahlen (nicht negative, ganze Zahlen, also ohne Nachkommastelle), die im Dezimalsystem vorliegen. Ihnen ist bekannt, wie 2 Zahlen von 0 bis 9 inklusive einer 3. Zahl, die entweder 0 oder 1 ist, zu addieren ist. 10

Algorithmus 11

Problem (4) AUFGABE Algorithmus zur Berechnung des größten gemeinsamen Teilers (GGT) von zwei natürlichen Zahlen a und b. Beschrieben von Euklid von Alexandria (300 v.chr.) im Werk Die Elemente 12

Algorithmus 13

Nachfolgende Fragestellungen ES ERGEBEN SICH FOLGENDE INTERESSANTE FRAGEN: Ist der Algorithmus korrekt? - Also: berechnet er wirklich den GGT aus (a,b)? - Wieso funktioniert dieser Algorithmus überhaupt? Ist der Algorithmus vollständig? - Kann ich wirklich jedes Paar (a,b) eingeben? Ist der Algorithmus terminierend (evtl. Endlosschleife)? Ist der Algorithmus effizient? - Wie viel Speicher benötigt er? - Wie viel Zeit (d.h. Verarbeitungsschritte) benötigt er? - Wie hängt das von der Eingabe (a,b) ab? - Wir müssen solche Aussagen immer mathematisch beweisen. 14

Schwerpunkt 2 ALGORITHMEN UND UMSETZUNG Aufgabe Algorithmus Programm Eigentliche Entwicklung der Verfahrensidee Codierung ZIEL 2 VON INFORMATIK II Vom Algorithmus zum Programm Konzeptionell getrennte Schritte (bei kleineren Aufgaben oft verschmolzen) Algorithmusumsetzung 15

Java-Programm GRUNDSTRUKTUR EINES JAVA-PROGRAMMS auch wenn es befremdend am Anfang wirkt Struktur wird zum späteren Zeitpunkt genauer erläutert. Class MeinErstesProgramm { public static void main(string[] args) { // Hier ist der Anfang unseres Programmes // Jetzt ist hier der Platz für unsere eigenen // Anweisungen } } 16

Erläuterungen JAVA-PROGRAMM Muss immer in einer Klasse definiert sein. Wir haben sie MeinErstesProgramm genannt In geschweiften Klammern folgen benutzerdefinierte Methoden (Funktionen), die die Klasse anbietet METHODE Ist eine Sammlung von Anweisungen (Block) unter einem Namen Schlüsselwort main kennzeichnet die Hauptmethode, die zum Programmstart aufgerufen wird (per Definition) 17

Bezeichner DEFINITION Ein Bezeichner ist eine Folge von Buchstaben und Zahlen, die mit einem Buchstaben beginnt Verwendet für Variablen, Methoden (Funktionen),... Als Alphabet wird UNICODE zugrunde gelegt - 16 Bit lang à etwa 65.00 Zeichen können kodiert werden (Zeichen fast aller Schriftsprachen) - Beinhaltet die ASCII-Zeichen nach ISO-8859-1 (Latin-1) - Günther ist ein legaler Bezeichner, trotz Umlaut! UNTERSCHEIDUNG Selbstdefinierte Bezeichner Reservierte Bezeichner 18

Bezeichner SELBSTDEFINIERTE BEZEICHNER Selbstdefinierte Bezeichner sind Namen für im Programm deklarierte syntaktische Einheiten Beispiel: Variablen, Methoden,... Die meisten Bezeichner sind selbstdefiniert RESERVIERTE BEZEICHNER ( SCHLÜSSELWÖRTER ) Reservierte Bezeichner sind fester Teil der Programmiersprache Sie dürfen nicht als Namen eigener Deklarationen verwendet werden 19

Variablen VARIABLE dient zur Ablage von Daten typisch für imperative Programmiersprachen reservierter Speicherplatz belegt abhängig vom Typ eine feste Anzahl von Bytes VARIABLE HAT EINEN TYP Typ zur Übersetzungszeit bekannt (statisch typisiert) auch bezeichnet als Datentyp VARIABLE HAT EINEN DATENWERT Inhalt der Variable auch Datum genannt 20

Datentypen ZWEI KATEGORIEN IN JAVA Primitive Datentypen: sind die eingebauten Datentypen für Zahlen, Unicode-Zeichen und Wahrheitswerte Referenzdatentypen: damit lassen sich Objektverweise etwa auf Zeichenketten, Dialoge oder Datenstrukturen verwalten PRIMITIVE DATENTYPEN Arithmetische Typen & Wahrheitswerte Typ Belegung (Wertebereich) boolean true oder false char 16-Bit-Unicode byte -2^7 bis 2^7-1 (-128 127) short -2^15 bis 2^15-1 (-32.768 32.767) int -2^31 bis 2^31^-1 (-2.147.483.648 2.147.483.647) long -2^63 bis 2^63-1 float 1,40239846E-45f... 3,40282347E+38f double 4,94065645841246544E-324... 1,79769131486231570E+308 21

Variablendeklaration VARIABLEN Mit Variablen lassen sich Daten speichern, die vom Programm gelesen und geschrieben werden können Um Variablen zu nutzen, müssen sie deklariert werden DEKLARATION Immer die gleiche Form: [Modifikatoren] Typname Variablenname; Modifikatoren lernen wir später BEISPIEL Class Variablendeklaration { public static void main(string[] args) { String name; // Name int age; // Alter double income; // Einkommen } } 22

Variablendeklaration mit Initialisierung DEKLARATION MIT INITIALISIERUNG Variable mit initialemanfangswert belegen Form: [Modifikatoren] Typname Variablenname = Anfangswert; BEISPIEL Class Variablendeklaration2 { public static void main(string[] args) { String name = Dirk Habich ; // Name int age = 34; // Alter String job = Research Assistent // Beruf } } 23

Anweisungen in Java EINE ANWEISUNG (STATEMENT) WEIST DEN COMPUTER AN eine Berechnung vorzunehmen (expression statement) eine Variable einzurichten und zu initialisieren (declaration statement) einen Schritt im Programmfluss vorzunehmen (control flow statement) EINE ANWEISUNG WIRD DURCH EIN SEMIKOLON IN JAVA ABGESCHLOSSEN EIN LEERE ANWEISUNG BESTEHT AUS DEM ABSCHLIESENDEN SEMIKOLON ODER AUS EINEM PAAR GESCHWEIFTER KLAMMERN 24

Ausdrucks-Anweisungen (Expressions) EINE AUSDRUCKS-ANWEISUNG nimmt eine Berechnung vor besteht aus einem Ausdruck, der durch ein Semikolon abgeschlossen ist ES SIND ABER NUR BESTIMMTE AUSDRÜCKE ZUGELASSEN Zuweisungsausdrücke (mit =, += etc.) - Beispiele int i=5; x+=1; Präfix- oder Postfixformen von ++ oder -- - Beispiel i++; Methodenaufrufe - Beispiel System.out.println( hello ); Math.sin(Math.PI); 25

Kontrollfluss-Anweisungen (control flow) BLÖCKE (BLOCKS) Blöcke fassen durch Klammerung {} Anweisungssequenzen zu einer einzigen Anweisung zusammen VERZWEIGUNGEN (BRANCHES) Verzweigungen veranlassen Übergänge zu anderen Anweisungen im Kontrollfluss bedingte Übergänge: if, switch unbedingte Übergänge: break, continue ITERATIONEN, SCHLEIFEN (LOOPS) Iterationen organisieren strukturierte Wiederholungen im Kontrollfluss: while, do while, for 26

Bedingte Anweisungen: if - else DIE EINFACHE IF-ANWEISUNG HAT DIE FORM if (condition) statement1 DIE ALLGEMEINE IF-ELSE-ANWEISUNG HAT DIE FORM if (condition) statement1 else statement2 DABEI IST CONDITION EIN BOOLESCHER AUSDRUCK Falls condition zu true evaluiert wird statement1 ausgeführt Im Fall der if-else Anweisung wird sonst statment2 ausgeführt JEDES STATEMENT IST EINE ANWEISUNGEN Also evtl. ein Block oder wieder eine if-anweisung, oder die leere Anweisung, etc. 27

Bedingte Anweisungen - switch EINE WEITERE MÖGLICHKEIT EINER BEDINGTEN ANWEISUNG IST DIE FALLUNTERSCHEIDUNG (SWITCH CASE DEFAULT) switch(c) { case konst_1: {statement_1; break;} case konst_2: {statement_2; break;}... case konst_n: {statement_n; break;} default: {statement_d;} } statement_i wird ausgeführt, falls c == konst_i gilt konst_i müssen Konstanten sein DIE BREAK-ANWEISUNG AM ENDE JEDER CASE-ZEILE BEWIRKT DAS SOFORTIGE VERLASSEN DER SWITCH-ANWEISUNG Falls das break fehlt, wird der nachfolgende case-fall mit ausgeführt, ohne Test ob seine Bedingung zutrifft!!! 28

Schleifen-Anweisungen DAS KONSTRUKT while (condition) statement; DIE ANWEISUNG do statement while (condition); führt statement aus, solange der Ausdruck in condition zu true evaluiert führt statement aus und prüft danach anhand von condition, ob der Schleifendurchgang wiederholt werden soll. Oftmals wird es sich bei statment um einen Block handeln. Bei do-anweisungen ist statement fast immer ein Block 29

Unterschied WHILE-SCHLEIFE (KOPFGESTEUERTE ZEILE) vor der Ausführung des Anweisungsblocks wird die Bedingung (condition) gerüft, ob der Anweisungsblock überhaupt ausgeführt werden soll Anweisungsblock muss daher nicht unbedingt ausgeführt werden DO-WHILE-SCHLEIFE (FUSGESTEUERTE SCHLEIFE) nach der Ausführung des Anweisungsblocks wird die Bedingung (condition) geprüft, ob der Anweisungsblock nochmals ausgeführt werden soll Anweisungsblock wird mindestens einmal ausgeführt, selbst wenn die Bedingung falsch ist 30

Take-Home-Message ALGORITHMENENTWURF Aufgabe Algorithmus Programm Eigentliche Entwicklung der Verfahrensidee Codierung Konzeptionell getrennte Schritte (bei kleineren Aufgaben oft verschmolzen) ALGORITHMUS Anleitung, wie ein bestimmtes Ziel zu einem Problem bzw. einer Aufgabe erreicht werden kann Anleitung ist dabei in der Art einer Liste von Anweisungen, die abgearbeitet werden müssen je Kontext sind die Anweisungen hinreichend primitiv zu halten eine Anweisung wie z.b. löse das Problem sind unzulässig 31