praktikum entwicklung und einsatz von geosoftware i - sitzung 2 programmieren und typen...
TRANSCRIPT
![Page 1: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/1.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/2.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/3.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/4.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/5.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/6.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/7.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/8.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/9.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/10.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/11.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/12.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/13.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/14.jpg)
Geosoftware I – Lars Bernard
![Page 15: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/15.jpg)
Geosoftware I – Lars Bernard
![Page 16: Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 2 Programmieren und Typen Sommersemester 2003 Lars Bernard](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/16.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/17.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/18.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/19.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/20.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/21.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/22.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/23.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/24.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/25.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/26.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/27.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/28.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/29.jpg)
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](https://reader035.vdokument.com/reader035/viewer/2022081516/55204d6549795902118bb267/html5/thumbnails/30.jpg)
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