Grundlage

Werbung
Inhalte
• Grundlagen
–
–
–
–
–
Rechneraufbau
Zahlendarstellung (binär, dezimal, hexadezimal)
Zeichen, Bilder
Zusammengesetzte Datentypen
Computerprogramme
• Programmierung
– Softwareentwicklung
– Algorithmus
– Javaprogramm
D. Sommer
Programmierung I
WS 12/13
1
Grundlagen – Zeichensätze
• Darstellung weiterer Zeichen, alternativ zu den Zahlen
• Buchstaben, Zeichenketten, Texte, etc.
• Annahme: 7 Bit je Zeichen genügen
(max. 128 mögliche Zeichen)
•
•
•
•
10 Ziffern (0 1 2 3 4 5 6 7 8 9 )
26 Klein- und Großbuchstaben (aA, bB, …, zZ)
Sonderzeichen (%$?!“°…)
Steuerzeichen (Zeilenumbruch, CR carriage return, TAB. etc.)
• Datenaustausch führt zur Notwendigkeit eines festen
Zeichensatzes
D. Sommer
Programmierung I
WS 12/13
2
Grundlagen – Zeichensätze
American Standard Code for Information Interchange
– Eines der ersten Standards in der Informatik
– ASCII o. US-ASCII [1963]
• Ziel: Standard für Austausch von Informationen
– 8 bit - Code
• 7 Bit zur Zeichencodierung
• höchstwertige Bit als Prüfbit (wegen möglicher Fehler während der
Datenübertragung)
– Festlegung der 128 Zeichen in 95 druckbare Zeichen und
33 nichtdruckbare Zeichen
– 10 Ziffern
– 26 Klein- und Großbuchstaben
– 33 Sonderzeichen
– 33 Steuerzeichen: TAB, ESC, CR, etc.
D. Sommer
Programmierung I
WS 12/13
3
Grundlagen – Zeichensätze
• 00 – 1F: Steuerzeichen
• Bsp. - Darstellung ‚E‘: 69. Zeichen: 4516 = 4*16 + 5*1
(0100 0101)2
D. Sommer
Programmierung I
WS 12/13
4
Grundlagen – Zeichensätze
– Erweiterung: länderspezifische Zeichen
• Bspw. DE: ä, ö, ü, Ä, Ö, Ü, ß (deutsche Umlaute)
• weitere Länder: é, æ, ë, Ý, å, á, etc.
– Lösungsansatz [1986]: länderspezifische Zeichentabellen
• Verzicht auf Prüfbit: Verdoppelung der Zeichenmöglichkeit
• Für jedes Land eine extra zweite Hälfte im 8 Bit - Code
– Vorteil:
• Darstellung sprachspezifischer Zeichen für verschiedene Regionen
– Nachteil:
• verschiedene Regionen interpretieren zweite Hälfte unterschiedlich
• Verwendung regionenspezifischer Zeichentabellen
• Datenaustausch zum Teil schwierig (bspw. Email, also bis heute noch
relevant, auch bei Eingaben, bspw. Tastatur relevant)
D. Sommer
Programmierung I
WS 12/13
5
Grundlagen – Zeichensätze
• Bsp. aus dem Thunderbird-Email-Programm
D. Sommer
Programmierung I
WS 12/13
6
Grundlagen – Zeichensätze
• Insbesondere durch internationalen Datenverkehr,
(zunehmend durch Internet)
Notwendigkeit der Erweiterung
• Standard seit 1993 im Aufbau
– 1. Version 16 Bit (216 = 65536)
– Aktuelle Version 32 bit (232 = 4.294.967.296)
• Unicode
– Code-Tabelle für universellen Zeichensatz
– Soll alle Zeichen der Welt umfassen
D. Sommer
Programmierung I
WS 12/13
7
Grundlagen – Zeichensätze
• Unicode
– Plattformunabhängig
• Unix, Windows, Android, Apple iOS, etc.
– Programmunabhängig
• Browser, Texteditor, Email-Client, etc.
– Sprachenunabhängig
• Englisch, deutsch, indisch, etc.
– Aktuelle Version (6.2) umfasst aktuell:
• 100 Schriftsysteme (prinzipiell Codetabellen)
• 110.182 Zeichen
• Beginnt bei U+0000 ASCII-Zeichen, Griechisch, …
Hiragana, Katagana, …, etc.
D. Sommer
Programmierung I
WS 12/13
8
Grundlagen – Unicode Code Charts
http://www.unicode.org/charts/
D. Sommer
Programmierung I
WS 12/13
9
Grundlagen – Unicode BMP
• Aufteilung der Unicodes in Unicodeblöcke
D. Sommer
Programmierung I
WS 12/13
10
Grundlagen – Zeichensätze
• Der Unicodeblock Lateinisch-1, Ergänzung
• (U+0080 bis U+00FF)
D. Sommer
Programmierung I
WS 12/13
11
Grundlagen – Zeichensätze
• Bsp. Unicodeblock Katakana
• U+30A0 – U+30FF
D. Sommer
Programmierung I
WS 12/13
12
Grundlagen – Zeichensätze
• Bsp. Unicodeblock Katakana
• U+30A0 – U+30FF (es werden nur 2 Byte gezeigt, führende 0000 fehlt)
• Silbenschrift Katakana (einer von drei Bestandteilen der
japanischen Schrift, vor allem für Fremdwörter)
D. Sommer
Programmierung I
WS 12/13
13
Grundlagen – Bilddaten
• Speicherung von Bildinformationen in Digitalbildern
D. Sommer
Programmierung I
WS 12/13
14
Grundlagen – Bilddaten
• Möglichkeit 1: Speicherung als Rasterpunkte
• Bild wird in kleine Rechtecke zerlegt & gespeichert
– Bildpunkte (Pixel)
– Zusammensetzung zu Line
– Mehrere Linien -> Bild
…
D. Sommer
Programmierung I
WS 12/13
15
Grundlagen – Bilddaten
• Anzahl der Bildpunkte bestimmen Qualität des Bildes
– Absolute Angabe:
•
•
•
•
•
Pixel je Zeile x Anzahl der Zeilen = Gesamtzahl der Pixel
Handy IPhone5:
1.136 x 640 Pixel
Handy Samsung S3:
1.280 x 720 Pixel
Fernseher:
1.920 x 1.080 Pixel (Full HD)
Kamera Canon 600d: 18 MegaPixel (5.184 x 3.456 Pixel )
– Relative Angabe:
•
•
•
•
D. Sommer
Punkte je Zoll (dots per inch)
Drucker: 4.800 dpi (4.800 Punkte auf 2,54 cm)
IPhone5: 326 ppi (pixel per inc)
„über 300 ppi (Retina-Display)“
Programmierung I
WS 12/13
16
Grundlagen – Bilddaten
Je Rasterpunkt werden die Farben gespeichert
– Position ergibt sich aus Speicherreihenfolge und
Bsp. Graustufen-Bild
Kenntnis der Auflösung des Bildes (bspw. Pixel / Zeile)
– Möglichkeiten der Farbinformationscodierung:
•
•
•
•
1 Bit je Pixel: typisch in Schwarz/Weiß-Bildern
8 bit je Pixel: Graustufen
3 x 8 Bit je Pixel: (RGB) ‚True Color‘(28 * 28 * 28 = 224 ~16,7 Mil. Farben)
4 x 8 Bit je Pixel: (RGBA), ist RGB + Alpha-Kanal (Transparenz)
Bsp. Speicherung der Farbinformation je Pixel
D. Sommer
Programmierung I
WS 12/13
Bsp. Schwarz-Weiß-Bild
Bsp. RGBA-Darstellung, Icons scheinen am
Fensterrand durch
17
Grundlagen – Bilddaten
• Speicherplatz für Bildinformation
– Absolute Auflösung
• Anzahl der Pixel je Zeile
• Anzahl der Zeilen
–
–
–
–
Farbtiefe
Anzahl der Farbkanäle
Auflösung * Farbtiefe * #Farbkanäle
Bsp. HD-Bild des Fernseher (True Color)
• 1.920 x 1.080 x 1 Byte*3 = 6.220.800 (ca. 6 Mbyte)
• Typisch Bilddateiformate: bmp, tiff, gif, png, jpg (letztere sind
komprimiert)
D. Sommer
Programmierung I
WS 12/13
18
Grundlagen – Bilddaten
2. Möglichkeit: Vektorgrafik, alternativ zur Pixelgrafik
• (Keine Rasterung) Zerlegung des Bildes in Primitive /
Objekte: z.B. Linien, Kreise, Polygone, Freiformkurven
• Zu jedem Objekt werden nur die Eigenschaften / Attribute
gespeichert, z.B. Position, Größe, Farbe, Füllung, etc.
• Darstellungsprogramm: bspw. Browser zeichnet das Bild
• Beispielformate für Vektorgrafiken: SVG, CDR (Corel Draw,
PDF, SWF (Flash)
+ Bilder sind beliebig vergrößerbar
+ sehr wenig Speicherplatz bei wenigen Primitiven
+ Ideal für Diagramme
- Weniger geeignet für Fotos
D. Sommer
Programmierung I
WS 12/13
19
Grundlagen – Bilddaten
Vektorgrafik: Bsp. Kreis
Mittelpunkt
– X: 1 Byte
– Y: 1 Byte
Radius
– R:1 Byte
Randdicke
– D: 1 Byte
Farbe (True Color)
– Fi: 3 Byte (Farbe Innen, RGB)
– Fa: 3 Byte (Farbe Rand, RGB)
D. Sommer
Programmierung I
WS 12/13
256 Pixel
Summe: 10 Bytes / Kreis
20
Grundlagen – Bilddaten
Vektorgrafik
D. Sommer
Programmierung I
WS 12/13
21
Grundlagen – Musik, Video
• Ähnliche Speicherprinzipien für Musik und Videodaten
– In digitale Samples / Bildsequenzen
– Primitive / Objekte: Noten, etc.
D. Sommer
Programmierung I
WS 12/13
22
Grundlagen – komplexe Datentypen
• Klare Definition für: Zahlen, Zeichen, Bilder, Töne, etc.
• Vieles lässt sich jedoch nicht direkt auf elementare
Datentypen abbilden
• Zum Beispiel komplexere Sachverhalte, ähnlich dem
Beispiel von vorhin (Kreis im SVG-Format) oder:
• Bsp.: Beschreibung einer Person:
– beschrieben durch Daten wie: Name, Größe, Alter, etc.
– Teile der Daten sind Text, andere Zahlen, etc.
D. Sommer
Programmierung I
WS 12/13
23
Grundlagen – komplexe Datentypen
Ansatz zur Speicherung komplexerer Sachverhalte
– Zerlegung der Daten in elementare Datentypen
– Bsp. Person: Speicherung in einem zusammenhängenden Block
•
•
•
•
Name: Zeichenfolge
Alter: positive ganze Zahl
Größe: Fließkommazahl
Passbild: Rasterbild
• Speicherplatzbedarf, ähnlich dem Kreisbeispiel von
vorhin: ergibt sich aus der Summe aus ElementarDatentypen
D. Sommer
Programmierung I
WS 12/13
24
Grundlagen – komplexe Datentypen
Bsp. Person:
• Name: Zeichenfolge
• Alter: positive ganze Zahl
• Größe: Fließkommazahl
• Passbild: Rasterbild
Name:
100 ASCII-Zeichen
Alter:
[Jahre]
Größe
[m]:
Passbild:
300x200 RGB
100 Bytes
1 Byte
4 Byte
192.000 Bytes
• Summe der Bytes im Speicher: 192.105 Bytes (Meist wird je Speicherblock
noch Strukturinformation abgelegt, daher leichtes Overhead möglich)
• Ermöglicht vereinbarten Datentausch
D. Sommer
Programmierung I
WS 12/13
25
Grundlage - Computerprogramme
Ablegen von Programmen im Computer
• Von Neumann-Architektur: Daten und Programme
zusammen in einem Speicher
• Binärdaten liegen fortlaufend im Speicher, könnten
Datum oder Befehl sein (Befehle sind Bitfolgen)
• Unterscheidung durch CPU, die einen ‚Programm
Counter‘ (PC) hat, der jeweils auf den aktuellen Befehl
zeigt
• Nach Abarbeitung eines Befehl, verändert sich der PC,
wird auf Wert der nächsten Befehlsposition gesetzt
– Bspw. bei einem speziellen Typ von 64 Bit-CPU wird der PC
nach jedem Befehl um 64 Bit erhöht
D. Sommer
Programmierung I
WS 12/13
26
Grundlage - Computerprogramme
– Einfache Befehle auf/für Positive, Ganze, Fließkommazahlen
oder Zeichen, Zeichenfolgen
– Addition, Subtraktion, Multiplikation, Division
– Logische Operatoren (AND, OR, NOT, XOR) für Bit & Bitfolgen
– Ein oder zwei Operanden
– Bsp: AND, OR, XOR, NOT
A AND B (beide Bits müssen ‚1‘ sein, dann ist die Ausgabe-Bit ‚1‘)
A OR B (ein Bits muss ‚1‘ sein, dann ist das Ausgabe-Bit ‚1‘)
A XOR B (ein Bits muss ‚1‘ sein, das andere ‚0‘, dann ist das Ausgabe-Bit ‚1‘)
Not 0 = 1
Not 1 = 0
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
D. Sommer
Programmierung I
WS 12/13
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
1100100
OR 1010011
1110111
27
Grundlage - Programmiersprachen
• Maschinencode: Instruktionen (Befehle) und Daten, die
der Prozessor direkt ausführen kann. Kaum lesbarer
Binär- bzw. Hexadezimalcode. (kaum genutzt)
• Assembler: Anzeige des Maschinencodes spezifisch für
eine CPU in Textform. (für Menschen lesbare Form
repräsentiert.) typische Befehle:
• Daten Lesen / Schreiben
• Arithmetische Operationen +-*/
• Logische Operationen Not, And…
• Kontrolle des Programmflusses
D. Sommer
Programmierung I
WS 12/13
28
Grundlage - Programmiersprachen
• Strukturierte Programmierung
– Stark abstrahiert von dem
wie CPU arbeitet
– an das Problem angelehnte
Programmstruktur
– Meisten eingesetzt
– Programm besteht aus Teilprogrammen
und beschreibt die Bedingungen, unter
denen sie zusammen wirken.
– Leichter zu lesen
– Bessere Wartung
D. Sommer
Programmierung I
WS 12/13
29
Grundlage - Programmiersprachen
• Grafische Programmiersprachen
– Vermeidung textueller Eingaben
– Programm besteht aus Bausteinen
– Nicht vollständig ausgereift
D. Sommer
Programmierung I
WS 12/13
30
Grundlage - Programmiersprachen
Grundprinzipien höherer Programmiersprachen
– Höchster Abstraktionsgrad gewünscht
– (umgangssprachliche Formulierungen gewünscht, jedoch fast
nicht möglich)
– Problem: CPU versteht nur Maschinencode
– Lösungsansatz: Automatisches Übersetzen von Programmen in
höherer Sprache direkt in Maschinencode
– Einmalige Übersetzung: Compiler (einmaliger Lauf)
„Text“
Höhere Sprache
Compiler
– Laufzeitübersetzung: Interpreter
„Text“
Höhere Sprache
D. Sommer
Programmierung I
WS 12/13
Interpreter
„Exeutable“
Maschinencode
(fortwährende Übersetzung)
Exeutable
Maschinencode
31
Grundlage - Programmiersprachen
• Compilerübersetzung
+ schneller Code
+ Fehlermeldungen zum gesamten Quelltext möglich
– Plattformabhängig
• Interpreter
+ (meist) plattformunabhängig
- Laufzeit der Programme: deutlich langsamer
- Fehler: meist nur während Laufzeit
• Neuere Plattformen : Java, .NET (kombinieren beides Compiler+Interpreter)
„Text“
Höhere Sprache
Compiler
Interpreter
„Jar“
Zwischencode
„Executable“
Maschinencode
010011000101
SW-Entwicklung Vorgehen
Typische Schritte in der Softwareentwicklung:
• Spezifikation: (1) Beschreibung des Problems
Beschreibung der zukünftigen Lösung
• Algorithmus: (2) Angaben, um das Problem
schrittweise zu lösen
• Programm: (3) finaler Schritt- konkrete Formulierung
der Algorithmik in einer gewählten Programmiersprache
D. Sommer
Programmierung I
WS 12/13
33
SW-Entwicklung - Spezifikation
• Erster Schritt, der jeder Softwareentwicklung voran
gestellt werden sollte
• Festlegung der Problembeschreibung (vollständig,
detailliert, unzweideutig)
– Vollständig: alle relevanten Rahmenbedingungen,
Anforderungen, Schnittstellen, Oberflächen, etc.
– Detailgrad: alle Gundaktionen und Hilfsmittel
– Eindeutig: klare Kriterien, wann Lösung akzeptabel ist
• Eingabespezifikation: Eigenschaften der Eingabegrößen
(Umfang und Detail aller Eingabedaten)
• Ausgabespezifikation (Zusicherung): Eigenschaften der
Ausgabegrößen (was soll berechnet werden)
D. Sommer
Programmierung I
WS 12/13
34
SW-Entwicklung - Spezifikation
• Problembeschreibung: Bsp. Webanbindung an eine SW
Webbasierte Berechnung des Alertneslevels
– „Eingabespezifikation“: alle Aktivitätsprotokolle – Eingabe
über Internet
– „Ausgabespezifikation“: Rückgabe der Aufmerksamkeitslevels
• Offene Fragen:
(Spezifikation ist unzureichend!)
– Vollständigkeit: Dauer und Detail der Eingabeprotokolle, sollen
Daten gespeichert, zwischengespeichert, archiviert werden?
Welche Zusatzdaten werden wie übergeben, etc.
– Detailgrad: Welche Programmiersprachen? Welche
Schnittstellen? Zusatzsoftware? Welche Umgebung, etc.?
– Eindeutigkeit: Wer/Wie entscheidet über Korrektheit
(Ansprechpartner); Nachvollziehbare Kriterien?
D. Sommer
Programmierung I
WS 12/13
35
SW-Entwicklung - Spezifikation
Beschreibung der Spezifikation
• Perfekt, präzise und vollständig ist mathematische Logik
– Formale Beschreibung: Bsp. Programm: P
x := Eingabe(P) εN
Ausgabe(P) := x2 εR
Einfache Problematik ist beschrieben, ist eindeutig, überprüfbar..
• Praxis: weniger formale Beschreibung in natürlicher
Sprache (Pflichtenheft)
– Produkt aus Auftraggeber, Auftragnehmer, Entwickler
– meist umfangreiche, mehrdeutig, inkonsistent
– Fragestellungen für Kunden und Auftragnehmer:
• Eingabespezifikation: kann Kunde alles liefern?
• Ausgabespezifikation: Werden Kundenanforderung erfüllt?
D. Sommer
Programmierung I
WS 12/13
36
SW-Entwicklung - Spezifikation
Qualitätsmanagement in der Softwareentwicklung
• Pflichtenheft allein nicht ausreichend
• Zwischenversionen der Software
• Meetings mit den Partnern
• Gezieltes Softwaremanagement
D. Sommer
Programmierung I
WS 12/13
37
SW-Entwicklung - Algorithmus
• Kernbaustein jeder Software
• Zwischenschritt überführt Eingaben in Ausgaben
• Definitionen:
Endliche, effektive, eindeutige, geordnete,
diskrete, durchführbare Schritte, die
Vorbedingungen in Ausgabebedingungen
überführen
Eindeutige Handlungsvorschrift, die in endlich
viele Schritten automatisch zur Lösung eines
Problems führt.
D. Sommer
Programmierung I
WS 12/13
38
SW-Entwicklung - Algorithmus
• Präzise Fassung einer Vorgehensweise / Grundregeln,
kein Platz für Interpretationen, prinzipielle Vorgabe für
eine Maschine.
Umwandlung Binärzahl in Hexadezimalzahl
11011111000101
00 11 0111 1100 0101
3
7
C
5
1. Jeweils 4 Binärstellen entsprechen einer
Hexadezimalstelle. Unterteile die Binärzahl von rechts nach links in 4er-Päckchen.
2. Fülle das am weitesten links stehende
Päckchen mit weniger als 4 Ziffern mit
führenden Nullen auf.
3. Wandle jedes Päckchen nach nebenstehender Tabelle in die entsprechende Hexadezimalziffer um.
D. Sommer
Programmierung I
WS 12/13
39
SW-Entwicklung - Algorithmus
Endliche, effektive, eindeutige, geordnete, diskrete,
durchführbare Schritte, die Vorbedingungen in
Ausgabebedingungen überführen
• Geordnete Menge von Schritten: Reihenfolge der Schritte
genügt Regeln. Meist sequentiell (nacheinander)
• Algorithmus terminiert: hält nach endlich vielen
Schritten, sofern Eingabespezifikation eingehalten ist
• Verfahrensablauf ist zu jedem Zeitpunkt eindeutig
vorgeschrieben. Ausführung ist zu jedem Zeitpunkt
eindeutig und vollständig. Gleiche Eingaben führen zu
gleichen Bedingungen bzw. zu gleichen Ausgaben.
D. Sommer
Programmierung I
WS 12/13
40
SW-Entwicklung - Algorithmus
Endliche, effektive, eindeutige, geordnete, diskrete,
durchführbare Schritte, die Vorbedingungen in
Ausgabebedingungen überführen
• Diskrete, einfache elementare Schritte
• Jeder Schritt ist effektiv (tatsächlich) durchführbar
– dh. in endlicher Zeit und endlichem Speicher
– Gegenbeispiel (Einzelschritte):
• Summe aller natürlichen Zahlen * 0
• Erstelle eine Liste aller Primzahlen
• Algorithmus muss in endlicher Vorschrift beschreibbar sein
• Ausgabebedingungen müssen der Ausgabespezifikation genügen,
solange Eingaben der Eingabespezifikation genügen (Korrektheit)
D. Sommer
Programmierung I
WS 12/13
41
SW-Entwicklung – Beschreibung
Zahlreiche Methoden, um Algorithmus zu notieren:
– Text (bspw. Bin2Hex)
• häufig lang, unübersichtlich
– Diagramme
• stellt Strukturen, Abläufe
– Pseudocode
• natürliche Sprache als Programmiersprache
– Programmcode
• Kompakter Ausdruck in Programmiersprache
D. Sommer
Programmierung I
WS 12/13
42
SW-Entwicklung – Pseudocode
• Strukturierte + natürlich sprachliche Notation
• Keine feste Syntax, sollte jedoch intuitiv zugänglich sein
• Leicht in beliebige Programmiersprache übertragbar
Beispiel berechne die Fakultät von N
Eingabe = N
IF Eingabe == 0
Ausgabe = 1
BREAK
END_IF
0! = 1
Ausgabe = 1;
FOR i = Eingabe BIS 1
Ausgabe = Ausgabe * i;
END_FOR
D. Sommer
Programmierung I
WS 12/13
Algorithmus ist:
geordnet
Endlich
durchführbar
vollständig
…
1! = 1
2! = 2
3! = 6
43
SW-Entwicklung – Diagramm
• Aktivitätsdiagramme
– Grafische Notation von Algorithmen
– Leicht verständlich, standardisiert (UML, Unified Modeling
Language)
– Kann jedoch insbesondere bei längeren Algorithmen
unübersichtlich werden
– Symbole
v<1
Ausgabe(„Hallo Welt“)
Start Ende
Beginn Stop
D. Sommer
Programmierung I
Anweisung
Aktion
WS 12/13
Verzweigung Verbindung
Bedingung Reihenfolge
44
SW-Entwicklung UML-Diagramm
• Feststellung erhöhter Körpertemperatur
(38°C - 41°C)
Körpertemperatur
Eingabe(T)
ja
Ausgabe(„Gesund“)
D. Sommer
Programmierung I
WS 12/13
T < 38°C
nein
Ausgabe(„Fieber“)
45
SW-Entwicklung - Programm
Überführung eines Algorithmus in ein Programm
• Algorithmenentwicklung erfolgt meist ohne genaue Kenntnis der
Zielplattform (Hardware)
• Algorithmen sind prinzipiell automatisch ausführbar
• Um Algorithmus auf Computer auszuführen, muss eine spezielle
Notation der Algorithmen erfolgen
• Nutzung von „Formalen Sprachen“ (weniger die Kommunikation steht im
Vordergrund [natürliche Sprache], sondern mathematische Beschreibung)
• Formale Beschreibung eines Algorithmus heißt Programm
• Programmierung: Formulierung eines Algorithmus in
computerlesbare Form
• Pseudocode ist keine formale Sprache (zu viele Freiheitsgrade)
D. Sommer
Programmierung I
WS 12/13
46
SW-Entwicklung - Programm
Von der Spezifikation zum Java-Programm
Spezifikation
Ideen
Kreativität
Algorithmus
Programmierung
Implementation
Programm
Compiler
Maschinencode
D. Sommer
Programmierung I
WS 12/13
Interpreter
Byte-Code
(Zwischencode)
47
Java
• Objektorientierte Programmiersprache: weit verbreitet
• JDK, JRE: Oracle ehemals von Sun Microsystems
– JRE: Java-Laufzeitumgebung (Java Runtime Environment)
– JDK: Java Entwicklungsumgebung (Java Development Kit)
D. Sommer
Programmierung I
WS 12/13
48
Java Programm – Java-Umgebung
• Prüfen, ob Java installiert ist
• java ist nicht installiert
• javac auch nicht
D. Sommer
Programmierung I
WS 12/13
49
• Download des Java SDK von der Oracle - Seite
D. Sommer
Programmierung I
WS 12/13
50
• Download: speziell JDK-Paket
D. Sommer
Programmierung I
WS 12/13
51
Installation – Java JDK
D. Sommer
Programmierung I
WS 12/13
52
• Weiter in der
Installation
D. Sommer
Programmierung I
WS 12/13
53
•
Java JDK ist installiert!!
D. Sommer
Programmierung I
WS 12/13
54
•
java läuft
• java läuft
javac läuft immer
noch nicht!!!
D. Sommer
Programmierung I
WS 12/13
55
Javac bekannt geben
• Pfad Erweitern (ggf. helfen lassen)
1
2
3
D. Sommer
Programmierung I
WS 12/13
56
• Systempfad um „java/jdk/bin“ Erweitern
Bspw. auf meinem Rechner unter:
c:\Program Files\Java\jdk1.7.0_09\bin\
D. Sommer
Programmierung I
WS 12/13
57
• Systempfad erweiter um
;“c:\Program Files\Java\jdk1.7.0_09\bin\“
!!! Semikolon nicht vergessen und ggf. „“ setzen,
wenn Leerzeichen im Pfad vorhanden sind
D. Sommer
Programmierung I
WS 12/13
58
Java - JDK
• javac - fertig installiert -
D. Sommer
Programmierung I
WS 12/13
59
Aufbau eines Java Programms
public class NAME {
public static void main(String [] args) {
….
….
}
}
• Geschweifte Klammern: gruppieren Programmbestandteile (Programm und Hauptroutine)
• Einrückungen und Leerzeilen: nur Verbesserung
der Lesbarkeit. Häufig feste Konventionen:
– Leerzeilen zwischen Routinen: 1x
– Einrückungen innerhalb geschweifter Klammern: 2-4
D. Sommer
Programmierung I
WS 12/13
60
Aufbau eines Java Programms
• Programm besteht aus Anweisungen
• Anweisungen enden mit Semikolon
• Zu Beginn eine Anweisung zur Bildschirmausgabe
System.out.println();
public class beispiel {
public static void main(String [] args) {
System.out.println(“Wohnungsmarkt“);
System.out.println(“Friede den Mietern, Krieg den Maklern“);
System.out.println(16 + 21);
}
}
• Speichern unter beispiel.java (Dateiname und classname müssen gleich sein!!)
D. Sommer
Programmierung I
WS 12/13
61
Speichern eines Java Quellextes
D. Sommer
Programmierung I
WS 12/13
62
Übersetzen des Java Programms
D. Sommer
Programmierung I
WS 12/13
63
Übersetzen des Java Programms
• Zwischencode-Datei „beispiel.class“ wird angelegt
D. Sommer
Programmierung I
WS 12/13
64
Übersetztes Java Programm
• Quelltext
• Zwischencode
D. Sommer
Programmierung I
WS 12/13
65
Ausführen des Beispielprogramms
• java beispiel
• ! Ausgabe der 2. Zeile?
D. Sommer
Programmierung I
WS 12/13
66
Herunterladen