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

Ähnliche Dokumente
Einführung in die Programmierung. 2.1 Methoden. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Übungsblatt 1. Java Vorkurs (WS 2017)

Einführung in die Programmierung

Java I Vorlesung Imperatives Programmieren

Intensivübung zu Algorithmen und Datenstrukturen

Übungen zur Vorlesung Wissenschaftliches Rechnen I

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

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

Vorkurs Informatik WiSe 16/17

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung Operatoren Kapitel 2 und 3

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Basispruefung Herbst 2016/ Einführung in die Programmierung

Die einfachsten Anweisungen

Angewandte Mathematik und Programmierung

Hello World! Eine Einführung in das Programmieren Variablen

Elementare Konzepte von

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

8. Ausdrücke, Operatoren (einfache Typen)

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

Primitive Datentypen

2.5 Primitive Datentypen

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

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

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.

Methoden und Wrapperklassen

Ausdrücke der Programmiersprache Java

Übung Praktische Informatik I

Javakurs für Anfänger

5.3 Auswertung von Ausdrücken

Operatoren in C/C++ und Java:

2 Eine einfache Programmiersprache

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Einführung in die Programmierung mit Java

Erste Java-Programme (Scopes und Rekursion)

Tag 2 Repetitorium Informatik (Java)

JAVA - Methoden

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Projekt 3 Variablen und Operatoren

Einführung in die Programmierung 1

2 Eine einfache Programmiersprache

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

Grunddatentypen, Ausdrücke und Variablen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

II.1.1. Erste Schritte - 1 -

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Ein erstes Java-Programm

Einstieg in die Informatik mit Java

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte.

Einführung in C. EDV1-04C-Einführung 1

System.out.println("TEXT");

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

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

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

Kontrollstrukturen: Wiederholungsanweisungen

Übungen zum Bioinformatik-Tutorium. Blatt 3

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

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

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

II.1.1. Erste Schritte - 1 -

Einstieg in die Informatik mit Java

Javakurs für Anfänger

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

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

2 Eine einfache Programmiersprache

Die Klasse java.lang.object. Thorsten Treffer

Interaktive Programme mit Scanner

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

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

2 Eine einfache Programmiersprache

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Einführung in die Programmierung

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Objektorientierte Programmierung

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2. Unterprogramme und Methoden

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Einführung in die Informatik Objekte

Programmiervorkurs. Wintersemester 2013/2014

3.4 Struktur von Programmen

Programmieren I. Operatoren und Ausdrücke Heusch 6.2 Ratz Institut für Angewandte Informatik

Umsetzung einer Klassenkarte in einer Programmiersprache

Informatik I - Einstiegskurs

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Tag 4 Repetitorium Informatik (Java)

Java Anweisungen und Ablaufsteuerung

Programmierpraktikum

Informatik Vorkurs - Vorlesung 2

Anregungen zu Übung 2

Transkript:

252-0027 Einführung in die Programmierung I 2.1 Methoden Thomas R. Gross Department Informatik ETH Zürich

Uebersicht 2.1 Methoden Struktur 2.2 Typen und Variable Einfache (eingebaute) Typen Deklaration von Variablen 2

2.1 Methoden Beispiel: main im Program HelloWorld 4

Methoden Methode: Sequenz von Anweisungen mit einem Namen (dem der Methode) Methoden strukturieren die Anweisungen Anstatt alle Anweisungen in einer Methode (main) unterzubringen Methoden erlauben es, Wiederholungen zu vermeiden Eine (neue) Methode stellt eine neue Anweisung zur Verfügung 5

static methods static methods: Methode mitweiteren Eigenschaften main isteine static method (Keyword static vor Name) main wird automatisch aufgerufen Wir erklären gleich wie andere Methoden aufgerufen werden 6

