Einstieg in die Informatik mit Java



Ähnliche Dokumente
Programmierkurs Java

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

Software Engineering I

Primzahlen und RSA-Verschlüsselung

2. Die Darstellung von Algorithmen

Überblick. Lineares Suchen

Dr. Monika Meiler. Inhalt

Kontrollstrukturen - Universität Köln

Einführung in die Informatik I

5. Tutorium zu Programmieren

Java: Vererbung. Teil 3: super()

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Was können Schüler anhand von Primzahltests über Mathematik lernen?

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Einstieg in die Informatik mit Java

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Theoretische Grundlagen der Informatik

Angewandte Mathematik und Programmierung

Grundbegriffe der Informatik

4. AuD Tafelübung T-C3

Test-Driven Design: Ein einfaches Beispiel

Java-Programmierung mit NetBeans

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Was ist ein Computer?

Zeichen bei Zahlen entschlüsseln

Programmieren was ist das genau?

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

Grundlagen der Theoretischen Informatik, SoSe 2008

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Eine Logikschaltung zur Addition zweier Zahlen

1. Grundlegende Konzepte der Informatik

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

1 topologisches Sortieren

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Erwin Grüner

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Klassendiagramm. (class diagram)

Übungsblatt 3: Algorithmen in Java & Grammatiken

Excel Pivot-Tabellen 2010 effektiv

Entwurf von Algorithmen - Kontrollstrukturen

Software Engineering Interaktionsdiagramme

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

Vorkurs Informatik WiSe 15/16

Excel Funktionen durch eigene Funktionen erweitern.

Kontrollstrukturen und Funktionen in C

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Einführung in die Java- Programmierung

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Einführung in die Programmierung

.NET Code schützen. Projekt.NET. Version 1.0

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Kapiteltests zum Leitprogramm Binäre Suchbäume

1. Einführung. 2. Die Abschlagsdefinition

3 ORDNER UND DATEIEN. 3.1 Ordner

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Ingenieurinformatik Diplom-FA (C-Programmierung)

Data Mining: Einige Grundlagen aus der Stochastik

1 Mathematische Grundlagen

Aufgabe 12 Nach dem Eintippen der Kantenlänge soll die folgende Tabelle den Rauminhalt und die Oberfläche eines Würfels automatisch berechnen.

C/C++ Programmierung

Anwendungsbeispiele Buchhaltung

Funktion Erläuterung Beispiel

Kurze Anleitung zum Guthaben-Aufladen bei.

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

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

Formale Sprachen und Grammatiken

Wollen Sie einen mühelosen Direkteinstieg zum Online Shop der ÖAG? Sie sind nur einen Klick davon entfernt!

Probleme beim Arbeiten mit Variablen, Termen und Gleichungen

Numerische Verfahren und Grundlagen der Analysis

Übungsblatt Teiler, Vielfache, Teilbarkeit und Primzahlen Klasse 6

Pfötchenhoffung e.v. Tier Manager

Kurzanleitung für Verkäufer

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Programmierung in C. Grundlagen. Stefan Kallerhoff

WS 2009/10. Diskrete Strukturen

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Übersicht Programmablaufsteuerung

7. Rufnummern zuweisen

Informatik Repetitorium SS Volker Jaedicke

Konzepte der Informatik

Online-Bestellung Tageskarten für Mitglieder des FC St. Pauli, die nicht im Besitz einer Dauer- oder Saisonkarte sind.

1. Allgemein Speichern und Zwischenspeichern des Designs Auswahl der zu bearbeitenden Seite Text ergänzen Textgrösse ändern 3

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Um eine Person in Magnolia zu erfassen, gehen Sie wie folgt vor:

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Problemdefinition. Cash Flow Reminder. 1 Problembeschreibung: 2 Projektziel: 3 Aufgaben des Benutzers

7 Rechnen mit Polynomen

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Transkript:

1 / 28 Einstieg in die Informatik mit Java Algorithmen Gerd Bohlender Institut für Angewandte und Numerische Mathematik

Gliederung 2 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme 5 Struktogramme

Gliederung 3 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme 5 Struktogramme

4 / 28 Überblick In diesem Kapitel werden Algorithmen und die Umsetzung einfacher Algorithmen in Java beschrieben. Algorithmus Genaue Vorschrift zur Berechnung / Bearbeitung eines Problems, z.b. Java-Programm Umsetzung in Java Darstellung des Algorithmus durch Befehle in Java

Gliederung 5 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme 5 Struktogramme

