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

Ähnliche Dokumente
Einstieg in die Informatik mit Java

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java

Primitive Datentypen

Java-Schulung Grundlagen

5 Grundlagen der Java-Syntax

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

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

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

Distributed Computing Group

Programmierung. Grundlagen. Tina Wegener, Ralph Steyer. 2. Ausgabe, 1. Aktualisierung, April 2014

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

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

Elementare Konzepte von

Programmieren I + II Regeln der Code-Formatierung

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einführung in die Programmierung mit BlueJ

2.5 Primitive Datentypen

JAVA - Methoden

Vorlesung Programmieren

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1

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

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

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

Datenbankanwendungsprogrammierung Crashkurs Java

1. Der Einstieg in Java

3. Grundlegende Sprachkonstruktionen imperativer Programme

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

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

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

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

Ein erstes Java-Programm

Programmierkurs. Manfred Jackel

Java Einführung Operatoren Kapitel 2 und 3

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Musterlösungen zur Klausur Informatik 3

Einführung in die Programmierung 1

3. Anweisungen und Kontrollstrukturen

2 Imperative Sprachkonzepte

5.4 Klassen und Objekte

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung mit Java

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Kapitel 3: Variablen

Objektorientierte Programmierung

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

JAVA-Datentypen und deren Wertebereich

Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

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

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

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Die Programmiersprache C Eine Einführung

Erster Kontakt mit Java und Pseudocode

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

3 Objektorientierte Konzepte in Java

Einfache Rechenstrukturen und Kontrollfluss II

Programmieren I. Kapitel 5. Kontrollfluss

Übersicht. Vorstellung des OO-Paradigmas

6. Iteration (Schleifenanweisungen)

Einführung in die Java- Programmierung

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

JAVA - Methoden - Rekursion

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Python Programmieren. Variablen, Ausdrücke und Anweisungen

Programmieren in Java

Smalltalk vs. Java c Chris Burkert Smalltalk versus Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

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

Probeklausur: Programmierung WS04/05

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

3 Die Programmiersprache Java

Repetitorium Informatik (Java)

Objektorientierte Programmierung OOP Programmieren mit Java

Welche Informatik-Kenntnisse bringen Sie mit?

AuD-Tafelübung T-B5b

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

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

Prinzipielle Ausführungsvarianten I

Einführung in die C-Programmierung

Primitive Datentypen und Felder (Arrays)

Dr. Monika Meiler. Inhalt

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

RO-Tutorien 3 / 6 / 12

Probeklausur: Programmierung WS04/05

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Anwendungsentwicklung mit Java. Grundlagen der OOP, Variablen, Klassen und Objekte, Methoden

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Delegatesund Ereignisse

Java Einführung Programmcode

1 Polymorphie (Vielgestaltigkeit)

Programmierkurs Java

Transkript:

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

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

Zusammenfassung public class name { } public static void main(string[] args) { } statement; statement;... statement; class: ein Programm mit Namen method: Gruppe von Anweisungen mit Namen main statement: Anweisung die ausgeführt werden soll 3

Jedes (ausführbare) Java Programm besteht aus einer Klasse (class) die eine Methode main enthält, die eine Reihe von Anweisungen enthält Später arbeiten wir mit Programmen mit mehreren Klassen 4

println(), println( Hello ) Gross/Kleinschreibung wird unterschiedlich behandelt public class HelloWorld { } public static void main(string[] args) { } System.out.println("Hello World!"); System.out.println(); System.out.println("Hello World!"); Output: Hello World! Hello World! 5