(Zu) Einfaches Beispiel public class PrintExample1 { public static void main(string[] args) { System.out.println("\n--------\n"); System.out.println("Warnung: sichern Sie die Daten\n"); System.out.println("\n--------\n"); System.out.println("Lange Erklaerung"); System.out.println("\n--------\n"); System.out.println("Warnung: sichern Sie die Daten\n"); System.out.println("\n--------\n"); } // main } 7

Output -------- Warnung: sichern Sie die Daten -------- Lange Erklaerung -------- Warnung: sichern Sie die Daten -------- 8

Wie entstehen Methoden? Entwickeln des Algorithmus Lösung des Problems Aufteilung in Teil-Probleme Deklaration des Algorithmus (aufschreiben, codieren) Ausführen (aufrufen, call, invoke ) der Methode(n) class method main n statement n statement n statement method one statement statement n n method two statement statement statement n n n 9

(Zu) Einfaches Beispiel public class PrintExample2 { public static void main(string[] args) { warning(); System.out.println("Lange Erklaerung"); warning(); } // main } public static void warning() { System.out.println("\n--------\n"); System.out.println("Warnung: sichern Sie die Daten\n"); System.out.println("\n--------\n"); } 10

Wie entstehen Methoden? Entwickeln des Algorithmus Lösung des Problems Aufteilung in Teil-Probleme Deklaration des Algorithmus (aufschreiben, codieren) Ausführen (aufrufen, call, invoke ) der Methode(n) class method main n one n statement n two method two statement statement n n method three n statement n statement n statement 11

Aufruf einer Methode Syntax: name(); Mehrfaches Aufrufen ist zulässig Beispiel: printwarning(); printwarning(); 12

Aufruf einer Methode Wenn die Anweisung (für die Methode name) name(); // naechste Anweisung stmt ausgeführt wird, dann wird die Methode name aufgerufen ("invoked", "called") Damit beginnt die Ausführung der Methode name. Es gibt auch andere Wege, eine Ausführung zu starten, aber diese interessieren uns (noch) nicht. Wenn name fertig ist, geht es mit stmt weiter 13

Ausführung einer Methode Methode name wird aufgerufen 1. Anweisung ausgeführt Gibt es weitere Anweisungen? Nein: Ende der Ausführung von name Ja: Nächste Anweisung ausgeführt Wir bezeichnen die Abfolge der Ausführung von Anweisungen als Kontrolfluss ( control flow ) geradliniger Kontrollfluss: die ausgeführten Anweisungen folgen im Programm aufeinander In Java: Anweisungsreihefolge ist explizit 14

Kontrollfluss bei Methodenaufruf Wenn eine Methode aufgerufen wird, dann springt die Ausführung zur Methode und führt die Anweisungen der Methode aus und danach springt" die Ausführung wieder zu dem Ort zurück von dem der Aufruf erfolgte Und es geht weiter mit der nächsten Anweisung Anordnung der Methoden im Programm(text) ohne Bedeutung

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen Hier geht es weiter public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 Hier geht es weiter } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen Hier geht es weiter public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Methoden die Methoden aufrufen public class MethodsExample { public static void main(string[] args) { message1(); message2(); System.out.println("Ende von \"main\" "); } // main public static void message1() { System.out.println("Nachricht 1: Fertig"); } // message1 } public static void message2() { System.out.println("Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } // message2

Output Nachricht 1: Fertig Die 2. Nachricht: Nachricht 1: Fertig Ende von Nachricht 2 Ende von "main" 32

public class MethodsExample { Kontrollfluss } public static void main(string[] args) { }... message1(); message2(); public static void message1() { System.out.println("Nachricht 1: Fertig"); } public static void message2() { System.out.println(" Die 2. Nachricht:"); message1(); System.out.println("Ende von Nachricht 2"); } System.out.println("Done with main."); public static void message1() { System.out.println("Nachricht 1: Fertig"); }

Einfaches Beispiel (Wir verwenden jetzt println weil es einfach ist. Spätere Java Programme benutzen eine andere Schnittstelle für Benutzer) 34

Beispiel mit static methods Schreiben Sie ein Programm um diese Figuren zu drucken / \ / \ \ / \ / \ / \ / +--------+ / \ / \ STOP \ / \ / / \ / \ +--------+

Entwicklungsschritte / \ / \ \ / \ / \ / \ / +--------+ / \ / \ STOP \ / \ / / \ / \ +--------+ Version 1: (ohne Ausnutzen der Struktur) n n n Erstellen Sie ein Programm mit leerer main Methode. Kopieren Sie den erwünschten Output in main und schreiben für jede Zeile eine entsprechende System.out.println Anweisung. Führen Sie die Methode aus um den Output mit der gewünschten Figur zu vergleichen

Program Version 1 public class Figures1 { public static void main(string[] args) { System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); System.out.println("\\ /"); System.out.println(" \\ /"); System.out.println(); System.out.println("\\ /"); System.out.println(" \\ /"); System.out.println("+--------+"); System.out.println(); System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); System.out.println(" STOP "); System.out.println("\\ /"); System.out.println(" \\ /"); System.out.println(); System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); System.out.println("+--------+"); } // main } // Figures1