Algorithmus Präzise Beschreibung einer Berechnung oder allgemein eines Verfahrens. Benannt nach Muhammad al-chwarizmi, ca. 780-850 in Persien. Deterministischer Algorithmus: ein Verfahren mit folgenden Eigenschaften Das Verfahren muss durch einen endlichen Text oder eine endliche Grafik beschrieben werden (Finitheit) Jeder Schritt des Verfahrens muss eindeutig ausführbar sein (Ausführbarkeit) Der nächste anzuwendende Schritt des Verfahrens muss zu jedem Zeitpunkt eindeutig definiert sein (Determinismus) Das Verfahren darf zu jedem Zeitpunkt nur endlich viel Speicherplatz benötigen (Dynamische Finitheit) Das Verfahren muss nach endlich vielen Schritten enden (Terminierung) 6 / 28

7 / 28 Algorithmus: spezielle Varianten In manchen Fällen sind Ausnahmen sinnvoll: Keine Terminierung: Mathematisches Iterationsverfahren: konvergiert gegen Lösung Keine Terminierung: Betriebssystem eines Rechners Keine Terminierung: Steuersoftware eines Geräts (z.b. Handy, Auto) oder Fertigungsprozess (z.b. in Chemiewerk) sollen dauerhaft laufen Kein Determinismus: Verwendung einer (echten) Zufallszahl, unvorhersehbare zeitliche Abläufe in Parallelrechner

Beispiel zu Algorithmus: Euklidischer Algorithmus Berechne den größten gemeinsamen Teiler von zwei natürlichen Zahlen a und b. Euklid, ca. 360 v. Chr. (Athen) - 280 v. Chr. (Alexandria, heute Ägypten) 1 Solange b 0 ist, wiederhole folgende Schritte 2 Berechne h = a mod b (Rest bei der Division) 3 Setze a = b 4 Setze b = h Dann ist a der ggt der ursprünglichen Zahlen. Ablauf am Beispiel a = 20, b = 24: a b h 20 24 20 24 20 4 20 4 0 4 0 Der ggt von 20 und 24 ist 4. 8 / 28

Beispiel zu Algorithmus: Sieb des Eratosthenes Berechne alle Primzahlen bis zu einer gegebenen Zahl N > 1. Eratosthenes, ca. 276 v. Chr. (Kyrene, heute Libyen) bis 194 v. Chr. (Alexandria, heute Ägypten) 1 Erstelle Liste KANDIDATEN aller ganzen Zahlen von 2 bis N 2 Erstelle leere Liste PRIM der bereits erkannten Primzahlen 3 Wiederhole folgende Schritte, bis die Liste KANDIDATEN leer ist 4 Bestimme die kleinste Zahl X in der Liste der KANDIDATEN 5 Füge X zur Liste PRIM hinzu 6 Streiche X und alle seine ganzzahligen Vielfachen aus der Liste der KANDIDATEN Ablauf am Beispiel N = 10: X KANDIDATEN PRIM 2, 3, 4, 5, 6, 7, 8, 9, 10 (leer) 2 3, 5, 7, 9 2 3 5, 7 2, 3 5 7 2, 3, 5 7 (leer) 2, 3, 5, 7 9 / 28

10 / 28 Beispiel Roulette: Kein Algorithmus Fahre nach Baden-Baden und gewinne im Roulette 1 Beginne mit 1 Euro Einsatz 2 Wiederhole die folgenden Schritte bis Du eine Million Euro gewonnen hast 3 Setze den Einsatz auf rot oder schwarz 4 Falls Du gewinnst, kassiere den Gewinn und beginne wieder mit 1 Euro Einsatz 5 Falls Du verlierst, verdopple den Einsatz Kein Algorithmus: nicht determiniert, unbeschränkte Zwischenergebnisse.

Beispiel Roulette: Kein Algorithmus 11 / 28 Ablauf, Anfangsguthaben 100 Euro: Einsatz Gewinn Guthaben 1 1 101 1 0 100 2 0 98 4 0 94 8 0 86 16 16 102... Theoretisch steigt das Guthaben nach jeder Verdoppelungsphase um 1 Euro Praktisch funktioniert dies so nicht, da zwischenzeitliche Verluste beliebig groß werden können. Auftreten von Zero und weitere Regeln der Spielbank (z.b. Mindest- und Höchsteinsatz) sind zu beachten.

Gliederung 12 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme 5 Struktogramme

Grundalgorithmen in Java Die wichtgsten Anweisungen in Java: Wertzuweisung: Variable erhält den Wert der rechten Seite x = 27; y = 3 x + 2; Eingabeanweisung: Variable erhält einen eingelesenen Wert i = sc. n e x t I n t ( ) ; x = sc. nextdouble ( ) ; Ausgabeanweisung: der Wert wird ausgegeben System. out. p r i n t l n ( B i t t e x eingeben : ) ; System. out. p r i n t l n ( y ) ; System. out. p r i n t l n ( Ergebnis = + y ) ; Alle verwendeten Variablen müssen zuvor definiert werden, z.b i n t i, j, k ; double x, y ; 13 / 28

