Sie sind auf Seite 1von 76

IMIT 3

Informatik
Einfhrung in die Programmierung
Falls wir in unseren Studienheften auf Seiten im Internet verweisen/verlinken, haben wir diese
nach sorgfltigen Erwgungen ausgewhlt. Auf Inhalt und Gestaltung haben wir jedoch keinen
Einfluss. Wir distanzieren uns daher ausdrcklich von diesen Seiten, soweit darin rechtswidrige,
insbesondere jugendgefhrdende oder verfassungsfeindliche Inhalte zutage treten sollten.
0713 K04
Autor: Christoph Siebeck Fachlektor: Norbert Heitkamp
ILS Institut fr Lernsysteme GmbH, Hamburg
Fernakademie fr Erwachsenenbildung GmbH, Hamburg
Alle Rechte vorbehalten.
Das Studienhef und seine Teile sind urheberrectlic gesctzt.
Jede Nutzung in anderen als den gesetzlic zugelassenen Fllen ist
nict erlaubt und bedarf der vorherigen scriflicen Zustimmung des
Recteinhabers. Dies gilt insbesondere fr das fentlice Zugnglicmacen
via Internet, Vervielfltigungen und Weitergabe. Zulssig ist das Speicern
(und Ausdrucen) des Studienhefes fr persnlice Zwece.
Fernschulen Hamburg Alle Rechte vorbehalten
0
7
1
3