Entwicklungsschritte / \ / \ \ / \ / \ / \ / +--------+ / \ / \ STOP \ / \ / Version 2: (mit Ausnutzen der Struktur, mit Redundanz) n n n Identifizieren Sie (eventuell vorhandene) Strukture(n). Unterteilen Sie die main Methode basierend auf Ihrer Strukturierung. Führen Sie die Methode aus um den Output mit der gewünschten Figur zu vergleichen / \ / \ +--------+

Struktur des Output / \ / \ \ / \ / \ / \ / +--------+ / \ / \ STOP \ / \ / / \ / \ +--------+ Strukturen in dieser Figur n n n n oben: Sechseck (Hexagon) (oder Ball ) darunter: Wanne (oder Suppentasse ) drittens STOP Schild" Figur viertens Trapez" (oder Hut Figur ) Struktur à Methoden : n hexagon n wanne n stopsign n hut

Program Version 2 public class Figures2 { public static void main(string[] args) { hexagon(); wanne(); stopsign(); hut(); } //main...

Program Version 2, Fortsetzung... public static void hexagon() { System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); System.out.println("\\ /"); System.out.println(" \\ /"); System.out.println(); } public static void wanne() { System.out.println("\\ /"); System.out.println(" \\ /"); System.out.println("+--------+"); System.out.println(); }...

Program Version 2, Fortsetzung... public static void stopsign() { System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); System.out.println(" STOP "); System.out.println("\\ /"); System.out.println(" \\ /"); System.out.println(); } public static void hut() { System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); System.out.println("+--------+"); } } //Figures2

Entwicklungsschritte / \ / \ \ / \ / \ / \ / +--------+ / \ / \ STOP \ / \ / Version 3 (mit Ausnutzen der Struktur, ohne Redundanz) n n n Identifizieren Sie (eventuell vorhandene) Strukture(n) und Redundanz Erstellen Sie Methoden um (soweit möglich) Redundanz zu vermeiden Kommentieren Sie den Code / \ / \ +--------+ n Führen Sie die Methode aus 43

Redundanz im Output / \ / \ \ / \ / \ / \ / +--------+ / \ / \ STOP \ / \ / / \ / \ +--------+ n n n n Hexagon oberer Teil: im Stop Schild und Hut wiederverwendet Hexagon unterer Teil: in Wanne und Stop Schild Trennlinie: in Wanne und Hut Diese Redundanz kann durch diese Methoden ausgenutzt (d.h. eliminiert) werden: n n n hexagontop hexagonbottom line 44

Program Version 3 // Ihr Name, 252-0027, Herbst 2020 // Prints several figures, with methods for structure and redundancy. public class Figures3 { public static void main(string[] args) { hexagon(); wanne(); stopsign(); hut(); } // Draws the top half of an an hexagon. public static void hexagontop() { System.out.println(" "); System.out.println(" / \\"); System.out.println("/ \\"); }...

Program Version 3, Fortsetzung... // Draws the bottom half of an hexagon. public static void hexagonbottom() { System.out.println("\\ /"); System.out.println(" \\ /"); } // Draws a complete hexagon. public static void hexagon() { hexagontop(); hexagonbottom(); System.out.println(); }...

Program Version 3, Fortsetzung... // Draws a tub ( Wanne ) figure. public static void wanne() { hexagonbottom(); line(); System.out.println(); } // Draws a stop sign figure. public static void stopsign() { hexagontop(); System.out.println(" STOP "); hexagonbottom(); System.out.println(); }

