Javakurs für Anfänger

Ähnliche Dokumente
Javakurs für Anfänger

Javakurs für Anfänger

Javakurs für Anfänger

Javakurs für Anfänger

Javakurs für Anfänger

Javakurs für Anfänger

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 17/18

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Javakurs für Anfänger

Einstieg in die Informatik mit Java

Teil 2: Weitere Aspekte der Objektorientierung

Einstieg in die Informatik mit Java

Javakurs für Anfänger

System.out.println("TEXT");

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Javakurs für Anfänger

Javakurs für Anfänger

Einstieg in die Informatik mit Java

Erste Java-Programme (Scopes und Rekursion)

CS1005 Objektorientierte Programmierung

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

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

JAVA - Methoden

Javakurs für Anfänger

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

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

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

Objektorientiertes Programmieren (Java)

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Vorbereitende Aufgaben

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

2 Programmieren in Java I noch ohne Nachbearbeitung

Einführung in die Programmierung mit BlueJ

Javakurs für Anfänger

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 2. Blatt Für die Woche vom 3.5. bis zum 7.5.

Javakurs für Anfänger

JAVA - Methoden - Rekursion

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einführung in die Programmierung 1

Wie entwerfe ich ein Programm?

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Javakurs für Anfänger

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

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

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

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

2 Teil 2: Nassi-Schneiderman

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

3. Anweisungen und Kontrollstrukturen

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Objektorientierte Programmierung und Modellierung

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Fakultät IV Elektrotechnik/Informatik

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Programmierung für Mathematik HS11

Objektorientierte Programmierung

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

Klassen, Vererbung, Benutzereingabe

Übungsstunde 3. Einführung in die Programmierung

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Computeranwendung und Programmierung (CuP)

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World

Vorbereitende Aufgaben

Programmieren in Java

Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen.

Java: Eine kurze Einführung an Beispielen

Umsetzung einer Klassenkarte in einer Programmiersprache

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Javakurs für Fortgeschrittene

Intensivübung zu Algorithmen und Datenstrukturen

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Javakurs für Anfänger

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Klausur Grundlagen der Programmierung

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

Java I Vorlesung Imperatives Programmieren

Transkript:

Javakurs für Anfänger Einheit 05: Programmablauf Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Heutige Agenda 1. Teil: Nutzereingaben EVA Prinzip Eingaben über die Konsole Eingaben über GUI Programmieraufgabe: Kreisberechnung II 2. Teil: Programmablauf 3 Grundstrukturen von Algorithmen Wie bisher: Anweisungsfolgen Blöcke und Sichtbarkeitsbereiche Lernziele Erweiterte Kontrollstrukturen kennenlernen Sichtbarkeitsbereiche von Variablen verstehen Mit Auswahlstrukturen umgehen können 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 2

Programmieraufgabe (Letzte Stunde) Lösen Sie bitte selbstständig die folgende Programmieraufgabe zu Klassen & Objekten in Java: Erstellen Sie ein neues Projekt Uebung03 mit einer Klasse Kreis Die Klasse Kreis besitzt: Ein Attribut radius, welches den Radius des Kreises als Kommazahl Double speichert Einen Konstruktor mit leerer Parameterliste, der den Radius mit 0 initialisiert Einen zweiten Konstruktor, dem als Parameter eine Kommazahl zur Initialisierung des Radius übergeben wird. Getter und Setter für den Radius Eine Methode double getumfang(), welche den Umfang des Kreises berechnet und zurückliefert Hinweis: Kreisumfang = 2*pi*radius Hinweis: pi kann als double mit 3.14 oder mittels Math.PI angegeben werden Eine Methode double getflaeche(), welche die Fläche des Kreises berechnet und zurückliefert Hinweise: Kreisfläche = r²*pi Erstellen Sie ein Testprogramm KreisTest, das: Einen Kreis mit radius = 5 erzeugt Und anschließend den Radius, den Umfang und die Fläche auf der Konsole ausgibt. 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 3

