Einführung in die Programmierung Blockkurs Java

Ähnliche Dokumente
Einführung in die Programmierung Blockkurs Java

2 Programmieren in Java I noch ohne Nachbearbeitung

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

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

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

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

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

Vorkurs Informatik WiSe 16/17

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

JAVA-Datentypen und deren Wertebereich

Java I Vorlesung Imperatives Programmieren

Einführung in die Programmierung Blockkurs Java

Einstieg in die Informatik mit Java

Programmiervorkurs Einführung in Java Tag 1

Einstieg in die Informatik mit Java

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Einführung in die Programmierung Blockkurs Java

Angewandte Mathematik und Programmierung

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

Die Programmiersprache C Eine Einführung

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

Vorkurs Informatik WiSe 17/18

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Java Anweisungen und Ablaufsteuerung

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Einführung in Java

Einführung in die Programmierung Blockkurs Java

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

3. Java - Sprachkonstrukte I

Modellierung und Programmierung 1

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Grundlagen von JAVA Hello World in JAVA Elementare Datentypen. Grundlagen von JAVA Hello World in JAVA Elementare Datentypen

Java Ablaufsteuerung (Beispiele)

EINFÜHRUNG IN DIE PROGRAMMIERUNG

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

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

Grundlagen von JAVA Hello World in JAVA Elementare Datentypen. Grundlagen von JAVA Hello World in JAVA Elementare Datentypen

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

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

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

Einstieg in die Informatik mit Java

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Das Einsteigerseminar Objektorientierte Programmierung in Java

Programmieren I. Kapitel 5. Kontrollfluss

3. Java - Sprachkonstrukte I

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

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

Unterlagen. CPP-Uebungen-08/

3. Anweisungen und Kontrollstrukturen

Einstieg in die Informatik mit Java

Primitive Datentypen

Einstieg in die Informatik mit Java

Programmierung mit C Zeiger

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

3. Java - Sprachkonstrukte I

Algorithmen zur Datenanalyse in C++

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

Einstieg in die Informatik mit Java

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

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

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

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

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

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

Fragenkatalog ESOP WS 16/17

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Kapitel 2: Grundelemente der Programmierung

Kapitel 3: Variablen

Ausdrücke der Programmiersprache Java

Objektorientierte Programmierung (OOP)

Programmierkurs Java

8. Ausdrücke, Operatoren (einfache Typen)

Grundelemente objektorientierter Sprachen (1)

RO-Tutorien 15 und 16

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

Einführung in das Programmieren Probeklausur Lösungen

Grundlagen der Modellierung und Programmierung, Übung

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Kapitel

Grundelemente objektorientierter Sprachen (1)

Programmieren 1 C Überblick

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

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

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Konzepte der Programmiersprachen

RO-Tutorien 3 / 6 / 12

Werkzeuge zur Programmentwicklung

4.2 Programmiersprache C

Intensivübung zu Algorithmen und Datenstrukturen

Applications Applets (eingeschränkte Rechte)

Repetitorium Informatik (Java)

Transkript:

Michael Bader 8. 12. April 2002

Java Blockkurs Übersicht Montag: Erste Schritte in Java; Variablen, Operatoren, Anweisungen Dienstag: Objektvariablen und Objektmethoden; Felder und Objekte anlegen Mittwoch: Eigene Klassen definieren; Vererbung und Schnittstellen Donnerstag: Java-Applications; Objektorientiertes Design Freitag: Exceptions, evtl. Threads, Swing, evtl. Java Beans, etc.

Montag Inhaltsübersicht Was ist Java? Was ist Objekt-Orientierte Programmierung? Ein erstes Objekt: das Hello World! -Applet Variablen in Java: Datentypen, Deklaration und Zuweisung Operatoren in Java Anweisungen in Java

Was ist Java? Definition: (aus The Java Language: A Whitepaper /SUN) Java: A simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multi-threaded, and dynamic language. einfach objekt-orientiert interpretiert ( Java Virtual Machine ) robust, sicher verteilt, multithread-fähig, dynamisch architekturunabhängig, portabel

Merkmale objekt-orientierter Programmierung Abstraktion Kapselung Modularität Vererbung Polymorphismus

Was ist Abstraktion? Abstraktion: Konzentration auf die wesentlichen Eigenschaften ignoriere Details Programmdesign mittels Objekten und Klassen (anstelle von Variablen/Speicherzellen) Was tut ein Objekt? anstelle von wie wird es das tun? top-down Ansatz lege erst Schnittstellen (Interaktion der Objekte) fest, implementiere später Abstraktion ist Teil objektorientierten Designs (Programmentwurf).