Program Version 3, Fortsetzung... // Draws a figure that looks sort of like a hat ( Hut ). public static void hut() { hexagontop(); line(); } // Draws a line of dashes. public static void line() { System.out.println("+--------+"); } } //Figures3

Typen und Variable 49

Typen Typen ( types ) beschreiben Eigenschaften von Daten Ein Typ beschreibt eine Menge (oder Kategorie) von Daten Werten. Bestimmt (beschränkt) die Operationen, die mit diesen Daten gemacht werden können Viele Programmiersprachen erfordern die Angabe (Spezifikation) von Typen Typen Beispiele: ganze Zahlen, reelle Zahlen, Strings Typen sind Teil der Dokumentation (was verarbeitet diese Methode?)

Typen Die Programmiersprache legt fest, wie ein Typ implementiert ist Die interne Darstellung eines Types beruht auf Kombinationen von 1s und 0s 104 à 01101000 "hi" à 01101000 01101001 ASCII Tabelle 104 01101000 h 105 01101001 i

Wer definiert Typen? Verlangen alle Programmiersprachen die Spezifikation von Typen? Nein. (Mit manchmal überraschenden Folgen) Java verlangt die Spezifikation Welche Typen kann ein Java Programm verwenden? Typen die in der Sprache definiert sind: eingebaute Typen ( primitive types, integrierte Typen) Beispiel: ganze Zahlen Typen aus Bibliotheken, die immer verfügbar sind (z.b. Strings) Benutzer-definierte Typen 53

Eingebaute Typen in Java Integrierte Typen ( primitive types ): 8 einfache Typen für Zahlen, Text, etc. Name Beschreibung Beispiele int ganze Zahlen 42, -3, 0, 926394 double reelle Zahlen 3.1, -0.25, 9.4e3 char (einzele) Buchstaben 'a', 'X', '?', '\n' boolean Logische Werte true, false

Warum Typen Programme manipulieren Symbole Beispiel EBNF: Symbole aus Zeichen aus einer Menge ( Alphabet ) Legal oder nicht Programme übersetzen Sprachen, spielen Schach, berechnen die Steuerschuld Symbole werden verknüpft, verglichen, geändert, gelesen,. Typen verhindern Fehler Kann nicht die AHV Nummer zum Gehalt addieren Kann nicht Volumen und Fläche addieren 55

57

Arithmetische Operatoren Operator: Verknüpft mehrere Werte oder Ausdrücke. + Addition - Subtraktion (oder Negation) * Multiplikation / Division % Modulus (Rest) Während der Ausführung eines Programms werden seine Ausdrücke ausgewertet ( evaluated ) 1 + 1 ergibt 2 System.out.println(3 * 4); ergibt (druckt) 12 Wie würden wir den Text 3 * 4 drucken?

int Division mit / Wenn wir ganze Zahlen dividieren ist der Quotient auch wieder eine ganze Zahl. 14 / 4 ergibt 3, nicht 3.5 3 4 52 4 ) 14 10 ) 45 27 ) 1425 12 40 135 2 5 75 54 21

int Division mit / Weitere Beispiele: 32 / 5 ergibt 6 84 / 10 ergibt 8 156 / 100 ergibt 1-4 / 3 ergibt -1-101 / 9 ergibt -11 Division durch 0 führt zu einem Fehler während der Ausführung des Programmes

int Rest mit % Der % Operator liefert den Rest der Division ganzer Zahlen 14 % 4 is 2 218 % 5 is 3 3 43 4 ) 14 5 ) 218 12 20 2 18 15 3

int Rest mit % Einsatz des % Operators: Finde letzte Ziffer einer ganzen Zahl : 230857 % 10 is 7 Finde letzte 4 Ziffern: 658236489 % 10000 is 6489 Entscheide ob Zahl gerade ist: 7 % 2 ergibt 1, 42 % 2 ergibt 0

Was ist das Ergebnis von 1. 43 / 3 2. 10 / 4 3. -23 / 11 4. 45 % 6 5. 2 % 2 6. 8 % 20 7. 11 % 0 63