Namen und Bezeichner Jedes Programm braucht einen Namen public class HelloWorld { Konvention: fängt mit Grossbuchstaben an Konvention: Grossbuchstaben zur verbesserten Lesbarkeit Regel: Dateiname gleich Programmname HelloWorld.java Gross/Kleinbuchstaben sind (in Java) unterschiedlich 6

Bezeichner: Name fürein Programmelement Muss mit einem Buchstaben (gross oder klein) anfangen oder mit _ (Unterstrich, underscore ) oder mit $ (Dollarzeichen) danachziffern oder obige Zeichen Konvention: Methodenname Kleinbuchstaben 7

Reservierte Symbole keyword: Ein Bezeichner ( identifier ) der reserviert ist (weil er für die Sprache eine besondere Bedeutung hat) abstract default if private this boolean do implements protected throw break double import public throws byte else instanceof return transient case extends int short try catch final interface static void char finally long strictfp volatile class float native super while const for new switch continue goto package synchronized 8

Kommentare Kommentare ( comments ) sind Notizen im Programmtext, die einem Leser beim Verstehen des Programmes helfen (sollen) Leser: kann auch der Author sein Kommentare werden nicht ausgeführt, haben keinen Einfluss auf Programm 2 Varianten // Text bis zum Ende der Zeile /* Text bis zum naechsten */ 9

Wo sollten Kommentare stehen Anfang des Programms Zweck Algorithmus Author Anfang jeder Methode Darüber spätermehr Für Code der nicht sofort verständlich ist Kommentare wichtig für grosse Projekte, Programme mit mehreren Authoren, Programme die sich oft ändern 10

Beispiel /* * Author: Ein Student; Herbst 2017, Uebung 1 * Entwurf uebernommen von einer Assistentin */ public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); } // end main } // end HelloWorld 11

Strings String: eine Folge von Zeichen ( characters ) eingeschlossen in und hello Hello 3+2 Einschränkungen: Nur eine Zeile lang Das ist kein Java String Darf nicht enthalten ( So etwas geht nicht ) 12

Sonderzeichen Und was machen wir wenn wir ein ausgeben wollen? Es gibt sogenannte Ersatzdarstellungen ( escape sequences ) mit denen ein Sonderzeichen ausgedrückt werden kann Fangen alle mit \ (Rückwärtsschrägstrich) ( backslash ) an \t Tab character \n Neue Zeile (new line character) \" Quotation mark (double quote) character \\ Backslash character 13

Beispiele Beispiel: System.out.println( \\Hallo\nWie\tgeht es \ Ihnen\?\\\\"); Output: \Hallo Wie geht es Ihnen"?\\ 15

Fragen Was drucken diese println Statements? System.out.println("\ta\tb\tc"); System.out.println("\\\\"); System.out.println("'"); System.out.println("\"\"\""); System.out.println("C:\neuer Spor\t Wagen"); Welches println Statement druckt diesen String? / \ // \\ /// \\\ 16

Antwort Output jedes println Statements : a b c \\ ' """ C: euer Spor Wagen 17

Antwort println Statement um die gewünschte Zeile Output zu erzeugen : System.out.println("/ \\ // \\\\ /// \\\\\\"); 18

2.1 Methoden Beispiel: main im Program HelloWorld 19

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 22

static methods static methods: Methode mit weiteren Eigenschaften main ist eine static method (Keyword static vor Name) main wird automatisch aufgerufen Wir erklärengleich wie andere Methoden aufgerufenwerden 23

(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 } 24

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

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 n statement n statement method two n statement n statement n statement 26

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 n statement n statement method three n statement n statement n statement 28

(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"); } 29

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

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 31

Ausführung einer Methode Methode name wird aufgerufen 1. Anweisung ausgeführt Gibtesweitere Anweisungen? Nein: Ende der Ausführung von name Ja: Nächste Anweisungausgefü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 32

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" 50

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) 52

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 61

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 62

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 67

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" à 0110100001101001

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 71

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 (einzelne) 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 73

Ausdrücke ( Expressions ) Ausdruck ( expression ): Ein Wert oder eine Operation die einen Wert berechnet Beispiele: 1 + 4 * 5 (7 + 2) * 6 / 3 42 Der einfachste Ausdruck ist ein Literal ( literal value ). Komplexe Ausdrücke können Operatoren und Klammern enthalten

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

82

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

92