Java Einführung. Teil 1: Einfacher Java Code. Michael Hahsler

Größe: px
Ab Seite anzeigen:

Download "Java Einführung. Teil 1: Einfacher Java Code. Michael Hahsler"

Transkript

1 Java Einführung Teil 1: Einfacher Java Code Michael Hahsler

2 Java Einführung SOFTWARE-ENTWICKLUNG Kapitel 1

3 Inhalt dieser Einheit Phasen eines Softwareprojekts Algorithmus Überblick über (Programmier-) Sprachen Wie funktioniert JAVA? 2

4 Software Engineering Fachgebiet der Informatik stellt Methoden Werkzeuge zur Herstellung und Anwendung von Software bereit. 3

5 Die Phasen eines Softwareprojekts (klassisch sequentielles Software-Life-Cycle-Modell) Betrieb und Wartung Systemtest Problemstellung, Idee Implementierung und Komponententest Problemanalyse Spezifikation = Analyse (Komponenten-) Entwurf = Design 4

6 Problemanalyse und Planung Was? Erhebung des Ist-Zustandes Abgrenzung des Problembereichs Skizzieren der Bestandteile des geplanten Systems erste Abschätzung des Umfanges und der Wirtschaftlichkeit Erstellung eines groben Projektplans Benutzeranalyse Aufgabenanalyse 5

7 Analyse: Spezifikation Was? Genaue Festlegung des Leistungsumfanges des geplanten Systems (Pflichtenheft) Umsetzung der Anforderungen in ein Modell, welches die künftige Funktionalität des zu entwickelnden Produktes vollständig beschreibt Funktionsmodelle, Datenmodelle, Ereignismodelle, Interaktionsmodelle, Workflow- Modelle noch unabhängig von der Implementierung 6

8 Design: System- und Komponentenentwurf Wie? Umsetzung, der in der Spezifikation erstellten Modelle in eine formale Form Festlegung, welche Systemkomponenten die vorgegebenen Anforderungen abdecken werden Definition der Systemkomponenten (Schnittstellen!) Entwurf der algorithmischen Struktur (Pseudocode) Entwurf der Datenstrukturen unabhängig von der Implementierung! 7

9 Implementierung und Komponententest Umsetzung der Ergebnisse der Entwurfsphase in eine rechnerausführbare Form Verfeinerung der Komponenten und Algorithmen Codierung in der gewählten Programmiersprache Komponententests 8

10 Systemtest Wechselwirkungen der Systemkomponenten unter realen Bedingungen prüfen Fehler aufdecken sicherstellen, dass die Systemspezifikation erfüllt ist (aus Pflichtenheft) Freigabe der Software 9

11 Betrieb und Wartung Fehler, die erst während des tatsächlichen Betriebs auftreten beheben Systemänderungen und Systemerweiterungen durchführen 10

12 Andere Software- Engineering Modelle Wasserfall-Modell Spiral-Modell Prototyping-orientiertes Life-Cycle-Modell Objektorientiertes Life-Cycle-Modell Objekt- und prototyping-orientiertes Life- Cycle-Modell 11

13 Beschreibung von Abläufen (Bsp. Kochrezept) Man nehme 2 dag Schmalz und erhitze es in einer Pfanne. Inzwischen versprudelt man 3 Eier mit einer Brise Salz. Wenn das Fett heiß ist, gieße man die Eier in die Pfanne. Mit einer Gabel umrühren, bis die Eier stocken, sofort heiß servieren...'' Kochrezepte Gebrauchsanweisungen Algorithmen Programme 12

14 Algorithmus (Definition) Ein Algorithmus ist ein Plan zur Lösung gleichartiger Probleme mit Hilfe einer endlichen Folge eindeutiger, ausführbarer Schritte bestehend aus - elementaren Anweisungen - in einer geeigneten Sprache - die sequentiell (schrittweise) durchgeführt werden. Ein Programm ist ein Algorithmus formuliert in einer bestimmten Programmiersprache. 13

15 Algorithmus ( Bsp. Telefonnummersuche) "Suche die Telefonnummer zu einem gegebenen Namen in einem beliebigen Adressbuch 1. Gehe zum ersten Eintrag im Adressbuch 2. Vergleiche den aktuellen Eintrag mit dem gesuchten Namen 3. Bei Gleichheit: gib die zugehörige Telefonnummer aus und halte an sonst gehe zu Schritt 4 4. (Ungleichheit) Wenn noch Einträge im Adressbuch vorhanden sind: nimm den nächsten Eintrag und gehe zu (2) sonst gehe zu Schritt 5 5. melde Misserfolg und halte an Name Tel.Nr. Neumann, Gustaf Neumann, Gustav

16 Definition einer Sprache Wie definiert sich eine Sprache? Aus der Menge der Symbole (Worte) können Sätze gebildet werden. Syntax: Die Regeln für das Bilden gültiger Sätze aus diesen Symbolen (=''Grammatikregeln''). Semantik: Die Bedeutung der gültigen Sätze. Bsp: 2+4=7 ist in der Sprache der Mathematik syntaktisch richtig, aber semantisch falsch. 15

17 Bsp: Regelgramatik Syntaxregeln (BNF) <Ziffer> ::= <Vorzeichen> ::= + - <Ziffernfolge> ::= <Ziffer> <Ziffernfolge><Ziffer> <Zahl> ::= <Ziffernfolge> <Vorzeichen><Ziffernfolge> Terminale Symbole werden nicht mehr abgeleitet {0,1,2,...,9} Nicht-terminale Symbole gekennzeichnet durch <...> bedeutet eine Auswahl (oder) Alles was von <Zahl> (Startsymbol) abgeleitet werden kann, ist eine gültige Zahl 16

18 Bsp: Syntaxdiagramm Ziffer 0 1 Ziffernfolge Ziffer Ziffernfolge Ziffer 9... Zahl Vorzeichen + - Ziffernfolge Vorzeichen Ziffernfolge 17

19 Natürliche versus formale Sprache Natürliche Sprachen sind vielfach syntaktisch und/oder semantisch mehrdeutig. ( Dings wird aus dem Kontext erkannt) Natürliche Sprachen sind fehlertolerant. Der vorgegebene Wortumfang natürlicher Sprachen ist sehr groß. (80000 Worte Langenscheidt vs. 51 Java) Eine Programmiersprache ist eindeutig und ist primitiv genug, um in Maschinencode übersetzt werden zu können. 18

20 Java-Wortschatz reservierte Worte abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int long native new null private protected public return static super switch synchronized this throw throws transient try void volatile while true short interface package assert enum strictfp * derzeit ohne Verwendung byvalue* cast* const* future* generic* goto* inner* operator* outer* rest* var* 19

21 Programmiersprachen Definition Eine Programmiersprache ist eine Sprache zur Formulierung von Rechenvorschriften bzw. Anweisungen (Datenstrukturen und Algorithmen), die von einem Computer ausgeführt werden können, hat eine eindeutig definierte Syntax (welche Zeichenfolgen sind erlaubt) und Semantik (was bewirken die Zeichenfolgen auf dem Rechner), bildet die wichtigste Schnittstelle zwischen Rechner und Programmierer. 20

22 Wie kann ich eine Sprache lernen? ÜBEN und ANWENDEN! Wie beim Lernen eines Musikinstruments! Notenkenntnis und Erkennen der Tasten ist zuwenig! 21

23 Programmiersprachen 22

24 Programmiersprachen Übersicht Maschinensprache Programme in Maschinensprache bestehen aus Maschinenbefehlen, die als Folge von Nullen und Einsen im Rechner dargestellt werden. Nur Maschinensprache kann vom Prozessor verarbeitet werden. Assembler Sprachen Die Bitkombinationen der Maschinenbefehle werden durch ein leicht zu merkendes Symbolwort ausgedrückt werden (MOV A L). Höhere/symbolische Programmiersprachen Sind an die menschlichen Denkweisen angepasst (sie sind problemorientiert und nicht mehr maschinenorientiert). Höhere Programmiersprachen erlauben die Formulierung von Programmen in einer vom Zielrechner unabhängigen Notation. Mit Hilfe eines Übersetzungsprogramms (Compiler) werden Programme einer höherer Programmiersprache in Maschinenprogramme übersetzt. 23