Was ist ein Objekt? Definition: An object is a software bundle of variables and related methods. Ein Objekt ist charakterisiert durch seine Identität, seinen Zustand und sein Verhalten: die Identität unterscheidet es von allen anderen Objekten; der Zustand ist durch seine Variablen gegeben; das Verhalten eines Objekts ist durch seine Methoden (Funktionen, Prozeduren) gegeben Objekte können real existierende Komponenten wiedergeben, die Teil der Problemstellung sind.

Was ist eine Klasse? Definition: A class is a blueprint that defines the variables and the methods common to all objects of a certain kind. Objekte vs. Klassen: Klassen werden vom Programmierer definiert ( Konstruktionsplan ) Objekte werden während des Programmablaufs erzeugt Objekte sind Instanzen einer Klasse alle Objekte einer Klasse besitzen die gleichen Methoden, zeigen daher gleiches Verhalten alle Objekte einer Klasse haben die gleichen Variablen ( Member ), aber mit unterschiedlichem Inhalt (Zustand)

Was ist Kapselung bzw. Information Hiding? Kapselung: Objekte enthalten alle benötigten Variablen sowie die darauf arbeitenden Funktion ( Methoden ) Ziel: Wissen über Implementierung einer Klasse für andere Klassen nicht nötig Information hiding: Implementierung einer Klasse wird vor anderen Klassen verborgen Zugriff auf private Variablen oder Methoden wird verboten Modifikation eines Objekts nur über öffentliche Methoden (und Variablen) möglich Ziel: Implementierung einer Klasse für andere Klassen nicht sichtbar

Was ist Vererbung? Vererbung: eine Klasse kann Eigenschaften einer Oberklasse übernehmen. Ziele: Wiederverwendung existierender (funktionierender, fehlerfreier) Klassen definiere generisches Verhalten in einer Oberklasse, das dann von verschiedenen (verwandten) Klassen geerbt werden kann Beispiel: Fahrzeug (= Oberklasse) mögliche Unterklassen: Auto, Motorrad, Pferdekutsche,... Unterklassen von Auto: Cabrio, Kombi, Limousine,...

Ein erstes Objekt: ein Java Applet Ein Java Applet ist typischerweise Teil einer Webseite der Programmierer entwirft eine Klasse der Webbrowser erzeugt (und startet ) ein Objekt dieser Klasse Beispiel: import java.awt.*; import java.applet.applet; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hello World!",50,50); } }

HelloApplet (1) import java.awt.*; import java.applet.applet; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hello World!",50,50); } } import java.awt.*; import java.applet.applet; importiere Klassen von bestimmten Java-Bibliotheken (awt = abstract windowing toolkit) analog zu with(...) in Maple

HelloApplet (2) import java.awt.*; import java.applet.applet; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hello World!",50,50); } } public class HelloApplet extends Applet definiere Klasse HelloApplet als Erweiterung eines Applets Applet ist java.applet.applet Vererbung : HelloApplet erbt Eigenschaften von der Klasse Applet

HelloApplet (3) import java.awt.*; import java.applet.applet; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hello World!",50,50); } } public void paint(graphics g) definiere (zusätzliche) Methode paint Parameter g: Objekt vom Typ Graphics (in java.awt definiert, modelliert ein grafisches Ausgabegerät) paint wird aufgerufen, wenn das Applet neu gezeichnet wird.

HelloApplet (4) import java.awt.*; import java.applet.applet; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hello World!",50,50); } } g.drawstring("hello World!",50,50); rufe die Methode drawstring für das Objekt g (grafisches Ausgabegerät) auf. zeichne den Text "Hello World!" bei Koordinate (50, 50)

Programme ausführen: Maple vs. Java Maples Programmiersprache: benötigt Maple als Laufzeitumgebung ist interaktiv: Benutzer gibt Ausdrücke ein, Maple berechnet Ergebnis ist deklarativ: Prozeduren jederzeit neu definierbar, die letzte Definition gilt. Java: Compiler übersetzt Quelltext in Java Bytecode Java Virtual Machine führt Bytecode aus nicht interaktiv: Änderung des Quelltexts erfordert erneutes Compilieren. imperativ: Ein-/Ausgabe explizit programmiert; Abarbeitung der Instruktionen vom Programm vorgegeben.

Maple und Java Übersetzungsvorgang Maple Prozedure in Maple-worksheet eingeben return Maple prüft Syntax Maple erzeugt interne Darstellung der Prozedur Benutzer ruft Prozedur auf: Maple berechnet Ergebnis (und gibt es aus) Java Programm in Texteditor eingeben Java-Compiler aufrufen Compiler prüft Syntax Compiler erzeugt Java Bytecode Bytecode in Java Virtual Machine starten: Programm wird ausgeführt

Erste Schritte in Java I. Programm in Texteditor eingeben und speichern Regel: Programmdatei trägt immer den Namen der Klasse plus.java II. Compiler aufrufen: javac HelloApplet.java überprüft Programm auf (syntaktische) Korrektheit erzeugt Java Bytecode HelloApplet.class III. Programm starten: Applet im Appletviewer oder Browser Application in Java Runtime Environment

Applets und HTML Ein Applet ist typischerweise Teil einer Webseite (in HTML ). Minimalbeispiel: HelloApplet.html <html> <head><title>webseite mit Applet</title></head> <body> <applet code="helloapplet.class" width=300 height=200></applet> </body> </html> Aufruf im Browser: z.b. netscape HelloApplet.html Aufruf im Appletviewer: appletviewer HelloApplet.html

Maple vs. Java Variablen Maple: Variablen enthalten Ausdrücke mathematische Ausdrücke verschiedene Arten von Ausdrücken wechselnde Arten von Ausdrücken logische Datenstrukturen: Listen, Mengen, Tabellen Java: Variablen sind einfache Datentypen oder Objekte enthalten bestimmten Variablentyp (ganze Zahl, Graphics-Objekt,... ) Variablentyp wird im Voraus festgelegt Objekte bündeln einfache Datentypen bzw. andere Objekte Fundamental unterschiedliches Konzept bzgl. Variablen!

Variablen in Java Variablen müssen stets deklariert werden (Typ festlegen) bevor sie verwendet werden darf es gibt verschiedene Variablentypen eine Variable eines bestimmten Typs kann nur Information dieses Typs enthalten. einfache Variablen enthalten Werte (Zahlen, Zeichen, true/false), keine Terme oder Ausdrücke Variablen für komplexe, logische Datenstrukturen (Listen, Mengen, etc.) sind vom Programmierer zu implementieren (Klassen). Felder können aus einfachen Variablen und aus Objekten gebildet werden

Einfache Datentypen in Java Typ Inhalt Platz boolean true oder false 1 bit char Unicode Zeichen 16 bit byte Integer { 128,..., 127} 8 bit short Integer { 32768,..., 32767} 16 bit int Integer { 2147483648,..., 2147483647} 32 bit long 64-bit Integer 64 bit float IEEE 754 Gleitkommazahl 32 bit double IEEE 754 Gleitkommazahl 64 bit Mit final lassen sich Konstanten definieren, z.b. final int, final double, etc.

Variablen Deklarieren und Initialisieren Beispiele: int i; int j=0; float e=2.7182f, pi=3.14159f; final double PI=3.14159265; char c= A ; falls nicht explizit initialisiert wird, erfolgt implizite Initialisierung (i.d.r. zu 0) Variablen dürfen (beinahe) überall deklariert werden beachte Typkorrektheit!

Variablen Zuweisungen und Operatoren Zuweisungen und Operatoren ( rechnen ) funktioniert in Java fast genauso wie in Maple: int i; float e; double pi = 3.14159265; i = 3; e = (2.7182f * i) - 1.5f; pi *= 2.0; beachte das = ( := gibt es in Java nicht!) das Semicolon schließt die Zuweisung ab alle Operationen müssen typ-korrekt sein (float double) (beachte implizite Typumwandlungen beim Rechnen!)

Arithmetische Operatoren + Addition - Subtraktion * Multiplikation / Division; für int (etc.) ist die Division ganzzahlig % modulo-rechnung ( Rest bei der Division) Vorrangrelationen: Punkt vor Strich : *,/,% vor +,- Plus/Minus als Vorzeichen vor *,/,% Klammern heben Vorrang auf

Typumwandlungen bei Zahlentypen Implizite Umwandlungen: Regel: niedrigerer Typ wird in höheren Typ umgewandelt Hierarchie: byte short int long float double Beispiel: 3.0 / 5 Explizite Umwandlungen: (<type>) <expression> auch entgegen der Hierarchie Genauigkeitsverlust möglich ggf. Fehler wegen anderem Wertebereich Beispiel: (float) 3 / 5

