kapitel 1.6.1.pdf
kapitel 1.6.1.pdf
kapitel 1.6.1.pdf
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)!