25 Höhere Programmiersprachen Übersicht Strukturierte Programmiersprachen Höhere Programmiersprachen, die das Modulkonzept unterstützen BASIC, PASCAL, C, Modula Objektorientierte Programmiersprachen Höhere Programmiersprachen, welche Daten und Anweisungen nicht trennen sondern zusammen als Objekte behandeln. Objekte stehen miteinander in Beziehung und kommunizieren miteinander durch Versenden von Nachrichten (Messages). Das Empfängerobjekt hat für jede Nachricht, die es versteht, einen eingebauten Algorithmus (Methode genannt). C++, C# und Java Deskriptive Programmiersprachen dient zur Beschreibung der Eigenschaften gesuchter Informationen (üblicherweise Daten aus einer Datenbank) SQL Logische Programmiersprachen Die logische Programmierung beruht auf der Erkenntnis, dass einer Untermenge der Prädikatenlogik eine prozedurale Interpretation gegeben werden kann. PROLOG 24

26 Programmiersprachen grafische Übersicht 25

27 Entwicklung von prozeduralen Programmiersprachen John v. Neumann: Programmierbare Rechenmaschine IBM: PL/1 General Purpose PL N. Wirth: Pascal Strukturierte Programmierung N. Wirth: Modula-2 Verbesserte Datenkapselung Dahl: Simula Simulation D. Ritchie (AT&T): C Systemprogrammierung B. Stroustroup (AT&T): C++ Objektorientierte Erweiterung von C Sun: Java vereinfachte und gestutzte Weiterentwicklung von C

28 Java-Geschichte 1991: Projekt ``Green`` (consumer electronics) bei Sun zunächst basierend auf C++, das sich aber im Hinblick auf Sicherheit, Portabilität und Zuverlässigkeit als unzureichend herausgestellt hatte => Entwicklung einer eigenen Sprache ``Oak``, später Java 1994: Entwicklung des HotJava-Browsers (Java Applets) 1995: offizielle Vorstellung von Java, Netscape lizenziert Java 1996: Gründung von JavaSoft bei Sun, Release 1.0 des Java Development Kits (JDK) 1997: JDK : JDK 1.2 = Java 2 Platform 2000: JDK : SDK : JDK 5.0 = Version

29 Was ist Java? Objektorientiert Einfach (keine Pointer, automatische Garbage Collection, nur einfache Vererbung) Plattformunabhängig (durch Bytecode) Verteilt/Netzwerkfähig (Internet) Sicher (Sandbox) Multithreading-fähig (Parallelverarbeitung) 28

30 Grundlagen: Ausführbare Programme Der Quellcode beinhaltet Anweisungen, die noch nicht direkt durch ein Computersystem ausgeführt werden können. Für die Ausführung der Anweisungen muss der Quellcode erst in Maschinencode übersetzt werden. Es gibt zwei Möglichkeiten, Quellcode einer höherer Programmiersprachen in Maschinencode zu übersetzen: Interpreter: Nach dem Start des Interpreters wird jeweils eine Anweisung des Quellprogramms nach der anderen in Maschinenbefehle übersetzt, geprüft und sofort ausgeführt. Compiler: Übersetzt das Quellprogramm vollständig in Maschinencode, der zu einem beliebigen Zeitpunkt vom Betriebssystem geladen und ausgeführt werden kann. 29

31 Ausführen von Java Java kombiniert Compiler und Interpreter Zunächst wird die Quelldatei mit Hilfe des Java Compilers in Bytecode übersetzt. HelloWorld.java javac HelloWorld.class Quellcode Java Compiler Java Bytecode Wichtig: Die Bytecode-Datei beinhaltet exakt denselben Bytecode, egal von welchem System sie erzeugt wird (Plattformunabhängig!) 30

32 Java Bytecode Interpreter Der Bytecode kann noch nicht direkt ausgeführt werden. Dazu wird im zweiten Schritt ein Java Bytecode Interpreter eingesetzt. Jedes System hat seinen eigenen Java Bytecode Interpreter, die Java Virtual Machine (JVM) Betriebssystem Prozessorarchitektur 31

33 Java - Übersetzung javac ProgramName.java Java Quellcode ProgramName.java Java-Compiler javac java ProgramName Java Byte- Code ProgramName.class Java-Interpreter java JVM-NT JVM-Sol JVM-Net Windows NT Sun Solaris Netscape Betriebssystem/ Browser/ Machinensprache 32

34 Programmcode class HelloWorld { public static void main (String[] args) { System.out.println( Hello, world ); } } Quellcode Der Programmcode muss erst in die für den Computer verständliche Sprache übersetzt werden! 33

35 Java Applikationen vs. Applets vs. Java-Script Java-Applikationen: Anwendungen auf Betriebssystemebene, z.b. wird unter Windows gestartet und öffnet ein eigenes Fenster. Java-Applets: Java-Anwendungen, die in einem WWW-Browser ablaufen. Sind in HTML-Seiten eingebettet und werden automatisch über das Internet heruntergeladen; z.b. im Internet Explorer. Java-Script: Scriptsprache zum Einbetten von einfachen Programmen in HTML-Seiten. 34

36 Selbstkontrolle In welchen Phasen läut ein Software-Projekt ab? Welche Klassen von Programmiersprachen gibt es? Und zu welcher Klasse gehört Java? Was sind die Eigenschaften von Java? Erklären Sie die Schritte vom Java-Quellcode zum ausführbaren Java-Programm. Was ist der Unterschied zwischen Java- Applikationen und Java-Applets? 35

37 Java Einführung Programmcode

38 Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2

39 Wiederholung: Java Write once, run everywhere! (unabhängig von Hardware, Betriebssystem etc.): der Programmcode wird zu unabhängigem Bytecode kompiliert, der von der Java-Virtual Machine (JVM) des Zielsystems interpretiert und ausgeführt wird. 3

40 Wiederholung: Algorithmus Ein Algorithmus ist eine Arbeitsanleitung zur Lösung eines Problems, die so präzise formuliert ist, dass sie von einem Computer ausgeführt werden kann. Er besteht aus elementaren Anweisungen in einer geeigneten Sprache die sequentiell (schrittweise) durchgeführt werden. Der in einer für Menschen verständlichen Sprache beschriebene Algorithmus wird dann in eine Programmiersprache (hier: JAVA) transferiert. Quelltext (auch Quellcode) bezeichnet einen in einer Programmiersprache codierten Algorithmus. 4

41 Programmelemente Anweisungen elementarste ausführbare Programmelemente werden mit Semikolon ('';'') beendet z.b.: Anweisung; Blöcke Reihe von Anweisungen wirkt nach außen hin wie eine Anweisung werden von geschwungenen Klammern umgrenzt { Anweisung; Anweisung;... } 5

42 Programmelemente / 2 Klassendefinitionen Grundlegende Strukturierungseinheit eines objektorientierten Programms z.b. class Teacher {...} Methoden Block, der über einen Namen aufrufbar ist kann Aufrufparameter beinhalten kann Rückgabewerte beinhalten z.b. int grade (String[] student_name) {...} 6

43 Programmelemente / 3 Kommentare Beschreibenden Text rund um Code verfassen und wird nicht kompiliert Arten: // Kommentar bis zum Zeilenende /*... Kommentar bis zum nächsten */ /**... JavaDoc Kom. bis zum nächsten */ - diese Form dient der Kennzeichnung von JavaDoc- Kommentaren, die später elegant in HTML-Seiten umgewandelt werden können. 7

