2 Der Schnelleinstieg

Werbung
7
2 Der Schnelleinstieg *
Eine Programmiersprache können Sie auf verschiedene Art
und Weise lernen. Sie können sich zuerst mit den Konzepten
befassen und anschließend mit der Praxis oder umgekehrt.
Damit Sie zunächst ein »Gefühl« für das Programmieren bekommen, hat es sich bewährt, zunächst einige praktische
Schritte zu tun, bevor die Konzepte erläutert werden.
Wie lernen?
Vorher ist es jedoch erforderlich, zu wissen, was eine problemorientierte Programmiersprache und eine maschinennahe Sprache sind und was in einem Computersystem abläuft:
Zuerst einige
Grundlagen
»Programmieren – Programme – Compiler« (S. 8)
Programme können auf unterschiedliche Art und Weise ausgeführt werden. Die Unterschiede zwischen compilierten
und interpretierten Programmen lernen Sie hier kennen:
Compiler vs.
Interpreter
»Skriptsprachen und Interpreter« (S. 17)
Einiges Wissenswertes zur Programmiersprache Java finden
Sie hier:
Java
»Die Sprache Java« (S. 22)
Nach diesen Grundlagen kann es jetzt losgehen. Sie können
das erste Java-Programm auf Ihrem Computersystem »zum
Laufen bringen«:
1. JavaProgramm
»Das erste Java-Programm« (S. 25)
Die meisten Programmiersprachen besitzen ähnliche Grundkonzepte. Einige dieser Grundkonzepte werden zunächst
vermittelt und dann ihre Realisierung in Java gezeigt:
Programmiergrundlagen
»Konzepte der Programmierung« (S. 35)
Gruppierung
8
Programmierumgebungen
2 Der Schnelleinstieg *
Um komfortabel programmieren zu können, wird eine Programmierumgebung benötigt. Einen Überblick und den ersten Einsatz einer Java-Umgebung finden sie hier:
»Java-Entwicklungsumgebungen« (S. 64)
Nach dem Durcharbeiten aller dieser Wissensbausteine haben Sie einen ersten Eindruck von der Programmierung in
Java, haben Ihre ersten Erfahrungen mit dem Java-Compiler
und einer Java-Entwicklungsumgebung gemacht und können einige kleinere Programme bereits selbst schreiben.
2.1 Programmieren – Programme –
Compiler *
Ein Computersystem besteht im Kern aus einem Prozessor und einem Arbeitsspeicher. Programme und
Daten befinden sich im Arbeitsspeicher. Der Prozessor führt schrittweise die Befehle eines Programms
im Arbeitsspeicher aus und manipuliert dabei die Daten. Die von einem Prozessor ausführbaren Programme sind in einer Maschinensprache geschrieben, die
auf die Eigenschaften des jeweiligen Prozessors zugeschnitten ist. Programmierer verwenden dagegen problemorientierte Programmiersprachen, die dem Abstraktionsniveau von Menschen angepasst sind. Übersetzer – genauer ausgedrückt Compiler – übersetzen
problemorientierte Programme in Maschinenprogramme.
Programmieren ist faszinierend. Einem Computersystem
zu sagen, was es zu tun hat, ist eine tolle Sache! Vinton G.
Cerf, Miterfinder des Internets, hat dies einmal so ausge-
Basistext
9
2.1 Programmieren – Programme – Compiler *
drückt: »Programming is like playing God. Within the scope
of the program you can do anything.«
Damit ein Computersystem das tut, was der Programmierer will, muss er ein Programm schreiben. Ein Programm
ist dabei nichts anderes als eine Handlungsanleitung für ein
Computersystem. Damit ein Computersystem ein Programm
»versteht« – genauer gesagt, es Schritt für Schritt ausführen
kann – muss es bestimmte Eigenschaften besitzen:
Ein Programm muss in einer genau festgelegten Schreibweise dem Computersystem eindeutig und detailliert durch Anweisungen vorschreiben, was es Schritt für Schritt tun soll.
Die Syntax, d.h. die Schreibweise der einzelnen Anweisungen, und die Semantik, d.h. die Bedeutung der einzelnen
Anweisungen, wird für Programme in Programmiersprachen
festgelegt.
Syntax &
Semantik
Es gibt problemorientierte Programmiersprachen (auch benutzernahe oder höhere Programmiersprachen genannt),
maschinennahe Programmiersprachen und Maschinensprachen.
problemorientiert vs.
maschinenah
Problemorientierte Programmiersprachen wurden so
konzipiert, dass es Menschen möglichst einfach haben, Programme zu schreiben.
Maschinennahe Programmiersprachen sind dagegen so aufgebaut, dass ihre Programme nahezu unverändert in Maschinensprachen transformiert werden können. Programme in
einer Maschinensprache können direkt von Computersystemen ausgeführt werden.
Ein Computersystem besteht – vereinfacht ausgedrückt –
aus einem Prozessor und einem Arbeitsspeicher, beides
zusammen wird als Zentraleinheit bezeichnet. Die Zentraleinheit kommuniziert über eine Ein-/Ausgabesteuerung mit
Prozessor &
Arbeitsspeicher
Basistext
10
2 Der Schnelleinstieg *
Eingabegeräten – wie Tastatur und Maus – Ausgabegeräten –
wie Bildschirm, Lautsprecher und Drucker – externen Speichern – wie Festplatten, DVDs, CD-ROMs – und über Netze
mit anderen Computersystemen (Abb. 2.1-1).
Abarbeitung
eines
Programms
Ein Maschinenprogramm – auch Objekt-Programm genannt –
wird in den Arbeitsspeicher transportiert (geladen). Der Prozessor liest jede Anweisung – Befehl genannt – und führt ihn
aus. Daten werden ebenfalls im Arbeitsspeicher aufbewahrt.
Der Prozessor kann die Daten lesen, speichern und über die
Ein-/Ausgabesteuerung einlesen und ausgeben.
Beispiel 1
Die Berechnung eines Warenwertes aus Einzelpreis mal
Menge kann folgendermaßen aussehen:
In einer problemorientierten Programmiersprache sehen
die Anweisungen zur Berechnung wie folgt aus (Quell-Programm genannt):
read(Menge);
read(PreisNetto);
read(MWST);
WarenwertNetto = Menge * PreisNetto;
WarenwertBrutto = WarenwertNetto * MWST / 100.0;
print(WarenwertBrutto);
In einer maschinennahen Programmiersprache sehen die
Befehle zur Berechnung so aus:
INPUT Menge
INPUT PreisNetto
INPUT MWST
LOAD Menge
MUL
PreisNetto
STORE WarenwertNetto
LOAD WarenwertNetto
MUL MWST
DIV 100.0
STORE WarenwertBrutto
OUTPUT WarenwertBrutto
Basistext
11
2.1 Programmieren – Programme – Compiler *
andere
Computer
Netzanschluss, z.B.
Modem
ISDN-Karte
Netzwerk-Karte
Eingabegeräte,
z.B.
Tastatur
Maus
Mikrophon
Scanner
digitaler
Fotoapparat
Videokamera
Ausgabegeräte,
z.B.
Bildschirm
Lautsprecher
Drucker
externe
Speicher, z.B.
Festplatte
Speicherstick
CD-ROM
DVD
Diskette
Peripheriegeräte
Drucker
Laufwerke:
DVD
CD-ROM
Diskette
Scanner
Fenster
Tastatur
Bildschirm
Lautsprecher
(integriert)
Netzanschluss
Maus
Abb. 2.1-1: So sieht der grundsätzliche Aufbau eines Computers mit seinen Komponenten aus.
Basistext
12
2 Der Schnelleinstieg *
Vor der Ausführung im Prozessor wird ein maschinennahes
Programm noch in ein Maschinenprogramm transformiert.
Ein Maschinenprogramm wird in einem Binärcode dargestellt. Ein Binärcode kennt nur die beiden Zeichen 0 und 1
– Binärzeichen genannt. Das Wort Binärzeichen wird als Bit
bezeichnet, von englisch binary digit.
Plattform
Maschinennahe Programmiersprachen und Maschinensprachen sind im Gegensatz zu problemorientierten Programmiersprachen immer auf eine Computer-Plattform zugeschnitten. Eine Plattform ist gekennzeichnet durch den jeweils verwendeten Prozessortyp – z.B. Intel Pentium 4 – und
das eingesetzte Betriebssystem. Unterschiedliche Plattformen besitzen auch unterschiedliche maschinennahe Sprachen und Maschinensprachen.
Übersetzer
Damit ein Programmierer in einer problemorientierten Sprache programmieren kann, gibt es Übersetzer. Allgemein ist
es die Aufgabe eines Übersetzers in der Informatik, alle Sätze einer Quellsprache, d.h. die Quell-Programme, in
gleichbedeutende Sätze einer Zielsprache, die Ziel-Programme, zu transformieren.
Compiler
to compile =
zusammenstellen,
sammeln
Ist das Quellprogamm in einer problemorientierten Programmiersprache geschrieben, dann bezeichnet man den
Übersetzer als Compiler. Bei der Zielsprache kann es sich
dabei um eine maschinennahe, eine »maschinennähere«
Sprache oder eine Maschinensprache handeln. »Maschinennähere« Sprache bedeutet, dass die Sprache sich stärker am
Aufbau eines Computersystems orientiert als die Sprache,
aus der übersetzt wird.
Übersetzungsvorgang
Abb. 2.1-2 veranschaulicht den Übersetzungsvorgang.
Basistext
13
2.1 Programmieren – Programme – Compiler *
Abb. 2.1-2: Der Mensch schreibt Programme in einer problemorientierten
Programmiersprache. Ein solches Programm wird von einem Compiler in
ein maschinennahes Programm übersetzt. Nach der Transformation in
ein Maschinenprogramm wird es vom jeweiligen Prozessor ausgeführt.
Ein Compiler übersetzt also die problemorientierte Programmdarstellung im Beispiel 1 in die darunter angegebene maschinennahe Form.
Beispiel 2
Der Einsatz eines Compilers hat folgende Vor- und Nachteile:
Die übersetzten Programme nutzen die jeweiligen Prozessor- bzw. Plattformeigenschaften optimal aus und erreichen dadurch eine hohe Abarbeitungsgeschwindigkeit.
Vorteil
Für jeden Prozessortyp muss das Programm mit einem anderen Compiler neu übersetzt werden. Genau genommen
unterscheiden sich die Compiler nicht nur bezüglich des
Prozessortyps, sondern bezüglich der jeweiligen Computer-Plattform.
Das übersetzte Programm läuft nur auf dem jeweiligen
Prozessortyp bzw. der jeweiligen Plattform, d.h. das übersetzte Programm ist nicht plattformunabhängig.
Nachteile
Basistext
14
2 Der Schnelleinstieg *
Oft gibt es für verschiedene Prozessortypen bzw. Plattformen nur Compiler unterschiedlicher Hersteller, die sich
teilweise unterschiedlich verhalten.
Programmiersprachen sind oft nicht plattformunabhängig definiert, so dass pro Prozessortyp bzw. Plattform die
übersetzten Programme voneinander abweichen.
Vom Problem
zum Programm
Programme sind in der Regel sehr umfangreich und komplex. Liegt fest, welches Problem durch ein Programm gelöst werden soll, dann werden Sie meist nicht sofort das
fertige Programm hinschreiben. Oft wird die Problemlösung
zunächst in Form eines Algorithmus hingeschrieben. Ein
Algorithmus ist semiformal, d.h. er ist im Gegensatz zur
Umgangssprache genauer beschrieben, aber noch nicht vollständig detailliert, wie dies eine Programmiersprache erfordert (Abb. 2.1-3).
Beispiel 3
Umgangssprachlich in Form eines Algorithmus würde das
Beispiel 1 folgendermaßen aussehen:
1.
2.
3.
4.
Basistext
Lese Menge, PreisNetto und MWST ein
Berechne: WarenwertNetto = Menge * PreisNetto
Berechne: WarenwertBrutto = WarenwertNetto * MWST / 100
Gebe WarenwertBrutto aus
2.1 Programmieren – Programme – Compiler *
Umgangssprache
15
Problem
komplex
mehrdeutig
menschliche
Tätigkeit
Algorithmische Sprache
Algorithmus
semiformal
noch nicht vollständig
detailliert
menschliche
Tätigkeit
Problemorientierte
Programmiersprache
Programm
(Quell-Programm)
exakter Formalismus
meist genormt
unabhängig von einem
bestimmten Prozessor
Aufgabe des
Compilers
Maschinennahe Sprache
primitiv
abhängig vom
jeweiligenProzessor
Maschinensprache
direkt vom
Prozessor ausführbar
Maschinennahes
Programm
MaschinenProgramm
(Objekt-Programm)
Abb. 2.1-3: Ausgangspunkt für ein Programm ist ein zu lösendes Problem bzw. eine zu lösende Aufgabe. Als erstes wird die Problemlösung
umgangssprachlich als Algorithmus formuliert. Anschließend erfolgt die
Umsetzung in den strengen Formalismus (Syntax) einer Programmiersprache. Ein Compiler übersetzt dann ein solches problemorientiertes Programm in ein Maschinenprogramm.
Basistext
16
2 Der Schnelleinstieg *
Glossar
Algorithmus (algorithm) Intuitiv
lässt sich der Begriff Algorithmus
folgendermaßen definieren: Ein Algorithmus ist eine eindeutige, endliche Beschreibung eines allgemeinen, endlichen Verfahrens zur
schrittweisen Ermittlung gesuchter Größen aus gegebenen Größen. Die Beschreibung erfolgt in einem Formalismus mit Hilfe von anderen Algorithmen und, letztlich,
elementaren Algorithmen. Ein Algorithmus muss ausführbar sein,
d.h. ein Prozessor, der den Formalismus kennt und die elementaren
Algorithmen beherrscht, muss ihn
abarbeiten können. Bei der Ausführung eines Algorithmus werden
Objekte manipuliert, insbesondere
erfolgt eine Ein- und Ausgabe von
Objekten.
Arbeitsspeicher (RAM; random
access memory) Medium zur kurzfristigen Aufbewahrung nicht zu
umfangreicher Information in einem Computer; Bestandteil der
Zentraleinheit.
Betriebssystem (operating system) Spezielles Programm eines
Computersystems, das alle Komponenten eines Computersystems
verwaltet und steuert sowie die
Ausführung von Aufträgen veranlasst. Syn.: OS
Compiler (compiler) Ein kompliziertes Programm, das QuellProgramme, geschrieben in einer problemorientierten Programmiersprache, in Objekt-Programme (Sprachvorrat des automatischen Prozessors) umwandelt;
Sonderfall eines Übersetzers.
Computersystem (computer system) 1 Computer (Hardware) und
Programme (Software).
Basistext
2 Einheit von Anwendungssoftware, Systemsoftware und Hardware.
Plattform (platform) HardwareArchitektur eines bestimmten Modells oder einer bestimmten Familie von Computersystemen, z.B.
Windows-Plattform. Eine Plattform
ist in der Regel eine Kombination
aus Betriebssystem und Prozessortyp (Prozessor). Software wird in
der Regel für eine Plattform entwickelt (siehe auch: Systemsoftware).
Syn.: Computer-Plattform, computer platform
Problemorientierte
Programmiersprache (problem oriented
programming language) Programmiersprache, deren Sprachvorrat
und Sprachkonstruktion problemnahe Formulierungen von Algorithmen ermöglicht; Programme
müssen von einem Compiler in
die Maschinensprache des jeweiligen Prozessors umgesetzt werden, damit eine automatische Abarbeitung möglich ist. Alternativ
können Programme auch durch
Interpreter analysiert und ausgeführt werden. Syn.: Höhere Programmiersprache, Benutzernahe
Programmiersprache
Programm (program) 1 Streng
formalisierte, eindeutige und detaillierte Handlungsanleitung bzw.
Vorschrift, die maschinell ausgeführt werden kann.
2 Eine Folge von Anweisungen in
einer Programmiersprache oder in
einer Maschinensprache. Die Anweisungen werden von einem Prozessor abgearbeitet.
Prozessor (processor; central processing unit) 1 Allgemein: Eine Maschine, die die Anweisungen eines
Programms abarbeiten kann
17
2.2 Skriptsprachen und Interpreter *
2 Speziell: Der Teil der Zentraleinheit, der Programmanweisungen aus dem Arbeitsspeicher liest,
ihre Ausführungen vornimmt, zu
verarbeitende Informationen aus
dem Arbeitsspeicher liest sowie
Zwischenergebnisse und Ergebnisse im Arbeitsspeicher ablegt.
Zentraleinheit (central unit) Teil
eines Computers, in der die eigentliche
Informationsverarbeitung stattfindet; besteht aus Prozessor und Arbeitsspeicher.
2.2 Skriptsprachen,
Zwischensprachen und ihre
Interpreter *
Ein Programm, geschrieben in einer problemorientierten Programmiersprache, kann compiliert oder interpretiert werden. Ein Compiler kann ein Programm in
eine maschinennahe Programmiersprache übersetzen
oder in eine Zwischensprache, die dann interpretiert
wird. Ein Programm kann auch direkt durch einen Interpreter ausgeführt werden.
Programmiersprachen lassen sich in drei Gruppen gliedern,
in Abhängigkeit von der Art und Weise wie ihre Programme
ausgeführt werden:
Programmiersprachen, deren Programme durch einen
Compiler in eine maschinennahe Sprache bzw. eine Maschinensprache übersetzt und dann ausgeführt werden.
Zu dieser Gruppe gehört z.B. die Sprache C++.
compilierte
Programme
Programmiersprachen, deren Programme Anweisung für
Anweisung interpretiert und – wenn die jeweilige Anweisung syntaktisch korrekt ist – sofort ausgeführt werden.
Es erfolgt keine Übersetzung in eine maschinennahe Sprache oder eine Maschinensprache. Solche Sprachen heißen
Skriptsprachen. Interpreter analysieren die Anweisun-
interpretierte
Programme
Basistext
Herunterladen