K
0
4
Informatik
Einfhrung in die Programmierung
0713 K04
Autor: Christoph Siebeck
Fachlektor: Norbert Heitkamp
Inhaltsbersicht
Lerninhalte und Lernziele ..................................................................................... 5
1 Warum Computer programmiert werden mssen............................................ 6
1.1 Eine kleine Geschichte der Automaten....................................................................... 7
2 Wie Computer programmiert werden ................................................................. 11
2.1 Vom Assembler zur Hochsprache................................................................................ 11
2.2 Compiler und Interpreter ............................................................................................ 19
2.3 Die Objektorientierung................................................................................................ 23
2.4 Einzelne Programmiersprachen.................................................................................. 25
2.5 Spezielle Entwicklungswerkzeuge .............................................................................. 29
3 Programmstrukturen .............................................................................................. 34
3.1 Datentypen und Variablen .......................................................................................... 34
3.2 Folge.............................................................................................................................. 36
3.3 Auswahlen .................................................................................................................... 37
3.4 Wiederholungen ........................................................................................................... 38
3.5 Ereignisverarbeitung ................................................................................................... 41
4 Entwicklung von Software..................................................................................... 44
4.1 Die Phasen der Software-Entwicklung....................................................................... 44
4.2 Das Lsen von Problemen............................................................................................ 49
4.3 Das Entwickeln von Algorithmen ............................................................................... 50
5 Schlusswort................................................................................................................ 59
6 Anhang ........................................................................................................................ 60
6.1 Literaturverzeichnis .................................................................................................... 60
6.2 Lsungen der Aufgaben zur Selbstberprfung ........................................................ 61
6.3 Glossar .......................................................................................................................... 64
6.4 Sachwortverzeichnis .................................................................................................... 72


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
5
Lerninhalte und Lernziele
In diesem Studienheft werden Sie sich mit dem Programmieren von Computern
beschftigen. Sie erfahren unter anderem, warum Computer programmiert werden
mssen und lernen verschiedene Programmiersprache im berblick kennen.
Auerdem stellen wir Ihnen das grundstzliche Vorgehen bei der Programmierung
vor.
Im Einzelnen lernen Sie in diesem Studienheft:
warum Computer programmiert werden mssen,
was ein Programm ist,
wie die erste Automaten und Computer programmiert wurden,
was die Maschinensprache ist,
was ein Assembler ist,
was einen Assembler und Hochsprachen unterscheidet,
welche Unterschiede zwischen einem Compiler und einem Interpreter beste-
hen,
was Skriptsprachen sind,
was sich hinter der Objektorientierung verbirgt,
welche speziellen Programmierwerkzeuge neben Programmiersprachen einge-
setzt werden,
aus welchen Strukturen ein Programm grundstzlich besteht,
was die Ereignisverarbeitung ist,
in welchen Phasen Software grundstzlich entwickelt wird,
welche Techniken fr die Lsung von Problemen eingesetzt werden knnen
und
wie Algorithmen entwickelt werden.
Hinweis:
In anderen Studienheften werden Sie sich detailliert mit einer Programmierspra-
che beschftigen nmlich mit C++.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
6
1 Warum Computer programmiert werden mssen
In dieser Lektion lernen Sie, warum Computer programmiert werden mssen.
Computer sind heute aus dem Alltag nicht mehr wegzudenken. Sie werden zum
Schreiben von Briefen und zum Erstellen von Rechnungen eingesetzt, steuern
aber auch Fabriken und Atomkraftwerke. Viele Dinge, die heute einen wesentli-
chen Teil des menschlichen Miteinanders bestimmen, sind allein durch den Com-
puter mglich geworden zum Beispiel das Internet. Kaum eine andere Maschine
hat so entscheidenden Einfluss auf unser Leben.
berlegen Sie einmal
Wo liegen die Grnde fr den Erfolg des Computers?
Entscheidend fr die weite Verbreitung sind vor allem vier Punkte:
1. Computer arbeiten sehr schnell.
2. Computer arbeiten sehr genau.
3. Computer knnen gigantische Datenmengen verarbeiten.
4. Computer sind sehr flexibel.
Schauen wir uns dazu ein Beispiel im direkten Vergleich zwischen Mensch und
Computer an.
Fr einen Computer ist es kein Problem, mehrere Tausend Adressen nach Nach-
namen zu sortieren. Je nach Leistungsfhigkeit des Rechners ist die Sortierung
innerhalb krzester Zeit erledigt. Fehler macht der Computer dabei nicht vor-
ausgesetzt, die Arbeitsanweisungen stimmen.
Ein Mensch dagegen wrde fr das Sortieren Stunden oder sogar Tage brauchen.
Mit ziemlicher Sicherheit unterliefen ihm dabei auch Fehler allein schon, weil
die Konzentration nachlsst.
Fr den Computer spielt es auch keine Rolle, ob er mehrere Tausend, mehrere
Millionen oder mehrere Milliarden Adressen sortieren soll. Es dauert lediglich ln-
ger, bis das Ergebnis vorliegt. Ein einzelner Mensch wrde sich dagegen wahr-
scheinlich weigern, wenn er einen Riesenberg mit mehreren Milliarden Kartei-
karten sortieren sollte.
Dem Computer ist es auch egal, ob er die Adressen erst nach dem Nachnamen
sortieren soll und direkt danach in einem zweiten Durchlauf nach der Postleit-
zahl. Ein Mensch dagegen wrde wohl streiken, wenn er nach getaner Arbeit
sofort wieder von vorne anfangen soll.
Und: Die Maschine, die gerade noch Daten sortiert hat, kann im nchsten
Moment zum Schreiben eines Briefes benutzt werden. Mit einem entsprechenden
Betriebssystem lassen sich sogar mehrere Aufgaben gleichzeitig erledigen. Der
Computer sortiert im Hintergrund Adressen, whrend der Anwender einen Brief
eintippt.
Anders als zum Beispiel bei vielen Maschinen in der Produktion mssen an
einem Computer kaum nderungen vorgenommen werden, damit er andere Auf-
gaben erledigen kann. Sie mssen den Computer weder umbauen noch irgendwie


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
7
umrsten. Sie knnen mit ein und demselben Gert ohne sichtbare nderungen
Briefe schreiben, Daten sortieren, komplexe Berechnungen durchfhren und sogar
spielen. Sie mssen lediglich andere Arbeitsanweisungen bereitstellen.
Die Frage ist nun: Woher bekommt der Computer diese Arbeitsanweisungen?
Oder allgemeiner: Woher wei er, was er wann zu tun hat?
Um diese Frage zu beantworten, unternehmen wir noch einmal einen kleinen
Ausflug in die Vergangenheit.
1.1 Eine kleine Geschichte der Automaten
Die Entwicklung und der Einsatz von Computern ist die Konsequenz eines Wun-
sches, der schon seit langer Zeit die Menschen beschftigt: Menschliche Arbeit soll
von Maschinen erledigt werden. Der Mensch selber kontrolliert nur die Ausfh-
rung und das Ergebnis. Den Rest bernimmt die Maschine.
Auch wenn zwischen den ersten Automaten aus der Antike und modernen Com-
putern Welten liegen, ist diesen Maschinen doch eins gemeinsam: Sie erledigen
Arbeitsauftrge, die ihnen vorher von einem Menschen gegeben wurden sie
bearbeiten ein Programm.
Mit der technischen Entwicklung nderten sich auch diese Programme. Die ersten
mechanischen Automaten arbeiteten mehr oder weniger mit fest installierten Vor-
gaben. Die Mechanik lste in einem festen Muster einen bestimmten Arbeits-
schritt aus. Weder die Arbeitsschritte noch die Reihenfolge der Schritte konnten
gendert werden. Die Arbeit eines Programmierers bestand im Wesentlichen in
der Konstruktion und der Montage der mechanischen Einzelteile. Zum Teil hatten
diese mechanischen Automaten erstaunliche Fhigkeiten. So konnten ja einige
Rechenmaschinen, die Sie im ersten Studienheft kennengelernt haben, durchaus
verschiedene Operationen durchfhren und auch in kleinem Umfang Daten spei-
chern.
Mit der weiteren Entwicklung machte sich dann auch ein Problem bemerkbar,
dass letztlich zur Erfindung des Programmierens fhrte: Die Maschinen waren
so aufwendig, dass der Wunsch aufkam, sie fr mehrere unterschiedliche Aufga-
ben nutzen zu knnen. Die ersten Ideen in diese Richtung kennen Sie ja ebenfalls
schon die programmierbaren Websthle des franzsischen Erfinders Joseph-
Marie Jacquard.
Bei den ersten Computern spielten vor allem die Kosten eine Rolle. Die elektri-
schen und elektronischen Bauelemente waren so teuer, dass nach Mglichkeiten
gesucht wurde, die Gerte mglichst universell einzusetzen. Die Rechner sollten
unterschiedlichste Programme bearbeiten knnen.
Die Programmierung war damals im wahrsten Sinne des Wortes Handarbeit. Ein
Programm wurde zum Beispiel mithilfe einer Stecktafel und einer Menge ver-
schiedener Drhte erstellt. Jedes Loch in der Tafel hatte eine bestimmte Funk-
Ein Programm im weitesten Sinne fasst Arbeitsauftrge zusammen, die der
Reihe nach abgearbeitet werden.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
8
tion, jede Verbindung der einzelnen Lcher untereinander bewirkte eine
bestimmte Aktion. Die Ergebnisse dieser Art von Programmierung lieen aber oft
zu wnschen brig. Schon recht einfache Programme bestanden aus mehreren
Hundert Drhten und jeder dieser Drhte konnte einen Fehler verursachen.
Auerdem lieen sich die Programme nicht beliebig oft abrufen. Um ein neues
Programm zu starten, musste erst das alte entfernt und anschlieend das neue
gesteckt werden. Die einzige Mglichkeit, Programme zu speichern, bestand in
Notizen, aus denen das Programm spter rekonstruiert wurde.
Daher wurden bereits recht schnell Lochstreifen und Lochkarten benutzt, die ja
auch schon bei den Websthlen von Jacquard zum Einsatz kamen. Die Verbin-
dungen auf dem Steckbrett wurden durch die Kombination von Lchern darge-
stellt. Ein Programm bestand dann nicht mehr aus vielen Drhten, sondern aus
vielen Karten beziehungsweise einem Streifen mit unzhligen Lchern.
Einfacher wurde die Arbeit der Programmierer durch die Lochkarten aber nicht
unbedingt. Statt in Drahtbrcken zu denken, mussten sie nun im Kopf haben,
welches Loch an welcher Stelle welche Aktion bewirkte. Auch die ersten Locher,
die die Lcher in die Karten machten, waren keine groe Hilfe. Die Tasten waren
direkt den Positionen auf der Karte zugeordnet beziehungsweise die Lcher wur-
den direkt in die Karte gestanzt.
Die Weiterentwicklung der Lochkartenlocher war dann der nchste Schritt bei der
Programmierung. Durch eine Taste wurde nicht mehr nur ein Loch an einer
bestimmten Position auf der Karte ausgestanzt, sondern gleich ein kompletter
Befehl. Der Programmierer musste zum Beispiel nur eine Taste drcken, um die
Lcher fr den Befehl Addiere in eine Karte zu stanzen. Die Befehle wurden auf
die Tasten aufgedruckt und machten so die Arbeit erheblich einfacher. Der Pro-
grammierer musste nicht mehr in Lchern denken, sondern konnte sich an den
Tasten auf dem Locher orientieren.
Im nchsten Schritt erhielten die Lochkartenlocher eine Tastatur, ber die dann
die Befehle eingegeben werden konnten.
Abb. 1: Ein Lochkartenlocher
(Bild von Stahlkocher)


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
9
Der Schwerpunkt bei der Programmierung lag nun nicht mehr auf den konkreten
Anforderungen der Maschinen, sondern verschob sich hin zum menschlichen Den-
ken. Der Programmierer erstellte ein Programm mithilfe des Lochers. Der Locher
setzte die Befehle des Programmierers dann in ein Format um, das der Computer
verstehen und verarbeiten konnte.
An diesem wesentlichen Prinzip hat sich bis heute nichts gendert. Lediglich die
Werkzeuge wurden immer weiterentwickelt. Locher und Lesegerte fr Loch-
karten finden Sie nur noch im Museum. Heute werden Programme mit leistungs-
fhigen Entwicklungsumgebungen und Programmiersprachen erstellt, die selbst
wieder Computerprogramme sind. Wie das genau geht, werden wir uns in diesem
Studienheft noch ausfhrlich ansehen.
Egal, was ein Computer macht, er fhrt immer die Anweisungen aus, die ihm
vom Programm und damit von Menschen vorgegeben werden. Dabei kann er
im beschrnkten Rahmen aus den Ergebnissen eines Arbeitsschritts neue Ergeb-
nisse ermitteln.
Ein Computer ist aber eine Maschine ohne eigene Intelligenz. Denken kann also
kein Computer. Er ist nichts weiter als ein Werkzeug, das exakt und przise die
Aufgaben durchfhrt, die ihm vorgegeben wurden. Ob ein Ergebnis sinnvoll ist
oder nicht, kann ein Computer nicht selbststndig entscheiden. So entstehen gele-
gentlich auch skurrile Fehler wie Zahlungsaufforderungen ber 0 Euro und Ein-
berufungsbefehle fr 100-Jhrige.
Zusammenfassung
Fr die weite Verbreitung von Computern haben unter anderem die hohe
Geschwindigkeit und die hohe Przision bei der Verarbeitung gesorgt.
Ein Programm im weitesten Sinne fasst Arbeitsauftrge zusammen, die der Reihe
nach abgearbeitet werden.
Die Programmierung der ersten Computer erfolgte durch Drahtbrcken oder Loch-
karten.
Ein Computer ist das ideale Werkzeug fr Aufgaben, die durch Regeln eindeutig
beschrieben werden knnen. Die Regeln werden ber das Programm abgebildet.
Ein Computer ist das ideale Werkzeug fr Aufgaben, die durch Regeln ein-
deutig beschrieben werden knnen. Die Regeln werden ber das Programm
abgebildet. Das Programm steuert dann den Computer.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
10
I. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihre Kenntnisse. Benutzen Sie bei der Lsung der
folgenden Aufgaben bitte stets einen Bleistift, damit Sie mgliche Fehler nach
dem Vergleich mit den Lsungen im Anhang berichtigen knnen. Es ist in Ihrem
Interesse, die Aufgaben selbststndig zu lsen, ehe Sie im Anhang nachschlagen!
1. Fr welche Automaten wurden die ersten Lochkarten beziehungsweise Loch-
streifen verwendet?
_________________________________________________________________________
_________________________________________________________________________
2. Warum entstand bei den ersten Computern der Wunsch, sie zu programmie-
ren?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
3. Kann ein Computer selbststndig entscheiden, ob ein Ergebnis seiner Arbeit
sinnvoll ist? Begrnden Sie bitte kurz Ihre Antwort.
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
11
2 Wie Computer programmiert werden
In dieser Lektion lernen Sie, mit welchen Techniken Anweisungen in ein Format
gebracht werden knnen, das der Computer ausfhren kann.
Wie Sie ja bereits wissen, mssen alle Anweisungen, die ein Computer ausfhren
soll, in binr kodierter Form vorliegen. Mit einer Anweisung wie
kann ein Computer berhaupt nichts anfangen.
Eine Mglichkeit wre es, die entsprechenden Anweisungen direkt in binr
kodierter Form in den Speicher zu schreiben und das Programm dann ausfhren
zu lassen. Diese Maschinensprache haben Sie ja bereits im letzten Studienheft bei
der Kodierung von Befehlen kurz kennengelernt.
Die Anweisung zum Addieren der beiden Werte knnte in Maschinensprache so
aussehen:
Die 8 Bits ganz links stehen fr die Anweisung Addiere,
1
dann folgen die beiden
Zahlen jeweils mit 4 Bits dargestellt.
Da diese direkte Programmierung ber Maschinensprache sehr umstndlich, auf-
wendig und auch uerst fehlertrchtig ist, wurden fr die Programmierung von
Computern eigene Programme entwickelt die Programmiersprachen.
2.1 Vom Assembler zur Hochsprache
Eine der ersten Programmiersprachen waren die Assembler
2
. Hier erfolgte die
Programmierung ber sogenannte Mnemonics
3
, kurze mehr oder weniger spre-
chende Befehle, die leichter zu merken sind als eine Kombination aus Einsen und
Nullen. Typische Mnemonics sind zum Beispiel add zum Addieren oder mov zum
Laden von Werten. Das Mnemonic mov steht dabei als Abkrzung fr move (engl.
verschieben).
ADDIERE 3 und 4
0001 1010 0011 0100
1. Die Bitfolge ist willkrlich gewhlt.
Maschinensprache ist immer auf einen ganz bestimmten Prozessortyp zuge-
schnitten. Ein Programm muss daher fr jeden Prozessortyp neu geschrie-
ben werden.
2. Assembler bedeutet bersetzt so viel wie Monteur.
3. Mnemonic bedeutet bersetzt so viel wie Gedchtnissttze.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
12
Die Anweisungen zum Addieren von zwei Zahlen wrden in Assembler so aus-
sehen:
Mit der ersten Anweisung wird der Wert 3 in ein Register eine spezielle Spei-
cherstelle im Prozessor geschrieben. Mit der zweiten Anweisung wird auf den
aktuellen Wert des Registers der Wert 4 addiert.
Ein vollstndiges Assembler-Programm, das den Text Hello world auf dem Bild-
schirm ausgibt, knnte so aussehen:
Listing 1: Ein einfaches Assembler-Programm
(Quelle: http://www.ntecs.de/)
Hinweis:
Assembler-Programme arbeiten mit hexadezimalen Zahlen. Das erkennen Sie
unter anderem an dem kleinen h hinter einem Wert.
mov ax, 3
add ax, 4
.MODEL tiny
.CODE
ORG 100h
HELLO PROC
MOV AH,09h
LEA DX,msg
INT 21h ;Display Hello World
MOV AX,4C00h ;Exit to DOS
INT 21h
HELLO ENDP
msg DB 'Hello World$'
END HELLO
Das Hello world-Beispiel ist ein Programm, das fr die ersten Versuche in
einer Programmiersprache benutzt wird. Im nchsten Studienheft werden
Sie das Hello world-Programm auch selbst mit der Programmiersprache
C++ erstellen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
13
Durch den Einsatz der Mnemonics wurde zwar die Programmierung etwas ein-
facher, allerdings konnte der Computer das Programm nun nicht mehr direkt aus-
fhren. Es musste erst in einem Zwischenschritt wieder in eine Folge von Einsen
und Nullen umgesetzt werden. Diese Aufgabe erledigte ebenfalls der Assembler.
Allerdings war die Programmierung mit einem Assembler immer noch sehr auf-
wendig, da die Befehle nicht unbedingt leicht zu behalten waren und der Pro-
grammierer sich um viele Sachen selber kmmern musste. Das folgende Assem-
bler-Programm berechnet zum Beispiel die Quadrate der Zahlen 1 bis 10.
Die Bezeichnung Assembler wird sowohl fr die Programmiersprache als
auch fr das Programm benutzt, das die Anweisungen in ein fr den Com-
puter verstndliches Format bersetzt.
;; Squares of integers 1..10 in MIDAS
title squares
p==17
.vector pdl(lpdl==200)
ttyo==:5
start: move p, [-lpdl,,pdl-1]
open ttyo, [.uao,,'tty ? 0 ? 0]
.lose %lsfil
move 1, [-12,,1]
loop: hrrz 2, 1
imul 2, 2
pushj p, print
movei 2, 15
.iot ttyo, 2
movei 2, 12
.iot ttyo, 2
aobjn 1, loop
.logou 1,
print: idivi 2, 12
push p, 3
skipe 2
pushj p, print


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
14
Listing 2: Ein Assembler-Programm fr die Berechnung von Quadrat-Zahlen
(Quelle: http://www.ntecs.de/)
Auch wenn wir uns das vorige Listing nicht weiter im Detail ansehen wollen,
wird selbst beim schnellen berfliegen der Anweisungen klar, dass die Program-
mierung mit einem Assembler nicht nur schwierig, sondern auch sehr fehlertrch-
tig war. Bereits ein kleiner Fehler fhrte dazu, dass das Programm nicht wie
gewnscht arbeitete. Deshalb wurden sogenannte Hochsprachen entwickelt.
Die erste Hochsprache FORTRAN (Formula Translator)
1
entstand bereits
1957. Die Befehle orientierten sich an der englischen Sprache. Das Hello world-
Programm in FORTRAN sieht zum Beispiel so aus:
Listing 3: Das Hello world-Programm in FORTRAN
(Quelle: http://www.ntecs.de/)
Die Symbole fr Berechnungen entsprachen bei FORTRAN den blichen mathe-
matischen Symbolen zum Beispiel + fr eine Addition, fr eine Subtraktion
oder * fr eine Multiplikation. Das Programm zum Berechnen der Quadratzahlen
von 1 bis 10 sieht in FORTRAN so aus:
Listing 4: Das Programm zum Berechnen von Quadratzahlen in FORTRAN
(Quelle: http://www.ntecs.de/)
pop p, 2
addi 2, "0
.iot ttyo, 2
popj p,
end start
1. Formula Translator bedeutet bersetzt Formelbersetzer.
*
C Hello World in Fortran 77
C (lines must be 6 characters indented)
*
PROGRAM HELLOW
WRITE(UNIT=*, FMT=*) 'Hello World'
END
PROGRAM SQUARE
DO 15,I = 1,10
WRITE(*, *) I*I
15 CONTINUE
END


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
15
Statt Drahtbrcken zu stecken, Lcher in eine Karte zu stanzen oder komplizierte
Mnemonics wie bei einem Assembler zu verwenden, konnte ein Programmierer
dem Computer seine Wnsche nun in einer halbwegs verstndlichen Form mittei-
len. Dadurch konnte er sich viel strker dem eigentlichen Problem widmen. Im
Mittelpunkt stand weniger die Frage: Wie teile ich dem Computer die Lsung fr
das Problem mit?, sondern die Frage Wie soll der Computer die Aufgabe lsen?.
FORTRAN nahm dem Programmierer auch sehr viel Arbeit ab. Er musste zum
Beispiel nicht mehr selber die Organisation des Speichers bernehmen und
konnte Funktionen zum Speichern und Lesen von Daten mit einem einzigen
Befehl aufrufen. Dieser eine Befehl wurde bei der Ausfhrung beziehungsweise
bersetzung des Programms in viele einzelne Befehle fr den Computer umge-
formt.
Die Programmiersprache FORTRAN hatte ihre Strken vor allem bei Program-
men mit mathematischem Schwerpunkt. Fr kaufmnnische Anwendungen war
sie weniger gut geeignet. Daher entstanden recht schnell weitere Programmier-
sprachen. LISP (List Processing Language)
1
hatte zum Beispiel Strken bei der
Arbeit mit Zeichenketten, COBOL (Common Business Orientated Language)
2
dagegen wurde vor allem fr kaufmnnische Anwendungen eingesetzt.
Listing 5: Das Hello world-Programm in LISP
(Quelle: http://www.ntecs.de/)
Programmiersprachen, bei denen ein Befehl in mehrere einzelne Befehle fr
den Computer umgeformt wird, heien auch 1:n-Programmiersprachen.
Programmiersprachen, bei denen ein Befehl auch einem Befehl fr den
Computer entspricht, heien 1:1-Programmiersprachen.
Nahezu alle Hochsprachen sind 1:n-Programmiersprachen. Ein Assembler
dagegen ist eine 1:1-Programmiersprache.
1. bersetzt bedeutet List Processing Language so viel wie Listenverarbeitungssprache.
2. Common Business Orientated Language lsst sich etwas holprig mit Allgemeine, am
Geschft orientierte Sprache bersetzen.
(print "Hello World")


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
16
Listing 6: Das Hello world-Programm in COBOL
(Quelle: http://www.ntecs.de/)
Wie Sie an diesen Beispielen sehen, orientieren sich einige Hochsprachen sehr
eng an der menschlichen Sprache. Ein COBOL-Programm lsst sich zum Beispiel
auch ohne spezielle Kenntnisse der Programmiersprache einigermaen gut lesen.
Sie bentigen lediglich einige englische Vokabeln.
Versuchen Sie zum Beispiel einmal selbst herauszufinden, was das folgende
COBOL-Programm macht. Konzentrieren Sie sich dabei auf die Anweisungen im
Bereich PROCEDURE DIVISION.
IDENTIFICATION DIVISION.
PROGRAM-ID. HelloWorld.
AUTHOR. Fabritius.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
PROCEDURE DIVISION.
DISPLAY "Hello World".
STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST3.
AUTHOR. SIEBECK.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 TEXTA PIC X(4) VALUE "A: ".
77 TEXTB PIC X(4) VALUE "B: ".
77 TEXTF PIC X(9) VALUE "FLAECHE: ".
01 A PIC 9(3).
01 B PIC 9(3).
01 FLAECHE PIC 9(6).


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
17
Listing 7: Ein COBOL-Programm
Das Programm liest zwei Zahlen ein und berechnet daraus den Flcheninhalt
eines Rechtecks.
In einer anderen Programmiersprache wie zum Beispiel C ist dieses Programm
sehr viel kompakter, sieht aber auch komplizierter aus.
Listing 8: Ein C-Programm
01 EIN-A PIC ZZ9.
01 EIN-B PIC ZZ9.
01 AUS-FLAECHE PIC ZZZZZ9.
PROCEDURE DIVISION.
DISPLAY SPACE AT 0101.
DISPLAY TEXTA AT 0101.
ACCEPT EIN-A AT 0110.
MOVE EIN-A TO A.
DISPLAY TEXTB AT 0201.
ACCEPT EIN-B AT 0210.
MOVE EIN-B TO B.
COMPUTE FLAECHE = A * B.
MOVE FLAECHE TO AUS-FLAECHE.
DISPLAY TEXTF AT 0301.
DISPLAY AUS-FLAECHE AT 0310.
STOP RUN.
#include <stdio.h>
main()
{
int a, b;
long flaeche;
printf("\nA: ");
scanf("%i",&a);
printf("B: ");
scanf("%i",&b);
flaeche = a * b;
printf("Flaeche = %li",flaeche);
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
18
Neben den mehr oder weniger leicht verstndlichen Anweisungen untersttzen
nahezu alle Hochsprachen auch spezielle Strukturen, die beim Programmieren oft
bentigt werden. Dazu gehren zum Beispiel Verzweigungen und Wiederholungen.
Mit diesen Strukturen werden wir uns in diesem Studienheft noch ausfhrlicher
beschftigen.
Da die meisten Hochsprachen typische Vor- und Nachteile haben und hufig auf
bestimmte Teilbereiche spezialisiert sind, wurden im Laufe der Zeit immer wei-
tere Hochsprachen entwickelt und bereits vorhandene Hochsprachen an neue Ent-
wicklungen angepasst. Andere Programmiersprachen sind dafr im Laufe der
Jahre wieder vom Markt verschwunden.
Eine Darstellung der wichtigsten Entwicklungen finden Sie in dem folgenden
Stammbaum:
Tipp:
Einen sehr detaillierten Stammbaum der Programmiersprachen bis zum Jahr
2004 finden Sie im Internet unter der Adresse http://www.oreilly.com/news/
graphics/prog_lang_poster.pdf. Das Dokument ist allerdings fast einen Meter
breit.
Abb. 2: Der Stammbaum wichtiger Programmiersprachen


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
19
Hinweis:
Von einzelnen Programmiersprachen gibt es mehrere Sprachvarianten soge-
nannte Dialekte , die sich zum Teil erheblich unterscheiden. So lsst sich ein
Assemblerprogramm nicht mit jedem Assembler ausfhren beziehungsweise
bersetzen.
2.2 Compiler und Interpreter
Genau wie bei einem Assembler mssen auch die Anweisungen einer Hochsprache
vor der Ausfhrung in ein Format gebracht werden, das der Computer verarbei-
ten kann. Dazu verwenden nahezu alle modernen Hochsprachen einen Compi-
ler.
1
Er setzt die Anweisungen der Programmiersprache den sogenannten
Quelltext in eine ausfhrbare Datei um. Diese Datei kann dann vom Betriebs-
system ausgefhrt werden. Der Quelltext selbst wird also fr die eigentliche Aus-
fhrung nicht bentigt.
Abb. 3: Das Funktionsprinzip eines Compilers
Neben den Hochsprachen, die mit einem Compiler arbeiten, gibt es auch einige
Hochsprachen, die das Programm durch einen Interpreter
2
verarbeiten. Hier
wird der ausfhrbare Kode nicht vor der Ausfhrung des Programms erzeugt,
sondern zur Laufzeit des Programms. Das heit, die einzelnen Anweisungen wer-
den erst unmittelbar vor der Ausfhrung einzeln bersetzt.
Solche Programme knnen normalerweise nicht direkt vom Betriebssystem ausge-
fhrt werden, sondern mssen immer in der Programmiersprache beziehungsweise
der dazugehrigen Anwendung ausgefhrt werden. Durch den stndigen Wechsel
zwischen Ausfhrung und bersetzung sind die Programme auerdem recht lang-
sam.
1. to compile bedeutet bersetzt so viel wie zusammentragen.
2. to interpret bedeutet bersetzt so viel wie auslegen oder dolmetschen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
20
Abb. 4: Das Funktionsprinzip eines Interpreters
Interpreter werden vor allem bei sogenannten Skriptsprachen eingesetzt. Hier
wird ein Programm etwas vereinfacht ausgedrckt durch die Aneinanderrei-
hung von einzelnen Befehlen beschrieben. So lassen sich zum Beispiel hufig aus-
gefhrte Arbeiten automatisieren.
Skriptsprachen finden Sie unter anderem bei Batchprogrammen auf Betriebssys-
temebene. Hier werden Anweisungen an das Betriebssystem der Reihe nach abge-
arbeitet.
Das folgende Programm kopiert zum Beispiel in der Eingabeaufforderung von
Windows alle Dateien mit der Erweiterung .doc in einen Ordner \test auf dem
Laufwerk C: und vergleicht danach die kopierten Dateien mit dem Original.
Ein Programm, das mit einer Skriptsprache erstellt wurde, wird auch
Skript genannt.
Ein Batchprogramm ist eine Reihe von Befehlen, die von oben nach unten
abgearbeitet werden. Batch bedeutet bersetzt so viel wie Stapel. Statt
Batchprogramm findet sich auch die Bezeichnung Stapelprogramm oder
Stapelverarbeitung.
@echo off
cls
echo ******************************************
echo * Batchprogramm zum Kopieren von Dateien *
echo ******************************************


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
21
Listing 9: Ein Batchprogramm
Die Wirkung des Batchprogramms knnen Sie selbst ausprobieren. Erstellen Sie
dazu zum Beispiel mit dem Editor von Windows
1
eine Datei und geben Sie die
Befehle aus dem vorigen Listing ein. Achten Sie dabei sorgfltig darauf, dass
Ihnen kein Tippfehler unterluft. Speichern Sie dann die Datei unter einem belie-
bigen Namen mit der Erweiterung .bat oder .cmd
2
.
Hinweise:
Einige Anweisungen in dem vorigen Listing sind in mehreren Zeilen abge-
druckt. Sie mssen diese Anweisungen aber in einer Zeile eingeben. Andern-
falls erhalten Sie beim Ausfhren eine Fehlermeldung beziehungsweise
merkwrdige Ergebnisse. Die entsprechenden Zeilen erkennen Sie auch an dem
Hinweis, der in dem Listing steht.
Der Ordner \test wird durch das Batchprogramm nicht automatisch angelegt.
Wenn er auf Ihrer Festplatte nicht vorhanden ist, mssen Sie ihn selbst per
Hand angelegen.
Sie finden die Datei auch auf den Datentrgern, die zu diesem Lehrgang geh-
ren, im Ordner \beispiele unter dem Namen demo.cmd.
echo.
rem Bitte in einer Zeile eingeben
echo Druecken Sie CTRL + C zum Abbruch oder eine beliebige
Taste zum Start
pause >NUL
rem *** Dateien kopieren
rem Bitte in einer Zeile eingeben
echo Die Dateien mit der Erweiterung .doc werden nach C:\test
kopiert
copy *.doc c:\test
rem *** Vergleich der Dateien
echo Die kopierten Datei(en) werden ueberprueft
echo n | comp *.doc c:\test\*.doc
echo n
rem Bitte in einer Zeile eingeben
echo Druecken Sie eine beliebige Taste, um das Konsolenfenster
zu schliessen
pause >NUL
@echo on
1. Den Editor von Windows finden Sie im Men Start unter Alle Programme/Zubehr.
2. Die Erweiterung cmd steht fr command (engl. Befehl). Die Erweiterung .bat steht
fr batch (engl. Stapel).


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
22
Im Explorer wird die Datei als Befehlsskript mit dem Symbol dargestellt.
Nach einem Doppelklick auf das Symbol wird automatisch die Eingabeaufforde-
rung geffnet und die Befehle in der Datei werden ausgefhrt.
Abb. 5: Das ausgefhrte Befehlsskript
Hinweise:
Bitte benutzen Sie zum Test zur Sicherheit nur Dateien, die Sie nicht benti-
gen oder erstellen Sie Kopien.
Unter Windows Vista mssen Sie das Befehlsskript unter Umstnden mit
administrativen Rechten ausfhren. Klicken Sie dazu mit der rechten Maus-
taste auf das Symbol des Skripts und whlen Sie im Kontext-Men die Funk-
tion Als Administrator ausfhren. Besttigen Sie anschlieend die Sicher-
heitsabfrage der Benutzerkontensteuerung durch einen Klick auf Fortsetzen.
Die Ausfhrung des Befehlsskripts knnen Sie mit der Tastenkombination
+ abbrechen. Besttigen Sie anschlieend die Abfrage.
Ein weiteres Einsatzgebiet von Skriptsprachen ist die Automatisierung in Anwen-
dungsprogrammen ber sogenannte Makros. Das folgende Beispiel fr die Text-
verarbeitung Word 2007 von Microsoft fhrt in einem Rutsch einige Zeichen- und
Absatzformatierungen durch.
Sub formatierung()

formatierung Makro

Selection.Font.Name = "Arial"
Selection.Font.Size = 14
Selection.Font.Bold = wdToggle


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
23
Listing 10: Ein Makro
Zum Teil verfgen Skriptsprachen aber auch ber Mglichkeiten, die einer ech-
ten Programmiersprache nicht nachstehen. So werden zum Beispiel viele
anspruchsvolle Internet-Anwendungen mit Skriptsprachen wie PHP, Python oder
Ruby entwickelt.
2.3 Die Objektorientierung
Nahezu alle modernen Programmiersprachen arbeiten objektorientiert. Dabei
werden etwas vereinfacht ausgedrckt Daten mit dem Verhalten, das die
Daten verndert, in einem Objekt zusammengefasst. Die Daten bilden dabei die
Eigenschaften des Objekts und das Verhalten die Methoden.
Abb. 6: Ein Objekt
Sehen wir uns dazu zwei konkrete Beispiele an:
Bei einem Objekt Kaffeemaschine sind zum Beispiel die Farbe, die Gre oder
die Art des Kaffeefilters Eigenschaften. Methoden wren dann das Erhitzen des
Wassers oder auch das Ein- beziehungsweise Ausschalten.
Bei einem Objekt Auto wren die Farbe, die Anzahl der Tren und der Motor
Eigenschaften. Methoden wren dann zum Beispiel Starten, Gas geben und Brem-
sen.
Objekte mit gleichen oder sehr hnlichen Eigenschaften und Methoden werden in
sogenannten Klassen zusammengefasst und in eine hierarchische Beziehung
gebracht. Die untergeordneten Klassen knnen dabei von den bergeordneten
Objekten sowohl die Eigenschaften als auch die Methoden erben. Bei Bedarf kn-
nen in einer Klasse auerdem neue Eigenschaften und Methoden ergnzt werden.
Auf diese Weise mssen bereits vorhandene Eigenschaften und Methoden nicht
immer wieder neu programmiert werden, sondern knnen bernommen und erwei-
tert werden.
Selection.ParagraphFormat.Alignment =
wdAlignParagraphRight
End Sub


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
24
Auf den Computer bertragen knnten Sie zum Beispiel eine bergeordnete
Klasse Fenster erstellen und aus dieser Klasse dann die Klassen Ausgabefens-
ter, Eingabefenster und Dialogfenster ableiten. In der Klasse Fenster werden
die allgemeinen Eigenschaften beschrieben zum Beispiel die Gre, die Farbe
oder die Position auf dem Desktop. In den untergeordneten Klassen finden sich
dann die Besonderheiten zum Beispiel die Anzahl der Schaltflchen im Fenster.
Abb. 7: Eine einfache Klassenhierarchie
Durch die Objektorientierung ist es auerdem recht einfach mglich, einem Pro-
grammierer vorgefertigte Elemente wie Dialoge oder Komponenten fr bestimmte
Aufgaben zur Verfgung zu stellen. Die vorgefertigten Elemente lassen sich in
einer grafisch orientierten integrierten Entwicklungsumgebung mit ein paar
Mausklicks in ein eigenes Programm einfgen und anpassen. Durch dieses soge-
nannte Rapid Application Development (RAD)
1
kann die Entwicklungszeit fr ein
Programm deutlich verkrzt werden.
1. Rapid Application Development bedeutet wrtlich bersetzt schnelle Anwendungs-
entwicklung.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
25
Abb. 8: Eine Entwicklungsumgebung fr Rapid Application Development (hier Visual C# 2010
Express von Microsoft)
2.4 Einzelne Programmiersprachen
Schauen wir uns jetzt einige Programmiersprachen etwas genauer an. Beginnen
wir mit C++.
Die Programmiersprache C++ wurde 1980 von Bjarne Stroustrup entwickelt. Sie
erweitert die Programmiersprache C um einen objektorientierten Ansatz. C++ ver-
fgt ber einen grundlegenden Sprachstandard ISO C++
1
. Durch diesen Sprach-
standard knnen Programme einmal erstellt und dann von unterschiedlichsten
Compilern fr verschiedene Betriebssysteme bersetzt werden. Allerdings haben
im Laufe der Zeit die verschiedenen Anbieter ihre Entwicklungsumgebungen so
stark mit eigenen Anweisungen und vorgefertigten Bausteinen erweitert, dass die
Programme sich nicht mehr mit Entwicklungsumgebungen anderer Hersteller
bersetzen lassen.
1. ISO (International Standardization Organization) ist eine internationale Organisation,
die international gltige Standards aufstellt. Zu den Mitgliedern der ISO gehrt zum
Beispiel das Deutsche Institut fr Normung DIN.
C++ gilt als sehr mchtige Programmiersprache, ist aber zum Teil recht
komplex.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
26
Ein C++-Programm, das zwei Werte ber die Tastatur einliest und daraus den
Flcheninhalt eines Rechtecks berechnet, sieht so aus:
Listing 11: Ein einfaches C++-Programm
So viel an dieser Stelle zu C++. Mehr zu der Programmiersprache erfahren Sie in
den nchsten Studienheften.
Bei der Programmiersprache Java wird bei der bersetzung von Quelltexten
durch den Compiler nicht direkt ein ausfhrbares Programm erzeugt, sondern
zunchst ein sogenannter Bytecode. Dieser Bytecode wird dann auf dem Rech-
ner, auf dem das Programm ausgefhrt werden soll, durch einen Interpreter die
Java Virtual Machine
1
in ausfhrbare Befehle umgesetzt. Damit lassen sich
Java-Anwendungen grundstzlich auf jedem Computer ausfhren, der ber eine
Java Virtual Machine verfgt.
#include <iostream>
using namespace std;
int main()
{
int a, b;
long flaeche;
cout << "A: ";
cin >> a;
cout << "B: ";
cin >> b;
flaeche = a * b;
cout << "Flaeche = " << flaeche << endl;
return 0;
}
1. Virtual Machine bedeutet bersetzt so viel wie virtuelle Maschine. Eine virtuelle
Maschine ist in der Informationstechnologie so etwas wie ein Computer, der simuliert
wird also nur virtuell vorhanden ist.
Abb. 9: Die Java Virtual Machine


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
27
Allerdings ist die Plattformunabhngigkeit von Java auch ein Nachteil. Da die
Befehle in der Regel zunchst erst interpretiert werden mssen, sind Java-
Anwendungen vergleichsweise langsam.
Mit speziellen Java-Versionen ist es auch mglich, Anwendungen zum Beispiel fr
Mobiltelefone oder andere mobile Gerte zu entwickeln. So basieren zum Beispiel
viele Spiele in modernen Mobiltelefonen auf der Java-Technologie.
Das Java-Programm zum Berechnen des Flcheninhalts eines Rechtecks knnte
zum Beispiel so aussehen:
Listing 12: Ein einfaches Java-Programm
Die Programmiersprache C#
1
fasst die besonderen Strken der Programmierspra-
chen C++ und Java zusammen. C# ist in das .NET-Konzept
2
der Firma
Microsoft integriert. Dieses Konzept arbeitet nach einem hnlichen Prinzip wie
Java. Die Programme werden nicht direkt in ausfhrbare Anwendungen ber-
setzt, sondern zunchst in eine Zwischensprache die Common Intermediate Lan-
guage
3
(CIL) umgesetzt. Diese Zwischensprache wird dann auf jedem einzelnen
Computer durch einen Just in Time-Compiler
4
(JIT) in ein ausfhrbares Pro-
gramm umgewandelt.
Java-Anwendungen sind weitgehend plattformunabhngig. Sie knnen unter
nahezu allen gngigen Betriebssystemen eingesetzt werden.
import javax.swing.JOptionPane;
public class Flaeche {
public static void main(String[] args) {
int a, b;
long flaeche;
a = Integer.parseInt(JOptionPane.
showInputDialog("A: "));
b = Integer.parseInt(JOptionPane.
showInputDialog("B: "));
flaeche = a * b;
System.out.println("Flaeche = " + flaeche);
}
}
1. Das Zeichen # wird wie das englische Wort sharp ausgesprochen.
2. .NET wird dot net ausgesprochen. Dot bedeutet bersetzt so viel wie Punkt. NET
bedeutet bersetzt Netz.
3. Intermediate Language bedeutet bersetzt so viel wie Zwischensprache.
4. Just in Time bedeutet bersetzt so viel wie genau rechtzeitig.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
28
Damit sind auch .NET-Anwendungen grundstzlich plattformunabhngig aller-
dings nicht in dem Umfang wie zum Beispiel Java-Programme. Auerdem knnen
verschiedene Teile eines Programms auch in unterschiedlichen Programmierspra-
chen erstellt und anschlieend beim Ausfhren des Programms zusammengefasst
werden.
Da die Umsetzung in ein ausfhrbares Programm durch einen Compiler erfolgt,
ist die Ausfhrung der Programme schneller als bei einem Interpreter. Allerdings
muss nach dem Aufruf des Programms eine kurze Wartezeit in Kauf genommen
werden, bis das Programm tatschlich startet. Das liegt daran, dass der Compiler
erst seine Arbeit erledigen muss.
Ein Beispiel fr ein C#-Programm finden Sie im folgenden Listing. Es liest eben-
falls zwei Werte ein und errechnet daraus den Flcheninhalt eines Rechtecks.
Listing 13: Ein einfaches C#-Programm
Werfen wir abschlieend noch einen kurzen Blick auf die Programmiersprache
Visual Basic von Microsoft. Sie ist eine Weiterentwicklung der klassischen Ein-
steigersprache BASIC. Visual Basic gilt als relativ schnell zu erlernen und ist wie
C# in das .NET-Konzept integriert. Ein Visual Basic-Programm sieht daher einem
C#-Programm auf den ersten Blick auch recht hnlich.
using System;
namespace Flaeche
{
class Program
{
static void Main(string[] args)
{
int a, b;
long flaeche;
Console.Write("A: ");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("B: ");
b = Convert.ToInt32(Console.ReadLine());
flaeche = a * b;
Console.WriteLine("Flaeche = {0}", flaeche);
}
}
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
29
Listing 14: Ein einfaches Visual Basic-Programm
So viel zu den Programmiersprachen. Sehen wir uns jetzt noch einige spezielle
Entwicklungswerkzeuge an.
2.5 Spezielle Entwicklungswerkzeuge
Da viele Anwender keine Programmiersprache erlernen wollen, aber trotzdem
gerne eigene kleine Programme erstellen mchten, haben einige Anbieter beson-
dere Entwicklungswerkzeuge auf den Markt gebracht. Diese Werkzeuge arbeiten
vielfach auf grafischem Weg und nehmen Ihnen die oft mhselige Programmie-
rung in einzelnen Anweisungen nahezu vollstndig ab. Sie mssen lediglich Bilder
und Texte einfgen und knnen dann zum Beispiel ber Symbole Verzweigungen
und auch Wiederholungen einfgen. Aus der symbolischen Darstellung erzeugt
dann eine Art Generator ein Programm.
ber Multimedia-Werkzeuge knnen Sie zum Beispiel vergleichsweise einfach
und komfortabel anspruchsvolle Prsentationen mit Bildern, Videos, Animationen
und Audios erstellen. Die Prsentationen sind dabei in der Regel interaktiv das
heit, ein Anwender kann den Ablauf der Prsentation selbst steuern.
Ein weitverbreitetes Programm zur Erstellung solcher Prsentationen ist zum Bei-
spiel Flash
1
der Firma Adobe. Hier knnen Sie unterschiedlichste Elemente in
einen sogenannten Film einfgen und ber eine Zeitleiste steuern, wann und wie
lange die Elemente angezeigt werden sollen. Auerdem lassen sich fr die ver-
schiedenen Elemente Eigenschaften und Aktionen einstellen. So knnen Sie zum
Beispiel sehr komfortabel festlegen, wie ein Element dargestellt wird und was
beim Klick auf eine Schaltflche geschehen soll.
Module Module1
Sub Main()
Dim a As Integer
Dim b As Integer
Dim flaeche As Long
Console.Write("A: ")
a = Convert.ToInt32(Console.ReadLine())
Console.Write("B: ")
b = Convert.ToInt32(Console.ReadLine())
flaeche = a * b
Console.WriteLine("Flaeche = {0}", flaeche)
End Sub
End Module
1. Flash bedeutet bersetzt Blitz.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
30
Abb. 10: Ein Multimedia-Werkzeug (hier: Adobe Flash CS 4)
Neben den vorgefertigten Standard-Aktionen knnen Sie ber eine eigene Pro-
grammiersprache auch selbst neues Verhalten erstellen.
Die fertigen Filme lassen sich in einem stark komprimierten Format speichern
und knnen zum Beispiel in Internet-Seiten eingebunden werden. Die Wiedergabe
erfolgt mit einem speziellen Programm, das zustzlich zum Browser installiert
wird einem sogenannten Player
1
.
Noch einen Schritt weiter als Multimedia-Werkzeuge gehen die Autorensysteme.
Hier knnen Sie nicht nur Inhalte zusammenstellen und verbinden, sondern auch
komplette Programme mit Verzweigungen und Wiederholungen erstellen ohne
eine einzige Zeile Quelltext selbst zu erstellen. Die gesamte Programmierung
erfolgt auf visuellem Weg, indem Sie zum Beispiel ein Symbol fr eine Verzwei-
gung anklicken und dann in einem eigenen Fenster festlegen, was in den ver-
schiedenen Fllen geschehen soll. Die Anweisungen knnen Sie dabei ebenfalls
komfortabel mit der Maus auswhlen.
1. Player bedeutet wrtlich bersetzt Spieler. Gemeint ist damit ein Programm, das die
Filme wiedergeben also abspielen kann.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
31
Abb. 11: Visuelles Programmieren mit einem Autorensystem
(hier: Mediator 9.0 von Matchware)
So lassen sich mit wenig Aufwand auch komplexe Anwendungen wie zum Beispiel
Computerlernprogramme erstellen. Allerdings ist diese Art der Programmierung
nicht besonders flexibel, da Sie sich mit den Strukturen zufrieden geben mssen,
die der Hersteller des Autorenprogramms anbietet. Viele Autorenprogramme ver-
fgen deshalb auch ber eine Programmiersprache, mit der Sie eigene Anweisun-
gen selbst erfassen knnen. Dabei mssen Sie aber wieder jede Anweisung per
Hand kodieren.
Grundstzlich lassen sich die Ergebnisse von Multimedia-Werkzeugen oder Auto-
rensystemen auch mit herkmmlichen Programmiersprachen wie C# oder Java
erzielen. Allerdings ist der Aufwand hier erheblich hher, da Sie viele Elemente
komplett selbst neu programmieren mssten. Deshalb werden fr solche Flle in
der Regel auch entsprechend spezialisierte Programme eingesetzt.
So viel zu den Programmiersprachen und Programmierwerkzeugen. In der nchs-
ten Lektion werden wir uns einige grundlegende Programmstrukturen ansehen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
32
Zusammenfassung
Die Programmierung von Computern erfolgt ber spezielle Programme die Pro-
grammiersprachen.
Die Anweisungen der Programmiersprachen mssen in einem Zwischenschritt in
ein Format umgesetzt werden, das der Computer direkt ausfhren kann. Das
kann entweder ber einen Compiler oder einen Interpreter erfolgen.
Hufig eingesetzte Programmiersprachen sind zum Beispiel C++, C#, Java und
Visual Basic.
Bei der Objektorientierung werden Daten mit dem Verhalten, das die Daten ver-
ndert, in einem Objekt zusammengefasst.
ber spezielle Entwicklungswerkzeuge knnen Sie Programme erstellen, ohne
eine Zeile Quelltext selbst zu programmieren.
II. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihre Kenntnisse. Benutzen Sie bei der Lsung der
folgenden Aufgaben bitte stets einen Bleistift, damit Sie mgliche Fehler nach
dem Vergleich mit den Lsungen im Anhang berichtigen knnen. Es ist in Ihrem
Interesse, die Aufgaben selbststndig zu lsen, ehe Sie im Anhang nachschlagen!
1. Was unterscheidet einen Assembler von einer Hochsprache?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
2. Kann ein Programm, das in Maschinensprache erstellt wurde, auf einem
beliebigen Prozessor ablaufen? Begrnden Sie bitte Ihre Antwort.
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
33
3. Was ist ein Mnemonic?
__________________________________________________________________________
__________________________________________________________________________
4. Was verstehen Sie unter dem Begriff Quelltext?
__________________________________________________________________________
__________________________________________________________________________
5. Ein Bekannter von Ihnen will eine Multimedia-Prsentation erstellen, die auf
einer Internet-Seite dargestellt werden soll. Dazu mchte er die Program-
miersprache C# verwenden. Halten Sie die Auswahl fr richtig? Begrnden
Sie bitte kurz Ihre Antwort.
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
6. Was ist das Besondere am Rapid Application Development?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
7. Sie wollen ein Programm erstellen, das ohne nderungen unter verschiede-
nen Betriebssystemen eingesetzt werden knnen soll. Welche Programmier-
sprachen eignen sich besonders fr diese Aufgabe?
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
34
3 Programmstrukturen
In dieser Lektion lernen Sie einige klassische Programmstrukturen kennen, die
beim Erstellen von Anwendungen eingesetzt werden. Sie erfahren unter anderem,
wie Verzweigungen und Wiederholungen programmiert werden.
Beginnen wir mit den Datentypen und Variablen.
3.1 Datentypen und Variablen
Wie Sie ja bereits aus dem letzten Studienheft wissen, besteht fr einen Compu-
ter intern zunchst einmal berhaupt kein Unterschied zwischen einer Zahl und
einem Buchstaben. Sowohl die Zahl als auch der Buchstabe werden durch ein Bit-
muster reprsentiert, das korrekt interpretiert werden muss.
Diese Interpretation wird durch die sogenannten Datentypen einer Programmier-
sprache vorgegeben. Die Datentypen legen nicht nur fest, ob es sich um numeri-
sche oder alphanumerische Daten handelt, sondern beschreiben zum Beispiel bei
Zahlen auch den mglichen Wertebereich und die Nachkommastellen.
Die Programmiersprache C++ kennt unter anderem folgende Datentypen:
Tabelle 1: Datentypen am Beispiel C++
Die Datentypen werden unter anderem benutzt, um Variablen fr das Speichern
von Daten im Programm zu vereinbaren. Im ersten Schritt werden dazu der Pro-
grammiersprache der Datentyp und der Name der Variable bekannt gemacht. In
der Programmiersprache C++ kann das zum Beispiel so aussehen:
Name Daten Wertebereich
a)
a) Der genaue Wertebereich hngt immer auch vom verwendeten Compiler und Betriebs-
system ab.
int ganze Zahlen 2 147 483 648 bis 2 147 483 647
float Gleitkommazahlen mit mindestens
8 Stellen Genauigkeit
3,40 10
38
bis 3,40 10
38
char alphanumerisch ein ASCII-Zeichen von 0 bis 255
bool Wahrheitswerte entweder wahr oder falsch bezie-
hungsweise ungleich 0 oder 0
Bitte beachten Sie:
Jede Programmiersprache arbeitet mit eigenen Datentypen. Neben den sehr
allgemeinen Datentypen gibt es auch noch Datentypen fr kleine ganze Zah-
len oder auch fr Zeichenketten zum Beispiel ganze Wrter.
Mehr zu den Datentypen von C++ erfahren Sie im nchsten Studienheft.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
35
int wert;
Fr die Variable mit dem Namen wert wird hier ein Speicherbereich reserviert,
der ganze Zahlen im Wertebereich von 2 147 483 648 bis 2 147 483 647 aufneh-
men kann.
Im Programm knnen der Variable anschlieend Werte zugewiesen werden zum
Beispiel das Ergebnis einer Addition. Diese Anweisung knnte so aussehen:
wert = 100 + 20;
Erst werden die Werte 100 und 20 addiert. Danach wird das Ergebnis in der
Variablen mit dem Namen wert abgelegt. An der Speicherstelle, die fr die Vari-
able wert reserviert ist, befindet sich danach also der Wert 120.
Variablen haben Sie auch schon ganz kurz in den Beispielprogrammen fr die
Flchenberechnung eines Rechtecks kennengelernt zum Beispiel in den Zeilen
int a, b;
long flaeche;
Hier werden zwei Variablen mit den Namen a und b vom Typ int und eine Vari-
able mit dem Namen flaeche vom Typ long vereinbart. Da beide Typen keine
Nachkommastellen verarbeiten knnen, lassen sich mit dem Programm nur ganze
Zahlen verarbeiten.
berlegen Sie einmal
Welcher C++-Datentyp wre fr die Verarbeitung von Zahlen mit Nachkom-
mastellen geeignet? Sehen Sie dazu noch einmal in der Tabelle oben nach.
So viel zu den Datentypen und Variablen.
Kommen wir nun zu den eigentlichen Programmstrukturen. Hier werden im
Wesentlichen nur drei Grundstrukturen unterschieden:
die Folge,
die Auswahl und
die Wiederholung.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
36
3.2 Folge
Die einfachste Struktur ist eine Folge auch Sequenz genannt. Hier werden die
einzelnen Anweisungen der Reihe nach ausgefhrt. Wenn Anweisung 1 abgearbei-
tet ist, wird Anweisung 2 ausgefhrt und so weiter. Grafisch lsst sich eine Folge
so darstellen:
Abb. 12: Eine Folge
Programme mit einer Folge haben Sie in diesem Studienheft bereits bei der
Berechnung des Flcheninhalts eines Rechtecks kennengelernt. Etwas verkrzt
lassen sich die einzelnen Schritte umgangssprachlich so beschreiben:
Vereinbare a, b und flaeche als Variablen
Lies den Wert fr a ein
Lies den Wert fr b ein
Multipliziere a mit b und lege das Ergebnis in flaeche ab
Gib den Wert von flaeche aus
Zuerst werden drei Variablen vereinbart. Anschlieend werden die Werte fr die
beiden Variablen a und b ber die Tastatur eingelesen und das Ergebnis berech-
net. Im letzten Schritt wird das Ergebnis von flaeche ausgegeben. Danach wird
das Programm automatisch beendet.
Die Verarbeitung beginnt also mit der ersten Zeile und endet mit der letzten
Zeile. Die Anweisungen dazwischen werden von oben nach unten ausgefhrt.
So viel zur Folge.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
37
3.3 Auswahlen
ber Auswahlstrukturen knnen Anweisungen in Abhngigkeit von Bedingungen
ausgefhrt werden. Dazu wird zunchst berprft, ob eine Bedingung wahr oder
falsch ist. Im einfachsten Fall wird nur dann eine bestimmte Anweisung ausge-
fhrt, wenn die Bedingung zutrifft. Diese Auswahlstruktur wird auch einfache
Verzweigung genannt.
Ein Beispiel:
Ein Programm soll berprfen, ob eine Zahl grer ist als 10. Wenn das der Fall
ist, soll der Text Die Zahl ist grer als 10 auf dem Bildschirm ausgegeben wer-
den.
Grafisch lsst sich eine einfache Verzweigung so darstellen:
Abb. 13: Eine einfache Verzweigung
Umgangssprachlich lsst sich diese berprfung so beschreiben:
Wenn zahl grer ist als 10 dann
Gib "Die Zahl ist grer als 10" aus
Neben der einfachen Verzweigung gibt es auch alternative Verzweigungen, in
denen auch fr den Fall, dass die Bedingung nicht zutrifft, eigene Anweisungen
angegeben werden knnen. In unserem Beispiel knnte durch eine alternative
Verzweigung zum Beispiel der Text Die Zahl ist nicht grer als 10 auf dem
Bildschirm erscheinen, wenn die Zahl kleiner ist als 10.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
38
Grafisch lsst sich eine alternative Verzweigung so darstellen:
Abb. 14: Eine alternative Verzweigung
Die umgangssprachliche Beschreibung sieht dann so aus:
Wenn zahl grer ist als 10 dann
Gib "Die Zahl ist grer als 10" aus
sonst
Gib "Die Zahl ist nicht grer als 10" aus
Auerdem untersttzen die meisten Programmiersprachen auch sogenannte
Mehrfach-Verzweigungen. Hier knnen fr unterschiedliche Flle jeweils eigene
Anweisungen festgelegt werden. Mehrfach-Verzweigungen werden zum Beispiel oft
in Mens eingesetzt. Abhngig von der Auswahl des Anwenders wird dann eine
bestimmte Aktion gestartet.
Kommen wir nun zu den Wiederholungen.
3.4 Wiederholungen
ber Wiederholungen im Fachjargon auch Schleifen genannt lassen sich
Anweisungen in Abhngigkeit von einer Bedingung mehrfach ausfhren. So
knnte ein Programm zum Beispiel so lange Daten ber die Tastatur einlesen, bis
der eingegebene Wert ungleich 0 ist.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
39
Grafisch lsst sich eine solche Wiederholung so darstellen:
Abb. 15: Eine Wiederholung
Die umgangssprachliche Beschreibung der Wiederholung sieht so aus:
Wiederhole so lange zahl gleich 0 ist
Lies zahl ein
Auch bei den Schleifen gibt es verschiedene Varianten zum Beispiel eine
Schleife, bei der die Bedingung erst nach dem Ausfhren der Anweisungen in der
Schleife berprft wird und eine Variante, bei der die Bedingung vor dem Aus-
fhren der Anweisungen in der Schleife berprft wird. Auerdem verfgen die
meisten Programmiersprachen auch ber eine Schleifenvariante, bei der die
Anzahl der Wiederholungen fest vorgegeben wird.
Durch eine Kombination und Aneinanderreihung der verschiedenen Strukturen
lassen sich dann nahezu smtliche Aufgaben lsen. Schauen wir uns das an
einem einfachen Beispiel an:
Ein Programm soll zwei Werte ungleich 0 ber die Tastatur einlesen. Wenn der
Anwender den Wert 0 eingibt, soll eine Meldung auf dem Bildschirm erscheinen
und das Einlesen wiederholt werden. Nach der Eingabe der Werte sollen die bei-
den Zahlen addiert werden. Wenn das Ergebnis der Addition grer ist als 10,
soll die Meldung Das Ergebnis ist grer als 10 auf dem Bildschirm erscheinen,
andernfalls die Meldung Das Ergebnis ist nicht grer als 10.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
40
Grafisch lsst sich dieser Ablauf so darstellen:
Abb. 16: Ein Programm


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
41
Zuerst wird der Wert fr die erste Zahl eingelesen. Wenn dieser Wert gleich 0 ist,
wird in einer Schleife eine Meldung ausgegeben und das Einlesen wiederholt.
Diese Schritte werden so lange wiederholt, wie der eingelesene Wert gleich 0 ist.
In der Schleife selbst werden zwei Anweisungen als Folge ausgefhrt also hin-
tereinander.
Dann wird das gleiche Verfahren fr das Einlesen der zweiten Zahl eingesetzt.
Abschlieend wird das Ergebnis berechnet und abhngig vom Wert des Ergebnis-
ses Ausgaben durchgefhrt.
Das komplette Programm liee sich umgangssprachlich so beschreiben:
Vereinbare zahl1, zahl2 und ergebnis als Variablen
Lies den Wert fr zahl1 ein
Wiederhole so lange zahl1 gleich 0 ist
Lies den Wert fr zahl1 ein
Gib eine Meldung aus
Lies den Wert fr zahl2 ein
Wiederhole so lange zahl2 gleich 0 ist
Lies den Wert fr zahl2 ein
Gib eine Meldung aus
Addiere zahl1 und zahl2
Lege das Ergebnis in ergebnis ab
Wenn ergebnis grer ist als 10 dann
Gib "Das Ergebnis ist grer als 10" aus
sonst
Gib "Das Ergebnis ist nicht grer als 10" aus
3.5 Ereignisverarbeitung
Bei vielen modernen Programmiersprachen muss ein Programm seine Anweisun-
gen nicht nur stur der Reihe nach von oben nach unten abarbeiten. Es kann
auch auf Ereignisse reagieren, die beim Ausfhren des Programms eintreten. Sol-
che Ereignisse knnen zum Beispiel ein Mausklick auf eine Schaltflche, ein Dop-
pelklick an eine bestimmte Stelle oder auch das Drcken einer Taste sein.
Ereignisse sind eine Art Signal, das von bestimmten Aktionen ausgelst
wird. Zu den Aktionen, die ein Ereignis auslsen, gehren zum Beispiel das
Bewegen der Maus, das Klicken, das Doppelklicken oder auch eine Tastatur-
eingabe.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
42
Ereignisse knnen an bestimmte Befehle gekoppelt werden. Ein typisches Beispiel
ist ein Doppelklick auf eine Datei, der das ffnen der Datei veranlasst. Hier fhrt
das Ereignis Doppelklicken dazu, dass der Befehl Datei ffnen ausgefhrt
wird. Ein anderes Beispiel wre ein Mausklick auf eine Schaltflche. Hier fhrt
das Ereignis Klicken dazu, dass die Anweisungen ausgefhrt werden, die fr die
Schaltflche programmiert worden sind.
Die Ereignisverarbeitung im Fachjargon auch event handling genannt ist
vor allem fr Programme unter grafischen Benutzeroberflchen wichtig. Hier
kann ein Anwender in der Regel zahlreiche Aktionen von unterschiedlichsten Stel-
len im Programm aufrufen. Wenn diese Aktionen klassisch programmiert wer-
den sollten, msste an allen entsprechenden Stellen auch eine Abfrage erfolgen,
ob der Anwender die Aktion tatschlich gestartet hat.
Bei der Ereignisverarbeitung dagegen wird einmal zentral festgelegt: Wenn die-
ses Ereignis eintritt, fhre folgende Anweisungen aus. Dadurch sind flexible
Reaktionen des Programms mglich ohne enormen Aufwand betreiben zu ms-
sen.
Auerdem kann die Ereignisverarbeitung auch zu einer hheren Betriebssicher-
heit von Programmen fhren, da Aktionen erst dann ausgefhrt werden, wenn ein
Ereignis tatschlich eingetreten ist. Diese Fhigkeit ist zum Beispiel bei der Pro-
grammierung von Internet-Anwendungen enorm wichtig, da hier nicht davon aus-
gegangen werden kann, dass ein begonnenes Programm auch komplett bis zum
Ende durchluft. Mglicherweise geht mitten im Ablauf des Programms die Ver-
bindung zum Internet verloren, oder der Anwender schliet den Browser, ohne
das Ende des Programms abzuwarten.
Welche Ereignisse in einem Programm verarbeitet werden knnen, hngt von der
eingesetzten Programmiersprache ab. So knnen die meisten modernen Program-
miersprachen wie C# oder Visual Basic Standard-Ereignisse wie Mausaktionen
oder Tastatureingaben verarbeiten. Andere hochspezialisierte Programmierspra-
chen wie zum Beispiel ABAP des SAP-Systems
1
sind auch in der Lage, auf
sehr spezielle Ereignisse wie das Verarbeiten von Datenbanktabellen zu reagieren.
So viel zu den Programmstrukturen. In der nchsten Lektion werden Sie erfah-
ren, in welchen grundstzlichen Schritten Software entwickelt wird.
Zusammenfassung
ber Datentypen wird festgelegt, welche Art von Daten verarbeitet werden sollen.
Bei den Programmstrukturen werden im Wesentlichen drei Grundstrukturen ein-
gesetzt: die Folge, die Auswahl und die Wiederholung.
Bei der Ereignisverarbeitung reagiert ein Programm mit bestimmten Aktionen auf
ein Signal.
1. Das SAP-System der SAP AG ist ein hochintegriertes System zur Verarbeitung von
Geschftsvorfllen in Unternehmen. Es verfgt ber eine eigene Programmiersprache
ABAP, ber die das System angepasst und erweitert werden kann. ABAP steht Advan-
ced Business Application Programming (frei bersetzt etwa: fortgeschrittene Program-
mierung von Geschftsanwendungen).


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
43
III. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihre Kenntnisse. Benutzen Sie bei der Lsung der
folgenden Aufgaben bitte stets einen Bleistift, damit Sie mgliche Fehler nach
dem Vergleich mit den Lsungen im Anhang berichtigen knnen. Es ist in Ihrem
Interesse, die Aufgaben selbststndig zu lsen, ehe Sie im Anhang nachschlagen!
1. Nennen Sie zwei typische Ereignisse, die bei der Verarbeitung von Ereignis-
sen zum Einsatz kommen.
__________________________________________________________________________
__________________________________________________________________________
2. In einer Bedienungsanleitung fr eine Kaffeemaschine finden Sie folgende
Anleitungen:
a) Drcken Sie erst den Einschaltknopf. Danach drehen Sie den Aroma-
schalter nach links.
b) Stellen Sie das Mahlwerk so lange ber den Drehregler ein, bis das
Kaffeepulver mittelfein ist.
c) Wenn Sie den Timer aktivieren, knnen Sie Kaffee erst spter auf-
brhen.
Mit welchen Programmstrukturen knnen Sie diese Anleitungen abbilden?
a) _____________________________________________________________________
_____________________________________________________________________
b) _____________________________________________________________________
_____________________________________________________________________
c) _____________________________________________________________________
_____________________________________________________________________
A
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
44
4 Entwicklung von Software
Nachdem Sie in den letzten Lektionen Programmiersprachen und Programmstruk-
turen kennengelernt haben, wollen wir uns in dieser Lektion ansehen, wie Soft-
ware entwickelt wird.
Moderne Software gleichgltig, ob Betriebssystem oder Anwendungsprogramm
ist ein hoch komplexes Gebilde. Zum Teil mssen mehrere Millionen einzelner
Befehle korrekt verarbeitet werden. Bereits ein kleiner Fehler in einem einzigen
Befehl kann groe Folgen haben die Ergebnisse von Berechnungen werden
falsch, Maschinen stehen still, betriebliche Ablufe geraten durcheinander, oder
die Arbeit der letzten Stunden geht verloren, weil das Programm die Daten nicht
mehr speichern kann.
In den Anfngen der Computer wurden Programme hufig nach dem Versuch-
und-Irrtum-Prinzip erstellt im Fachjargon auch Trial and Error oder Code and
Fix
1
genannt. Der Programmierer gab dem Computer einen Befehl und berprfte
dann anhand des Ergebnisses, ob der Befehl korrekt war. Wenn das Ergebnis
nicht den Erwartungen entsprach, wurde der Befehl gendert. Dieses Verfahren
wurde so lange wiederholt, bis das gewnschte Ergebnis vorlag.
4.1 Die Phasen der Software-Entwicklung
Moderne Software lsst sich durch ihre enorme Komplexitt nicht mehr mit solch
einfachen Verfahren erstellen. Die Entwicklung erfolgt mit ausgefeilten Methoden,
Konzepten und Verfahren des Software-Engineerings. Einen ersten kurzen Kon-
takt mit diesem Teilgebiet der Informatik hatten Sie ja bereits im ersten Studi-
enheft.
Bei der Entwicklung von Software werden stark vereinfacht mehrere unter-
schiedliche Phasen durchlaufen:
die Analyse (Was soll die Software machen?),
der Entwurf (Wie soll die Software die Aufgaben lsen?),
die Umsetzung oder Implementierung
2
die eigentliche Programmierung,
der Test des Systems sowie
Betrieb und Wartung.
Die ersten vier Phasen umfassen dabei die Entstehung der Software und die
letzte Phase den Einsatz. Hier ist das Produkt also bereits komplett fertiggestellt.
1. Trial and Error ist die englische bersetzung von Versuch und Irrtum. Code and Fix
bedeutet bersetzt so viel wie Kodieren und Reparieren.
2. Implementierung leitet sich vom englischen Begriff to implement (realisieren, ausfh-
ren) ab.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
45
Abb. 17: Die Phasen bei der Software-Entwicklung
Schauen wir uns die einzelnen Phasen der Reihe nach an einem praktischen Bei-
spiel an. Es soll ein Programm entwickelt werden, das Zahlen aus dem Dezimal-
system in das Dualsystem umrechnen kann.
Phase 1: Die Analyse
In der ersten Phase wird das zu lsende Problem mglichst exakt analysiert.
Diese Aufgabe bernehmen hufig Spezialisten.
In unserem Beispiel ist die Analyse nicht sonderlich aufwendig und kompliziert,
da das Problem ja recht einfach und nicht sonderlich umfangreich ist. Die Ant-
wort auf die Frage Was soll das Programm machen? ist daher schnell gefunden:
Das Programm soll Zahlen vom Dezimalsystem in das Dualsystem umrechnen.
Phase 2: Der Entwurf
In der zweiten Phase wird das Gesamtsystem zunchst einmal falls erforderlich
in mehrere bersichtliche Teilprobleme aufgegliedert. Fr jedes einzelne Teilpro-
blem werden dann konkrete Lsungsmglichkeiten erarbeitet die Algorithmen.
Diese Algorithmen werden zunchst in allgemeiner Form beschrieben zum Bei-
spiel durch umgangssprachliche Darstellungen und Grafiken.
In unserem einfachen Beispiel ist der Algorithmus ebenfalls nicht sonderlich kom-
pliziert. Wenn Sie noch einmal an das letzte Studienheft zurckdenken, erfolgt
die Umrechnung durch fortlaufende Divisionen durch die Basiszahl des gewnsch-
Alle Phasen zusammen in ihrer zeitlichen Abfolge werden auch als Soft-
ware-Lebenszyklus oder Software Life Cycle
a)
bezeichnet. Der Software-
Lebenszyklus ist also die Zeitspanne, in der ein Softwareprodukt entwickelt
und eingesetzt wird bis zum Ende seiner Benutzung.
a) Software Life Cycle ist die englische bersetzung von Softwarelebenszyklus.
Zur Auffrischung:
Ein Algorithmus ist vereinfacht ausgedrckt eine Vorschrift zur
Lsung eines Problems.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
46
ten Zahlensystems und zwar so lange, bis Sie den Wert 0 als Ergebnis erhalten.
Der Rest jeder Division steht dabei fr die Ziffer allerdings in umgekehrter Rei-
henfolge.
Zur Auffrischung noch einmal ein Beispiel:
Der dezimale Wert 11 soll in das Dualsystem umgerechnet werden. Die Rechnung
sieht so aus:
11 : 2 = 5 Rest 1
5 : 2 = 2 Rest 1
2 : 2 = 1 Rest 0
1 : 2 = 0 Rest 1
Von unten nach oben gelesen ergeben die Reste dann den dualen Wert 1011.
Ein entsprechender Algorithmus zur Umrechnung knnte umgangssprachlich for-
muliert so aussehen:
Lies den Wert ein, der umgerechnet werden soll
Wiederhole
Teile den Wert durch 2
Merke den Rest
Benutze das Ergebnis der Division als neuen Wert
solange das Ergebnis der Division ungleich 0
Gib die gemerkten Reste in umgekehrter Reihenfolge aus


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
47
Die grafische Darstellung fr unseren Algorithmus sieht so aus:
Abb. 18: Der Algorithmus zum Umrechnen vom Dezimal- ins Dualsystem
Hinweis:
Mit dem Lsen von Problemen und dem Entwickeln von Algorithmen werden
wir uns gleich noch ein wenig intensiver beschftigen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
48
Phase 3: Die Implementierung
Bei der Implementierung werden die Algorithmen aus der Entwurfsphase in kon-
krete Anweisungen einer Programmiersprache umgesetzt. Da dafr umfangreiche
Vorkenntnisse erforderlich sind, wollen wir uns damit hier nicht weiter beschfti-
gen. Sie werden das Programm aber in einem der nchsten Studienhefte mit C++
erstellen.
Phase 4: Der Test
In der vierten Phase wird das Programm umfangreichen Tests unterzogen. Dabei
werden mglichst viele Fehler aufgesprt und beseitigt. Als Endergebnis steht das
fertige Programm, das ausgeliefert werden kann.
In unserem Fall liee sich der Test durch einige beispielhafte Umrechnungen
durchfhren. Die Ergebnisse werden dabei jeweils durch Gegenrechnungen geprft
und auch mit anderen Werkzeugen wie zum Beispiel dem Taschenrechner von
Windows kontrolliert.
Die Gegenrechnung fr den Wert 1011 in unserem Beispiel sieht so aus:
1 2
3
+ 0 2
2
+ 1 2
1
+ 1 2
0
= 1 8 + 0 4 + 1 2 + 1 1
= 8 + 0 + 2 + 1
= 11
Das Ergebnis ist 11 also korrekt. Besonders brauchbar ist dieser Test allerdings
nicht, da wir ja streng genommen nicht unseren Algorithmus testen, sondern
nur das grundstzliche Vorgehen. Fr einen aussagekrftigeren Test mssten Sie
die einzelnen Schritte des Algorithmus auf dem Trockenen durchgehen oder das
fertige Programm verwenden. Einen Test mit dem fertigen Programm holen wir
ebenfalls in einem spteren Studienheft nach.
Trotz sorgfltiger Programmierung und umfangreicher Tests lassen sich
Fehler in Software-Systemen allein schon durch die enorme Komplexitt
nicht immer vermeiden. Solche Fehler knnen unter ungnstigen Umstn-
den dazu fhren, dass ein Programm pltzlich beendet wird oder nicht mehr
korrekt arbeitet. Im Fachjargon wird der Programmabbruch durch einen
Fehler als Absturz bezeichnet.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
49
Phase 5: Der Betrieb und die Wartung
In der letzten Phase schlielich wird das Programm in Betrieb genommen. Dabei
treten in der Regel noch weitere Fehler und Unstimmigkeit auf, die eine Wartung
erforderlich machen. Auerdem muss das Programm an nderungen in der Umge-
bung angepasst werden zum Beispiel an neue Versionen eines Betriebssystems
oder nderungen bei gesetzlichen Vorgaben.
Hinweis:
Aus dem grundlegenden Phasenmodell wurden verschiedene konkrete Vor-
gehensmodelle entwickelt zum Beispiel das Software Life Cycle-Modell, das
V-Modell, der Rational Unified Process, Extreme Programming oder Scrum. Mit
diesen Modellen wollen wir uns hier aber nicht weiter beschftigen.
4.2 Das Lsen von Problemen
Eine sehr wichtige Phase beim Entwickeln von Software ist das Erarbeiten von
konkreten Lsungsmglichkeiten fr eine Aufgabe der Entwurf. Es gibt zwar fr
viele Anforderungen im IT-Bereich mittlerweile fertige Lsungen, die universell
eingesetzt werden knnen, trotzdem stehen die Entwickler hufig vor der Frage:
Wie lsst sich ein konkretes Problem genau lsen?
Auch wenn fr die Antwort auf diese Frage Kreativitt und Erfahrung wichtig
sind, gibt es einige Techniken, die beim Lsen von Problemen helfen knnen.
Dazu gehren zum Beispiel
Versuch-und-Irrtum,
Analogiebildung,
Variation oder
Rckwrtssuche.
Bei Versuch-und-Irrtum wird eine Vermutung angestellt, die durch Ausprobie-
ren berprft wird. So kann direkt herausgefunden werden, ob die Vermutung
stimmt oder nicht. Stimmt sie nicht, wird mit der nchsten Vermutung weiter-
gemacht, bis entweder das Problem gelst ist oder auch nicht.
Die Versuch-und-Irrtum-Methode ist zwar nicht unbedingt streng wissenschaft-
lich, kann anderen Methoden aber trotzdem berlegen sein. Das ist vor allem
dann der Fall, wenn es um eng begrenzte Bereiche mit einer fest definierten Aus-
wahl geht. So lassen sich zum Beispiel Kennwrter oder auch Zahlenkombina-
tionen durch einfaches Raten herausfinden. Es werden einfach so lange alle
Bitte beachten Sie:
Unser Programm ist bewusst sehr einfach gehalten und nicht sonderlich
betriebssicher. So prfen wir ja zum Beispiel gar nicht, ob berhaupt ein
gltiger dezimaler Wert eingegeben wurde. Die Eingabe des Buchstaben A
oder der hexadezimalen Zahl 16FF wrde unser Programm in groe
Schwierigkeiten bringen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
50
Kombinationen ausprobiert, bis die Lsung gefunden wurde. Mit Untersttzung
des Computers geht das sogar sehr schnell. Ein Kennwort mit einigen wenigen
Buchstaben wird zum Beispiel innerhalb weniger Minuten geknackt.
So viel zu Versuch-und-Irrtum.
Bei der Analogiebildung wird nach hnlichen Problemen gesucht, die bereits
gelst wurden. Aus diesen Lsungen wird dann versucht, eine neue Lsung abzu-
leiten.
Die Variation arbeitet hnlich wie die Analogiebildung. Allerdings wird hier das
aktuelle Problem leicht abgewandelt. ber das abgewandelte Problem wird dann
versucht, schneller zur Lsung zu kommen.
Bei der Rckwrtssuche schlielich versucht man, vom Ergebnis zum Ausgangs-
punkt zu kommen und nicht wie blich vom Ausgangspunkt zum Ergebnis.
4.3 Das Entwickeln von Algorithmen
Neben den Heuristiken, die allgemein fr die Lsung von neuen Problemen einge-
setzt werden, gibt es aber auch ganz konkrete Beschreibungen fr die Lsung von
bekannten Problemen die Algorithmen. Ein Beispiel fr solch einen Algorithmus
haben Sie ja bereits weiter oben bei der Umrechnung von Dezimalzahlen in Dual-
zahlen kennengelernt.
Algorithmen finden Sie nicht nur in der Informationstechnik. Auch ein Backrezept
oder eine Bauanleitung fr ein Modell sind Algorithmen. Sie beschreiben ja eben-
falls konkret die Lsung eines bekannten Problems eben Wie bereite ich einen
Ksekuchen fr 6 Personen zu? oder Wie baue ich ein U-Boot-Modell aus den
vorhandenen Einzelteilen?.
Neben Algorithmen, die ganz konkret fr ein bestimmtes Problem eingesetzt wer-
den, gibt es auch Algorithmen, die Lsungen fr einen Problembereich anbieten.
Zwei klassische Gebiete in der Informationstechnik sind zum Beispiel das Suchen
nach Daten und das Sortieren von Daten. Hier gibt es unterschiedlichste Algorith-
men, die mit mehr oder weniger Aufwand zum Ziel fhren.
Schauen wir uns zuerst zwei Beispiele fr die Suche an die lineare Suche und
die binre Suche.
Dieses Ausprobieren aller mglichen Kombinationen wird auch brute force
genannt. Brute force bedeutet bersetzt so viel wie brutale Gewalt.
Die Methoden zur Lsung von neuen, unbekannten Problemen werden Heu-
ristiken genannt. Die Heuristik allgemein beschftigt sich damit, mit wenig
Aufwand und wenig Zeit zu guten Lsungen eines Problems zu kommen.
Die Heuristik will dabei vor allem gute Lsungen liefern keine optimalen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
51
Die lineare Suche auch sequenzielle Suche genannt ist das einfachste
Suchverfahren. Hier wird der gesuchte Wert der Reihe nach mit allen vorhande-
nen Werten verglichen, bis der Wert gefunden wurde oder keine weiteren Werte
zum Vergleich mehr vorhanden sind.
Nehmen wir einmal an, in einer Liste mit den vier Zahlen 10, 20, 30 und 40 soll
nach dem Wert 20 gesucht werden. Zuerst wird der gesuchte Wert also 20
mit dem ersten Wert in der Liste also 10 verglichen. Die beiden Werte stim-
men nicht berein. Also wird die Suche mit dem zweiten Wert in der Liste fort-
gefhrt. Er stimmt mit dem gesuchten Wert berein. Die Suche kann also
beendet werden.
Die lineare Suche ist zwar sehr einfach, aber eigentlich nur bei sehr kurzen Lis-
ten zu gebrauchen. Denn im ungnstigsten Fall muss ja immer die komplette
Liste durchsucht werden und das kann bei langen Listen sehr aufwendig wer-
den.
Die binre Suche versucht daher, die Liste schrittweise zu verkleinern und so
die zu durchsuchende Menge zu reduzieren. Dazu wird die Liste immer wieder in
zwei Teile zerlegt, bis entweder der gesuchte Wert gefunden wird oder eine wei-
tere Halbierung nicht mglich ist. Gesucht wird dann immer nur noch in der
Hlfte der Liste.
Schauen wir uns jetzt auch die binre Suche an einem Beispiel an:
Nehmen wir einmal an, in einer Liste stehen 10 Zahlen, die aufsteigend sortiert
sind.
Abb. 19: Die aufsteigend sortierte Liste
Gesucht wird nach der Zahl 123.
Im ersten Schritt wird die Mitte der Liste ermittelt. Diese Mitte wird benutzt,
um die Liste in zwei annhernd gleich groe Teile zu zerlegen.
Im zweiten Schritt wird das Element in der Mitte mit dem gesuchten Wert ver-
glichen. Stimmen das mittlere Element und der gesuchte Wert nicht berein,
gibt es durch die aufsteigende Sortierung der Liste nur zwei Mglichkeiten:
Wenn die gesuchte Zahl grer ist als das mittlere Element, kann sie sich nur
im rechten Teil der Liste befinden.
Die binre Suche funktioniert nur dann, wenn die Liste, die durchsucht
werden soll, geordnet ist zum Beispiel vom kleinsten zum grten Wert
aufsteigend sortiert.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
52
Ist die gesuchte Zahl dagegen kleiner als das mittlere Element, kann sie sich
nur im linken Teil der Liste befinden.
Abb. 20: Die geteilte Liste
In den nchsten Schritten wird die Liste nach diesem Verfahren immer weiter
halbiert. Fr unser Beispiel ergibt sich damit der folgende Suchweg:
1. Schritt: Die erste Halbierung ergibt als Mitte die Position 5. Dieses Ele-
ment hat den Wert 11. Die gesuchte Zahl 123 ist grer als
dieser Wert. Sie kann sich damit nur im rechten Teil der Liste
befinden.
Abb. 21: Die erste Halbierung der Liste
Hinweis:
Ob Sie die Liste vor oder hinter der Mitte teilen, spielt keine Rolle.
2. Schritt: Die zweite Halbierung der Liste ergibt als Mitte die Position 8.
Der Wert dieses Elements ist 98. Die gesuchte Zahl ist wieder gr-
er als dieser Wert. Sie kann sich also wieder nur im rechten Teil
der Liste befinden.
Abb. 22: Die zweite Halbierung der Liste
3. Schritt: Die dritte Halbierung der Liste ergibt als Mitte die Position 9.
Der Wert dieses Elements ist 123. Damit wurde die Zahl gefunden.
Abb. 23: Die dritte Halbierung der Liste


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
53
Statt 9 Vergleichen wie bei der linearen Suche waren bei der binren Suche also
nur 3 Vergleiche erforderlich. Damit ist die Suche deutlich schneller auch wenn
der Aufwand fr die Verwaltung der Liste durch die Halbierungen hher ist.
So viel zum Suchen. Kommen wir nun zu den Sortierverfahren. Beginnen wir
auch hier mit einer sehr einfachen Variante der einfachen Maximum-
auswahl.
Hier wird die Folge, die sortiert werden soll, in einen sortierten und einen unsor-
tierten Bereich geteilt. Der sortierte Bereich ist zunchst leer, enthlt also kein
Element. Solange der unsortierte Bereich mehr als ein Element enthlt, geschieht
Folgendes:
1. Das letzte Element des unsortierten Bereichs wird als vorlufiges Maximum
definiert.
2. Es wird berprft, ob es im unsortierten Bereich grere Elemente als das
vorlufige Maximum gibt. Wenn ja, werden das grte Element und das Ele-
ment mit dem vorlufigen Maximum getauscht.
3. Der unsortierte Bereich wird am Ende um ein Element verkleinert. Damit
wird das jeweils letzte Element beim nchsten Durchlauf nicht mehr berck-
sichtigt.
Schauen wir uns dieses Verfahren wieder an einem praktischen Beispiel an:
Nehmen wir einmal an, in einer Liste stehen vier Werte.
Abb. 24: Die unsortierte Liste
Das Sortieren erfolgt dann in den folgenden Schritten:
1. Schritt: Der Wert des letzten Elements also 2 wird zum vorlufigen
Maximum.
2. Schritt: Der unsortierte Bereich hier noch die gesamte Liste wird nach
dem grten Wert durchsucht. Das Ergebnis ist 9.
3. Schritt: Das vorlufige Maximum die 2 und der grte Wert die 9
werden getauscht.
4. Schritt: Der unsortierte Bereich wird am Ende um 1 verkleinert. Damit
besteht die Liste jetzt aus drei unsortierten Elementen und einem
sortierten Element.
Abb. 25: Die Liste mit drei unsortierten Elementen und einem sortierten Element


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
54
5. Schritt: Das letzte Element im unsortierten Bereich also der Wert 6
wird zum vorlufigen Maximum.
6. Schritt: Der unsortierte Bereich wird nach dem grten Wert durchsucht.
Das Ergebnis ist ebenfalls 6. Es ist also kein Tausch erforderlich.
7. Schritt: Der unsortierte Bereich wird am Ende um 1 verkleinert. Damit
besteht die Liste jetzt aus zwei unsortierten Elementen und zwei
sortierten Elementen.
Abb. 26: Die Liste mit zwei unsortierten und zwei sortierten Elementen
8. Schritt: Das letzte Element im unsortierten Bereich also der Wert 1
wird zum vorlufigen Maximum.
9. Schritt: Der unsortierte Bereich wird nach dem grten Wert durchsucht.
Das Ergebnis ist 2.
10. Schritt: Das vorlufige Maximum die 1 und der grte Wert die 2
werden getauscht.
11. Schritt: Der unsortierte Bereich wird am Ende um 1 verkleinert. Damit
besteht die Liste jetzt aus einem unsortierten Element und drei
sortierten Elementen. Die Sortierung ist also abgeschlossen.
Abb. 27: Die sortierte Liste
Ein anderes Sortierverfahren ist Bubblesort frei bersetzt Blasensortierung.
Auch hier wird die Liste zunchst wieder in einen sortierten und unsortierten
Bereich geteilt. Der sortierte Bereich ist zu Beginn ebenfalls leer.
Solange der unsortierte Bereich mehr als ein Element enthlt, geschieht Folgen-
des:
1. Der unsortierte Bereich wird vom Anfang bis zum Ende durchlaufen. Dabei
wird das aktuelle Element der Liste mit seinem Nachfolger verglichen.
2. Wenn der Nachfolger kleiner ist als das aktuelle Element, werden die beiden
Elemente getauscht.
3. Wenn das Ende der Liste erreicht wurde, steht das grte Element hinten.
Der unsortierte Bereich wird am Ende um ein Element verkleinert. Damit
wird das jeweils letzte Element beim nchsten Durchlauf nicht mehr berck-
sichtigt.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
55
Schauen wir uns auch Bubblesort an einem konkreten Beispiel an. Nehmen wir
diesmal an, in einer Liste stehen die folgenden vier Werte.
Abb. 28: Die unsortierte Liste
Das Sortieren erfolgt dann in den folgenden Schritten:
1. Schritt: Das erste Element wird mit seinem Nachfolger verglichen.
2. Schritt: 32 ist grer als 11 also werden die Elemente getauscht.
3. Schritt: 32 jetzt an der Position 2 wird mit seinem Nachfolger ver-
glichen.
4. Schritt: 32 ist kleiner als 43 also werden die Elemente nicht getauscht.
5. Schritt: Jetzt wird das dritte Element mit dem vierten verglichen. Da im
vorigen Schritt kein Tausch erfolgt ist, wird hier also 43 mit 8 ver-
glichen.
6. Schritt: 43 ist grer als 8 also werden die Elemente wieder getauscht.
7. Schritt: Alle Elemente im unsortierten Bereich wurden getauscht. Der
unsortierte Bereich wird am Ende um 1 verkleinert.
8. Schritt: Das erste Element wird mit seinem Vorgnger verglichen.
9. Schritt: 11 ist kleiner als 32 also erfolgt kein Tausch.
10. Schritt: Jetzt wird das zweite Element mit dem dritten verglichen. Da im
vorigen Schritt kein Tausch erfolgt ist, wird hier also 32 mit 8 ver-
glichen.
11. Schritt: 32 ist grer als 8 also werden die Elemente getauscht.
12. Schritt: Alle Elemente im unsortierten Bereich wurden getauscht. Der
unsortierte Bereich wird am Ende um 1 verkleinert.
13. Schritt: Das erste Element wird mit seinem Vorgnger verglichen.
14. Schritt: 11 ist grer als 8 also erfolgt ein Tausch.
15. Schritt: Alle Elemente im unsortierten Bereich wurden getauscht. Der
unsortierte Bereich wird am Ende um 1 verkleinert.
Damit enthlt der unsortierte Bereich nur noch ein Element und das Sortieren
wird beendet.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
56
Die einzelnen Schritte sehen Sie auch noch einmal zusammengefasst in der fol-
genden Grafik:
Abb. 29: Bubblesort
Wie Sie sehen, rutschen die kleinen Zahlen im unsortierten Bereich schrittweise
nach vorne. Sie steigen also wenn Sie so wollen wie eine Blase in einem Glas
Wasser nach oben. Daher auch der Name Bubblesort.
Besonders effektiv sind weder die einfache Maximumauswahl noch Bubblesort.
Vor allem Bubblesort bentigt unter Umstnden sehr viele Sortiervorgnge, da im
Extremfall jedes Element mit jedem anderen Element verglichen werden muss. Es
gibt daher noch sehr viel mehr Sortierverfahren, die deutlich schneller arbeiten,
aber auch sehr viel komplizierter sind zum Beispiel Quicksort. Eine sehr gute
bersicht finden Sie zum Beispiel im Internet auf der Seite http://de.wiki-
pedia.org/wiki/Liste_von_Algorithmen im Bereich Sortieralgorithmen. Dort werden
auch noch zahlreiche weitere Suchalgorithmen vorgestellt.
So viel an dieser Stelle zur Entwicklung von Software. In den nchsten beiden
Studienheften werden Sie selbst als Programmierer aktiv. Sie erstellen kleine Pro-
gramme mit der Programmiersprache C++.
Bitte beachten Sie:
Ein Algorithmus ist hufig eine mehr oder weniger abstrakte Beschreibung
zur Lsung eines Problems. Diese Beschreibung muss in vielen Fllen erst
in die Befehle einer Programmiersprache umgesetzt werden. Ein Algorith-
mus beschreibt damit also in allgemeiner Form, was ein Programm bezie-
hungsweise ein Teil eines Programms machen soll.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
57
Zusammenfassung
Die Entwicklung moderner Software-Systeme erfolgt mit den Methoden, Konzep-
ten und Verfahren des Software-Engineerings. Dabei werden mehrere Phasen
durchlaufen.
Beim Lsen von Problemen knnen verschiedene Techniken eingesetzt werden
zum Beispiel Versuch-und-Irrtum oder die Rckwrtssuche.
Methoden zur Lsung von neuen, unbekannten Problemen werden Heuristiken
genannt.
Fr verschiedene Bereiche der Informationstechnik gibt es unterschiedliche Algo-
rithmen zum Beispiel fr das Suchen von Daten oder das Sortieren von Daten.
IV. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihre Kenntnisse. Benutzen Sie bei der Lsung der
folgenden Aufgaben bitte stets einen Bleistift, damit Sie mgliche Fehler nach
dem Vergleich mit den Lsungen im Anhang berichtigen knnen. Es ist in Ihrem
Interesse, die Aufgaben selbststndig zu lsen, ehe Sie im Anhang nachschlagen!
1. Nennen Sie die fnf wesentlichen Phasen bei der Entwicklung von Software-
Systemen.
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
2. Was ist der Software-Lebenszyklus?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
58
3. Was verstehen Sie unter einem Algorithmus?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
4. Was unterscheidet die binre Suche von der linearen Suche? Denken Sie
dabei auch an die Voraussetzungen.
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
59
5 Schlusswort
In diesem Studienheft haben Sie sich vor allem theoretisch mit dem Programmie-
ren von Computern beschftigt. Sie haben gelernt, warum Computer berhaupt
programmiert werden mssen und wie dabei grundstzlich vorgegangen wird.
Auerdem haben Sie mit einigen Programmiersprachen Bekanntschaft gemacht
und kennen wichtige Grundstrukturen fr die Programmierung.
Ab dem nchsten Studienheft werden Sie diese theoretischen Kenntnisse mit der
Programmiersprache C++ praktisch umsetzen. Sie lernen unter anderem, welche
Datentypen C++ anbietet, wie Sie Rechenoperationen mit C++ umsetzen und wie
Sie Ein- und Ausgaben durchfhren.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
60
6 Anhang
6.1 Literaturverzeichnis
Gumm, Heinz-Peter/
Sommer, Manfred Einfhrung in die Informatik
Oldenbourg, vollstndig berarbeitete
Auflage, 2012
ISBN 978-3-4867-0641-3
Herold, Helmut/
Lurz, Bruno/
Wohlrab, Jrgen Grundlagen der Informatik
Pearson Studium, 2. aktualisierte Auflage,
2012
ISBN 978-3-8689-4111-1
Hoffmann, Dirk W. Grundlagen der technischen Informatik
Hanser, 2., neu bearbeitete Auflage, 2009
ISBN 978-3-4464-2150-9
Speziell mit den Themen Algorithmen, Suchen und Sortieren beschftigen sich die
folgenden Bcher:
Pomberger, Gustav/
Dobler, Heinz Algorithmen und Datenstrukturen:
Eine systematische Einfhrung in die
Programmierung
Pearson Studium, 2008
ISBN 978-3-8273-7268-0
Wirth, Niklaus Algorithmen und Datenstrukturen.
Pascal-Version
Teubner, 5. Auflage, Stuttgart 1998
ISBN 978-3-5192-2250-7
Beide Bcher gehen aber weit ber die Inhalte in diesem Studienheft hinaus und
sind in Teilen sehr anspruchsvoll. Wenn Sie das Thema weiter interessiert, soll-
ten Sie erst einmal versuchen, die Bcher auszuleihen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
61
6.2 Lsungen der Aufgaben zur Selbstberprfung
Vergleichen Sie bitte Ihre Lsungen!
Bei freier Formulierung kommt es nicht auf wrtliche bereinstimmung an,
sondern auf inhaltliche. Sind Sie zu einem anderen Ergebnis gekommen, sollten
Sie das entsprechende Kapitel dieses Studienheftes wiederholen und die zugeh-
rige Aufgabe nach einer Pause noch einmal schriftlich lsen. Gegebenenfalls
berichtigen Sie Ihr Ergebnis nach einem erneuten Vergleich. Lassen Sie kein
falsches Ergebnis stehen.
I.
1. Die ersten Lochkarten beziehungsweise Lochstreifen kamen bei Websthlen
zum Einsatz.
2. Die elektrischen und elektronischen Bauelemente waren bei den ersten Com-
putern so teuer, dass nach Mglichkeiten gesucht wurde, die Gerte mg-
lichst universell einzusetzen. Die Rechner sollten unterschiedlichste
Programme bearbeiten knnen.
3. Nein, ein Computer kann nicht selbststndig entscheiden, ob das Ergebnis
seiner Arbeit sinnvoll ist. Ein Computer kann nicht denken, sondern fhrt
nur die Aufgaben aus, die ihm vorgegeben wurden.
II.
1. Ein Assembler verwendet sehr kurze, schwer zu merkende Anweisungen
die Mnemonics. Eine Hochsprache dagegen orientiert sich strker an der
menschlichen Sprache und arbeitet mit vergleichsweise einfach zu behalten-
den Befehlen.
Ein Assembler ist auerdem eine 1:1-Programmiersprache. Das heit, jede
Anweisung im Assembler wird in eine Anweisung fr den Computer umge-
setzt. Hochsprachen sind dagegen 1:n-Programmiersprachen. Hier wird eine
Anweisung in der Hochsprache in mehrere Anweisungen fr den Computer
umgesetzt.
2. Nein, ein Programm, das in Maschinensprache erstellt wurde, kann nicht auf
einem beliebigen Prozessor ablaufen. Programme in Maschinensprache sind
immer auf einen bestimmten Prozessortyp zugeschnitten.
3. Ein Mnemonic ist ein kurzer Befehl, der bei einem Assembler eingesetzt
wird.
4. Ein Quelltext enthlt Anweisungen fr ein Programm in dem Format der
jeweiligen Programmiersprache. Der Quelltext kann nicht direkt ausgefhrt
werden.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
62
5. Die Auswahl der Programmiersprache C# fr diese Aufgabe ist nicht beson-
ders glcklich. Es mssten viele erforderliche Elemente selbst programmiert
werden. Besser geeignet fr diese Aufgabe wre ein spezielles Multimedia-
Werkzeug oder ein Autorensystem.
6. Beim Rapid Application Development werden vorgefertigte Komponenten in
ein eigenes Programm eingefgt und angepasst. Auf diese Weise kann die
Entwicklung erheblich beschleunigt werden.
7. Fr die Aufgabe bentigen Sie eine plattformunabhngige Programmierspra-
che. Dazu gehren zum Beispiel Java und mit Einschrnkungen auch C#.
III.
1. Zu den typischen Ereignissen, die bei der Ereignisverarbeitung zum Einsatz
kommen, gehren
das Drcken einer Taste,
ein Mausklick oder
ein Doppelklick.
Fr die richtige Antwort reicht es aus, wenn Sie zwei Ereignisse genannt
haben.
2. a) Es handelt sich um eine Folge oder Sequenz. Die Schritte werden hin-
tereinander ausgefhrt.
b) Es handelt sich um eine Wiederholung. Die Einstellung wird so lange
durchgefhrt, bis ein bestimmter Zustand erreicht ist.
c) Es handelt sich um eine Auswahl. Die Anweisung ist an eine Bedingung
geknpft.
IV.
1. Die fnf wesentlichen Phasen bei der Entwicklung von Software-Systemen
sind:
die Analyse,
der Entwurf,
die Umsetzung,
der Test sowie
Betrieb und Wartung.
2. Der Software-Lebenszyklus fasst die Phasen bei der Entwicklung von Soft-
ware zusammen. Er beschreibt die Zeitspanne, in der ein Softwareprodukt
entwickelt und eingesetzt wird.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
63
3. Ein Algorithmus ist vereinfacht ausgedrckt eine Vorschrift zur Lsung
eines Problems.
4. Die binre Suche halbiert die zu durchsuchende Liste bei jedem Durchgang
und setzt die Suche in der verbleibenden Hlfte fort. Sie kann nur in einer
sortierten Liste durchgefhrt werden.
Die lineare Suche durchsucht die Liste von vorne bis hinten, bis das Element
gefunden wurde oder die Liste durchsucht wurde. Die Liste kann daher auch
unsortiert vorliegen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
64
6.3 Glossar
.NET-Konzept Beim .NET-Konzept (ausgesprochen: dot net) wer-
den die Programme nicht direkt in ausfhrbare
Anwendungen bersetzt, sondern zunchst in eine
Zwischensprache die CIL umgesetzt. Diese Zwi-
schensprache wird dann auf jedem einzelnen Compu-
ter durch einen Just in Time-Compiler in ein
ausfhrbares Programm umgewandelt.
1:1-Programmiersprache Eine 1:1-Programmiersprache ist eine Programmier-
sprache, bei der ein Befehl auch einem Befehl fr
den Computer entspricht.
1:n-Programmiersprache Eine 1:n-Programmiersprache ist eine Programmier-
sprache, bei der ein Befehl in mehrere Befehle fr
den Computer umgesetzt wird.
ABAP ABAP ist eine spezielle Programmiersprache des
SAP-Systems. ABAP steht fr Advanced Business
Application Programming.
Absturz Ein Absturz ist im Fachjargon ein Programm-
abbruch durch einen Fehler.
Algorithmus Ein Algorithmus ist eine przise formulierte und
eindeutige Vorschrift zur Lsung eines Problems.
Typische Beispiele fr Algorithmen sind Formeln zur
Berechnung oder Kochrezepte.
Alphanumerisch Eine alphanumerische Zeichenfolge besteht neben
Ziffern auch aus Buchstaben beziehungsweise Son-
derzeichen.
Alternative Verzweigung Die alternative Verzweigung ist eine Programm-
struktur. Wenn eine Bedingung zutrifft, werden
bestimmte Anweisungen ausgefhrt. Trifft die Bedin-
gung nicht zu, werden andere Anweisungen ausge-
fhrt.
Analogie Eine Analogie ist eine hnlichkeit oder Entspre-
chung.
Assembler Assembler war eine der ersten Programmierspra-
chen. Die Programmierung erfolgt ber Mnemonics.
Die Bezeichnung Assembler wird aber auch fr das
Programm benutzt, das die Umwandlung der Anwei-
sungen in ein fr den Computer verstndliches For-
mat durchfhrt.
Auswahlstruktur ber Auswahlstrukturen knnen beim Programmie-
ren Anweisungen in Abhngigkeit von Bedingungen
ausgefhrt werden. Dazu wird zunchst berprft,
ob eine Bedingung wahr oder falsch ist. Im ein-
fachsten Fall wird nur dann eine bestimmte Anwei-
sung ausgefhrt, wenn die Bedingung zutrifft.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
65
Neben den einfachen Verzweigungen untersttzen
viele Programmiersprachen auch alternative Ver-
zweigungen und Mehrfach-Verzweigungen.
Autorensystem Ein Autorensystem ist ein spezielles Programm, das
die schnelle Entwicklung von Anwendungen ermg-
licht. Dazu werden zum Beispiel Inhalte mit der
Maus an den gewnschten Stellen platziert. Viele
Autorensysteme ermglichen auch eine visuelle Pro-
grammierung. Hier knnen Anweisungen ber ent-
sprechende Symbole umgesetzt werden.
Autorensysteme werden sehr hufig fr die Erstel-
lung von Computerlernprogrammen eingesetzt.
Basiszahl Die Basiszahl ist die Zahl in einem Zahlensystem,
die fr die Bildung der Stellenwerte benutzt wird.
Batchprogramm Ein Batchprogramm ist ein Programm, bei dem die
Befehle der Reihe nach von oben nach unten abgear-
beitet werden.
Binre Suche Bei der binren Suche wird die zu durchsuchende
Liste bei jedem Durchlauf halbiert. Weitergesucht
wird nur in einer Hlfte der Liste.
Die binre Suche erwartet eine sortierte Liste.
Binres System Ein binres System ist ein System mit genau zwei
eindeutigen Zustnden zum Beispiel 0 und 1.
brute force Als brute force wird das Ausprobieren aller mgli-
chen Kombinationen zum Beispiel fr ein Kennwort
genannt.
Brute force ist damit wenn Sie so wollen ein
Versuch-und-Irrtum-Verfahren.
Bubblesort Bubblesort ist ein Sortierverfahren.
Bytecode Der Bytecode wird bei der bersetzung von Java-
Programmen als eine Art Zwischenprodukt erzeugt.
Er stellt kein direkt ausfhrbares Programm dar.
Bei der Ausfhrung wird der Bytecode durch die
Java Virtual Machine interpretiert. Diese Java Vir-
tual Machine muss auf jedem Rechner installiert
sein, der eine Java-Anwendung ausfhren soll.
C# Die Programmiersprache C# fasst die Strken der
Programmiersprachen Java und C++ zusammen. C#
ist in das .NET-Konzept der Firma Microsoft integ-
riert.
Das Zeichen # wird sharp ausgesprochen.
C++ C++ ist eine sehr weitverbreitete Programmierspra-
che. Sie ist durch ISO standardisiert.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
66
CIL CIL ist die Abkrzung fr Common Intermediate
Language.
COBOL COBOL ist eine Programmiersprache fr kaufmnni-
sche Anwendungen.
Code and Fix Code and Fix ist eine Bezeichnung fr das Program-
mieren nach Versuch-und-Irrtum.
Common Intermediate
Language (CIL) Die Common Intermediate Language bildet beim
.NET-Konzept eine Art Zwischensprache. In diese
Zwischensprache werden die Anwendungen zunchst
bersetzt. Die endgltige bersetzung erfolgt durch
einen Just in Time-Compiler auf jedem einzelnen
Computer.
Compiler Ein Compiler setzt die Anweisungen einer Program-
miersprache in ein ausfhrbares Programm um.
Nach der bersetzung kann das Programm direkt
vom Betriebssystem ausgefhrt werden.
Datentyp Der Datentyp beschreibt bei der Programmierung,
welche Informationen mit einem Datenobjekt verar-
beitet werden.
Dezimalsystem Das Dezimalsystem ist ein Zahlensystem mit der
Basiszahl 10.
Dialekt Ein Dialekt ist eine Version einer Programmierspra-
che. Die verschiedenen Dialekte weichen zum Teil
erheblich voneinander ab.
Dualsystem Das Dualsystem ist ein Stellenwertsystem mit der
Basiszahl 2.
Editor Ein Editor ist ein Programm zum Erfassen und
Bearbeiten von Informationen.
Eigenschaft Die Eigenschaften beschreiben bei der Objektorien-
tierung die Daten eines Objekts.
Einfache
Maximumauswahl Die einfache Maximumauswahl ist ein Sortierverfah-
ren.
Einfache Verzweigung Die einfache Verzweigung ist eine Programmstruk-
tur. Hier werden Anweisungen nur dann ausgefhrt,
wenn eine Bedingung zutrifft.
Entwicklungsumgebung Entwicklungsumgebungen werden fr die Erstellung
von Programmen eingesetzt. Sie stellen dem Pro-
grammierer fertige Objekte wie zum Beispiel Bedien-
elemente und Dialoge zur Verfgung, die mit ein
paar Mausklicks in das eigene Programm eingebun-
den werden knnen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
67
Ereignis Ereignisse sind eine Art Signal, das von bestimmten
Aktionen ausgelst wird. Zu den Aktionen, die ein
Ereignis auslsen, gehren zum Beispiel das Bewe-
gen der Maus, das Klicken, das Doppelklicken oder
auch eine Tastatureingabe.
Ereignisverarbeitung Die Ereignisverarbeitung ist eine Form der Program-
mierung. Hier werden die einzelnen Anweisungen
nicht mehr der Reihe nach ausgefhrt, sondern das
Programm kann auf Ereignisse reagieren zum Bei-
spiel einen Mausklick an eine bestimmte Stelle.
Event handling Event handling ist die englische Bezeichnung fr
Ereignisverarbeitung.
Extreme Programming Extreme Programming ist ein Vorgehensmodell zur
Softwareentwicklung.
Folge Eine Folge auch Sequenz genannt ist die ein-
fachste Programmstruktur. Hier werden die einzel-
nen Anweisungen der Reihe nach ausgefhrt. Wenn
Anweisung 1 abgearbeitet ist, wird Anweisung 2
ausgefhrt und so weiter.
FORTRAN FORTRAN war eine der ersten hheren Program-
miersprachen.
Heuristik Die Heuristik allgemein beschftigt sich damit, mit
wenig Aufwand und wenig Zeit zu guten Lsungen
eines Problems zu kommen. Die Heuristik will dabei
vor allem gute Lsungen liefern keine optimalen.
Heuristiken Heuristiken sind Methoden zur Lsung von neuen,
unbekannten Problemen.
Hexadezimales
Zahlensystem Das hexadezimale Zahlensystem ist ein Zahlensys-
tem mit der Basiszahl 16. Die Ziffern ber 9 werden
durch Buchstaben dargestellt.
Hochsprache Hochsprachen erlauben eine Programmierung von
Computern in einer Form, die der menschlichen
Sprache in Teilen sehr nahekommt und bekannte
Symbole zum Beispiel + benutzt.
Eine typische Anweisung einer Hochsprache sieht
zum Beispiel so aus:
ergebnis = 10 + 20;
International
Standardization
Organization Siehe ISO.
Interpreter Ein Interpreter setzt die Anweisungen einer Pro-
grammiersprache in ausfhrbare Anweisungen fr
den Computer um.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
68
Die Umsetzung erfolgt zur Laufzeit des Programms
also unmittelbar vor dem Ausfhren einer Anwei-
sung aus dem Quelltext.
ISO ISO (International Standardization Organization) ist
eine internationale Organisation, die international
gltige Standards aufstellt. Zu den Mitgliedern der
ISO gehrt zum Beispiel das Deutsche Institut fr
Normung DIN.
Java Java ist eine weitverbreitete Programmiersprache.
Sie ist plattformunabhngig und wird unter ande-
rem fr die Erstellung von Internet-Anwendungen
eingesetzt.
Java Virtual Machine Die Java Virtual Machine setzt den Bytecode eines
Java-Programms in eine ausfhrbare Anwendung
um. Die Umsetzung erfolgt unmittelbar vor der Aus-
fhrung.
JIT JIT ist die Abkrzung fr Just in Time-Compiler.
Just in Time-Compiler
(JIT) Der Just in Time-Compiler bernimmt beim .NET-
Konzept die endgltige bersetzung der Programme
aus der Zwischensprache.
Klasse Eine Klasse fasst bei der Objektorientierung Objekte
mit gleichen oder sehr hnlichen Eigenschaften
zusammen.
Lineare Suche Die lineare Suche ist ein einfaches Suchverfahren.
LISP LISP ist eine Programmiersprache mit dem besonde-
ren Schwerpunkt auf der Verarbeitung von Zeichen-
ketten.
Lochkarten Eine Lochkarte ist eine Pappkarte mit Lchern.
ber die Position der Lcher knnen Informationen
transportiert werden.
Im groen Umfang wurden Lochkarten vom Ameri-
kaner Hermann Hollerith eingesetzt. Die Karten
werden daher auch Hollerith-Karten genannt.
Nachfolger von Lochkarten sind zum Teil heute noch
im Einsatz.
Lochstreifen Ein Lochstreifen ist ein Papierstreifen mit Lchern.
ber die Position der Lcher knnen Informationen
transportiert werden. Dazu werden die Lcher bezie-
hungsweise die Streifen von einem Mechanismus
abgetastet.
Lochstreifen wurden unter anderem fr die Steue-
rung von Websthlen verwendet und gaben das
Muster vor.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
69
Makro Ein Makro ist eine Folge von Anweisungen fr ein
Anwendungsprogramm. Makros werden vor allem
fr die Automatisierung eingesetzt.
Maschinensprache Bei der Maschinensprache werden Anweisungen an
den Computer direkt in binr kodierter Form in den
Speicher geschrieben.
Mehrfach-Verzweigung Die Mehrfach-Verzweigung ist eine Programmstruk-
tur. Hier knnen fr unterschiedliche Flle jeweils
eigene Anweisungen festgelegt werden.
Methode Methoden beschreiben bei der Objektorientierung
das Verhalten eines Objekts.
Mnemonic Ein Mnemonic ist ein Befehl eines Assemblers. Es
handelt sich um kurze Befehle, die recht schwierig
zu behalten waren.
Typische Mnemonics sind zum Beispiel add zum
Addieren oder mov als Abkrzung fr move (engl.
verschieben).
Multimedia Multimedia bezeichnet die synchrone Wiedergabe
verschiedener Medien wie Bilder, Video, Ton und
Text. Der Anwender hat die Mglichkeit, durch
Interaktionen selbst in den Ablauf einzugreifen.
Objekt Ein Objekt fasst bei der Objektorientierung Daten
und Verhalten zusammen.
Objektorientierung Die Objektorientierung ist ein Konzept beim Pro-
grammieren. Dabei werden etwas vereinfacht aus-
gedrckt Daten mit dem Verhalten, das die Daten
verndert, in einem Objekt zusammengefasst. Die
Daten bilden dabei die Eigenschaften des Objekts
und das Verhalten die Methoden.
Oktalsystem Das Oktalsystem ist ein Zahlensystem mit der
Basiszahl 8.
Player Ein Player ist ein spezielles Programm zur Wieder-
gabe von Multimedia-Informationen in einem Brow-
ser. Player werden zum Beispiel zum Abspielen von
Videos oder Audios eingesetzt.
Programm Ein Programm enthlt eine Reihe von Anweisungen,
die der Computer zur Lsung einer bestimmten Auf-
gabe ausfhren soll. Der Aufbau und auch der
Umfang der Programme hngen dabei von der jewei-
ligen Aufgabe ab.
Programmierer Ein Programmierer erstellt Computerprogramme.
Dabei setzt er in der Regel konkrete Vorgaben aus
der Entwicklung mit einer Programmiersprache um.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
70
Programmiersprache ber eine Programmiersprache werden Anweisungen
an den Computer in einer fr den Menschen ver-
stndlichen Form erfasst. Diese Anweisungen wer-
den dann in ein fr den Computer ausfhrbares
Programm umgesetzt.
Programmiersprachen sind selbst auch Programme.
Quelltext Als Quelltext bezeichnet man die Anweisungen einer
Programmiersprache fr die Ausfhrung eines Pro-
gramms.
Der Quelltext selbst kann nicht direkt ausgefhrt
werden. Er muss entweder von einem Compiler oder
einem Interpreter bersetzt werden.
Quicksort Quicksort ist ein Sortierverfahren.
RAD RAD ist die Abkrzung fr Rapid Application Deve-
lopment.
Rapid Application
Development (RAD) Beim Rapid Application Development wird ein Pro-
gramm zum groen Teil aus vorgefertigten Elemen-
ten zusammengesetzt. Der Programmierer kann die
Eigenschaften und das Verhalten dieser Elemente an
seine Bedrfnisse anpassen.
Rational Unified Process Der Rational Unified Process ist ein Vorgehens-
modell zur Softwareentwicklung.
Register Ein Register ist ein spezieller Speicherbereich in
einem Prozessor.
SAP Das SAP-System der SAP AG ist ein hochintegrier-
tes System zur Verarbeitung von Geschftsvorfllen
in Unternehmen. Es verfgt ber eine eigene Pro-
grammiersprache ABAP, ber die das System ange-
passt und erweitert werden kann.
Schleife Mit Schleifen knnen bei der Programmierung
Anweisungen in Abhngigkeit von Bedingungen wie-
derholt werden.
SCRUM SCRUM ist ein Vorgehensmodell zur Softwareent-
wicklung.
Sequenz Sequenz ist eine andere Bezeichnung fr die Pro-
grammstruktur Folge.
Sequenzielle Suche Sequenzielle Suche ist eine andere Bezeichnung fr
die lineare Suche.
Skript Ein Skript ist eine Sammlung von Befehlen fr eine
Skriptsprache.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
71
Skriptsprache Bei einer Skriptsprache wird ein Programm durch
eine Aneinanderreihung von Befehlen beschrieben.
Moderne Skriptsprachen haben nahezu die gleichen
Mglichkeiten wie echte Programmiersprachen.
Software Life Cycle Software Life Cycle ist die englische Bezeichnung
fr den Software-Lebenszyklus.
Software
Life Cycle-Modell Das Software Life Cycle-Modell ist ein Vorgehens-
modell zur Softwareentwicklung.
Software-Engineering Das Software-Engineering ist ein Teilgebiet der
Informatik. Es beschftigt sich mit der Entwicklung
umfangreicher und komplexer Software-Systeme.
Software-Lebenszyklus Der Software-Lebenszyklus beschreibt die Phasen bei
der Entwicklung und beim Einsatz eines Pro-
gramms. Er stellt also die Zeitspanne dar, in der ein
Softwareprodukt entwickelt und eingesetzt wird
bis zum Ende seiner Benutzung.
Stapelprogramm Siehe Batchprogramm.
Stapelverarbeitung Siehe Batchprogramm.
Trial and Error Trial and Error ist die englische Bezeichnung fr
Versuch-und-Irrtum.
Vererbung ber die Vererbung knnen bei der objektorientier-
ten Programmierung Eigenschaften und Methoden
aus bergeordneten Klassen an eine untergeordnete
Klasse weitergegeben werden.
Die ererbten Methoden und Eigenschaften knnen
verndert und erweitert werden.
Versuch-und-Irrtum Bei Versuch-und-Irrtum wird eine Vermutung ange-
stellt, die durch Ausprobieren berprft wird. So
kann direkt herausgefunden werden, ob die Vermu-
tung stimmt oder nicht.
Visual Basic Visual Basic ist eine Programmiersprache von
Microsoft.
V-Modell Das V-Modell ist ein Vorgehensmodell zur Soft-
wareentwicklung.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
72
6.4 Sachwortverzeichnis
Symbols
.NET-Konzept 27
Numerics
1:1-Programmiersprachen 15
1:n-Programmiersprachen 15
A
Algorithmus 45
Analogiebildung 50
Analyse 45
Assembler 11
Auswahlstrukturen 37
Automat 7
Autorensysteme 30
B
Batchprogramm 20
Betrieb 49
brute force 50
Bubblesort 54
Bytecode 26
C
C (Programmiersprache) 17
C# 27
C++ 25
COBOL 15
Compiler 19
D
Datentypen 34
Dialekte 19
E
Eigenschaften 23
einfache Maximumauswahl 53
Entwurf 45
Ereignisse 41
Ereignisverarbeitung 41
event handling 42
F
Flash 29
Folge 36
FORTRAN 14
H
Heuristiken 50
Hochsprachen 14
I
Implementierung 48
Interpreter 19
J
Java 26
Java Virtual Machine 26
K
Klassen 23
L
LISP 15
Lochkarten 8
Lochkartenlocher 8
Lochstreifen 8
M
Makros 22
Maschinensprache 11
Methoden 23
Mnemonic 11
Multimedia-Werkzeuge 29
O
Objektorientierung 23
P
Player 30
Programm 7
Programmiersprachen
Stammbaum 18
Q
Quelltext 19
R
Rapid Application Development 24
Rckwrtssuche 50
S
Schleifen 38
Sequenz 36
Skript 20
Skriptsprachen 20
Software Life Cycle 45
Software-Engineering 44
Software-Entwicklung
Phasen der 44
Software-Lebenszyklus 45
Stapelprogramm 20
Stapelverarbeitung 20
Suche
binre 51
lineare 51
sequenzielle 51


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
73
T
Test 48
V
Variablen 34
Variation 50
Versuch-und-Irrtum 49
Verzweigung
alternative 37
einfache 37
Mehrfach- 38
Visual Basic 28
W
Wartung 49
Wiederholungen 38


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
So kennzeichnen Sie
bitte Ihre Lsungen
EINSENDEAUFGABEN DES STUDIENHEFTES
Vergessen Sie bitte nicht, auf jedem Lsungsbogen
neben der oben angefhrten Kurzbezeichnung auch
Namen und Vertragsnummer anzugeben!
IMIT 3 / 0713 K04
1. Erweitern Sie den Algorithmus zur Umrechnung von Dezimalzahlen in Dualzahlen
aus diesem Studienheft so, dass er Dezimalzahlen in ein beliebiges anderes Zahlen-
format umrechnen kann also zum Beispiel in Oktalzahlen oder in hexadezimale
Zahlen.
Stellen Sie den genderten Algorithmus sowohl umgangssprachlich als auch in gra-
fischer Form dar.
2. Entwerfen Sie einen Algorithmus, der Dualzahlen in das Dezimalsystem umrech-
nen kann. Beschreiben Sie auch diesen Algorithmus umgangssprachlich und gra-
fisch.
Fhren Sie fr Ihren Algorithmus einen Test durch. Dokumentieren Sie den Test
bitte fr die Aufgabenlsung.
Hinweis:
Wenn Sie nicht mehr genau wissen, wie die Umrechnungen von einem Zahlensys-
tem in ein anderes erfolgen, lesen Sie bitte noch einmal im letzten Studienheft
nach.
3. Bilden Sie eine Klassenhierarchie fr die folgenden vier Tiere: Goldfisch, Schild-
krte, Wellensittich und Br. Die Tiere sollen sich dabei auf der untersten Ebene
der Hierarchie befinden. Die oberste Ebene der Hierarchie soll die sehr allgemeine
Klasse Tiere bilden. Legen Sie zwischen diesen beiden Ebenen noch mindestens
eine weitere sinnvolle Ebene an.
4. Sie haben folgende Zahlenfolge:
Suchen Sie in dieser Zahlenfolge per Hand mit der binren Suche nach dem Wert
497. Beschreiben Sie dabei bitte jeden einzelnen Schritt, den Sie durchfhren.
Hinweis:
Ob Sie die Liste im ersten Schritt beim dritten oder vierten Element teilen, spielt
fr die Lsung keine besondere Rolle.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g