Teil 2: Erweiterter Programmablauf Benutzereingabe während des Programmablaufs Wir wollen das Kreis-Attribut radius nicht fest im Programmcode verbauen (hardcoded), sondern es erst zur Laufzeit durch eine Benutzereingabe einlesen! Der Dialog mit dem Anwender (EVA Prinzip) Eingabe Verarbeitung Ausgabe Dem Programm werden Daten vom Nutzer durch dessen Eingabe bereitgestellt Mit diesen Daten arbeitet das Programm in der Verarbeitungsphase Teilt dem Nutzer bzw. dem Anwender die berechneten Ergebnisse in der Ausgabe mit radius = Eingabe berechneumfang() System.out.println() Jetzt Bisher 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 4

Nutzereingaben Nutzereingabe über die Tastatur: Über die Konsole (Standardeingabe) Über eine grafische Benutzerschnittstelle GUI (graphical user interface) 1. Benutzereingabe über Konsole: System.in liefert uns den InputStream der Standardeingabe analog zu System.out für OutputStream der Standardausgabe Wir bedienen uns der Java Klasse Scanner aus dem Package java.util, der wir im Konstruktor den InputStream der Standardeingabe übergeben: Scanner scan = new Scanner(System.in); Mit den Methoden des Scanners können Eingabewerte gelesen werden scan.next(): gibt nächstes Token als String zurück Eine Zahl als Eingabe ist zunächst auch String Kann mittels Integer.parseInt(eingabe) zu Integer umgewandelt werden Analog für Kommazahl-Eingabe: Double.parseDouble(eingabe) Scan.nextInt(): gibt nächstes Token als int zurück 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 5

Benutzereingabe über Konsole // Java Beispiel für Nutzereingabe über die Konsole import java.util.scanner; // Klasse Scanner muss importiert werden // Objekt der Klasse Scanner mit Standardeingabe erzeugen Scanner scan = new Scanner(System.in); // Nutzer zur Eingabe auffordern: System.out.println( Bitte geben Sie einen Wert ein: ); // Nutzereingabe lesen und als String speichern String eingabe = scan.next(); // Nutzereingabe ausgeben System.out.println( Sie haben +eingabe+ eingegeben ); // Oder Nutzereingabe in Integer umwandeln, falls Eingabe eine korrekte Zahl int zahl_eingabe = Interger.parseInt(eingabe) Programmieraufgabe: Schreiben Sie Ihr Programm zur Kreisberechnung von vorhin so um, dass der Benutzer aufgefordert wird den Radius in der Konsole einzugeben. Das Programm soll dann den eingegebenen Wert verwenden, um den Radius, den Umfang und die Fläche auf der Konsole auszugeben! 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 6

Benutzereingabe über GUI Die Klasse JOptionPane aus dem Packet javax.swing besitzt die Methode showmessagedialog: Zeigt ein grafisches Fenster mit einer Eingabeaufforderung Liefert nach klicken auf ok die Eingabe als String zurück // Beispiel für Nutzereingabe über GUI // Klasse JOptionPane muss importiert werden! import javax.swing.joptionpane; public class MeineKlasse{ public static void main(string[] args){ // Fenster zur Werteingabe erzeugen und Eingabe als String speichern String eingabe = JOptionPane.showInputDialog( Bitte einen Wert eingeben! ); // Dann kann man wieder mit der Eingabe als String arbeiten. Bsp.: System.out.println( Ihre Eingabe war +eingabe); Programmieraufgabe: Verwenden Sie nun das graphische Interface für die Abfrage des Radius und lassen Sie sich wieder den Radius, den Umfang und die Fläche des Kreises ausgeben. 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 7