44 Das erste Programm Block Klasse class HelloWorld { Methode public static void main (String[] args) { Kommentar // Hello world ausgeben System.out.println( Hello world ); } } Anweisung Quellcode wird mit Hilfe eines Editors (WordPad) oder einer Entwicklungsumgebung geschrieben. 8

45 Java ist case-sensitiv! Achtung! In der Programmiersprache Java haben Worte, die bis auf die Groß- und Kleinschreibung identisch sind, eine unterschiedliche Bedeutung. z.b. HelloWorld <> helloworld <> Helloworld <> helloworld <>... Anmerkung: Großbuchstabe (engl.: upper-case) Kleinbuchstabe (engl.: lower-case) 9

46 Untersuchung: HelloWorld class HelloWorld: Hauptklasse mit dem Namen HelloWorld Methode main: Hauptmethode. Hier startet die Applikation System.out.println("..."): Anweisung an die Klasse System.out die Methode println() ( print line ) auszuführen. println() veranlasst die Ausgabe einer Zeichenkette, die durch ein Zeilensendezeichen abgeschlossen wird. 10

47 Die Methode main Die Methode main ist jene Methode, die zum Programmstart ausgeführt wird. Sie kann wiederum andere Methoden aufrufen. public static void main (String[] args){...} Die Methode ''main'' ist public (=öffentlich, für alle verfügbar) und static (=statisch, immer verfügbar und nicht änderbar) definiert und hat Parameter (String[] args) und keinen Rückgabewert (void engl.: leer). 11

48 Blöcke In Java wird die Quellcode-Datei in Teile geteilt, die durch öffnende und schließende geschwungene Klammern { } getrennt sind. Alles zwischen { und } ist ein Block. Damit werden zusammengehörige Anweisungen gruppiert. Blöcke können verschachtelt sein und andere Blöcke beinhalten. z.b: HelloWorld.java - äußerer Block für die Klassendefinition, welcher einen - inneren Block der Main-Methode beinhaltet. Ein Block sollte zur besseren Lesbarkeit eingerückt werden. Durch diese Strukturierung wird der Code u.a. leichter lesbar. 12

49 Die Entwicklungsumgebung von Sun Das Java Software Development Kit (JDK) beinhaltet die Software und Tools, die von Entwicklern benötigt werden, um Quellcode zu kompilieren, zu debuggen und auszuführen. Die JDK Software und Dokumentation inkludiert grundlegende Entwicklungstools, eine große Menge an Klassen-Bibliotheken, und ist gratis verfügbar. 13

50 Java 2 Plattform Standard Edition Java 2 Plattform seit Ende 1998 (Version Java 1.2 und höher) Derzeit JDK 5.0 (Java 1.5) Download unter 14

51 Bestandteile JDK Compiler (javac) Bytecode Interpreter (java) jar, javadoc, etc. Ausführbare Programme Beispielprogramme und Applets Java Runtime Environment (Virtual Machine) 15

52 Installation und Konfiguration SDK herunterladen und installieren PATH auf das bin-verzeichnis setzen: Einstellungen->Systemsteuerung->System Erweitert/Umgebungsvariablen/Path Ausführliche Information zur gerade aktuellen Version liefern die Installationshinweise von Sun. ( 16

53 Schritte vom Code zur Programmausführung Abspeichern des Codes unter dem Namen der Hauptklasse, Erweiterung.java. (HelloWorld.java) Kompilieren > javac HelloWorld.java Bytecode-Datei HelloWorld.class wird erzeugt Ausführen > java HelloWorld Ausgabe > HelloWorld MS DOS-Fenster (Start->Ausführen->CMD) 17

54 Aufgabe Installieren Sie JDK zuhause oder gehen Sie in den Übungsraum. Suchen Sie das jdk-verzeichnis (meist unter C:\Programme\Java) und setzen Sie die PATH Variable. Implementieren Sie das HelloWorld Beispiel, kompilieren Sie es und führen es aus. Ändern Sie das Programm so ab, dass es GoodNight heißt und auch Good Night! ausgibt. 18

55 Nach dieser Einheit sollten Sie wissen,... welche Programmelemente ein Programm enthält was Anweisungen sind wie diese zu Blöcken zusammengefasst werden können wie ein Programm strukturiert wird und wie Sie Ihr Programm HelloWorld erstellen, kompilieren und ausführen können 19

56 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

57 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2

58 Variablen Daten werden in Variablen gespeichert. Variablen sind aus der Mathematik bekannt: y=5+x Variablen haben einen Namen (Bezeichner) und einen Wert. Bsp. x kann den Wert 8 haben. Variablen sind Behälter, die jeweils nur einen Wert eines bestimmten Datentyp beinhalten können. Bsp. x ist vom Datentyp 'ganze Zahl' (Integer), die Variable kann daher keine Zeichenkette enthalten. Variablen müssen vor der Verwendung deklariert werden, dabei wird der Name und der Datentyp festgelegt. 3

59 Bezeichner Bezeichner benennen Variablen, Klassen, Instanzen, Methoden, beginnen mit Buchstaben, _ oder $, anschließend folgen Buchstaben, Ziffern, Unterstrich, Dollar und/oder Unicode-Zeichen. Zur besseren Lesbarkeit wird eine einheitliche Form der Benennung der Klassen, Objekte, Methoden und Variablen empfohlen. Besteht ein Bezeichner aus mehreren Worten werden Sie folgendermaßen zusammengeschrieben: nameoftheuser 4

60 Bezeichner (forts.) Variablennamen (und Instanznamen): kleiner Anfangsbuchstabe. z.b.: zaehler oder meinzaehler Konstantennamen: komplett groß z.b.: MAXINT Klassennamen: ein Hauptwort, den ersten Buchstaben einer Klasse groß schreibt. z.b.: MeineErsteKlasse Methodennamen: sind Verben, beginnen mit Kleinbuchstaben. z.b.: getnamefromuser() 5

61 Datentypen und Werte Es gibt unterschiedliche Kategorien (Datentypen) von Werten: Ganze Zahlen: 2, 4754, -50 Gleitkomma (Reelle-) Zahlen: -3.4, 34.98, Wahrheitswerte: Richtig/Falsch Zeichen: a, b Zeichenketten: Hello World! Unterschiedliche Datentypen benötigen unterschiedlich viel Speicherplatz; z.b. Wahrheitswerte 1 Bit oder ASCII-Zeichen 7 Bit Grund für den Einsatz von Datentypen: Überprüfung sinnvoller Operationen (verhindert Addition hallo +3) Reservierung passenden Speicherplatzes 6

62 Primitive Datentypen In Java eingebaute Datentypen: Ganze Zahlen: byte, short, int, long Gleitkomma (Reelle-) Zahlen: float, double Zeichen: char Wahrheitswerte: boolean (true/false) Die Datentypen und ihre Eigenschaften (Größe, Genauigkeit) hängen nicht (wie bei anderen Programmiersprachen) vom jeweiligen Computersystem ab, sondern sind in Java einheitlich festgelegt. 7

63 Primitive Datentypen (forts.) Typ von bis byte short int long char Unicode Wahrheits false werte boolean true float +/-1, * 10^-45 +/-3, * 10^38 double +/-4, * 10^-324+/-1, * 10^308 Ganzzahlen Gleitkommazahlen 8

64 Ganze Zahlen (Primitive Datentypen) Datentypen byte, short, int, long Operationen (Operanden und Ergebniswert sind ganze Zahlen) + Addition - Subtraktion * Multiplikation / Ganzzahldivision % Restbildung (Modulo-Funktion) Beispiele: 1, -45 weitere Operatoren folgen... 9

65 Gleitkommazahlen (Primitive Datentypen) Datentypen float, double Operationen: (Operanden und Ergebniswert sind Gleitkommazahlen) + Addition - Subtraktion * Multiplikation / Division Beispiel: 2.77, 1.0 (Achtung. als Komma!) weitere Operatoren folgen... 10

66 Datentyp char Zeichen (Primitive Datentypen) Operationen: (Operanden und Ergebniswert sind Zeichen oder Zeichenketten) + (Verkettung) Beispiel: a, z (Achtung einfaches Anführungszeichen!) weitere mögliche Werte für Character-Datentypen auf der nächsten Folie... 11

67 Zeichen (forts.) Tastatur-, Unicode oder Oktal-Zeichen in einfachen Hochkomma Tastaturzeichen Z Unicode-Zeichen \u005a Oktal-Zeichen \132 Sonderzeichen (Auswahl der Escapesequenzen) \b Backspace \ Doppeltes Hochkomma \n linefeed \\ Backslash \r carriage return \ Einfaches Hochkomma \t Tabulator 12

68 Wahrheitswerte (Primitive Datentypen) Datentyp boolean Operationen: Ergebniswert sind wieder Wahrheitswerte a && b a b (logisches UND: a ist wahr und b ist wahr) (logisches ODER: a ist wahr oder b ist wahr)!a (logisches NICHT: ist wahr wenn a falsch ist) Mögliche Werte: true, false 13

69 Wahrheitswerte (forts.) Folgende Operatoren ergeben Wahrheitswerte: < (kleiner) <= (kleiner oder gleich) == (gleich)!= (ungleich) >= (größer oder gleich) > (größer) z.b. z.b. Vergleich von von zwei zwei Integer-Variablen int a = 1; 1; int b = 2; 2; boolean bool = a <= <= b; b; Ergebniswert bool: true 14

70 Variablendeklarationen Variablen haben einen Namen und sind Behälter für Werte eines bestimmten Datentyps Damit Variablen verwendet werden können, müssen sie zuerst deklariert werden. z.b.: int i; short x, y; 15

71 Deklaration u. Initialisierung Deklaration: Datentyp name; z.b.: int abgaben; boolean an; mehrere Variable vom selben Typ: Datentyp name1, name2, name3; z.b.: int gehalt, lohn, provision; Wertzuweisung: variable = wert; z.b.: gehalt = 3000; provision = 2000; an = true; 16

72 Deklaration u. Initialisierung (forts.) Deklaration mit Initialisierung int gehalt = 3000; int provision = 100; double x = ; char zeichen = 'a'; boolean aus = false; Zugriff auf Variablenwerte gehalt = gehalt + provision; System.out.println( Gehalt: +gehalt); 17

73 Automatische Initialisierung von primitiven Datentypen Wird eine Variable bei der Deklaration nicht Initialisiert (Bsp. int i;), erhält sie automatisch folgenden Wert: Zahlen: 0 bzw. 0.0 Wahrheitswerte: false Zeichen/Referenzen*: null (bedeutet: leer) besser: explizite Initialisierung int provision = 0; *Referenzen werden erst später behandelt! 18

74 Datentypen-Beispiel class ArithmeticDemo { public static void main(string[] args) { int i = 37; int j = 42; double x = ; double y = 7.22; Variablendeklarationen System.out.println("Variablenwerte..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); System.out.println("Addieren..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); Ausgabe der Variablenwerte Addition 19

75 Datentypen-Beispiel Teil2 }} System.out.println("Subtrahieren..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); System.out.println("Multiplizieren..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); System.out.println("Dividieren..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); System.out.println( Restwertbestimmung..."); System.out.println(" i % j = " + (i % j)); System.out.println(" j % i = " + (j % i)); System.out.println("Vermischte Typen..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); Subtraktion Multiplikation Division Rest gemischte Datentypen 20

76 Ausgabe des Programms Variablenwerte... i = 37 j = 42 x = y = 7.22 Addieren... i + j = 79 x + y = Subtrahieren... i - j = -5 x - y = Multiplizieren... i * j = 1554 x * y = Dividieren... i / j = 0 x / y = Restwertbestimmung... i % j = 37 j % i = 5 Vermischte Typen... j + y = i * x =

77 Konstanten Werte sollen während des gesamten Programmablaufes gleich bleiben. Konstante ist kein weiterer Datentyp. Deklaration: Sie werden mit dem Schlüsselwort final deklariert. final Datentyp NAME = Wert; z.b.: final double PI = ; 22

78 Typumwandlungen Java ist streng typisiert, Variablen dürfen nur Werte vom deklarierten Typ zugewiesen werden. Vergleichsoperatoren vergleichen nur Ausdrücke gleichen Typs. Es gibt implizite und explizite Typumwandlung int ganz = 3; double komma = ganz; //implizit float komma2 = (float) ganz; //explizit 23

79 Implizite Typumwandlung In manchen Fällen wird automatisch vom Compiler umgewandelt (implizite Typumwandlung) byte, short => int => long int => float float => double char => int Beispiel: short s = 3; // s=3 int i = s; // i=3 float g = 3 + i; // g=6.0 int b = a ; // b=97* int i = z - a ; // i=25* *Ascii-Werte a=97, z=122 24

80 Implizite Typvergrößerungen Java nimmt diese Konversionen, falls nötig, bei Zuweisungen, Methoden- und Konstruktoraufrufen und bei der Auswertung von Ausdrücken implizit vor. Zuweisungskompartibilität: byte -> short -> int -> long -> float -> double Kein Informationsverlust! Ausnahme beim Übergang zu den Gleitkommazahlen: bei long -> float wird Genauigkeit verloren 25

81 Explizite Typumwandlung (Cast) Explizite Angabe des umzuwandelnden Typs double d = 7.99; int i = (int) d; /*i =7, da keine Nachkommastellen beim Datentyp int */ int zahl = 33000; short s = (short)zahl; //s= /*Zahl außerhalb des Wertebereichs binär = Die erste Ziffer wird nun als Minuszeichen interpretiert und ergibt den Wert im 2er-Komplement ( )*/ ACHTUNG! Die Typverkleinerung kann zu falschen Werten führen, wenn der Wertebereich des Zieldatentyps nicht ausreicht, den Wert darzustellen. 26

82 Exkurs: Zeichenketten (Strings) Achtung: Zeichenkette ist keine primitiven Datentyp sondern ein Objekt-Datentyp* Operationen: Verkettung, Ergebniswert ist wieder eine Zeichenkette + (Verkettung) Mögliche Werte: z.b. "Hallo World" = Kombinationen vom Typ char Initialisierung String s = "A short way to initialize"; (oder* String id = new String( "The long way" ); ) * Wird später genau behandelt 27

83 Exkurs: Unicode... Entspricht im unteren Bereich ASCII Bsp: char c = '\u0060';... 28

84 Nach dieser Einheit sollten Sie... Die verschiedenen Arten von Variablen kennen. alle primitiven Datentypen deren Initialisierung und gängigen Operationen. Variablen verschiedenen Typs definieren, deren Typ umwandeln, und damit rechnen können. Die Konventionen zur Bezeichnung von Variablen, Methoden und Klassen kennen. 29

85 Java Einführung Operatoren Kapitel 2 und 3

86 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2

87 Operatoren Abhängig vom Datentyp können bestimmte Operationen vorgenommen werden Operatoren haben ein oder mehrere Operanden Operand Operator Operand Die Ausführung der Operationen erfolgt nach einer festgelegten Reihenfolge (d.h. einige Operatoren haben Vorrang vor andern) 3

88 Operatoren unäre Operatoren (1 Operand): Bsp. ++ (erhöht den Wert des Operanden um 1, var++) oder logisches Nicht (! ) binäre Operatoren (2 Operanden): Bsp. + (Addition der beiden Operanden, var1 + var2) ternärer Operator (3 Operanden):?: als einziger ternärer Operator in Java erlaubt die verkürzte Implementierung einer if-else-verzweigung (i<j)? true : false 4

89 Operatoren im Überblick (Auszug) 1 = Zuweisung + - * / Addition/ Subtraktion Multiplikation/ Division Inkrement/ Dekrement Erhöht oder erniedrigt den Wert der Variablen um 1 % Modulo Liefert den Rest einer ganzzahligen Division (i<j)? ja : nein if-then-else Einziger ternärer Operator in Java. Kurzform der IF-Schleife 5

90 Operatoren im Überblick (Auszug) 2 <= < >= > ==!= Vergleich Vergleich (gleich, ungleich) Der Vergleich zweier Werte liefert true oder false zurück. Der Vergleich zweier Werte liefert true oder false zurück.! logisches NICHT Negiert den Wahrheitswert einer Aussage && logisches UND Verknüpft zwei Aussagen. Liefert true, wenn beide Aussagen true sind. logisches ODER Verknüpft zwei Aussagen. Liefert true, wenn eine der beiden Aussagen true sind. 6

91 Rangfolge der Operatoren in Java hoch niedrig. [] () ++ --! ~ instanceof new (data type) * / % + - << >> >>> < > ==!= & ^ &&? : += -= *= = &= ^= &= = <<= >>= >>>= Die Operatoren oben in der Tabelle werden zuerst ausgewertet. Operatoren in der gleichen Zeile haben die gleiche Rangfolge und werden von links nach rechts ausgewertet. Beim Ausdruck y = 6 + 4/2 wissen Sie jetzt anhand der Tabelle, dass die Division vor der Addition ausgewertet wird, deshalb ergibt sich für y ein Wert von 8. 7

92 Verkürzte Schreibweise x+=4; x*=10; ++a; --a; // x=x+4; // x=x*10; // a=a+1; // a=a-1; Achtung: a++ hat eine andere Funktionsweise als ++a m=n++; ist wie m=n; n++; m=++n; ist wie n++; m=n; 8

93 Der Zuweisungsoperator (primitive Datentypen) 1 Operator: = Syntax: Operand1 = Operand2 Weist dem Operanden auf der linken Seite den Wert des Operanden auf der rechten Seite zu. Beispiele: Variableninitialisierung: int i = 2; Arithmetische Operationen: i = i + 2; 9

94 Der Zuweisungsoperator (primitive Datentypen) 2 Primitive Datentypen: Zuweisung des Wertes entspricht der Kopie des Wertes in die neue Variable. var1 5 kopiere 5 var2 var2 = var1; 5 10

95 Der Zuweisungsoperator (primitive Datentypen) 3... int i1 = 19; // i1 = 19 int i2 = 47; // i2 = 47 i1 = i2; // i1 = 47 i1 = 27+13; // i1 = 40 i2 = 88; // i2 =

96 Der Vergleichsoperator (Primitive Datentypen)... int i1 = 19; int i2 = 19; boolean b = i1 == i2;// b ist true boolean c = i1 <= 9; // c ist false... 12

97 Logische Operatoren (Primitive Datentypen) Logisches UND && Logischen ODER (2x AltGr <) Negation! int x = 10; boolean norm = (x >= 9 && x <= 11); boolean result = (0<= x && x <= <= x && x <= 110); 13

98 Logische Operatoren b1 b2 NOT!b1 AND b1 && b2 OR b1 b2 true true false true true true false false false true false true true false true false false true false false Wahrheitstabelle 14

99 Nach dieser Einheit sollten Sie... Zuweisungsoperator, Vergleichsoperator und logische Operatoren kennen. Die Reihenfolge ihrer Ausführung kennen. 15

100 Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

101 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2

102 Kontrollstrukturen Alle Kontrollstrukturen eines Programms basieren auf Zustandsüberprüfungen, die die Werte true oder false liefern. z.b. PIN-Überprüfung des ATM: Wenn der richtige PIN eingegeben wurde, dann wird die Abhebung erlaubt, andernfalls verweigert. 3

103 Kontrollstrukturen Verschiedene Arten von Kontrollstrukturen Verzweigungen: if else, switch Iterationen: while, do while, for Sprunganweisungen: continue, break Exception Handling*: (try catch finally) throw *wird später behandelt! 4

104 if TRUE statements block 1 bool-expr statements FALSE In der hier dargestellten Anwendung wird eine Bedingung überprüft (boolexpr). Ist diese erfüllt (true), dann wird der unter statement1 beschriebene Programmcode ausgeführt, anschließend wird das Programm mit statement fortgesetzt. Ist die Bedingung nicht erfüllt (false), dann wird das Programm sofort mit statement fortgesetzt. 5

105 if Syntax und Beispiel reichekunden++ TRUE Balance> statements FALSE JavaSyntax: if (bool-expr) { statements1; } z.b: if (balance>100000){ reichekunden++; } 6

106 TRUE bool-expr statements1 statements FALSE statements2 if-else In der hier dargestellten Anwendung wird eine Bedingung überprüft (bool-expr). Ist diese erfüllt (true), dann wird der unter statement1 beschriebene Programmcode ausgeführt, anschließend wird das Programm mit statement fortgesetzt. Ist die Bedingung nicht erfüllt (false), wird der unter statement2 beschriebene Programmcode ausgeführt, anschließend wird das Programm mit statement fortgesetzt. 7

107 if-else Syntax und Beispiel TRUE Stimmt=true Pin==inputPin FALSE Fehlversuche++ JavaSyntax: if (bool-expr) { statements1; } else { statements2; } statements z.b: if (pin==inputpin){ stimmt = true; } else { fehlversuch++; } 8

108 if-else Beispiel In der hier dargestellten Anwendung wird eine Bedingung überprüft (bool-expr1). Ist diese erfüllt (true), dann wird der unter statement1 beschriebene Programmcode ausgeführt, anschließend wird das Programm mit statement fortgesetzt. Ist die Bedingung bool-expr1 nicht erfüllt (false), dann wird eine weitere Bedingung (bool-expr2) überprüft. TRUE statement1 bool-expr1 FALSE TRUE FALSE bool-expr2 statement2 statement3 Ist diese Bedingung erfüllt, dann wird der unter statement2 beschriebene Programmcode ausgeführt, anschließend wird das Programm mit statement fortgesetzt. Andern-falls wird der unter statement3 beschriebene Programmcode ausgeführt und das Programm mit statement fortgesetzt. statement 9

109 if-else Beispiel if-else kann beliebig tief verschachtelt werden. TRUE statement1 bool-expr1 statement FALSE statement2 TRUE bool-expr2 FALSE statement3... if (bool-expr1) { statement1; } else if (bool-expr2) { statement2; } else { statement3; } statement;... 10

110 switch switch case 1 TRUE statement1 FALSE FALSE case 2... TRUE statement2 default statement 11

111 switch (forts.) 1. An die switch Anweisung wird eine Variable (integral selector) übergeben (z.b. int) 2. case1 überprüft ob der Wert der Variable mit dem angegebenen Wert übereinstimmt. 3. Ist dies der Fall, dann wird die Anweisung in statement1 ausgeführt. 4. Dann überprüft case2 ob der Wert der Variable mit dem angegebenen Wert übereinstimmt. 5. Ist dies der Fall, dann wird die Anweisung in statement2 ausgeführt. 6. Dann wird der Vergleich der Variablen in case3 analog fortgesetzt. 7. Ist keine der angegebenen Bedingungen erfüllt, dann werden die Anweisungen vom Default-Zweig ausgeführt. (Der Default-Zweig ist optional) 12

112 switch - Syntax switch TRUE case 1 FALSE TRUE case 2 FALSE... default statement1 statement2 statement switch(integral-selector){ case integral-value1: statement1; break; case integral-value2: statement2; break;... default: statement; } (break verhindert, dass alle restlichen Statements ausgeführt werden.) 13

113 switch (Bsp.) int month = 12; switch (month) { case 1: System.out.println("Jan"); break; case 2: System.out.println("Feb"); break; case 12: System.out.println("Dec"); break; default: System.out.println("error"); break; } (implizit: Wenn month == 1, dann gibt Jan aus!) 14

114 Iterationen Mit Iterationen (=Schleifen) kann der Programmfluss von Anweisungen, die mehrmals hintereinander durchgeführt werden sollen, gesteuert werden. Die Schleifen werden solange durchlaufen, bis ein Abbruchkriterium erfüllt ist. Das Abbruchkriterium befindet sich am Kopf oder am Fuß der Schleife. z.b. PIN-Eingabe des Kunden: Fordere den Kunden zur Eingabe der PIN auf, bis die richtige PIN bzw. 3* eine falsche PIN eingegeben wurden. 15

115 while While-Schleife bool-expr FALSE Die Anweisungen der while-schleife werden ausgeführt, solange die boolexpr erfüllt (=true) ist. Die Überprüfung der Bedingung findet am Anfang der Schleife statt. TRUE statements 1 statements JavaSyntax: while (bool-expr){ statements1; } 16

116 while Beispiel i<zielwert FALSE int zielwert = 100; int i = 1; while (i < zielwert) { System.out.print("i="+i+, ); i++; } TRUE Print; i++ Ausgabe: i=1,i=2,i=3,,i=99 17

117 do-while statement1 Die Anweisungen der do-while-schleife werden ausgeführt, bis die bool-expr nicht mehr erfüllt ist. Die Überprüfung der Bedingung findet am Ende der Schleife statt. Sie wird somit mindestens einmal durchlaufen. bool-expr FALSE TRUE JavaSyntax: do { statement1; } while (bool-expr) 18

118 do-while Beispiel int zielwert = 1000; int i = 1; do { System.out.println("i="+i+, ); i++; } while (i < zielwert); Print; i++ TRUE Ausgabe: i=1, i=2, i=3, i=999, i<zielwert FALSE 19

119 for initialization step statements Die Anweisungen der for-schleife werden aus-geführt, solange die bool-expr erfüllt ist. Sie wird idr eingesetzt, um eine bekannte, d.h. im vorhinein festgelegte Anzahl von Schritten mit einem Zähler durchzuführen. bool-expr TRUE FALSE JavaSyntax: for (initialization; bool-expr; step){ statements; } 20

120 for Beispiel int zielwert = 4; for (int i = 1; i < zielwert; i++) { System.out.println(i+, ); } Ausgabe: 1, 2, 3, i=1 i<zielwert step TRUE print FALSE 21

121 For (Ergänzung) Java Syntax bei Verwendung von mehreren Zählvariablen (gleichen Typs!): for (initialization; bool-expr; step) { statements; } for (int i=0, j=10; i<=10; i++,j--) { System.out.println( i= + i + i inkrementiert ); System.out.println( j= + j + j dekrementiert ); } Ausgabe: i=0 i inkrementiert j=10 j dekrementiert i=1 i inkrementiert i=9 j dekrementiert 22

122 Endlosschleifen Problemfall: Endlosschleifen (Abbruchbedingung kann nie erfüllt werden!) for (int i=2; i>=1; i = i + 2) { System.out.println(i); } i = 10 while (i >= 1){ System.out.println(i); i++; } 23

123 Endlosschleifen 2 Soll eine Endlosschleife programmiert werden: while (true) { // Code } 24

124 Iterationen Überblick Abfrage Durchlauf Anzahl der Durchläufe while zu Beginn 0, 1 oder mehrmals do-while am Ende 1 oder mehrmals for zu Beginn 0, 1 oder mehrmals unbestimmt unbestimmt festgelegt 25

125 for Beispiel Fakultät Berechnen der Fakultät n! = 1*2*3* *n einer Zahl mittels For-Schleife: class Fakultaet{ public static void main(string[] arg){ int n = 20; long f = 1; for(long i = 2; i<=n; i++){ f = f * i; } System.out.println(n + "! = "+ f); } } 26

126 Sprunganweisungen Sprunganweisungen können in allen Schleifen verwendet werden: break bricht die Schleife ab continue setzt die Schleife mit dem nächsten Durchgang fort, d.h. der Rest dieses einen Durchgangs wird übersprungen. Um Lesbarkeit und Nachvollziehbarkeit des Codes zu gewährleisten empfehlen wir, Sprunganweisungen nicht einzusetzen! 27

127 Sprunganweisungen Beispiel class Sprung { public static void main (String[] args) { int i=0,j=0; while(i<10){ i++; System.out.println("1. "+ i); if(i==7) break; } while(j<10){ j++; if(j<7) continue; System.out.println("2. "+j); } } Ausgabe:

128 Nach dieser Einheit sollten Sie... die Möglichkeiten bedingter Anweisungen kennen, die verschiedenen Schleifen kennen, ihre Eignung für spezielle Anforderung kennen, und alle Konstrukte in eigenen Programmen anwenden können. 29

129 Lernkontrolle Schreiben Sie ein kleines Programm, dass zu arabischen Zahlen die entsprechende römische Zahl ausgibt. Verwenden Sie dazu verschiedenartige Kontrollstrukturen. Anleitung: Beginnen Sie zuerst mit einer vereinfachten Problemstellung (I, V, X) und erweitern Sie diese später. 30

130 Lernkontrolle Fibonacci Sequence Versuchen Sie die Ausgabe dieses Programms zu ermitteln. class Fibonacci { public static void main (String[] args) { /** Ausgeben der Fibonacci Zahlen kleiner 50 */ int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(hi); hi = lo + hi; lo = hi - lo; } } } 31

131 Exkurs: Rekursion* * benötigt Methoden, die später durchgenommen werden Methode bool-expr TRUE FALSE Die Rekursion stellt eine Alternative zur Verwendung von Schleifen dar. Rekursion bezeichnet den Aufruf der eigenen Methode mit anderem Parameter. Analog zu den Schleifen darf dieser Aufruf nur dann durchgeführt werden, wenn eine bestimmte Bedingung erfüllt ist. Methodenaufruf 32

132 Rekursion-Beispiel Berechnen der Fakultät einer Zahl mittels Rekursion (siehe Fakultaet.java): static int fakulrekursiv(int i){ if (i > 1) return i * fakulrekursiv(i-1); else return 1; } (Kapitel 14 in Sprechen Sie Java ) 33

133 Rekursion-Beispiel (forts.) Aufruf Rückgabe: 6 fakulrekursiv(3) Aufruf fakulrekursiv(3-1) Aufruf fakulrekursiv(2-1) Rückgabe: 1 Rückgabe: 2 34

134 Java Einführung Methoden Kapitel 6

135 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden Grundzüge der Programmierung - Hahsler 2

136 Methoden Methoden gehören logisch zusammen und lösen einen bestimmte Teilaufgabe. Methoden werden zur Lösung der Teilaufgabe aufgerufen. In Klassen werden Methoden eingesetzt um das Verhalten der Klasse abzubilden. KlassenName -Variablen +Methoden() Grundzüge der Programmierung - Hahsler 3

137 Deklaration von Methoden Methoden haben eine Namen (Bezeichner) wie Variablen. Methoden haben Parameter. Das sind Werte, die beim Aufruf einer Methode übergeben werden. static void printmax (int x, int y) { } if (x>y) { System.out.print(x) } else { System.out.print(y) } Signatur Grundzüge der Programmierung - Hahsler 4

138 Aufruf von Methoden Durch Angabe von Name und Parameter der Methode: public static void main (String[] arg) { int a=5; printmax (a, 9); } void printmax (int x, int y){ if(x>y) {... } Beim Aufruf wird den formellen Parametern (x, y) der Wert der aktuellen Parametern (a, 9) zugewiesen. x und y können nur in der Methode printmax verwendet werden. Grundzüge der Programmierung - Hahsler 5

139 Deklaration von Methoden mit Rückgabewert static int max (int x, int y) { if (x>y) { return(x); } else { return(y); } } Der Rückgabewert ist hier als int definiert. return legt den Rückgabewert fest und verlässt die Funktion. Es kommen alle Datentypen für den Rückgabewert in Frage. Das Schlüsselwort void bedeutet: kein Rückgabewert Grundzüge der Programmierung - Hahsler 6

140 Aufruf von Methoden mit Rückgabewert Durch Angabe von Name und Parameter der Methode: public static void main (String[] arg) { int a=15; int maximum; maximum = max(a, 9); System.out.println(maximum); } int max (int x, int y){ if(x>y) { return(x); } else { return(y); } } Bei der Rückgabe wird der Rückgabewert (Wert von x, 15) als Ergebnis der Funktion max(15,9) der Variable maximum zugewiesen. Grundzüge der Programmierung - Hahsler 7

141 Beispiele: Aufrufen von Methoden // Def. der Methode max von der vorherigen Folie int a=15; int m; m = max(a/5,9); m = max(a,7) + 19 if (max(-a,23) == 35) {... } Grundzüge der Programmierung - Hahsler 8

142 Rückgabewerte Als Rückgabewert ist ein einzelnes Element eines Datentyps (auch eine Instanz) möglich. z.b.: int addiere(int a, int b) {...} Hat die Methode keinen Rückgabewert, wird das Schlüsselwort void verwendet. z.b.: void ausgeben(string text) {...} Grundzüge der Programmierung - Hahsler 9

143 Lokale Namen Lokale Namen (Methoden, Variablen) sind nur in der Methode (im Block) verfügbar, in der sie deklariert wurden static void machewas(int x) { int y; } // x und y sind nur in dieser Methode verfügbar... Grundzüge der Programmierung - Hahsler 10

144 Gültigkeitsbereich von Variablen Gültigkeitsbereich: ist jener Bereich im Programm, in dem auf eine Variable über den Namen zugegriffen werden kann 1. Sichtbarkeit: Block (+ Unterblöcke), in dem die Variable deklariert wurde. 2. Lebensdauer: werden bei betreten des Blocks angelegt und bei Verlassen wieder freigegeben. Grundzüge der Programmierung - Hahsler 11

145 Bsp: Sichtbarkeit und Lebensdauer class Prog { static int x; static int y;... static void machen(){ int x; while(...) { int z; } } } x Global in Klasse y x lokal z Verdeckt (Sichtbarkeit) Lebensdauer Grundzüge der Programmierung - Hahsler 12

146 Überladen von Methoden Allgemein gilt: In einem Block deklarierte Namen müssen unterschiedlich sein. Bei Methoden gibt es eine Ausnahme: Zwei Methoden dürfen den gleichen Namen haben, wenn sich durch ihre Parameterliste (Art und Anzahl) unterscheidet. Rückgabewert und Name der Parametervariablen sind egal beim Überladen egal! static void print (int x) {... } static void print (double x) {... } static void print (int x, int y) {... } Grundzüge der Programmierung - Hahsler 13

147 Bsp: Aufruf überladener Methoden class MaxProgramm { static int max (int x, int y) { if (x>y) { return(x); } else { return(y); } } static int max (int x, int y, int z) { int max; max = max(z, max(x,y)); return max; } } public static void main (String[] arg) { System.out.println(max(45,13,98)); } Die richtige Methode wird beim Aufruf über die Signatur automatisch ausgewählt. Grundzüge der Programmierung - Hahsler 14

148 Fehler beim Überladen von Methoden 1. static int addiere (int a, int b) {...} 2. static int addiere (int a, int b, int c) {...} 3. static double addiere (double a, double b) {...} 4. static double addiere (int x, int y) {... } Die Methoden in Zeile 1 und 4 können nicht gemeinsam deklariert werden, da beide die gleiche Signatur addiere(int,int) haben. Der Compiler bricht die Übersetzung mit einer Fehlermeldung ab. Grundzüge der Programmierung - Hahsler 15

149 Nach dieser Einheit sollten Sie... Methoden deklarieren und aufrufen können Über die Sichtbarkeit und Lebensdauer von Variablen bescheid wissen Das überladene von Methoden kennen Grundzüge der Programmierung - Hahsler 16

150 Java Einführung Arrays Kapitel 7

151 Inhalt Eindimensionale Arrays Erzeugung Benutzung Zuweisung Beispiel Mehrdimensionale Arrays Grundzüge der Programmierung - Hahsler 2

152 Arrays Oft benötigt man nicht nur Einzelwerte (eine Variable) sondern eine Wertemenge, die gemeinsam verarbeitet werden Wertmengen werden oft in Tabellen oder Listen angeordnet Ein Array ist eine Tabelle von gleichartigen Elementen (Zahlen, Zeichen,...) Grundzüge der Programmierung - Hahsler 3

153 Eindimensionales Array a[0] a[1] a[2] a[3]... a[9] a... Ein Array hat einen Namen (a) Die einzelnen Elemente können durch den Index ([0],[1],...) angesprochen werden Die einzelnen Elemente verhalten sich wie namenlose Variablen Die Größe wird einmal festgelegt und ist dann fix. Grundzüge der Programmierung - Hahsler 4

154 Erzeugung eines Arrays Deklaration des Namens (Arrayvariable, Zeiger) int[] a; float[] vector; Erzeugung des Arrays a = new int[5]; // Array mit Index a a[0] a[1] a[2] a[3] a[4] Name Array Grundzüge der Programmierung - Hahsler 5

155 Benutzung eines Arrays Arrayelemente werden durch den Index angesprochen und können wie normale Variablen verwendet werden int i=1, j=3; a[3]=0; a[2*i+1]=a[j]; // i und j sind int a[max(i,j)]=100; // max ist eine Fkt. Zur Laufzeit wird geprüft ob der verwendete Index gültig ist (ob es das Element gibt) a.length enthält die Länge des Arrays Grundzüge der Programmierung - Hahsler 6

156 Zuweisung eines Arrays Einer Arrayvariable (Name des Arrays) dürfen alle Arrays des passenden Typs zugewiesen werden int[] a; a=new int[5]; int[] b; a b a[0] a[1] a[2] a[3] a[4] null b=a; a b a[0] a[1] a[2] a[3] a[4] b[0] b[1] b[2] b[3] b[4] Grundzüge der Programmierung - Hahsler a und b sind zeigen auf (referenzieren) das gleiche Array! 7

157 Freigabe von Arrays Java verwendet zur Freigabe von Speicher eine automatische Speicherbereinigung (Garbage Collection) Wenn kein Zeiger (Arrayvariable) mehr auf das Array zeigt, wird das Array gelöscht die Arrayvariable wird verändert a=null; oder a=b; die Arrayvariable verlässt den Bereich ihrer Lebensdauer Grundzüge der Programmierung - Hahsler 8

158 Initialisierung von Arrays Arrays können schon bei der Deklaration initialisiert werden int[] primes = {2, 3, 5, 7, 11}; Später können die Elemente nur noch einzeln (über den Index) zugewiesen werden Grundzüge der Programmierung - Hahsler 9

159 Typische Schleife für Arrays class Primes { public static void main (String[] args) { int[] primes = {2, 3, 5, 7, 11}; } } for (int i = 0; i < primes.length; i++) { } System.out.print(primes[i] + " "); Grundzüge der Programmierung - Hahsler 10

160 Bsp: Sequentielle Suche Bei der sequentiellen Suche werden alle Elemente durchgegangen, bis das richtige Element gefunden wird static int search(int[] a, int x) { int pos = a.length-1; while (pos>=0 && a[pos]!=x) { pos--;} return pos; } static void main (String[] args) { int[] b= { 27, 11, 19}; int c= search(b,11); } Grundzüge der Programmierung - Hahsler Achtung: das Array wird nicht kopiert, es wird nur eine "Referenz" auf das Array übergeben! 11

161 Mehrdimensionales Array Mehrdimensionale Arrays sind Arrays von Arrays Bsp: Zweidimensionales Array (Matrix) int[][] a = new int[2][3]; a a[0] a[0][0] a[0][1] a[0][2] a[1] a[1][0] a[1][1] a[1][2] Grundzüge der Programmierung - Hahsler 12

162 Benutzung Mehrdimensionaler Array Initialisierung int[][] a = { {1, 2, 3} {4, 5, 6} }; Länge a.length a[0].length // Zeilen // Spalten Grundzüge der Programmierung - Hahsler 13

163 Nach dieser Einheit sollten Sie... Arrays erzeugen und über den Index benutzen können Wissen was der Arrayname ist und was bei der Zuweisung von Arraynamen passiert Grundzüge der Programmierung - Hahsler 14

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2 Kontrollstrukturen

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Java Einführung. SOFTWARE-ENTWICKLUNG Kapitel 1

Java Einführung. SOFTWARE-ENTWICKLUNG Kapitel 1 Java Einführung SOFTWARE-ENTWICKLUNG Kapitel 1 Inhalt dieser Einheit Phasen eines Softwareprojekts Algorithmus Überblick über (Programmier-) Sprachen Wie funktioniert JAVA? 2 Software Engineering Fachgebiet

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 1 - Variablen und Kontrollstrukturen main Methode Startpunkt jeder Java Anwendung String[] args ist ein Array aus Parametern, die beim Aufruf über die Kommandozeile

Mehr

Einführung in die Programmierung I. 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 252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung

Mehr

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

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

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Programmiervorkurs Einführung in Java Tag 1

Programmiervorkurs Einführung in Java Tag 1 Programmiervorkurs Einführung in Java Tag 1 Sebastian Glutsch SS 2018 namen Inhaltsübersicht Vorkurs Tag 1:,, en,, Einführung Tag 2: Boolesche Ausdrücke,, If-Abfragen, Switch-Case Tag 3: Arrays, (Do-)While-Schleife,

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine

Mehr

Grundlagen der Modellierung und Programmierung, Übung

Grundlagen der Modellierung und Programmierung, Übung Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak

Mehr

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

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I 84 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Namen und Bezeichner 85 Ein Programm (also Klasse)

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

Java I Vorlesung Imperatives Programmieren

Java I Vorlesung Imperatives Programmieren Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010 Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den

Mehr

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

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Objektorientierte Programmierung OOP Programmieren mit Java 5.1 Elementare Anweisungen 5.1.1 Ausdrucksanweisung 5.1.2 Leere Anweisung 5.1.3 Blockanweisung 5.1.4 Variablendeklaration 5.2 Bedingungen 5.2.1

Mehr

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur

Mehr

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Wo sind wir? Übersicht lexikale Struktur von Java

Wo sind wir? Übersicht lexikale Struktur von Java Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen . Gleitkommazahlen In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen Umrechnen von Einheiten und Währungen Jede Zahl x Q mit x 0 lässt sich folgendermaßen schreiben: x = s m e mit

Mehr

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1 Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................

Mehr

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Übungen zur Vorlesung Wissenschaftliches Rechnen I Übungen zur Vorlesung Wissenschaftliches Rechnen I Nicolas Gauger, René Lamour, Hella Rabus Wintersemester 2007/2008 Programmierung - Einführung Programmierung - Einführung Berechnung einer Formel y =

Mehr

Informatik I - Einstiegskurs

Informatik I - Einstiegskurs Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13

Mehr

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

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Hello World! Eine Einführung in das Programmieren Variablen

Hello World! Eine Einführung in das Programmieren Variablen Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf

Mehr

Java Lexikalische Struktur

Java Lexikalische Struktur Informatik 1 für Nebenfachstudierende Grundmodul Java Lexikalische Struktur Kai-Steffen Hielscher Folienversion: 19. Dezember 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

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

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen. Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten

Mehr

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. 1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten

Mehr

Informatik Vorkurs - Vorlesung 2

Informatik Vorkurs - Vorlesung 2 Informatik Vorkurs - Vorlesung 2 Variablen, Arrays, Zahlensysteme Torben Achilles, 9. Oktober 2018 Inhalt Variablen & Datentypen Arrays Zahlensysteme 9. Oktober 2018 Torben Achilles Informatik Vorkurs

Mehr

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

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Brückenkurs Programmieren

Brückenkurs Programmieren Brückenkurs Programmieren Verzweigungen, Operatoren, Schleifen, Arrays Christopher Schölzel Technische Hochschule Mittelhessen 01.10.2013 Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013

Mehr

Anweisungen zur Ablaufsteuerung

Anweisungen zur Ablaufsteuerung Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden

Mehr

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Sprachkonstrukte Einführung in Java Folie 1 von 20 12. Mai 2011 Ivo Kronenberg Inhalt Kommentare Identifier (Bezeichner) Variablen Numerische Ausdrücke und Typen Kontrollstrukturen Verzweigungen Bedingungen

Mehr

Java-Applikationen (Java-Programme)

Java-Applikationen (Java-Programme) Java-Applikationen (Java-Programme) Eine erste Applikation: 1 2 3 4 5 6 7 8 9 10 // Quelltext HalloWelt.java // Programm gibt den Text Hallo Welt aus public class HalloWelt public static void main(string[]

Mehr

1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.5 Was sind Variablen im Kontext der Programmierung?

1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.5 Was sind Variablen im Kontext der Programmierung? Fragenkatalog ESOP 1 Einleitung 1.1 Was ist Programmieren? 1.2 Was ist ein Programm? 1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.4 Was ist ein Algorithmus? 1.5 Was sind Variablen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Vorkurs WS 2014/15 der Fachschaft 07. Eine Einführung in die Softwareentwicklung anlässlich des Vorkurses für die Erstsemester im WS2014/15

Vorkurs WS 2014/15 der Fachschaft 07. Eine Einführung in die Softwareentwicklung anlässlich des Vorkurses für die Erstsemester im WS2014/15 Eine Einführung in die Softwareentwicklung anlässlich des Vorkurses für die Erstsemester im WS2014/15 1. Einführung Was ist Programmieren eigentlich? Zusammengestellt von der Fachschaft 07 Programmiersprachen

Mehr

Selbsteinstufungstest Vorkurs Programmieren

Selbsteinstufungstest Vorkurs Programmieren VPR Selbsteinstufungstest Vorkurs Programmieren Zeit 90 Minuten Aufgabe 1: Einzigartig (10 Punkte) Schreiben Sie eine Methode die angibt, ob ein String str1 in einem zweiten String str2 genau einmal vorkommt.

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner Übung Altersberechner Dennis Komm Programmieren und Problemlösen public class AgeCalc { public static void main(string[] args) { Out.print("Enter your year of birth: ")... } } Ausgabe: "In 2020, you will

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme Schwerpunkte Vollständige und unvollständige Auswertung 8. Ausdrücke, Operatoren (einfache Typen) Teil 1 Seiteneffekte Overloading: Überladung von Operatoren Implizite und explizite (cast) Typumwandlung

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

Mehr

JAVA 06: Gemischte einfache Fragen zu Java

JAVA 06: Gemischte einfache Fragen zu Java Lernkartenkurs JAVA 06: Gemischte einfache Fragen zu Java panitz Zusammenfassung In diesem Kurs geht es um Terminologie und Grundzüge der Programmiersprache Java. Dieses betrifft sowohl Aspekte der Programmierung

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Wiederholung Anweisungen durch Methodenaufrufe Ausgabe

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter Dr. Wolfgang Süß Thorsten Schlachter Java-Bezeichner Für Variablen, Methoden, Klassen und Schnittstellen werden Bezeichner auch Identifizierer (von engl. identifier) genannt vergeben. Ein Bezeichner ist

Mehr

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

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

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

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

Mehr

Kapitel 2: Grundelemente der Programmierung

Kapitel 2: Grundelemente der Programmierung Kapitel 2: Grundelemente der Programmierung Variablen Variablen sind Speicherbereiche im Arbeitsspeicher Anhand eines Namens kann man Werte hineinschreiben und auch wieder auslesen Variablen besitzen ein

Mehr

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Was sind Operatoren Ein Operator ist eine in die Programmiersprache eingebaute Funktion, die

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp ZAIK Universität zu Köln WS 07/08 1 / 6 Datentypen Arten von Datentypen

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable 1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem

Mehr

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1 Aufgaben 1.1 Objektorientiert: (extended-hamster) Sammel-Hamster 1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:

Mehr

Ausdrücke der Programmiersprache Java

Ausdrücke der Programmiersprache Java Ausdrücke der Programmiersprache Java Hamburg 1 Ablauf des Vortrags 01. Eigenschaften von Ausdrücken 02. Arithmetische Operatoren 03. Relationale Operatoren 04. Logische Operatoren 05. Bitweise Operatoren

Mehr

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

Programmierung. Grundlagen. Tina Wegener, Ralph Steyer. 2. Ausgabe, 1. Aktualisierung, April 2014 Programmierung Tina Wegener, Ralph Steyer 2. Ausgabe, 1. Aktualisierung, April 2014 Grundlagen PG 6 Programmierung - Grundlagen 6 Grundlegende Sprachelemente In diesem Kapitel erfahren Sie was Syntax und

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

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

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Variablen, Klassen und Objekte, Methoden Anwendungsentwicklung mit Java Grundlagen der OOP, Variablen, Klassen und Objekte, Methoden Erste Schritte 2 Programmaufruf Ausgabe 3 Aufbau eines Java Programms (1) Paketdeklaration Klassendeklaration

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

Einführung in Java. Ausgewählte Quellen zu Java

Einführung in Java. Ausgewählte Quellen zu Java Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 Einführung

Mehr

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

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1 Übungen Informatik I JAVA - Einführung Übungen Informatik 1 Folie 1 Warum Java? Java ist derzeit die Programmiersprache für das Internet. Java ist ein Programmierkonzept der Zukunft. Objekt-orientierte

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr