Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen...

30
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard

Transcript of Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen...

Page 1: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Praktikum Entwicklung und Einsatz

von Geosoftware I-

Sitzung 2Programmieren und Typen

Sommersemester 2003

Lars Bernard

Page 2: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Organisation

• Infos unter:

http://ifgi.uni-muenster.de/~bernard/public/

GeosI/index.html

• Teilnehmer-Liste

Page 3: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Einführung: Was bedeutet Programmieren?

• Eine mögliche Definition:

Erstellen einer Simulation Objektorientierung wurde mit der Sprache Simula

“erfunden” (1967) !

Es geht nicht nur darum, dass das Programm läuft

• Simulation = ausführbares Modell Sie lernen hier, mit Informatikmethoden Modelle zu

bauen und sie auszuprobieren

Page 4: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Beispiele

• Wettervorhersage

• Roboter

• Fahrzeugnavigation

• Hydrologische Modelle

• etc.

Page 5: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Kern der Simulation: ein Modell

• ein Modell der Welt, nicht des Computers Folge: Sie sollten genau verstehen, was Sie wollen

Lassen Sie sich vom Programmcode nicht den Blick aufs Wesentliche nehmen

• Merke: “gute Programmierer programmieren einfache

Aufgaben; divide & conquer !

schlechte Programmierer versuchen, schwierige Aufgaben zu programmieren”

Page 6: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Was ist ein Modell ?

• eine Abstraktion von der Welt Wichtiges hervorheben, Details weglassen

klassifizieren und verallgemeinern

• in einer Sprache beschrieben welche Sprachen zur Modellierung kennen Sie?

welche Sprachmittel bieten diese?

• bestehend aus Objekten und Operationen Objektorientierung: beide zusammen betrachten.

Page 7: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Modelle der Geoinformatik

• 3 Komponenten: Raumbezug

Zeitbezug

Thematik

• Besonderheiten: wir können nicht einfach festlegen, wie die Welt

funktionieren soll

Geometrie

Page 8: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Werkzeuge

• Ihr Kopf

• Papier und Bleistift

• Java als moderne Programmiersprache

Page 9: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Was ist Java?

• eine Programmiersprache

• modern, d.h. vergleichsweise “neu” (vgl.

Fortran, Pascal, C, Basic, …..)

• eine wichtige Programmiersprache für

verteilte Anwendungen und das

World Wide Web (WWW)

Page 10: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Was ist Java ? (2)

• sehr stark an C++ angelehnt

• objektorientiert

• “einfach”, “schnell”, “sicher”

• andere Programmier(sprachen)kenntnisse

sind hilfreich

Page 11: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Was macht man mit Java ?

• Programmieren!

• Anwendungen schreiben! alle Arten von Anwendungen, die man mittels “klassischer”

Sprachen schreiben kann

insbesondere Anwendungen, die mit anderen Computern via Internet kommunizieren können

• Einbindung von Grafiken, Webseiten,

interaktiven Fenstern, benutzerfreundlichen

Oberflächen, ...

Page 12: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Compiler & Interpreter

• Compiler = “Übersetzer”: übersetzt

(kompiliert) das Programm in

Maschinensprache

• Compiler liest und kompiliert gesamtes

Programm ==> ausführbares Programm

• Interpreter liest ein Programm Zeile für Zeile

und führt jede Zeile gleich aus.

Page 13: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Java Compiler und Interpreter

• Java Quellcode wird mittels JAVAC kompiliert (in

speziellen Bytecode)

• der Bytecode wird während des Programmablaufs

in Maschinensprache übersetzt (mittels JAVA)

• Vorteile sind u.a.: der vorkompilierte Code ist Plattform-unabhängig! (Internet!)

Überwachung der Programmausführung, z. B. bei Speicherzugriffen, Datenmanipulationen (Datenaustausch via Internet)

Page 14: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Page 15: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Page 16: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Literatur-Hinweis

zur Seminar Homepage ...

Page 17: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Typen - Ziele

• Begriff (Daten-)Typ Zweck von Typen

Beschreibung von Typen

• Elementare Datentypen in Java Deklaration

Bereiche

Operatoren

Typumwandlung

Page 18: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Was ist ein Typ ?

• Welche Typen kennen Sie?Integer, Boolean, Character, String, etc.

• Was bezeichnen diese Namen?Mengen von Werten (“Wertebereich”)

• Boolean = { True, False }• Integer = { x | minInt x maxInt}

• Wie baut man eigene Typen?Mit Typkonstruktoren wie array, list, class etc.

Page 19: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Wozu braucht man Typen ?

• Hauptzweck: Fehler vermeidenz.B. c := a + b (wo a = 5 und b = True)

• SpeicherverwaltungTypen übersetzen die Daten der Benutzer in den internen Binärcode

• ModularisierungProgramme bauen auf Typen auf (Zahlen, Punkte,…)

Dies sorgt für Wiederverwendbarkeit!

Page 20: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Wie beschreibt man Typen ?

• Durch eine Implementierungclass Point { //*...*// };

• Durch die zulässigen Operationen

(Operatoren und Methoden)Integer: +, -, *, (div)Punkt: new Point(5.0, 4.0), getX(), getY()

• Signaturen von Operationen+ :: Integer, Integer -> Integer

getX :: Point -> Double

Page 21: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Elementare Datentypen in Java

• Variablen werden als Elemente eines Typs

deklariertint a, b, c;a = 5; b = 2; c = a + b;

int number_;

Page 22: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Java - Deklaration und Initialisierung

• int a;

• Im Speicher wird ein Bereich für a reserviert

und der Inhalt dieses Bereichs im weiteren

als ganzzahliger Wert von a interpretiert.

• Dann kann a ein Wert zugewiesen werden:

a = 5;

Page 23: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Java - Deklaration und Initialisierung

• In Java kann nur auf den Wert der Variablen

zugegriffen werden (nicht auf die Adresse)

• Deklaration und Zuweisung/Initialisierung können

in einer Anweisung erfolgen:

int a = 5;

• Werte können explizit als Konstante deklariert

werden:

final int a = 5;

Page 24: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Elementare Datentypen in Java

Typ Beispiele Wertemengeshort -215 ... 215-1

int3, -3, 0x3FF(hexadezimal),0377 (octal)

-231 ... 231-1

long 3l, -30000000000L

-263 ... 263-1

float 6-stellige Mantisse,2-stelliger Exponent.

double3.1415, 1e20,1e-10, -1E10 16-stellige Mantisse,

3-stelliger Exponent.byte 0... 28-1 = 255

char 'A', 'a', Zwei byte-Character inUnicode.

boolean true, false Wahr oder falsch.

Page 25: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Java - Operatoren

• Operatoren dienen der Veränderung und

Verknüpfung von Variablen arithmetische Operatoren, z.B:

Add: + Subtr: - Mult: * Div: / Incr: ++

logische Operatoren:Und: && Oder: || Ungleich: != Gleich: ==

Zugriffsoperatoren:Indexzugriff: []

...

Page 26: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Java - Typumwandlung (casting)

• Implizite Typumwandlung (vom niedrigeren zum

höheren Typ):

int a = 5;double x;x = a; // => x == 5.0

• Explizite Typumwandlung (vom höheren zum

niedrigeren Typ):int a;double x = 5.0;a = x; // => warning or errora = (int)X; // => ok

Page 27: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Java - Typumwandlung

• Bereichsüberschreitung:

int a = 31 000; // 4 byte = 32 bitint b = 31 000; short s; // 2 byte = 16 bits = a + b; // => s < 0 => overflow

• Implizite Typumwandlung in arithmetischen

Ausdrücken:

int a = 1; int b = 2;

double x;x = a / b; // => x = 0x = a / (double)b; // => x = 0.5

Page 28: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Zusammenfassung

• Typen sind ein Konzept der

Programmierung

• Ausblick: Klassen sind die objekt-orientierte Form

der Erzeugung von Typen durch Benutzer

Listen zur Mengen-Verwaltung

Page 29: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Und jetzt probieren …class Number {

Number(int numberIn) { number_ = numberIn;

} int getNumber() {

return number_;}int number_;

}

class HelloNumber {public static void main(String[] args){

/* 1. Numbers as basic typs */int Number1 = 1;int Number2, Number3; Number2 = 4; Number3 = 10;

Number1 = Number2 + Number3;

System.out.println("Hello to basic number 1: "+ Number1) ;System.out.println("Hello to a basic number 2 + number 3: "+ Number2 + " " + Number3) ;

/* 2. Numbers as Objects */Number myNumberObject; myNumberObject = new Number(4); System.out.println("Hello to a number object: "+ myNumberObject.getNumber());

}}

Page 30: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard.

Geosoftware I – Lars Bernard

Aufgabe 1 und 2

• Jetzt lesen, beginnen und dazu fragen ;-)

• die HA via e-mail an:

Lars Bernard ([email protected])

jeweils bis Montag 12.00 st