Anweisungen in Java Zusammenfassung: Zuweisungen und Methodenaufrufe sind Anweisungen Blockanweisungen: {... } bedingte Anweisungen: if... else, switch... case Schleifen: while, do... while, for; innerhalb Schleifen: break, continue Anweisungen zur Ausnahmenbehandlung: try... catch... finally ( Freitag)

Zuweisungen sind Anweisungen Beispiele: i = j = 0 ; e += 3.71 ; i--; --i; i++; ++i; Zuweisungsoperatoren: = Zuweisung +=, -=, *=, /=, %= i+=3 Abkürzung für i=i+3, etc. ++ inkrementieren -- dekrementieren i++, i-- ++i, --i i nach Auswertung erhöhen/erniedrigen i vor Auswertung erhöhen/erniedrigen

Anweisungen zusammenfassen die Blockanweisung Syntax: { <statement> <statement> <statement>...} Beispiel: { int a=2,b=3; { g.drawstring("a = "+a, 50,50); g.drawstring("b = "+b, 50,100); } g.drawstring("a + b = "+(a+b), 50,150); } Beachte: der Strichpunkt trennt nicht Anweisungen, er ist Bestandteil bestimmter Anweisungen! Wozu sind Blockanweisungen sinnvoll? if, for, while,...

Bedingte Anweisungen Syntax: if ( <expression> ) <statement> if ( <expression> ) <statement> else <statement> Beispiele: if ( a!= 0 ) b /= a; if ( x > -1 && x < 1 ) { if ( x < 0 ) erg = 1+x; else erg = 1-x; } else erg = 0;

Boolsche Operatoren Zusammenfassung ==,!= gleich/ungleich <, <= kleiner (oder gleich) >, >= größer (oder gleich) && logisches UND logisches ODER! logisches NICHT (einsteliger Operator) Vorrangrelationen: && vor!= und == vor && und! vor!=, ==, &&, und Klammern heben Vorrangrelationen auf klug einsetzen!

Bedingte Anweisungen Beispiele Bedingungen in bedingten Ausdrücken müssen vom Typ boolean sein! entweder Ausdruck mit boolschen Operatoren: if ( a!= 0 ) b /= a; if ( x >= 0 ) abs = x; else abs = -x; if ( x < -1 x > 1 ) erg = 0; oder Variable vom Typ boolean: boolean c = ( a!= 0); if ( c ) b /= a;

While Anweisung Syntax: while (<expression>) <statement> Beispiele: while (a >= b) a -= b; i = 1; while (a >= 1) { a /= 2; i++; } führe <statement> solange aus bis <expression> falsch ist <statement> wird u.u. nie ausgeführt

Do-While Anweisung Syntax: do <statement> while (<expression>); Beispiel: a = 1.0; do { a *= 2.0; i--; } while(i>0); führe <statement> solange aus bis <expression> falsch ist <statement> wird mindestens einmal ausgeführt!

For Anweisung Syntax: for(<expression>; <expression>; <expression>) <statement> Beispiele: for(i=1;i<=10;i++) a *= 2.0; a = 17; for(int i=1;a>=1;i++) a /= 2.0; 1. Ausdruck: Initialisierung 2. Ausdruck: Fortsetzungsbedingung 3. Ausdruck: Schleifenzähler

For vs. While for(<expression1>; <expression2>; <expression3>) <statement> ist äquivalent zu <expression1>; while(<expression2>) { <statement> <expression3>; } Beachte: ein Ausdruck wird zu einer Anweisung, wenn ein Semicolon folgt umgekehrt ist eine Zuweisung zugleich ein Ausdruck (Zuweisungsoperator!)

For-Schleifen Beispiele Binomialkoeffizienten: koeff = 1; for(i=n;i>=n-k+1;i--) koeff *= i; for(i=1;i<=k;i++) koeff /= i; oder, zusammengefasst: zaehler = nenner = 1; for(i=1;i<=k;i++) { zaehler *= (n+1-i); nenner *= i; } koeff = zaehler/nenner;

Verschachtelte Anweisungen Beispiel: Primzahlen for(i=3;i<1000;i+=2) if ( i%3!=0 && i%5!=0 && i%7!= 0) System.out.println(i+" ist vielleicht Primzahl"); for(i=2;i<1000;i++) { int dividers=0; for (j=2;j<i;j++) if (i%j == 0) { System.out.println(i+" ist Vielfaches von "+j); dividers++; break; }; if (dividers==0) System.out.println(i+" ist Primzahl"); };