Grundstruktur eines Java-Programms 14 / 28 Der typische Aufbau eines Java-Programms import java. u t i l. ; public class ProgrammName { public s t a t i c void main ( S t r i n g [ ] args ) { Locale. s e t D e f a u l t ( Locale.US ) ; Scanner sc = new Scanner ( System. i n ) ; / / h i e r werden die benötigten / / Variablen d e f i n i e r t } } / / h i e r s t e h t der Algorithmus des Programms / / ( Folge von Anweisungen )

Gliederung 15 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme 5 Struktogramme

16 / 28 Flussdiagramme Kompliziertere Algorithmen müssen formal beschrieben werden. Flussdiagramme / Programmablaufpläne Anweisungen in Rechtecken / Rauten / Parallelogrammen Reihenfolge der Anweisungen wird mit Pfeilen angezeigt in DIN 66001 genormt kann unübersichtlich werden schwierig zu bearbeiten

Flussdiagramm: Gib 1 bis 39 und 61 bis 100 aus Quelle: de.wikipedia.org/wiki/programmablaufplan 17 / 28

Gliederung 18 / 28 1 Überblick 2 Algorithmus 3 Grundalgorithmen in Java 4 Flussdiagramme 5 Struktogramme

19 / 28 Struktogramme Kompliziertere Algorithmen müssen formal beschrieben werden. Flussdiagramme oft unübersichtlich und unstrukturiert Alternative: Struktogramme / Nassi-Shneiderman-Diagramme Rechteckige Kästen enthalten elementare Anweisungen Die Kästen können aneinander gereiht und geschachtelt werden von Isaac Nassi und Ben Shneiderman entwickelt (1972/73, USA) in DIN 66261 genormt Weitere Alternative: UML (Unified Modeling Language) Quelle der folgenden Grafiken: de.wikipedia.org/wiki/nassi-shneiderman-diagramm

Folge von Anweisungen 20 / 28 Mehrere Anweisungen sollen in der angegebenen Reihenfolge ausgeführt Darstellung in Java: { } Anweisung1 Anweisung2 Anweisungn

Einfache Auswahl von Anweisungen 21 / 28 Abhängig von einer Bedingung sollen Anweisungen ausgeführt werden oder nicht Darstellung in Java: i f ( Bedingung ) { Anweisung1 Anweisung2 Anweisungn }

Zweiseitige Auswahl von Anweisungen 22 / 28 Abhängig von einer Bedingung sollen Anweisungen ausgeführt werden oder andere Anweisungen Darstellung in Java: i f ( Bedingung ) { Anweisung1. 1 Anweisung1. 2 Anweisung1. n } else { Anweisung2. 1 Anweisung2. 2 Anweisung2. n }

Wiederholung von Anweisungen 23 / 28 Anweisungen soll mehrfach ausgeführt werden Darstellung in Java: for ( i n t i = S t a r t w e r t ; i <=Endwert ; i ++) { Anweisung1 Anweisung2 Anweisungn }

Wiederholung von Anweisungen 24 / 28 Solange eine Bedingung erfüllt ist, sollen Anweisungen wiederholt werden; die Bedingung soll zuerst geprüft werden Darstellung in Java: while ( Bedingung ) { Anweisung1 Anweisung2 Anweisungn }

Wiederholung von Anweisungen 25 / 28 Solange eine Bedingung erfüllt ist, sollen Anweisungen wiederholt werden; die Bedingung soll erst nachträglich geprüft werden Darstellung in Java: do { Anweisung1 Anweisung2 Anweisungn } while ( Bedingung ) ;

Auswahl von Anweisungen 26 / 28 Je nach Wert eines Ausdrucks sollen unterschiedliche Anweisungen ausgeführt werden Darstellung in Java: switch ( Ausdruck ) { Wert1 : Anweisungen1 Wert2 : Anweisungen2 Wert3 : Anweisungen3 Wertn : Anweisungenn default : AlternativAnweisungen }

Aufruf einer Methode 27 / 28 Rufe eine Methode auf (berechne Funktion, führe Zwischenrechnung aus) Darstellung in Java: namedermethode ( Parameter )

Zusammensetzung geschachtelter Anweisungen 28 / 28 Berechne den ggt zweier Zahlen, nur mit Subtraktionen Darstellung in Java: while ( a>0 && b>0) { i f ( a > b ) { a = a b ; } else { b = b a ; } } i f ( b == 0) { System. out. p r i n t l n ( a ) ; } else { System. out. p r i n t l n ( b ) ; }