Rang Ordnung Rang Ordnung ( precedence ): Reihenfolge in der Operatoren ausgewertet ( evaluiert ) werden. Normalerweise werden Operatoren von links nach rechts ausgewertet. 1-2 - 3 ist (1-2) - 3 ergibt -4 Aber * / % haben eine höhere Precedence (einen höheren Rang) als + - 1 + 3 * 4 ergibt 13 6 + 8 / 2 * 3 6 + 4 * 3 6 + 12 ergibt 18

Rang Ordnung Rang Ordnung ( precedence ): Reihenfolge in der Operatoren ausgewertet ( evaluiert ) werden. Klammern bestimmen die Reihenfolge der Auswertung: (1 + 3) * 4 ergibt 16 Leerzeichen (oder Kommentare) haben keinen Einfluss auf die Reihenfolge der Auswertung 1+3 * 4-2 ergibt 11

Precedence Beispiele 1 * 2 + 3 * 5 % 4 \_/ 2 + 3 * 5 % 4 \_/ 2 + 15 % 4 \ / 2 + 3 \ / 5 n 1 + 8 % 3 * 2-9 n \_/ 1 + 2 * 2-9 n \ / 1 + 4-9 n \ / 5-9 n \ / -4

Precedence Beispiele Welche Werte ergeben die Auswertung dieser Ausdrücke? 9 / 5 695 % 20 7 + 6 * 5 7 * 6 + 5 248 % 100 / 5 6 * 3-9 / 4 (5-7) * 4 6 + (18 % (17-12))

Reelle Zahlen (Typ double) Beispiele: 6.022, -42.0, 2.143e17 Hinzufügen von.0 oder. an eine ganze Zahl macht diese zu double. Die Operatoren + - * / % () sind auch für double definiert. / berechnet ein genaues Resultat: 15.0 / 2.0 is 7.5 Rang Ordnung (der Auswertung) ist die selbe: () vor * / % vor + -

Beispiel mit reellen Zahlen 2.0 * 2.4 + 2.25 * 4.0 / 2.0 \ / 4.8 + 2.25 * 4.0 / 2.0 \ / 4.8 + 9.0 / 2.0 \ / 4.8 + 4.5 \ / 9.3

Kombinationen von Typen Wenn int und double kombiniert werden dann ist das Ergebnis double. 4.2 * 3 ergibt 12.6 Auch dann wenn das Result als int darstellbar wäre 4.5 * 2 ergibt 9.0 Umwandlung ( conversion ) von einem Typ in einen anderen Wird für jeden Operator separat gemacht und beeinflusst nur dessen Operanden Automatisch (werden später sehen wie wir Umwandlungen erzwingen können)

Ausdrücke mit verschiedenen Typen Umwandlung geschieht für jeden Operator separat 7 / 3 * 1.2 + 3 / 2 \_/ 2 * 1.2 + 3 / 2 \ / 2.4 + 3 / 2 \_/ 2.4 + 1 \ / 3.4 3 / 2 ergibt 1 nicht 1.5. 2.0 + 10 / 3 * 2.5-6 / 4 \ / 2.0 + 3 * 2.5-6 / 4 \ / 2.0 + 7.5-6 / 4 \_/ 2.0 + 7.5-1 \ / 9.5-1 \ / 8.5

73

String Operationen String Verkettung ( concatenation ): Der Operator + erlaubt es, zwei Strings zu verketten (verknüpfen) "hello" + world" "a" + "b" + "c" ergibt "helloworld" ergibt "abc" Der Operator + mit einem String und einem anderen Wert als Operanden ergibt einen längeren String. "hello" + 42 ergibt "hello42" 1 + "abc" + 2 ergibt "1abc2" "abc" + 1 + 2 ergibt "abc12

String Operationen 1 + 2 + "abc" ergibt "3abc" "abc" + 9 * 3 ergibt "abc27" "1" + 1 ergibt "11" 4-1 + "abc" ergibt "3abc"

String Operationen Können + verwenden um einen String und den Wert eines Ausdrucks auszugeben. System.out.println("Note: " + (4.8 + 5.4) / 2); Output: Note: 5.1 Warum brauchen wir ( und )?