20.07.2013 Aufrufe

kapitel 1.6.1.pdf

kapitel 1.6.1.pdf

kapitel 1.6.1.pdf

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Die Informatik befasst sich als Wissenschaft<br />

von der automatischen Informationsverarbeitung<br />

mit den Prinzipien<br />

informationsverarbeitender Prozesse<br />

und ihrer algorithmischen Realisierung<br />

mithilfe von Computern.


Grundbegriffe<br />

Nicht zum Gegenstand<br />

der Informatik<br />

gehören natürlich<br />

entstandene Informationssysteme<br />

und<br />

-prozesse (z. B. Informationsaufnahme<br />

und -verarbeitung<br />

über Nervenzellen<br />

und Gehirn des<br />

Menschen), vorhandene<br />

Kenntnisse<br />

über deren inneren<br />

Aufbau und Funktionsweise<br />

werden<br />

jedoch ausgenutzt.<br />

Schaltung auf einem<br />

Computerchip<br />

1.1 Die Informatik als junge Wissenschaft<br />

Die Informatik ist die Wissenschaft von der automatischen Informationsverarbeitung.<br />

Die Informatik befasst sich mit den Gesetzmäßigkeiten<br />

und Prinzipien informationsverarbeitender Prozesse und<br />

ihrer algorithmischen Realisierung mithilfe rechentechnischer Mittel<br />

sowie mit der Entwicklung und Nutzung automatisierter Informationsverarbeitungssysteme.<br />

Dabei müssen informationsverarbeitende<br />

Prozesse in „computerverständlicher“ Form beschrieben und entsprechende<br />

Mittel entworfen werden, damit solche „Programme“<br />

abgearbeitet werden können.<br />

1.1.1 Grundlagen und Gegenstandsbereiche der Informatik<br />

Ursachen, die zur Herausbildung der Wissenschaft Informatik führten<br />

– Mit dem Beginn der wissenschaftlich-technischen Revolution in der<br />

Mitte des 20. Jh. ist ein stürmisches Anwachsen von Informationen<br />

(„Informationsexplosion“) zu verzeichnen. Es entstand das dringende<br />

gesellschaftliche Bedürfnis, diese Informationsflut zu beherrschen.<br />

– Innerhalb anderer Wissenschaften (insbesondere der Mathematik)<br />

waren verschiedene Grundlagen geschaffen worden, diese Informationslawine<br />

theoretisch zu bewältigen:<br />

•<br />

•<br />

•<br />

•<br />

Algorithmusbegriff und Automatentheorie (Turing, 1938),<br />

Theorie der rekursiven Funktionen (gödel, 1930),<br />

Informationstheorie (Shannon, 1949),<br />

Theorie der formalen Sprachen (ChomSky, ginSburg, 1955).<br />

– Durch die Entwicklung der Mikroelektronik waren die praktischen<br />

Voraussetzungen dafür gegeben, dass leistungsfähige Rechentechnik<br />

preiswert produziert und massenhaft in allen Bereichen des gesellschaftlichen<br />

Lebens eingesetzt werden konnte.<br />

– Die Vielfalt der Anwendungsmöglichkeiten informationsverarbeitender<br />

Technik und die ökonomische Notwendigkeit, die Potenzen dieser<br />

Technik zum Tragen kommen zu lassen, machten es erforderlich,<br />

geeignete Methoden zum Entwurf von Programmen und informationsverarbeitender<br />

Technik sowie sinnvolle, problemnahe Sprachen<br />

zur Kommunikation mit der Technik zu entwickeln.<br />

Grundlagen der Informatik<br />

theoretische<br />

Grundlagen<br />

technische<br />

Grundlagen<br />

Algorithmentheorie, Theorie der formalen Sprachen,<br />

Automatentheorie, Informationstheorie, Logik, Berechenbarkeitstheorie,<br />

Komplexitätstheorie<br />

herkömmliche Rechentechnik, Nachrichtentechnik,<br />

Mikroelektronik, Sensortechnik, Optoelektronik, Telekommunikation<br />

(Bildschirm- und Satellitentechnik)


Gegenstandsbereiche der Informatik<br />

Im Allgemeinen werden vier Gegenstandsbereiche der Wissenschaft Informatik<br />

unterschieden – die theoretische, die praktische, die technische<br />

und die angewandte Informatik. Theoretische, praktische und technische<br />

Informatik zählen zur Kerninformatik.<br />

Dabei gibt es viele Überschneidungen, sodass sich diese Bereiche auf<br />

manchen Gebieten nur schwer voneinander abgrenzen lassen.<br />

Theoretische Informatik:<br />

Die theoretische Informatik beschäftigt sich vor allem mit der Fundierung<br />

des Algorithmusbegriffs, untersucht die Leistungsfähigkeit<br />

von Algorithmen und erforscht die prinzipiellen Grenzen des Computers<br />

beim Lösen von Problemen.<br />

Sowohl für die Konstruktion von Algorithmen als auch für die Konstruktion<br />

von Computern spielen Methoden und Modelle aus der Mathematik<br />

eine wichtige Rolle. In der Mathematik werden aber überwiegend statische<br />

Strukturen betrachtet, in der Informatik dynamische (Prozesse).<br />

Theoretische Informatik in der Schule:<br />

Weil der Algorithmusbegriff in der Informatik eine tragende Rolle spielt,<br />

wird bereits in der informatischen Grundbildung ein anschaulicher Algorithmusbegriff<br />

vermittelt. In der gymnasialen Oberstufe erfolgen dann<br />

mathematisch exakte Definitionen für diesen Begriff sowie Einblicke in<br />

andere Teilgebiete der theoretischen Informatik.<br />

Praktische Informatik:<br />

Die praktische Informatik beschäftigt sich vor allem mit der Formulierung<br />

von Algorithmen als Programme in Abhängigkeit von den<br />

rechentechnischen Möglichkeiten. Meist sind die Programme recht<br />

umfangreich und kaum überschaubar, es ist also auch eine Programmiermethodik<br />

(die Erarbeitung und Nutzung von Programmierverfahren)<br />

und die Entwicklung von Programmierumgebungen notwendig,<br />

sodass Programmierfehler reduziert werden.<br />

Auch müssen die Programme, die in der Erstfassung in einer höheren,<br />

dem Menschen verständlicheren Form vorliegen, in eine für<br />

den Rechner ausführbare Form übertragen werden, es müssen also<br />

spezielle Übersetzungsprogramme erarbeitet werden.<br />

Die Entwicklung von Betriebssystemen für Computer (Überwachung<br />

der Ausführung von Programmen und Übernahme der Steuerung<br />

der Ein- und Ausgabe) gehört ebenfalls zu den Aufgaben der praktischen<br />

Informatik.<br />

Für die Entwicklung und Nutzung von Betriebssystemen und für andere<br />

genannte Aufgaben benötigt der Informatiker Kenntnisse aus der Elektrotechnik<br />

(Speicherorganisation, technische Umsetzung logischer Verknüpfungen<br />

usw.), um die Möglichkeiten und Grenzen technischer Realisierungen<br />

auf einer konkreten Gerätetechnik abschätzen zu können.<br />

Die Informatik als junge Wissenschaft<br />

Teilgebiete der<br />

theoretischen Informatik:<br />

Theorie der formalen<br />

Sprachen,<br />

Automatentheorie,<br />

Algorithmentheorie,<br />

Berechenbarkeitstheorie,Komplexitätstheorie,<br />

...<br />

Teilgebiete der<br />

praktischen Informatik:Programmiermethodik(Software-Engineering),Programmiersprachen,<br />

Übersetzerbau,<br />

Betriebssysteme,<br />

Dialogsysteme, Fragen<br />

der künstlichen<br />

Intelligenz und der<br />

Konstruktion von<br />

Expertensystemen,<br />

...


10 Grundbegriffe<br />

Teilgebiete der technischen<br />

Informatik:<br />

Rechnerarchitektur,<br />

Datenfernübertragung,<br />

Netze,<br />

Prozessdatenverarbeitung,<br />

VLSI-<br />

Entwurf (Entwurf<br />

hochintegrierter<br />

Schaltkreise), …<br />

Teilgebiete der<br />

angewandten Informatik:<br />

Betriebsinformatik,<br />

Rechtsinformatik,<br />

Mensch-Maschine-<br />

Kommunikation,<br />

Ergonomie, …<br />

Praktische Informatik in der Schule:<br />

Notwendige Kenntnisse zur Nutzung von Betriebssystemen und dialogorientierter<br />

grafischer Benutzeroberflächen und des damit im Zusammenhang<br />

stehenden „Dateihandlings“ werden in der informationstechnischen<br />

bzw. informatischen Grundbildung angeeignet.<br />

Das Suchen von algorithmischen Lösungen für Probleme und die Formulierung<br />

der Lösungen als Programm, Kenntnisse zu genutzten Programmiersprachen<br />

und Programmiermethoden stehen meist im Mittelpunkt<br />

des Informatikunterrichts der gymnasialen Oberstufe.<br />

Technische Informatik:<br />

In der technischen Informatik befasst man sich mit dem funktionellen<br />

Aufbau der Hardware des Computers (Speicher, Zentraleinheit<br />

usw.) und den zugehörigen Ein- und Ausgabegeräten, also dem<br />

logischen Entwurf von Rechentechnik, Geräten und Schaltungen.<br />

Dabei sind Kenntnisse zu technischen Grundlagen der Informatik<br />

(Nachrichtentechnik, Informationstheorie, Mikroelektronik, Sensortechnik,<br />

Optoelektronik, Bildschirmtechnik, Lichtleiter- und Satellitentechnik)<br />

unerlässlich.<br />

Technische Informatik in der Schule:<br />

Um den Computer effektiv nutzen zu können, sind Kenntnisse über<br />

Hardwarebestandteile und ihre Kenngrößen sowie Fertigkeiten im Umgang<br />

mit peripheren Geräten wie Tastatur, Maus usw. erforderlich. Auch<br />

die Arbeit im Netz spielt eine immer größere Rolle. Dies wird schon in der<br />

informatischen Grundbildung vermittelt.<br />

Da die informatische Grundbildung sehr oft an den Unterricht in Technik<br />

oder Arbeitslehre gebunden ist, wird manchmal auch auf Prozessautomatisierung<br />

und Schaltalgebra eingegangen, was neben der Rechnerarchitektur<br />

eigentlich höheren Klassenstufen vorbehalten ist.<br />

Angewandte Informatik:<br />

Die angewandte Informatik beschäftigt sich mit Anwendungen von<br />

Methoden der Kerninformatik in anderen Wissenschaften und Gesellschaftsbereichen.<br />

Sie untersucht Abläufe (z. B. in der Wirtschaft,<br />

bei der Herstellung von Büchern, in der Medizin usw.) auf ihre Automatisierbarkeit<br />

durch Computer, erstellt anwendungsbezogene<br />

Analysen und hilft bei der Entwicklung von Programmsystemen, die<br />

bestimmte Anwendungsfälle abdecken sollen. Es werden Kenntnisse<br />

über die jeweiligen Anwendungsgebiete vorausgesetzt bzw.<br />

es muss sehr eng mit den entsprechenden Fachleuten zusammengearbeitet<br />

werden.<br />

Angewandte Informatik in der Schule:<br />

Schon in der informatischen Grundbildung geht es hier vor allem um<br />

grundlegende Kompetenzen im Umgang mit Anwendungssystemen<br />

(Textverarbeitung, Tabellenkalkulation, Datenbanksysteme, ...) und mit<br />

dem Internet sowie um Auswirkungen der Datenverarbeitung auf die<br />

Gesellschaft (einschließlich der Datenschutzproblematik).


Übersicht zu grundlegenden Inhalten und Bereichen der Wissenschaft<br />

Informatik<br />

Informatik<br />

Wissenschaft, die sich mit der automatischen Informationsverarbeitung<br />

beschäftigt<br />

Theoretische Informatik<br />

Teilgebiet der Informatik, welches insbesondere die (meist mathematischen)<br />

Grundlagen der Information, ihrer Darstellung und<br />

effizienten Verarbeitung untersucht.<br />

Technische Informatik Praktische Informatik<br />

Teilgebiet der Informatik,<br />

welches sich mit der<br />

technischen Realisierung der<br />

Informationsverarbeitung<br />

beschäftigt<br />

Angewandte Informatik<br />

Teilgebiet der Informatik, das Problemfelder für den Einsatz<br />

von informationsverarbeitender Technik aufschließt und die<br />

entsprechenden Anwendungsprogramme bereitstellt<br />

Gesellschaft<br />

Teilgebiet der Informatik,<br />

welches die Mittel zur Auswertung<br />

von Informationsdarstellungen<br />

bereitstellt<br />

(Formalisierung des Problems,<br />

Programmierung)<br />

Die Informatik beeinflusst den sozialen und kulturellen<br />

Charakter einer Gesellschaft und ihre Produktion stark.<br />

Umgekehrt bestimmt die Gesellschaft, womit sich Informatik<br />

vorrangig befasst.<br />

Die Informatik als junge Wissenschaft 11


12 Grundbegriffe<br />

b auch S. 510 ff.<br />

Hinweis zu Problemen,<br />

die sich nicht<br />

algorithmisch lösen<br />

lassen (1.):<br />

Es gibt keinen<br />

Algorithmus, der<br />

entscheidet, ob ein<br />

beliebiges Problem<br />

algorithmisch lösbar<br />

ist oder nicht, d. h.,<br />

ob die Antwort<br />

auf eine gewisse<br />

Entscheidungsfrage<br />

„Ja“ oder „Nein“<br />

lauten wird. Für<br />

viele Problemklassen<br />

gelingt dies jedoch.<br />

1.1.2 Anwendungsbereiche der Informatik<br />

und gesellschaftliche Auswirkungen<br />

Bedeutung der Informatik<br />

Der Kernprozess der wissenschaftlich-technischen Revolution ist die (vor<br />

allem durch die Wissenschaft Informatik mitbestimmte) Umwälzung der<br />

informationsverarbeitenden Technik, die eng mit der Automatisierung<br />

verbunden ist. Dabei werden zunehmend geistige Tätigkeiten des Menschen<br />

„technisiert“, was eine Revolution in der Entwicklung der Produktivkräfte<br />

darstellt, die nur vergleichbar ist mit der massenhaften Übernahme<br />

körperlicher Arbeitsfunktionen des Menschen durch Maschinen<br />

während der industriellen Revolution im 19. Jahrhundert.<br />

Durch die Übertragung automatisierbarer geistiger Tätigkeiten auf Maschinen<br />

werden die geistigen Kräfte des Menschen vervielfacht, wird<br />

Zeit gewonnen für schöpferisches Denken und Handeln. Außerdem<br />

erleichtert, beschleunigt und verbilligt die informationsverarbeitende<br />

Technik den Zugang zum vorhandenen Wissen der Menschheit.<br />

Grenzen der Anwendung von Informatik und informationsverarbeitender<br />

Technik<br />

1. Es gibt zahlreiche Probleme – und dies ist mit Mitteln der theoretischen<br />

Informatik exakt nachgewiesen –, zu deren Lösung sich keine Algorithmen<br />

konstruieren lassen und die damit mit dem Computer nicht lösbar<br />

sind.<br />

2. Es gibt zahlreiche Probleme, deren Lösungsaufwand (Speicherbedarf<br />

und Bearbeitungszeit) mit der Problemgröße exponentiell oder sogar<br />

noch stärker ansteigt (z. B. beim systematischen Probieren aller infrage<br />

kommenden Varianten), die also praktisch nicht exakt lösbar sind. Oft<br />

sind diese Probleme aus dem Bereich der Ökonomie.<br />

3. Informationsverarbeitende Technik ist Hilfsmittel zum Lösen von<br />

Problemen, zur Unterstützung von Entscheidungen des Menschen.<br />

Zur Entscheidungsfindung – auch sozialer, moralischer, ethischer Art<br />

– kann der Computer beitragen. Aber die Entscheidungen selbst trifft<br />

der Mensch und führt sie aus bzw. lässt sie mithilfe von Computern<br />

ausführen. Nur der Mensch begreift sich als soziales Wesen und kann<br />

im Interesse der Gesellschaft Entscheidungen treffen. Dies schließt<br />

ein, dass er entscheidet, wann informationsverarbeitende Technik<br />

eingesetzt wird und wann nicht. Dies schließt aber auch ein, dass es<br />

ethische, soziale, ökologische und rechtliche Grenzen der Computernutzung<br />

geben kann, die diskutiert und immer wieder neu festgelegt<br />

werden müssen.<br />

In den letzten Jahrzehnten erkannte man beispielsweise zunehmend<br />

die Gefahren, die sich aus der schnellen Verfügbarkeit personenbezogener<br />

Daten und deren Konzentration in vernetzbaren Datenbanken<br />

ergeben. Das hat in vielen Ländern zur Ausarbeitung und Annahme<br />

von Datenschutzgesetzen geführt. Auch schließt der weltweite Informationsaustausch<br />

im Internet die Möglichkeit ein, ethisch und moralisch<br />

nicht vertretbare Bilder und Texte rassistischen oder pornografischen<br />

Inhalts zu verbreiten.


Gesellschaftliche Auswirkungen<br />

Die Auswirkungen der Informatik und des Einsatzes von Computertechnik<br />

umfassen im Wesentlichen zwei Bereiche: Beruf und Alltag.<br />

Ähnlich wie bei der Entwicklung mechanischer Maschinen während der<br />

industriellen Revolution im 19. Jahrhundert wird auch der Computer als<br />

Instrument der Rationalisierung eingesetzt, woraus sich für die Betroffenen<br />

– durch den Wandel von Arbeitsplätzen und beruflichen Anforderungen<br />

– oft schwerwiegende soziale Folgen ergeben.<br />

Andererseits erhöht sich der Lebensstandard durch den Einsatz von Computern<br />

(Kaufen durch Kassensysteme, vielfältige Informationsangebote<br />

durch neue Medien, Vereinfachung der Hausarbeit durch in die Haushaltstechnik<br />

integrierte Computer, Zahlungsverkehr, neue Freizeitmöglichkeiten<br />

usw.).<br />

Die letzten Beispiele zeigen aber auch, dass die Informatiksysteme für<br />

die meisten Menschen undurchschaubar geworden sind, dass die Chancen<br />

und Risiken dieses Einsatzes schwer abschätzbar sind.<br />

Informatiksysteme<br />

Der Begriff Informatiksystem beschreibt die Einheit von Hard- und<br />

Software sowie Netzen einschließlich aller durch sie angestrebten<br />

und verursachten Gestaltungs- und Qualifizierungsprozesse bezüglich<br />

Arbeit und Organisation.<br />

Dieser Begriff (nach der Gesellschaft für Informatik e. V.) beinhaltet insbesondere<br />

folgende Komponenten:<br />

• automatische Verarbeitung mit dem Computer (Einheit von Hard- und<br />

Software),<br />

• Vernetzung (auch im Sinne der räumlichen Verteilung der Informationsverarbeitung,<br />

einschließlich der Ausgabe von Daten über Bildschirm<br />

und Drucker),<br />

• Interaktion mit dem Nutzer (mit der Software selbst, aber auch durch<br />

Dateneingabe oder Interpretation der Datenausgabe).<br />

Alle Anwendungsprogramme und Programmierumgebungen lassen sich<br />

mit dem Begriff „Informatiksystem“ fassen, wenn man sie im Verbund<br />

mit dem Computer betrachtet, auf dem sie installiert sind.<br />

Außerdem werden durch diesen Begriff der Computer selbst (mit seinem<br />

Betriebssystem) oder aber auch „eingebettete“ Systeme beschrieben<br />

– beispielsweise Mobiltelefone oder elektronische Steuerungsanlagen<br />

im Auto.<br />

Ausgewählte Anwendungsgebiete informationsverarbeitender Technik<br />

Durch den Einsatz neuer Informatiksysteme haben sich in den letzten<br />

Jahren ganze Branchen strukturell gewandelt, was gleich im ersten Beispiel<br />

an der Produktion eines Buches gezeigt werden soll.<br />

Die Informatik als junge Wissenschaft 13


14 Grundbegriffe<br />

CAD<br />

Konstruktionszeichnung<br />

CAP<br />

Steuerungsprogramm<br />

CAM<br />

fertiges<br />

Produkt<br />

CAQ<br />

computerintegrierte<br />

Fertigung (CIM)<br />

Verlagswesen, Buch- und Zeitungsdruck:<br />

– Die Autoren liefern ihr Manuskript meist schon als Textdateien an<br />

den Verlag.<br />

– Der Redakteur oder Lektor redigiert das Manuskript direkt am<br />

Computer und reicht es an die Layouter weiter.<br />

– Die Layouter erstellen daraus mittels eines Desktop-Publishing-<br />

Programms durch Einfügen von Bildern und Grafiken und durch<br />

Gestaltung der Seiten eine veröffentlichungsreife Druckschrift am<br />

Bildschirm.<br />

Sie drucken die gestalteten Seiten in eine (Druck-)Datei und reichen<br />

diese Datei an das Satzstudio weiter.<br />

– Im Satzstudio werden mittels der Druckdatei Filme hergestellt.<br />

Beispielsweise werden für die Herstellung eines mehrfarbigen<br />

Buches im Allgemeinen 4 Filme (die die Farben Cyan,<br />

Magenta, Gelb und Schwarz repräsentieren) benötigt. Meist ist<br />

heute das Satzstudio schon in den Verlag integriert und selbstverständlich<br />

arbeiten die genannten Bereiche eng zusammen.<br />

Der Beruf des Setzers, der früher aus beweglichen Lettern eine<br />

Druckvorlage herstellte, ist mittlerweile gänzlich verschwunden.<br />

– Die Filme werden an eine Druckerei weitergeleitet. Hier werden<br />

sie auf eine Druckmaschine montiert. Der Druck kann beginnen.<br />

– Viele Druckereien bieten schon an, den Weg über das Satzstudio<br />

zu umgehen und gleich die Druckdateien an die Druckerei zu liefern.<br />

Filme werden nicht mehr hergestellt, sondern es erfolgt ein<br />

sogenannter Digitaldruck direkt aus den Druckdateien heraus.<br />

Damit wird es auch möglich, kleine, inhaltlich variable, bestimmten<br />

Kundenwünschen entsprechende Auflagen auf Anforderung des<br />

Verlages zu drucken (book on demand).<br />

Produktion:<br />

Häufig ist der gesamte Produktionsprozess für bestimmte Produkte<br />

voll automatisiert.<br />

Computerintegrierte Fertigung (CIM, computer-integrated manufacturing):<br />

– Das Produkt (z. B. ein Geräteteil, ein Werkzeug oder ein Mikroprozessor)<br />

wird schon mittels CAD-Systemen entworfen. CAD steht<br />

für computer-aided design (computerunterstütztes Entwerfen).<br />

Der Konstrukteur verwendet dabei Tastatur, Maus und Lichtgriffel,<br />

Grafik- und Rechenprogramme. Als Zeichenbrett dienen ihm<br />

Bildschirm und Plotter.<br />

– Oft werden die Zeichnungen durch ein Computerprogramm sofort<br />

in Steuerungsinformationen für Werkzeugmaschinen umgesetzt.<br />

Man nennt dies auch computerunterstützte Arbeitsvorbereitung<br />

(CAP, computer-aided production planning).<br />

– Durch Prozessrechner gesteuerte Werkzeugmaschinen (CNC-Maschinen,<br />

computerized numerical control) fertigen das Produkt.<br />

Diese Fertigung nennt man CAM (computer-aided manufacturing,<br />

computerunterstützte Fertigung).<br />

– Selbst die Qualitätskontrolle des fertigen Produkts, z. B. der Vergleich<br />

von Soll- und Istmaßen, wird durch Computer durchgeführt<br />

(CAQ, computer-aided quality control).


Handel:<br />

Nach der vorausgehenden Einführung von informationsverarbeitender<br />

Technik im Rechnungswesen und in der Lagerhaltung wurden<br />

in den 1980er-Jahren elektronische Erfassungssysteme direkt am Ort<br />

des Verkaufs – also an der Kasse – installiert. Diese verkaufsnahe<br />

Datenerfassung durch Kassensysteme führte nach der Einführung<br />

der Selbstbedienung zu einer „zweiten Revolution“ im Handel. Man<br />

nennt diese Systeme auch POS-Systeme.<br />

Auf den Waren sind Etiketten aufgeklebt, auf denen der sogenannte<br />

EAN-Code aufgedruckt ist. Der EAN-Code erlaubt eine international<br />

einheitliche Warencodierung durch den Hersteller. Selbst dieses<br />

Buch ist auf der Rückseite mit einem EAN-Code versehen, in dem<br />

das Herstellungsland und die ISBN-Nummer des Titels verschlüsselt<br />

wurden, woraus das Kassensystem des Buchhändlers den Verlag und<br />

den konkreten Titel erkennen kann.<br />

Der Kunde entnimmt die Ware dem Regal und bringt sie zur Kasse.<br />

Hier wird mit einem automatischen Lesegerät (Barcode-Leser, Strichcode-Leser)<br />

der EAN-Code erfasst und innerhalb kurzer Zeit vom<br />

Computer der betriebsinterne Preis der Ware abgerufen. Die Erstellung<br />

des Kassenbons erfolgt so sehr schnell.<br />

Das Kassensystem erledigt aber auch alle anderen routinemäßigen<br />

Vorgänge eines Handelsbetriebes wie Bestandsveränderungen und<br />

das Auslösen von Bestellungen. Auch können Preise je nach Marktlage<br />

relativ schnell geändert werden, wobei der Kunde sicher sein<br />

kann, dass der aufgedruckte Preis mit dem durch den EAN-Code individuell<br />

festgelegten Preis der Ware übereinstimmt. Ansonsten kann<br />

er reklamieren: Es gilt immer der für den Kunden ersichtliche Preis.<br />

Freizeit:<br />

• Das Fernsehgerät wächst mittlerweile mit Telefon und Computer<br />

zu einem individuellen Wünschen gerecht werdenden Informations-,<br />

Auskunfts- und Kommunikationssystem zusammen (Bildschirmtext,<br />

digitales Fernsehen).<br />

• Computerspiele sind eine beliebte Freizeitbeschäftigung.<br />

• Preiswerte elektronische Tasteninstrumente (Keyboards) erzeugen<br />

die unterschiedlichsten Klangbilder und Rhythmen. Melodien können<br />

gespeichert und am Computer bearbeitet werden.<br />

Komponieren wird zur kreativen Beschäftigung für jeden.<br />

Bank- und Versicherungswesen:<br />

• Der Einsatz von Tabellenkalkulationsprogrammen hat schon die<br />

Kundenberatung vereinfacht. Geldanlagen und Versicherungen<br />

können den Kundenwünschen entsprechend kalkuliert und ausgewählt<br />

werden.<br />

• Der gesamte Zahlungsverkehr wird mittlerweile elektronisch abgewickelt:<br />

Lohn- oder Gehaltsüberweisungen; Abbuchung fester<br />

monatlicher Zahlungen (Miete, Energiekosten, Telefongebühren<br />

usw.) auf Kundenwunsch; Geld abheben am Automaten; bargeldloser<br />

Einkauf mit Chipkarte.<br />

• Das Führen der Bankgeschäfte von zu Hause aus (Homebanking)<br />

ist über das Internet möglich.<br />

Die Informatik als junge Wissenschaft 15<br />

POS:<br />

Abkürzung für<br />

„point of sale“ („Ort<br />

des Verkaufs“)<br />

EAN-Code:<br />

Abkürzung für<br />

„Europäische Artikel-<br />

Nummerierung“


Die Ausbildung auf dem Gebiet der<br />

Informatik erfolgte bis 1997 ausschließlich<br />

an Hoch- und Fachschulen auf solchen<br />

Gebieten wie Allgemeine Informatik, Wirtschaftsinformatik<br />

oder Technische Informatik – meist mit<br />

einem akademischen Abschluss.<br />

Viele Informatikberufe setzen heute keinen Hochschulabschluss<br />

mehr voraus, so auch der folgende.<br />

Systeminformatiker/Systeminformatikerin<br />

Arbeitsgebiete:<br />

– Entwicklung, Implementierung und Instandhaltung<br />

industrieller Informatiksysteme<br />

– Typische Einsatzfelder sind Automatisierungssysteme,<br />

Signal- und Sicherheitssysteme, Informations-<br />

und Kommunikationssysteme, funktechnische<br />

Systeme, eingebettete Systeme.<br />

Berufstätigkeiten:<br />

– Unterstützung bei der Entwicklung und Realisierung<br />

von Lösungen für Kunden, der Analyse geforderter<br />

Funktionalitäten, der Konzipierung von<br />

Systemen und Softwarelösungen, der Auswahl<br />

von Datenübertragungsmedien und von Hard-<br />

und Softwarekomponenten<br />

– Montage und Prüfung von Hardwarekomponenten<br />

– Installation und Konfiguration von Betriebssystemen<br />

und Netzwerken<br />

– Erstellen von Bedienoberflächen und Benutzerdialogen,<br />

Implementierung von Sicherheitsmechanismen<br />

– Erstellung und Anpassung von Softwarekomponenten,<br />

Programmierung von Schnittstellen<br />

– Integration von Hard- und Softwarekomponenten,<br />

Analyse von Problemen beim Zusammenführen<br />

von solchen Komponenten und Entwicklung<br />

von Lösungsvorschlägen<br />

– Erfassung und Auswertung von Messwerten<br />

– Test von Komponenten im System unter unterschiedlichen<br />

technischen Umfeldbedingungen,<br />

Integration von Systemen in vorhandene Gesamtsysteme<br />

– Support bei Störungen, Analyse von Fehlerursachen<br />

in den Systemen, Analyse von Fehlerursachen<br />

zur Qualitätssicherung,<br />

– Einsatz von Testsoftware und Diagnosesystemen,<br />

Prüfung der Signale an Schnittstellen, Durchführung<br />

netzwerkspezifischer Prüfungen; Beseitigung<br />

von Fehlern durch Softwareanpassung oder<br />

durch Tausch von Komponenten oder Baugruppen<br />

Berufsbilder<br />

Den Ausbildungsberuf des Systeminformatikers<br />

gibt es seit dem 1. August<br />

2003. Die Ausbildungsdauer beträgt 3 Jahre<br />

und 6 Monate.<br />

Typische weitere Berufe:<br />

• Softwareentwickler konzipieren neuer Softwaresysteme.<br />

• Programmierer sind für die praktische Umsetzung<br />

theoretisch entwickelter Systeme verantwortlich.<br />

• Systemintegratoren planen, installieren, administrieren,<br />

konfigurieren und pflegen komplexe Informatiksysteme<br />

und üben Beratertätigkeiten aus<br />

(Consulting).<br />

IuK-Berufe (IT-Berufe)<br />

Um den wirtschaftlichen Strukturwandel zu unterstützen,<br />

um ein Ausbildungsplatzangebot mit<br />

interessanten beruflichen Entwicklungschancen<br />

zu sichern und um die Ausbildung anwendungsbezogener<br />

zu gestalten, bieten die Industrie- und<br />

Handelskammern (IHKn) Deutschlands seit dem 1.<br />

August 1997 an, wichtige Informations- und Kommunikationstechnische<br />

Berufe (IuK-Berufe, neuerdings<br />

meist IT-Berufe genannt) direkt in Unternehmen<br />

ausbilden zu lassen.<br />

Für alle Berufe gibt es gemeinsame Kernqualifikationen,<br />

die durch spezielle Fachqualifikationen bei<br />

den einzelnen Berufen ergänzt werden.<br />

Kernqualifikationen sind:<br />

– Wissen über den Ausbildungsbetrieb<br />

– Betriebswirtschaft und Arbeitsorganisation<br />

– IuK-Produkte<br />

– Exemplarische Programmierung<br />

– Konzeption von IuK-Systemen<br />

– Inbetriebnahme und Administration (Verwaltung)<br />

von IuK-Systemen<br />

– Bedienung von IuK-Systemen


IuK-Systemelektroniker/in<br />

Fachqualifikation:<br />

– IuK-Systemtechnik<br />

– Installieren und Inbetriebnahme von IuK-Systemen<br />

– Administration, Service und Support<br />

– Instandsetzung<br />

– Projektmanagement<br />

Berufstätigkeiten:<br />

– Planung und Installation von Informations- und<br />

Kommunikationssystemen und Netzwerken einschließlich<br />

deren Stromversorgung<br />

– Dienstleistungen und Unterstützung für interne<br />

und externe Kunden<br />

– Anpassung von Hardware und Software an Kundenwünsche<br />

– Störungsbeseitigung<br />

Fachinformatiker/in Anwendungsentwicklung<br />

Fachqualifikation:<br />

– Programmierung, Programmiermethoden, Programmierwerkzeuge<br />

(Tools)<br />

– Applikationsmanagement<br />

– Datenbanken<br />

– Produktbereitstellung<br />

– Anwendungs- und Kommunikationsdesign<br />

– Projektmanagement<br />

– Anwendungen in den Bereichen kaufmännische,<br />

technische oder multimediale Systeme<br />

Berufstätigkeiten:<br />

– Erarbeitung von Softwarelösungen für Kunden<br />

– Realisierung der Softwarelösungen<br />

– Software-Engineering (Programmierung)<br />

– Nutzung moderner Softwareentwicklungstools<br />

(-werkzeuge)<br />

– Nutzung der aktuellen IuK-Technologien bis hin<br />

zu Multimedia-Anwendungen<br />

Fachinformatiker/in<br />

(Richtung Systemintegration)<br />

Fachqualifikation:<br />

– Planung der IuK-Systeme<br />

– Installation, Operating, Service<br />

– Schulung<br />

– Projektmanagement<br />

– Fachaufgaben einzelner Gebiete wie z. B. Rechenzentren,<br />

Netzwerke, Client/Server, Mobilkommunikation<br />

Berufstätigkeiten:<br />

– Planung, Konfiguration und Installation komplexer<br />

vernetzter Systeme bei Kunden<br />

– Arbeit mit modernen Experten- und Diagnosesystemen<br />

– Beratung, Betreuung und Schulung von Kunden<br />

bei der Einführung neuer Systeme<br />

IuK-System-Kaufmann/frau<br />

Fachqualifikation:<br />

– Marketing und Vertrieb<br />

– Analyse kundenspezifischer IuK-Systeme<br />

– Konzeption kundenspezifischer IuK-Systeme<br />

– Angebote, Preise, Verträge<br />

– Fakturierung, Einkauf<br />

– Projektmanagement<br />

– Realisierung kundenspezifischer IuK-Systeme<br />

– Service und Support<br />

Berufstätigkeiten:<br />

– Information und Beratung von Kunden bei der<br />

Konzeption kompletter Lösungen der IuK-Technologie<br />

– Projektleitung in kaufmännischer, technischer<br />

und organisatorischer Hinsicht bei der Einführung<br />

oder Erweiterung einer IuK-Infrastruktur<br />

– Beratung der Kunden von der ersten Konzeption<br />

bis zur Übergabe des IuK-Produkts<br />

– Erstellung von Angeboten und Finanzierungslösungen<br />

für IuK-Technologien<br />

Informatikkaufmann/frau<br />

Fachqualifikation:<br />

– betrieblicher Leitungsprozess, Aufbau- und Ablauforganisation<br />

– Rechnungswesen<br />

– Controlling<br />

– IuK-Organisation und -Projektmanagement<br />

– Planung und Beschaffung von Informatiksystemen<br />

– Systembereitstellung und -gestaltung<br />

– Anwenderberatung und Support (Unterstützung)<br />

Berufstätigkeiten:<br />

– Analyse von Geschäftsprozessen der jeweiligen<br />

Branche mit Blick auf die Einsatzmöglichkeiten<br />

der IuK-Techniken<br />

– Vermittlung zwischen den Anforderungen der<br />

Fachabteilungen auf der einen und IuK-Realisierung<br />

auf der anderen Seite<br />

– Beratung von Fachabteilungen in Fragen der Einsetzbarkeit<br />

von IuK-Systemen<br />

– Einführung von Standardanwendungen<br />

– Mitarbeit in Entwicklungsprojekten<br />

– Koordination und Administration von IuK-Systemen


1 Grundbegriffe<br />

Philosophisch<br />

betrachtet ist jede<br />

Struktur, die als<br />

Struktur eines<br />

Systems Funktionen<br />

gegenüber den Elementen<br />

des Systems<br />

und umfassenderen<br />

Systemen erfüllt,<br />

Information (Beispiele:<br />

Kristallgitter,<br />

Samenzelle, Buch).<br />

Man kann also jede<br />

Wechselwirkung als<br />

Informationsverarbeitungauffassen.<br />

Die mit jeder<br />

Struktur gegebene<br />

Information dient<br />

auch dem Menschen<br />

zur Erkenntnisgewinnung<br />

über seine<br />

Umwelt.<br />

1.2 Daten, Datentypen und Datenstrukturen<br />

1.2.1 Informationen und Daten<br />

Allgemeiner Informationsbegriff<br />

Information (umgangssprachlich: Unterrichtung, Mitteilung, Auskunft)<br />

ist eine allgemeine Eigenschaft der uns umgebenden Welt.<br />

Informationen werden sowohl in der belebten und unbelebten Natur<br />

als auch in der menschlichen Gesellschaft aufgenommen, gespeichert,<br />

verarbeitet und weitergegeben.<br />

Kristallgitter (Informationsverarbeitung in der unbelebten Natur):<br />

Gesteine bestehen aus verschiedenen<br />

Mineralen, das fast überall<br />

zu findende Granit z. B. aus<br />

Quarz (SiO 2 ), Feldspat, Plagioklas<br />

und anderen chemischen Verbindungen.<br />

Die meisten Minerale kristallisieren<br />

in immer gleicher Form<br />

aus, die dann besonders schön zu<br />

erkennen ist, wenn ideale Kristallisationsbedingungen<br />

vorhanden waren. Die dargestellten Säulen<br />

mit zugespitzten Enden sind Bergkristall, eine Ausbildungsweise<br />

von Quarz. Die Atomanordnung von Quarz unterliegt bestimmten<br />

Gesetzmäßigkeiten. Bei der Anlagerung von weiteren Silizium- oder<br />

Sauerstoffatomen an den Kristall werden diese Informationen weitergegeben,<br />

die Struktur des Minerals entwickelt sich.<br />

DNS (Informationsverarbeitung in der belebten Natur):<br />

Wie entsteht aus einer Rose wieder<br />

eine Rose, aus einem Pferd<br />

wieder ein Pferd?<br />

Jedes Lebewesen ist aus einzelnen<br />

Zellen mit Zellkernen aufgebaut.<br />

Die genetischen Informationen,<br />

die die Entwicklung des Lebewesens<br />

steuern, sind in jedem Zellkern<br />

in der DNS (Desoxyribonukleinsäure)<br />

gespeichert. Ein Modell<br />

der DNS ist hier abgebildet. Die<br />

Anordnung (der Code) der organischen<br />

Basen Adenin (A), Thymin<br />

(T), Guanin (G) und Cytosin (C) in<br />

einzelnen Abschnitten der DNS (Gene) entscheiden über die Merkmale<br />

des Lebewesens.<br />

Die DNS kann sich in zwei Einzelstränge aufspalten, die Stränge werden<br />

mit komplementären Basen (z. B. A zu T) ergänzt. Es entstehen<br />

zwei identische „Tochterstränge“, die Information kann (bei Zellteilung)<br />

weitergegeben werden.


Buch (Informationsverarbeitung in der menschlichen Gesellschaft):<br />

Der Mensch gibt Informationen insbesondere über die Sprache weiter.<br />

Mit Erfindung der Schrift konnten Informationen auf Tontafeln,<br />

Pergament- oder Lederrollen und in Büchern festgehalten werden.<br />

Durch die Erfindung des Buchdrucks mit beweglichen Lettern aus<br />

Metall durch Johann guTenberg – das erste 1455 gedruckte Buch war<br />

eine Bibel – wurde die massenhafte Informationsverbreitung möglich.<br />

Davor wurden Bücher durch Mönche in Handarbeit kopiert.<br />

Anhand der Beispiele erkennt man Folgendes:<br />

Eigenschaften von Information<br />

– Information ist immer an einen stofflich(-energetischen) Träger<br />

gebunden. Kristallgitter (Atomgitter), DNS und Buch sind in den<br />

Beispielen die jeweiligen Informationsträger.<br />

– Information bewirkt etwas. Dabei sind 3 Fälle zu unterscheiden:<br />

• Information strukturiert ein System (Kristallgitter; Schaffung<br />

von Hardware in der Technik; Entwicklung von der Eizelle bis<br />

zum Lebewesen, ...)<br />

• Information steuert das Verhalten eines Systems (Reizablauf im<br />

menschlichen Körper; Nachrichtenübertragung, ...)<br />

• Information steuert über ein System Information (Programme<br />

in einem Computer; biologische Programme in Form von Reflexen,<br />

Instinkten, Emotionen, ...)<br />

– Information lässt sich beliebig vervielfältigen (das Vorhandensein<br />

von Informationsträgern vorausgesetzt).<br />

Stoff (Materie, von engl. „matter“), Energie und Information sind die<br />

drei wichtigsten Grundbegriffe der Natur- und Ingenieurwissenschaften.<br />

Auch für die Informatik als Wissenschaft von der automatischen Verarbeitung<br />

von Informationen ist dieser Begriff von zentraler Bedeutung,<br />

obwohl er bisher kaum präzisiert worden ist, selbst obige philosophische<br />

Betrachtungen sind eine Theorie.<br />

Um den Begriff „Information“ für die Rechentechnik handhabbarer zu<br />

machen, ist es sinnvoll, den Begriff „Nachricht“ einzuführen.<br />

Nachrichten, Informationen, Daten<br />

Informationen werden mit Zeichen oder Signalen übertragen.<br />

Eine Zeichenkette ist eine Folge von Elementen (Buchstaben, Zahlen,<br />

Symbole) eines Alphabets.<br />

Ein Signal ist eine durch Messgeräte erfassbare physikalische Veränderung<br />

(ein Ton, ein elektrischer Impuls, ein Lichtblitz, ...). Signale<br />

dienen zur Darstellung von Zeichen.<br />

Eine Nachricht ist eine endliche Zeichenkette oder eine endliche<br />

Folge von Signalen, die von einem Sender (Quelle) über einen Kanal<br />

(der störanfällig sein kann) an einen Empfänger (Senke) übermittelt<br />

wird.<br />

Daten, Datentypen und Datenstrukturen 1


20 Grundbegriffe<br />

Interessant ist die<br />

Frage, wie man<br />

möglichst viel Information<br />

in möglichst<br />

kurzen Nachrichten<br />

übermitteln kann.<br />

Dieses Problem hat<br />

der amerikanische<br />

Mathematiker<br />

Claude Claude e. Shannon<br />

1948 in seiner<br />

Informationstheorie<br />

beschrieben und ein<br />

Maß für den mittlerenInformationsgehalt<br />

einer Nachricht<br />

definiert.<br />

Die Einheit lautet<br />

bit. Die Einheit<br />

bit wird hier klein<br />

geschrieben, im Unterschied<br />

zu Bit (als<br />

kleinste Einheit der<br />

Datendarstellung).<br />

Der Begriff Informationsgehalt<br />

ist in der<br />

Informatik dort von<br />

Interesse, wo Nachrichten<br />

komprimiert<br />

oder ver- und entschlüsselt<br />

werden.<br />

Bei der Informationsübertragung müssen meist feste Regeln eingehalten<br />

werden: Ein Satz in deutscher Sprache sollte z. B. syntaktisch korrekt sein;<br />

ein Brief sollte im Kopf die Adresse des Absenders enthalten usw.<br />

Die Nachricht besitzt für den Empfänger zunächst keine Bedeutung, erst<br />

durch ihre Verarbeitung, Interpretation oder Bewertung erhält die Nachricht<br />

einen Sinn.<br />

Die Bedeutung einer Nachricht für den Empfänger (die einen Sachverhalt<br />

ausdrückt, einem Zweck dient oder eine Aktion auslöst) wird<br />

umgangssprachlich als Information bezeichnet.<br />

Eine Nachricht wird also durch (menschliche) Interpretation oder durch<br />

die Art und Weise wie sie algorithmisch verarbeitet (entschlüsselt oder<br />

gespeichert) wird zur Information.<br />

Auf der Datenbasis einer medizinischen Untersuchung (Blutbild,<br />

EKG, ...) kann ein Arzt (oder auch ein Expertensystem, ein Programm,<br />

welches medizinische Daten auswerten kann) möglicherweise eine<br />

Diagnose für einen Patienten stellen, eine Person ohne medizinische<br />

Bildung nicht.<br />

Die Informatik beschäftigt sich ausschließlich mit Informationen, die so<br />

dargestellt sind, dass sie maschinell erfasst, aufbereitet, ausgewertet,<br />

übertragen, gespeichert und zur Nutzung weitergegeben werden können.<br />

Automatisch bzw. elektronisch verarbeitbare Informationen fasst<br />

man mit dem Begriff Daten (Einzahl: Datum).<br />

Daten umfassen eine Zeichenfolge (meist bezeichnet als „Nachricht“)<br />

zusammen mit ihrer Bedeutung für den Empfänger. Die Zeichenfolge<br />

muss eindeutig über einem vorgegebenen Zeichenvorrat<br />

nach festgelegten Regeln aufgebaut sein. Für die Bearbeitung mit<br />

dem Computer werden die einzelnen Zeichen binär codiert, d. h.<br />

mittels zweier Ziffern verschlüsselt, die zwei Zustände (z. B. Strom<br />

fließt / fließt nicht) repräsentieren.<br />

Dualsystem<br />

Der Computer kann nur mit zwei möglichen Zuständen „rechnen“<br />

– Strom fließt nicht / Strom fließt; Relais nicht angezogen / Relais angezogen;<br />

Schalter geöffnet / Schalter geschlossen usw. –, wofür man<br />

die Ziffern 0/1 (seltener 0/L oder in der Technik L für low / H für high)<br />

verwendet. Durch Annahme dieser Zustände in technischen Schaltungen<br />

können Rechenoperationen realisiert werden.<br />

Die kleinste Einheit der Datendarstellung, die zwei mögliche Werte<br />

(0/1) annehmen kann, nennt man Bit.


Mit einem Bit kann man 2 Zahlen zum Rechnen darstellen („Dualsystem“).<br />

Um mehr Zahlen darstellen zu können, schreibt man „Bitmuster“<br />

nieder, wobei die Position der einzelnen Ziffern – wie im Dezimalsystem<br />

– von entscheidender Bedeutung ist.<br />

10011 = 1 · 2 4 + 0 · 2 3 + 0 · 2 2 + 1 · 2 1 + 1 · 2 0<br />

= 1 · 16 + 0 · 8 + 0 · 4 + 1 · 2 + 1 · 1 = 16 + 2 + 1 = 19<br />

Also: 10011 im Dualsystem dargestellt bedeutet die Zahl 19 im Dezimalsystem,<br />

kurz 10011 [2] = 19 [10] .<br />

1111 [2] = 1 · 2 3 + 1 · 2 2 + 1 · 2 1 + 1 · 2 0 = 2 3 + 2 2 + 2 1 + 2 0<br />

= 8 + 4 + 2 + 1 = 15<br />

10000 [2] = 1 · 2 4 + 0 · 2 3 + 0 · 2 2 + 0 · 2 1 + 0 · 2 0 = 2 4 = 16<br />

6 [10] = 4 + 2 = 1 · 2 2 + 1 · 2 1 + 0 · 2 0 = 110 [2]<br />

31 [10] = 16 + 8 + 4 + 2 + 1 = 1 · 2 4 + 1 · 2 3 + 1 · 2 2 + 1 · 2 1 + 1 · 2 0<br />

= 11111 [2]<br />

32 [10] = 1 · 2 5 + 0 · 2 4 + 0 · 2 3 + 0 · 2 2 + 0 · 2 1 + 0 · 2 0 = 100000 [2]<br />

Zusammenfassend sei folgende Übersicht zum Dualsystem gegeben:<br />

Dualsystem<br />

Grundziffern: 0, 1<br />

Stellenwert: Potenzen der Zahl 2<br />

Darstellungsform: b m b m–1 ...b 0 ,b –1 b –2 ...b –n<br />

(b steht für die Grundziffern, m und n sind<br />

natürliche Zahlen)<br />

Im Dualsystem kann man Addieren und Multiplizieren wie im Dezimalsystem.<br />

Grundaufgaben der Addition sind:<br />

0 + 0 = 0, 0 + 1 = 1 + 0 = 1, 1 + 1 = 10.<br />

Das Rechnen ist einfacher, man muss sich für die Multiplikation beispielsweise<br />

nur 4 Grundaufgaben merken (statt 100 wie im Dezimalsystem),<br />

die Zahlen werden aber länger.<br />

Zum Rechnen mit dem Computer müsste man nur die Ziffern 0 bis 9 des<br />

Dezimalsystems sowie einige Operationszeichen wie „+“ oder „–“ als<br />

Bitmuster darstellen. Aber man will mit dem Computer auch schreiben.<br />

Insbesondere benötigt man dazu Buchstaben (groß/klein ≈ 60 Zeichen),<br />

(Ziffern = 10 Zeichen), Sonderzeichen (Operations-, Relations-, Satz-,<br />

Steuerzeichen ≈ 40 Zeichen; auf der Tastatur erkennbar), Grafikzeichen<br />

(‡, —, …) und Schriftzeichen aus anderen Sprachen (ë, É, …)<br />

Man kommt mit 256 = 28 Bitmustern aus. Die Bitmusterreihen haben die<br />

Länge 8.<br />

Die Zusammenfassung von 8 Bit zu einem Zeichen nennt man Byte.<br />

Dies ist die kleinste vom Computer akzeptierte Dateneinheit.<br />

Mit einem Byte können 28 = 256 verschiedene Zeichen dargestellt<br />

werden.<br />

Daten, Datentypen und Datenstrukturen 21<br />

Oft spricht man im<br />

Zusammenhang mit<br />

dem Dualsystem von<br />

Binärcodierung.<br />

Binärcodierung<br />

heißt aber nur, dass<br />

zwei Zeichen zur<br />

Verschlüsselung genutzt<br />

werden, über<br />

deren Position in<br />

einer Zeichen- oder<br />

Signalkette wird<br />

nichts ausgesagt. Im<br />

Dualsystem werden<br />

ebenfalls zwei Zeichen<br />

zur Codierung<br />

genutzt, entscheidend<br />

ist aber hier<br />

deren Position, deren<br />

Stellung in einer<br />

Zeichenkette.


22 Grundbegriffe<br />

K steht für „Kilo“,<br />

M für „Mega“,<br />

G für „Giga“ und<br />

T für „Tera“.<br />

„Mega“ ist hier nicht<br />

exakt 1 Million. Aber<br />

die Abweichungen<br />

sind so gering, dass<br />

man überschlagsmäßig<br />

damit arbeiten<br />

kann.<br />

Byte ist auch die Maßeinheit für die Kapazität von Speichermedien<br />

wie Disketten oder Festplatten.<br />

1 KByte (Abk. KB) = 210 Byte = 1 024 Byte (Zeichen)<br />

≈ 1 000 Byte<br />

1 MByte (Abk. MB) = 220 Byte = 1 048 576 Byte (Zeichen)<br />

≈ 1 Million Byte<br />

1 GByte (Abk. GB) = 230 Byte = 1 073 741 824 Byte (Zeichen)<br />

≈ 1 Milliarde Byte<br />

1 TByte (Abk. TB) = 240 Byte = 1 099 511 627 776 Byte (Zeichen)<br />

≈ 1 Billion Byte<br />

Mit Word bezeichnet man eine Bitfolge der Länge 16. Hiermit können<br />

16-stellige Dualzahlen codiert werden, nämlich die Zahlen von<br />

0 [10] = 0000000000000000 [2] bis<br />

65535 [10] = 1111111111111111 [2] .<br />

Hexadezimalsystem<br />

Die Bitmuster sind nicht sonderlich gedächtnisfreundlich und nehmen außerdem<br />

relativ viel Platz in Anspruch. Deshalb werden die Bytes (Zeichen,<br />

Bitmuster der Länge 8) oft durch eine Kurzschreibweise angegeben, die<br />

auf einem anderen Positionssystem, dem Hexadezimalsystem basiert.<br />

Hexadezimalsystem<br />

Grundziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F<br />

Stellenwert: Potenzen der Zahl 16<br />

Darstellungsform: h m h m–1 ...h 0 ,h –1 h –2 ...h –n<br />

(h steht für die Grundziffern, m und n sind<br />

natürliche Zahlen)<br />

53E [16] = 5 · 16 2 + 3 · 16 1 + 14 · 16 0<br />

= 5 · 256 + 3 · 16 + 14 · 1<br />

= 1280 + 48 + 14<br />

= 1342 [10]<br />

Also: 53E im Hexadezimalsystem dargestellt bedeutet die Zahl 1342<br />

im Dezimalsystem, kurz 53E [16] = 1342 [10] .<br />

Ein Byte wird in zwei Tetraden (Halbbytes) zu je 4 Bits unterteilt. Diese<br />

Tetraden können wiederum jeweils durch genau eine Hexadezimalziffer<br />

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) codiert werden, was die Umwandlung<br />

von einem Positionssystem in das andere vereinfacht.<br />

26 [10] = 0001 1010 [2] = 1A [16]<br />

98 [10] = 0110 0010 [2] = 62 [16]<br />

129 [10] = 1000 0001 [2] = 81 [16]


Im Folgenden wird ein (unvollständiger) Überblick über die Dezimalzahlen<br />

(dez), Dualzahlen (Bitmuster, b) und Hexadezimalzahlen (HEX-<br />

Code, h) von 0 bis 255 gegeben:<br />

dez b h dez b h dez b h<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

13<br />

14<br />

15<br />

0000 0000<br />

0000 0001<br />

0000 0010<br />

0000 0011<br />

0000 0100<br />

0000 0101<br />

0000 0110<br />

0000 0111<br />

0000 1000<br />

0000 1001<br />

0000 1010<br />

0000 1011<br />

0000 1100<br />

0000 1101<br />

0000 1110<br />

0000 1111<br />

ASCII-Zeichensatz<br />

00<br />

01<br />

02<br />

03<br />

04<br />

05<br />

06<br />

07<br />

08<br />

09<br />

0A<br />

0B<br />

0C<br />

0D<br />

0E<br />

0F<br />

16<br />

17<br />

18<br />

19<br />

20<br />

21<br />

22<br />

23<br />

24<br />

25<br />

26<br />

27<br />

28<br />

29<br />

30<br />

31<br />

0001 0000<br />

0001 0001<br />

0001 0010<br />

0001 0011<br />

0001 0100<br />

0001 0101<br />

0001 0110<br />

0001 0111<br />

0001 1000<br />

0001 1001<br />

0001 1010<br />

0001 1011<br />

0001 1100<br />

0001 1101<br />

0001 1110<br />

0001 1111<br />

10<br />

11<br />

12<br />

13<br />

14<br />

15<br />

16<br />

17<br />

18<br />

19<br />

1A<br />

1B<br />

1C<br />

1D<br />

1E<br />

1F<br />

32<br />

33<br />

34<br />

55<br />

56<br />

99<br />

100<br />

101<br />

126<br />

127<br />

128<br />

251<br />

252<br />

253<br />

254<br />

255<br />

Daten, Datentypen und Datenstrukturen 23<br />

0010 0000<br />

0010 0001<br />

0010 0010<br />

0011 0111<br />

0011 1000<br />

0110 0011<br />

0110 0100<br />

0110 0101<br />

0111 1110<br />

0111 1111<br />

1000 0000<br />

1111 1011<br />

1111 1100<br />

1111 1101<br />

1111 1110<br />

1111 1111<br />

20<br />

21<br />

22<br />

37<br />

38<br />

63<br />

64<br />

65<br />

7E<br />

7F<br />

80<br />

FB<br />

FC<br />

FD<br />

FE<br />

FF<br />

Mit einem Byte sind also genau 256 Zeichen darstellbar. Zur Zuordnung<br />

der 256 Bitmuster (Bytes) zu jeweils genau einem Zeichen nutzt man<br />

heute meist den amerikanischen Standard-Code für den Informationsaustausch,<br />

den ASCII.<br />

Dem Byte 01000001 entspricht der Großbuchstabe A,<br />

dem Byte 01000011 entspricht der Großbuchstabe C.<br />

dem Byte 01100001 entspricht der Kleinbuchstabe a,<br />

dem Byte 01100011 entspricht der Kleinbuchstabe c,<br />

dem Byte 00100000 entspricht das Leerzeichen,<br />

dem Byte 00111110 entspricht die Tilde (~).<br />

Ursprünglich war der ASCII-Zeichensatz ein 7-Bit-Code, es konnten also<br />

nur 128 Zeichen dargestellt werden, das achte Bit diente als Prüfbit. Dieser<br />

„einfache“ ASCII-Zeichensatz ist auf allen Computern, in allen Ländern<br />

und in allen Programmen gleich.<br />

Außer den ersten 32 und dem letzten Zeichen, die für Steuerungsaufgaben<br />

reserviert sind, sind alle Zeichen auf der Tastatur dargestellt.<br />

Darüber hinaus kann man die Zeichen unter MS-DOS, in Programmierumgebungen<br />

und in Anwendungsprogrammen folgendermaßen abrufen:<br />

Man gibt den Dezimalwert (dez) auf dem Ziffernblock der Tastatur bei<br />

gedrückter -Taste ein und erhält jeweils das ASCII-Zeichen (asc),<br />

welches in der folgenden Tabelle dargestellt ist:<br />

ASCII (gesprochen:<br />

aski) ist die Abkürzung<br />

für American<br />

Standard Code for<br />

Information Interchange.


24 Grundbegriffe<br />

dez asc dez asc dez asc dez asc dez asc dez asc<br />

32<br />

33<br />

34<br />

35<br />

36<br />

37<br />

38<br />

39<br />

40<br />

41<br />

42<br />

43<br />

44<br />

45<br />

46<br />

47<br />

!<br />

„<br />

#<br />

$<br />

%<br />

&<br />

’<br />

(<br />

)<br />

*<br />

+<br />

,<br />

-<br />

.<br />

/<br />

48<br />

49<br />

50<br />

51<br />

52<br />

53<br />

54<br />

55<br />

56<br />

57<br />

58<br />

59<br />

60<br />

61<br />

62<br />

63<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

:<br />

;<br />

<<br />

=<br />

><br />

?<br />

64<br />

65<br />

66<br />

67<br />

68<br />

69<br />

70<br />

71<br />

72<br />

73<br />

74<br />

75<br />

76<br />

77<br />

78<br />

79<br />

@<br />

A<br />

B<br />

C<br />

D<br />

E<br />

F<br />

G<br />

H<br />

I<br />

J<br />

K<br />

L<br />

M<br />

N<br />

O<br />

80<br />

81<br />

82<br />

83<br />

84<br />

85<br />

86<br />

87<br />

88<br />

89<br />

90<br />

91<br />

92<br />

93<br />

94<br />

95<br />

P<br />

Q<br />

R<br />

S<br />

T<br />

U<br />

V<br />

W<br />

X<br />

Y<br />

Z<br />

[<br />

\<br />

]<br />

^<br />

_<br />

96<br />

97<br />

98<br />

99<br />

100<br />

101<br />

102<br />

103<br />

104<br />

105<br />

106<br />

107<br />

108<br />

109<br />

110<br />

111<br />

‘<br />

a<br />

b<br />

c<br />

d<br />

e<br />

f<br />

g<br />

h<br />

i<br />

j<br />

k<br />

l<br />

m<br />

n<br />

o<br />

112<br />

113<br />

114<br />

115<br />

116<br />

117<br />

118<br />

119<br />

120<br />

121<br />

122<br />

123<br />

124<br />

125<br />

126<br />

127<br />

p<br />

q<br />

r<br />

s<br />

t<br />

u<br />

v<br />

w<br />

x<br />

y<br />

z<br />

{<br />

|<br />

}<br />

~<br />

del<br />

Das Zeichen 32 ist das Leerzeichen (Wortabstand), nicht zu verwechseln<br />

mit dem Steuerzeichen nul, welches das „leere Zeichen“ (Speicherplatz<br />

für „nichts“) ist.<br />

Die Steuerzeichen bedeuten Folgendes:<br />

dez asc Bedeutung<br />

der Abkürzung<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

13<br />

14<br />

15<br />

16<br />

17<br />

18<br />

19<br />

20<br />

21<br />

22<br />

23<br />

nul<br />

soh<br />

stx<br />

etx<br />

eot<br />

enq<br />

ack<br />

bel<br />

bs<br />

ht<br />

lf<br />

vt<br />

ff<br />

cr<br />

so<br />

si<br />

dle<br />

dc1<br />

dc2<br />

dc3<br />

dc4<br />

nak<br />

syn<br />

etb<br />

null character<br />

start of heading<br />

start of text<br />

end of text<br />

end of transmission<br />

enquiry<br />

acknowledge<br />

bell<br />

backspace<br />

horizontal tabulation<br />

line feed<br />

vertical tabulation<br />

form feed<br />

carriage return<br />

shift-out<br />

shift-in<br />

data link escape<br />

device control 1<br />

device control 2<br />

device control 3<br />

device control 4<br />

negative acknowledge<br />

synchronous idle<br />

end of transmission block<br />

Übersetzung, Bedeutung<br />

leeres Zeichen, Nil, Null<br />

Anfang des Kopfes<br />

Anfang des Textes<br />

Ende des Textes<br />

Ende der Übertragung<br />

Stationsaufforderung<br />

positive Rückmeldung<br />

Klingel<br />

Rückwärtsschritt<br />

Horizontal-Tabulator<br />

Zeilenvorschub<br />

Vertikal-Tabulator<br />

Formularvorschub<br />

Wagenrücklauf<br />

Dauerumschaltung<br />

Rückschaltung<br />

Datenübertragungsumschaltung<br />

Gerätesteuerung 1<br />

Gerätesteuerung 2<br />

Gerätesteuerung 3<br />

Gerätesteuerung 4<br />

negative Rückmeldung<br />

Synchronisierung<br />

Ende Datenübertragungsblock


dez asc Bedeutung<br />

der Abkürzung<br />

24<br />

25<br />

26<br />

27<br />

28<br />

29<br />

30<br />

31<br />

127<br />

can<br />

em<br />

sub<br />

esc<br />

fs<br />

gs<br />

rs<br />

us<br />

del<br />

ANSI-Zeichensatz<br />

cancel<br />

end of medium<br />

substitute character<br />

escape<br />

file separator<br />

group separator<br />

record separator<br />

unit separator<br />

delete<br />

Übersetzung, Bedeutung<br />

ungültig, Abbruch<br />

Ende der Aufzeichnung<br />

Substitution<br />

(Austausch eines Zeichens)<br />

Umschaltung<br />

Hauptgruppen-Trennung<br />

Gruppen-Trennung<br />

Untergruppen-Trennung<br />

Teilgruppen-Trennung<br />

Löschen<br />

Der ASCII-Zeichensatz wurde vom American National Standards Institute<br />

(ANSI), dem nationalen Normenausschuss der USA – vergleichbar mit<br />

dem Deutschen Institut für Normierung (DIN) – festgelegt.<br />

Auch den erweiterten ASCII-Zeichensatz – also zusätzlich die Zeichen für<br />

die Plätze von 128 bis 255 – hat dieses Institut festgelegt, man nennt ihn<br />

deshalb oft ANSI-Zeichensatz.<br />

Der ANSI-Zeichensatz weicht in den verschiedenen Ländern voneinander<br />

ab. Dies hängt damit zusammen, dass die verschiedenen Sprachen auch<br />

unterschiedliche zusätzliche Schriftzeichen haben. Deshalb gibt es vom<br />

ANSI normierte Code-Tabellen für die einzelnen Länder. In Deutschland<br />

sind 2 Tabellen gebräuchlich: Code-Tabelle 437 und der internationale<br />

Standard, die Code-Tabelle 850.<br />

Die Zeichen 128 bis 255 sind im Allgemeinen nicht auf der Tastatur dargestellt.<br />

Man kann sie aber unter dem Betriebssystem MS-DOS, in Programmierumgebungen<br />

und in Anwendungsprogrammen (im Allgemeinen<br />

auch unter der Benutzeroberfläche Windows) ebenfalls dadurch erhalten,<br />

dass man den Dezimalwert (dez) auf dem Ziffernblock der Tastatur<br />

bei gedrückter -Taste eingibt und dann die -Taste loslässt.<br />

Windows hat zusätzlich eine eigene Code-Tabelle. Die entsprechenden<br />

Zeichen erhält man dadurch, dass man vor dem Dezimalwert außerdem<br />

eine 0 eingibt.<br />

Die folgende Übersicht zeigt für die Zeichen 128 bis 255 (dez) die Code-<br />

Tabelle 850 und die Codierung unter Windows (win).<br />

Freie Stellen bedeuten hier meist Steuerzeichen.<br />

dez 50 win dez 50 win dez 50 win dez 50 win<br />

128<br />

129<br />

130<br />

131<br />

Ç<br />

ü<br />

é<br />

â<br />

€<br />

‚<br />

ƒ<br />

132<br />

133<br />

134<br />

135<br />

136<br />

137<br />

ä<br />

à<br />

å<br />

ç<br />

ê<br />

ë<br />

„<br />

…<br />

†<br />

‡<br />

ˆ<br />

‰<br />

138<br />

139<br />

140<br />

141<br />

142<br />

143<br />

è<br />

ï<br />

î<br />

ì<br />

Ä<br />

Å<br />

Š<br />

‹<br />

Œ<br />

Ž<br />

Daten, Datentypen und Datenstrukturen 25<br />

144<br />

145<br />

146<br />

147<br />

148<br />

149<br />

É<br />

æ<br />

Æ<br />

ô<br />

ö<br />

ò<br />

‘<br />

’<br />

“<br />

”<br />


26 Grundbegriffe<br />

Damit nicht genug<br />

– wem diese Zeichen<br />

nicht ausreichen, der<br />

hat außerdem die<br />

Möglichkeit, in Anwendungsprogrammen<br />

mit Schriftfonts<br />

zu arbeiten, die<br />

spezielle Bedürfnisse<br />

befriedigen<br />

(Schaltzeichen,<br />

kartografische Symbole,<br />

mathematische<br />

Zeichen usw.). Dabei<br />

muss man die entsprechenden<br />

Zeichen<br />

durch Zuweisung der<br />

Schriftart formatieren.<br />

Diakritische Zeichen<br />

markieren eine besondere<br />

Aussprache.<br />

„Normale Zeichen“<br />

werden dabei durch<br />

Diakritika ergänzt.<br />

Solche Diakritika<br />

sind sind z. B. der<br />

Akut (é), der Gravis<br />

(è), der Zirkumflex<br />

(ê), ferner die Cedille<br />

(ç), das Trema (ë),<br />

Häkchen (š), Punkt<br />

(å), Querstrich (Ð)<br />

und die Tilde (ñ).<br />

dez 50 win dez 50 win dez 50 win dez 50 win<br />

150<br />

151<br />

152<br />

153<br />

154<br />

155<br />

156<br />

157<br />

158<br />

159<br />

160<br />

161<br />

162<br />

163<br />

164<br />

165<br />

166<br />

167<br />

168<br />

169<br />

170<br />

171<br />

172<br />

173<br />

174<br />

175<br />

176<br />

177<br />

178<br />

179<br />

û<br />

ù<br />

ÿ<br />

Ö<br />

Ü<br />

ø<br />

£<br />

Ø<br />

×<br />

ƒ<br />

á<br />

í<br />

ó<br />

ú<br />

ñ<br />

Ñ<br />

ª<br />

º<br />

¿<br />

®<br />

¬<br />

½<br />

¼<br />

¡<br />

«<br />

»<br />

░<br />

▒<br />

▓<br />

│<br />

–<br />

—<br />

˜<br />

<br />

š<br />

›<br />

œ<br />

ž<br />

Ÿ<br />

°<br />

¡<br />

¢<br />

£<br />

¤<br />

¥<br />

¦<br />

§<br />

¨<br />

©<br />

ª<br />

«<br />

¬<br />

-<br />

®<br />

¯<br />

°<br />

±<br />

²<br />

³<br />

180<br />

181<br />

182<br />

183<br />

184<br />

185<br />

186<br />

187<br />

188<br />

189<br />

190<br />

191<br />

192<br />

193<br />

194<br />

195<br />

196<br />

197<br />

198<br />

199<br />

200<br />

201<br />

202<br />

203<br />

204<br />

205<br />

206<br />

207<br />

208<br />

209<br />

Unicode und UCS-Code<br />

┤<br />

Á<br />

Â<br />

À<br />

©<br />

╣<br />

║<br />

╗<br />

╝<br />

¢<br />

¥<br />

┐<br />

└<br />

┴<br />

┬<br />

├<br />

─<br />

┼<br />

ã<br />

Ã<br />

╚<br />

╔<br />

╩<br />

╦<br />

╠<br />

═<br />

╬<br />

¤<br />

ð<br />

Ð<br />

´<br />

µ<br />

<br />

·<br />

¸<br />

¹<br />

º<br />

»<br />

¼<br />

½<br />

¾<br />

¿<br />

À<br />

Á<br />

Â<br />

Ã<br />

Ä<br />

Å<br />

Æ<br />

Ç<br />

È<br />

É<br />

Ê<br />

Ë<br />

Ì<br />

Í<br />

Î<br />

Ï<br />

Ð<br />

Ñ<br />

210<br />

211<br />

212<br />

213<br />

214<br />

215<br />

216<br />

217<br />

218<br />

219<br />

220<br />

221<br />

222<br />

223<br />

224<br />

225<br />

226<br />

227<br />

228<br />

229<br />

230<br />

231<br />

232<br />

233<br />

234<br />

235<br />

236<br />

237<br />

238<br />

239<br />

Ê<br />

Ë<br />

È<br />

i<br />

Í<br />

Î<br />

Ï<br />

┘<br />

┌<br />

█<br />

▄<br />

¦<br />

Ì<br />

▀<br />

Ó<br />

ß<br />

Ô<br />

Ò<br />

õ<br />

Õ<br />

µ<br />

þ<br />

Þ<br />

Ú<br />

Û<br />

Ù<br />

ý<br />

Ý<br />

¯<br />

´<br />

Ò<br />

Ó<br />

Ô<br />

Õ<br />

Ö<br />

×<br />

Ø<br />

Ù<br />

Ú<br />

Û<br />

Ü<br />

Ý<br />

Þ<br />

ß<br />

à<br />

á<br />

â<br />

ã<br />

ä<br />

å<br />

æ<br />

ç<br />

è<br />

é<br />

ê<br />

ë<br />

ì<br />

í<br />

î<br />

ï<br />

240<br />

241<br />

242<br />

243<br />

244<br />

245<br />

246<br />

247<br />

248<br />

249<br />

250<br />

251<br />

252<br />

253<br />

254<br />

255<br />

Für den Informationsaustausch im Internet wurde 1996 ein 16-Bit-Code<br />

mit dem Namen Unicode („ein einziger Code“, „Einheitsschlüssel“) vereinbart.<br />

Mit 16 Bit können 2 16 = 65 536 verschiedene Zeichen (einschließlich der<br />

diakritischen Zeichen) dargestellt werden. Damit wird es möglich, wesentliche<br />

Zeichen aller wichtigen Sprachen darzustellen. Die ersten 8 Bit<br />

dienen zur Auswahl einer Sprache, die nächsten 8 Bit beschreiben die<br />

Zeichen der ausgewählten Sprache. In den ersten 256 Zeichen ist der<br />

ASCII-Code enthalten und damit auch das lateinische Alphabet.<br />

Neuere Versionen der Betriebssysteme Windows, Linux oder Mac OS unterstützen<br />

Unicode. Zur Verbreitung von Unicode trug auch bei, dass die<br />

Web-Browser Netscape Navigator (ab Version 4) und Microsoft Internet<br />

Explorer (ab Version 4) Unicode-Dokumente anzeigen können.<br />

Der Unicode-Standard wird von einem Konsortium weiterentwickelt,<br />

dem fast 100 Firmen und Institutionen in der Daten verarbeitenden Industrie<br />

und Informationstechnologie angehören.<br />

-<br />

±<br />

_<br />

¾<br />

<br />

§<br />

÷<br />

¸<br />

°<br />

¨<br />

·<br />

¹<br />

³<br />

²<br />

■<br />

ð<br />

ñ<br />

ò<br />

ó<br />

ô<br />

õ<br />

ö<br />

÷<br />

ø<br />

ù<br />

ú<br />

û<br />

ü<br />

ý<br />

þ<br />

ÿ


Der Unicode ist als erste Ebene im UCS-Code (universal character set,<br />

„universelle Zeichenmenge“) enthalten. Das ist ein 32-Bit-Code, mit dem<br />

alle jemals auf der Erde verwendeten Zeichen dargestellt werden sollen.<br />

1.2.2 Datentypen<br />

Sowohl für das Programmieren als auch für die Arbeit mit Anwendungsprogrammen<br />

ist es von Bedeutung, welcher Art die Daten sind, die verarbeitet<br />

werden sollen. Soll mit ihnen gerechnet werden, sollen Texte<br />

bearbeitet werden, sollen logische Operationen vorgenommen werden?<br />

Hierzu werden jeweils unterschiedliche Datentypen genutzt – auch um<br />

den Speicherbedarf möglichst gering zu halten.<br />

Der Begriff Datentyp beschreibt den Wertebereich von Daten, in<br />

dem ganz bestimmte Operationen gelten, die man auf alle Daten<br />

dieses Typs anwenden kann.<br />

Datentyp<br />

(Name)<br />

Bedeutung Beispiele für mögliche<br />

Operationen, Relationen und<br />

Funktionen<br />

integer ganze Zahlen; i. Allg.<br />

von –2 15 bis 2 15 – 1,<br />

also von –32 768 bis<br />

32 767<br />

longinteger<br />

–101; –1; 0; 5;<br />

101; 3000; 10 006<br />

ganze Zahlen; i. Allg.<br />

von –2 30 bis 2 30 – 1,<br />

also von –1 073 741 824<br />

bis 1 073 741 823<br />

real rationale Näherungswerte<br />

für reelle Zahlen<br />

(vgl. auch den Text am<br />

Ende der Tabelle)<br />

boolean<br />

(logical)<br />

–101.0; 0.0; 5.0;<br />

3000.0; –26.53;<br />

0.01; 102.5;<br />

22.5E20 (22,5 · 10 20 )<br />

die beiden logischen<br />

Werte „falsch“ (false)<br />

und „wahr“ (true)<br />

+ Addition<br />

- Subtraktion<br />

× Multiplikation<br />

div ganzzahlige Division<br />

mod Rest bei der<br />

ganzzahligen Division<br />

abs Absolutbetrag<br />

Vergleichsrelationen wie<br />

, =, (≠)<br />

Operationen, Relationen und<br />

Funktionen wie bei integer<br />

+ Addition<br />

- Subtraktion<br />

× Multiplikation<br />

/ Division<br />

Vergleichsrelationen;<br />

verschiedene mathematische<br />

Funktionen (z. B. Logarithmus,<br />

Sinus)<br />

NOT nicht<br />

AND und<br />

OR oder<br />

Daten, Datentypen und Datenstrukturen 27<br />

Beim Programmieren,<br />

aber auch bei<br />

der Arbeit mit Anwendungssystemen<br />

wie Tabellenkalkulations-<br />

oder Datenbankprogrammen<br />

sollte man immer<br />

zuerst überlegen,<br />

welche Datentypen<br />

man am sinnvollsten<br />

einsetzt, überprüfen,<br />

ob in der gewählten<br />

Programmiersprache<br />

oder im genutzten<br />

Anwendungsprogramm<br />

die entsprechenden<br />

Datentypen<br />

auch vorhanden<br />

sind und – wenn<br />

nicht – gegebenenfalls<br />

eine andere<br />

Programmiersprache<br />

oder ein anderes Anwendungsprogramm<br />

wählen.


2 Grundbegriffe<br />

In imperativen Programmiersprachen<br />

wird für „Datenstruktur“<br />

auch „Datentyp“<br />

genutzt.<br />

Datenstruktur<br />

Feld<br />

(array)<br />

Datentyp<br />

(Name)<br />

char<br />

(character)<br />

string<br />

Bedeutung Beispiele für mögliche<br />

Operationen, Relationen und<br />

Funktionen<br />

Zeichen (Ziffern, Buchstaben,<br />

Sonderzeichen,<br />

Grafiksymbole)<br />

5, 8, B, a, Y, l,<br />

–, º, é, Æ, e, ∫<br />

Zeichenkette (hier liegt<br />

eigentlich eine Datenstruktur<br />

vor)<br />

OTTO, A1, Otto,<br />

4321+, 12623 Berlin<br />

ord ordnet dem Zeichenwert<br />

die entsprechende ASCII-<br />

Codezahl zu<br />

chr ordnet der ASCII-Codezahl<br />

das entsprechende<br />

Zeichen zu<br />

verschiedene Funktionen zur<br />

Aneinanderreihung, Wiederholung,<br />

Aussonderung, Suche<br />

und Längenbestimmung sowie<br />

Vergleichsrelationen bei strings<br />

Da der Computer nur endlich lange Zeichenfolgen verarbeiten kann,<br />

müssen reelle Zahlen (Typ real) als rationale Näherungswerte dargestellt<br />

werden.<br />

Erfolgt die Zahlendarstellung im Dezimalsystem z. B. auf 6 Dezimalen<br />

genau, so liegen im Intervall 0 ≤ x < 1 eine Million Zahlen,<br />

im Intervall 999998 ≤ x < 999999 nur eine Zahl, nämlich 999998.<br />

Die Zahlen sind also recht unterschiedlich verteilt und es gelten in der<br />

Menge der Computerzahlen nicht die üblichen Rechengesetze (Assoziativgesetz,<br />

Distributivgesetz). Dies kann in Einzelfällen zu großen Rechenungenauigkeiten<br />

oder falschen Ergebnissen führen.<br />

1.2.3 Datenstrukturen<br />

Der Begriff Datenstruktur beschreibt die Zusammenfassung gleicher<br />

oder unterschiedlicher Datentypen nach bestimmten Konstruktionsprinzipien.<br />

Bedeutung Beispiele<br />

– Zusammenfassung von Daten gleichen Typs – Namensliste, Folge<br />

• in einer Reihe (eindimensionales Feld)<br />

von Zahlen<br />

• in Reihen und Spalten (zweidimensionales Feld) – Koeffizienten eines<br />

– Die einzelnen Daten werden als „Feldelemente“ Gleichungssystems<br />

bezeichnet. Jedes Feldelement ist durch Ordnungs- (als Matrix dargestellt)<br />

zahlen (Indizes) eindeutig festgelegt. Bei zweidimensionalen<br />

Feldern besitzt jedes Element zwei<br />

Indizes, bei dreidimensionalen Felder drei usw.<br />

– Stichprobe


Datenstruktur<br />

Verbund<br />

(record)<br />

Daten, Datentypen und Datenstrukturen 2<br />

Bedeutung Beispiele<br />

– Zusammenstellung von Daten unterschiedlichen<br />

Typs<br />

– Bei dieser Datenstruktur spricht man auch von<br />

einem Datensatz (z. B. Angaben zu einer Person),<br />

der aus einzelnen Datenfeldern (z. B. Name, Straße,<br />

PLZ, Wohnort) besteht.<br />

File – Zusammenfassung von Daten gleicher Struktur.<br />

Man kann in einem File jede in der Programmiersprache<br />

vereinbarte Datenstruktur speichern, nur<br />

Files selbst nicht.<br />

– Für nicht zu große Files werden die Daten sequenziell<br />

(aufeinanderfolgend) abgelegt, für große Files<br />

sind andere Organisationsformen effektiver.<br />

– Ein File kann ständig erweitert werden (dynamische<br />

Datenstruktur) und wird unter einem Namen auf<br />

Datenträgern gespeichert.<br />

Baum – Die betrachteten Daten stehen nicht auf gleichem<br />

Niveau, das heißt, es gibt über- und untergeordnete<br />

Daten.<br />

Jedes Datum auf einem gegebenen Niveau ist genau<br />

einem Datum von unmittelbar höherem Niveau<br />

unterstellt.<br />

Jedes Datum kann auf mehrere Daten des nächstniedrigeren<br />

Niveaus Bezug nehmen.<br />

Es gibt genau ein Datum, dass keinen Vorgänger<br />

hat.<br />

– Die einzelnen Daten werden hier auch als Knoten<br />

betrachtet, von denen verschiedene Verzweigungen<br />

(Kanten) zu den anderen Daten bestehen<br />

D<br />

B<br />

E<br />

A<br />

Endknoten<br />

(Blatt)<br />

C<br />

F<br />

H<br />

Wurzel (root)<br />

G<br />

Knoten<br />

Kante (Zweig)<br />

I<br />

J<br />

– Zusammenfassung<br />

von Warenbezeichnungen<br />

und Zahlen<br />

zu einer Preisliste<br />

– Personalien<br />

(Name, Adresse)<br />

– Namensliste<br />

– Zahlenfolge<br />

– Messreihe<br />

– Generationsfolge<br />

einer Familie<br />

– baumartige Einteilung<br />

der Tierwelt (Stamm<br />

/ Klasse / Ordnung /<br />

Familie / Gattung / Art)<br />

– Notation von aufeinanderfolgenden<br />

möglichen Antworten<br />

zum Lösen eines<br />

Problems, die nur „ja“<br />

oder „nein“ lauten<br />

können (Binärbaum)


30 Grundbegriffe<br />

Der Name Algorithmus<br />

geht<br />

auf den Namen<br />

des arabischen<br />

Mathematikers<br />

muhammad muhammad ibn muSa<br />

al-Chwarizmi al-Chwarizmi (787<br />

– um 850) zurück,<br />

der in seinem Werk<br />

„Hisab al’schabr wal<br />

mukábala“ („Das<br />

Buch vom Hinüberschaffen<br />

und vom<br />

Zusammenfassen“)<br />

viele Rechenverfahren<br />

beschrieben hat.<br />

1.3 Algorithmen und Programme<br />

1.3.1 Algorithmen<br />

Grundlage für die Entwicklung und Nutzung informationsverarbeitender<br />

Technik sind Algorithmen.<br />

Algorithmusbegriff<br />

Ein Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen<br />

Folge von eindeutig ausführbaren Anweisungen besteht, mit<br />

der man eine Vielzahl gleichartiger Aufgaben lösen kann.<br />

Ein Algorithmus gibt an, wie Eingabegrößen schrittweise in Ausgabegrößen<br />

umgewandelt werden.<br />

• Gebrauchsanweisungen, Bastelanleitungen, Spielregeln, Gewinnstrategien,<br />

mathematische Lösungsverfahren, ...<br />

• Die Schrittfolgen beim Arbeiten mit einem Taschenrechner sind<br />

auch Algorithmen. Man gibt diese Schritt- oder Tastenfolgen<br />

durch sogenannte Rechenablaufpläne an.<br />

Ein bekanntes Beispiel für einen „mathematischen“ Algorithmus ist<br />

der euklidische Algorithmus zur Ermittlung des größten gemeinsamen<br />

Teilers (ggT) zweier Zahlen:<br />

– Man teilt die größere durch die kleinere Zahl.<br />

– Geht die Division auf, ist der Divisor der ggT.<br />

– Geht die Division nicht auf, bleibt ein Rest. Dieser ist der neue Divisor,<br />

der alte wird zum Dividenden. Nun setzt man das Verfahren<br />

fort. Nach endlich vielen Schritten erhält man den ggT. Ist der<br />

letzte Rest 1, dann sind die Ausgangszahlen teilerfremd.<br />

Es ist der ggT von 544 und 391 gesucht.<br />

544 : 391 = 1; Rest 153<br />

391 : 153 = 2; Rest 85<br />

153 : 85 = 1; Rest 68<br />

85 : 68 = 1; Rest 17 Die Division geht auf,<br />

68 : 17 = 4; Rest 0 17 ist der ggT von 544 und 391.<br />

Alle Rechenverfahren, insbesondere die schriftliche Addition, Subtraktion,<br />

Multiplikation oder Division, sind letztlich Algorithmen.<br />

Eigenschaften von Algorithmen<br />

Der obige Algorithmusbegriff ist keine exakte mathematische Definition,<br />

sondern er wurde mithilfe folgender Eigenschaften von Algorithmen<br />

beschrieben:<br />

Endlichkeit: Ein Algorithmus besteht aus endlich vielen Anweisungen<br />

(Verarbeitungsbefehlen bzw. Regeln) endlicher Länge.


Eindeutigkeit: Mit jeder Anwendung ist auch die nächstfolgende<br />

festgelegt, d. h., die Reihenfolge der Abarbeitung der Anweisungen<br />

unterliegt nicht der Willkür des Ausführenden.<br />

(Man sagt auch: Algorithmen sind deterministisch).<br />

Das heißt, dass bei gleichen Bedingungen gleiche Eingabegrößen<br />

bei wiederholter Abarbeitung eines Algorithmus auf dieselben Ausgabegrößen<br />

abgebildet werden.<br />

(Man sagt auch: Algorithmen sind determiniert).<br />

Ausführbarkeit: Jede einzelne Anweisung muss für den Ausführenden<br />

des Algorithmus (den „Prozessor“) verständlich und ausführbar<br />

sein.<br />

Ein Algorithmus ist also immer nur ein Algorithmus bezüglich eines<br />

Prozessors.<br />

Eine Beschreibung zum Lösen linearer Gleichungssysteme mithilfe<br />

des Einsetzungsverfahrens ist für viele Menschen ein Algorithmus,<br />

für einen Computer nur dann, wenn entsprechende Programme zur<br />

Formelmanipulation existieren. Für den Prozessor Computer wird<br />

man deshalb im Allgemeinen ein numerisches Verfahren benutzen<br />

und das Vorgehen nach dieser Lösung auch noch in einer ganz konkreten<br />

Programmiersprache formulieren müssen.<br />

Allgemeingültigkeit: Ein Algorithmus muss auf alle Aufgaben gleichen<br />

Typs (Aufgabenklasse) anwendbar sein und (bei richtiger Anwendung)<br />

stets zum gesuchten Resultat (zur Lösung bzw. zur Einsicht,<br />

dass die Aufgabe nicht lösbar ist) führen.<br />

Es gibt auch Eigenschaften, die für den Prozess gelten, den ein Algorithmus<br />

beschreibt:<br />

• Endlichkeit der Beschreibung bedeutet noch nicht, dass auch der<br />

beschriebene Prozess endlich sein muss (beispielsweise kommen verschiedene<br />

Verfahren zur Berechnung von Quadratwurzeln durch<br />

schrittweise Näherung für gewisse Eingabegrößen nie zum Ende). In<br />

der Praxis ist dies aber nicht sinnvoll und man fordert daher, dass der<br />

beschriebene Prozess nach endlich vielen Schritten (deren Anzahl nicht<br />

bekannt sein muss) abbricht, d. h. nach einer endlichen Zeitspanne zum<br />

Ende kommt (terminiert). Für das Beispiel (Berechnung von Quadratwurzeln)<br />

würde dies bedeuten, dass man die Genauigkeit festlegt, mit<br />

der evtl. auftretende irrationale Ausgabegrößen angenähert werden<br />

sollen.<br />

• Oft gibt es mehrere äquivalente Algorithmen (Algorithmen, die das<br />

Gleiche leisten – wenn auch auf unterschiedlichem Wege) zum Lösen<br />

ein und desselben Problems.<br />

Ein Algorithmus heißt effizient, wenn er ein vorgegebenes Problem in<br />

möglichst kurzer Laufzeit und/oder mit möglichst geringem Aufwand<br />

für den Prozessor löst.<br />

Algorithmen und Programme 31<br />

Hat ein Algorithmus<br />

an gewissen<br />

Stellen mehrere<br />

Möglichkeiten der<br />

Fortsetzung, von<br />

denen der Prozessor<br />

nach Belieben eine<br />

auswählen kann, so<br />

heißt er nichtdeterministisch.Nichtdeterministische<br />

Algorithmen<br />

können durchaus<br />

determiniert sein.<br />

(Nichtdeterministische)<br />

Algorithmen,<br />

die bei gleichen<br />

Eingabegrößen und<br />

Startbedingungen<br />

unterschiedliche<br />

Ausgabegrößen<br />

liefern, heißen nichtdeterminiert.<br />

Man<br />

verlangt aber, dass<br />

solcherart Algorithmen<br />

mit sehr hoher<br />

Wahrscheinlichkeit<br />

das richtige Ergebnis<br />

liefern.<br />

Nichtdeterminierte<br />

Algorithmen gewinnen<br />

vor allem dort<br />

an Bedeutung, wo<br />

exakte (determinierte)<br />

Algorithmen<br />

zu aufwendig sind.<br />

Praktisch bedeutsam<br />

werden auch immer<br />

mehr sogenannte<br />

nichtsequenzielle<br />

Algorithmen, d. h.<br />

Algorithmen, bei<br />

denen einzelne Teile<br />

parallel bearbeitet<br />

werden (z. B. Auto<br />

fahren, Bereitstellung<br />

von Werten für<br />

Unteralgorithmen).


32 Grundbegriffe<br />

Als spezielle Algorithmenstruktur<br />

kann man den Unteralgorithmus<br />

(die<br />

Prozedur) betrachten,<br />

der sich aus den<br />

anderen Strukturen<br />

zusammensetzt.<br />

1.3.2 Algorithmenstrukturen und Darstellungsformen<br />

Algorithmenstrukturen sind Bausteine, aus denen sich jeder Algorithmus<br />

zusammensetzen lässt. Man unterscheidet drei grundlegende Strukturen:<br />

• Folge von zwei oder mehreren Anweisungen,<br />

die hintereinander ausgeführt werden (auch<br />

Sequenz genannt)<br />

A B<br />

Auf Anweisung A folgt Anweisung B.<br />

• Auswahl von genau einer Anweisung oder<br />

B<br />

Folge aus mehreren Anweisungen oder Fol-<br />

A<br />

gen in Abhängigkeit von einer Bedingung<br />

C<br />

(auch Verzweigung genannt)<br />

Auf Anweisung A folgt in Abhängigkeit von einer<br />

Bedingung entweder Anweisung B oder Anweisung C.<br />

• Wiederholung (auch Zyklus oder Schleifenstruktur<br />

genannt) einer Anweisung oder<br />

Folge in Abhängigkeit von einer Bedingung<br />

A 1 A 2 ... A n<br />

Nach einer Reihe von Anweisungen<br />

folgt wieder die Anweisung A1 .<br />

Algorithmen sollten möglichst knapp, aber präzise, für den Nutzer (den<br />

Ausführenden, den Prozessor) aufgeschrieben werden. Es existieren verschiedene<br />

Algorithmen-Notationsformen (Darstellungsformen):<br />

a) Beschreibung mithilfe der Umgangssprache:<br />

Ein Beispiel für die umgangssprachliche Beschreibung eines Algorithmus<br />

findet man auf S. 30 (euklidischer Algorithmus). Eine solche<br />

Darstellung ist wenig sinnvoll, wenn man an die Umsetzung in eine<br />

Programmiersprache und an den Prozessor Computer denkt.<br />

b) Verbale, aber formalisierte Beschreibung:<br />

Bestimmte, oft wiederkehrende Strukturelemente eines Algorithmus<br />

werden immer mit den gleichen Worten beschrieben.<br />

c) Programmablaufplan:<br />

Ein Programmablaufplan (Flussdiagramm)<br />

ist eine normierte grafische Darstellung von<br />

Algorithmen. Eingaben, Aktionen, Verzwei-<br />

Anfang<br />

gungen, Anfang und Ende des Algorithmus<br />

werden durch grafische Symbole darge-<br />

Eingabe: a, b<br />

stellt, die durch Pfeile verbunden sind.<br />

Für die Notation größerer Algorithmen d := a–b<br />

sind Programmablaufpläne ungeeignet,<br />

da Darstellungsmittel für Datenbereiche<br />

und Schleifenstrukturen fehlen. Außerdem<br />

verführen Programmablaufpläne durch<br />

d


d) Struktogramm:<br />

Ein grafisches Darstellungsmittel für Algorithmen<br />

ist auch das Struktogramm (Nassi- Eingabe: a, b<br />

Shneiderman-Diagramm).<br />

Jede Aktion (jedes Strukturelement) eines<br />

d := a–b<br />

Algorithmus wird durch einen Block dargestellt.<br />

Die Blöcke werden aneinandergereiht<br />

oder können ineinander geschachtelt<br />

nein<br />

d


34 Grundbegriffe<br />

Struktogramm zur Berechnung<br />

von Umfang und Flächeninhalt<br />

eines beliebigen Rechtecks:<br />

Auch Rechenablaufpläne für Taschenrechner sind Beispiele für lineare<br />

Algorithmen.<br />

Zum Lösen einer quadratischen Gleichung der Form<br />

x2 + px + q = 0 kann aus der Lösungsformel x1, 2 = – p<br />

} ±<br />

2 √ }<br />

( p<br />

}<br />

2 ) 2 – q<br />

folgender Rechenablaufplan entwickelt werden:<br />

Struktogramm zur Berechnung<br />

von x1 und x2 :<br />

Man erkennt, dass es sinnvoll ist,<br />

den Wert von mehrmals zu berechnenden<br />

Termen (hier p<br />

} , die<br />

2<br />

Diskriminante d und √ } d ) einer<br />

Variablen zuzuweisen und immer<br />

wieder zu benutzen.<br />

Dies gilt übrigens nicht nur für<br />

das Lösen von Problemen mit<br />

Blick auf den Computer, sondern<br />

dient allgemein der Effektivierung<br />

der Rechenarbeit.<br />

Einseitige Auswahl<br />

Wenn in Abhängigkeit von einer Bedingung entweder zusätzliche Aktionen<br />

ausgelöst werden, oder der Algorithmus einfach fortgesetzt wird,<br />

spricht man von der Algorithmenstruktur einseitige Auswahl.<br />

verbal<br />

formalisiert<br />

WENN Bedingung,<br />

DANN Anweisung<br />

Beispiele für Notationsformen<br />

ja<br />

grafisch<br />

(Struktogramm)<br />

Anweisungen<br />

b<br />

a, b (Eingabe Seiten)<br />

u := 2(a + b)<br />

A := a · b<br />

u (Ausgabe Umfang)<br />

nein<br />

· ·<br />

A (Ausgabe<br />

Flächeninhalt)<br />

p ÷ 2 = x 2 – q = √ X M + p +/– ÷ 2 = MR +/– + p +/– ÷ 2 =<br />

Ablesen: x 1<br />

p, q (Eingabe)<br />

a := p : 2<br />

d := a2 d := a – q 2 – q<br />

h := √d<br />

x 1 := –a + h<br />

x 2 := –a – h<br />

Ablesen: x 2<br />

x 1, x 2 (Ausgabe)<br />

Programm<br />

(Turbo Pascal)<br />

IF Bedingung<br />

THEN Anweisung;


Der Algorithmus zur Berechnung<br />

des Abstandes zweier Zahlen auf<br />

der Zahlengeraden (Programmablaufplan<br />

b S. 32, Struktogramm<br />

b S. 33) beinhaltet die Algorithmenstruktur<br />

„einseitige Auswahl“.<br />

Nebenstehend ist ein BA-<br />

SIC-Programm dafür angegeben.<br />

Zweiseitige Auswahl<br />

Eine zweiseitige Auswahl (Alternative) in einem Algorithmus liegt<br />

dann vor, wenn in Abhängigkeit von einer Bedingung entweder eine<br />

Anweisung(sfolge) 1 oder eine Anweisung(sfolge) 2 ausgeführt wird.<br />

verbal<br />

formalisiert<br />

WENN Bedingung,<br />

DANN Anweisung 1<br />

SONST Anweisung 2<br />

Beispiele für Notationsformen<br />

grafisch<br />

(Struktogramm)<br />

ja<br />

Anw. 1<br />

b<br />

nein<br />

Anw. 2<br />

10 INPUT "ZAHL A="; A<br />

20 INPUT "ZAHL B="; B<br />

30 D=A-B<br />

40 IF D


36 Grundbegriffe<br />

In Tabellenkalkulationsprogrammen<br />

ist die mehrseitige<br />

Auswahl als<br />

Verweisfunktion<br />

implementiert.<br />

Dabei kann es<br />

vorkommen, dass<br />

die Schleife gar nicht<br />

durchlaufen wird,<br />

nämlich dann, wenn<br />

die Bedingung gleich<br />

zu Beginn nicht<br />

erfüllt ist.<br />

Mehrseitige Auswahl<br />

Man spricht von mehrseitiger Auswahl (Mehrfachverzweigung, Fallunterscheidung),<br />

wenn in Abhängigkeit vom Wert eines Ausdrucks (eines<br />

Selektors) mehr als 2 Anweisungsfolgen abgearbeitet werden können.<br />

Die mehrseitige Auswahl steht in allen höheren Programmiersprachen<br />

zur Verfügung. Man kann eine mehrseitige Auswahl auch durch ineinander<br />

geschachtelte Alternativen simulieren.<br />

verbal<br />

formalisiert<br />

FALLS Selektor=<br />

1: Anweisung 1<br />

...<br />

n: Anweisung n<br />

ENDE<br />

Beispiele für Notationsformen<br />

grafisch<br />

(Struktogramm)<br />

Struktogramm eines Algorithmus zur Prozentrechnung<br />

Wiederholung mit vorangestelltem Test<br />

Falls s=<br />

1 2 3 ... n<br />

A 1 A 2 A 3 ... A n<br />

Programm<br />

(Turbo Pascal)<br />

CASE Selektor OF<br />

1: Anweisung 1;<br />

...<br />

n: Anweisung n;<br />

END;<br />

Was möchten sie berechnen? 1: Prozentwert W<br />

2: Prozentsatz p<br />

3: Grundwert G<br />

Eingabe: entsprechende Zahl s (1, 2 oder 3)<br />

1 2 3<br />

Eingabe p, G<br />

W := G · p : 100<br />

Ausgabe W<br />

Eingabe W, G<br />

p := W · 100 : G<br />

Ausgabe p<br />

Falls s=<br />

Eingabe W, p<br />

G := W · 100 : p<br />

Ausgabe G<br />

Wird eine Anweisungsfolge mehrfach wiederholt, wobei diese Schleife<br />

solange durchlaufen wird, wie eine Eingangsbedingung erfüllt ist, spricht<br />

man von der Algorithmenstruktur Wiederholung mit vorangestelltem<br />

Test (Wiederholung mit Eingangsbedingung).<br />

Folgende Anweisung an eine Kindergruppe soll diesen Sachverhalt<br />

verdeutlichen: „Solange es regnet, teilt Karten aus, spielt Karten und<br />

zählt die Punkte, ansonsten geht nach draußen!“<br />

Die Kinder schauen aus dem Fenster. Wenn die Bedingung „Es regnet.“<br />

erfüllt ist, werden Karten ausgeteilt, ein Spiel gespielt und<br />

erreichte Punkte notiert. Nach jedem Spiel wird die Eingangsbedingung<br />

überprüft. Wenn es aufgehört hat zu regnen, gehen die Kinder<br />

nach draußen, was auch schon zu Beginn passieren kann.


verbal<br />

formalisiert<br />

SOLANGE b, FÜHRE<br />

Anweisungen<br />

AUS<br />

Beispiele für Notationsformen<br />

grafisch<br />

(Struktogramm)<br />

Wiederholung mit nachgestelltem Test<br />

Programm<br />

(Turbo Pascal)<br />

WHILE Bedingung DO<br />

Anweisung;<br />

Wird eine Anweisungsfolge wiederholt bis eine Endbedingung erfüllt ist,<br />

spricht man von der Algorithmenstruktur Wiederholung mit nachgestelltem<br />

Test (Wiederholung mit Endbedingung).<br />

Im Unterschied zur Wiederholung mit vorangestelltem Test wird die<br />

Schleife immer mindestens einmal durchlaufen.<br />

Auch hier soll wieder eine Alltags-Anweisung diese Algorithmenstruktur<br />

verdeutlichen:<br />

„Wirf mit dem Pfeil auf die Darts-Scheibe. Wenn du das Bullenauge<br />

in der Mitte der Scheibe getroffen hast, höre auf!“<br />

Der Spieler muss hier mindestens einmal werfen, um die Bedingung<br />

„Bullenauge getroffen“ überprüfen zu können. Wie oft er werfen<br />

muss, ist unbekannt. Es ist zu hoffen, dass er irgendwann einmal<br />

trifft.<br />

verbal<br />

formalisiert<br />

WIEDERHOLE<br />

Anweisungen<br />

BIS b<br />

Gezählte Wiederholung<br />

Beispiele für Notationsformen<br />

grafisch<br />

(Struktogramm)<br />

Programm<br />

(Turbo Pascal)<br />

REPEAT<br />

Anweisungen<br />

UNTIL b;<br />

Wenn die Anzahl der Wiederholungen einer Folge von Anweisungen<br />

von vornherein bekannt ist, nutzt man die Algorithmenstruktur gezählte<br />

Wiederholung (Zählschleife).<br />

Bei der Zählschleife kann man den Anfangswert und den Endwert des<br />

Schleifendurchlaufs sowie die (immer konstante) Schrittweite festlegen.<br />

Es ist möglich, aufwärts und abwärts zu zählen.<br />

verbal<br />

formalisiert<br />

FÜR i: = anfw BIS endw<br />

(und SCHRITTWEITE s)<br />

FÜHRE Anw. AUS<br />

Solange b<br />

tue Anweisungen<br />

Wdh. Anweisungen<br />

bis b<br />

Beispiele für Notationsformen<br />

grafisch<br />

(Struktogramm)<br />

Für i= anfw bis endw<br />

tue Anweisungen<br />

Algorithmen und Programme 37<br />

Programm<br />

(Turbo Pascal)<br />

FOR i := anfw TO endw DO<br />

Anweisung;<br />

(für TO auch DOWNTO)


3 Grundbegriffe<br />

Manchmal kann es<br />

sinnvoll sein, dass<br />

ein Programm keine<br />

Abbruchbedingung<br />

besitzt. So lässt<br />

sich das Betriebssystem<br />

MS-DOS nur<br />

unterbrechen, indem<br />

man den Computer<br />

ausschaltet.<br />

Insbesondere Wertetabellen lassen sich einfach mit Zählschleifen erstellen:<br />

Struktogramm BASIC-Programm<br />

Für x = –4 bis + 4 Schrittw. 0,1<br />

tue y := 2x2 tue y := 2x + 1 2 + 1<br />

Unteralgorithmus<br />

Treten Teile eines umfangreichen Algorithmus mehrmals auf, ist es sinnvoll,<br />

diese gleichen Teile als Unteralgorithmus (Prozedur) auszugliedern.<br />

Bei der Bruchrechnung benötigt man sehr oft den größten gemeinsamen<br />

Teiler zweier Zahlen (ggT). Man kann z. B. den euklidischen<br />

Algorithmus (b S. 30) hierfür nutzen, ihn als Prozedur an das Ende<br />

eines Trainings-Algorithmus zur Bruchrechnung stellen und immer<br />

dann aufrufen, wenn man ihn benötigt.<br />

verbal<br />

formalisiert<br />

(UNTERALGORITHMUS<br />

Name)<br />

(Datenvereinbarungen)<br />

BEGINN<br />

Anweisungen<br />

ENDE<br />

RUFE Unteralgorithmus<br />

(Name)<br />

Beispiele für Notationsformen<br />

grafisch<br />

(Struktogramm)<br />

1.3.3 Programme und Programmiersprachen<br />

Programme<br />

Ausgabe x, y<br />

(UA-Name)<br />

(Vereinbarungen)<br />

Beginn<br />

Anweisungen<br />

Ende<br />

Rufe UA-Name<br />

10 FOR X=-4 TO 4 STEP .1<br />

20 Y=2*X*X+1<br />

30 PRINT,X,Y<br />

40 NEXT X<br />

50 END<br />

Programm<br />

(Turbo Pascal)<br />

PROCEDURE Bezeichner<br />

(Parameterliste);<br />

Deklarationsteil;<br />

BEGIN<br />

Anweisungen<br />

END;<br />

Prozedurbezeichner<br />

(Parameterliste)<br />

Als Programm bezeichnet man im Allgemeinen einen Algorithmus<br />

(einschließlich der zugehörigen Datentypen, Datenstrukturen und<br />

Variablen), der in einer dem Computer verständlichen Sprache (Programmiersprache)<br />

formuliert ist und von diesem ausgeführt werden<br />

kann<br />

Ein Programm in einer imperativen (befehlsorientierten) Programmiersprache<br />

besteht aus Vereinbarungen und Anweisungen.


Vereinbarung (Deklaration) heißt: Festlegung des Namens und der<br />

Bedeutung der im Programm genutzten Konstanten, Variablen, Unterprogramme<br />

(Prozeduren, Funktionen) und Datentypen.<br />

Einfache Anweisungen (Bearbeitungsvorschriften) sind:<br />

• die Zuweisung eines Wertes zu einer Variablen (Ergibtanweisung),<br />

• Aufrufe von Unteralgorithmen, insbesondere die Aus- und Eingabeanweisungen,<br />

• die Sprunganweisung, die die Abarbeitung des Programms in der<br />

notierten Reihenfolge unterbricht und an einer besonders markierten<br />

Stelle fortsetzt.<br />

Weitere Anweisungen sind die programmiersprachlichen Entsprechungen<br />

der Algorithmenstrukturen:<br />

• Sequenz (Verbundanweisung, oft durch begin und end eingeschlossen,<br />

b auch S. 33)<br />

• bedingte Anweisung (Formen: IF-THEN-Anweisung, IF-THEN-<br />

ELSE-Anweisung und CASE-OF-Anweisung, b auch S. 34 – 36)<br />

• Schleife (Formen: Zählschleife, WHILE-Anweisung, REPEAT-Anweisung,<br />

b auch S. 36 – 38)<br />

• Block (meist durch begin und end eingeschlossene Folge von Deklarationen<br />

und Anweisungen zur Strukturierung von Programmen;<br />

bei Prozeduraufrufen und Rekursion wird auf das Blockkonzept<br />

zurückgegriffen)<br />

Programmbeispiel (Bestimmung des größten gemeinsamen Teilers<br />

zweier natürlicher Zahlen nach dem euklidischen Algorithmus in der<br />

Programmiersprache Turbo Pascal; b auch S. 30):<br />

program ggt;<br />

var a, b, r, h:integer;<br />

begin<br />

write(’1. Wert eingeben’:);<br />

readln(a);<br />

write(’2. Wert eingeben:’);<br />

readln(b);<br />

if b>a then begin<br />

h:=a;a:=b;b:=h<br />

end;<br />

{Umspeichern kann entfallen}<br />

repeat<br />

r:=a mod b;<br />

a:=b;<br />

b:=r;<br />

until r=0;<br />

writeln (’ggt(a,b)=’,a);<br />

end.<br />

Algorithmen und Programme 3<br />

Vereinbarungen<br />

Eingabe: a (∈ N)<br />

Eingabe: b (∈ N)<br />

Wenn b > a, dann führe<br />

h := a, a := b, b := h<br />

aus<br />

Wiederhole<br />

r := Rest bei Division a/b<br />

a := b<br />

b := r<br />

bis r = 0<br />

Ausgabe: a (ggT(a,b))<br />

Ende


40 Grundbegriffe<br />

Auf Basis der Definition<br />

einer Programmiersprache<br />

kann<br />

man auch sagen:<br />

Ein Programm ist ein<br />

in einer Programmierspracheformulierter<br />

Satz.<br />

(b Abschnitt 5.1.6)<br />

Programmiersprachen<br />

Eine Programmiersprache ist eine Sprache zur Formulierung von<br />

Algorithmen und Datenstrukturen für die Abarbeitung auf einem<br />

Computer.<br />

Im Gegensatz zu natürlichen Sprachen, wo ein Wort mehrere Bedeutungen<br />

besitzen kann, ist in einer Programmiersprache eindeutig<br />

festgelegt, welche Zeichenfolgen als Programm zugelassen sind<br />

(Syntax) und was diese Zeichenfolgen bewirken (Semantik).<br />

Je nach dem Grad, mit der die Hardware bei der Programmierung beachtet<br />

werden muss, kann man Programmiersprachen in Maschinensprachen,<br />

Assemblersprachen und höhere Programmiersprachen untergliedern.<br />

Maschinensprache:<br />

Sprache, deren Alphabet nur aus Gruppen fester Länge der Zeichen 0<br />

und 1 besteht und vom Computer direkt verarbeitet werden kann.<br />

Assemblersprache:<br />

Maschinenorientierte Programmiersprache, mit der ein Programm<br />

durch die Benutzung symbolischer Namen für Operanden (Werte,<br />

die verarbeitet werden sollen) und Operationen sowie durch die<br />

Möglichkeit, vordefinierte Folgen von Anweisungen in das Programm<br />

einzuführen, übersichtlicher wird.<br />

Die Zeichenfolge 1011 1000 0000 1001 = B809 [16] einer Maschinensprache<br />

könnte in der Assemblersprache add A,0 heißen und die<br />

Addition zweier ganzer Zahlen bedeuten.<br />

Problemorientierte Sprachen sind höhere Programmiersprachen,<br />

die weitgehend von der Hardware unabhängig und der natürlichen<br />

Sprache etwas näher sind.<br />

Einteilung der höheren Programmiersprachen<br />

Man kann die höheren Programmiersprachen nach verschiedenen Kriterien<br />

unterteilen.<br />

Nach der Art der zu lösenden Probleme gibt es beispielsweise Datenbanksprachen<br />

wie SQL oder „kaufmännische“ Sprachen wie COBOL<br />

(common business oriented language).<br />

Durchgesetzt hat sich eine Einteilung, die letztlich auf dem zugrunde<br />

liegenden Algorithmusbegriff basiert.<br />

• Imperative Sprachen betrachten ein Programm als Befehlsfolge an einen<br />

(endlichen) Automaten, den Computer.


• Deklarative Sprachen, insbesondere funktionale, sehen ein Programm<br />

eher als (berechenbare) Funktion.<br />

imperative deklarative<br />

Ein Programm besteht aus einer<br />

Folge von Befehlen (Anweisungen)<br />

an den Computer.<br />

Das Programm beschreibt den<br />

Lösungsweg für ein Problem.<br />

prozedurale objektorientierte<br />

Die Lösung<br />

eines Problems<br />

wird durch die<br />

Zerlegung in<br />

selbstständig zu<br />

erarbeitende,<br />

beliebig oft<br />

im Programm<br />

nutzbare Unteralgorithmen<br />

(Prozeduren)<br />

unterstützt.<br />

Die Prozeduren<br />

werden von<br />

einem „Hauptprogramm“<br />

aufgerufen, das<br />

meist am Ende<br />

der Programmniederschrift<br />

steht.<br />

Vertreter:<br />

Turbo Pascal,<br />

C<br />

Ein Programm<br />

besteht aus<br />

Objekten.<br />

Ein Objekt besitzt<br />

Attribute<br />

(Daten) und<br />

Methoden (Algorithmen).<br />

Die Kommunikation<br />

zwischen<br />

Objekten<br />

erfolgt mit<br />

Botschaften,<br />

die Methoden<br />

(Ereignisse)<br />

beim Empfänger<br />

auslösen.<br />

Eine Klasse ist<br />

ein Bauplan<br />

für gleichartige<br />

Objekte. Die<br />

Objekte einer<br />

Klasse besitzen<br />

dieselben<br />

Attribute und<br />

unterscheiden<br />

sich in den<br />

Attributwerten.<br />

Die Attribute<br />

können vererbt<br />

werden.<br />

Vertreter:<br />

Delphi, Java,<br />

C++<br />

Ein Programm beschreibt die<br />

allgemeinen Eigenschaften von<br />

Objekten und ihre Beziehungen<br />

untereinander.<br />

Das Programm beschreibt zunächst<br />

nur das Wissen zur Lösung<br />

eines Problems.<br />

funktionale<br />

(applikative)<br />

Ein Programm<br />

wird als eindeutige<br />

Abbildung<br />

(Funktion) aus<br />

der Menge<br />

der Eingabedaten<br />

auf die<br />

Menge der<br />

Ausgabedaten<br />

betrachtet und<br />

stellt sich als<br />

Zusammensetzungaufeinanderbezogener,<br />

einfacherer<br />

Funktionen dar.<br />

Es besteht die<br />

Möglichkeit,<br />

dass sich ein<br />

Programm<br />

selbst aufrufen<br />

kann.<br />

Vertreter:<br />

LISP, Haskell,<br />

Miranda, LOGO<br />

logische<br />

(prädikative)<br />

Ein Programm<br />

ist die Niederschrift<br />

von<br />

Fakten („Prädikaten“,Definitionen)<br />

und<br />

Regeln, womit<br />

der Computer<br />

neue Fakten gewinnt<br />

und das<br />

Problem gelöst<br />

wird.<br />

Ein Programmablauf<br />

ist damit<br />

letztlich als ein<br />

Beweis aufzufassen.<br />

Vertreter:<br />

PROLOG<br />

bAbschnitt 3.2 bAbschnitt 3.3 bAbschnitt 3.4 bAbschnitt 3.5<br />

Algorithmen und Programme 41<br />

Folgende Einteilung<br />

der imperativen<br />

Sprachen gab es<br />

auch – aufgrund der<br />

Softwarekrise in den<br />

1970er-Jahren:<br />

Unstrukturierte<br />

Sprachen („Spaghettiprogrammierung“):<br />

Ein Programm<br />

besteht vorwiegend<br />

aus Zuweisungen,<br />

bedingten und unbedingten<br />

Sprüngen<br />

sowie meist noch aus<br />

der Zählschleife. Ein<br />

solches Programm ist<br />

weitgehend an die<br />

Arbeitsweise eines<br />

Computers (von-<br />

Neumann-Konzept)<br />

angelehnt.<br />

(Vertreter: BASIC)<br />

Strukturierte<br />

Sprachen:<br />

Ein Programm ist<br />

vorwiegend eine Zusammensetzung<br />

aus<br />

einzelnen Algorithmenstrukturen,<br />

die<br />

jeweils genau einen<br />

definierten Ein- und<br />

Ausgang besitzen.<br />

Die Datentypen<br />

werden zu Beginn<br />

jedes Programms<br />

vereinbart. Umfangreiche<br />

Programme<br />

können aus einzelnen<br />

Teilen (Moduln)<br />

zusammengesetzt<br />

werden, die für sich<br />

austestbar sind.


Der Algorithmenbegriff wird in der<br />

Informatik unterschiedlich verwendet.<br />

In der Theorie der Berechenbarkeit<br />

stehen Eigenschaften formal gebildeter<br />

Algorithmen im Blickpunkt.<br />

Ein formaler Algorithmus kann z. B. durch eine<br />

Folge von Schritten beschrieben werden, die von<br />

einer Turing-Maschine ausgeführt werden können.<br />

Eine solche Beschreibung heißt Turing-Programm;<br />

jede Turing-Maschine ist durch ein solches Turing-<br />

Programm vollständig beschrieben. Es gibt andere<br />

Modelle der Berechenbarkeit wie die kleeneschen<br />

µ-rekursiven Funktionen oder die Funktionen des<br />

churchschen λ-Kalküls, in denen ebenfalls berechenbare<br />

Funktionen beschrieben werden können.<br />

Diese unterschiedlichen Beschreibungen der Berechenbarkeit<br />

konnten als funktional äquivalent<br />

bewiesen werden, sodass man z. B. von der Menge<br />

aller Turing-Programme als der Menge aller formal<br />

beschreibbaren Algorithmen sprechen kann.<br />

Diese formale Herangehensweise gleicht der Feststellung,<br />

dass die Menge A* aller möglichen Buchstabenfolgen<br />

eines Alphabets einer Sprache (Groß-<br />

und Kleinbuchstaben, Sonderzeichen und Ziffern)<br />

alle möglichen Texte dieser Sprache umfasst. Darunter<br />

sind selbstverständlich viele Texte, die keinerlei<br />

Sinn erkennen lassen. Ebenso kann man sich leicht<br />

Turing-Maschinen vorstellen, deren Rechnung keinen<br />

erkennbaren Sinn ergibt. Trotzdem kann man<br />

gewisse Fragen auch an solche formal gebildeten Algorithmen<br />

stellen, wie zum Beispiel: „Endet das Verfahren<br />

mit beliebigen Eingaben?“, „Führt die Maschine<br />

überhaupt einige Rechenschritte aus?“ oder<br />

„Wie viel Band beansprucht eine solche Maschine<br />

abhängig von den Eingabedaten?“<br />

Auch Computerprogramme sind Folgen maschinell<br />

ausführbarer Operationen. Dies ist bei höheren Programmiersprachen<br />

wie Java, Visual Basic oder C++<br />

nicht immer direkt erkennbar. Die Folge von Maschinenoperationen,<br />

die vom Rechner nach dem Laden<br />

in die Zentraleinheit direkt ausgeführt werden kann,<br />

entsteht erst durch die Umsetzung eines Programms<br />

durch einen Übersetzer (Compiler, Interpreter oder<br />

Assembler). Die Bedeutung solcher Operationsfolgen,<br />

die Frage, was von einem Programm bezweckt<br />

ist, ob es z. B. eine numerische Rechnung durchführt,<br />

eine Grafik erzeugt oder eine Datenmenge sortiert,<br />

ist demgegenüber erst einmal gleichgültig.<br />

In der Geschichte der Mathematik wird der Begriff<br />

Algorithmus dagegen für konkrete Berechnungsverfahren<br />

verwendet. So berechnet der euklidische<br />

Algorithmus,<br />

Heuristik,<br />

Programm<br />

Algorithmus mit Hilfe fortgesetzter<br />

Subtraktion ganzer Zahlen stets in<br />

endlich vielen Schritten den größten<br />

gemeinsamen Teiler zweier natürlicher<br />

Zahlen (bS. 30 und S. 39).<br />

Dieses Verfahren ist (a) in einer endlich langen Vorschrift<br />

in einer bekannten Sprache beschrieben,<br />

verwendet (b) eine Menge bekannter ausführbarer<br />

Operationen und führt (c) stets nach endlich vielen<br />

Schritten (d) zum richtigen Ergebnis. Diese Forderungen<br />

(a) bis (d) der Endlichkeit der Beschreibung<br />

(Finitheit), der Effektivität der Operationen, der Terminierung<br />

und der Korrektheit des Ergebnisses sind<br />

Grundeigenschaften konkreter mathematischer Algorithmen.<br />

„Ein Algorithmus ist eine Handlungsanweisung, die<br />

bei genauer Anwendung nach einer endlichen Anzahl<br />

von Schritten zum gewünschten Ergebnis führt,“<br />

schreibt der Informatiker edSger diJkSTra. Zudem ist<br />

nach jedem Schritt der nächste Schritt eindeutig definiert,<br />

d. h., es gibt genau einen Folgeschritt oder<br />

der Algorithmus endet mit dem richtigen Ergebnis.<br />

Nicht alle mathematischen Algorithmen sind in diesem<br />

Sinne deterministisch, es gibt auch nichtdeterministische<br />

Algorithmen, bei denen ein Schritt aus<br />

einer Menge möglicher Schritte ausgewählt werden<br />

kann. Nichtdeterministische Algorithmen werden<br />

z. B. zur Erkennung syntaktisch richtig gebildeter<br />

Wörter einer formalen Grammatik eingesetzt, wo es<br />

unterschiedliche Analysemöglichkeiten gibt und nur<br />

eine akzeptable Analyse gefunden werden muss.<br />

Computerprogramme werden dagegen deterministisch<br />

abgearbeitet; zu jedem Zeitpunkt gibt es<br />

in einem Programm genau einen nächsten auszuführenden<br />

Maschinenbefehl – oder das Programm<br />

beendet seine Ausführung. Damit soll gesichert<br />

werden, dass Computerprogramme nicht nur ein<br />

eindeutiges Ergebnis, sondern auch eindeutige Zwischenergebnisse<br />

liefern. Neben den Eigenschaften<br />

(a) bis (d) der expliziten, endlichen Beschreibung<br />

und der Terminierung mit korrektem Ergebnis gibt<br />

es weitere Anforderungen an Algorithmen. Man<br />

kann verlangen, dass sie effizient sind und eine<br />

Aufgabe in einer angemessenen Zahl von Schritten<br />

erledigen und dabei sparsam mit den vorhandenen<br />

Mitteln (z. B. Speicherplätzen) umgehen. Dies ist das<br />

Feld der algorithmischen Komplexität.<br />

Bei der Einführung in Algorithmen und Programmierung<br />

werden gerne Kochrezepte, Bastelanleitungen,<br />

Partituren und andere alltägliche Vorschriften verwendet.<br />

Zwar erinnern sie als regelhafte Hand-


lungsanweisungen an Algorithmen. Sie sind aber<br />

nur selten exakt formuliert und enthalten oft Teile,<br />

die vom Ausführenden unterschiedlich interpretiert<br />

werden. Das Essen mag ja trotz solcher Ungenauigkeiten<br />

schmecken; Algorithmen sind dieser Art<br />

Kochrezepte im strengen Sinne jedoch nicht.<br />

Von mathematischen Algorithmen wird verlangt,<br />

dass sie nur zu gültigen Rechenergebnissen führen.<br />

Wenn ein Algorithmus mit einem als zulässig definierten<br />

Eingabedatensatz zu einem Rechenergebnis<br />

führt, muss dieses korrekt sein. Diese Gültigkeit ist<br />

eine strenge Forderung, die mathematisch zu beweisen<br />

ist. Ein mathematischer Algorithmus ist nur dann<br />

gültig, wenn seine Gültigkeit bewiesen ist.<br />

Computerprogramme können Algorithmen in eine<br />

Sprache umsetzen, die maschinell ausführbar sind.<br />

Einmal geschrieben erfüllt ein Computerprogramm,<br />

sofern es der Programmiersprachensyntax entspricht<br />

und fehlerfrei kompiliert und ausgeführt wird, die<br />

Forderungen nach Finitheit, Effektivität und Eindeutigkeit<br />

des Ergebnisses. Ob freilich ein Computerprogramm<br />

einen mathematischen Algorithmus korrekt<br />

umsetzt und ob es überhaupt für die zulässigen Eingabedaten<br />

terminiert, ist eine der schwierigen Fragen<br />

der Informatik. Weder die Terminierung noch<br />

die Behauptung, dass ein Programm in diesem Sinne<br />

korrekt programmiert ist, kann normalerweise bewiesen<br />

werden; dies wird durch umfangreiche Tests<br />

erhärtet, die freilich immer nur die Anwesenheit von<br />

Fehlern, niemals aber deren Abwesenheit beweisen<br />

können. Zwar gibt es Bemühungen, Terminierung<br />

von Programmen und ihre Korrektheit, also die<br />

Äquivalenz von mathematischen Algorithmen mit<br />

den daraus umgesetzten Programmen formal zu<br />

beweisen; diese sind aber mit erheblichem Aufwand<br />

verbunden und in der Praxis nicht üblich. Schlimmer<br />

noch: Weder Terminierung noch Korrektheit sind<br />

allgemein, für beliebige Programme und Algorithmen<br />

beweisbar. Dies hängt mit der Unlösbarkeit des<br />

Entscheidungsproblems von Turingmaschinen zusammen<br />

(bAbschnitt 5.2.4).<br />

Bei vielen Programmieraufgaben liegt freilich kein<br />

expliziter mathematischer Algorithmus vor, der programmiert<br />

werden könnte und dessen Korrektheit<br />

nachweisbar wäre:<br />

• Die Erkennung eines Virenbefalls durch einen Virenscanner<br />

geschieht durch Vergleich mit schon<br />

bekannten Vireneigenschaften oder weil das verdächtige<br />

Programm „ungewöhnliche Aktivitäten“<br />

entfaltet, wie z. B. eine rasche Folge von Zugriffen<br />

auf unterschiedliche Dateien.<br />

• Die Reihenfolge, in der Internetsuchmaschinen<br />

Webadressen angeben, ist nicht beliebig; sie ist<br />

aber auch nicht eindeutig definiert, da unterschiedliche<br />

Nutzer eine Seite als mehr oder weniger<br />

„wichtig“ ansehen können. Es gibt deshalb<br />

keinen Algorithmus, der ein eindeutiges „korrektes“<br />

Ergebnis für eine Internetsuche liefern<br />

kann. Suchmaschinen verwenden mehr oder<br />

minder plausible Annahmen, um zu einer Reihenfolge<br />

der präsentierten Ergebnisse zu kommen<br />

(manchmal sollen da auch Werbeeinnahmen, kulturell<br />

geprägte Neigungen oder politische Vorgaben<br />

eine Rolle spielen).<br />

• Perfekte Algorithmen zum Entfernen von Kratzern<br />

gescannter Fotos sind nicht bekannt. Zwar bieten<br />

manche Bildbearbeitungsprogramme solche Automatismen<br />

an; eine Kontrolle durch den Nutzer,<br />

der ja erst über Zweck und Verwendung des bearbeiteten<br />

Bildes entscheidet, ist aber vorzuziehen<br />

und wird häufig interaktiv angeboten.<br />

• Die Umsetzung eines im Rechner als Formverlauf<br />

beschriebenen Buchstabens (Postscript, TrueType,<br />

OpenType) in ein Bitbild (Bitmap) ist nicht eindeutig;<br />

dieses „Glätten“ wird nach Erfahrungswerten<br />

programmiert.<br />

In den dargestellten Fällen beruhen die Programme<br />

nicht auf expliziten algorithmischen Beschreibungen<br />

mit eindeutigem, „korrekt definierten“ Ergebnissen,<br />

sondern auf mehr oder minder plausiblen Annahmen.<br />

Solche Verfahren heißen Heuristiken. Viele der<br />

alltäglichen Arbeiten am Computer wie Bild- und<br />

Tonbearbeitung, Textgestaltung oder Verfahren der<br />

Mustererkennung und der künstlichen Intelligenz<br />

beruhen auf heuristischen Verfahren.<br />

Als Ergebnis sei festgehalten: Formal sind Computerprogramme<br />

Algorithmen im Sinne der Berechenbarkeitstheorie.<br />

Es lässt sich also fragen, ob ein<br />

Programm stets terminiert oder ob es vernünftig mit<br />

Ressourcen wie Speicher oder Rechenzeit umgeht.<br />

Nach der Korrektheit der Programmierung lässt sich<br />

freilich nur fragen, falls es einen klar definierten<br />

mathematischen Algorithmus umsetzt. Bei programmierten<br />

Zahlenrechnungen ist dies häufig der Fall;<br />

bei anderen Programmiervorhaben ist dies eher selten.<br />

Viel häufiger werden in solchen Computerprogrammen<br />

Heuristiken umgesetzt, die plausible, aber<br />

nicht unbedingt optimale Ergebnisse liefern – und<br />

auch gelegentlich falsche Ergebnisse. Für den Nutzer<br />

sollten solche Probleme erkennbar bleiben, sodass<br />

sie nicht von einer Unfehlbarkeit der Programme<br />

ausgehen.


44 Grundbegriffe<br />

Unter einem Informatiksystem<br />

wird<br />

die Einheit von Hard-<br />

und Software und<br />

Netzen einschließlich<br />

aller durch sie<br />

angestrebten und<br />

verursachten Gestaltungs-<br />

und Qualifizierungsprozesse<br />

bezüglich Arbeit<br />

und Organisation<br />

verstanden.<br />

(Definition nach<br />

Gesellschaft für<br />

Informatik e. V.)<br />

Implementierung<br />

(lat. – engl.) heißt so<br />

viel wie Umsetzung,<br />

Durchsetzung (z. B.<br />

von Uno-Resolutionen).<br />

Mit Implementieren<br />

meint der Informatiker<br />

das Umsetzen<br />

der Spezifikation<br />

(Ergebnis der<br />

Modellierung) in ein<br />

Programm oder eine<br />

Applikation.<br />

1.4 Modelle<br />

1.4.1 Modellierung in der Informatik<br />

Modell und Modellierungstechniken<br />

Informationen über die uns umgebende Welt (über einen Gegenstand,<br />

ein Tier, einen Menschen, einen Sachverhalt, einen Begriff) sind vielfältig<br />

darstellbar – als Fotografie, Diagramm, Text, Skizze, Nachricht oder Datenstruktur<br />

in einem Informatiksystem.<br />

Diese Darstellung ist immer mit Informationsverlust verbunden. Dies gilt<br />

natürlich auch für die Nutzung des Computers.<br />

Das ist nicht unbedingt ein Nachteil. Ganz im Gegenteil: Durch Weglassen<br />

nebensächlicher Informationen bei einer solchen „Modellierung“<br />

kann man sich auf das Wesentliche konzentrieren.<br />

Ein Modell ist eine vereinfachte Beschreibung eines realen oder geplanten<br />

Systems.<br />

„Vereinfacht“ heißt hier: Wesentliches wird hervorgehoben, Nebensächliches<br />

wird weggelassen.<br />

„System“ heißt hier: Es gibt mehrere Objekte, die durch bestimmte<br />

Beziehungen miteinander verbunden sind und klar von ihrer Umwelt<br />

oder von anderen Modellen abgegrenzt werden können.<br />

Modellierung (Modellbildung) ist in der Informatik eine Methode,<br />

um zu einem gegebenen Problem und einer Anwendungsumgebung<br />

ein Modell zu entwerfen, welches in ein Programm umgesetzt<br />

werden kann.<br />

Die Modellierung findet in der Phase der Problemanalyse statt, also noch<br />

vor der Algorithmierung. Durch immer mehr und komplexere Probleme,<br />

die mit informationsverarbeitender Technik bearbeitet und gelöst werden<br />

müssen, wächst die Bedeutung der Modellierung und die Notwendigkeit,<br />

bestimmte informatische Modellierungstechniken zu erlernen,<br />

ständig. Hierzu wurden eine Reihe grafischer Standards geschaffen.<br />

Schon seit den Anfängen der Programmierung gibt es Flussdiagramme<br />

zur normierten grafischen Beschreibung von Algorithmen<br />

(b S. 32).<br />

Um einen nachvollziehbaren Programmierstil zu entwickeln, gibt es<br />

Struktogramme (b S. 33 ff.).<br />

Beide Modellierungsmittel beziehen sich auf die (letztlich mathematische)<br />

Beschreibung von (imperativen) Algorithmen.<br />

Wie schon erwähnt, ist es oft wichtiger, erst einmal das Problem zu beschreiben,<br />

bevor man es innerhalb eines Informatiksystems implementiert.<br />

Damit können dann auch die folgenden Fragen einfacher beantwortet<br />

werden:<br />

• Gibt es evtl. ein Anwendungsprogramm, mit welchem man das Problem<br />

lösen kann?


• Kann eine vorhandene Anwendung genutzt werden, die nur leicht abgewandelt<br />

werden muss?<br />

• Wenn ein Programm erstellt werden muss, welche Programmierphilosophie<br />

sollte genutzt werden – imperativ oder deklarativ?<br />

• Welche Programmiersprache ist die geeignetste?<br />

Im Folgenden wird kurz auf wichtige Modellierungstechniken eingegangen,<br />

die helfen können, ein Problem innerhalb eines Informatiksystems<br />

zu implementieren. Das sind insbesondere Techniken<br />

• der Datenmodellierung,<br />

• der Datenflussmodellierung,<br />

• der objektorientierten Modellierung und<br />

• der zustandsorientierten Modellierung.<br />

Datenmodellierung<br />

Bei der Datenmodellierung werden Daten mit anderen Daten in Beziehung<br />

gesetzt.<br />

Große Datenmengen werden insbesondere in Datenbanksystemen verwaltet.<br />

Historisch gesehen, gab es erstmals gerade bei der Datenbankentwicklung<br />

sehr hohe Anforderungen an die Datenmodellierung.<br />

Hierzu wurde das ER-Modell ersonnen:<br />

„E“ steht für Entität (entity, eindeutig identifizierbares Datenobjekt).<br />

Entitätenmengen sind Zusammenfassungen von Entitäten mit gleichen<br />

Attributen, sie werden durch Rechtecke grafisch dargestellt, die Attribute<br />

durch Ellipsen.<br />

„R“ steht für Relationship(menge) (Beziehung, Assoziation) zwischen<br />

den Entitäten(mengen), dargestellt durch Rauten.<br />

Gegeben seien die Entitätenmengen „Abteilung“ und „Mitarbeiter“<br />

mit einer 1 : n-Beziehung (in jeder Abteilung arbeiten n Mitarbeiter,<br />

jeder Mitarbeiter ist genau einer Abteilung zugeordnet). Diese Beziehung<br />

lässt sich grafisch wie folgt darstellen:<br />

Mitarbeiter<br />

n 1<br />

arbeitet Abteilung<br />

in<br />

person_nr name abteil_nr<br />

Dies lässt sich in zwei Relationen (Tabellen) umwandeln:<br />

MITARBEITER(person_nr,abteil_nr,name,...), ABTEILUNG(abteil_nr, ...)<br />

Das erste Datenfeld ist jeweils der Primärschlüssel, der dazu dient,<br />

Beziehungen zwischen den Tabellen herzustellen.<br />

Man kann aber auch 3 Relationen angeben:<br />

MITARBEITER(person_nr,name,...), ABTEILUNG(abteil_nr, ...) und<br />

ARBEITET_IN(person_nr,abteil_nr,...). Hier werden selbst die Relationships<br />

in einer Tabelle abgebildet.<br />

Modelle 45<br />

Etliche informatische<br />

Modelle und<br />

Programmierphilosophien<br />

basieren<br />

auf einer mathematischen<br />

Disziplin, der<br />

formalen Logik. Im<br />

Abschnitt 1.4.3 wird<br />

daher ein Einblick<br />

insbesondere in die<br />

Prädikatenlogik<br />

gegeben.<br />

Auf das ER-Modell<br />

wird im Abschnitt<br />

2.4.2 genauer eingegangen.<br />

Der Sachverhalt kann<br />

auch objektorientiert<br />

modelliert werden,<br />

die Entitätenmengen<br />

werden dann als<br />

„Klassen“ bezeichnet.<br />

Die Transformation<br />

vom ER-Modell auf<br />

konzeptioneller<br />

Ebene in die Implementationsebene<br />

(z. B. der relationalen<br />

Datenbanken) macht<br />

Anpassungen erforderlich.<br />

Im Ergebnis<br />

erhält man eine<br />

Implementierung, in<br />

der z. B. DoppelspeiDoppelspeicherungenvermieden<br />

werden.


46 Grundbegriffe<br />

Objektorientierte<br />

Programmiersprachen<br />

sind u. a.<br />

Delphi oder Java.<br />

Zur objektorientiertenProgrammierung<br />

b auch<br />

Abschnitt 3.3.<br />

Die Entitäten werden bei der Nutzung relationaler Datenbanksysteme<br />

als RECORDs implementiert, die Entitätenmengen (und Relationshipmengen)<br />

in Tabellen abgebildet. Die Attribute entsprechen ARRAY-Typen.<br />

RECORDs und ARRAYs sind Datenstrukturen, für die es in den meisten<br />

Programmiersprachen Ausdrucksmittel gibt.<br />

Es ist meist sinnvoll, Datenstrukturen unabhängig von ihrer programmiertechnischen<br />

Umsetzung zu beschreiben. Auf die Modellierung und<br />

Implementierung solcher „abstrakter Datenstrukturen“ (abstrakte Datentypen,<br />

ADT) wird im folgenden Abschnitt 1.4.2 eingegangen.<br />

Datenflussmodellierung<br />

Bei der Datenflussmodellierung werden komplexe Systeme in überschaubare<br />

Teilsysteme zerlegt und der Informationsfluss zwischen den Teilen<br />

untersucht. Dabei helfen normierte Diagramme, die aus folgenden Elementen<br />

bestehen:<br />

DVD<br />

Zylinder: beständiges<br />

Datenobjekt<br />

(Zwischenspeicherung<br />

von Daten<br />

Objektorientierte Modellierung<br />

Computer Monitor<br />

Ellipse: informationsverarbeitender<br />

Prozess mit Einund<br />

Ausgang (Daten werden<br />

verändert)<br />

Rechteck: Datenquelle/Datensenke<br />

(Schnittstelle des<br />

Systems)<br />

Spätestens in den 1990er-Jahren boomten Informatikanwendungen von<br />

normalen Office-Programmen bis hin zu Spielen derart, dass hierfür effektive<br />

Programmiersprachen entwickelt werden mussten.<br />

Es ist beispielsweise mühsam, immer wieder neue Eingabe-Fenster zu programmieren.<br />

Einfacher ist es, man hat eine schon programmierte Vorlage<br />

(eine Klasse), muss nur noch bestimmte Attributwerte wie Länge, Breite,<br />

Position, Größe des Eingabefeldes usw. festlegen und ohne dass der Programmierer<br />

die Prozedur zur Erstellung des Fensters kennen muss, wird<br />

ein ganz konkretes Objekt auf den Bildschirm gezaubert.<br />

Bei der objektorientierten Programmierung stehen nicht wie bei der prozeduralen<br />

Programmierung Unteralgorithmen und Daten im Zentrum,<br />

sondern Objekte, ihre Zustände und die Kommunikation zwischen den<br />

Objekten.<br />

Für diese Programmierphilosophie wurde von grady boCh, ivar JaCobSon<br />

und Jim rumbough in den 1990er-Jahren eine eigene META-Sprache geschaffen,<br />

die seit 1998 als Standard angesehen wird: UML.<br />

UML steht für Unified Modeling Language. Das ist eine „vereinheitlichte<br />

Modellierungssprache“, die heute allgemein zur Beschreibung objektorientierter<br />

Modelle verwendet wird.<br />

Elemente der objektorientierten Modellierung werden im Abschnitt<br />

1.4.4 erläutert und dabei Modellelemente von UML genutzt.


Zustandsorientierte Modellierung<br />

Objekte können während ihrer Existenz verschiedene Zustände annehmen.<br />

Mithilfe eines Zustandsdiagramms kann man diese Zustände und<br />

alle Funktionen, die zu Zustandsänderungen führen, veranschaulichen.<br />

Ein Zustandsdiagramm beschreibt eine hypothetische Maschine (einen<br />

Automaten), die sich zu jedem Zeitpunkt in einer Menge endlicher<br />

Zustände befindet.<br />

Es gibt einen Anfangszustand (Startzustand), einen oder mehrere<br />

Endzustände, eine endliche Menge von Zuständen, die dazwischen<br />

liegen, und eine endliche Anzahl von Übergängen.<br />

Anfangszustand<br />

Ü1<br />

Zustand1 Zustand2<br />

auslösende Aktion<br />

[Übergangsbedingung]<br />

Ü2<br />

(ausgelöste Aktion)<br />

Zustände repräsentieren einen andauernden Vorgang oder einen konkreten<br />

Attributwert. Übergänge werden durch Pfeile symbolisiert und<br />

mindestens durch die Aktion markiert, die den Übergang auslöst. Werden<br />

durch Übergänge Attributwerte geändert, so erreicht das Objekt<br />

einen neuen Zustand (Ü1). Eine Aktion kann aber auch in den gleichen<br />

Zustand zurückführen (Ü2).<br />

Gegeben ist die nebenstehende<br />

Welt, in der der Marienkäfer Kara<br />

Kleeblätter auslegen oder aufnehmen<br />

kann. Er kann sich auch jeweils<br />

um 90º nach links oder rechts drehen<br />

und einen Schritt vorwärts gehen.<br />

Aufgabe: Kara soll die vorgegebene<br />

Spur von Kleeblättern „auffressen“.<br />

Kara steht zu Beginn auf einem<br />

Kleeblatt, die Spur führt nie entlang<br />

eines Baumes. Kara ist mit Fressen<br />

fertig, sobald Kara auf einem Kleeblatt<br />

vor einem Baum steht.<br />

Folgendes Zustandsdiagramm beschreibt die Lösung der Aufgabe<br />

durch den „Automaten“ Kara.<br />

Baum<br />

suchen<br />

[Baum voraus]<br />

Kleeblatt fressen<br />

[kein Baum voraus]<br />

[Kleeblatt gefunden]<br />

Kleeblatt fressen,<br />

Kleeblatt<br />

suchen<br />

End-<br />

zustand<br />

[kein Kleeblatt]<br />

Modelle 47<br />

Zustandsdiagramme<br />

sind hier nach dem<br />

UML-Standard<br />

angegeben. Solche<br />

Diagramme werden<br />

allerdings schon<br />

länger in der theoretischen<br />

Informatik<br />

zur Beschreibung<br />

endlicher Automaten<br />

genutzt, nur<br />

dass die Zustände<br />

dort als Kreise veranschaulicht<br />

werden,<br />

nicht als Rechtecke<br />

mit abgerundeten<br />

Ecken, was wohl bei<br />

UML eine Verbindung<br />

zum Objektbegriff<br />

herstellen soll<br />

Im Beispiel gibt es<br />

keine auslösenden<br />

Aktionen. Die<br />

Zustandsübergänge<br />

oder bestimmte<br />

Aktionen werden<br />

hier durch Bedingungen<br />

ausgelöst.<br />

Zur Überprüfung<br />

dieser Bedingungen<br />

besitzt der Automat<br />

Kara Sensoren, die<br />

erkennen, ob ein<br />

Baum vor Kara steht<br />

oder ein Kleeblatt<br />

unter ihm liegt.


4 Grundbegriffe<br />

Exportiert ein<br />

Baustein einen<br />

Datentyp, so nennt<br />

man ihn abstrakten<br />

Datentyp, wird<br />

innerhalb des Bausteins<br />

ein einziges,<br />

nicht von außen<br />

zugängliches Objekt<br />

verwaltet, spricht<br />

man von einem<br />

abstrakten DatenobDatenobjekt (ADO). (ADO).<br />

1.4.2 Spezifikation und abstrakte Datentypen<br />

Schnittstellen<br />

Entwurf, Programmierung und Wartung großer komplexer Softwaresysteme<br />

sind eine Herausforderung auch für große Teams. Eine der wichtigsten<br />

allgemeinen Methoden besteht darin, große Teile gegenseitig<br />

abzuschotten und in ihrer Interaktion präzise zu definieren. Dazu werden<br />

die Details einer Komponente hinter einer Schnittstelle so versteckt,<br />

dass über die Interna keine Information nach außen gelangen kann.<br />

Dieses Prinzip heißt seit ParnaS (1972) „Information hiding“. Die Kunst<br />

des Entwurfs besteht darin, Teile zu isolieren, die autonom, reichhaltig,<br />

universell, wiederverwendbar und wartbar sind.<br />

Das Konzept ist, Bausteine mit vollständig und korrekt spezifizierter<br />

Schnittstelle zu entwickeln, die aber ihre Implementierung verheimlichen.<br />

Es wurde in den achtziger Jahren unter dem Namen abstrakte<br />

Datentypen (ADT) entwickelt und liegt auch dem objektorientierten Entwurf<br />

zugrunde.<br />

Abstrakt heißen die Bausteine, weil sie eine Abstraktionsschicht über die<br />

Implementierung legen. Der Anwender kann beim ADT beliebig viele<br />

Objekte des Datentyps mit einer Konstruktionsroutine erschaffen. Die<br />

abstrakte Schnittstelle ist die einzige Möglichkeit, programmtechnisch<br />

mit den geschaffenen Objekten umzugehen. Allerdings braucht der Anwender<br />

der Schnittstelle eine Modellvorstellung, wie die Objekte und<br />

die auf ihnen definierten Funktionen arbeiten, um verständig programmieren<br />

zu können.<br />

Die Schnittstelle eines ADT enthält demnach in der Regel folgende<br />

Elemente:<br />

• eine semantische Beschreibung des Datenmodells für den abstrakten<br />

Typ;<br />

• Erzeugungsfunktionen für Objekte des Typs, sowohl aus dem<br />

„Nichts“ heraus als auch im Zusammenhang mit anderen (z. B.<br />

Element-)Typen;<br />

• Testprädikate zur Untersuchung der Objekte auf Eigenschaften;<br />

• Operationen auf dem Typ, z. B. zur Zergliederung der Objekte,<br />

zum Zusammenbau neuer Objekte des gleichen Typs;<br />

• ggf. Funktionen zur Ein/Ausgabe (Zeichenkettendarstellung, Serialisierung<br />

in eine Datei).<br />

Die Spezifikation einer Schnittstelle kann auf zwei Arten geschehen:<br />

• prädikativ durch<br />

– Spezifizieren der Voraussetzungen (abgekürzt: Vor.) für die Anwendung<br />

von Funktionen/Prozeduren/Methoden,<br />

– Zusicherung der nach Anwendung der Funktionen/Prozeduren/<br />

Methoden entstandenen Ergebnisse/Effekte (abgekürzt: Erg., Eff.)<br />

durch vollständige und konsistente Beschreibung;<br />

• algebraisch durch Formulierung von Gleichungsbeziehungen unter<br />

den Schnittstellenfunktionen (diese Form wird auch gern axiomatisch<br />

genannt).


Abstrakte Datentypen prädikativ spezifiziert<br />

Das Standardbeispiel eines ADT ist der Stapel (engl. stack). Stapel von<br />

Objekten (Teller in der Cafeteria, Aktenstapel) werden durch Zugriff auf<br />

das oberste Element bearbeitet. Die darunterliegenden Elemente bleiben<br />

verborgen.<br />

Modell ist eine Folge von Elementen, bei der auf das oberste (vorderste)<br />

Element lesend und wegnehmend zugegriffen wird und ein neues Element<br />

auf das oberste gelegt werden kann. Diese Zugriffslogik wird häufig<br />

als LIFO (last in, first out) charakterisiert.<br />

Da der Elementtyp nicht festgelegt ist, kann jeder (noch so komplizierte)<br />

Typ als Elementtyp vom Anwender eingesetzt werden. Man sagt auch:<br />

Der Stapel ist im Elementtyp polymorph (lat. vielgestaltig).<br />

Prädikative Spezifikation eines abstrakten Datentyps „Stacks“:<br />

Modelle 4<br />

SPEZIFIKATION<br />

MODELL: Folgen (x 0 , ..., x n-1 }) von Elementen, alle vom gleichen<br />

Typ, die leere Folge () ist zugelassen, n nicht begrenzt.<br />

x 0 heißt Top(-Element), x n-1 Boden des Stack.<br />

ABSTRAKTER DATENTYP Stacks(Element)<br />

NUTZT Element, Bool<br />

EXPORTIERT TYP Stacks(Element), FUNKTIONEN empty, push, isempty, top, pop<br />

SIGNATUR<br />

KONSTRUKTOREN<br />

empty :: Stacks(Element)<br />

| Vor.: -<br />

| Erg.: Ein leerer Stack.<br />

push :: Element × Stacks(Element) -> Stacks(Element)<br />

| Vor.: -<br />

| Erg.: push(x,s) ist der unveränderte Stack s mit neuem Topelement x<br />

PRÄDIKATE<br />

isempty :: Stacks(Element) -> Bool<br />

| Vor.: -<br />

| Erg.: Genau dann wahr, wenn der Stack leer ist.<br />

OPERATIONEN<br />

top :: Stacks(Element) -> Element<br />

| Vor.: Der Stack ist nicht leer.<br />

| Erg.: Eine Kopie des obersten Elements des Stacks.<br />

pop :: Stacks(Element) -> Stacks(Element)<br />

| Vor.: Der Stack ist nicht leer.<br />

| Erg.: Der Stack ohne oberstes Element, alle Elemente sind unverändert.<br />

Die Operationen top und pop sind nicht voraussetzungslos: Der Anwender<br />

der Schnittstelle muss vor Verwendung der Funktionen Sorge tragen,<br />

dass der Stack nicht leer ist. Deshalb muss es in der Schnittstelle eine<br />

Funktion geben, mit der der Anwender das testen kann. Die anderen<br />

Funktionen sind voraussetzungslos. In imperativen Implementierungen<br />

kommt noch die Voraussetzung hinzu, dass die beteiligten Objekte initialisiert<br />

sein müssen.<br />

Die Spezifikation heißt prädikativ, weil Behauptungen aufgestellt werden.<br />

Vor Anwendung der Funktionen müssen bestimmte Gegebenheiten<br />

Top-<br />

Element<br />

Stapel (Stack, Keller)<br />

und LIFO-Prinzip


50 Grundbegriffe<br />

vorliegen. Das steht in den „Voraussetzungen“. Sind die Voraussetzungen<br />

bei der Anwendung der Funktion erfüllt, werden für die Ergebnisse<br />

(Effekte) nach Ausführung der Operation wieder Zusicherungen<br />

gemacht. Sind die Voraussetzungen bei der Ausführung nicht erfüllt, so<br />

ist das Ergebnis undefiniert. Die Implementierung darf in diesem Fall beliebig<br />

reagieren.<br />

Diese Technik kann man auch als eine Art Kontrakt (Vertrag) zwischen<br />

Anwender und Implementierer der Schnittstelle begreifen: die Verantwortlichkeiten<br />

sind eindeutig und widerspruchsfrei festgelegt.<br />

Sind in der Spezifikation der Operationen Voraussetzungen genannt,<br />

so müssen in der Schnittstelle Funktionen bzw. Prädikate<br />

vorhanden sein, die es dem Anwender gestatten, diese Voraussetzungen<br />

zu erfüllen bzw. zu überprüfen.<br />

Abstrakte Datentypen algebraisch spezifiziert<br />

Die andere Methode zur Festlegung der Semantik der Operationen eines<br />

abstrakten Datentyps bedient sich algebraischer Gleichungen. Durch sie<br />

wird noch viel deutlicher, dass die Schnittstellenfunktionen nicht unabhängig<br />

voneinander erschaffen sind. Ihr Zusammenspiel definiert gerade<br />

die Bedeutung!<br />

Algebraische Spezifikation des ADT „Stacks“:<br />

SPEZIFIKATION<br />

MODELL: Folgen (x 0 , ..., x n-1 ) von Elementen,<br />

alle vom gleichen Typ. Die leere Folge () ist<br />

zugelassen, n ist nicht begrenzt.<br />

x 0 heißt Top(-Element), x n-1 Boden des Stack.<br />

ABSTRAKTER DATENTYP Stacks(Element)<br />

NUTZT Element, Bool<br />

EXPORTIERT TYP Stacks(Element), FUNKTIONEN empty,<br />

push, isempty, top, pop<br />

SIGNATUR<br />

KONSTRUKTOREN<br />

empty :: Stacks(Element)<br />

push :: Element × Stacks(Element) -> Stacks (Element)<br />

PRÄDIKATE<br />

isempty :: Stacks(Element) -> Bool<br />

OPERATIONEN<br />

top :: Stacks(Element) -> Element<br />

pop :: Stacks(Element) -> Stacks(Element)<br />

AXIOME<br />

top(empty) = undefiniert<br />

top(push(x,s)) = x<br />

pop(empty) = undefiniert<br />

pop(push(x,s)) = s<br />

isempty(push(x,s)) = false<br />

isempty(empty) = true


Die Signatur wird zur reinen Typfestlegung, die Semantik verbirgt sich in<br />

den „Axiomen“. Die Gleichungen beschreiben in der Regel die Wirkung<br />

der Prädikate und Operationen auf die „aufbauenden“ Funktionen, hier<br />

empty und push. Sie können als Behauptungen gelesen werden, z. B.<br />

pop(push(x,s)) = s als „Wird auf einen Stapel s, auf den ein Element<br />

x gepusht wird, pop angewendet, so erhält man den Stapel s zurück.“<br />

Programmiersprachliche Realisierung von ADTs<br />

Einige Sprachen unterstützen durch spezielle Konstrukte die Spezifikation<br />

und Implementierung von ADTs (die funktionalen Sprachen SML,<br />

Hope und Miranda zum Beispiel). In der funktionalen Sprache Haskell<br />

werden das module-Konzept und Monaden dafür verwendet.<br />

Im Imperativen ist Modula-2 mit seinem Modulkonzept wegen der strikten<br />

Trennung von Schnittstelle und Implementierung besonders geeignet.<br />

In Java 5.0 werden Schnittstellen (interfaces) und Generizität genutzt,<br />

ansonsten ist das Klassenkonzept der Trennung von Schnittstelle und<br />

Implementierung eher hinderlich. Realisierungen gängiger ADTs finden<br />

sich in den sogenannten Collection Classes der Java-Bibliothek.<br />

In Pascal-Varianten wird man mit implementierungsabhängigen Spracherweiterungen<br />

wie dem Unit-Konzept arbeiten. Auch in Sprachen mit<br />

eher schwachen Abstraktionskonzepten (C zum Beispiel) lassen sich durch<br />

Konventionen und disziplinierte Programmierung ADTs realisieren.<br />

Abstrakte Datentypen sind ein programmiersprachenunabhängiges,<br />

allgemeines informatisches Konzept und damit unabhängig von<br />

sprachlichen Modeströmungen. In den gängigen Programmiersprachen<br />

wird es unterschiedlich gut unterstützt.<br />

Gezeigt wird die Realisierung des ADT „Stacks“ in Miranda:<br />

abstype stack *<br />

with<br />

empty :: stack *<br />

|| Vor.: -<br />

|| Erg.: Ein leerer Stack<br />

isempty :: stack * -> bool<br />

|| Vor : -<br />

|| Erg.: Genau dann wahr, wenn der Stack leer ist.<br />

push :: * -> stack * -> stack *<br />

|| Vor.: -<br />

|| Erg.: push x s ist der unveränderte Stack s<br />

|| mit neuem Topelement x<br />

top :: stack * -> *<br />

|| Vor : Der Stack ist nicht leer<br />

|| Erg.: Eine Kopie des obersten Elements des Stacks.<br />

pop :: stack * -> stack *<br />

|| Vor : Der Stack ist nicht leer<br />

|| Erg.: pop s ist der Stack s ohne das oberste<br />

|| Element, sonst ist nichts verändert.<br />

Modelle 51<br />

Programmiersprachen<br />

kommen<br />

und gehen, ADTs<br />

bleiben.


52 Grundbegriffe<br />

Die Softwarewartungsfirma<br />

dankt :-)<br />

Das hat nichts mit<br />

realen Rollen zu<br />

tun, der Programmierer<br />

ist hier sein<br />

eigener „Kunde“, er<br />

programmiert nur<br />

auf einer anderen<br />

Ebene.<br />

|| Einfügen der Implementierung<br />

%insert "stackimpl1.m" || Austausch der Implementie-<br />

%insert "stackimpl2.m" || rung durch wechselseitiges<br />

||Entkommentieren/Auskommentieren<br />

Erste Implementierung mit dem Listentyp von Miranda:<br />

stack * == [*] || Bindung des abstrakten Typs an den<br />

|| eingebauten Listentyp<br />

|| Abstraktionsfunktion: Der konkreten Liste<br />

|| [x 0 , ..., x n-1 ] der Implementierung ist der<br />

|| abstrakte Wert (x 0 , ..., x n-1 ) zugeordnet.<br />

empty = []<br />

isempty s = s = []<br />

push x xs = x:xs<br />

top (x:xs) = x || partielle Definition, scheitert<br />

|| bei leerer Liste<br />

pop (x:xs) = xs || dto.<br />

Zweite Implementierung mit einem algebraischen Datentyp in Miranda:<br />

stack * == stapel * || Bindung des abstrakten Typs an<br />

|| den algebraischen Stapel, Abstraktionsfunktion: Dem<br />

|| konkreten Wert P x 0 (P x 1 (... (P x n-1 E)...)<br />

|| der Implementierung ist der abstrakte Wert<br />

|| (x 0 , ..., x n-1 ) zugeordnet.<br />

stapel * ::= E | P * (stapel *)<br />

empty = E<br />

isempty s = s = E<br />

push x s = P x s<br />

top (P x s) = x || partiell<br />

pop (P x s) = s || partiell<br />

Eine korrekte Implementierung – besonders im Imperativen – muss explizit<br />

machen, wo sich die abstrakten Objekte in der Implementierung wiederfinden.<br />

Das kann bei Geflechten relativ aufwendig sein, ist aber für<br />

die Softwarewartung unverzichtbar. Die Zuordnung des konkreten Objekts<br />

zum abstrakten Wert des Modells heißt auch Abstraktionsfunktion.<br />

Häufig gibt es Beschränkungen (Feldgrenzen etwa), die die Implementierungen<br />

aller Schnittstellenfunktionen einhalten müssen. Dies wird in<br />

der Repräsentationsinvariante notiert.<br />

Der Implementierer eines ADT notiert bei der gewählten Repräsentation<br />

den „abstrakten Wert in der Sprache der Repräsentation“<br />

(die Abstraktionsfunktion) und ggf. einzuhaltende Invarianten.<br />

Der Anwender der ADT-Schnittstelle wird häufig als „Kunde“ bezeichnet,<br />

sein Programm als „Kundenprogramm“. Ihm bleibt verborgen, welche<br />

Implementierung benutzt wird. Ihm bleibt nur die Schnittstelle und<br />

die sorgfältige Beschreibung ihrer Semantik zur Programmierung. Wegen<br />

der Unkenntnis der Implementierung reicht es nicht, sprechende Namen<br />

für die Schnittstellenfunktionen zu erfinden und darauf zu hoffen,<br />

dass der Anwender schon versteht, was gemeint ist.


Modelle 53<br />

Kundenmodul zum ADT „Stacks“:<br />

Mit der Schnittstelle Stacks(Element) kann in einem Kundenmodul<br />

beispielsweise folgende Aufgabe gelöst werden:<br />

Schreibe eine Funktion, die einen Rechenausdruck auf korrekte<br />

Klammerung mit runden Klammern überprüft.<br />

Lösung mit Hilfe eines „Klammerstapels“, also eines Stack(Char):<br />

Man lege nur die öffnenden Klammern auf den Stapel und werfe bei<br />

jeder sich schließenden Klammer in der Eingabezeichenkette eine<br />

Klammer vom Stapel. Bleibt am Ende eine öffnende Klammer auf<br />

dem Stapel oder ist in der Eingabe noch eine schließende Klammer<br />

und der Stapel leer, so ist der Ausdruck falsch geklammert. Ist am<br />

Ende der analysierten Zeichenkette auch der Stapel leer, so war der<br />

Ausdruck korrekt.<br />

%include "stack.m" || Import von stack *, empty, isempty, push, pop<br />

korrekt :: [char] -> stack char -> bool || Nutzung von stack *<br />

|| als Zeichenstapel<br />

korrekt [] s = isempty s<br />

korrekt (c:xs) s = korrekt xs (push c s), if c = ’(’<br />

= korrekt xs (pop s), if c = ’)’ & ~isempty s<br />

= False, if c = ’)’ & isempty s<br />

= korrekt xs s, otherwise|| Überlesen anderer Zeichen<br />

test1 = korrekt "2+(3-5*(3-2)+4)" empty || korrekt<br />

test2 = korrekt "(()((()))()" empty || nicht korrekt<br />

Zusammenfassung<br />

Das ADT-Konzept unterstützt unabhängige Teamarbeit in größeren Softwareprojekten.<br />

Teams können bereits mit den (sorgfältig spezifizierten,<br />

nicht mehr veränderbaren) Schnittstellen programmieren, während andere<br />

sich um effiziente Implementierungen eben dieser Schnittstellen<br />

kümmern.<br />

• ADTs verwirklichen das Prinzip des „Information Hiding“ in Softwaresystemen.<br />

• Zentral ist die Trennung von Schnittstelle und Implementierung.<br />

• Eine ADT-Schnittstelle stellt einen Typ und die auf ihm operierenden<br />

Funktionen/Prozeduren zur Verfügung.<br />

• Die ADT-Schnittstelle funktioniert nur dann als Programmiergrundlage,<br />

wenn die Semantik des Typs und der Operationen exakt beschrieben<br />

ist.<br />

• Die Implementierungen von ADTs können ausgetauscht werden, ohne<br />

dass Anwendungsprogramme davon betroffen sind.<br />

• Das ADT-Konzept macht große Softwaresysteme wartbar, weil sich Implementierungsänderungen<br />

nur lokal auswirken.<br />

• Das abstrakte Datenobjekt (ADO) ist ein Spezialfall: Es dient der Verwaltung<br />

eines einzigen, zustandsbehafteten und in der Regel ziemlich<br />

dicken Objekts über eine abstrakte Schnittstelle.<br />

• Sprachen, die ADTs unterstützen sind unter anderen: die funktionalen<br />

Sprachen SML, Hope, Miranda, Haskell, die imperativen Sprachen Modula-2,<br />

Modula-3, ADA. In objektorientierten Programmiersprachen<br />

fällt die Implementierung nicht so leicht. Das Klassenkonzept vermengt<br />

leider Typ (= Schnittstelle) und Implementierung.


54 Grundbegriffe<br />

1.4.3 Prädikatenlogik<br />

Aussagen, Relationen, Funktionen, Kalküle<br />

Die formale Logik untersucht Zusammenhänge zwischen (logischen) Aussagen<br />

und stellt Regeln für das logische Schließen bereit. Das kann man<br />

vergleichen mit der Arithmetik, die Zusammenhänge zwischen Zahlen<br />

untersucht und Regeln für das Rechnen bereitstellt.<br />

Aussagen im Sinne der Logik sind entweder wahr oder falsch. Zum Beispiel<br />

ist „5 ist größer als 3“ eine wahre Aussage, und „5 ist größer als 6“<br />

eine falsche Aussage. Man sagt dazu auch, dass die erste Aussage gilt, die<br />

zweite dagegen nicht.<br />

In der Prädikatenlogik drücken die einfachsten („atomaren“) Aussagen<br />

immer Beziehungen (Relationen, Prädikate) zwischen irgendwelchen<br />

Objekten aus. Formal beschreibt man Beziehungen zwischen n Objekten<br />

c 1 ,...,c n durch n-stellige Relationen r(c 1 ,...,c n ). Dabei wird eine<br />

Präfix-Schreibweise verwendet, der Name r der Relation steht vor der<br />

Aufzählung der Objekte.<br />

Man schreibt größer(5,3) statt 5>3 oder<br />

familie(ingrid,fred,anna) statt<br />

ingrid und fred sind eltern von anna.<br />

Als Argumente einer Relation können konkrete Objekte oder Variable<br />

betrachtet werden. In der Regel kann man aber nur dann feststellen, ob<br />

eine Relation zutrifft (wahr ist), wenn die Variablen einen bestimmten<br />

Wert erhalten. Da eine Aussage immer entweder wahr oder falsch ist, ist<br />

größer(X,Y) mit Variablen X und Y zwar ein logischer Ausdruck, aber<br />

noch keine Aussage.<br />

Eine Funktion f(X 1 ,...,X n ) ordnet jeweils bestimmten Objekten<br />

c 1 ,...,c n wiederum ein Objekt c zu, also zum Beispiel eine Zahl. Man<br />

kann auch eine Funktion mutter betrachten, die jeweils einer Person c<br />

ihre Mutter mutter(c) zuordnet, also z. B. mutter(anna)=ingrid.<br />

Relationen r(X 1 ,...,X n ) können dagegen in Abhängigkeit vom Wert<br />

der Variablen nur zutreffen (wahr sein) oder nicht (falsch sein).<br />

Funktionen können, da sie ja wiederum Objekte bezeichnen, auch als<br />

Argumente von Relationen auftreten, und sie können dabei auch verschachtelt<br />

sein:<br />

familie(mutter(mutter(olga)),vater(mutter(thea)),anna).<br />

Dagegen dürfen in der hier betrachteten Prädikatenlogik der ersten<br />

Stufe die Relationen nicht als Argumente von Funktionen oder Relationen<br />

auftreten.<br />

Man kann n-stellige Funktionen f(X 1 ,...,X n ) auch durch n+1stellige<br />

Relationen r(X 1 ,...,X n , f(X 1 ,...,X n )) beschreiben,<br />

indem man den Funktionswert als weiteres Argument der Relation<br />

verwendet: r(c 1 ,...,c n ,c) ist wahr, wenn f(c 1 ,...,c n )=c<br />

gilt. Aus funktion_mutter(anna)=ingrid wird also relation_<br />

mutter(anna,ingrid).


Ein logischer Kalkül entsteht dadurch, dass man logische Ausdrücke miteinander<br />

verknüpfen kann und dadurch neue Ausdrücke erhält. Man<br />

kann auf diese Weise komplexere Zusammenhänge beschreiben und<br />

neue Relationen definieren.<br />

Quantifizierung<br />

Man kann eine Relation eltern definieren durch<br />

eltern(X,Y):= existiert K mit familie(X,Y,K).<br />

Die Relation nächster_Nachbar(X,N):= für alle Z gilt größer<br />

(distanz(X,Z),distanz(X,N)) wird wahr, wenn N der nächste<br />

Nachbar von X ist, wobei die Funktion distanz den Abstand angibt.<br />

Hier wurde jeweils eine der Variablen quantifiziert.<br />

Quantifizierungen sind grundlegend für die Prädikaten-Logik, dafür<br />

gibt es die speziellen Zeichen, die Quantoren, ∀ („für alle“) und ∃<br />

(„es existiert“).<br />

Aus einer n-stelligen Relation r(X 1 ,...,X n ) wird durch Quantifizierung<br />

der i-ten Variablen eine (n-1)-stellige Relation<br />

p(X 1 ,...,X i–1 ,X i+1 ,...,X n )):= ∀X i (r(X 1 ,...,X n )) bzw.<br />

q(X 1 ,...,X i–1 ,X i+1 ,...,X n )):= ∃X i (r(X 1 ,...,X n )).<br />

Wenn alle Variablen in einem Ausdruck quantifiziert sind, erhält man<br />

eine Aussage. Dabei kommt es auf verschiedene Dinge an.<br />

• Zunächst spielt die Reihenfolge eine wichtige Rolle:<br />

Die Aussage ∀X(∃Y(größer(Y,X))) ist wahr im Bereich der natürlichen<br />

Zahlen (es gibt immer eine noch größere Zahl), die Aussage<br />

∃Y(∀X(größer(Y,X))) dagegen nicht (es gibt keine Zahl, die alle<br />

anderen Zahlen und sich selbst übertrifft).<br />

• Wichtig ist weiterhin, auf welchen Bereich U von Objekten man sich<br />

jeweils bezieht (U steht für Universum).<br />

Die Aussage ∃Y(∀X(kleiner_oder_gleich(Y,X))) ist wahr für das<br />

Universum U der natürlichen Zahlen, aber nicht für die ganzen Zahlen.<br />

Aussagenverbindungen, aussagenlogische Operationen<br />

Die Relation schwester kann man definieren durch<br />

schwester(X,Y):= ∃M(∃V(familie(M,V,X) und<br />

familie(M,V,Y) und weiblich(X) und ungleich(X,Y))).<br />

Die Relation großvater kann man definieren durch<br />

großvater(GV,E):= ∃GM(∃M1[familie(GM,GV,M1) und<br />

∃V1(familie(M1,V1,E))] oder ∃V2[familie(GM,GV,V2)<br />

und ∃M2(familie(M2,V2,E))]).<br />

Da sich in den Beispielen auf das Prädikat familie bezogen wird, müssen<br />

die Partner einbezogen werden. Zunächst gehört zu einem Großvater GV<br />

die jeweilige Großmutter GM: Ihr Existenz-Quantor (Klammern beachten,<br />

Modelle 55<br />

Die Klammern<br />

werden notwendig,<br />

wenn später komplexere<br />

Ausdrücke<br />

betrachtet werden.<br />

Man kann auch<br />

mehrmals quantifizieren,<br />

allerdings<br />

sollte jedes Argument<br />

nur einmal<br />

quantifiziert werden<br />

(die Regeln eines<br />

korrekten syntaktischen<br />

Aufbaus von<br />

logischen Ausdrücken<br />

werden hier<br />

ausgespart).<br />

Sind alle Variablen<br />

in einem Ausdruck<br />

quantifiziert, so<br />

handelt es sich um<br />

eine Aussage, die<br />

entweder wahr oder<br />

falsch ist.


56 Grundbegriffe<br />

unterschiedliche Klammern sollen die Lesbarkeit etwas erleichtern) bezieht<br />

sich auf den gesamten restlichen Ausdruck. Danach wird zunächst<br />

der Großvater mütterlicherseits erfasst, es muss also die Mutter M1 zum<br />

Enkel E existieren, und diese braucht wieder einen Partner V1. Hier beziehen<br />

sich die Quantoren nur noch auf Teile des weiteren Ausdrucks.<br />

Anschließend wird analog der Großvater väterlicherseits betrachtet.<br />

Neben der Verwendung der Quantoren wurden jetzt auch unterschiedliche<br />

Relationen miteinander verknüpft, indem wir die logischen Operatoren<br />

und bzw. oder verwendet haben. Im Folgenden werden die<br />

Symbole ∧ für das und bzw. ∨ für das oder verwendet. Mithilfe solcher<br />

Operatoren kann man komplexere Aussagenverbindungen erzeugen,<br />

deshalb heißen sie aussagenlogische Operatoren. Wesentlich ist dabei,<br />

dass ihre Wirkung unabhängig vom konkreten Inhalt der Aussagen ist,<br />

sie sind extensional. Das heißt, die Gültigkeit einer Aussagenverbindung<br />

hängt nur davon ab, ob die beteiligten Aussagen wahr bzw. falsch<br />

sind.<br />

Die Bedeutung des Operators ∧ ist intuitiv klar: Die Aussagenverbindung<br />

A1 ∧ A2 (Konjunktion) ist wahr, wenn beide Aussagen A1 und A2 gelten,<br />

andernfalls ist sie falsch.<br />

Der Operator ∨ wird hier im nicht-ausschließenden Sinn gebraucht,<br />

A1 ∨ A2 (Disjunktion) ist genau dann wahr, wenn wenigstens eine der<br />

beiden Aussagen A1 bzw. A2 gilt. Die Großvater-Relation trifft auch<br />

dann zu, wenn die beiden mit ∨ verknüpften Möglichkeiten zutreffen<br />

(Vater und Mutter des Enkels könnten auch Geschwister sein, zumindest<br />

in den antiken Legenden kommt so etwas vor).<br />

Als weitere zweistellige Aussagenverbindungen kommen in Betracht:<br />

• entweder gilt A1 oder A2 (ausschließendes oder, Alternative),<br />

• wenn A1 gilt, dann gilt A2 (Implikation, das Zeichen dafür ist ⇒),<br />

• A1 gilt genau dann, wenn A2 gilt (Äquivalenz, Zeichen: ⇔).<br />

Da die aussagenlogischen Operatoren nur die Werte wahr und falsch<br />

kennen, kann man ihre Wirkungsweise einfach durch Wahrheitstabellen<br />

darstellen. Insgesamt kann es 16 zweistellige Aussagenverbindungen geben,<br />

einige davon listet die folgende Tabelle auf.<br />

A1 A2 A1 ∧ A2 A1 ∨ A2 A1 ⇒ A2 A1 ⇔ A2<br />

wahr wahr wahr wahr wahr wahr<br />

wahr falsch falsch wahr falsch falsch<br />

falsch wahr falsch wahr wahr falsch<br />

falsch falsch falsch falsch wahr wahr<br />

Die Definition der Implikation könnte verwundern: Die Aussagenverbindung<br />

A1 ⇒ A2 ist auch wahr, wenn A1 den Wert falsch, und A2 den Wert<br />

wahr hat. Diese Aussagenverbindung beschreibt nicht die Gleichwertigkeit<br />

von A1 und A2 (das macht schon die Äquivalenz). Sie beschreibt die<br />

Gültigkeitserblichkeit beim korrekten Schließen: Wenn die Voraussetzungen<br />

wahr sind, darf eine korrekte Schlussregel auch nur zu gültigen<br />

Schlussfolgerungen führen. Wenn die Voraussetzungen falsch sind, kann<br />

über die Gültigkeit der Schlussfolgerungen nichts gesagt werden.


Von den vier möglichen einstelligen Aussagenverbindungen<br />

ist das nicht, die Negation, interessant.<br />

Das Symbol dafür ist ¬.<br />

Äquivalente Ausdrücke, Umformungsregeln<br />

A ¬ A<br />

wahr falsch<br />

falsch wahr<br />

Ähnlich wie bei arithmetischen Ausdrücken kann man auch logische Ausdrücke<br />

umformen. Dafür gibt es „logische Rechenregeln“.<br />

Eine solche Regel lautet: ¬(A1 ∨ A2) = (¬A1) ∧ (¬A2)<br />

Dabei bedeutet das Gleichheitszeichen, dass auf beiden Seiten immer<br />

der gleiche Wahrheitswert entsteht, wenn die Ausdrücke A1<br />

und A2 auf beiden Seiten die gleichen Werte haben. Man sagt dazu,<br />

dass die beiden Ausdrücke H1 auf der linken und H2 auf der rechten<br />

Seite äquivalent sind. Tatsächlich wird der Ausdruck H1 ⇔ H2 gerade<br />

dann wahr, wenn H1 und H2 äquivalent sind.<br />

Analog zum Rechnen in der Arithmetik, kann man logische Ausdrücke<br />

äquivalent umformen, indem man Teil-Ausdrücke durch äquivalente<br />

Ausdrücke ersetzt. Um keine Zweifel über die Zusammenhänge aufkommen<br />

zu lassen, verwendet man bei Bedarf Klammern (hier wird wieder<br />

auf genauere syntaktische Festlegungen und Vorrangregeln für die Operatoren<br />

verzeichtet).<br />

Eine weitere, ähnliche Regel besagt: ¬(A1 ∧ A2) = (¬A1) ∨ (¬A2)<br />

Es gelten auch die folgenden logischen Rechenregeln (Kommutativgesetze,<br />

Assoziativgesetze und Distributivgesetze):<br />

A1 ∧ A2 = A2 ∧ A1<br />

A1 ∨ A2 = A2 ∨ A1<br />

(A1 ∧ A2) ∧ A3 = A1 ∧ (A2 ∧ A3)<br />

(A1 ∨ A2) ∨ A3 = A1 ∨ (A2 ∨ A3)<br />

(A1 ∧ A2) ∨ A3 = (A1 ∨ A3) ∧ (A2 ∨ A3)<br />

(A1 ∨ A2) ∧ A3 = (A1 ∧ A3) ∨ (A2 ∧ A3)<br />

Die Äquivalenz kann man mithilfe der Implikation und der Konjunktion<br />

ausdrücken, die Implikation dann wiederum mithilfe der Alternative und<br />

der Negation:<br />

A1 ⇔ A2 = (A1 ⇒ A2) ∧ (A2 ⇒ A1)<br />

A1 ⇒ A2 = (¬A2) ∨ A1.<br />

Die „Rechenregeln“ erlauben die Umformung und Vereinfachung von<br />

aussagenlogischen Ausdrücken (b auch Randspalte). Hilfreich ist dabei<br />

auch die Elimination einer doppelten Verneinung: ¬(¬A) = A<br />

Aus ¬(A1 ∧ A2)=(¬A1) ∨ (¬A2) erhält man zum Beispiel durch Negation<br />

auf beiden Seiten ¬(¬(A1 ∧ A2))= ¬((¬A1) ∨ (¬A2)) und<br />

durch Elimination der doppelten Verneinung die Äquivalenz A1 ∧ A2=<br />

¬((¬A1) ∨ (¬A2)). Mit dieser Regel kann man also den Operator ∧<br />

durch die Operatoren ¬ und ∨ ersetzen.<br />

Modelle 57<br />

Die Regeln<br />

¬(A1 ∨ A2) =<br />

(¬A1) ∧ (¬A2)<br />

und<br />

¬(A1 ∧ A2) =<br />

(¬A1) ∨ (¬A2)<br />

werden auch als<br />

morgansche Gesetze<br />

bezeichnet und<br />

helfen beim Ersetzen<br />

von logischen<br />

Schaltungen durch<br />

gleichwertige Gatter<br />

(b auch S. 373).<br />

Die Rechenregeln<br />

basieren auf<br />

Tautologien. Eine<br />

Tautologie ist eine<br />

Aussage, die immer<br />

wahr ist.<br />

Eine Tautologie ist<br />

auch das Gesetz vom<br />

ausgeschlossenen<br />

Dritten: A ∨ ¬A<br />

Tautologien mit<br />

Implikationen entsprechen<br />

logischen<br />

Schlüssen, die man<br />

beim Beweisen<br />

nutzen kann:<br />

A1 ∧ (A1 ⇒ A2) ⇒ A2<br />

(Abtrennungsregel)<br />

A1∧(¬A2⇒¬A1)⇒A2<br />

(indirekter Schluss)<br />

(A1 ⇒ A2) ∧ (A2 ⇒ A3)<br />

⇒ (A1 ⇒ A3)<br />

(Kettenschluss)<br />

(A1 ⇒ A2) ⇔<br />

(¬A2 ⇒ ¬A1)<br />

(Kontraposition)


5 Grundbegriffe<br />

Der logische Operator<br />

nand (NICHT-<br />

UND, NAND-Gatter)<br />

ist im Abschnitt 4.1.2<br />

genauer erklärt.<br />

Darüber hinaus kann man jede denkbare Aussagenverbindung H mit n<br />

Aussagenvariablen A1, ..., An allein mit ∧, ∨, ¬ ausdrücken. Für die n Aussagenvariablen<br />

gibt es insgesamt 2 n verschiedene Möglichkeiten, ihnen<br />

die Werte wahr bzw. falsch zuzuordnen. Man bezeichnet diese Möglichkeiten<br />

als Belegungen. Eine Belegung ist also eine Abbildung b der<br />

Menge {A1,...,An} in die Menge {wahr,falsch}.<br />

Für jede Belegung b nimmt H einen Wert wahr bzw. falsch an. H ist<br />

also durch eine Wahrheitstabelle mit 2 n Zeilen beschreibbar. Jetzt wird<br />

ein Ausdruck H’ gesucht, der nur die Operatoren ∧, ∨, ¬ benutzt und die<br />

gleiche Wahrheitstabelle besitzt, der also zu H äquivalent ist.<br />

Zunächst betrachtet man sogenannte Elementar-Konjunktionen K=<br />

L1∧L2∧...∧Ln, wobei für einen Ausdruck Li entweder Ai selbst oder<br />

die Negation ¬Ai stehen kann. Auf Klammern kann wegen der Assoziativität<br />

verzichtet werden. Jede Elementarkonjunktion wird bei genau<br />

einer Belegung b wahr, nämlich bei der Belegung b mit b(Ai)=wahr,<br />

falls Li=Ai, und b(Ai)=falsch, falls Li=¬Ai. Umgekehrt gibt es auch<br />

zu jeder Belegung b genau eine Elementarkonjunktion K b , die bei b den<br />

Wert wahr annimmt.<br />

Jetzt benutzt man nur diejenigen Belegungen b1,...,bk, bei denen der<br />

Ausdruck H den Wert wahr besitzt und bildet die Alternative aus den<br />

zugehörigen Elementarkonjunktionen:<br />

H’= (K b1 ) ∨ (K b2 ) ∨ ... ∨ (K bk )<br />

Dann wird H’ genau dann wahr, wenn eine der benutzten Elementarkonjunktionen<br />

K bi wahr ist, das heißt, wenn bei der entsprechenden<br />

Belegung bi der Ausdruck H den Wert wahr hat. Damit haben H und H’<br />

die gleiche Wahrheitstabelle. Problematisch wird es nur, wenn der Ausdruck<br />

H niemals wahr wird und wenn deshalb unsere Alternative keine<br />

Bestandteile hat. Wenn aber der Ausdruck H immer falsch ist, kann man<br />

ganz einfach einen nur mit ∧, ∨, ¬ gebildeten gleichwertigen Ausdruck<br />

finden, zum Beispiel A1∧(¬A1).<br />

Alternativen aus Elementarkonjunktionen heißen Normalformen, sie<br />

bieten eine einfache Möglichkeit zur Realisierung beliebiger Wahrheitstabellen.<br />

Das ist bedeutsam für die Umsetzung in Hardware. Da<br />

man den Operator ∧ wiederum durch die Operatoren ¬ und ∨ ersetzen<br />

kann, reichen prinzipiell schon diese beiden Operatoren, um beliebige<br />

Wahrheitstabellen zu realisieren. Man kann sogar mit einem einzigen<br />

Operator alle Wahrheitstabellen realisieren, zum Beispiel mit dem Operator<br />

nand, definiert durch A1 nand A2 := ¬(A1 ∧ A2).<br />

Auch für den Umgang mit Quantoren gibt es „Rechenregeln“, die<br />

wichtigsten sind<br />

¬(∃X H) = ∀X (¬H) ,<br />

¬(∀X H) = ∃X (¬H) ,<br />

wobei H wieder ein beliebiger logischer Ausdruck ist, der auch weitere<br />

Quantoren enthalten kann.


Manchmal hilft es dem Verständnis, die Verneinungen „nach innen“ zu<br />

verlagern:<br />

Es soll die Frage betrachtet werden, wer nicht Schwester von anna<br />

ist, also die Negation der Schwester-Relation:<br />

¬schwester(X,anna)= ¬∃M(∃V(familie(M,V,X)<br />

∧ familie(M,V,anna) ∧ weiblich(X) ∧ ungleich(X,anna))))<br />

Man kann die rechte Seite in zwei Schritten umformen in<br />

∀M(∀V¬(familie(M,V,X) ∧ familie(M,V,anna) ∧ weiblich(X)<br />

∧ ungleich(X,anna))))<br />

Mithilfe weiterer Regeln entsteht daraus:<br />

∀M(∀V(¬(familie(M,V,X)) ∧ familie(M,V,anna))<br />

∨ (¬ weiblich(X)) ∨ (¬ ungleich(X,anna))))<br />

Das heißt, die Person X ist nicht die Schwester von anna, wenn sie<br />

nicht zur gleichen Familie gehört oder wenn sie männlich ist oder<br />

aber wenn sie anna selbst ist (insbesondere die letztere Möglichkeit<br />

könnte man vielleicht übersehen).<br />

Theorembeweiser, PROLOG<br />

Die bisherigen Ausführungen zeigen: Man kann logische Zusammenhänge<br />

durch logische Ausdrücke darstellen, und man kann mit diesen<br />

Ausdrücken rechnen wie mit arithmetischen Formeln. Das heißt, man<br />

kann logische Schlussfolgerungen durch Manipulation von Ausdrücken<br />

beweisen.<br />

Dieses Umformen von Ausdrücken kann nun auch ein Computer durchführen:<br />

Die Wahrheitswerte wahr und falsch werden dabei als Zustände<br />

wie „Strom fließt“ bzw. „Strom fließt nicht“ oder „Spannung<br />

vorhanden“ bzw. „Spannung nicht vorhanden“ interpretiert und durch<br />

die Dualziffern 1 bzw. 0 dargestellt. Logische Ausdrücke werden als elektrische<br />

Schaltungen (AND-Gatter, OR-Gatter, NAND-Gatter, NOR-Gatter,<br />

XOR-Gatter, ...) materialisiert.<br />

Man kann Beweise also automatisch durchführen lassen. Während aber<br />

ein Mensch mit seiner Intuition oft schnell die richtigen Umformungen<br />

findet, probiert der Computer solange unterschiedliche Möglichkeiten<br />

durch, bis er einen Beweis gefunden hat.<br />

Solche Verfahren laufen wie folgt ab: Um festzustellen, ob eine Behauptung<br />

aus einer Menge von Voraussetzungen folgt, muss man zunächst<br />

die Voraussetzungen durch eine Menge von logischen Ausdrücken<br />

H 1 ,...,H n darstellen. Diese Voraussetzungen heißen Axiome, und sie<br />

können die Arithmetik, die Geometrie, die Verwandtschaftsverhältnisse<br />

oder aber auch die Funktionsweise von Staubsaugern beschreiben. Die zu<br />

beweisende Behauptung wird dann ebenfalls als Ausdruck H dargestellt.<br />

Je nach dem interessierenden Bereich bezeichnet sie zum Beispiel eine<br />

geometrische Aussage oder einen möglichen Defekt des Staubsaugers.<br />

Jetzt benutzt man ein Verfahren, dass Ausdrücke umformen kann, ein<br />

sogenanntes Inferenzverfahren, und prüft, ob mit diesem Verfahren der<br />

Ausdruck H aus den Ausdrücken H 1 ,...,H n hergeleitet werden kann.<br />

Damit dieses Verfahren sinnvoll anwendbar ist, muss der (rein formale)<br />

Modelle 5<br />

Die wichtigsten<br />

logischen Gatter der<br />

Schaltalgebra sind<br />

im Abschnitt 4.1.2<br />

beschrieben.


60 Grundbegriffe<br />

gödelscher Unvollständigkeitssatz<br />

b auch Abschnitt<br />

5.2.2<br />

Inferenzprozess mit den inhaltlichen Bedeutungen und Schlussfolgerungen<br />

im gegebenen Bereich übereinstimmen. Wenn man aus den<br />

Staubsauger-Axiomen und den Formalisierungen der Beobachtungen<br />

die Aussage ¬hat_Strom(motor) ableiten kann, dann soll das auch in<br />

der Realität die Ursache für die Probleme mit dem Staubsauger beschreiben.<br />

Zu der geforderten Übereinstimmung gehört zunächst die Korrektheit<br />

des Systems (der Axiome und der Umformungsregeln):<br />

Es sollen nur Ausdrücke für solche Behauptungen ableitbar sein, die im<br />

gegebenen Bereich auch tatsächlich richtig sind. Damit das Verfahren die<br />

Behauptung aber auch beweisen kann, muss das System zusätzlich vollständig<br />

sein: Für alle richtigen Behauptungen muss der entsprechende<br />

Ausdruck auch ableitbar sein.<br />

Wenn der Computer jetzt systematisch alle Möglichkeiten durchsucht,<br />

wird er irgendwann den Ausdruck für eine gesuchte Schlussfolgerung<br />

finden. Dazu wird ein Suchverfahren benötigt, das alle Ableitungsmöglichkeiten<br />

systematisch erfasst.<br />

Suchverfahren sind eine vielfach eingesetzte Technik nicht nur für Beweisverfahren.<br />

Fahrplanauskunft, Routenplanung, Schachprogramme,<br />

Datenbanken und vieles mehr verwenden Suchtechniken, um die infrage<br />

kommenden Varianten systematisch zu durchmustern.<br />

Die Voraussetzung für den Erfolg der Suche ist natürlich, dass die Behauptung<br />

aus den gegebenen Voraussetzungen folgt. Wenn der Staubsauger<br />

funktioniert, kann (bei korrekter Formalisierung) die Aussage<br />

¬hat_Strom(motor) nicht bewiesen werden. Es kann dann sein, dass<br />

der Computer ohne Ende neue Ausdrücke ableitet ohne je zu einem Ergebnis<br />

zu kommen. Er müsste ja jetzt feststellen, dass der Ausdruck nicht<br />

ableitbar ist. Dazu müsste er entweder alle ableitbaren Ausdrücke untersuchen<br />

(aber das können tatsächlich unendlich viele sein), oder er müsste<br />

irgendwie auf andere Weise zu dem Ergebnis kommen können, dass der<br />

Ausdruck nicht ableitbar sein kann.<br />

Tatsächlich kann man zeigen, dass für hinreichend komplizierte Theorien,<br />

zum Beispiel für die Arithmetik, ein solcher negativer Nachweis<br />

nicht systematisch geführt werden kann: Es kann kein Computerprogramm<br />

geben, dass für beliebige Aussagen der Arithmetik entscheidet,<br />

ob sie aus den Axiomen der Arithmetik folgen oder nicht (gödelscher<br />

Unvollständigkeitssatz).<br />

Für einfachere Probleme ist dagegen der Ansatz erfolgreich.<br />

PROLOG ist eine Programmiersprache mit eingebautem Theorembeweiser.<br />

Man kann in dieser Programmiersprache die Axiome als Programm<br />

formulieren. Bei einer Anfrage an das Programm versucht das<br />

Inferenzverfahren des PROLOG-Systems einen Beweis zu finden und<br />

liefert das entsprechende Ergebnis. Aus Gründen der Effizienz werden<br />

dabei nicht die ableitbaren Ausdrücke untersucht, sondern es wird ein<br />

indirekter Beweis geführt. Das ist oft einfacher: Um einen Widerspruch<br />

nachzuweisen reicht ein einziges Gegenbeispiel. Die angewendete Methode<br />

heißt Resolutionsverfahren.


1.4.4 Objektorientierte Modellierung<br />

Objekte, Attribute und Methoden<br />

Objekte sind Dinge, Lebewesen oder Sachverhalte der uns umgebenden<br />

realen oder auch virtuellen Welt. Es ist üblich, gleichartige Objekte unter<br />

einem Begriff zusammenzufassen.<br />

Wenn man z. B. den Begriff „Baum“ hört, hat man eine Vorstellung, einen<br />

„Bauplan“, für einen Baum. Es gibt so viele unterschiedliche Bäume,<br />

aber allen ist gemeinsam, dass sie einen Stamm und eine Krone besitzen.<br />

Damit hat man das Wesentliche hervorgehoben: Stamm und Krone.<br />

Alles andere wird erst einmal vernachlässigt. Weil jeder einzelne Baum<br />

nach dem gleichen Bauplan konstruiert ist, spricht man von der Klasse<br />

BAUM.<br />

Die Klasse BAUM ist nicht die Menge aller existierenden Bäume, sondern<br />

eher eine „Idee“ (ähnlich der Ideenlehre PlaTonS, 427 – 347 v. Chr.), eine<br />

Konstruktionsvorschrift für Bäume. Ein konkreter Baum wiederum gehört<br />

der Klasse BAUM an.<br />

Die Klasse BAUM wird letztlich von anderen Objektklassen durch bestimmte<br />

Eigenschaften (Attribute) unterschieden.<br />

Bäume besitzen zum Beispiel einen Standort, einen Stammumfang,<br />

eine Baumhöhe und eine Kronenform.<br />

Sträucher besitzen keinen Stammumfang, gehören also einer anderen<br />

Klasse an.<br />

Die einzelnen Objekte einer Klasse werden durch ihre Attributwerte unterschieden.<br />

Bäume kann man beispielsweise durch folgende Attributwerte unterscheiden:<br />

• Jeder Baum besitzt einen anderen Standort. Das ist ein grundlegendes<br />

Unterscheidungsmerkmal.<br />

Attributwerte können hier sein: „an unserem Haus“, „in der nordöstlichen<br />

Ecke von Brittas Garten“, „der fünfte Baum auf der linken<br />

Straßenseite“ usw.<br />

• Werte für das Attribut Stammumfang könnten sein: „60 cm“,<br />

„95 cm“, „1 m“, „2 Armlängen“, ...<br />

• Beispiele für Attributwerte für die Baumhöhe sind: „12,50 m“,<br />

„9,00 m“, „2 m höher als unser Haus“.<br />

• Kronenformen können sein: „kugelförmig“ (z. B. beim Apfelbaum)<br />

oder „kegelförmig“ (z. B. bei der Tanne) usw.<br />

Bäume führen auch bestimmte Aktivitäten aus, die Informatiker sagen<br />

Methoden. Bäume können „wachsen“ oder sich „im Wind biegen“.<br />

Beim Auslösen bestimmter Methoden reagiert der Baum auf Botschaften.<br />

Solche Botschaften könnten hier sein: „Der Frühling hat begonnen. Die<br />

Sonne steht höher am Himmel. Es wird wärmer.“ oder „Es weht ein<br />

starker Wind.“<br />

Modelle 61<br />

Die „Botschafts-Betrachtungsweise“<br />

ist erst einmal ungewohnt.<br />

Wer sagt<br />

schon „Der Baum<br />

erhält die Botschaft,<br />

dass ein starker Wind<br />

weht. Damit wird<br />

die Methode Sichbiegen<br />

ausgelöst.“?<br />

Andererseits ist diese<br />

Modellierung durchaus<br />

einleuchtend,<br />

wenn man an einen<br />

Programmierer<br />

denkt, der ein Computerspielentwickeln<br />

soll, in dem die<br />

Natur nachgebildet<br />

wird, und der Spieler<br />

per Knopfdruck auch<br />

Wind „erzeugen“<br />

kann.


62 Grundbegriffe<br />

Eine Klasse ist<br />

eine Schablone<br />

zum Erzeugen<br />

von Objekten. Die<br />

Ansammlung aller<br />

Objekte einer Klasse<br />

heißt Klassenextension.<br />

Klasse und<br />

Klassenextension<br />

sind nicht dasselbe.<br />

Objekte sind Dinge, Lebewesen oder Sachverhalte der uns umgebenden<br />

Welt.<br />

Mit Klasse bezeichnet man den Bauplan von gleichartigen Objekten.<br />

Man sagt auch Objekttyp. Klassennamen werden mit Großbuchstaben<br />

geschrieben (oder beginnen mit einem Großbuchstaben).<br />

Alle Objekte einer Klasse haben die gleichen Attribute (Eigenschaften)<br />

und die gleichen Methoden (Anweisungsfolgen) die durch<br />

Botschaften (Nachrichten) ausgelöst werden.<br />

Der Zustand eines Objekts wird durch seine Attributwerte beschrieben,<br />

das Verhalten durch seine Methoden.<br />

In der objektorientierten Programmierung erhalten Botschaft und die<br />

durch sie ausgelöste Methode den gleichen Namen, was dazu führt, dass<br />

Botschaft und Methode oft synonym gebraucht werden.<br />

Methoden beziehen sich auf das Ändern von Attributwerten. Beispielsweise<br />

können Objekte in Multimediadokumenten (b Abschnitt 2.5.3)<br />

eine Methode „Erscheinen“ besitzen, welche sich auf das Attribut „Effekt“<br />

(rotierend, wortweise, von links ins Bild fließen, ...) bezieht.<br />

Zum Darstellen von Klassen benutzt man sogenannte Klassenkarten. Das<br />

sind Rechtecke, in die alle Attribute und alle Methoden einer Klasse eingetragen<br />

sind (b links in der folgenden Übersicht).<br />

BAUM<br />

Standort<br />

Stammumfang<br />

Baumhöhe<br />

Kronenform<br />

Kronenumfang<br />

Laubfarbe<br />

...<br />

Attribute<br />

Methoden<br />

BaumSamenAbwerfen()<br />

Wachsen(Länge)<br />

LaubVerfärben(Jahreszeit)<br />

...<br />

Linde1: BAUM<br />

Attribute<br />

Standort = in Kais Garten<br />

Stammumfang = 53cm<br />

Baumhöhe = 5m<br />

Kronenform = birnenförmig<br />

Kronenumfang = 9m<br />

Laubfarbe = hellgrün<br />

...<br />

Methoden<br />

BaumSamenAbwerfen()<br />

Wachsen(20cm im Jahr)<br />

LaubVerfärben(im Herbst)<br />

...<br />

Zum Darstellen von Objekten werden Objektkarten genutzt. Sie unterscheiden<br />

sich von Klassenkarten auf den ersten Blick dadurch, dass die<br />

Ecken abgerundet sind (b rechts im obigen Bild). Zusätzlich sind hier<br />

aber die konkreten Attributwerte für das jeweilige Objekt eingetragen.<br />

Um Methoden von Attributen zu unterscheiden, stehen am Ende von<br />

Methoden Klammern, in die bestimmte Werte eingetragen werden können.<br />

Nach den Attributnamen stehen Gleichheitszeichen, gefolgt von<br />

konkreten Attributwerten.


Alle diese Mittel werden vor allem auch im Bereich der objektorientierten<br />

Programmierung genutzt. Wichtige Klassen wie Datentypen und<br />

Datenstrukturen kann man natürlich auch entsprechend modellieren<br />

und durch Klassenkarten beschreiben:<br />

Klassenkarten für einen Aufzählungstyp und für einen strukturierten<br />

Typ:<br />

Deutschland<br />

Österreich<br />

Schweiz<br />

LAND_KUNDE<br />

Der Aufzählungstyp LAND_KUNDE (links) hat 3 Attribute, da diese<br />

aber „diskret“ sind, also jeweils genau einen Wert besitzen, wurden<br />

hier nur die Attributwerte angegeben.<br />

Der strukturierte Typ (rechts) besitzt 4 Attribute. Die Werte des Attributs<br />

„Land“ sind durch LAND_KUNDE festgelegt.<br />

Klassen- und Objektdiagramme, Assoziationen und Vererbung<br />

Allgemeine Beziehungen (Assoziationen) können in Klassendiagrammen<br />

modelliert werden.<br />

Klassendiagramm zur Modellierung eines Textverarbeitungssystems:<br />

DATEI<br />

0..* 1<br />

DOKUMENT<br />

ZEICHEN<br />

ist enthalten> 1<br />

0..* 1<br />

1..*


64 Grundbegriffe<br />

Aus Platzgründen<br />

sind hier nicht alle<br />

Beziehungsnamen<br />

aufgeführt.<br />

Die blauen Objekte<br />

sind durch Gruppierung<br />

entstanden.<br />

Das Objektdiagramm<br />

für den Schneemann<br />

könnte auch ganz<br />

anders aussehen:<br />

Es könnten andere<br />

Objekte zu Gruppen<br />

zusammengefasst<br />

oder andere Beziehungsrichtungen<br />

bevorzugt worden<br />

sein.<br />

Ganz konkrete Beziehungen von Objekten können durch Objektdiagramme<br />

dargestellt werden. Dabei werden möglichst alle Objekte (abgerundete<br />

Ecken) und ihre Beziehungen untereinander aufgezeigt.<br />

Das folgende Objektdiagramm bezieht sich auf den in der Randspalte<br />

abgebildeten Schneemann.<br />

gehört zu<br />

Schneemann Strecke3<br />

Strecke2<br />

hat<br />

Hut<br />

Quadrat1<br />

Rumpf<br />

Kopf<br />

Strecke1 Ellipse2<br />

hat<br />

Mund Nase<br />

Quadrat2<br />

Quadrat3<br />

Quadrat4<br />

hat<br />

Quadrat5 Dreieck1<br />

hat<br />

ist<br />

hat<br />

Ellipse1<br />

gehört zu<br />

gehört zu<br />

Kreis3<br />

Strecke4<br />

gehört zu<br />

hat<br />

Kreis2<br />

Kreis1<br />

Ellipse3<br />

Strecke5<br />

Strecke6<br />

gehört zu<br />

Besen<br />

Strecke7<br />

Ellipse4<br />

Beziehungen zwischen den Klassen werden Assoziationen genannt.<br />

Die Kardinalität einer Assoziation gibt an, mit wie viel Objekten der<br />

gegenüberliegenden Klasse ein Objekt assoziiert sein kann.<br />

1 Beziehungsname *<br />

Klasse 1 Klasse 2<br />

Beispiele für die Notation des Wertebereichs von Kardinalitäten:<br />

1 genau eins 0..5 von null bis fünf<br />

0,1 null oder eins 0..* größer oder gleich null


Sowohl im Klassendiagramm auf Seite 63 als auch im Objektdiagramm<br />

auf Seite 64 sind gerichtete Assoziationen dargestellt, Beziehungen, die<br />

nur in einer Richtung navigierbar sind. Die offene Pfeilspitze gibt die<br />

Navigationsrichtung an.<br />

Eine Aggregation ist ein Spezialfall der Assoziation: Die beteiligten<br />

Klassen bilden eine Ganze-Teile-Hierarchie. Objekte einer solchen<br />

Klasse bestehen aus einer Menge von Einzelteilen<br />

0..1 besteht aus > *<br />

Ganzes Teil<br />

Eine Komposition wiederum ist ein Spezialfall der Aggregation: Die<br />

Teile sind vom Ganzen existenzabhängig.<br />

1 besteht aus > *<br />

Ganzes Teil<br />

Der Hut des Schneemanns auf Seite 64 ist eine Komposition, bestehend<br />

aus einem Quadrat und einer Strecke, die gruppiert wurden.<br />

Löscht man den Hut, so sind auch die Objekte „Strecke1“ und „Quadrat1“<br />

verschwunden.<br />

Ein wesentliches Konzept objektorientierter Programmiersprachen ist<br />

die Vererbung.<br />

Mithilfe der Vererbung können Klassen hierarchisch strukturiert<br />

werden: Attribute allgemeinerer Bedeutung werden Oberklassen<br />

zugeordnet (Generalisierung), speziellere Eigenschaften Unterklassen<br />

(Spezialisierung).<br />

Die Attribute der Oberklasse werden an die Unterklasse weitergegeben<br />

(vererbt). Eine Unterklasse verfügt also über die Attribute der<br />

Oberklasse(n) und über weitere, spezielle Attribute.<br />

Es gilt folgende Beziehung für Vektorgrafiksysteme:<br />

GRAFIKOBJEKT<br />

ELLIPSE RECHTECK<br />

STRECKE<br />

Hier werden Attribute wie Position, Größe, Linienstärke, Linienfarbe,<br />

Linienart, Flächenfarbe von GRAFIKOBJEKT an ELLIPSE, RECHTECK<br />

und STRECKE vererbt. Der nicht ausgefüllte Pfeil zeigt von der Unterklasse<br />

zur Oberklasse.<br />

Unterscheidungsmerkmal (Diskriminator) könnte hier „Eckenzahl“<br />

oder „Stützpixel“ sein, Strecken haben demnach neue Attribute wie<br />

„Anfangspunkt“ und „Endpunkt“.<br />

Modelle 65<br />

Die Raute auf der<br />

Seite des Aggregats<br />

(des Ganzen) symbolisiert<br />

das Behälterobjekt.<br />

Die Vererbung ist<br />

auch das Unterscheidungsmerkmal<br />

zu<br />

anderen Programmiersprachen:<br />

Nur Sprachen mit<br />

Vererbungskonzept<br />

dürfen sich „objektorientierteProgrammiersprache“<br />

nennen. So ist Java<br />

objektorientiert,<br />

JavaScript dagegen<br />

nicht.<br />

Strecken besitzen<br />

keine Füllfläche, das<br />

Attribut „Füllfarbe“<br />

ist daher eigentlich<br />

nicht notwendig.<br />

Es schadet aber<br />

auch nichts, wenn<br />

Strecken es besitzen.<br />

Die Attributwerte<br />

werden nur nicht<br />

angezeigt.


66 Grundbegriffe<br />

Nachbau des Vierspeziesrechners<br />

von<br />

wilhelm wilhelm SChiCkhardT<br />

im Deutschen Museum<br />

in München<br />

Nachbau der<br />

Analytical Engine<br />

auf Grundlage der<br />

Beschreibung von<br />

CharleS CharleS babbage<br />

konrad zuSe steht vor<br />

dem Nachbau seines<br />

Rechners Z3 im<br />

Deutschen Museum<br />

in München.<br />

1.5 Informationsverarbeitende Technik<br />

1.5.1 Zur Geschichte der Rechentechnik<br />

Rechenmaschinen im eigentlichen Sinne, das heißt mechanische Geräte,<br />

mit denen man die Grundrechenarten ausführen konnte, kamen erst im<br />

17. Jahrhundert auf:<br />

– 1623 entwarf wilhelm SChiCkhardT (1592 – 1635) einen Ziffernrechner<br />

für die vier Grundrechenarten (man sagt daher auch „Vierspeziesrechner“),<br />

der auf Grundlage verschiebbarer Rechenstäbe arbeiten sollte.<br />

Dieser Ziffernrechner wurde noch vor seiner vollständigen technischen<br />

Ausführung durch ein Feuer zerstört und es ist nicht bekannt, dass<br />

SChiCkhardT einen zweiten Rechner gebaut hat.<br />

– 1642 ließ sich blaiSe PaSCal (1623 – 1662) einen „Zweispeziesrechner“<br />

für die Addition und die Subtraktion mittels Zahnrädern patentieren.<br />

Dieses Gerät fand eine solch weite Verbreitung, dass es unter der Bevölkerung<br />

zu Beunruhigungen wegen Arbeitsstellenverlust führte.<br />

– 1671 entwickelte goTTfried wilhelm leibniz (1646 – 1716) einen Vierspeziesrechner,<br />

der auf der Grundlage von Walzen arbeitete.<br />

Ab 1832 entwarf CharleS babbage (1791 – 1871) einen Universalrechner,<br />

der aus vier Baugruppen aufgebaut werden sollte, nämlich:<br />

• einem Rechenwerk für die Darstellung von Dezimalzahlen,<br />

• einem Speicher für tausend 50-stellige Zahlen (der aus 50 000 Ziffernrädern<br />

bestand),<br />

• einem Eingabewerk für Zahlen und Verarbeitungsvorschriften auf der<br />

Grundlage eines Lochkartenlesers, wie er von dem französischen Seidenweber<br />

JoSePh marie JaCquard (1752 – 1834) für die Steuerung von<br />

Webstühlen benutzt wurde,<br />

• einem Druckwerk für die Ergebnisausgabe.<br />

Diese Maschine nannte babbage „Analytical Engine“. Das war der erste<br />

digitale programmgesteuerte Rechenautomat.<br />

Der Aufbau der von CharleS babbage entworfenen „Analytical Engine“<br />

entspricht dem Aufbau von modernen Computern:<br />

• Rechenwerk, • Datenspeicher,<br />

• Steuereinheit, • Ein- und Ausgabegeräte.<br />

babbageS Computer wurde zu seiner Zeit nicht gebaut. Die vielen mechanischen<br />

Teile behinderten die Funktionsfähigkeit.<br />

Der Bau des ersten funktionstüchtigen Rechners mit Programmsteuerung<br />

gelang erst konrad zuSe (1910 – 1995) im Mai 1941. Diesen Rechner<br />

nannte zuSe „Z3“. Die Programmeingabe erfolgte über ein Lochbandgerät,<br />

die Verarbeitung durch 2000 Relais. Folgende Dinge waren entscheidend:<br />

• Programmsteuerung (die Erweiterung um eine Lochstreifensteuerung<br />

beim „Z11“ nach dem 2. Weltkrieg führte zu einem nahezu universell<br />

einsetzbaren Rechenautomaten);


• elektromagnetische Bauteile (Relais);<br />

• Einführung des Dualsystems in die Rechentechnik (b S. 20, so konnte<br />

die Relaistechnik zum Rechnen genutzt werden).<br />

Unabhängig von zuSe wurden auch in Großbritannien und den USA elektronische<br />

Rechner entworfen und gebaut. Man benutzte Elektronenröhren<br />

als Schaltelemente, später Transistoren und Dioden. Das Programm<br />

wurde über Schalter oder Lochkarten und Lochstreifen eingegeben. Das<br />

war eine aufwendige Arbeit.<br />

John von neumann (1903–1957) entwickelte die Idee, dass auch das Programm<br />

selbst im Rechner gespeichert werden sollte. Erst das Programm<br />

macht den Rechner arbeitsfähig.<br />

Alle heutigen Rechner arbeiten auf Grundlage der Ideen von CharleS babbage,<br />

konrad zuSe und John von neumann.<br />

Ab 1950 kann von industrieller Rechnerentwicklung und -produktion<br />

gesprochen werden, wobei vor allem auf Grundlage der verwendeten<br />

Schaltkreistechnologie Computergenerationen unterschieden werden:<br />

Jahr Gen. Bauelementebasis Geschwindigkeit<br />

1950 1 Elektronenröhren als Schaltelemente<br />

1960 2 Halbleiterschaltkreise (Transistoren,<br />

Dioden)<br />

1000 Additionen<br />

pro Sekunde<br />

Informationsverarbeitende Technik 67<br />

10 000 Additionen<br />

pro Sekunde<br />

1965 3 teilweise integrierte Schaltkreise 500 000 Additionen<br />

pro Sekunde<br />

1970 4 überwiegend hochintegrierte<br />

Schaltkreise<br />

1980 5 höchstintegrierte Schaltkreise<br />

(Mikroprozessoren)<br />

10 Mio. Additionen<br />

pro Sekunde<br />

Die Computer waren bis in die 1960er-Jahre hinein Einzelrechner für wissenschaftlich-technische<br />

Berechnungen. Erst als die Schaltelemente so<br />

verkleinert worden waren, dass sie auf einer Leiterplatte Platz fanden,<br />

konnte man an eine Massenfertigung von Computern denken – der Personal<br />

Computer (PC) wurde entwickelt. Den Siegeszug des PC konnte ab<br />

1980 niemand mehr aufhalten. Das hatte vor allem zwei Ursachen:<br />

• Die Schaltungen für die Rechen- und Steuereinheit des Computers<br />

wurden so verkleinert und zusammengefasst, dass daraus ein winziger<br />

Chip (Mikroprozessor) wurde.<br />

• Und auch auf der Software-Seite fand eine Revolution statt: Im Jahre<br />

1980 brachte bill gaTeS’ Firma Microsoft das Betriebssystem MS-DOS<br />

auf den Markt.<br />

Bis dahin waren die Programme zur Steuerung des Computers (also das<br />

Betriebssystem) durch den Nutzer schwer änderbar. MS-DOS war von<br />

Diskette aus installierbar und mit einer neuen Version des Betriebssystems<br />

musste man nicht mehr den gesamten Computer austauschen,<br />

sondern nur eine neue Diskette einlegen.<br />

...<br />

Der britische Mathematiker<br />

alan ma-<br />

ThiSon Turing schlug<br />

ein universelles<br />

Automatenmodell<br />

(Turingmaschine)<br />

vor, durch das der<br />

Algorithmusbegriff<br />

mathematisch exakt<br />

gefasst werden<br />

konnte. Unter<br />

TuringS TuringS Leitung wird<br />

auch 1943 in Großbritannien<br />

der erste<br />

elektronische Digitalcomputer<br />

– Colossus<br />

– entwickelt und<br />

erfolgreich genutzt,<br />

um im 2. Weltkrieg<br />

verschlüsselte deutsche<br />

Funksprüche zu<br />

decodieren.


Der Abakus –<br />

ein digitales Rechenhilfsmittel<br />

„Digital“ heißt, das Rechnen beruht<br />

auf einem Zählvorgang.<br />

Beispiele für digitale Rechenhilfsmittel<br />

sind Zählstäbchen, Zählsteine,<br />

Abakus und Personal Computer.<br />

Als ältester Vorläufer einer digitalen Rechenmaschine<br />

gilt der Abakus. Der Abakus aus hellenistischer<br />

Zeit (etwa 300 bis 30 vor Christus) war eine<br />

Tafel aus Stein oder Holz mit aufgemalten oder eingeschnittenen<br />

Linien. Auf diesen Linien wurden Rechensteine<br />

geschoben. Die Linien bedeuteten Größenordnungen<br />

und ersetzten Dezimalstellen.<br />

Später entwickelte sich daraus der Rechenrahmen<br />

mit verschiebbaren Kugeln. Dieser Rechenrahmen ist<br />

heute noch in verschiedenen Ländern der Erde gebräuchlich.<br />

• In Russland ist er ein<br />

beliebtes Rechenhilfsmittel<br />

von Verkäuferinnen<br />

und<br />

heißt „Stchoty“ Es<br />

wird oft sogar dann<br />

noch benutzt, wenn<br />

andere Rechenhilfsmittel<br />

(Tischrechner<br />

oder Computer) an<br />

der Kasse vorhanden<br />

sind.<br />

• In China gibt es den Abakus seit dem 13. Jahrhundert<br />

als „Suan Pan“. Dieser Rechenrahmen hat viel<br />

Ähnlichkeit mit dem Soroban.<br />

• In Japan heißt der Rechenrahmen „Soroban“. Jedes<br />

Jahr werden Millionen von diesen Rechenrahmen<br />

angefertigt, ein Teil davon für Kinder in der<br />

3. bis 6. Schulklasse. Im „Computerland“ Japan legen<br />

viele Menschen Sorobanprüfungen ab. Selbst<br />

Computerfirmen stellen mit Vorliebe junge Leute<br />

ein, die ein Ass auf dem Soroban sind.<br />

Der Soroban hat senkrecht angeordnete Stäbe<br />

mit je fünf Kugeln, wobei eine obere Kugel durch<br />

einen Querstab von den unteren vier<br />

getrennt ist. Die Kugeln der ganz rechten<br />

Spalte entsprechen den Einern, die<br />

links daneben den Zehnern usw. Die<br />

Kugeln unter dem Querstab stellen je<br />

eine Einheit dar, die obere jeweils fünf<br />

Einheiten.<br />

Digitale und<br />

analoge<br />

Rechenhilfsmittel<br />

Der Rechenstab –<br />

ein analoges Rechenhilfsmittel<br />

„Analog“ heißt, das Rechnen beruht<br />

auf einem Messvorgang.<br />

Beispiele für analoge Rechenhilfsmittel<br />

sind Rechenstab und SChiCkardS<br />

Vierspeziesrechner (b S. 66).<br />

Beim analogen Rechnen werden bestimmte Zahlen<br />

den unterschiedlichen Werten einer physikalischen<br />

Größe zugeordnet. Zum Beispiel könnte die Zahl 2<br />

einer doppelt so hohen Spannung zugeordnet werden<br />

wie die 1.<br />

Auch die Länge ist eine physikalische Größe. Man<br />

kann beispielsweise mit zwei Linealen recht einfach<br />

addieren oder subtrahieren:<br />

Subtrahieren einer positiven Zahl Addieren einer positiven Zahl<br />

–10 –9 –8 –7 –6 –5 –4 –3 –2 –1 0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10<br />

–8 –7 –6 –5 –4 –3 –2 –1 0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10<br />

Im Jahre 1614 gab John naPier (1550 – 1617) Logarithmentafeln<br />

heraus.<br />

Mit diesen Zahlenwerten konnte man die Multiplikation<br />

auf die Addition und die Division auf die Subtraktion<br />

zurückführen. Das vereinfachte nicht nur<br />

das schriftliche Rechnen der Kaufleute der damaligen<br />

Zeit, auch rechentechnisch lässt sich das leicht<br />

umsetzen: Wieder werden zwei Lineale nebeneinandergelegt<br />

und es werden Strecken addiert. Nur<br />

dass die Skaleneinteilung nicht so gleichmäßig wie<br />

auf dem Zeichenlineal ist: größeren Zahlen wird eine<br />

kürzere Strecke zugeordnet.<br />

John naPier entwarf auch ein System von Rechenstäbchen<br />

zur Durchführung von Multiplikationsaufgaben.<br />

Und schon 1622 entwickelt william oughTred<br />

(1574 – 1660) den sogenannten Rechenstab, mit dem<br />

man multiplizieren und dividieren kann.<br />

Den Rechenstab mit verschiebbarer Zunge, mit dem<br />

bis in die 1970er-Jahre hinein in der Schule gerechnet<br />

wurde, schufen edmund wingaTe (1593 – 1656)<br />

und SeTh ParTridge (1603 – 1686).


1.5.2 Der Computer und sein Betriebssystem<br />

Der Computer als Einheit von Hardware und Software<br />

Ein Computer (auch Datenverarbeitungsanlage oder Rechner genannt)<br />

ist ein elektronisches System zur automatischen Verarbeitung<br />

von Informationen. Der Computer ist als Einheit von Gerätetechnik<br />

(Hardware) und Betriebssystem (Systemsoftware) zu betrachten.<br />

Ein Computer verarbeitet Eingabedaten in Ausgabedaten, ein grundsätzliches<br />

Prinzip – das EVA-Prinzip (Eingabe → Verarbeitung → Ausgabe) –,<br />

welches auch für alle Software gilt.<br />

Als Hardware bezeichnet man die technischen Geräte, die physischen<br />

Bestandteile des Computers.<br />

Hardware ist also alles, was man anfassen kann. Die Vorsilbe „hard“ (dt.<br />

hart) soll verdeutlichen, dass es sich bei der Hardware um unveränderbare<br />

Komponenten eines Computers handelt.<br />

Zur Hardware gehören insbesondere das Grundgerät, in dem meist auf<br />

einer Platine, dem Motherboard (Synonyme: Mainboard, Systemplatine,<br />

Hauptplatine), der Prozessor (das Kernstück des Computers), Speicherbausteine<br />

und weitere notwendige Funktionselemente (z. B. Grafikkarte)<br />

aufgesteckt sind. Im Grundgerät sind auch weitere Speichergeräte wie<br />

Festplatten-, CD-ROM- oder Diskettenlaufwerke eingebaut.<br />

Auch alle Ein- und Ausgabegeräte gehören zur Hardware. Manchmal bezeichnet<br />

man diese Geräte als periphere Geräte.<br />

Die Gesamtheit der Programme, die zur Steuerung der Hardware<br />

eines Computers und zum Lösen vielfältiger Aufgaben und Probleme<br />

notwendig sind, nennt man Software.<br />

Die Vorsilbe „soft“ (dt. weich) soll veranschaulichen, dass es sich bei der<br />

Software um leicht veränderbare Komponenten eines Computers handelt.<br />

Man kann Software grob in 2 Kategorien unterteilen:<br />

• Systemsoftware (Betriebssystem):<br />

Das sind die Programme, die zur Steuerung der Hardware notwendig<br />

sind. Ferner gehört dazu sämtliche Software, die die Programmerstellung<br />

unterstützt (Programmierumgebungen).<br />

• Anwendersoftware:<br />

Hierzu gehören anwendungsneutrale Programme, z. B. zur Textbearbeitung<br />

oder Dateiarbeit. Dies ist also Software, die in ganz unterschiedlichen<br />

Bereichen der Arbeitswelt oder auch in der Freizeit einsetzbar<br />

ist.<br />

Zur Anwendersoftware gehören auch anwendungsspezifische Programme,<br />

z. B. zur Steuerung einer Werkzeugmaschine oder für spezielle<br />

Berechnungen. Auch Computerspiele kann man zu den anwendungsspezifischen<br />

Programmen rechnen, da sie spezielle Bedürfnisse befriedigen.<br />

Informationsverarbeitende Technik 6<br />

Computer kommt<br />

vom engl. „to compute“,<br />

was „berechnen“<br />

bedeutet.


70 Grundbegriffe<br />

Motherbord<br />

ROM<br />

RAM<br />

CPU ist die Abkürzung<br />

für Central<br />

Processing Unit<br />

(deutsch: Zentrale<br />

Verarbeitungseinheit).<br />

CPU<br />

Monitor<br />

Funktionseinheiten eines Computers<br />

Im Folgenden ist eine Übersicht über wesentliche physische Bestandteile<br />

eines Computers einschließlich seiner peripheren Geräte gegeben:<br />

Schnittstellen<br />

zu den Ein- und<br />

Ausgabegeräten<br />

PC-Grundgerät<br />

Festplatte<br />

DVD/<br />

CD-ROM-<br />

Laufwerk<br />

Ausgabegeräte<br />

Drucker<br />

AUSGABE<br />

VERARBEITUNG<br />

Eingabegeräte<br />

Tastatur<br />

Maus<br />

für grafische<br />

Benutzeroberflächen<br />

Scanner für<br />

Grafikeingaben<br />

EINGABE<br />

Die Funktionseinheiten, die im Grundgerät des Computers vereint und<br />

über ein sogenanntes Bussystem untereinander verbunden sind, werden<br />

in diesem Abschnitt beschrieben. Die Ein- und Ausgabegeräte werden in<br />

den Abschnitten 1.5.3 und 1.5.4 gesondert behandelt.<br />

Das Herzstück des Computers ist<br />

der Mikroprozessor (CPU), der auf<br />

einem sehr komplex aufgebauten<br />

Mikrochip untergebracht ist. Auf<br />

einem Chip können mehrere Millionen<br />

Transistoren vereint sein.<br />

Der Mikroprozessor besteht aus<br />

folgenden Komponenten:<br />

• arithmetisch-logische Einheit<br />

(ALU) zum Rechnen,<br />

• Register (Zwischenspeicher),<br />

• Steuerwerk.


Die Schnelligkeit eines Computers hängt entscheidend von der Verarbeitungsgeschwindigkeit<br />

(Taktfrequenz) der CPU ab, daher steht diese<br />

Kenngröße in Verkaufsprospekten von Computern oft an erster Stelle.<br />

Die Taktfrequenz bestimmt (ähnlich wie bei einer Digitaluhr) ein kleiner<br />

Schwingquarz. Die Frequenz wird in Megahertz (MHz) angegeben:<br />

„250 MHz“ bedeutet, dass der Prozessor pro Sekunde 250 Millionen<br />

Arbeitsschritte (Ja-Nein-Informationen) ausführt.<br />

International durchgesetzt haben sich vor allem zwei Linien:<br />

• Mikroprozessoren der Firma Intel (8086, 80286, 80386, 80486, Pentium),<br />

insbesondere dadurch, dass der Prozessor vom Typ 8086 ab 1978<br />

in Personal Computer (PCs) der Firma IBM eingebaut wurde; seit 2006<br />

werden Intel-Prozessoren auch in Macintosh-Computer eingebaut;<br />

• Mikroprozessoren der Firma Motorola (6502, 68000, 68040), die insbesondere<br />

für Macintosh Computer der Firma Apple entwickelt wurden<br />

(und in Europa kaum eine Rolle spielen).<br />

Eine weitere Funktionseinheit, welche sich meist auf dem Motherboard<br />

befindet, sind die ROM-Bausteine. Mit ROM (read only memory, Nur-<br />

Lese-Speicher) fasst man Festwertspeicher, also Speicher, deren Inhalt<br />

bereits bei der Herstellung festgelegt wird und nicht mehr verändert<br />

werden kann.<br />

Einer der ROMs ist das ROM-BIOS<br />

(Basic-Input-Output-System), das<br />

bei jedem Start des Computers<br />

sämtliche Hardwarekomponenten<br />

testet, den Rechner in Gang bringt<br />

und das Betriebssystem sucht.<br />

Auf dem Bild ist rechts neben dem<br />

BIOS der CMOS (RAM zum Eintragen<br />

der Uhrzeit) zu sehen, daneben<br />

die (hier runde) Batterie, die<br />

den CMOS mit Strom versorgt.<br />

Wichtig für eine schnelle Arbeit<br />

am Computer sind die RAM-Module.<br />

In den RAMs (random access<br />

memory, Speicher mit wahlfreiem<br />

Zugriff, Arbeitsspeicher) werden<br />

alle Programme geladen, mit denen<br />

während einer Sitzung am<br />

Computer gearbeitet wird.<br />

Für speicherintensive Benutzeroberflächen<br />

wie Windows oder<br />

Anwendungsprogramme wie MS<br />

Office ist es sinnvoll, die Kenngröße<br />

„RAM-Umfang“ relativ<br />

hoch zu wählen (512 MB und höher).<br />

Informationsverarbeitende Technik 71<br />

Mikroprozessoren,<br />

die ursprünglich<br />

für die Computertechnik<br />

entwickelt<br />

wurden, findet<br />

man heute in ganz<br />

alltäglichen Dingen,<br />

in Haushaltsgeräten<br />

wie Waschmaschine<br />

und Mikrowelle, in<br />

Nachrichtengeräten<br />

wie Telefon und Fax,<br />

in Geld- und Parkhausautomaten<br />

oder<br />

in Kraftfahrzeugen<br />

(Antiblockiersystem,<br />

Kraftstoffeinspritzung).


72 Grundbegriffe<br />

serielle<br />

Schnittstelle<br />

Rechnerseite<br />

Druckerseite<br />

USB ist die Abkürzung<br />

für universal<br />

serial bus.<br />

Schnittstellen<br />

Alle peripheren Geräte (z. B. Ein- und Ausgabegeräte, externe Speicher)<br />

benötigen Anschlüsse an das Bus-System, sogenannte Schnittstellen.<br />

Eine Schnittstelle (Interface) ist eine Verbindungsstelle zwischen<br />

Computern oder zwischen einzelnen Geräten des Computers zum<br />

Zweck des Informationsaustauschs.<br />

Bei einer seriellen Schnittstelle wird jedes einzelne Byte bitweise (nacheinander)<br />

über die Leitung geschickt. Sie ist die unkomplizierteste Art<br />

der Datenübertragung und wird dann genutzt, wenn es nicht auf hohe<br />

Geschwindigkeiten ankommt. Geräte, die oft an eine serielle Schnittstelle<br />

angeschlossen werden, sind Maus und Modem.<br />

Serielle Schnittstellen sind z. B. RS 232, RS 422 oder PS/2. Unter DOS und<br />

Windows heißen die seriellen Schnittstellen „COM“ (COM1, COM2, …).<br />

Für den seriellen Anschluss gibt es einen genormten 9-poligen Stecker.<br />

Bei einer parallelen Schnittstelle (Parallelport, Druckerschnittstelle) wird<br />

jedes Byte über 8 parallele Leitungen transportiert. Sie wird dann genutzt,<br />

wenn es um schnelle Datenübertragung geht (z. B. Drucker). Unter<br />

DOS und Windows heißen die parallelen Schnittstellen „LPT“.<br />

Eine sehr schnelle, universelle Schnittstelle ist der USB, der als Bus ausgelegt<br />

ist: Es können beliebig viele Geräte angehängt werden, ohne dass<br />

diese sich gegenseitig stören.<br />

Anwenderfreundlich ist auch: Die Geräte können auch bei laufendem<br />

Rechnerbetrieb an den USB angeschlossen werden (Plug & Play).<br />

Betriebssysteme<br />

Ein wichtiger Software-Bestandteil des Computers ist das Betriebssystem.<br />

Es wird vom Computerhersteller im Allgemeinen mitgeliefert und besteht<br />

aus Steuer-, Datenverwaltungs-, Fehlerbehandlungs- und Dienstprogrammen<br />

sowie Programmierhilfen.<br />

Mit dem Begriff Betriebssystem (Systemsoftware) fasst man die Gesamtheit<br />

der Programme, die es gestatten, den Computer in Betrieb<br />

zu setzen, und die der Ausführung von Anwendungsprogrammen<br />

dienen, dabei eine effektive Auslastung des Computers gewährleisten<br />

und teilweise in der Hardware (im ROM) fest eingespeichert<br />

sind. Im Einzelnen gehören dazu:<br />

• Organisationsprogramme (z. B. zur Ein-, Ausgabesteuerung und<br />

Speicherverwaltung oder zur Laufzeitorganisation),<br />

• Übersetzungsprogramme (für Programme höherer Programmiersprachen<br />

in Assembler- bzw. Maschinenprogramme),<br />

• Dienstprogramme (z. B. zum Initialisieren von Datenträgern, zur<br />

Dateiverwaltung; Editoren zur Programmkorrektur im Dialogbetrieb).


Bis 1980 war das Betriebssystem im Computer (meist einem Großrechner,<br />

an dem mehrere Terminals – Arbeitsplätze mit Monitor und Tastatur<br />

– hingen) „fest verdrahtet“. Dies hat aber etliche Nachteile:<br />

• Sind viele Terminals an einem Großrechner angeschlossen, verlängern<br />

sich die Wartezeiten der einzelnen Nutzer unerträglich, da der Rechner<br />

den Nutzern nur bestimmte Zeittakte für ihre Arbeit freigeben<br />

kann.<br />

• Bei einer Weiterentwicklung des Betriebssystems mussten Teile des<br />

Computers gegen neue ausgetauscht werden.<br />

• Die vorliegenden Anwendungsprogramme waren meist nicht auf andere<br />

Computer mit anderen Betriebssystemen übertragbar.<br />

Die Idee, dass jeder seinen persönlichen Computer (Personal Computer,<br />

PC) haben sollte, war deshalb revolutionierend. Das ab 1980 von der<br />

Firma Microsoft entwickelte Betriebssystem MS-DOS (Microsoft Disk<br />

Operating System) ist – wie der Name ausdrückt – durch ein externes<br />

Speichermedium (Diskette) installierbar und kann auch von der Diskette<br />

aus gestartet werden. Es wurde aus den Betriebssystemen CP/M und<br />

UNIX entwickelt.<br />

Das auf Personal Computern am meisten genutzte Betriebssystem ist<br />

das auf MS-DOS aufbauende Windows, in bestimmten Anwendungsbereichen<br />

auch Mac OS.<br />

Auf Großrechnern und in vernetzten Systemen ist das Betriebssystem<br />

UNIX (insbesondere die Varianten Linux und FreeBSD) verbreitet.<br />

Seit Anfang der 1990er-Jahre übernahmen Benutzeroberflächen (b Abschnitt<br />

1.5.6) bestimmte Aufgaben des Betriebssystems, vor allem die<br />

Aufgaben der Dienstprogramme. So fasst man heute die Benutzeroberfläche<br />

Windows der Firma Microsoft als Betriebssystem (mit einem DOS-<br />

Kern) auf.<br />

Aufgaben eines Betriebssystems<br />

1. Ermöglichung der Kommunikation zwischen Nutzer und Rechner einschließlich<br />

des Ladens und Startens von Anwendungsprogrammen<br />

Die hierfür notwendigen Komponenten werden nach dem Start sofort<br />

in den Arbeitsspeicher geladen und verbleiben auch dort während der<br />

Arbeit am Computer: residenter Bestandteil des Betriebssystems.<br />

2. Datenorganisation auf Festplatten und externen Datenträgern (Vorbereitung<br />

der Datenträger; Verzeichnisse erstellen; Dateien kopieren,<br />

löschen, umbenennen, …)<br />

Die elementaren Befehle hierfür sind Bestandteil der Dateien, die im<br />

Arbeitsspeicher resident sind. Viele Befehle befinden sich aber auch in<br />

eigenständigen Dateien, die auf der Festplatte in einem gesonderten<br />

Verzeichnis gespeichert sind, und nur in den Arbeitsspeicher geladen<br />

werden, wenn es notwendig ist: transienter Bestandteil des Betriebssystems.<br />

3. Anpassung der Systemumgebung an Nutzerbedürfnisse (z. B. Programmabläufe<br />

effizienter gestalten, Speicherausnutzung optimieren)<br />

Informationsverarbeitende Technik 73


74 Grundbegriffe<br />

Joystick<br />

Esc<br />

ˆ<br />

1.5.3 Eingabegeräte<br />

Zu den Eingabegeräten zählt man<br />

Tastatur, Maus, Scanner (Gerät zur<br />

punktweisen Eingabe von Bildern)<br />

und Joystick (Steuerknüppel; Gerät,<br />

das insbesondere bei Computerspielen<br />

zur waagerechten,<br />

senkrechten und diagonalen Bewegung<br />

von Bildschirmelementen<br />

benutzt wird). Die wichtigsten<br />

Eingabegeräte sind Tastatur und<br />

Maus (b folgende Abschnitte).<br />

Tastatur<br />

Die Tastatur dient zur Eingabe von Zeichen (auch Steuerzeichen) und ist<br />

i. Allg. mit einem Monitor gekoppelt. Die Tastatur ist in 4 Blöcke aufgeteilt:<br />

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12<br />

1 2 3 4 5 6 7 8 9 0 ß<br />

q w e r t z u i o p ü +<br />

a s d f g h j k l ö ä<br />

< y x c v b n m , . -<br />

Strg Alt AltGr Strg<br />

Block Funktion<br />

Schreibmaschinenblock<br />

Scanner<br />

Entf<br />

Num<br />

7<br />

8<br />

4 5<br />

1<br />

0<br />

Steuerblock<br />

9<br />

6<br />

2 3<br />

Schreibmaschinenblock Bewegungsblock Numerikblock<br />

In den einzelnen Blöcken findet man Sondertasten, die oft übergreifende<br />

Wirkung besitzen. Sie sind in die folgende Tabelle eingeordnet.<br />

Er dient zur Text- und Zahleneingabe. Die Tasten sind mehrfach belegt:<br />

• Im einfachen Modus erhält man Kleinbuchstaben und Ziffern.<br />

• In Verbindung mit der Shift-Taste < > ruft man Großbuchstaben und<br />

Sonderzeichen (!, ?, % usw.) ab. Den Shift-Modus kann man durchgängig<br />

erreichen, wenn die Shift-Lock-Taste < > einmal gedrückt wird. Auf der<br />

Tastatur rechts oben (in der Mitte) leuchtet dann eine Diode auf. Ein<br />

einmaliges Drücken von < > schaltet die Zweitbelegung wieder aus.<br />

• Manche Zeichen (eckige und geschweifte Klammern, @ usw.) gehören<br />

zu einer Drittbelegung (mit der gedrückten -Taste abrufbar).<br />

Tasten, wie , , (und , ) gelten<br />

nur in Verbindung mit anderen Tasten (werden immer zuerst gedrückt<br />

und festgehalten) und heißen deshalb auch Stummtasten.


Block Funktion<br />

Schreibmaschinenblock<br />

Informationsverarbeitende Technik 75<br />

Folgende Sondertasten sind von Bedeutung:<br />

• oder Tabulatorsprung<br />

• oder Eingabebestätigung<br />

• Löschtaste (Zeichen vor dem Cursor)<br />

Bewegungsblock Mit den Cursor-Tasten (, , , ) erreicht man eine entsprechende<br />

Bewegung des Cursors (der Eingabemarke) auf dem Bildschirm.<br />

Über dem Cursor-Block findet man folgende Sondertasten:<br />

• oder Entfernen-Taste (Zeichen nach dem Cursor)<br />

• oder Einfügemodus (DOS-Ebene)<br />

• oder Bildlauf zum Zeilenanfang<br />

• oder Bildlauf zum Zeilenende<br />

• oder Bildlauf nach oben<br />

(oft seitenweise)<br />

• oder Bildlauf nach unten<br />

(oft seitenweise)<br />

Numerikblock Der Numerikblock dient insbesondere der Eingabe von Zahlen und Rechenzeichen.<br />

Mit < Num<br />

> wird der Block ein- bzw. ausgeschaltet. Den aktivierten<br />

Modus erkennt man an der Leuchtdiode auf der Tastatur rechts<br />

oben (links).<br />

Gibt man den Dezimalwert für ASCII-Zeichen (b S. 23 ff.) auf dem Ziffernblock<br />

der Tastatur bei gedrückter -Taste ein, erhält man das gewünschte<br />

ASCII-Zeichen.<br />

Steuerblock Der Steuerblock besteht im Wesentlichen aus Funktionstasten (, ,<br />

…, ), die dem Aufruf von Befehlen dienen. Die Tasten sind in den<br />

verschiedenen Programmen unterschiedlich belegt, ruft meist eine<br />

Hilfe auf. Zum Steuerblock gehören auch folgende Sondertasten:<br />

• Escape, Fluchttaste<br />

(Abbruch eines Kommandos)<br />

• Bildschirmausdruck (DOS-Ebene)<br />

Maus<br />

Die Maus (mouse) ist ein meist auf Rollen gleitendes Eingabegerät,<br />

welches für menügesteuerte Programme und grafische Benutzeroberflächen<br />

entwickelt wurde. Sie ersetzt nicht die Tastatur, sondern<br />

erfüllt vor allem Funktionen des Bewegungsblocks der Tastatur.<br />

Die Maus wird auf einer festen Unterlage<br />

(Mousepad) hin und her<br />

bewegt, um den Cursor oder ein anderes<br />

Markierungssymbol auf dem<br />

Bildschirm zu steuern.


76 Grundbegriffe<br />

Die Maus ist<br />

standardmäßig<br />

für Rechtshänder<br />

gedacht, man kann<br />

sie aber auf einen<br />

Modus für Linkshänder<br />

umstellen.<br />

In Windows geht<br />

man dabei folgendermaßen<br />

vor:<br />

Menü „Start“<br />

(Task-Leiste) g<br />

„Einstellungen“ g<br />

„Systemsteuerung“<br />

g „Maus“ g<br />

in der Registerkarte<br />

„Tasten“ die<br />

Tastenkonfiguration<br />

umschalten<br />

Die (mechanische) Maus besteht<br />

insbesondere aus zwei Wellen und<br />

einer Kugel, womit waagerechte,<br />

senkrechte und in der Summe diagonale<br />

Bewegungen aufgenommen<br />

werden können.<br />

Die mechanischen Bewegungen<br />

werden in elektrische Signale gewandelt<br />

und an den Computer<br />

übertragen.<br />

Durch das Bewegen der Maus auf<br />

dem Schreibtisch oder einer Unterlage<br />

wird schnell Staub und Schmutz<br />

aufgenommen.<br />

Die Wellen verkleben und die Bewegungsübertragung<br />

ist nicht mehr<br />

gewährleistet. Bleibt der Mauszeiger<br />

also auf dem Bildschirm „hängen“,<br />

ist eine gründliche Reinigung<br />

Anpresswalze<br />

Kugel<br />

optischer<br />

Sensor<br />

Lumineszenzdiode<br />

geschlitzte<br />

Scheibe<br />

der mechanischen Teile angesagt. Hierzu schraubt man eine kleine Platte<br />

an der Unterseite der Maus auf, entfernt die Kugel und reinigt die Kugel<br />

und insbesondere die Wellen mit Alkohol und einem Pinsel, zur Not auch<br />

mit den Fingern.<br />

Für die Mausführung sind einige Regeln zu beachten:<br />

• Es sollte eine saubere, glatte, nicht zu harte, ausreichend große, nicht<br />

rutschende Mausunterlage gewählt werden. Das kann auch ein Platzdeckchen<br />

aus Weichplastik sein.<br />

• Beim Bewegen der Maus sollte der Handballen auf der Tischoberfläche<br />

mitrutschen.<br />

• Die Maus sollte mit der ganzen Hand in ihrer Position festgehalten<br />

werden, auch dann, wenn z. B. mit dem Zeigefinger die linke Maustaste<br />

gedrückt werden muss.<br />

Für die Arbeit mit der Maus sind folgende Begriffe wichtig:<br />

Techniken der Arbeit mit der Maus<br />

Zeigen Mauszeiger auf ein Objekt auf dem Bildschirm<br />

bewegen<br />

Klicken kurzes Drücken der Maustaste<br />

Doppelklicken zweifaches Drücken der Maustaste in kurzer Folge<br />

Anfassen auf ein Objekt zeigen, Maustaste drücken und<br />

gedrückt halten<br />

Ziehen Maustaste gedrückt halten, während die Maus<br />

bewegt wird<br />

Bei geringem Schreibtischplatz kann man statt einer Maus auch einen<br />

Trackball benutzen. Er sieht aus wie eine auf den Rücken gefallene Maus.<br />

Die Kugel wird mit dem Finger gerollt. Die Tasten befinden sich links und<br />

rechts der Kugel.


1.5.4 Ausgabegeräte<br />

Monitor<br />

Der Monitor (Bildschirm) macht den Zustand bzw. die Ausgabe eines<br />

Computers sichtbar. Er ist die wichtigste Verbindung zwischen Mensch<br />

und Computer, denn ohne ihn weiß der Nutzer nicht, ob seine Eingaben<br />

korrekt waren oder richtig ausgeführt wurden.<br />

Die Anzeige erfolgt elektronisch durch eine Kathodenstrahlröhre (Bildröhre)<br />

oder durch eine Flüssigkristallanzeige (LCD-Anzeige). Die LCD-Anzeige<br />

wird insbesondere bei kleinen, transportablen Computern (Laptops,<br />

Notebooks) verwendet, da die Monitore sehr flach sind und der<br />

Stromverbrauch gering ist.<br />

Da der Monitor das wichtigste Ausgabegerät ist, sollten unter ergonomischen<br />

und Arbeitsschutz-Gesichtspunkten die im Folgenden dargestellten<br />

Kenngrößen für Monitore beachtet werden:<br />

Kenngröße Bedeutung<br />

Bildschirmdiagonale<br />

Die Bildschirmdiagonale gibt die Größe des sichtbaren<br />

Bildschirms in Zoll an.<br />

Für normales Arbeiten (auch in der Schule) reichen<br />

17"-Monitore, für professionelle Layout- und Grafikarbeiten<br />

werden besser 21"-Monitore verwendet.<br />

Auflösung Mit „Auflösung“ fasst man die Anzahl der Bildpunkte,<br />

die horizontal und vertikal dargestellt werden können.<br />

Je höher die Auflösung ist, desto feiner ist das Bild,<br />

umso kleiner sind aber auch Menüs, Symbole und<br />

Schrift unter grafischen Benutzeroberflächen.<br />

Typische Werte sind:<br />

• 640 × 480 (Pixel) nicht für grafische<br />

Oberflächen geeignet<br />

• 800 × 600; 1024 × 768 für normale Arbeiten<br />

(auch in der Schule)<br />

• 1280 × 1024; 1600 × 1200 für professionelle<br />

Zwecke, 21"-Monitore<br />

Informationsverarbeitende Technik 77<br />

Zu den Ausgabegeräten<br />

zählt man<br />

Monitor, Drucker<br />

und Plotter (elektromechanisches<br />

Gerät zum Zeichnen<br />

von Kurven). Man<br />

kann auch an das<br />

Computergrundgerät<br />

oder an das<br />

CD-ROM-Laufwerk<br />

angeschlossene<br />

Lautsprecher zu den<br />

Ausgabegeräten<br />

rechnen.


7 Grundbegriffe<br />

1 Hz = 1 1<br />

1 Hz = 1 }<br />

s<br />

1<br />

}<br />

s<br />

RAM (random access<br />

memory): Speicher<br />

mit wahlfreiem<br />

Zugriff, b S. 71<br />

Kenngröße Bedeutung<br />

Bildwiederholfrequenz<br />

und<br />

Zeilenfrequenz<br />

Die Bildwiederholfrequenz gibt an, wie oft das Monitor-Bild<br />

in einer Sekunde aufgebaut werden kann. Sie<br />

wird in Hertz (Hz) angegeben.<br />

Je höher die Frequenz, desto flimmerfreier und ruhiger<br />

ist das Bild.<br />

Selbst bei einer Auflösung von 1024 × 768 sollten mindestens<br />

70 Hz bis 100 Hz gewährleistet sein.<br />

Bei LCD-Bildschirmen reichen oft (physikalisch bedingt)<br />

60 Hz aus, weil die Dioden eine gewisse Nachleuchtzeit<br />

besitzen.<br />

Als Kenngröße für Monitore wird oft noch die Zeilenfrequenz<br />

angegeben:<br />

Zeilenfr. = Zeilenanzahl · Bildwiederholfrequenz · 1,05<br />

Der Monitor wird von einer Grafikkarte<br />

gesteuert, die sich auf einem<br />

genormten Steckplatz (Slot) innerhalb<br />

des Computergehäuses befindet<br />

(b Bild). Oft sind Grafikkarten<br />

auch schon in das Motherboard integriert<br />

(on board).<br />

Grafikkarten besitzen meist einen<br />

eigenen RAM und einen Prozessor.<br />

Von der Grafikkarte hängt stark ab,<br />

ob die Kenngrößen eines Monitors<br />

voll „ausgereizt“ werden können.<br />

Andererseits hilft eine gute Grafikkarte<br />

keinem schlechten Monitor.<br />

Kenngröße Bedeutung<br />

Zeilenfrequenz = 768 (Zeilen) · 80 Hz · 1,05<br />

= 64 512 Hz ≈ 64,5 kHz<br />

Dies ist schon eine annehmbare Zeilenfrequenz.<br />

RAM-Größe Der RAM-Baustein der Grafikkarte sollte für fotorealistische<br />

Bildschirmdarstellungen mindestens 2 MB<br />

Speicherkapazität besitzen.<br />

Bildwiederholfrequenz<br />

und<br />

Videobandbreite<br />

Die Grafikkarte sollte die gleiche Bildwiederholfrequenz<br />

wie der Monitor besitzen.<br />

Als Kenngröße für Grafikkarten wird oft die Videobandbreite<br />

(auch „Bildwiederholrate“ genannt) angegeben:<br />

Videobandbr. = Pixelanzahl · Bildwiederholfrequenz · 1,3<br />

Videobandbreite = 1024 · 768 · 100 Hz · 1,3<br />

≈ 100 MHz


Drucker<br />

Neben dem Monitor ist der Drucker das am meisten genutzte Ausgabegerät.<br />

Im Laufe der Entwicklung wurden Drucker mit unterschiedlichen<br />

Funktionsprinzipien hergestellt:<br />

Typendrucker: Für jedes druckbare Zeichen ist – ähnlich wie bei einer<br />

Schreibmaschine – ein Typenträger vorgesehen. Der Wechsel des<br />

Zeichensatzes kann nur durch Austausch der Typenträger erfolgen.<br />

Nadeldrucker: Jedes Zeichen wird aus einzelnen Punkten einer Matrix<br />

zusammengesetzt (5 × 7 oder 7 × 9 Punkte). Man spricht auch<br />

von einem Matrixdrucker. Die Zeichen werden durch Nadeln erzeugt,<br />

die durch die Matrix hindurchschnellen und das Farbband<br />

auf das Papier drücken.<br />

Thermodrucker: Durch gezielte Wärmeeinwirkung, durch die temperaturempfindliches<br />

Papier seine Farbe ändert, werden die zu druckenden<br />

Zeichen dargestellt.<br />

Durchgesetzt haben sich vor allem folgende Druckertypen:<br />

Tintenstrahldrucker: Diesen Druckertyp<br />

kann man zu den Matrixdruckern<br />

rechnen. Das Farbband<br />

entfällt und die Nadeln sind als<br />

feine Röhrchen ausgebildet, durch<br />

die Tinte auf das Papier gespritzt<br />

wird. Durch die großen Variationsmöglichkeiten<br />

des Punktrasters<br />

können sehr viele Schriftarten und<br />

Symbole dargestellt werden.<br />

Laserdrucker: Die Zeichen werden<br />

durch einen Laserstrahl erzeugt<br />

und elektrofotografisch auf das<br />

Papier aufgebracht. Die Druckqualität<br />

ist sehr gut, die Druckgeschwindigkeit<br />

sehr hoch (bis zu<br />

200 000 Zeichen pro Minute).<br />

Im Zusammenhang mit Druckern sind drei Begriffe wichtig:<br />

Bei Matrix- und Laserdruckern ist dpi ein Maß für die Druckqualität:<br />

Anzahl der Punkte, die ein Drucker pro Inch (2,54 cm) erzeugen<br />

kann.<br />

Drucker mit 2 400 dpi haben eine sehr hohe Druckqualität, die im Verlagswesen<br />

zur Herausgabe von Vierfarbbüchern genutzt wird. Für Schwarz-<br />

Informationsverarbeitende Technik 7<br />

dpi ist die Abkürzung<br />

für dots per<br />

inch


0 Grundbegriffe<br />

zu Speicherarten<br />

b Abschnitt 4.1.5,<br />

zu magnetischen<br />

Speichern insbesondere<br />

S. 400<br />

Weiß-Drucke oder Farbdrucke ohne Fotos reichen auch schon 1 200 dpi<br />

aus. Eine Druckqualität von 300 bis 600 dpi ist für nichtprofessionelle<br />

Zwecke völlig ausreichend.<br />

Ein Druckertreiber ist ein Programm, welches auf Betriebssystem-<br />

oder Benutzeroberflächenebene den Drucker steuert.<br />

Jeder Drucker hat einen eigenen Druckertreiber, der im Allgemeinen<br />

beim Kauf mitgeliefert wird. Man kann mit Druckertreibern auch ohne<br />

Druckeranschluss arbeiten.<br />

Viele Desktop-Publishing-Programme steuern auch die Monitorausgabe<br />

über Druckertreiber, man kann also schon am Bildschirm die Druckausgabe<br />

kontrollieren.<br />

PostScript ist eine imperative Programmiersprache für die geräteunabhängige<br />

Beschreibung von Druckseiten.<br />

PostScript ist ein von der Firma Adobe entwickelter standardisierter Befehlssatz<br />

für Drucker, die in Belichtungsstudios zum Einsatz kommen.<br />

Man setzt am Computer ein Buch, speichert es mithilfe eines PostScript-<br />

Druckertreibers als Druckdatei ab und übergibt diese an das Belichtungsstudio,<br />

wo damit Filme für die Druckerei hergestellt werden (b S. 14).<br />

Viele Matrix- und Laserdrucker besitzen eine solche PostScript-Option,<br />

sind dadurch aber recht teuer. Der Vorteil ist: Man hat als Grafiker oder<br />

Setzer eine genaue Kontrolle über das tatsächliche Druckergebnis.<br />

1.5.5 Externe Speicher<br />

Neben den RAMs im Mikroprozessor oder z. B. auf der Grafikkarte, die<br />

für die interne Befehlsausführung notwendig sind, gibt es eine Reihe externer<br />

Speicher, die insbesondere für die Datensicherung wichtig sind.<br />

Die wichtigsten externen Speicher für einen PC sind zurzeit Festplatte,<br />

CD-ROM, DVD und MemoryStick.<br />

Die Festplatte ist nicht<br />

nur zur Datensicherung<br />

von Bedeutung,<br />

sondern ohne große<br />

Festplatte ist die Arbeit<br />

mit speicherintensiven<br />

Benutzeroberflächen<br />

und Anwendungsprogrammen<br />

nicht möglich,<br />

denn diese werden<br />

dort abgelegt.


Die Festplatte besteht aus mehreren, übereinanderliegenden Scheiben,<br />

die sich je nach Typ (mit 3600 bis maximal 15000 Umdrehungen in der<br />

Minute) sehr schnell drehen. Der Schreib-/Lesekopf eines beweglichen<br />

Armes (ähnlich wie beim Plattenspieler) kann Daten magnetisch auf die<br />

Festplatte auftragen, lesen oder löschen.<br />

Ein älteres externes Speichermedium ist die Diskette. Ein Diskettenlaufwerk<br />

funktioniert so ähnlich wie ein Festplattenlaufwerk. Allerdings hat<br />

es nur eine einzige magnetisierbare Scheibe, die sich im Vergleich zur<br />

Festplatte sehr langsam dreht.<br />

Die CD-ROM (auch einfach CD) ist<br />

ein aus der Audio-CD (CD-DA) entwickelter<br />

Datenträger in Form einer<br />

optischen Platte.<br />

Softwarehersteller speichern ihre<br />

Programme oder umfangreiche<br />

Datenmengen auf CD-ROMs, weil<br />

diese eine Speicherkapazität von<br />

ungefähr 650 MByte (neuerdings<br />

auch 700 MB oder 800 MB) haben.<br />

Zum Abspielen wird ein geeignetes<br />

Laufwerk benötigt, neben dem CD-ROM-Laufwerk können auch CD-R/<br />

RW- und DVD-Laufwerke eingesetzt werden. Die Daten auf einer CD-<br />

ROM können nicht geändert werden. Mit sogenannten „Brennern“ kann<br />

man sich CDs selbst herstellen. Dabei gibt es zwei Möglichkeiten:<br />

• CD-R: Die gebrannte CD ist nicht änderbar.<br />

• CD-RW: Die CD kann mehrmals neu beschrieben werden.<br />

Die DVD ist im Grunde genommen<br />

eine neuartige CD mit wesentlich<br />

höherer Kapazität.<br />

Es existieren unterschiedliche DVD-<br />

Typen – nur lesbare oder wieder beschreibbare,<br />

allerdings sind letztere<br />

derzeit noch wenig verbreitet.<br />

Fast alle bisher verbreiteten DVDs<br />

werden nur auf einer Seite genutzt<br />

und verfügen dort auch nur über<br />

eine einzige Informationsschicht<br />

(DVD-5 mit 4,7 GByte).<br />

Es gibt weitere Varianten von nicht<br />

wieder beschreibbaren DVDs: DVD- mit 8,5 GByte (1 Seite, 2 Schichten),<br />

DVD-10 mit 9,4 GByte (2 Seiten, 1 Schicht) und DVD-1 mit 17,0 GByte<br />

(2 Seiten, 2 Schichten).<br />

Der MemoryStick („Speicherstab“, USB-Stick) ist eine kompakte Speicherkarte<br />

des Herstellers Sony, die vor allem in Digitalkameras und MP3-<br />

Playern benutzt wird. Er wird aber auch mehr und mehr als Wechseldatenträger<br />

am PC verwendet. Der MemoryStick ist etwa 5 cm lang, 2 cm<br />

breit und 3 mm dick. Er wiegt nur wenige Gramm und hat eine Speicherkapazität<br />

bis zu 128 MByte.<br />

Informationsverarbeitende Technik 1<br />

CD-ROM ist die<br />

Abkürzung für compact<br />

disc read only<br />

memory, also einer<br />

CD, die nur gelesen<br />

werden kann.<br />

Nebenstehend ist<br />

ein geöffnetes CD-<br />

ROM-Laufwerk mit<br />

CD-ROM abgebildet.<br />

DVD ist die Abkürzung<br />

für digital versatile<br />

disc (vielseitige<br />

digitale Disc“ oder<br />

auch digital video<br />

disc (digitale Video-<br />

Disc).<br />

Nebenstehend ist ein<br />

DVD-Laufwerk mit<br />

DVD abgebildet.


2 Grundbegriffe<br />

1.5.6 Benutzeroberflächen<br />

Arten von Benutzeroberflächen<br />

Die Programme, mit denen man arbeitet, sollten so beschaffen sein, dass<br />

ihre Bedienung einfach ist, dass sie auf falsche Eingaben robust reagieren,<br />

dass sie sich nach den Denk- und Arbeitsweisen der Benutzer richten<br />

– eben dass sie benutzerfreundlich sind.<br />

Das Erscheinungsbild des Dialogs mit dem Computer und der Anwendungsprogramme<br />

auf dem Monitor heißt Benutzeroberfläche.<br />

In Abhängigkeit von Speicherkapazitäten und der immer stärkeren Verbreitung<br />

informationsverarbeitender Technik wurden im Laufe der Zeit<br />

verschiedene Arten von Benutzeroberflächen entwickelt:<br />

Art Beschreibung Beispiele<br />

kommandogesteuert<br />

menügesteuert<br />

Der Benutzer gibt über die Tastatur<br />

Kommandos ein. Die Kommandos<br />

müssen syntaktisch korrekt sein,<br />

sonst erfolgt im Allgemeinen eine<br />

Fehlermeldung auf dem Monitor.<br />

Auf dem Bildschirm werden Listen<br />

von Kommandos angezeigt, die in<br />

der aktuellen Situation erlaubt sind.<br />

Der Nutzer wählt ein Kommando<br />

aus und legt damit Aktionen des<br />

Computers fest. Oft kann dabei die<br />

Maus eingesetzt werden.<br />

grafisch Die Benutzeroberfläche erinnert<br />

an einen Schreibtisch, auf dem<br />

Programme zum Lösen von Arbeitsaufgaben<br />

abgelegt sind, die durch<br />

grafische Symbole (Icons) verdeutlicht<br />

werden. Die Anwendungen<br />

werden in Fenstern ausgeführt, die<br />

man verschieben, vergrößern oder<br />

verkleinern kann. Umfangreiche,<br />

aber übersichtliche Menüfolgen<br />

mit Klartext sowie Werkzeug-Symbolleisten<br />

unterstützen die Arbeit.<br />

Kommandos (über Tastenkombinationen)<br />

sind möglich.<br />

Betriebssystem<br />

MS-DOS<br />

Norton Commander<br />

(auf DOS aufgesetzteBenutzeroberfläche,<br />

die die<br />

Arbeit mit dem<br />

Betriebssystem<br />

erleichtert)<br />

Windows (vgl. die<br />

folgenden Seiten)<br />

X11 (grafische<br />

Benutzeroberfläche<br />

unter UNIX / Linux<br />

zur Arbeit mit Fenstern;<br />

mit den auf<br />

X11 aufgesetzten<br />

Desktops KDE und<br />

GNOME sind auch<br />

Befehle grafisch<br />

zugänglich)<br />

Durchgesetzt haben sich die grafischen Benutzeroberflächen, da die Darstellung<br />

der Daten und Programme in grafischer Form, in Fenstern und<br />

bewegten Bildern, die leichte Interaktion und die vielen Kontrollmöglichkeiten<br />

bei der Ausführung von Dialogbefehlen den menschlichen


Denk- und Arbeitsweisen sehr nahekommen. Die Entwicklung und Nutzung<br />

von solchen Benutzeroberflächen wurde allerdings erst durch leistungsfähige<br />

Mikroprozessoren (ab Intel 486 bzw. Pentium) und große<br />

Speicher (Arbeitsspeicher ab 8 MB, Festplatte ab 200 MB) möglich.<br />

Grafische Benutzeroberflächen<br />

Als Quasi-Standard für grafische Benutzeroberflächen hat sich Microsoft<br />

Windows durchgesetzt. Trotz vieler öffentlicher Kritik an Windows sowie<br />

der marktbeherrschenden Position der Firma Microsoft und ihres Gründers<br />

bill gaTeS hat diese Standardisierung auch ihre positiven Seiten:<br />

• Es werden für den Nutzer wenig Vorkenntnisse im Umgang mit dem<br />

Computer vorausgesetzt. Elementare hardwarebezogene Aufgaben<br />

des Betriebssystems spielen sich im Verborgenen ab.<br />

• Die meisten Anwendungsprogramme sind Windows-Applikationen,<br />

d. h., dass Menü-, Dialog- und Fenstertechnik in diesen Anwendungsprogrammen<br />

ähnlich sind, ganz gleich, ob man mit einem Datenbank-,<br />

Textverarbeitungs-, Kalkulations- oder Grafikprogramm arbeitet.<br />

Im Folgenden werden daher wesentliche Elemente grafischer Benutzeroberflächen<br />

am Beispiel von Windows beschrieben.<br />

Wichtigstes Eingabegerät hierbei ist die Maus. Techniken der Arbeit mit<br />

der Maus sollten daher beherrscht werden (b S. 76).<br />

Auf dem Monitor erscheinen die Programme oder Programmgruppen<br />

als Icons (anschauliche, grafische Symbole). Den Start eines gewünschten<br />

Programms oder das Öffnen eines Fensters erreicht man dadurch, dass<br />

man das Icon markiert (anklickt) und danach die -Taste drückt<br />

oder einen Doppelklick mit der Maus auf das Icon ausführt.<br />

Die Icons können durch Ziehen mit der Maus an eine gewünschte Stelle<br />

verschoben werden. Der Nutzer richtet sich seinen „Schreibtisch“ entsprechend<br />

seinen Wünschen ein.<br />

Ein Icon, der Papierkorb, soll etwas näher betrachtet werden: Alle Dateien<br />

oder Verzeichnisse (Ordner), die gelöscht werden, landen im Papierkorb<br />

und man kann das Löschen leicht rückgängig machen. Versehentlich<br />

gelöschte Dateien sind also schnell wiederherstellbar.<br />

Löschen kann man Dateien unter Windows, indem man in Fenstern, in<br />

denen Dateien angezeigt werden, die entsprechenden Dateien markiert,<br />

den Menüpunkt „Datei“ auswählt und danach den Befehl „Löschen“<br />

anklickt. Mit der -Taste erreicht man das Gleiche.<br />

Sollen Dateien tatsächlich gelöscht, also nicht erst in den Papierkorb geworfen,<br />

sondern gleich „verbrannt“ werden, dann ist dies dadurch erreichbar,<br />

dass man die Shift-Taste < > beim Löschen gedrückt hält.<br />

Nur Festplattenlaufwerke besitzen einen Papierkorb, Diskettenlaufwerke<br />

nicht, gelöschte Dateien sind also nicht mehr auf der Diskette<br />

vorhanden.<br />

Am unteren Ende des Bildschirms findet man die Task-Leiste. Hier werden<br />

alle geöffneten Fenster durch Schaltflächen angezeigt. Die Task-<br />

Leiste ist auch dann zu sehen, wenn man das Fenster eines Anwendungs-<br />

Informationsverarbeitende Technik 3


4 Grundbegriffe<br />

Die Direkt-Hilfe von<br />

Windows lässt sich<br />

nicht nur über die<br />

Task-Leiste aufrufen,<br />

sondern auch mit<br />

der Funktionstaste<br />

oder dem Hilfe-<br />

Menü „?“ in den<br />

Arbeitsplatz- oder<br />

Explorerfenstern.<br />

Schaltflächen<br />

Fenster minimieren<br />

(auf der Task-Leiste<br />

ablegen)<br />

programms maximiert hat. Ein Wechsel zwischen den verschiedenen<br />

Programmen wird durch Anklicken der entsprechenden Schaltfläche<br />

erreicht.<br />

Ganz links ist die Schaltfläche „Start“ zu sehen. Bei Anklicken erscheint<br />

ein Menü mit wichtigen Befehlen (z. B. Aufruf von installierten Programmen,<br />

Änderungen von Einstellungen des Betriebssystems, Suchen von<br />

Dateien, Hilfe-Funktion, Beenden der Arbeit am Computer).<br />

Ein typisches Merkmal für die Arbeit mit grafischen Benutzeroberflächen<br />

ist die Arbeit in Fenstern. Mehrere Programmgruppen oder Anwendungsprogramme<br />

können gleichzeitig in verschiedenen Fenstern geöffnet<br />

werden, man kann bei der Arbeit zwischen den Fenstern hin- und<br />

herspringen.<br />

Die Fenster können durch Anklicken und Ziehen der Randleisten in die<br />

gewünschte Größe oder Form und durch Klicken auf die Leiste mit dem<br />

Namen des Fensters und Ziehen in die gewünschte Position auf dem Bildschirm<br />

gebracht werden.<br />

Fenster maximieren<br />

(oder letzte Größe<br />

wiederherstellen)<br />

Fenster (Anwendung)<br />

schließen<br />

Bildlaufleisten<br />

Ausschnitt nach links rollen Ausschnitt nach rechts rollen<br />

Fensterausschnitt abwärtsrollen<br />

Ausschnitt durch Anfassen und<br />

Ziehen mit der Maus an die gewünschte<br />

Position bringen<br />

Ausschnitt abwärtsrollen<br />

In fast alle Fenster ist die Menütechnik integriert. Ein Menü ist eine Liste<br />

von Befehlen, die in der aktuellen Situation am Bildschirm erlaubt bzw.<br />

möglich sind.<br />

Im obigen Bild werden in der Menüleiste beispielsweise die Menüs „Datei“,<br />

„Bearbeiten“, „Ansicht“, „Einfügen“, „Format“ und „?“ (Hilfe) angezeigt.<br />

Durch Anklicken des Menüs Datei erscheint das gesamte Untermenü<br />

wie ein Rollladen. Es heißt deshalb auch Pull-down-Menü. Selbst<br />

die Anordnung, die Bezeichnung und der Inhalt der Pull-down-Menüs ist<br />

in den Fenstern und Programmen unter Windows einheitlich.


Ganz links ist immer das Menü „Datei“ zu finden mit solchen Untermenüs<br />

wie „Neu“, „Öffnen“, „Speichern“, „Speichern unter…“,<br />

„Drucken“ oder (Programm) „Beenden“.<br />

Das Menü „Bearbeiten“ steht an zweiter Stelle mit Punkten wie<br />

„Ausschneiden“, „Kopieren“, „Einfügen“ usw.<br />

Befehle, die man in bestimmten Situationen nicht ausführen kann, sind<br />

grau gekennzeichnet. Befehle, die nicht direkt ausgeführt werden können,<br />

wo weitere Eingaben notwendig sind, sind mit drei Pünktchen (Öffnen<br />

eines Dialogfeldes) markiert.<br />

Manchmal reichen die Untermenüs eines Pull-down-Menüs nicht aus, es<br />

sind „Unter-Unter-Menüs“ erforderlich. Diese werden dann direkt neben<br />

den Untermenüs angezeigt. Man spricht von einem Pop-up-Menü.<br />

Um das in Windows integrierte kleine, aber durchaus leistungsfähige<br />

Textverarbeitungsprogramm WordPad aufzurufen, geht man wie<br />

folgt vor:<br />

Menü „Start“ (Schalter in der Task-Leiste) g „Programme“ g<br />

„Zubehör“ g „WordPad“.<br />

Menüs haben den Vorteil, dass man keine Kommandosprache beherrschen<br />

muss, um am Computer zu arbeiten. Allerdings kann man keinen<br />

Befehl überspringen, um zu einem bestimmten Menüpunkt zu gelangen<br />

und eine Aktion auszulösen.<br />

Fortgeschrittenen Nutzern helfen daher oft Tastenkombinationen (Hotkeys,<br />

„heiße Tasten“) für bestimmte Befehle, die ebenfalls bei der Arbeit<br />

mit grafischen Benutzeroberflächen möglich sind. Die Tastenkombinationen<br />

zum Auslösen von Aktionen stehen oft in den Untermenüs hinter<br />

den Befehlen. Einige sollte sich auch der Anfänger merken:<br />

Hotkey Wirkung<br />

+ s Die aktuell bearbeitete Datei wird gespeichert.<br />

+ p Das Druck-Dialogfeld wird aufgerufen.<br />

+ c<br />

+ v<br />

+ x<br />

• Kopieren<br />

• Einfügen an eine zuvor markierte Stelle<br />

Die Tastenkombinationen + c und + v sind<br />

deshalb interessant, weil sie vielseitig anwendbar sind<br />

(auf markierte Dateien und Verzeichnisse, Grafiken, Textteile<br />

und Zeichen).<br />

Mit + c werden markierte Daten in die Zwischenablage<br />

von Windows kopiert, mit + v aus diesem<br />

Speicher herauskopiert.<br />

Die Daten bleiben bis zum Ausschalten des Computers<br />

dort bzw. werden beim nächsten Kopiervorgang überschrieben.<br />

• Löschen markierter Objekte und Verschieben in die Zwischenablage<br />

Informationsverarbeitende Technik 5<br />

Immer im Kopf:<br />

+ c<br />

und<br />

+ v.<br />

Unter dem Betriebssystem<br />

Mac OS sind<br />

die Tastenkombinationen<br />

ähnlich,<br />

statt wird allerdings<br />

die •-Taste<br />

verwendet.


6 Grundbegriffe<br />

1.5.7 Arbeit mit Dateien (Dateihandling)<br />

Dateiverwaltung<br />

Für das Betriebssystem besteht der Computer nur aus<br />

• Datenträgern (Disketten, Festplatten, CD-ROMs), vergleichbar mit Aktenschränken,<br />

die Aktenordner enthalten,<br />

• Verzeichnissen (Ordnern), vergleichbar mit Aktenordnern, die weiter<br />

geordnet sind und Akten enthalten,<br />

• Dateien, vergleichbar mit Akten (Texte, Bilder, …).<br />

Die Hierarchie der Ordnungsmittel ist in folgendem Klassendiagramm<br />

dargestellt:<br />

0,1 0..*<br />

DATENTRÄGER 1 0..*<br />

0,1 0..*<br />

Objektbezeichnungen<br />

Alle Objekte haben bestimmte Bezeichnungen, die man nach festgelegten<br />

Regeln bilden muss, damit sie das Betriebssystem erkennen und<br />

unterscheiden kann.<br />

Vereinbarungen für Datenträgerbezeichnungen<br />

Windows A: B: Diskettenlaufwerke<br />

C: D: E: … Z: Festplatten oder Teile von Festplatten<br />

(Partitionen), DVD-Laufwerke,<br />

CD-ROM-Laufwerke, virtuelle Speicher,<br />

MemoryStick<br />

Linux Alle Datenträger oder Partitionen erhalten beliebige<br />

Namen mit einer maximalen Länge von 255 Zeichen (z. B.<br />

cdrom) und werden als Ordner in genau einem Ordnerbaum<br />

eingebunden.<br />

Der Name von Verzeichnissen (Ordnern) darf unter MS-DOS aus maximal<br />

8 Zeichen bestehen. Ab Windows 95 und unter Mac OS sind, um die Aussagekraft<br />

solcher Bezeichnungen zu erhöhen, auch mehr Zeichen zugelassen.<br />

Um die Kompatibilität (die Austauschbarkeit) zwischen verschiedenen<br />

Betriebssystemen und Datenträger-Standards zu gewährleisten,<br />

ist man aber gut beraten, bei der Vergabe von Verzeichnisnamen nicht<br />

mehr als 8 Zeichen zu verwenden.<br />

Man sollte möglichst nur Buchstaben oder Ziffern verwenden, statt dem<br />

Leerzeichen den Unterstrich: _


Vereinbarungen für Ordnerbezeichnungen<br />

Windows Das höchste Verzeichnis (der Hauptaktenordner) heißt<br />

Hauptverzeichnis (Wurzelverzeichnis, root) und hat den<br />

Namen „\“ (Backslash).<br />

Um ein ganz bestimmtes Unterverzeichnis zu kennzeichnen,<br />

muss der gesamte „Pfad“, der durchlaufen werden<br />

muss, um zu ihm zu gelangen, angegeben werden:<br />

E:\WORD\TEXTE\NUTZER1<br />

Linux Pfadangaben beginnen mit „/“ (Slash), dem Zeichen für<br />

die Wurzel. Im folgendem Beispiel ist noch der Ordner<br />

cdrom für das gleichnamige Laufwerk angegeben:<br />

/cdrom/WORD/TEXTE/NUTZER1<br />

Dateibezeichnungen werden folgendermaßen gebildet:<br />

dateiname.erweiterung<br />

Der Dateiname besteht (unter MS-DOS) aus maximal 8 Zeichen und wird<br />

vom Nutzer festgelegt. Nicht zugelassen sind Leerzeichen und Sonderzeichen<br />

wie : . * ^ @ \ / < > ;<br />

Der Unterstrich ( _ ) ist erlaubt. Es sollten keine Umlaute benutzt werden.<br />

Auch dürfen folgende Namen nicht verwendet werden, da sie Schnittstellen<br />

(Gerätetreiber) bedeuten: CON AUX COM1 COM2 PRN LPT1 LPT2<br />

LPT3 NUL<br />

Unter Windows, Linux/UNIX und Mac OS können mehr Zeichen verwendet<br />

werden. Auch können unter bestimmten Betriebssystemen durchaus<br />

Umlaute oder Leerzeichen genutzt werden. Man sollte dies dennoch vermeiden.<br />

Die Erweiterung besteht (unter MS-DOS und Windows) aus maximal<br />

3 Zeichen und gibt den Typ der Datei an. Die Erweiterung wird i. Allg.<br />

durch das genutzte Anwendungsprogramm selbst festgelegt.<br />

BRIEF_1.DOC könnte ein Brief an einen Verwandten sein. Den Dateinamen<br />

BRIEF_1 hat der „Schreiber“ festgelegt, die Endung DOC<br />

wurde durch das genutzte Programm (z. B. Word) erstellt.<br />

Verwaltung von Datenträgern<br />

Datenträger müssen formatiert (in Spuren und Sektoren eingeteilt) sein,<br />

bevor sie Daten aufnehmen können. Alle Daten, die sich vor diesem Vorgang<br />

auf dem Datenträger befinden, werden gelöscht.<br />

Gekaufte Datenträger sind heute meist schon formatiert. Trotzdem ist<br />

es unter Umständen notwendig, einen Datenträger neu zu formatieren,<br />

z. B. dann, wenn man sicher sein will, dass alle Daten (beispielsweise Viren)<br />

auch wirklich gelöscht sind.<br />

Formatieren von Disketten unter Windows:<br />

– Diskette in das Diskettenlaufwerk einlegen<br />

– Doppelklicken auf das Symbol Arbeitsplatz und dann Klicken auf<br />

das Symbol für den Datenträger, der formatiert werden soll<br />

– Menü „Datei“ g „Formatieren“<br />

Informationsverarbeitende Technik 7<br />

Unter Linux gelten<br />

die gleichen Regeln<br />

wie unter Windows<br />

oder MS-DOS. Allerdings<br />

ist die Groß-<br />

und Kleinschreibung<br />

zu beachten und<br />

ausführbare Dateien<br />

haben normalerweise<br />

keine Dateiendung<br />

(wie EXE).<br />

Das Formatieren<br />

der Festplatte sollte<br />

dem Systembetreuer<br />

überlassen bleiben!


Grundbegriffe<br />

Das Umbennen von<br />

Verzeichnissen ist<br />

unter älteren DOS-<br />

Versionen eigentlich<br />

nur möglich, indem<br />

man ein neues Verzeichnis<br />

anlegt, alle<br />

Unterverzeichnisse<br />

und Dateien des<br />

alten Verzeichnisses<br />

hineinkopiert und<br />

das alte Verzeichnis<br />

dann löscht.<br />

Disketten kann man mithilfe des Betriebssystems kopieren und man<br />

kann ihnen Namen geben. Zum Kopieren von CDs oder DVDs wird spezielle<br />

„Brennersoftware“ genutzt.<br />

Arbeit mit Verzeichnissen<br />

Durch Verzeichnisse kann die Ablage von Dateien auf einem Datenträger<br />

sinnvoll organisiert werden. Auf einer Festplatte können mehrere<br />

Tausend Dateien gespeichert sein. Sind diese nicht geordnet abgelegt,<br />

können einzelne Dateien schwer wiedergefunden werden.<br />

Auch Disketten sollten durch Verzeichnisse mit ausdrucksstarken Bezeichnungen<br />

zur Dateiaufnahme vorbereitet werden. Ein solcher „Verzeichnisbaum“<br />

kann beispielsweise folgendermaßen aussehen:<br />

\<br />

Dos Texte Rechnung Diagramm<br />

Briefe Sonst<br />

Privat Gesch<br />

Arbeit mit Verzeichnissen<br />

MS-DOS Mit den Befehlen MD und RD können Verzeichnisse angelegt<br />

bzw. gelöscht werden.<br />

MD TEXTE ein Verzeichnis TEXTE wird angelegt<br />

RD TEXTE das Verzeichnis TEXTE wird gelöscht<br />

Ein Verzeichnis kann nur vom übergeordneten Verzeichnis<br />

aus gelöscht werden. Es muss leer sein.<br />

Mit CD kann man Verzeichnisse wechseln:<br />

CD\ Wechsel ins Wurzelverzeichnis<br />

CD\SPIELE Wechsel von einem beliebigen Verzeichnis<br />

über das Wurzelverzeichnis ins Verzeichnis<br />

SPIELE<br />

CD.. Wechsel ins nächsthöhere Verzeichnis<br />

Das aktuelle Verzeichnis ist erkenntlich am Prompt-Zeichen,<br />

der Eingabeaufforderung vor jeder Befehlszeile. Das<br />

Standard-Prompt-Zeichen ist pfad><br />

Der Verzeichnisbaum eines Datenträgers wird mit dem<br />

transienten Befehl TREE angezeigt.<br />

TREE A: zeigt alle Verzeichnisse im Laufwerk A:<br />

TREE C: /F zeigt alle Verzeichnisse und zusätzlich alle<br />

Dateien auf der Festplatte an; mit <br />

unterbrechbar


Arbeit mit Verzeichnissen<br />

Windows Verzeichnisse anzeigen:<br />

– Doppelklicken auf das Symbol Arbeitsplatz<br />

– Doppelklicken auf das Symbol für das entsprechende<br />

Laufwerk (Windows zeigt die Dateien und Verzeichnisse<br />

auf dem Laufwerk an)<br />

– Man kann einen Ordner öffnen, indem man darauf<br />

doppelklickt. (Man kann zum vorhergehenden Ordner<br />

wechseln, indem man auf in der Symbolleiste klickt<br />

oder die Rücktaste drückt.)<br />

Die Hierarchie aller Verzeichnisse wird nur im Windows-<br />

Explorer angezeigt:<br />

– Menü „Start“ g „Programme“ g „Zubehör“ g<br />

„Windows-Explorer“<br />

– auf ein Verzeichnis auf der linken Seite des Fensters klicken,<br />

um dessen Inhalt auf der rechten Seite anzuzeigen<br />

(Man kann die Größe von beiden Fensterseiten ändern,<br />

indem man die Trennleiste entsprechend zieht. Man<br />

kann ein Verzeichnis schnell öffnen und dessen Unterverzeichnisse<br />

anzeigen, indem man auf das Verzeichnis<br />

auf der linken Seite des Fensters doppelklickt.)<br />

– auf das Pluszeichen (+) klicken, um Unterverzeichnisse<br />

anzuzeigen<br />

Neue Verzeichnisse können im Arbeitsplatz oder Windows-<br />

Explorer erstellt werden:<br />

– Menü „Datei“ g „Neu“ g Ordner (Das neue Verzeichnis<br />

erscheint mit einem temporären Namen.)<br />

– Namen für das neue Verzeichnis eingeben; <br />

Im Arbeitsplatz oder Windows-Explorer können auch Verzeichnisse<br />

einfach gelöscht (anklicken und -Taste)<br />

oder umbenannt werden (zweimaliges Klicken – kein Doppelklick<br />

– auf das Verzeichnis; Namen ändern).<br />

Linux Nach dem Einloggen wird die Shell gestartet. Verzeichnisse<br />

lassen sich mit mkdir erstellen und mit rmdir<br />

löschen. Man kann sich das aktuelle Verzeichnis mit pwd<br />

anzeigen lassen.<br />

Mit cd können Verzeichnisse gewechselt werden:<br />

cd .. wechselt in das nächsthöhere Verzeichnis,<br />

cd / wechselt in das Wurzelverzeichnis,<br />

cd /user/lib wechselt in das Verzeichnis lib über<br />

user.<br />

Für die relative Pfadangabe sind zwei Einträge von Bedeutung:<br />

„.“ steht für das jeweilige Verzeichnis selbst und<br />

„..“ steht für das nächsthöhere Verzeichnis.<br />

Den Inhalt eines Verzeichnisses kann man sich mit ls<br />

auflisten lassen.<br />

Informationsverarbeitende Technik


0 Grundbegriffe<br />

Unter Linux stehen<br />

Editoren wie vi,<br />

joe, emacs, oder<br />

elvis zum Erstellen<br />

von Textdateien zur<br />

Verfügung.<br />

Joker<br />

Wichtig für die Arbeit mit Dateien sind Jokerzeichen. Mit ihnen können<br />

gezielt bestimmte Gruppen von Dateien und Verzeichnissen „herausgefiltert“<br />

werden. Auch für die Suche im Internet sind sie von Interesse.<br />

Dort nennt man sie aber im Allgemeinen Wildcards. Joker sind Platzhalter<br />

für ein oder mehrere Zeichen in Dateibezeichnungen bzw. Verzeichnisnamen.<br />

Der Joker „?“ steht für ein beliebiges Zeichen, der Joker „*“<br />

für mehrere Zeichen.<br />

do?ument.doc Es wird nach einer Datei gesucht, die sowohl<br />

dokument.doc als auch document.doc heißen<br />

könnte bzw. in der ein beliebiger Buchstabe an<br />

der 3. Position vorkommen kann.<br />

*.txt Es wird nach allen Dateien gesucht, die die Endung<br />

txt besitzen.<br />

tmp*.* Es wird nach allen Dateien gesucht, die mit tmp<br />

beginnen.<br />

a* Es wird nach allen Dateien und Verzeichnissen<br />

gesucht, die mit a beginnen.<br />

do?ument.* Es wird nach allen Dateien gesucht, deren Name<br />

z. B. dokument oder document oder ähnlich<br />

sein könnte. Die Endung ist beliebig.<br />

Arbeit mit Dateien<br />

Dateien können auf verschiedene Art und Weise erzeugt werden:<br />

• Mit den Befehlen COPY CON, EDIT und EDLIN stellt MS-DOS Editoren<br />

(„Texterzeuger“) bereit, mit denen man kleine ausführbare Dateien<br />

(z. B. Programme mit der Endung „.BAT”) selbst herstellen kann.<br />

• Mit Programmierumgebungen kann man Dateien (Programme) erzeugen.<br />

Die Endung „.PAS” steht z. B. für Turbo-Pascal-Programme.<br />

• Anwendungsprogramme erzeugen Dateien.<br />

Zum Beispiel erzeugt Works für Windows Textdateien (Endung<br />

„.WPS”), Kalkulationstabellen und Diagramme (Endung „.WKS”), Datenbank-Dateien<br />

(Endung „.WDB”) und Datenfernübertragungs-Dateien<br />

(Endung „.WCM”).<br />

Natürlich können auch fertige Dateien in die angelegten Verzeichnisse<br />

kopiert werden.<br />

Arbeit mit Dateien<br />

MS-DOS Mit dem Befehl DIR werden Dateien in einem Verzeichnis<br />

angezeigt:<br />

DIR C:\DOS zeigt den Inhalt des DOS-Verzeichnisses an<br />

DIR *.COM zeigt alle Dateien im aktuellen Verzeichnis<br />

mit der Endung COM an<br />

DIR /w Anzeige in 5 Spalten; Angaben zur Größe<br />

usw. entfallen<br />

DIR /p seitenweise Auflistung der Dateien im aktuellen<br />

Verzeichnis


Arbeit mit Dateien<br />

MS-DOS Die allgemeine Syntax zum Kopieren lautet:<br />

COPY lw:\pfad\quelldatei lw:\pfad\zield<br />

Beispiel: COPY C:\TEXTE\BRIEF.DOC A:\BRIEF1.DOC<br />

Befindet man sich gerade im Quellverzeichnis, kann dieses<br />

weggelassen werden. Befindet man sich im Zielverzeichnis<br />

kann der gesamte „Zielblock“ wegfallen.<br />

Der Befehl DEL ist zum Löschen zuständig, der Befehl REN<br />

zum Umbennen:<br />

DEL OTTO.TXT löscht Datei OTTO.TXT<br />

DEL *.SIK löscht alle Dateien mit der Endung .SIK<br />

DEL *.* löscht alle Dateien im aktuellen Verzeichnis;<br />

Sicherheitsabfrage ist mit „J“ zu beantworten<br />

REN UMSATZ2.WKS VERLUST.WKS Umbenennung einer<br />

Datei im aktuellen Verzeichnis<br />

Mit Umbenennungen sollte man vorsichtig sein. Oft sind<br />

Dateien miteinander verknüpft und mit der Bezeichnungsänderung<br />

gehen meist auch die Verknüpfungen verloren.<br />

(b auch Randspalte)<br />

Windows Die Anzeige von Dateien erfolgt wie die Anzeige von Verzeichnissen<br />

(b S. 89 oben).<br />

Dateien kopieren (b auch Randspalte):<br />

– im Arbeitsplatz oder Windows-Explorer auf die Datei klicken,<br />

die kopiert werden soll<br />

– Menü „Bearbeiten“ g „Kopieren“<br />

– Ordner oder Laufwerk öffnen, wo Kopie abgelegt werden<br />

soll<br />

– Menü „Bearbeiten“ g „Einfügen“<br />

Man kann mehrere Dateien und Ordner zum Kopieren<br />

auswählen, indem man bei gedrückter -Taste alle<br />

gewünschten Elemente anklickt.<br />

Dateien löschen:<br />

– im Arbeitsplatz oder Windows-Explorer Dateien auswählen,<br />

die gelöscht werden sollen<br />

– oder Menü „Datei“ g „Löschen“<br />

Man kann mehrere Dateien und Ordner zum Löschen auswählen,<br />

indem man bei gedrückter -Taste alle gewünschten<br />

Elemente anklickt.<br />

Dateien, die hintereinander aufgelistet sind, kann man<br />

markieren und auswählen, indem man die < >-Taste gedrückt<br />

hält. Die ausgewählten Dateien werden standardmäßig<br />

nicht gelöscht, sondern im Papierkorb abgelegt.<br />

Endgültiges Löschen kann man dadurch erzwingen, dass<br />

beim Löschen die < >-Taste gedrückt gehalten wird.<br />

Zum Umbenennen wird auf die Dateibezeichnung zweimal<br />

geklickt (kein Doppelklick) und die Änderung vorgenommen.<br />

Informationsverarbeitende Technik 1<br />

Bei Dateibezeichnungen<br />

sollte man<br />

nicht die Endung<br />

umbenennen, damit<br />

das Programm,<br />

mit dem die Datei<br />

erstellt wurde, sie<br />

wiedererkennt.<br />

Durch Umbenennung<br />

der Endung<br />

erreicht man auch<br />

keine Änderung des<br />

Dateiformats, dies<br />

können nur spezielle<br />

Konvertierungsprogramme.<br />

Kopieren von Dateien<br />

mit der Maus:<br />

Man kann Dateien<br />

mit der Maus aus<br />

einem Verzeichnis<br />

in ein anderes<br />

Verzeichnis ziehen.<br />

Dazu müssen Quell-<br />

und Zielverzeichnis<br />

in geöffneten Fenstern<br />

sichtbar sein.<br />

Befinden sich Quell-<br />

und Zielverzeichnis<br />

auf demselben<br />

Laufwerk, wird die<br />

Datei verschoben;<br />

befinden sich Quell-<br />

und Zielverzeichnis<br />

auf verschiedenen<br />

Laufwerken, wird<br />

die Datei kopiert.<br />

Man kann Windows<br />

zum Kopieren – auch<br />

auf dem gleichen<br />

Laufwerk – zwingen,<br />

indem man<br />

die -Taste<br />

gedrückt hält.


2 Grundbegriffe<br />

Wird ein auf Linux<br />

aufgesetzter Desktop<br />

wie KDE verwendet,<br />

geschieht<br />

das Dateihandling<br />

so ähnlich wie unter<br />

Windows.<br />

Arbeit mit Dateien<br />

Linux Die Dateien des aktuellen Verzeichnisses kann man sich<br />

mit ls auflisten lassen, ls –l listet zusätzlich die Dateiangaben<br />

auf.<br />

Neben dem Dateinamen, der Dateigröße und dem Erstellungsdatum<br />

werden jeweils noch Eigentümer und Zugriffsrechte<br />

angezeigt.<br />

Jeder Systembenutzer gehört einer Gruppe an. Gleichzeitig<br />

kann er auch Mitglied anderer Gruppen sein. Die persönlichen<br />

Zugriffsrechte ergeben sich aus den Zugriffsrechten<br />

der Gruppen:<br />

r (read) Leseberechtigung<br />

w (write) Berechtigung zum Anlegen von Verzeichnissen<br />

und Dateien<br />

x (execute) Ausführungsberechtigung<br />

1.5. Arbeitsschutz<br />

Mit mv wird eine Datei umbenannt, mit rm gelöscht.<br />

Mit cp dateiname ziel lassen sich Dateien kopieren,<br />

mit move verschieben (oder umbenennen).<br />

Mit den Hilfsprogrammen more und less kann man<br />

in Textdateien blättern, kürzere Dateien werden am<br />

schnellsten mit cat auf den Monitor gebracht.<br />

Im Zusammenhang mit der Arbeit am Computer fällt oft der Begriff „Ergonomie“,<br />

der aber eine umfassendere Bedeutung besitzt:<br />

Ergonomie: Wissenschaftliche Disziplin, die sich mit der Anpassung<br />

von Arbeitsmitteln und Arbeitsumgebungen an Eigenschaften und<br />

Bedürfnisse der Menschen beschäftigt, um deren Gesundheit zu<br />

schützen und ihre Leistungsfähigkeit zu erhöhen.<br />

In der Informatik unterscheidet man oft zwischen Software- und Hardware-Ergonomie.<br />

Die Software-Ergonomie befasst sich mit der Gestaltung dialogorientierter<br />

Programmsysteme und Benutzeroberflächen, die den<br />

geistigen, körperlichen und sozialen Bedürfnissen der Menschen<br />

entgegenkommen.<br />

So fordert man heute auch in Bewertungskriterien für den Einsatz<br />

des Computers in der Schule leistungsstarke Benutzeroberflächen, die<br />

die Schüler mit möglichst wenig Details des Betriebssystems und der<br />

Hardware konfrontieren, damit sie sich in der informationstechnischen<br />

Grundbildung und bei der Verwendung des Computers in anderen Unterrichtsfächern<br />

auf wesentlichere Inhalte konzentrieren können.


Die Hardware-Ergonomie beschäftigt sich mit der Anpassung der<br />

Arbeitsgeräte (Monitor, Tastatur, Maus, …) und der Arbeitsumgebung<br />

(Stuhl, Tisch, Beleuchtung, …) an die körperlichen und psychologischen<br />

Eigenschaften der am Computer arbeitenden Menschen.<br />

Es geht letztlich um die Gesundheit: Schlechtes Licht kann zu Kopfschmerzen<br />

und Augenbeschwerden führen; ein zu hoher Bildschirm oder<br />

Tisch begünstigt einen gekrümmten Rücken, einen verspannten Nacken<br />

oder ebenfalls Kopfschmerzen und Augenprobleme.<br />

Auch für die Schule gelten Vorschriften und technische Regelwerke hinsichtlich<br />

ergonomischer Anforderungen, die einzuhalten sind. Dazu gehören:<br />

• staatliche Regelungen wie die Bildschirmarbeitsverordnung (Bild-<br />

SchArbV) als Umsetzung der EU-Richtlinie 90/270EWG vom 29.5.1990<br />

sowie das Gesetz über technische Arbeitsmittel;<br />

• Regelungen von Unfallversicherungsträgern wie GUV 17.7 (Sicherheitsregeln<br />

für Büroarbeitsplätze von 1979), GUV 17.8 und 23.3 sowie<br />

50.12 (Sicherheitsregeln für Bildschirmarbeitsplätze im Bürobereich<br />

von 1980, 1994 bzw. 1997);<br />

• unzählige Normen des Deutschen Instituts für Normung e. V. (DIN), die<br />

ca. alle 5 Jahre überarbeitet werden, sowie europäische und internationale<br />

Normen (ISO).<br />

Im Folgenden sind ergonomische Anforderungen an Computerarbeitsplätze<br />

aufgeführt, die bei der Einrichtung von Computerkabinetten und<br />

bei der Arbeit am Computer zu beachten sind:<br />

• Gesundheitliche Probleme können vor allem durch die Arbeit am Monitor<br />

auftreten.<br />

• Die auf dem Bildschirm dargestellten Zeichen müssen scharf, deutlich<br />

und ausreichend groß sein sowie einen angemessenen Zeichenund<br />

Zeilenabstand haben.<br />

• Das Bild muss stabil und frei von Flimmern sein und darf keine Verzerrungen<br />

aufweisen. Der Monitor sollte strahlungsarm sein.<br />

• Die Helligkeit der Bildschirmanzeige und der Kontrast müssen einfach<br />

einstellbar sein und den Verhältnissen der Arbeitsumgebung<br />

angepasst werden können.<br />

• Bei längerer Arbeit am Computer sollten grelle Farben bei den<br />

Bildschirmeinstellungen vermieden werden, Schwarz-Weiß-Einstellungen<br />

sind für die Augen gut.<br />

• Der Bildschirm muss frei von Reflexionen und Blendungen sein. Es<br />

ist also immer auf den Einfallswinkel von Sonnenstrahlen oder elektrischer<br />

Beleuchtung zu achten.<br />

• Der Bildschirm sollte immer sauber sein. Man sollte ihn nicht berühren<br />

bzw. z. B. Fingerabdrücke entfernen.<br />

• Der Monitor muss frei drehbar und neigbar sein.<br />

• Die Tastatur muss vom Monitor getrennt und neigbar sein. Sie muss<br />

eine reflexionsarme Oberfläche besitzen. Die Beschriftung der Tasten<br />

muss bei normaler Arbeitshaltung gut lesbar sein. Die Arbeitsfläche<br />

vor der Tastatur muss ein Auflegen der Handballen ermöglichen.<br />

Informationsverarbeitende Technik 3<br />

b auch Kenngrößen<br />

von Monitoren,<br />

S. 77, 78


4 Grundbegriffe<br />

• Alle Eingabegeräte (Tastatur, Maus) müssen auf dem Arbeitstisch variabel<br />

angeordnet werden können.<br />

Der Arbeitstisch muss eine ausreichend große und reflexionsarme<br />

Oberfläche besitzen.<br />

Der Arbeitsstuhl muss ergonomisch gestaltet und standsicher sein.<br />

Wenn eine ergonomisch günstige Arbeitshaltung ohne Fußstütze nicht<br />

erreicht werden kann, muss diese zur Verfügung gestellt werden.<br />

Ein Beispiel für eine günstige Anordnung von Arbeitsmitteln und ergonomische<br />

Sitzhaltung wird im folgenden Bild gegeben.<br />

42 cm – 53 cm<br />

45 cm – 70 cm<br />

5°<br />

Kopfneigung: 5°–20°<br />

Neigung der Sehachse:<br />

5°–35°<br />

Öffnungswinkel des<br />

optimalen Sehfeldes:<br />

20°–25°<br />

• Am Arbeitsplatz muss ausreichender Raum für wechselnde Arbeitshaltungen<br />

und -bewegungen vorhanden sein.<br />

Wenn eine Stunde am Computer gearbeitet wurde, sollte eine Pause<br />

von 10 Minuten eingelegt werden.<br />

• Die Beleuchtung muss an das Sehvermögen des Benutzers angepasst<br />

sein. Dabei ist ein angemessener Kontrast zwischen Bildschirm und Arbeitsumgebung<br />

zu gewährleisten.<br />

72 cm


Informatik<br />

Wissenschaft von der automatischen Informationsverarbeitung<br />

Algorithmus<br />

Verarbeitungsvorschrift, die aus<br />

einer endlichen Folge von eindeutig<br />

ausführbaren Anweisungen<br />

besteht.<br />

Algorithmen können mit der Umgangssprache,<br />

grafisch oder als<br />

Programm dargestellt werden.<br />

Ein Computer kann nur Probleme<br />

lösen, die sich als Algorithmen beschreiben<br />

lassen.<br />

Grundbegriffe<br />

Das Wichtigste im Überblick 5<br />

ingabe erarbeitung usgabe<br />

Maus<br />

Tastatur<br />

Scanner<br />

Joystick<br />

Mikrofon<br />

Rechenwerk<br />

Computer<br />

Arbeitsspeicher<br />

Prozessor<br />

(CPU)<br />

Steuerwerk<br />

externe Speicher<br />

Speicherwerk<br />

Festplatte Diskette<br />

CD-ROM/DVD<br />

Speichereinheiten<br />

• 1 KByte (Kilobyte) = 1024 Byte ≈ 1000 Byte<br />

• 1 MByte (Megabyte) ≈ 1 Million Byte<br />

• 1 GByte (Gigabyte) 1 Milliarde Byte<br />

Information<br />

Bedeutung (Sinn) einer Nachricht<br />

für den Empfänger.<br />

Informationen, die in den Computer<br />

eingegeben und durch ihn verarbeitet<br />

werden, heißen Daten.<br />

Die kleinste Einheit der Datendarstellung<br />

ist ein Bit. Ein Bit kann 2<br />

Werte annehmen (0 und 1). Die<br />

Zusammenfassung von 8 Bit heißt<br />

Byte (Zeichen).<br />

Bildschirm<br />

Drucker<br />

Lautsprecher<br />

Kopfhörer


6 Grundbegriffe<br />

1.6 Datenschutz und Datensicherheit, Software-Rechte<br />

Aus der schnellen Verfügbarkeit von Daten und deren Konzentration<br />

in vernetzbaren Datenbanken, durch die relativ einfachen Vervielfältigungsmöglichkeiten<br />

aber auch Zerstörungsmöglichkeiten von Daten<br />

und Programmen ergeben sich eine Reihe von Problemen, auf die sich<br />

die Begriffe „Datenschutz“, „Datensicherheit“ und „Software-Rechte“<br />

beziehen.<br />

Datenschutz:<br />

Schutz des Bürgers vor Beeinträchtigungen seiner Privatsphäre durch<br />

unbefugte Erhebung, Speicherung und Weitergabe von Daten, die<br />

seine Person betreffen.<br />

Datensicherheit:<br />

Vermeidung von Datenverlusten oder -verfälschungen, die durch<br />

unsachgemäße Ablage oder durch Zerstörung entstehen können.<br />

Software-Rechte:<br />

Gesamtheit der staatlich festgelegten oder allgemein anerkannten<br />

Normen des Umgangs mit fremden oder selbst erstellten Programmen,<br />

elektronischen Texten, Bildern oder sonstiger Software.<br />

1.6.1 Datenschutz<br />

Grundrecht auf Datenschutz<br />

Als im Zusammenhang mit der Einführung eines maschinenlesbaren Personalausweises<br />

in der Bundesrepublik Deutschland 1983 eine Volkszählung<br />

durchgeführt werden sollte, weigerten sich viele Bürger, die entsprechenden,<br />

umfangreichen Formulare auszufüllen.<br />

Gegen den Widerstand der Bundestagsmehrheit, der meisten Bundesländer<br />

und vieler Experten, gegen den Druck des Bundesinnenministeriums<br />

wurde das Problem des Datenmissbrauchs einer breiten Öffentlichkeit<br />

bekanntgemacht und ein richtungsweisendes gerichtliches Urteil (Urteil<br />

des Ersten Senats des Bundesverfassungsgerichts vom 15. Dezember<br />

1983) erstritten. In diesem Urteil heißt es u. a.:<br />

„Wer damit rechnet, daß etwa die Teilnahme an einer Versammlung<br />

oder einer Bürgerinitiative behördlich registriert<br />

wird und daß ihm dadurch Risiken entstehen können, wird<br />

möglicherweise auf die Ausübung seiner entsprechenden<br />

Grundrechte verzichten. Dies würde nicht nur die individuellen<br />

Entfaltungschancen des einzelnen beeinträchtigen, sondern<br />

auch das Gemeinwohl, weil Selbstbestimmung eine elementare<br />

Funktionsbedingung eines auf Handlungs- und Mitwirkungsfähigkeit<br />

seiner Bürger begründeten freiheitlichen demokratischen<br />

Gemeinwesens ist.“


Datenschutz und Datensicherheit, Software-Rechte 7<br />

Die geplante Volkszählung der Deutschen von 1983 wurde als teilweise<br />

verfassungswidrig erklärt. Weitaus wichtiger ist allerdings, dass das Bundesverfassungsgericht<br />

ein Grundrecht auf Datenschutz festgelegt hat.<br />

Dieses Grundrecht auf Datenschutz beinhaltet verschiedene Komponenten,<br />

die man mit den Begriffen informationelles Selbstbestimmungsrecht,<br />

Zweckentfremdungsverbot und informationelle Gewaltenteilung<br />

fassen kann. Diese Komponenten sind in der folgenden Tabelle dargestellt.<br />

Komponenten des Grundrechts auf Datenschutz<br />

informationelles<br />

Selbstbestimmungsrecht<br />

Zweckentfremdungsverbot<br />

informationelle<br />

Gewaltenteilung<br />

• Schutz des Einzelnen gegen unbegrenzte Erhebung,<br />

Speicherung, Verwendung und Weitergabe<br />

persönlicher Daten<br />

• Jeder Bürger kann grundsätzlich selbst über die<br />

Preisgabe und Verwendung seiner persönlichen<br />

Daten bestimmen.<br />

• Dieser Schutz basiert auf der Auslegung des Art.<br />

2 Abs. 1 (freie Entfaltung der Persönlichkeit) in<br />

Verbindung mit Art. 1 Abs. 1 (Menschenwürde)<br />

der Verfassung.<br />

• Werden personenbezogene Daten gesammelt,<br />

muss der Gesetzgeber den Verwendungszweck<br />

bereichsspezifisch und präzise bestimmen.<br />

Es ist außerdem ein Nachweis erforderlich, dass<br />

die gesammelten Daten für den verwendeten<br />

Zweck geeignet sind.<br />

• Die Sammlung personenbezogener Daten auf<br />

Vorrat ist unzulässig.<br />

• Vorkehrungen zur Durchsetzung des Zweckentfremdungsverbots:<br />

•<br />

•<br />

•<br />

Aufklärungs-, Auskunfts- und Löschungspflichten<br />

Weitergabe- und Verwertungsgebote<br />

Kontrolle durch „unabhängige Datenschutzbeauftragte“<br />

• Innerhalb einer Verwaltung oder Behörde darf<br />

nicht jede Stelle im Interesse des Schutzes des<br />

Einzelnen und der gegenseitigen Machtkontrolle<br />

alles über jeden wissen.<br />

Datenschutz ist eine gesellschaftliche Aufgabe und muss mit rechtlichen<br />

Mitteln durchgesetzt werden.<br />

Das Problem möglichen Datenmissbrauchs wurde seit Anfang der 1980er-<br />

Jahre insbesondere dadurch akut, dass umfangreiche Datenbanken in<br />

verschiedenen gesellschaftlichen Bereichen entstanden.<br />

Im Folgenden sind sowohl für den staatlichen als auch für den privatwirtschaftlichen<br />

Bereich wichtige Datenbanken aufgeführt.<br />

Neben dem Grundgesetz<br />

(der Verfassung)<br />

der BRD regeln<br />

das Bundesdatenschutzgesetz<br />

(BDSG)<br />

vom 20.12.1990 und<br />

eine entsprechende<br />

Europarichtlinie zum<br />

Datenschutz vom<br />

24.10.1995 den Umgang<br />

mit personenbezogenen<br />

Daten.


Grundbegriffe<br />

Datenbanken im staatlichen Bereich<br />

Sozialdatenbank Datenbank mit Angaben zur sozialen Sicherung<br />

von Bürgern beim Bundesministerium für Arbeit<br />

und Sozialordnung<br />

Ausländerregister<br />

Verkehrszentralregister<br />

Datenbanken<br />

der Polizei<br />

Datenbank mit Wohnsitzen und Personendaten in<br />

Deutschland lebender Ausländer<br />

Datenbank beim Kraftfahrtbundesamt mit Angaben<br />

über Fahrzeuge, Halter und Verkehrsverstöße<br />

• ZPI (Zentraler-Personen-Index) mit Angaben über<br />

Personalien sowie Fundstellen von Akten im Polizeibereich<br />

• PIOS (Personen, Institutionen, Objekte, Sachen)<br />

mit Angaben zu Rauschgifthandel und Terrorismus<br />

• SSD (Straftaten-/Straftäterdatei) mit Angaben<br />

über Straftaten, Tatumstände, Täter und Zeugen<br />

• SIS (Schengener Informationssystem), länderübergreifendes<br />

computergestütztes Fahndungssystem<br />

mit Zentralcomputer in Strasbourg<br />

(Das Schengener Informationssystem trat am<br />

26.3.1995 in Kraft und ist das erste länderübergreifende<br />

computergestützte Fahndungssystem.)<br />

Datenbanken im privatwirtschaftlichen Bereich<br />

Schufa Datenbank der Schutzgemeinschaft zur allgemeinen<br />

Kreditsicherung<br />

In ihr sind Daten über alle Kontenbesitzer von Banken<br />

und Sparkassen gespeichert.<br />

Banken und Sparkassen erhalten von der Schufa<br />

Auskünfte über die Kreditwürdigkeit ihrer Kunden.<br />

Reisebüro In solchen Datenbanken sind alle Flüge mit zugehörigen<br />

Daten abgespeichert – einschließlich der<br />

Information, ob ein gewünschter Flug ausgebucht<br />

ist oder nicht.<br />

Versicherungen • Alle Kfz-Besitzer sind in einer zentralen Datenbank<br />

aller Kfz-Versicherer gespeichert.<br />

Allein das Kfz-Kennzeichen reicht aus, um die Besitzer<br />

von Kraftfahrzeugen, deren Versicherung<br />

und Versicherungsnummer zu ermitteln.<br />

• Seit 1984 existiert in der BRD auch eine Datenbank<br />

über Kfz-Besitzer, die in einen Schadensfall<br />

verwickelt sind.<br />

Personalinformationssysteme<br />

In einigen Großbetrieben der Bundesrepublik existieren<br />

Datenbanken, in denen umfangreiche Daten<br />

über alle Betriebsangehörigen gespeichert sind.


Datenschutz und Datensicherheit, Software-Rechte<br />

Es ist heute leicht möglich, Datenbanksysteme „zusammenzuschalten“.<br />

Die Auswirkungen eines solchen Zusammenschlusses können sein:<br />

• Durch die Verknüpfung verschiedener Datensammlungen entsteht ein<br />

Persönlichkeitsbild jedes Bürgers (der sogenannte „gläserne Mensch“).<br />

Der Einzelne weiß dabei nicht, welche Informationen über seine Person<br />

wem zur Verfügung stehen.<br />

• Völlig nebensächliche Daten können das Persönlichkeitsbild verfälschen.<br />

• Die Informationen können von dem, der darüber verfügt, missbraucht<br />

werden.<br />

Bei der Weitergabe von personenbezogenen Daten im privatwirtschaftlichen<br />

Bereich, z. B. an Versicherungen oder Versandhäuser, sollte Folgendes<br />

beachtet werden:<br />

Jeder hat das Recht, solche Daten zurückzuhalten, die zum Missbrauch<br />

führen können oder die für den eigentlichen Zweck der Datenerhebung<br />

nicht notwendig sind.<br />

Im Bundesdatenschutzgesetz, welches sowohl für private Unternehmen<br />

als auch für Bundesbehörden gilt, sind eine Reihe von weiteren Rechten<br />

der Bürger bezüglich ihrer Personen-Daten niedergelegt.<br />

Die Landesdatenschutzgesetze, die für die entsprechenden Landesbehörden<br />

gelten, untermauern diese Rechte.<br />

Rechte der Bürger nach den Datenschutzgesetzen<br />

Jeder Bürger hat das Recht auf<br />

• Auskunft darüber, welche Daten von ihm gespeichert sind, über<br />

den Zweck der Speicherung und über die Herkunft der Daten;<br />

• Berichtigung falsch gespeicherter Daten;<br />

• Löschung unzulässig gespeicherter Daten;<br />

• Sperrung von Daten (wenn die Richtigkeit der Daten nicht feststellbar<br />

ist);<br />

• Schadenersatz, wenn dem Betroffenen ein Schaden durch die unzulässige<br />

oder falsche Speicherung der Daten entstanden ist.<br />

Internet und Datenschutz<br />

Für eine Weitergabe personenbezogener oder personenbeziehbarer Daten<br />

ist nach dem Bundesdatenschutzgesetz und der Landesdatenschutzgesetze<br />

die schriftliche Einwilligung des Betroffenen erforderlich.<br />

Gibt jemand solche Daten von sich selbst oder auch von anderen auf einer<br />

Web-Site oder in einer E-Mail weiter, muss ihm bewusst sein, dass die<br />

Datenweitergabe nicht auf einen klar abgegrenzten Personenkreis zielt,<br />

sondern sie macht die betreffenden Daten allen zugänglich, die einen Internetanschluss<br />

besitzen. Die maschinelle Verarbeitung und Speicherung<br />

dieser personenbezogenen Daten ist jedem sehr leicht möglich. Nach<br />

und nach kann auf diese Weise ein umfangreiches Dossier über jeden<br />

Bürger angelegt werden.<br />

Eine Versicherung ist<br />

zwar an Informationen<br />

über die<br />

Krankheitsanfälligkeit<br />

eines Kunden<br />

interessiert, diese<br />

Daten sollten aber<br />

verweigert werden.<br />

Das Alter des<br />

Kunden muss ein<br />

Versandhaus nicht<br />

wissen.


100 Grundbegriffe<br />

Pretty Good Privacy:<br />

b S. 103<br />

Diese Möglichkeiten werden heute auch schon für kommerzielle<br />

Zwecke benutzt. So gibt es (vor allem in den USA) Firmen, die Online-<br />

Bestellungen bzw. Einkäufe über das Internet von bestimmten Personen<br />

analysieren, Persönlichkeitsprofile zusammenstellen und die<br />

gesammelten Daten an Versandhäuser verkaufen, da diese dann<br />

ganz gezielt personenbezogene Werbung betreiben können.<br />

Bei der Weitergabe von personenbezogenen Daten sollte man also auch<br />

im Internet das Folgende bedenken:<br />

• Es ist zu entscheiden, ob die Daten für die betreffende Person mehr<br />

oder weniger sensibel sind. Daten, die man auch in einem Telefonbuch<br />

finden kann (z. B. Name, Vorname, evtl. Privatadresse) sind offensichtlich<br />

nicht geschützt. Handelt es sich um weitergehende Informationen<br />

(Bild, evtl. Telefonnummer, beruflicher Werdegang, Interessen), können<br />

diese durchaus zweckentfremdet verwendet werden.<br />

• Einmal weitergegebene Daten kann man später nicht wieder zurücknehmen.<br />

Deshalb sollte man im Zweifelsfall möglichst wenige Daten auf<br />

einer Web-Site veröffentlichen oder zur Veröffentlichung freigeben.<br />

• Bei einigen Internetdiensten wie Telnet (Zugriff auf fremde Computer)<br />

wird ganz bewusst die Festplatte des eigenen Computers für fremde<br />

Nutzer freigegeben. Hier kann Datenschutz nur durch klar festgelegte<br />

und eingegrenzte Zugriffsrechte und -möglichkeiten gewährleistet<br />

werden. Personenbezogene Daten sollte man möglichst überhaupt<br />

nicht auf der Festplatte seines Computers speichern, sondern auf externen<br />

Datenträgern.<br />

• Insbesondere für E-Mails gilt, dass eine Information nur den Adressaten<br />

erreicht und sonst niemanden.<br />

Eine E-Mail findet ihr Ziel erst, nachdem sie über viele Rechner gelaufen<br />

ist. Der Versand gleicht somit dem Verschicken von Informationen<br />

per Postkarte. Auf jedem dieser Computer kann der Text vom<br />

Systemverwalter gelesen werden. Dieser hat bestimmt andere Sorgen,<br />

als alle E-Mails zu lesen. Trotzdem: Man sollte dort, wo es notwendig<br />

erscheint, im Internet Daten so versenden, dass die Inhalte von Dritten<br />

nicht mitgelesen werden können. Hierzu gibt es Verschlüsselungs- und<br />

Entschlüsselungsprogramme (z. B. „Pretty Good Privacy“).<br />

• Für das eigene E-Mail-Postfach sollten keine naheliegenden Passwörter<br />

und für verschiedene Zugänge verschiedene Passwörter verwendet<br />

werden (b folgenden Abschnitt „Datenverschlüsselung“).<br />

Datenverschlüsselung<br />

In etlichen Anwendungsprogrammen<br />

kann eine Datei<br />

mit einem Passwort (Kennwort)<br />

zur Überprüfung der<br />

Identität des berechtigten<br />

Nutzers versehen werden.<br />

Dabei kann der Zugriff oft<br />

auf eine Kombination von<br />

Lesen, Schreiben und Ausführen<br />

beschränkt werden.


Datenschutz und Datensicherheit, Software-Rechte 101<br />

Bei der Vergabe von Passwörtern sollte man einige Regeln beachten:<br />

– Keine Namen oder häufig vorkommende Begriffe verwenden!<br />

Wenn ein unberechtigter Nutzer beispielsweise die Vornamen aus der<br />

Familie des Anwenders kennt, kann er das Passwort recht schnell finden.<br />

– Mindestanzahl von Zeichen verwenden!<br />

Hierdurch wird die Anzahl der Kombinationsmöglichkeiten größer.<br />

– Einprägsame Passwörter verwenden!<br />

Leicht kann es passieren, dass man sein Passwort vergisst. Das Ausprobieren<br />

der häufigsten eigenen Passwörter bringt selten Erfolg, weil<br />

viele Softwaresysteme den Zugang nach mehrmaligem erfolglosen Zugriff<br />

sperren.<br />

– Möglichst auch Ziffern und Sonderzeichen verwenden!<br />

Auch wenn sich solche Passwörter meist nicht gut merken lassen, für<br />

den unberechtigten Nutzer (den Hacker) wird es schwieriger, das Passwort<br />

zu „knacken“.<br />

– Niemandem das eigene Passwort verraten!<br />

Die Passwort-Methode hat jedoch einige Nachteile:<br />

– Nicht in jedem Softwaresystem ist es möglich, Passwörter zu vergeben.<br />

– Personen, die mit Computern vertraut sind (Wartungs- und Bedienungspersonal),<br />

können diesen Schutz leicht umgehen.<br />

– Wurde das Passwort über das Betriebssystem des Computers vergeben,<br />

unterliegen extern (z. B. auf Disketten) gespeicherte Dateien nicht<br />

mehr der Zugriffskontrolle durch den Computer.<br />

Sicherer für die Speicherung und Übertragung von Daten, die nur bestimmten<br />

Nutzern zugänglich sein sollen, ist die Methode der Verschlüsselung.<br />

Bei der Verschlüsselung (Chiffrierung) werden im Allgemeinen<br />

Zeichen und Zeichengruppen durch andere Zeichen nach einem<br />

bestimmten Schlüssel (Chiffre) ersetzt. Sollen die Daten vom Empfänger<br />

gelesen werden, läuft der Vorgang umgekehrt ab (Entschlüsselung,<br />

Dechiffrierung).<br />

Datenschutz ist eine Methode, die in der Geschichte der Menschheit<br />

schon immer eine Rolle gespielt hat. Oft mussten vertrauliche Botschaften<br />

zwischen Königen und Kriegsherren, Kaufleuten und anderen<br />

Personen übermittelt werden, wobei selbst der Bote, der Überbringer<br />

der Nachricht, deren Inhalt nicht kennen durfte.<br />

Die Spartaner schrieben vor 2500 Jahren ihre Nachrichten auf schmale<br />

Pergamentstreifen, die sie in vielen Windungen um einen zylindrischen<br />

Stab gewickelt hatten. Die Botschaft wurde am Stab entlang<br />

(von oben nach unten) geschrieben, der Rest der Pergamentrolle<br />

wurde mit sinnlosen Buchstaben gefüllt. Der Empfänger<br />

besaß einen Stab gleicher Form und Größe, auf den er das<br />

Pergamentband aufwickelte und so die Botschaft entschlüsseln<br />

konnte. Der Schlüssel war hier also der Stab.<br />

In den Jahren 1986<br />

und 1987 sind<br />

deutsche Hacker in<br />

über 100 Computer<br />

der amerikanischen<br />

Raumfahrtbehörde<br />

NASA eingedrungen.<br />

Sie veränderten<br />

Betriebssysteme<br />

so, dass sie sich<br />

mit einem eigenen<br />

Passwort offiziell<br />

anmelden konnten.


102 Grundbegriffe<br />

DES ist die Abkürzung<br />

für Data Encryption<br />

Standard.<br />

IDEA ist die Abkürzung<br />

für International<br />

Data Encryption<br />

Algorithmus.<br />

Der römische Imperator JuliuS CäSar ersetzte für vertrauliche Nachrichten<br />

einfach jeden Buchstaben des Textes durch jenes Zeichen,<br />

dass im Alphabet 3 Plätze weiter steht. Heraus kam ein unleserlicher<br />

Text. Der Empfänger kannte den Schlüssel, er musste jeden Buchstaben<br />

jeweils durch den Buchstaben ersetzen, der im Alphabet 3 Plätze<br />

vorher steht.<br />

Der französische Diplomat blaiSe de vigenère (1523 –1596) verbesserte<br />

die Cäsar-Verschlüsselung: Das Alphabet wird nicht immer um die<br />

gleiche Anzahl von Stellen verschoben, sondern die Anzahl der Stellen<br />

variiert.<br />

Beispiel: Schlüssel: (2,1,5)<br />

Text: ULLILIEBTULRIKESEHR<br />

Weiterzählen um: 2152152152152152152<br />

Geheimtext: WMQKMNGCYWMWKLJUFMT<br />

Im Zweiten Weltkrieg benutzten die Deutschen zur Verschlüsselung<br />

von militärischen Botschaften eine mechanische Chiffriermaschine<br />

mit dem Namen „Enigma“. Der englische Geheimdienst stellte zum<br />

Zwecke der Dechiffrierung eine große Gruppe von Spezialisten (unter<br />

ihnen alan maThiSon Turing, dem eine mathematisch exakte Definition<br />

des Begriffs „Algorithmus“ gelang) zusammen. Schließlich<br />

wurde der Code entschlüsselt und der Kriegsverlauf zugunsten<br />

Englands erheblich beeinflusst.<br />

Nach dem Zweiten Weltkrieg entwickelte sich eine eigenständige Disziplin<br />

der Mathematik, die Kryptografie (Kryptologie), die sich mit Verschlüsselungsverfahren<br />

beschäftigte. Ins Bewusstsein einer breiten Öffentlichkeit<br />

trat die Kryptografie allerdings erst im Zusammenhang mit<br />

dem Internet.<br />

Es gibt unterschiedliche Verschlüsselungsverfahren für Daten, über die<br />

im Folgenden ein Überblick gegeben wird:<br />

Anfang der 1970er-Jahre wurde DES von der Firma IBM entwickelt und<br />

1974 von der US-Regierung veröffentlicht. DES wird oft heute noch benutzt.<br />

Es basiert auf dem System der Chiffriermaschine Enigma (b 3. Beispiel<br />

auf dieser Seite) und vertauscht Zeichengruppen eines Textes und<br />

ersetzt sie dann durch andere Buchstaben.<br />

Ab 1990 entwickelten XueiJa lai und JameS maSSey das weitaus sicherere<br />

Verfahren IDEA. IDEA verwendet einen 128 Bit langen Schlüssel, aus dem<br />

52 Teilschlüssel erzeugt werden. Der Quelltext wird in Datenblöcke der<br />

Länge 64 Bit zerlegt, die Teilblöcke wiederum in vier 16 Bit lange Blöcke.<br />

Der IDEA-Algorithmus ersetzt nun in jedem Verschlüsselungsschritt<br />

jeden 16-Bit-Block durch ein vollkommen anderes Bitmuster gleicher<br />

Länge – und dies insgesamt achtmal. Zum Schluss wird aus den Teilblöcken<br />

wieder eine 64 Bit lange (nun verschlüsselte) Zeichenkette erzeugt.<br />

Sowohl DES als auch IDEA beruhen auf einem symmetrischen Verschlüsselungsprinzip,<br />

d. h., die Zeichenvertauschung wird vom Empfänger der<br />

verschlüsselten Nachricht Schritt für Schritt rückgängig gemacht, der<br />

Empfänger muss den Schlüssel kennen.


Datenschutz und Datensicherheit, Software-Rechte 103<br />

Im Internet mit Millionen von Teilnehmern, die sich oft persönlich nicht<br />

kennen, ist es fast unmöglich, jedem berechtigten Nachrichtenempfänger<br />

den passenden Schlüssel zukommen zu lassen, ohne dass diese Schüssel<br />

gelegentlich in falsche Hände gelangen.<br />

whiTfield diffie und marTin helman entwickelten in den 1970er-Jahren ein<br />

Chiffrierverfahren, welches man als asymmetrisches Verschlüsselungsverfahren<br />

bezeichnet: Es gibt zwei Schlüssel, den einen benutzt man zum<br />

Chiffrieren, den anderen zum Dechiffrieren. Einen der beiden Schlüssel<br />

kann man öffentlich zugänglich machen (Public-Key-Verfahren).<br />

Im Jahre 1977 wurde das asymmetrische Verschlüsselungsverfahren RSA<br />

vorgestellt. Das Verfahren ist sehr sicher, wird aber meist nur für kurze<br />

Nachrichten benutzt, da die Verschlüsselung ca. tausendmal länger als<br />

mit DES oder IDEA dauert.<br />

Asymmetrische Verschlüsselungsverfahren nutzen i. Allg. Primzahlen.<br />

Große Primzahlen kann man zurzeit (und wohl auch zukünftig) nur<br />

durch systematisches Probieren in Primfaktoren zerlegen. Dies ist auch<br />

mit Computern sehr zeitaufwendig und deshalb sind asymmetrische Verfahren<br />

außerordentlich sicher.<br />

Zusammengefasst sei folgende Übersicht gegeben:<br />

symmetrische Verfahren asymmetrische Verfahren<br />

Die Zeichenvertauschung wird<br />

vom Empfänger der verschlüsselten<br />

Nachricht Schritt für Schritt<br />

rückgängig gemacht. Der Empfänger<br />

muss den Schlüssel kennen.<br />

Es gibt zwei Schlüssel, einen öffentlichen<br />

(public key) und einen<br />

privaten (private key). Die Dechiffrierung<br />

kann jeweils nur mit dem<br />

Gegenstück erfolgen.<br />

Zur Verschlüsselung sensibler Daten für das Internet wird heute meist<br />

das von PhiliP zimmermann entwickelte Pretty Good Privacy (PGP) benutzt.<br />

Dieses Programm kombiniert symmetrische und asymmetrische Verfahren:<br />

Die Nachricht wird mit IDEA verschlüsselt, es werden also Zeichengruppen<br />

vertauscht und durch andere Zeichen ersetzt. Für jede Nachricht<br />

gibt es einen eigenen IDEA-Schlüssel. Der für den Empfänger bestimmte<br />

öffentliche Schlüssel wird mit RSA erzeugt und mit der chiffrierten Nachricht<br />

versandt.<br />

In der Bundesrepublik gibt es keine gesetzlichen Einschränkungen hinsichtlich<br />

der Nutzung von Verschlüsselungsverfahren, weil aus allen Teilen<br />

der Gesellschaft hiergegen protestiert wird. In den USA und in Frankreich<br />

ist die Verschlüsselung von Nachrichten nur erlaubt, wenn der Staat<br />

einen „Nachschlüssel“ besitzt. Es wird befürchtet, dass Polizei und Geheimdienst<br />

ihre Aufgaben nicht wahrnehmen können. Die Europäische<br />

Union hat dazu in einer Mitteilung vom 8.10.1997 festgestellt:<br />

„Eine Einschränkung der Verwendung von Verschlüsselungstechnologien<br />

könnte gesetzestreue Unternehmen und Bürger<br />

daran hindern, sich selbst gegen kriminelle Angriffe zu schützen,<br />

aber sie würde nicht bewirken, Kriminelle von deren Verwendung<br />

abzuhalten.“<br />

RSA steht für die<br />

Nachnamen der<br />

Entwickler ron<br />

riveST, riveST, adi Shamir und<br />

leonard leonard adleman.<br />

zu Public-Key-Verfahren<br />

b Mosaik auf<br />

der folgenden Seite


marTin helman, whiTfield diffie und<br />

ralPh merkle entdeckten das im Folgenden<br />

beschriebene Verfahren 1976<br />

und ließen es sich 1977 patentieren.<br />

Alex und Bea wollen nach dem Diffie-Helman-Merkle-Algorithmus<br />

Nachrichten via Internet austauschen.<br />

Als öffentlicher Schlüssel werden eine Primzahl p<br />

und eine Zahl g mit 2 ≤ g ≤ p – 2 genutzt.<br />

Alex denkt sich einen geheimen Schlüssel aus: a mit<br />

1 ≤ a ≤ p – 2.<br />

Er errechnet A mit A ≡ g a (mod p) und schickt A als<br />

weiteren öffenlichen Schlüssel an Bea.<br />

Das Gleiche vollführt Bea. Ihr geheimer Schlüssel ist<br />

b mit 1 ≤ b ≤ p – 2.<br />

B wird an Alex gesendet. Dabei ist B ≡ g b (mod p).<br />

Alex rechnet nun den Schlüssel K folgendermaßen<br />

aus: K ≡ B a (mod p).<br />

Bea geht ähnlich vor: K ≡ A b (mod p).<br />

Es lässt sich nachweisen, dass wirklich K ≡ B a (mod p)<br />

≡ A b (mod p) gilt.<br />

Der gemeinsame Schlüssel K ist niemandem außer<br />

den beiden zugänglich, er wurde ja jeweils mit den<br />

privaten Schlüsseln a bzw. b errechnet. Interessant<br />

dabei ist, dass z. B. Bea den privaten Schlüssel von<br />

Alex nicht kennt.<br />

Beim Diffie-Helman-Merkle-Verfahren handelt es<br />

sich um eine sogenannte Einwegfunktion: Die eine<br />

Richtung ist leicht, die andere sehr schwierig oder<br />

gar nicht zu berechnen.<br />

Die Eingabedaten sind aus den Ausgabedaten nicht<br />

mehr zu ermitteln, es sei denn, man versucht alle<br />

möglichen Zahlenkombinationen (a, p) und (b, p)<br />

die die Reste A bzw. B ergeben, zu ermitteln und die<br />

daraus resultierenden Werte für K auf die verschlüsselte<br />

Nachricht anzuwenden (wenn man außerdem<br />

noch weiß, wie dieser Schlüssel auf eine Nachricht<br />

von Bea oder Alex angewendet wurde).<br />

Bei großen p ist das Verfahren sehr sicher. Außerdem<br />

kann der Schlüssel schnell geändert werden: p<br />

kann aus einer Primzahltabelle gesucht werden. Sich<br />

eine Zahl a (oder b) ausdenken, ist nicht schwer. Und<br />

auch das Errechnen von K bereitet keine Schwierigkeiten,<br />

wenn man weiß, dass man mit Restklassen so<br />

Public-Key-<br />

Verfahren<br />

rechnen kann wie mit ganzen Zahlen<br />

(nur die Division führt aus der entsprechenden<br />

Zahlenmenge heraus<br />

und darf nicht genutzt werden).<br />

Ein (einfaches) Beispiel (mit kleinem p): g = 4, p = 11<br />

a = 9<br />

A ≡ 4 9 (mod 11) ≡ (4 3 ) 3 (mod 11) ≡ 64 3 (mod 11)<br />

≡ (–2) 3 (mod 11) ≡ –8 (mod 11) ≡ 3 (mod 11) = 3<br />

b = 5<br />

B ≡ 4 5 (mod 11) ≡ (4 3 · 4 2 ) (mod 11)<br />

≡ (–2 · 5) (mod 11) ≡ –10 (mod 11) ≡ 1 (mod 11) = 1<br />

K ≡ 3 5 (mod 11) ≡ (27 · 9) (mod 11) ≡ (5 · 9) (mod 11)<br />

≡ 45 (mod 11) ≡ 1 (mod 11) = 1<br />

bzw.<br />

K ≡ 1 9 (mod 11) = 1<br />

Sobald der Schlüssel erstellt ist, kann der Sender ein<br />

Verfahren wie DES oder IDEA verwenden, um seine<br />

Nachricht zu verschlüsseln.<br />

Das beschriebene Schlüsselaustauschverfahren ist<br />

etwas umständlich, weil die Teilnehmer bei einer<br />

Nachricht online sein müssen, denn jeder muss im<br />

öffentlichen Gespräch seinen Teil zur Berechnung<br />

des Schlüssels K beitragen.<br />

whiTfield diffie und marTin hellman veröffentlichten<br />

ihr Konzept der asymmetrischen Verschlüsselung bereits<br />

1975, ohne auch nur eine notwendige Einwegfunktion<br />

gefunden zu haben.<br />

ron riveST, adi Shamir und leonard adleman gingen<br />

nach der Diffie-Hellman-Veröffentlichung ebenfalls<br />

auf die Jagd von Einwegfunktionen und wurden<br />

fündig: Sie entwickelten 1977 das nach ihnen benannte<br />

RSA-Verfahren. Es basiert auf der Idee, zwei<br />

sehr große Primzahlen (mit 100 Dezimalstellen) zu<br />

multiplizieren, was recht einfach ist. Das Produkt N<br />

dieser Zahlen wird (zusammen mit einer weiteren<br />

Zahl e) als öffentlicher Schlüssel verschickt. Der umgekehrte<br />

Weg, die Zerlegung der großen Zahl in<br />

Primfaktoren ist ungleich schwieriger.<br />

Der Schlüssel kann auf jedes einzelne Wort angewandt<br />

werden. Die Buchstaben des Wortes werden<br />

mit dem ASCII-Code in eine Zahl umgewandelt: Aus<br />

„Alex“ wird „065108101120“ (065 steht für A, 108<br />

für l, ...). Für die weitere Codierung C des Wortes W<br />

wird folgende Formel benutzt: C ≡ W e (mod N).


1.6.2 Datensicherheit<br />

Datenschutz und Datensicherheit, Software-Rechte 105<br />

Bei der Arbeit an informationsverarbeitender Technik, im Umgang mit<br />

Anwendungsprogrammen und insbesondere mit Datenbanksystemen<br />

hat Datenschutz auch eine technische Bedeutung im Sinne von Datensicherheit:<br />

Wie können gesammelte Daten vor Verlust oder unsachgemäßer<br />

Veränderung durch andere Nutzer geschützt werden? Wie sollten<br />

umfangreiche Datenmengen strukturiert und abgelegt werden, damit<br />

sie jederzeit leicht wiedergefunden werden können?<br />

Datenverwaltung<br />

Mit der Zeit sammelt sich bei der Arbeit am Computer ein riesiger Berg<br />

von Daten an. Ein Beispiel: Auf einer Festplatte, auf der 2 GByte Speicherplatz<br />

belegt waren, fanden sich 13 000 Programmdateien und noch<br />

einmal so viel Textdateien, Grafi kdateien usw.<br />

Es ist unumgänglich, dass diese Daten geordnet werden, z. B. wie in<br />

einem Aktenschrank (Datenträger), indem in einzelnen Fächern (Partitionen)<br />

Aktenordner (Verzeichnisse) stehen, in denen gebündelt (Unterverzeichnisse)<br />

Schriftstücke (Dateien) abgelegt sind.<br />

Durch eine sinnvoll strukturierte Datenablage auf den Speichermedien<br />

kann also die Wiederauffi ndbarkeit von Dateien und damit die Datensicherheit<br />

erhöht werden. Das bedeutet im Einzelnen:<br />

– Benennung von Festplatten, Festplattenpartitionen, Disketten, CDs<br />

und anderen Datenträgern (Label-Vergabe);<br />

– Anlegen von Verzeichnisbäumen mit ausdrucksstarken Bezeichnungen<br />

(b S. 88, 89);<br />

– Vergabe von Dateinamen in Anwendungsprogrammen, die auf den<br />

Inhalt schließen lassen.<br />

Datensicherung<br />

Daten, die für den Nutzer wichtig sind, müssen gespeichert werden. Dies<br />

kann auf der Festplatte, aber auch auf externen Speichermedien geschehen.<br />

Dabei ist Folgendes zu beachten:<br />

• Sobald man beispielsweise mit einem Anwendungsprogramm einen<br />

Brief begonnen oder eine Kalkulations-Datei eingerichtet hat, sollte<br />

man der Datei einen Namen geben und sie speichern. Stürzt der Computer<br />

ab, weil der Strom ausgefallen ist, sind alle nicht gespeicherten<br />

Daten unwiederbringlich verloren, die Arbeit war umsonst. Die Speicherung<br />

sollte in regelmäßigen Abständen erfolgen.<br />

Die meisten Anwendungsprogramme erlauben eine automatische<br />

Speicherung nach einem vom Nutzer einzustellenden Zeitrhythmus.<br />

Dies kann aber oft als störend empfunden werden, da man während<br />

der Speicherung größerer Dateien nicht an der Datei arbeiten kann.<br />

• Fast alle Programmiersysteme und Anwendungsprogramme erlauben es,<br />

Sicherungskopien von Dateien anzulegen: Mit dem aktuellen Speichern<br />

wird gleichzeitig die zuletzt gespeicherte Version in eine Sicherungsdatei<br />

umgewandelt (oft an der Endung .BAK zu erkennen). Stürzt das<br />

Programm durch einen Eingabefehler oder durch andere Probleme ab,<br />

wird manchmal auch die gerade geöffnete Datei zerstört. Die Siche-


106 Grundbegriffe<br />

rungskopie aber, mit der nicht gearbeitet wird, ist noch vorhanden<br />

und kann wieder in eine „normale“ Datei umgewandelt werden.<br />

• Jede wichtige Datei sollte neben der Speicherung auf der Festplatte<br />

auf externen Datenträgern (CD, MemoryStick, …) gespeichert werden.<br />

Solche „Backups“ von Sicherungskopien sollten regelmäßig (z. B. am<br />

Ende eines Arbeitstages) vorgenommen werden.<br />

• In regelmäßigen Abständen bzw. nach der Beendigung von größeren<br />

Projekten sollte die Festplatte von nicht mehr benötigten, aber schon<br />

auf externen Speichermedien gesicherten Dateien befreit werden. Dabei<br />

ist zu beachten, dass man nicht aus Versehen eine falsche Datei<br />

löscht (z. B. durch die Verwendung von Jokern).<br />

• Beim Anlegen von Sicherungskopien auf Disketten und anderen Magnetspeichern<br />

sind folgende Hinweise zu beachten:<br />

• Disketten dürfen nicht in die Nähe von elektrischen Geräten, die<br />

Magnetfelder aufbauen (Monitor, Computergrundgerät), gebracht<br />

werden.<br />

• Disketten sind in staubfreier Umgebung stehend aufzubewahren.<br />

Die Öffnung für den Schreib-/Lesekopf darf nicht berührt werden.<br />

• Der hardwaremäßige Schreibschutz verhindert versehentliches Zerstören<br />

von Dateien und die Übertragung von Computerviren.<br />

•<br />

Der Schreib-/Lesekopf des Diskettenlaufwerks liegt beim Zugriff auf<br />

die Diskette auf ihrer Oberfläche. Insbesondere an der FAT, wo das<br />

Verzeichnis aufgetragen ist, führt die Reibung zur Minderung der<br />

Magnetisierung. Nach einiger Zeit wird die Diskette unbrauchbar.<br />

Eine Sicherungskopie der Sicherungskopie wird unvermeidlich.<br />

Erschreckend ist das Phänomen, dass mit jeder Höherentwicklung der<br />

Speichertechnik auch Information massenhaft verlorengeht, weil die<br />

Träger der Information einem größeren Verschleiß unterliegen und auch<br />

die Speicherungstechnik schneller veraltert:<br />

Mehr als 3000 Jahre alte Tontafeln kann man heute noch entziffern,<br />

weil die Keilschrift „dechiffriert“ ist. In einer von Johann guTenberg im<br />

16. Jahrhundert gedruckten Bibel aus säurefreiem Papier kann man<br />

heute noch blättern und lesen.<br />

Eine vor 70 Jahren gepresste Schelllack-Schallplatte kann man heute<br />

noch hören, wenn man einen entsprechenden Phonographen besitzt.<br />

Zumindest ist dies in einigen Jahren genau so leicht oder<br />

schwierig, wie sich an einer vor 20 Jahren hergestellten Schallplatte<br />

zu erfreuen.<br />

Die elektronisch gespeicherten Daten der US-Volkszählung von 1960<br />

sind heute unlesbar.<br />

Textdateien, mit Wordstar geschrieben und auf einer 5,25-Zoll-Diskette<br />

gespeichert, sind nicht mehr lesbar, weil man Wordstar evtl.<br />

nicht mehr besitzt, die Konvertierung in ein anderes Textverarbeitungsprogramm<br />

kaum möglich ist und 5,25-Zoll-Diskettenlaufwerke<br />

gar nicht mehr hergestellt werden.<br />

Die Hersteller von CD-ROMs bescheinigen diesem Speichermedium<br />

bei entsprechend sorgsamem Umgang eine Nutzungsdauer von 100<br />

Jahren. Nur – gibt es in 100 Jahren CD-ROM-Laufwerke und die zur<br />

Speicherung genutzten Datei-Formate überhaupt noch?


Datenschutz und Datensicherheit, Software-Rechte 107<br />

Aus diesen Gründen sollte man beim Anlegen von Sicherungskopien außerdem<br />

bedenken:<br />

• Sicherungskopien von Dateien sollten mit dem Fortschreiten der Speichertechnik<br />

auf die jeweils neuen Speichermedien übertragen werden.<br />

• Es ist sinnvoll, wichtige Dateien zusätzlich in einem universellen Datenaustauschformat<br />

zu speichern (Textdateien beispielsweise im einfachen<br />

ASCII-Format .TXT oder im Rich-Text-Format .RTF).<br />

• Ein Ausdruck auf Papier ist immer noch die sicherste Methode, dass<br />

wichtige Informationen auf Dauer nicht verloren gehen.<br />

Schutz vor Computer-Viren<br />

Ein Virus (Computervirus) ist ein Programmteil, meist im Maschinencode,<br />

welches sich in andere Programme (Wirtsprogramme) hineinkopieren<br />

und somit vervielfachen und gleichzeitig meist schädliche<br />

Funktionen in einem Computersystem auslösen kann.<br />

Fast alle Viren besitzen den gleichen Aufbau:<br />

1. Erkennungsteil: Mit diesem Programmstück wird festgestellt, ob das<br />

Programm, welches infiziert werden soll, schon vom gleichen Virus befallen<br />

ist. Eine entsprechende Kennung ist oft im Programmkopf des<br />

Wirtsprogramms abgelegt.<br />

2. Infektionsteil: Dieses Programmstück bewirkt das Einlesen des zu infizierenden<br />

Programms in den Arbeitsspeicher, das Hinzufügen des<br />

gesamten Virusprogramms und das Zurückschreiben des Wirtsprogramms<br />

auf das Speichermedium.<br />

3. Funktionsteil: Mit diesem Programmstück löst der Virus gut- oder bösartige<br />

Funktionen im infizierten Programm bzw. im gesamten Computersystem<br />

aus.<br />

Die unausgelasteten Programmierer, die Viren erzeugen, sind oft recht<br />

fantasiebegabt.<br />

Der Virus „Herbstlaub“ (BlackJack-Virus) lässt in Textverarbeitungsprogrammen<br />

die Zeichen von oben auf die letzte Zeile purzeln, wo<br />

sie liegen bleiben.<br />

„Columbus“ formatiert am oder nach dem 13. Oktober eines jeden<br />

Jahres die Festplatte und zerstört somit alle Daten (Christoph Columbus<br />

landete am 12. 10. 1492 in Amerika).<br />

Man unterscheidet Boot-Viren, die sich im Bootblock einer Diskette einnisten<br />

und beim Booten der Diskette in den Arbeitsspeicher des Computers<br />

gelangen, Datei-Viren, die in einem Wirtsprogramm eine Programmzeile<br />

einfügen, welche relativ leicht zu entfernen ist.<br />

Für grafische Benutzeroberflächen und WYSIWYG-Anwendungsprogramme<br />

wurden auch Makro-Viren entwickelt. Makro-Viren befallen<br />

Dokumente von MS Office (Access, Word, Excel, PowerPoint). Sie breiten<br />

sich über die entsprechenden Office-Dokumente aus. Für die Ausbreitung<br />

ist die Programmiersprache Visual Basic for Applications (VBA) notwendig,<br />

die von Microsoft für MS Office mitgeliefert wird.<br />

zu universellen<br />

Datenaustauschformaten<br />

b auch<br />

Abschnitt 2.6.3<br />

Der Name Computer-„Virus“<br />

wurde<br />

in Analogie zu<br />

den biologischen<br />

Krankheitserregern<br />

gewählt. Dargestellt<br />

ist hier das HI-Virus,<br />

das die Immunschwächekrankheit<br />

Aids beim Menschen<br />

hervorruft.<br />

Ein typischer Vertreter<br />

für Makro-Viren<br />

ist der im letzten Beispiel<br />

beschriebene<br />

Virus „Herbstlaub“.


10 Grundbegriffe<br />

Mindestens ebenso<br />

schädlich wie Viren,<br />

Würmer und Trojaner<br />

können Hoaxes<br />

(altenglisch für<br />

Scherz) sein:<br />

Über E-Mails werden<br />

Virusmeldungen<br />

versandt, die vor<br />

neuen, ganz gefährlichen<br />

Viren warnen<br />

und den Leser zu<br />

Aktionen aufrufen,<br />

die der Bekämpfung<br />

dieser Viren dienen<br />

sollen. Aber gerade<br />

mit diesen Aktionen<br />

wird dann der Computer<br />

lahmgelegt.<br />

Zu den Viren im weiteren Sinne gehören Würmer und Trojaner:<br />

• Würmer benötigen kein Wirtsprogramm. Sie sind eigenständige<br />

Programme, die ursprünglich erstellt wurden, um in Rechnernetzen<br />

Kontrollfunktionen zu übernehmen und die Funktionsfähigkeit einzelner<br />

Computer zu überprüfen. Heutige Würmer verteilen sich per<br />

E-Mail-Anhang über das Internet, indem sie über willkürlich gewählte<br />

IP-Adressen nach anfälligen Computersystemen suchen.<br />

• Trojaner (benannt nach odySSeuS’ List mit dem Holzpferd, welche zur<br />

Einnahme Trojas führte) sind nicht dokumentierte Programmteile, die<br />

sich in käuflich erworbener oder aus dem Internet heruntergeladener<br />

Software verbergen. Während der Nutzer mit dem Programm arbeitet,<br />

werden im Hintergrund Daten ausspioniert. Trojaner können über<br />

Jahre „schlafen“ und stellen dem Nutzer erst aufgrund eines Passworts<br />

Funktionen zur Verfügung, die katastrophale Auswirkungen haben.<br />

Mit dem Auftreten der ersten Viren wurden Antivirenprogramme (Virenscanner)<br />

entwickelt, die Dateien, Bootsektoren und Arbeitsspeicher<br />

auf Virenkennungen (die Bytefolgen im Programmkopf des Wirtes) hin<br />

durchsuchen. Bei Feststellung einer Infektion versucht der Virenscanner,<br />

die schädlichen Programmzeilen zu entfernen. Besser ist es, das gesamte<br />

Wirtsprogramm zu löschen.<br />

Die meisten Virenscanner besitzen auch eine Immunisierungsfunktion:<br />

Alle Kennungen bekannter Viren werden in den Programmkopf des jeweiligen<br />

Programms geschrieben. Ein angreifendes Virus „glaubt“ nun,<br />

das immunisierte Programm wäre bereits von ihm infiziert worden.<br />

Man sollte die Gefahren, die von Viren, Trojanern und Würmern ausgehen,<br />

nicht unterschätzen.<br />

Folgende Schutzmaßnahmen sollte man vor oder bei Befall von Viren<br />

ergreifen:<br />

• Es sollte immer nur Originalsoftware verwendet werden.<br />

• Alle Software, die aus unsicheren Quellen stammt, wird vor dem<br />

ersten Einsatz mit der neuesten Version eines Virenscanners geprüft.<br />

• Virenscanner sollten regelmäßig zum Einsatz kommen. Der Scanner<br />

kann in das Betriebssystem eingebunden und beim Start des<br />

Computers automatisch aktiviert werden.<br />

• Stellt man Virenbefall fest, werden die entsprechenden Programme<br />

gelöscht und neu installiert. Am sichersten ist es, die<br />

Festplatte neu zu formatieren.<br />

Computer ohne Virenschutzprogramme sind wie Häuser ohne Türen.<br />

Deshalb führen Stiftung Warentest und verschiedene Computerzeitschriften<br />

ständig Vergleichstests durch. Empfohlene Virenscanner sind<br />

AntiVirenKit (AVK) von G-Data, Anti-Virus Personal von Kaspersky und<br />

Norton AntiVirus von Symantec.<br />

Antivirenprogramme können nur dann wirksam gegen Viren, Würmer<br />

und Trojaner eingesetzt werden, wenn die gespeicherten Signaturen und<br />

Muster ständig durch Updates auf den aktuellen Stand gebracht werden.


1.6.3 Software-Rechte<br />

Das Urheberrecht, also die Gesetze und Verordnungen zum Schutz<br />

geistigen Eigentums in den unterschiedlichen Gebieten des menschlichen<br />

Schaffens, gilt auch für Software.<br />

Mit einem Copyright, einem urheberrechtlichen, gesetzlich verankerten<br />

Schutz von kreativer Arbeit, welches ursprünglich für Texte,<br />

Musik, Zeichnungen und Designs galt, können auch Computerprogramme<br />

geschützt werden.<br />

Datenschutz und Datensicherheit, Software-Rechte 10<br />

Die unberechtigte Vervielfältigung und das unerlaubte Vertreiben von<br />

Kopien der geschützten Software kann mit hohen Strafen geahndet<br />

werden, selbst dann, wenn die Kopien der eigenen Nutzung dienen und<br />

man sich keine geschäftlichen Vorteile verschaffen wollte.<br />

Während noch vor 30 Jahren die Hardwarekonstruktion die wichtigste<br />

Komponente war, die den Preis von informationsverarbeitender Technik<br />

bestimmte, ist es heute die Softwareentwicklung. An der Programmierung<br />

von Betriebssystemen, grafischen Benutzeroberflächen oder<br />

komplexen Anwendungsprogrammen sind oftmals mehrere hundert<br />

Personen über einen Zeitraum von Jahren beteiligt. Dies können sich nur<br />

große Softwareentwicklungsfirmen leisten, die dann auch die Rechte am<br />

fertigen Produkt besitzen.<br />

Softwarenutzer und Softwarehersteller schließen einen Lizenzvertrag<br />

ab, worin Rechte des Benutzers genau festgelegt sind, der Nutzer der<br />

Software erhält eine Lizenz zur Nutzung. Meist gilt der Vertrag ab dem<br />

Moment der Öffnung des verschlossenen Softwarepaketes.<br />

Es ist sinnvoll, dem Softwarehersteller die Vertragsannahme mitzuteilen.<br />

Dem Lizenznehmer werden dafür besondere Rechte zum Erwerb von<br />

verbesserten oder erweiterten Programmversionen eingeräumt, er kann<br />

preiswert ein Update erhalten.<br />

Mit CD-ROMs in Computerzeitschriften oder in Büchern sowie aus dem<br />

Internet erhält man oft kleinere Programme kostenlos oder zu einem<br />

geringen Entgeld. Man fasst diese Programme auch unter dem Namen<br />

Public Domain zusammen. Die Rechtslage bei dieser Software wird mit<br />

bestimmten Begriffen gekennzeichnet:<br />

Public Domain-Software<br />

Freeware: Diese Software ist urheberrechtlich geschützt, darf aber<br />

privat kopiert und weitergegeben werden.<br />

Shareware: Dies sind zumeist „Schnupper“- oder Demo-Versionen<br />

von Programmen, die man beliebig austesten und auch weitergeben,<br />

aber nicht verändern kann. Gegen eine (meist geringe) Gebühr<br />

kann man sich beim Softwareentwickler registrieren lassen und erhält<br />

die Vollversion des entsprechenden Programms. Auch Shareware<br />

ist urheberrechtlich geschützt<br />

©<br />

Public Domain<br />

bedeutet „für den<br />

öffentlichen Gebrauch“.


110 Grundbegriffe<br />

Netiquette ist abgeleitet<br />

aus „Netzetikette“.<br />

b auch unter 6.1.2<br />

zu „Grenzen anständigen<br />

Handelns“,<br />

S. 517<br />

1.6.4 Internet und Recht<br />

Im Internet kann man wie nie zuvor massenhaft Ideen, Bilder, Musik verbreiten.<br />

Solche Informationen werden mitunter recht bedenkenlos auf<br />

eigene Web-Sites übertragen oder in anderen Publikationen (z. B. Printmedien)<br />

veröffentlicht und somit gewollt oder unbewusst unter dem eigenen<br />

Namen weiterverbreitet.<br />

Eigentlich ist aber jede Grafik, jedes Foto, jeder Text mit der Veröffentlichung<br />

auf einer Web-Site urheberrechtlich geschützt, meist sogar mit<br />

einem Copyright-Zeichen versehen.<br />

Auch im Internet sollte man sorgsam mit dem geistigen Eigentum anderer<br />

umgehen. Selbst wenn es bezüglich Internet-Veröffentlichungen<br />

noch rechtliche Unsicherheiten gibt, die durch neue Gesetze beseitigt<br />

werden müssen, beschäftigen sich die Gerichte zunehmend mit Fällen<br />

von Verletzung des Urheberrechts.<br />

In gewisser Hinsicht legt die Netiquette schon Verhaltensregeln im<br />

Internet (Knigge im Netz) auch in Bezug auf Rechtsprobleme auf freiwilliger<br />

Basis fest. So verlangt die Netiquette die Quellenangabe für Inhalte,<br />

die nicht vom Ersteller einer Web-Site selbst kommen, und verbietet<br />

persönliche Beleidigungen, Verletzungen religiöser, ethischer und weltanschaulicher<br />

Empfindungen anderer Netzteilnehmer, rassistische oder<br />

faschistische Äußerungen und Aufforderungen zu Gewalttaten.<br />

Solche Inhalte sind in frei zugänglichen Medien, wie z. B. auf einer Web-<br />

Site, nicht nur aus moralischen, sondern auch aus strafrechtlichen Gründen<br />

auszuschließen. Bei bestimmten extremen Inhalten ist sogar das Herunterladen<br />

oder der Besitz unter Strafe gestellt.<br />

Streng genommen dürfte man noch nicht einmal zu Beweiszwecken<br />

entsprechende Web-Sites auf seine Festplatte laden. Die Landeskriminalämter<br />

verzichten aber auf eine Strafverfolgung, wenn der Datenträger<br />

mit z. B. rassistischen Inhalten innerhalb von 48 Stunden bei der Polizei<br />

abgegeben wird.<br />

Es ist gegenwärtig nicht möglich, ohne einschneidende Eingriffe in die<br />

persönliche Freiheit des Einzelnen, verbotene Inhalte generell aus dem<br />

Internet zu entfernen – auch deshalb nicht, weil im Internet auf ausländische<br />

Angebote zugegriffen werden kann.<br />

Auch ist es fraglich, wer für das gesamte Internet politische, moralische<br />

oder sexuelle Inhalte bewerten soll. Hier kommt den Providern (den Anbietern<br />

eines Internetzugangs) eine besondere Verantwortung zu.<br />

Für die Schule regelt neben dem Strafgesetzbuch und dem Multimedia-<br />

Gesetz das Jugendschutzgesetz, welche Inhalte zugänglich sein dürfen<br />

– in keinem Fall rassistische, pornografische und gewaltverherrlichende<br />

Inhalte.<br />

In den letzten Jahren ist ein neues Problem aufgetaucht: Unaufgefordert<br />

werden E-Mails an viele Internet-Nutzer versandt – zu Werbe-Zwecken,<br />

Betrügereien (z. B. Ausspähen von Kontoverbindungen) oder zum Versand<br />

von Computerviren. Dieser sogenante Spam verstopft die elektronischen<br />

Briefkästen und ist daher unerwünscht.<br />

In den meisten Ländern ist das Versenden von Spam nicht verboten. Man<br />

sollte Spam-Mails nie öffnen, sondern sofort löschen. Auch ist die Installierung<br />

von Spam-Filtern wünschenswert.


Aufgaben<br />

1.1 Die Informatik als junge Wissenschaft<br />

Aufgabe 1.1.1<br />

Der Ausdruck „wissenschaftlich-technische Revolution“<br />

wurde von dem britischen Physiker John deS-<br />

mond bernal (1901–1971) eingeführt und bezeichnet<br />

den gewaltigen und sozial höchst folgenreichen<br />

technischen Umbruch, der seit dem 2. Drittel des<br />

20. Jahrhunderts auf der Basis wissenschaftlicher Erkenntnisse<br />

besonders im Produktions- und Kommunikationsbereich<br />

stattfindet. Er ist nicht nur gekennzeichnet<br />

durch die computergestützte Steuerung<br />

und Regelung von Produktionsabläufen und die<br />

Einrichtung weitverzweigter Systeme der Datenerfassung<br />

und -verarbeitung, sondern in den letzten<br />

Jahren und Jahrzehnten sind auch andere Wissenschaftsgebiete<br />

wie beispielsweise Gentechnik oder<br />

Nanotechnologie zum Motor von Umbruchsprozessen<br />

geworden.<br />

Erläutern Sie, wie sich Informatik und Gentechnik<br />

oder Nanotechnologie gegenseitig beeinflussen!<br />

Aufgabe 1.1.2<br />

Mit welchen der folgenden Aufgaben beschäftigt<br />

sich vorrangig welcher Bereich der Informatik?<br />

a) Planung, Konfiguration und Installation eines<br />

Firmennetzes<br />

b) Programmierung eines Datenbanksystems<br />

c) Untersuchung der Effizienz eines Algorithmus<br />

d) Entwicklung einer Maus unter Beachtung ergonomischer<br />

Anforderungen<br />

e) Entwicklung einer neuen Programmiersprache<br />

f) Entwicklung eines neuartigen Speicherbausteins<br />

g) Untersuchungen zur Automatisierbarkeit betrieblicher<br />

Arbeitsabläufe<br />

h) Compilerbau<br />

i) Konstruktion eines Expertensystems für medizinische<br />

Untersuchungen<br />

k) Herstellung eines hochintegrierten Schaltkreises<br />

für ein Spiel<br />

Aufgabe 1.1.3<br />

Diskutieren Sie<br />

a) theoretische,<br />

b) praktische,<br />

c) ethisch-moralische und<br />

d) rechtliche<br />

Grenzen der Computernutzung!<br />

Aufgaben 111<br />

Aufgabe 1.1.4<br />

Die amerikanische Bezeichnung der Wissenschaft<br />

Informatik ist „computer science“. Diskutieren Sie<br />

diesen Begriff!<br />

Aufgabe 1.1.5<br />

Nennen Sie Berufe, die mit Einführung informationsverarbeitender<br />

Technik verschwunden sind bzw.<br />

einer starken Wandlung unterworfen wurden!<br />

1.2 Daten, Datentypen und Datenstrukturen<br />

Aufgabe 1.2.1<br />

Welche der folgenden Informationssysteme lassen<br />

sich überwiegend elektronisch, also als Informatiksystem<br />

realisieren? Diskutieren Sie Sinn und Nutzen<br />

der technischen Abbildung des jeweiligen Informationssystems!<br />

a) Buchhandel<br />

b) Schreiben eines Romans und Kommunikation<br />

mit den Lesern<br />

c) Fotografie<br />

d) immunbiologisches System zur Abwehr von<br />

Krankheitserregern im menschlichen Körper<br />

e) Weitergabe von Erbinformationen bei Lebewesen<br />

(Genetik der Zelle)<br />

f) Theateraufführung<br />

g) Produktion und Vertrieb einer Zeitschrift<br />

h) Nervenzelle (Sinnesorgane) und Gehirn<br />

i) Komponieren und Vertreiben von musikalischen<br />

Werken<br />

k) Wahl einer neuen Regierung<br />

Aufgabe 1.2.2<br />

Im täglichen Leben wird im Allgemeinen mit Dezimalzahlen<br />

gerechnet, der Computer arbeitet im<br />

Dualsystem.<br />

a) Geben Sie die folgenden Dezimalzahlen als Dualzahlen<br />

an!<br />

5; 31; 32; 15; 131; 69; 512; 14<br />

b) Geben Sie die folgenden Dualzahlen als Dezimalzahlen<br />

an!<br />

1011; 11; 10001; 11111; 1101; 10000010<br />

Aufgabe 1.2.3<br />

Rechnen Sie um!<br />

a) 10111 [2] = x [10] b) 101110 [2] = x [10]<br />

c) 1111 [10] = x [2] d) 1111 [2] = x [10]<br />

e) 85 [10] = x [2]<br />

f) 85 [10] = x [16]<br />

g) x [10] = 100000000001 [2]<br />

h) 10101010101 [2] = x [16]


112 Grundbegriffe<br />

Aufgabe 1.2.4<br />

Als Mittler zwischen den langen, schwer zu merkenden<br />

Dualzahlen und den Dezimalzahlen sind<br />

insbesondere Hexadezimalzahlen geeignet.<br />

a) Geben Sie folgende Dualzahlen als Hexadezimalzahlen<br />

an:<br />

100 1001 1100 1111 1000 1001<br />

1001 1011 1001 1011 1 1110<br />

b) Geben Sie folgende Dezimalzahlen als Hexadezimalzahlen<br />

an:<br />

16 17 15 144 256<br />

512 514 4096 4097 69 905<br />

5000 5001 9999 10 000 139 810<br />

c) Geben Sie folgende Hexadezimalzahlen als Dezimalzahlen<br />

an:<br />

32 0 35F AAA 6666<br />

3333 A2A ABBA ABC BAD<br />

EBBE 321 F35 123 AFFE<br />

Aufgabe 1.2.5<br />

Rechnen Sie um!<br />

a) 10111 [2] = x [16]<br />

b) 111110 [2] = x [10]<br />

c) 1111 [16] = x [2]<br />

d) 1111 [16] = x [10]<br />

e) 221 [10] = x [16]<br />

f) 2345 [8] = x [2] = x [16] = x [10]<br />

g) 111000111 [2] = x [8] = x [16] = x [4]<br />

Aufgabe 1.2.6<br />

Ermitteln Sie die Tastenkombinationen zur Erzeugung<br />

folgender Zeichen:<br />

Ÿ Ê á © Ø<br />

® ¥ æ £ ‰<br />

× x X – - ÷<br />

Aufgabe 1.2.7<br />

Rechnen Sie um (vervollständigen Sie die Tabelle)!<br />

Bit Byte KByte MByte<br />

25 165 824 3 145 728<br />

4 194 304<br />

3 145 728<br />

111 111 111 111<br />

2 048<br />

5 760<br />

256<br />

1,44<br />

Aufgabe 1.2.<br />

Eine Programmiersprache biete folgende Datentypen<br />

an:<br />

integer; longinteger; real; boolean; char.<br />

Welchen Datentyp würden Sie jeweils den Variablen<br />

zur Speicherung und Verarbeitung folgender<br />

Objekte zuordnen?<br />

Begründen Sie!<br />

a) Längen der Diagonalen eines Drachenvierecks<br />

b) Geschlecht eines Schülers (männlich oder weiblich)<br />

c) Ergebnis des Produktes zweier maximal 4-stelliger<br />

ganzer Zahlen<br />

d) Variablen, die zur Ersetzung von Buchstaben bei<br />

der Entzifferung von Geheimschriften dienen<br />

sollen<br />

e) Rest bei der ganzzahligen Division<br />

f) Variablen, die zur Berechnung des kleinsten gemeinsamen<br />

Vielfachen zweier Zahlen genutzt<br />

werden sollen<br />

g) Ergebnis des Produktes zweier maximal 2-stelliger<br />

ganzer Zahlen<br />

Aufgabe 1.2.<br />

Gegeben ist folgender Abschnitt aus einem Turbo-<br />

Pascal-Programm:<br />

x:=4.8; y:=16;<br />

a:=SQR(y);<br />

b:=SQRT(y)+1;<br />

c:=ROUND(x)DIV y;<br />

d:=(y+1) MOD TRUNC(x);<br />

e:=(3*x/y)*10;<br />

Dabei bedeuten SQR Quadrat, SQRT Quadratwurzel,<br />

ROUND gerundeter Wert, DIV ganzzahlige Division,<br />

MOD Rest bei der ganzzahligen Division und TRUNC<br />

das Abschneiden der Nachkommastellen einer Dezimalzahl.<br />

a) Von welchem Datentyp sind die einzelnen Variablen?<br />

b) Welche Werte stehen für die Variablen a bis e im<br />

Speicher?<br />

Aufgabe 1.2.10<br />

Eine Programmiersprache biete folgende Datenstrukturen<br />

(strukturierte Typen) an:<br />

array; record; file.<br />

Welche Struktur würden Sie jeweils für die Speicherung<br />

und Verarbeitung folgender Objekte und<br />

Sachverhalte wählen? Begründen Sie!<br />

a) 8×8-Feld eines Damespiels<br />

b) 6 000 Zufallszahlen


c) Spannungsmessreihe für ein physikalisches Experiment<br />

d) Fibonaccizahlen<br />

(Hinweis: Fibonaccizahlen berechnen sich aus<br />

der Summe der jeweils letzten beiden Folgenglieder:<br />

Gilt f 1 = 1 und f 2 = 1,<br />

dann folgt<br />

f 3 = f 2 + f 1 = 1 + 1 = 2,<br />

f 4 = f 3 + f 2 = 2 + 1 = 3,<br />

f 5 = f 4 + f 3 = 3 + 2 = 5<br />

usw.)<br />

e) Preisliste<br />

f) Namensliste (Vor- und Nachname)<br />

g) Koeffizienten eines Gleichungssystems aus 4<br />

Gleichungen mit 4 Unbekannten (als Matrix dargestellt)<br />

h) Personalien<br />

i) Multiplikationstabelle für das große Einmaleins<br />

k) Lufttemperaturen, gemessen am Morgen und<br />

am Abend über einen Zeitraum von 2 Monaten<br />

Aufgabe 1.2.11<br />

Geben Sie für folgende praktische Sachverhalte<br />

entsprechende Typen (Datenstrukturen) in Turbo<br />

Pascal an!<br />

a) Adresse (Vorname, Name, Straße, PLZ, Ort)<br />

b) Adressen-Verzeichnis mit 30 Adressen (Vorname,<br />

Name, Straße, PLZ, Ort)<br />

c) Multiplikationstabelle für das kleine Einmaleins<br />

d) Preisliste (Warennummer, Preis)<br />

e) Belegen der Komponente „Cola“ der Preisliste<br />

aus d)<br />

f) Firmenmitarbeiter (Name, Vorname, Geburtsdatum,<br />

Geschlecht, Gehalt)<br />

g) Eintragen des Geburtsjahres des Firmenmitarbeiters<br />

Wolkenstein aus Aufgabe f)<br />

1.3 Algorithmen und Programme<br />

Aufgabe 1.3.1<br />

Welcher der folgenden Prozesse kann nicht durch<br />

einen Algorithmus beschrieben werden? Begründen<br />

Sie jeweils!<br />

a) Lösen eines Gleichungssystems aus zwei Gleichungen<br />

mit zwei Unbekannten<br />

b) Benoten eines Aufsatzes<br />

c) Ordnen von 2000 vorgegebenen Zahlen nach ihrer<br />

Größe<br />

d) Auswerten der Ergebnisse eines Wissenswettbewerbes<br />

Aufgaben 113<br />

e) Leiten einer Gesprächsrunde<br />

f) Auswerten der Ergebnisse eines Sportfestes<br />

g) Ermitteln der Buchstabenhäufigkeit in einem<br />

Text<br />

h) Ermitteln der k-ten Primzahl<br />

i) Auflisten aller ungeraden natürlichen Zahlen<br />

k) Schreiben einer Eins in der nächsten Physikarbeit<br />

l) Wechseln eines Autoreifens (Radwechsel)<br />

m) Schreiben eines Liebesbriefes<br />

n) Stricken eines Pullovers<br />

o) Konstruieren eines Kreises durch 3 nicht auf einer<br />

Geraden liegenden Punkte<br />

p) Schießen eines Tores beim Fußball<br />

q) Addition zweier Brüche<br />

Aufgabe 1.3.2<br />

Ordnen Sie den folgenden „Algorithmen“ die Begriffe<br />

„deterministisch“, „determiniert“, „nichtdeterministisch“,<br />

„nichtdeterminiert“ und „stochastisch“<br />

zu!<br />

a) Primzahltest von R. Solovay und V. Strassen:<br />

Eine Zahl wird eingegeben. Falls der Algorithmus<br />

die Ausgabe „nein“ liefert, steht fest, dass<br />

die Eingabe n keine Primzahl ist. Wird die Ausgabe<br />

„ja“ gegeben, so ist n mit mindestens der<br />

Wahrscheinlichkeit 0,5 eine Primzahl. Durch<br />

m-maliges Wiederholen kann man diese Wahrscheinlichkeit<br />

auf 1 – 0,5 m steigern.<br />

Für m = 10 ist die Wahrscheinlichkeit, dass<br />

bei Ausgabe „ja“ n eine Primzahl ist schon<br />

0,9990234375.<br />

Für m = 100 kann man von einem sicheren Ereignis<br />

sprechen.<br />

b) Quicksort:<br />

Irgendein Element einer unsortierten Liste wird<br />

als Trennelement T genommen und alle anderen<br />

Elemente werden davor (wenn sie kleiner oder<br />

gleich T sind) bzw. dahinter (wenn sie größer<br />

als T sind) angeordnet. Mit den entstehenden<br />

Teilmengen wird ebenfalls so verfahren, bis alle<br />

Elemente an der richtigen Stelle stehen.<br />

(b auch Abschnitt 5.3.8, Seite 492)<br />

c) Mit einem Zufallsgenerator wird eine unsortierte<br />

Liste von Zahlen erzeugt und dann mit<br />

Minimumsort sortiert:<br />

Aus einer Liste wird das kleinste Element herausgesucht<br />

und an die erste Stelle einer neuen<br />

Liste gesetzt. Die Restliste wird wieder nach dem<br />

kleinsten Element durchsucht, welches an die<br />

zweite Stelle der neuen Liste gesetzt wird usw.


114 Grundbegriffe<br />

Aufgabe 1.3.3<br />

Gegeben sei folgendes Turbo Pascal-Programm „was_tue_ich“:<br />

PROGRAM was_tue_ich;<br />

VAR i, n, ergebnis: integer;<br />

BEGIN<br />

WRITELN (’Programm zur Berechnung von ? ? ?’);<br />

WRITELN;<br />

WRITE (’Eingabe n (n>=0): ’); READLN(n);<br />

IF n>0 THEN<br />

BEGIN<br />

ergebnis:=0;<br />

i:=0;<br />

REPEAT<br />

ergebnis:=ergebnis+n;<br />

i:=i+1;<br />

UNTIL i>=n;<br />

WRITELN (’Ergebnis: ’, ergebnis);<br />

END<br />

ELSE WRITELN (’Eingabe unzulässig!’);<br />

READLN<br />

END.<br />

a) Führen Sie einen Trockentest durch! Stellen Sie eine Wertebelegungstabelle (einschließlich der Anzahl<br />

der Schleifendurchläufe) für n = 5 auf!<br />

Beschreiben Sie, was das Programm leistet!<br />

b) Ersetzen Sie die Wiederholung mit nachgestelltem Test durch eine gleichwertige Zählschleife!<br />

Aufgabe 1.3.4<br />

Gegeben ist das nachstehende Turbo Pascal-Programm:<br />

PROGRAM was_wird_berechnet;<br />

VAR a, b, p: integer;<br />

BEGIN<br />

writeln(‚Programm zur Berechnung ??? zweier Zahlen‘);<br />

writeln;<br />

write(‚1. Zahl: ‚); readln(a);<br />

write(‚2. Zahl: ‚); readln(b);<br />

p := 0;<br />

while a > 0 do<br />

begin<br />

if a mod 2 0 then p := p + b;<br />

a := a div 2;<br />

b := b * 2<br />

end;<br />

write(p);<br />

readln<br />

END.<br />

a) Führen Sie einen Trockentest durch und stellen Sie eine Wertebelegungstabelle für a = 4 und b = 5<br />

sowie für a = 9 und b = 6 auf!<br />

Beschreiben Sie kurz, was dieses Programm leistet!<br />

b) Ersetzen Sie die Wiederholung mit vorangestelltem Test durch eine gleichwertige Wiederholung mit<br />

nachgestelltem Test!<br />

Notieren Sie alle zu ändernden Zeilen!


1.4 Modelle<br />

Aufgabe 1.4.1<br />

Welche Techniken (Datenmodellierung, Datenflussmodellierung,<br />

objektorientierte Modellierung,<br />

zustandsorientierte Modellierung) würden Sie bei<br />

der Modellierung folgender praktischer Probleme<br />

nutzen wollen?<br />

a) Beschreibung der Auswahl einer Telefonnummer<br />

mit dem Handy<br />

b) Entwurf eines Internetbuchhandels<br />

c) Definition eines nichtdeterministischen Kellerautomaten<br />

d) Beschreibung des Bussystems eines konkreten<br />

Computers<br />

e) Erklärung des Aufbaus eines Multimediadokuments<br />

f) Aufzeigen aller Zellbezüge in einem Kalkulationsdokument<br />

g) Entwurf eines Möbelkataloges<br />

Aufgabe 1.4.2<br />

Programmieren Sie mit dem Automaten-Kara das<br />

Beispiel von S. 47!<br />

Aufgabe 1.4.3<br />

Ein Getränkeautomat akzeptiert ausschließlich 50-<br />

Cent-Münzen und 1-Euro-Münzen. Im Display wird<br />

der eingeworfene Betrag angezeigt.<br />

Nachdem genau 1,50 € eingeworfen wurden, kann<br />

man sich über Auswahltasten für die Getränke Cappucino<br />

oder Kaffee entscheiden. Der Automat gibt<br />

das gewünschte Getränk aus und kehrt in den Startzustand<br />

„Bereit“ zurück.<br />

Über die Taste „C“ kann man in jedem Zustand den<br />

Vorgang abbrechen. Der Automat wechselt daraufhin<br />

in den Startzustand und gibt das eingeworfene<br />

Geld zurück.<br />

Zeichnen Sie das Zustandsdiagramm! Fehlerhafte<br />

Eingaben müssen im Diagramm nicht berücksichtigt<br />

werden.<br />

Aufgabe 1.4.4<br />

In der Zahlentheorie, besonders der Kryptologie<br />

kann man die Maschinenzahlen mit ihren festen<br />

Beschränkungen vielen Zusammenhängen nicht gebrauchen.<br />

Man rechnet gerne mit beliebigstelligen<br />

natürlichen Zahlen, soweit der Speicher des Rechners<br />

reicht. Für diesen Zweck wird ein abstrakter<br />

Datentyp „Nat“ zum Rechnen mit beliebig großen<br />

natürlichen Zahlen spezifiziert.<br />

Aufgaben 115<br />

Konstruktionsfunktionen sind null, eins, die Nachfolgerfunktion<br />

succ sowie die Funktion def, die aus<br />

einer ganzen Maschinenzahl eine abstrakte natürliche<br />

Zahl erzeugt. Weiter gibt es die binären Operationen<br />

Addition (plus), Multiplikation (mal), die<br />

Subtraktion (sub), die ganzzahlige Division (divi)<br />

und die Potenzierung (pot). Zum Größenvergleich<br />

existieren eq0 (Vergleich mit null), eq zum Test auf<br />

Gleichheit zweier Nat-Zahlen, lt zum Test auf (echt)<br />

kleiner und le zum Test auf kleiner oder gleich.<br />

a) Geben Sie nach dem Muster des ADT „Stacks“<br />

(S. 49) eine Spezifikation mit prädikativ spezifizierter<br />

Signatur für den ADT „Nat“ an!<br />

b) Schreiben Sie die Schnittstelle für den ADT „Nat“<br />

in funktionaler Notation auf!<br />

Aufgabe 1.4.5 (Fortsetzung von Aufgabe 1.4.4)<br />

Die effiziente Implementierung der Arithmetik großer<br />

Zahlen ist eine schwierige Unternehmung. Die<br />

hier gewählte Implementierung ist modellhaft zu<br />

verstehen und ist extrem ineffizient. Als funktionale<br />

Repräsentation wird ein algebraischer Datentyp<br />

nats ::= N | S nats verwendet, er drückt aus,<br />

dass eine natürliche Zahl entweder N (null) oder<br />

Nachfolger einer natürlichen Zahl ist.<br />

Die abstrakte null wird durch N, eins durch S n,<br />

zwei durch S (S n) dargestellt usw.<br />

Implementieren Sie mit dem nats-Typ alle Schnittstellenfunktionen!<br />

Aufgabe 1.4.6 (Fortsetzung von Aufgabe 1.4.5)<br />

Schreiben Sie einen Klientenmodul, der nur die<br />

Schnittstelle des ADT Nat verwendet und folgende<br />

Funktionen implementiert:<br />

(a) modu n m, Test bei Teilung von n durch m,<br />

(b) ggT, größter gemeinsamer Teiler zweier Nat-<br />

Zahlen,<br />

(c) sqr, Quadratfunktion,<br />

(d) double, Verdopplungsfunktion,<br />

(e) fak, Fakultätsfunktion,<br />

(f) fib, Funktion zur Berechnung der Fibonaccizahlen.<br />

Aufgabe 1.4.7<br />

Das Rechnen innerhalb des Zahlkörpers Q der rationalen<br />

Zahlen lässt sich mit einem abstrakten Datentyp<br />

rat nachbilden. Die Konstruktionsfunktion<br />

d (wie „durch“) erzeugt aus einem Zahlenpaar (x, y)<br />

mit x ∈ Z und y ∈ N eine rationale Zahl. Exportiert<br />

werden weiter die Konstanten null und eins und<br />

die binären Operationen Addition (plus), Multipli-


116 Grundbegriffe<br />

kation (mal), die unären Operationen negativ (Bildung<br />

des additiv Inversen) und kehrwert (Bildung<br />

des multiplikativ Inversen) angeboten.<br />

Weiter gibt es die Standard-„show“-Funktion zur<br />

Ausgabe von rationalen Zahlen (z. B. in der Form<br />

"17/5"). Eine weitere Ausgabefunktion stellt unechte<br />

Brüche als gemischte Zahlen dar.<br />

a) Entwerfen Sie eine Spezifikation analog zu der<br />

des ADT Stacks!<br />

b) Geben Sie eine kommentierte Schnittstelle für<br />

den abstrakten Datentyp in funktionaler Notation<br />

an!<br />

c) Implementierung: Im Zusammenhang mit der<br />

internen Repräsentation der Brüche als Zahlenpaare<br />

(in gekürzter Darstellung) ist eine Funktion<br />

normieren nützlich, die einen ggf. nicht vollständig<br />

gekürzten Bruch in seine Normdarstellung<br />

umwandelt. Programmieren Sie diese Funktion!<br />

d) Implementieren Sie alle Schnittstellenfunktionen!<br />

e) Schreiben Sie einen Klientenmodul, der alle<br />

Funktionen testet! Schreiben Sie ohne Kenntnis<br />

der Implementierung der rationalen Zahlen,<br />

allein mit der Schnittstelle die zwei Funktionen<br />

zur Subtraktion und Division von rationalen<br />

Zahlen.<br />

Aufgabe 1.4.<br />

Schlangen (engl. queues) sind aus dem täglichen<br />

Leben (nur zu gut) bekannt. Gesucht ist eine minimale<br />

Schnittstelle für abstrakte Schlangen. In einem<br />

ersten Schritt wird das Modell spezifiziert, es nutzt<br />

den mathematischen Folgenbegriff.<br />

Es stehen n Elemente (Leute) x 0, ..., x n−1 in einer<br />

Schlange.<br />

a) Legen Sie die Semantik der Operationen<br />

(i) einreihen (engl. enqueue)<br />

(ii) bedienen (engl. dequeue)<br />

(iii) kopf<br />

(iv) laenge<br />

mit Hilfe von Folgen fest! Für das Bedienen am<br />

Schlangenkopf gibt es zwei mögliche Varianten:<br />

die Operation liefert den Kopf und die Restschlange<br />

oder nur die Restschlange allein. Meist<br />

wird die zweite Variante gewählt und zusätzlich<br />

die Operation kopf spendiert, die nur den Kopf<br />

liest, die Schlange aber unverändert lässt.<br />

b) Schreiben Sie eine Spezifikation nach dem Muster<br />

des Stacks! Spezifizieren Sie dazu den ADT<br />

prädikativ, d. h. mit Voraussetzungen und Ergebnissen.<br />

Aufgabe 1.4. (Fortsetzung von Aufgabe 1.4.8)<br />

Spezifizieren Sie die Semantik der ADT-Schnittstelle<br />

Schlangen algebraisch, d. h. mithilfe von Gleichungsbeziehungen<br />

zwischen den Operationen!<br />

Hinweis:<br />

Welche Wechselbeziehung gilt für die Operationen<br />

einreihen und bedienen im Falle leerer bzw.<br />

nichtleerer Schlangen?<br />

Aufgabe 1.4.10 (Fortsetzung von Aufgabe 1.4.8)<br />

a) Geben Sie eine Signatur für den ADT Schlangen<br />

in einer funktionalen Sprache an!<br />

b) Implementieren Sie die Schnittstelle mit Listen!<br />

Wie effizient sind die einzelnen Operationen?<br />

Aufgabe 1.4.11<br />

Eine zweite Implementierung des ADT Schlangen<br />

versucht, effizient an das Schlangenende heranzukommen<br />

und hält deshalb die Schlange in einem<br />

Paar von Listen. Ist die abstrakte Schlange q durch<br />

das Listenpaar (xs,ys) repräsentiert, so enthält<br />

xs ++ reverse ys die Schlangenelemente von q<br />

in natürlicher Reihenfolge.<br />

Gesucht ist:<br />

a) die Abstraktionsfunktion, d. h. ein abstrakter<br />

Schlangenwert, ausgedrückt durch diese Repräsentation,<br />

b) die Invariante, die für jede als Listenpaar repräsentierte<br />

Schlange immer gelten muss (programmiert<br />

als Prädikat in der Programmiersprache),<br />

c) die Implementierung der Schnittstellenfunktionen<br />

mit der Listenpaar-Repräsentation.<br />

Analysieren Sie die Effizienz der Operationen im<br />

Vergleich zur einfachen Listenrepräsentation!<br />

Aufgabe 1.4.12<br />

Gesucht ist ein Kundenmodul der beiden Schnittstellen<br />

ADT Stacks und ADT Schlangen (Aufgabe 1.4.8).<br />

Allein unter Rückgriff auf Funktionen der Schlangen-Schnittstelle<br />

bzw. der Stapel-Schnittstelle sind<br />

folgende Funktionen zu implementieren:<br />

a) Aus zwei Schlangen q1, q2 wird eine dritte<br />

Schlange q3 hergestellt, in der die Elemente in<br />

der Reihenfolge erst q1, dann q2, auftreten.<br />

b) stack2queue wandelt einen Stapel so in eine<br />

Schlange um, dass das oberste Element zum<br />

Schlangenkopf wird.<br />

c) queue2stack wandelt eine Schlange in einen<br />

Stapel um, sodass das oberste Element des Stapels<br />

der Schlangenkopf ist.<br />

d) qreverse dreht den Inhalt einer Schlange um.


Aufgabe 1.4.13<br />

Beweisen Sie durch Vergleich der Wahrheitstabellen,<br />

dass die im Abschnitt 1.4.3 auf S. 57 angegeben<br />

Distributiv-Gesetze für Konjunktion und Alternative<br />

gelten!<br />

Aufgabe 1.4.14<br />

Neben den Quantoren ∀ („für alle“) und ∃ („es<br />

existiert“) könnte man auch weitere Quantoren<br />

einführen, zum Beispiel ∃! („es gibt höchstens ein<br />

...“) oder ∃!! („es gibt genau ein ...“) . Man kann<br />

diese Operatoren aber mit den bereits bekannten<br />

Quantoren und Operatoren sowie einer Relation<br />

gleich(X,Y) definieren. Dabei gilt gleich(X,Y)<br />

für identische X, Y. Geben Sie entsprechende Ausdrücke<br />

für ∃!X R(X,Y)bzw. ∃!!X R(X,Y) an!<br />

Aufgabe 1.4.15<br />

In der natürlichen Sprache drücken wir uns nicht<br />

immer präzise aus, weil wir darauf vertrauen, dass<br />

der Gesprächspartner uns versteht und aus dem<br />

Zusammenhang die richtige Bedeutung erfasst. So<br />

klingen die beiden folgenden Sätze ganz ähnlich.<br />

Bei einer Übersetzung der (vermutlich) gemeinten<br />

Bedeutung in eine logische Aussage gibt es aber einen<br />

wesentlichen Unterschied. !<br />

(a) Der Lehrer hat ein Bonbon für alle Kinder.<br />

(b) Der Lehrer hat eine Liste für alle Kinder.<br />

Beschreiben Sie die Bedeutungen durch logische<br />

Aussagen mit Quantoren für Kinder<br />

und Gegenstände (Liste bzw. Bonbons) unter<br />

Verwendung einer zweistelligen Relation<br />

lehrer_hat_fuer(Kind,Gegenstand)!<br />

Aufgabe 1.4.16<br />

Man kann beliebige aussagenlogische Wahrheitstabellen<br />

durch Aussagenverbindungen allein mit den<br />

Operatoren ¬ und ∧ realisieren. Geben Sie eine Begründung<br />

dafür an!<br />

Weiterhin kann man jede Wahrheitstabelle allein<br />

mit dem Operator nand realisieren (nand(A,B):=<br />

¬(A ∧ B). Geben Sie auch dafür eine Begründung<br />

an!<br />

Analog kann man auch einen Operator nor mit<br />

nor(A,B):= ¬(A ∨ B) definieren. Würde auch nor<br />

allein ausreichen?<br />

Aufgabe 1.4.17<br />

Eine Relation r heißt transitiv, wenn sie die folgende<br />

Bedingung erfüllt:<br />

∀X∀Y∀Z(r(X,Y) ∧ r(Y,Z) ⇒ r(X,Z))<br />

Aufgaben 117<br />

Ein Beispiel für eine transitive Relation ist die größer-Relation<br />

für Zahlen. Auch die Relation „Verwandtschaft“<br />

unter Menschen ist transitiv, die Relation<br />

„Bekanntschaft“ dagegen nicht. Geben Sie<br />

weitere Beispiele für transitive und nicht-transitive<br />

Relationen an!<br />

Eine Relation ist nicht transitiv, wenn gilt:<br />

∃X∃Y∃Z(r(X,Y) ∧ r(Y,Z) ∧ ¬r(X,Z))<br />

Leiten Sie diesen Ausdruck aus der negierten Definition<br />

der Transitivität unter Benutzung der Umformungsregeln<br />

ab!<br />

1.5 Informationsverarbeitende Technik<br />

Aufgabe 1.5.1<br />

Zu den Bestandteilen des Computergrundgerätes<br />

gehören: CPU, ROM, ROM-BIOS, RAM.<br />

a) Erläutern Sie die Aufgaben dieser Bestandteile!<br />

b) Was bedeuten die jeweiligen Abkürzungen?<br />

Übersetzen Sie!<br />

Aufgabe 1.5.2<br />

Informationsverarbeitung kann man auch als Eingabe,<br />

Verarbeitung und Ausgabe von Daten betrachten<br />

(EVA-Prinzip).<br />

Welcher Art sind die Eingabe- bzw. Ausgabedaten<br />

der folgenden Prozesse?<br />

a) Primzahltest<br />

b) Hypotenuse nach Pythagoras<br />

c) Flächenberechnung<br />

d) Preisabfrage<br />

e) Zahlen raten<br />

f) Laufschrift<br />

g) Funktion y = ln x darstellen<br />

h) Wertetabelle für y = 3 sin 2x<br />

i) Berechnung der Fakultät<br />

Aufgabe 1.5.3<br />

Welche Techniken der Arbeit mit der Maus kommen<br />

bei den folgenden Aktionen zur Anwendung?<br />

a) Datei aus einem Ordner in einen anderen verschieben<br />

b) Fenster markieren<br />

c) Befehl aus einem Pull-down-Menü ausführen<br />

d) Programm starten<br />

e) Ellipse in einem Zeichenprogramm erzeugen<br />

f) Alternativtext zu einer Grafik auf einer Web-Site<br />

lesen<br />

Aufgabe 1.5.4<br />

Erläutern Sie das Klassendiagramm auf S. 86!


11 Grundbegriffe<br />

Aufgabe 1.5.5<br />

Erstellen Sie einen Verzeichnisbaum, der folgende<br />

Sachverhalte berücksichtigt:<br />

a) Auf der Festplatte des Computers befindet sich<br />

ein Verzeichnis mit Bildern.<br />

b) Es soll ein Textverarbeitungsprogramm und ein<br />

Kalkulationsprogramm installiert werden.<br />

c) Alle persönlichen Daten sollen in einem gesonderten<br />

Verzeichnis abgelegt werden. Dabei soll<br />

zwischen Dokumenten und Tabellenkalkulationsdateien<br />

für die Schule (möglichst geordnet<br />

nach Fächern) und privaten Dokumenten unterschieden<br />

werden.<br />

d) Auf dem Computer befinden sich auch Spiele.<br />

Aufgabe 1.5.6<br />

Welche Dateien werden hier gesucht und gefunden?<br />

a) TMP*.* b) *.EXE<br />

c) ARBEIT4.??? d) ARBEIT4.*<br />

e) *.HTM f) ??????.DOC<br />

g) BR_ME?ER.DOC i) ?ONF?G.S?S<br />

k) A*.TXT l) BRIEF*.*<br />

Aufgabe 1.5.7<br />

Notieren Sie ergonomische Anforderungen an Monitore<br />

für folgende Kenngrößen!<br />

a) Zeichengröße, Helligkeit, Kontrast, Farbdarstellung<br />

b) Reflexionen, Strahlung<br />

c) Bildschirmdiagonale und Auflösungsvermögen<br />

d) Bildwiederhol- und Zeilenfrequenz<br />

e) Abstand zu den Augen, Neigung des Monitors<br />

1.6 Datenschutz- und Datensicherheit,<br />

Software-Rechte<br />

Aufgabe 1.6.1<br />

Es ist heute leicht möglich, Datenbanken im staatlichen<br />

und privatwirtschaftlichen Bereich „zusammenzuschalten“.<br />

a) Diskutieren Sie Auswirkungen eines solchen Zusammenschlusses!<br />

b) Nennen Sie Gesetze, Rechte der Bürger und<br />

Komponenten des Grundrechts auf Datenschutz,<br />

die dies verhindern sollen!<br />

Aufgabe 1.6.2<br />

Diskutieren Sie die Weitergabe personenbezogener<br />

Daten im privatwirtschaftlichen Bereich, z. B. an<br />

Versicherungen oder Versandhäuser!<br />

Aufgabe 1.6.3<br />

Erkundigen Sie sich<br />

a) beim Einwohnermeldeamt,<br />

b) bei einer Polizeidienststelle in Ihrer Wohngegend,<br />

welche Daten dort gespeichert sind und wozu sie<br />

verwendet werden!<br />

Aufgabe 1.6.4<br />

Notieren Sie Maßnahmen zur Durchsetzung von<br />

Komponenten der Datensicherheit:<br />

a) leichte Wiederauffindbarkeit gespeicherter Daten<br />

b) Schutz vor Datenverlust durch Systemabstürze<br />

oder Technikausfall<br />

c) Vermeidung unbefugter Zugriffe (falsche Nutzung<br />

und Löschung von Daten)<br />

d) Schutz vor Computerviren<br />

Aufgabe 1.6.5<br />

Handeln Sie in folgenden Situationen korrekt?<br />

a) Sie beobachten einen Unfall mit Fahrerflucht.<br />

Das Kfz-Kennzeichen des Flüchtenden haben Sie<br />

notiert und Sie holen die entsprechende Auskunft<br />

bei der Kfz-Meldestelle ein.<br />

b) Sie starten ein Spiel von einer selbstgebrannten<br />

CD-ROM.<br />

Ihr Virenscanner zeigt einen Virus an. Sie schließen<br />

das Programm, nehmen die CD-ROM aus<br />

dem Laufwerk und werfen sie in den Papierkorb.<br />

c) Sie haben eine CD-ROM mit vielen Bitmap-Grafiken<br />

gekauft, wandeln diese Grafiken in das<br />

GIF-Format um und nutzen sie ohne Quellenangabe<br />

zum Gestalten Ihrer Homepage.<br />

Aufgabe 1.6.6<br />

a) Entschlüsseln Sie den Text ABIMPKDFEGBOD mit<br />

dem Vigenère-Schlüssel (1,3,9)!<br />

b) Denken Sie sich selbst einen Vigenère-Schlüssel<br />

(m,n) aus (nur zwei Werte, m, n ≤ 2) und verschlüsseln<br />

Sie eine Nachricht mit einer Länge<br />

von ca. 50 Zeichen!<br />

c) Versuchen Sie die Nachricht zu entschlüsseln,<br />

die Ihr Banknachbar in Aufgabe b chiffriert hat!<br />

Wie lautet sein Schlüssel?<br />

Aufgabe 1.6.7<br />

Spielen Sie das Diffie-Helman-Merkle-Verfahren mit<br />

Ihrem Banknachbarn an einem selbstgewählten Beispiel<br />

durch (b S. 104)!

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!