Steuerung des Programmablaufs: Einführung in Kontrollstrukturen Bisher: Einfacher sequentieller Ablauf von Befehlen Beispiel Student (letzte Stunde): public class Hauptprogramm { //Main-Methode public static void main(string[] args){ Student studi1 = new Student("Peter",3); Student studi2 = new Student("Hanna",5); studi1.lernen(); studi2.lernen(); In Zukunft wollen wir komplexere Abläufe programmieren können! Komplexere Abläufe verlangen Kontrollstrukturen. Beispiele: Wenn ein Student im höheren Semester ist, dann Ein Student lernt solange bis,. Alle Studenten machen. 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 8

Überblick über Kontrollstrukturen Ein Algorithmus lässt sich durch 3 Grundstrukturen beschreiben: Anweisungsfolge bzw. Sequenz Wie bisher: Schrittweise Abarbeitung von Befehlen von oben nach unten Auswahlstruktur bzw. Selektion Ermöglicht die bedingte Ausführung von Anweisungen Bsp.: if, else, switch-case Wiederholungsstruktur bzw. Iteration oder Schleife Mehrmalige Ausführung der gleichen Anweisungen Beispiele: while-, do-, for-schleifen 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 9

Anweisungsfolge (Sequenz) Wie bei unseren bisherigen Programmen: Die im Quellcode vorhandenen Anweisungen werden sequentiell von oben nach unten abgearbeitet. Die Sequenz ist damit die einfachste Kontrollstruktur Beispiel: anweisung1; Programmablaufplan DIN 66001 anweisung2; anweisung3; Darstellung als Programmablaufplan anweisung1 anweisung2 anweisung3 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 10

Blöcke Anweisungsfolgen können auch in Blöcken (mit geschweifte Klammern) zusammengefasst werden Werden von außen wie eine Einheit betrachtet Ein Block kann selbst Variablen definieren, die nur innerhalb des Blocks sichtbar sind Ein Block ist selbst wieder eine Anweisung Vorteile: Struktur und geschlossene Einheit Beispiel: // Beispiel für Blöcke anweisung1; { //Begin Block anweisung2; anweisung3; //End Block anweisung4; Anweisungen 2 und 3 bilden eine Einheit 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 11

Sichtbarkeit von x Sichtbarkeit von Variablen Die Verwendung von Blöcken wirkt sich auf die Sichtbarkeit von Variablen aus! Instanzvariablen sind mit this.instanzvariable innerhalb der kompletten Klasse sichtbar, also auch in allen Blöcken und Unterblöcken Lokale Variablen sind nur innerhalb des Blocks (inklusive aller Unterblöcke) in dem sie definiert wurden sichtbar! ( )//Beispiel public void domyverybest(int meinwert){ this.meinwert = 7; // Belegt Instanzvariable mit 7 int x = meinwert; // Belegt lokale Variabel x mit dem Parameterwert { //Begin Block y z int y = 5; //Int-Variable y wird definiert. Ist nur im Block sichtbar! int z = y+x; //Lokale Variable z = 5+x. x ist hier sichtbar, da Unterblock. // End Block x = z; // Fehler: x ist zwar sichtbar, aber z nicht, da außerhalb des Blocks 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 12

Auswahlstrukturen ermöglichen die bedingte Ausführung von Anweisungen Ausführung einzelner Anweisungen bzw. Blöcke wird von Erfüllung einer Bedingung abhängig gemacht Beispiele (im Folgenden): if-anweisung Verschachteltet if-anweisungen Switch-Case-Anweisungen Auswahlstruktur bzw. Selektion Programmablaufplan DIN 66001 Bedingung ja Anweisungen a nein Anweisungen b Was ist eine Bedingung? Zweiseitige Auswahlstruktur Unter einer Bedingung versteht man einen beliebigen Ausdruck, dessen Auswertung einen Wahrheits- bzw. booleschen Wert (true oder false) liefert. 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 13

Was ist eine Bedingung? Für eine Bedingung kann also entweder direkt eine Variable vom Typ boolean angegeben werden oder einen Methodenaufruf, der einen Wert vom Typ boolean zurückgibt oder man verwendet Vergleichsoperatoren bzw. logische Operatoren, wie in den folgenden Tabellen dargestellt: Vergleichs- Operator Bedeutung Priorität Logischer- Operator Bedeutung Priorität < kleiner 5 <= Kleiner gleich 5 > größer 5 >= größer gleich 5 == gleich 6!= ungleich 6 Vergleichsoperatoren! NICHT 1 & UND (vollständig) 7 ^ XOR 8 ODER (vollständig) 9 && UND 10 ODER 11 Logische Operatoren Hinweis: Die Prioritäten können mit Hilfe von runden Klammern beeinflusst werden 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 14

Beispiele // Einfache Beispiele für Vergleiche: a == 0; // Ist der Wert von a 0? b > 10; // Ist b größer 10? c!= 5; // Ist c ungleich 5? zahl <= 100;// Ist zahl kleiner gleich 100? // Einfache Beispiele für Logische Ausdrücke: (a < 5) && (b > 2); // Ist a kleiner 5 UND b größer 2? // Kann auch ohne Klammern geschrieben werden, wegen Prioritäten! // >,< hat Priorität 5 und && hat geringere Priorität 10 zahl >= 100 zahl < 10; // Ist zahl größer gleich 100 ODER kleiner 10? a == b b!= c && c < 10; //Ist c ungleich b UND kleiner 10 ODER a gleich b (a == b b!= c) && c < 10; // Ist a gleich b ODER b ungleich c UND c kleiner 10 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 15

Die if-anweisung Die if-anweisung entscheidet anhand einer Bedingung, welche Anweisungen ausgeführt werden. // Falls Bedingung zutrifft, führe Anweisungen A1, A2 aus, sonst führe Anweisungen B1, B2 aus! if(bedingung){ anweisung_a1; anweisung_a2; else{ anweisung_b1; anweisung_b2; // Konkretes Beispiel // Entscheidet, ob i<20 oder größer int i = 10; if(i<20){ System.out.println( i ist kleiner 20 ); else{ System.out.println( i ist groesser gleich 20 ); Zweiseitige Auswahlstruktur 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 16

Einfache if-anweisungen Es gibt auch einfache if-anweisungen (ohne else-block) Falls die Bedingung true ist, wird der if-block ausgeführt, sonst wird dieser einfach übersprungen if (Bedingung){ anweisung_a1; anweisung_a2; anweisung_b1; anweisung_b2; // // Konkretes Beispiel // Falls i > 20, belege Variable s int i = 10; String s = Ist kleiner gleich 20 ; if(i>20){ s = Ist groesser 20 ; System.out.println(s); 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 17

Verschachtelte if-anweisungen if-anweisungen können auch verschachtelt werden Falls es mehr als eine Alternative (else) geben soll, aber nur eine ausgewählt werden darf Verwendung von else if-anweisung Auch weitere if-anweisungen im else-block möglich if (Bedingung 1){ Anweisungen A; else if (Bedingung 2){ // Konkretes Beispiel // Zahl prüfen //int zahl ist definiert if (zahl == 0){ Anweisungen B; else if (Bedingung XY){ Anweisungen XYZ; else { sonstige Anweisungen System.out.println( Zahl ist 0 ); else if (zahl > 0){ Sytem.out.println( Zahl ist positiv ); else{ System.out.println( Zahl ist negativ ) 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 18

Ein paar Regeln: Verschachtelte if-anweisungen Es kann beliebig viele else-if Anweisungen geben Der letzte else-block ist wieder optional und bezieht sich auf die letzte if-bedingung Unterschied zwischen if und else if Anweisungen: Alle if-blöcke werden ausgeführt sobald die entsprechend Bedingung erfüllt ist, also true ergibt Nur ein else if Block wird ausgeführt, wenn die entsprechende Bedingung true ergibt Mit else if Anweisungen können wir also gegenseitige Ausschlusskriterien definieren 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 19

Übungen zu if-anweisungen Erstellen Sie ein neues Projekt in Eclipse mit Namen Uebung05 Aufgabe 1: Erstellen Sie in diesem Projekt ein Programm (Main-Methode) mit dem Namen Zahlentest Der Nutzer soll dabei 2 Zahlen vom Typ integer eingeben Nun sollen folgende Fälle geprüft werden: Sind beide Zahlen gleich, dann wird auf der Konsole ausgegeben, dass die Zahlen gleich sind Ist eine Zahl größer als die andere, dann soll die größere der beiden Zahlen mit einem entsprechenden Hinweis (bspw.: Die größere Zahl lautet: ) auf der Konsole ausgegeben werden. 16.11.2017 Javakurs 05: Programmablauf - Lorenz Schauer 20