531 45 11MB
German Pages 542 [544] Year 2006
Die CD-ROM ist Bestandteil des Titels „Informatik. Gymnasiale Oberstufe“. ISBN 3-89818-622-9 (DUDEN PAETEC Schulbuchverlag) © 2006. Alle Rechte vorbehalten. Nachdruck und Nachnutzung außerhalb des Lizenzvertrages, auch auszugsweise, vorbehaltlich der Rechte, die sich aus § 53, 54 UrhG ergeben, nicht gestattet.
Kontakt und Hotline: Für technische Fragen steht eine Service-Adresse zur Verfügung: [email protected] Hinweise und Vorschläge bitte an folgende Adresse mailen: [email protected] DUDEN PAETEC Schulbuchverlag Bouchéstr. 12, Haus 11 12435 Berlin [email protected] http://www.duden-paetec.de
Herausgeber des Gesamtwerkes „Informatik. Gymnasiale Oberstufe“ Dr. Lutz Engelmann
Redaktion des Gesamtwerkes Dr. Lutz Engelmann Dr. Astrid Kalenberg
Benutzeroberfläche und Herstellung Andreas Biedermann
CD-ROM-Herstellung optimal media production GmbH Glienholzweg 7 17207 Röbel/Müritz
Autorenliste für die CD-ROM Die Artikel auf der CD-ROM wurden von folgenden Autoren ausgearbeitet: Doz. Dr. habil Peter Barth, Erfurt Dr. Hubert Bossek, Dahlwitz-Hoppegarten Robby Buttke, Zschopau Dr. Lutz Engelmann, Berlin Tobias Hermes, Berlin Dr. Astrid Kalenberg, Berlin Prof. Dr. habil. Hans-Joachim Laabs, Nudow Marko Lauke, Kunnerwitz Karlheinz Lehmann, Berlin Dr. Gerhard Paulin, Birkenstein Reinhard Raake, Fredersdorf Dr. Uwe Schwippl, Berlin Dr. Reinhard Stamm, Ludwigsfelde Prof. Dr. Christian Wagenknecht, Löbau Mathias Williger, Görlitz
© DUDEN PAETEC Schulbuchverlag Berlin, Frankfurt a. M. Alle Rechte vorbehalten. ISBN 3-89818-622-9. Internet: www.duden-paetec.de Nachschlagewerke im Internet: www.schuelerlexikon.de
Bildquellenverzeichnis Die Abbildungen auf der CD-ROM zum Lehrbuch „Informatik. Gymnasiale Oberstufe“ wurden von folgenden Personen, Unternehmen und Institutionen zur Verfügung gestellt. Die Rechte an den Abbildungen und Medien liegen bei den Rechtegebern. Katrin Bahro, Berlin Peter Barth, Erfurt Canon Deutschland GmbH Corel Photos Deutsches Museum München Duden-Paetec-Archiv Lutz Engelmann, Berlin Honda R & D Japan Intel GmbH, München Astrid Kalenberg, Berlin Hans-Joachim Laabs, Nudow Günter Liesenberg, Berlin Erika Netzmann, Hennickendorf Photo Disc Inc. Reinhard Raake, Fredersdorf Bernd Raum, Neuenhagen Uwe Schwippl, Berlin Volkswagen Presse
Rechte an Programmen und Tools Auf der CD-ROM „Informatik. Gymnasiale Oberstufe“ werden eine Reihe von Programmen und Tools verwendet. Die Rechte an den Programmen und Tools liegen bei den Rechtegebern. Eingetragene Warenzeichen sind im Besitz der jeweiligen Firmen. Programme: • Acrobat Reader® (Acrobat Reader® Copyright © 1987–2006 Adobe Systems Inc. Alle Rechte vorbehalten.) • Apple Quicktime Player® (© 1992–2006, Apple Computer Inc. Alle Rechte vorbehalten.) • JAVA 2 Plattform Standard Edition von Sun® (Copyright 1994 – 2006 Sun Microsystems, Inc.) • Miranda Programmiersystem Release 2 (© 1989–2006, Research Software Limited) Hierfür existiert ein gesonderter Lizenzvertrag (LIZENZ.PDF), der gründlich zu lesen ist. • AutoEdit, Version 1.22 (© Juli 2006, Fachbereich Informatik der Hochschule Zittau/Görlitz) • JavaKara (© September 2003, EducETH, ETH Zürich)
Animationen und Videos: • • • • •
Verlag Bibliographisches Institut & F. A. Brockhaus AG www.lexi-tv.de cine plus Media Service GmbH & Co.KG in Zusammenarbeit mit dem MDR Planeta Actimedia iAS interActive Systems Hans-Joachim Laabs, Nudow
Interaktive Berechnungs- und Darstellungstools: • Dr. Marko Marhl und Branko Kaucic Univerza v Mariboru – Universität Maribor / Slovenien Slomškov trg 15, 2000 Maribor, Slovenia
Lizenzvertrag DIE DUDEN-PAETEC GMBH GEWÄHRT DEM KUNDEN NACH MASSGABE DER NACHFOLGENDEN BESTIMMUNGEN EIN NICHT AUSSCHLIESSLICHES NUTZUNGSRECHT AN DER HIER BEIGEFÜGTEN COMPUTERSOFTWARE. 1. Nutzungsberechtigung (a) Die DUDEN PAETEC GmbH gewährt dem Kunden hiermit das nicht ausschließliche, nicht übertragbare Recht, die Software für seine eigenen Zwecke intern zu nutzen. Das Recht zur Unterlizenzierung bleibt ausgeschlossen. © DUDEN PAETEC Schulbuchverlag Berlin, Frankfurt a. M. Alle Rechte vorbehalten. ISBN 3-89818-622-9. Internet: www.duden-paetec.de Nachschlagewerke im Internet: www.schuelerlexikon.de
(b) Die Software darf nur benutzt werden, wenn die Original-CD im Computer des Kunden eingelegt ist oder wenn er im Internet arbeitet. (c) Wenn der Kunde Mehrfachlizenzen erworben hat, muss die CD in einem Netzwerkcomputer eingelegt sein und es dürfen nur so viele Benutzer auf die CD zugreifen, wie Lizenzen erworben wurden. Der Kunde muss über einen angemessenen Mechanismus bzw. über die entsprechenden Verfahren verfügen, mit denen sichergestellt werden kann, dass die Anzahl der Benutzer niemals die Anzahl der vom Kunden bezahlten Lizenzen übersteigt und dass alle Personen, die laut dieser Vereinbarung keine Befugnis zur Nutzung der Software haben, auf diese auch nicht zugreifen können. (d) Der Kunde ist außerhalb der engen Grenzen des Urheberrechts nicht zum Reverse Assembling, Reverse Compiling, Ändern oder Erweitern der Software berechtigt. (e) Das Kopieren der CD ist nicht gestattet. 2. Rechte an der Software und der Dokumentation (a) Die DUDEN PAETEC GmbH behält sich die Rechte an der Software einschließlich aller Änderungen und Verbesserungen vor, soweit diese nicht in diesem Vertrag ausdrücklich dem Kunden gewährt werden. (b) Der Kunde darf auf den Datenträgern, an der Software oder auf den Büchern angebrachte Copyright-, Warenzeichen-, Eigentums- oder sonstige Hinweise nicht verändern oder entfernen. (c) Die Software ist urheberrechtlich geschützt. 3. Gewährleistungen und Zusicherungen (a) Die Gewährleistungsfrist beträgt sechs Monate vom Zeitpunkt des Erwerbs der Software an. Die DUDEN PAETEC GmbH kann im Gewährleistungsfall fehlerhafte Software ersetzen oder reparieren, sofern der Kunde den beschädigten Datenträger auf Kosten der DUDEN PAETEC GmbH an diese zurückgesandt hat. Der Kunde ist zum Rücktritt vom Lizenzvertrag („Wandelung“) oder zur Herabsetzung der Lizenzgebühren („Minderung“) nur berechtigt, wenn eine Ersatzlieferung nicht möglich ist oder nicht zur Behebung des Fehlers führt. (b) Über den in dieser Ziff. 3 festgelegten Umfang hinaus übernimmt die DUDEN PAETEC GmbH keine ausdrücklichen oder stillschweigenden Gewährleistungen in Bezug auf die Software einschließlich irgendeiner Gewähr der Wiederverkäuflichkeit oder Eignung zu einem bestimmten Zweck. (c) Angaben auf Verpackungen, Broschüren, Prospekten und ähnlichen Anzeigen sind keine Zusicherungen. 4. Haftungsbegrenzung (a) Die DUDEN PAETEC GmbH haftet nicht für Schäden, gleich aus welchem Rechtsgrund, es sei denn, diese (I) werden durch das Fehlen einer zugesicherten Eigenschaft verursacht oder (II) sind nach dem Produkthaftungsgesetz zu ersetzen oder (III) werden durch schuldhafte Verletzung einer vertragswesentlichen Pflicht (Kardinalpflicht) durch die DUDEN PAETEC GmbH in einer das Erreichen des Vertragszwecks gefährdenden Weise verursacht oder (IV) sind auf grobe Fahrlässigkeit oder Vorsatz zurückzuführen. (b) Jede Haftung der DUDEN PAETEC GmbH ist auf solche typischen Schäden beschränkt, mit deren Eintritt die DUDEN PAETEC GmbH nach den ihr bei Vertragsschluss bekannten Umständen vernünftigerweise rechnen konnte. (c) Soweit der Kunde Kaufmann im Sinne des Handelsgesetzbuches ist, bei dem der Vertrag zum Betrieb seines Handelsgewerbes gehört, oder soweit der Kunde eine juristische Person des öffentlichen Rechts oder ein öffentlichrechtliches Sondervermögen ist, ist die Haftung von der DUDEN PAETEC GmbH weiter wie folgt eingeschränkt: (I) Die DUDEN PAETEC GmbH haftet insoweit nicht für mittelbare Schäden, Mangelfolgeschäden oder entgangenen Gewinn, sofern diese nicht auf Vorsatz oder grobe Fahrlässigkeit von Organen oder leitenden Angestellten der DUDEN PAETEC GmbH oder das Fehlen einer zugesicherten Eigenschaft zurückzuführen oder nach dem Produkthaftungsgesetz zu ersetzen sind. (II) Die Haftung für alle Käufer des Werkes „Kunst Gymnasiale Oberstufe“ ist ferner der Höhe nach auf die an die DUDEN PAETEC GmbH vom Kunden gezahlten Lizenzgebühren beschränkt. 5. Allgemeines (a) Diese Vereinbarung unterliegt deutschem Recht. Das einheitliche UN-Kaufrecht (Convention on Contracts for the International Sale of Goods) wird ausgeschlossen. (b) Sollte eine der Bestimmungen dieses Lizenzvertrages unwirksam sein oder werden, berührt dies die Wirksamkeit der übrigen Bestimmungen nicht. Für den Fall der Unwirksamkeit einer oder mehrerer der Bestimmungen des Lizenzvertrages verpflichten sich die Parteien zur Vereinbarung einer neuen Bestimmung, welche dem Zweck der alten Bestimmung möglichst nahe kommt. (c) Jede Abtretung von Rechten aus diesem Vertrag durch den Kunden ist ausgeschlossen.
© DUDEN PAETEC Schulbuchverlag Berlin, Frankfurt a. M. Alle Rechte vorbehalten. ISBN 3-89818-622-9. Internet: www.duden-paetec.de Nachschlagewerke im Internet: www.schuelerlexikon.de
Inhaltsverzeichnis
1 1.1 1.1.1 1.1.2
1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.3.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4
2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 2.2.3
6229_IVZ.indd 3
Grundbegriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die Informatik als junge Wissenschaft . . . . . . . . . . . . . . . . . . Grundlagen und Gegenstandsbereiche der Informatik . . . . . Anwendungsbereiche der Informatik und gesellschaftliche Auswirkungen . . . . . . . . . . . . . . . . . . . . Vertiefung: Berufsbilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Daten, Datentypen und Datenstrukturen . . . . . . . . . . . . . . . . Informationen und Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmen und Programme . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmenstrukturen und Darstellungsformen . . . . . . . . . . Programme und Programmiersprachen . . . . . . . . . . . . . . . . . Vertiefung: Algorithmus, Heuristik, Programm . . . . . . . . . . . Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modellierung in der Informatik . . . . . . . . . . . . . . . . . . . . . . . . Spezifikation und abstrakte Datentypen . . . . . . . . . . . . . . . . Prädikatenlogik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objektorientierte Modellierung . . . . . . . . . . . . . . . . . . . . . . . Informationsverarbeitende Technik . . . . . . . . . . . . . . . . . . . . Zur Geschichte der Rechentechnik . . . . . . . . . . . . . . . . . . . . . . Vertiefung: Digitale und analoge Rechenhilfsmittel . . . . . . . Der Computer und sein Betriebssystem . . . . . . . . . . . . . . . . . . Eingabegeräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ausgabegeräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Externe Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Benutzeroberflächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arbeit mit Dateien (Dateihandling) . . . . . . . . . . . . . . . . . . . . . Arbeitsschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Datenschutz und Datensicherheit, Software-Rechte . . . . . . . Datenschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vertiefung: Public-Key-Verfahren . . . . . . . . . . . . . . . . . . . . . . Datensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software-Rechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internet und Recht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufgaben zum 1. Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Angewandte Informatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Textverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufbau und Funktion von Textverarbeitungsprogrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objekte in der Textverarbeitung und ihre Attribute . . . . . . . Publikation und Präsentation . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Grafikprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Computergrafik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pixelorientierte Grafikprogramme . . . . . . . . . . . . . . . . . . . . . Vektororientierte Grafikprogramme . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . .
3
7 8 8 12 16 18 18 27 28 30 30 32 38 42 44 44 48 54 61 66 66 68 69 74 77 80 82 86 92 95 96 96 104 105 109 110 111 119 120 120 123 128 135 136 136 139 141 143
05.07.2006 11:12:00
4
Inhaltsverzeichnis
2.3 2.3.1 2.3.2 2.3.3. 2.3.4 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.5 2.5.1 2.5.2 2.5.3 2.5.4 2.6 2.6.1 2.6.2 2.6.3 2.7 2.7.1 2.7.2 2.7.3
3 3.1 3.1.1 3.1.2 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5
3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7
6229_IVZ.indd 4
Tabellenkalkulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufbau und Funktion von Kalkulationsprogrammen . . . . . . Objekte in Kalkulationsprogrammen und ihre Attribute . . . Kalkulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vertiefung: Funktionen und Datenflüsse . . . . . . . . . . . . . . . . Präsentation von Kalkulationsdaten durch Diagramme . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanksysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufbau und Funktion von Datenbanksystemen . . . . . . . . . . . Relationale Datenmodellierung . . . . . . . . . . . . . . . . . . . . . . . . Umgang mit dem Datenbankmanagementsystem . . . . . . . . . SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Präsentationsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Klassen in Multimediadokumenten . . . . . . . . . . . . . . . . . . . . . Objekte, Attribute und Methoden in Präsentationen . . . . . . Animationen in Präsentationen . . . . . . . . . . . . . . . . . . . . . . . . Kriterien zur Gestaltung von Multimediadokumenten . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Datenaustausch zwischen Anwendungsprogrammen . . . . . . . Einbetten und Verknüpfen von Objekten . . . . . . . . . . . . . . . . Office-Pakete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Universelle Datenaustauschformate . . . . . . . . . . . . . . . . . . . . Vertiefung: Huffman-Algorithmus . . . . . . . . . . . . . . . . . . . . . Internet-Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internet – Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internet-Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Präsentation im World Wide Web . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Aufgaben zum 2. Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
144 144 145 146 149 150 152 153 153 155 161 167 171 172 172 173 176 178 179 180 180 181 182 185 186 186 188 193 199 200
Praktische Informatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typen von Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . Zur Entwicklung der Programmiersprachen . . . . . . . . . . . . . . Prozedurale Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . Erzeugung prozeduraler Sprachen . . . . . . . . . . . . . . . . . . . . . Sprachkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programme und ihre Struktur . . . . . . . . . . . . . . . . . . . . . . . . . Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vertiefung: Sortierverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Objektorientierte Programmierung . . . . . . . . . . . . . . . . . . . . Ein einfacher Planer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Applikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellung eigener Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eine spezielle Liste für Einträge . . . . . . . . . . . . . . . . . . . . . . . . Ereignisbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Planer beenden und Ausblick . . . . . . . . . . . . . . . . . . . . . . . . .
207 208 208 209 212 212 214 224 235 245 255 256 257 257 258 259 265 272 273 275
05.07.2006 11:12:08
Inhaltsverzeichnis
Vertiefung: Swingklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vertiefung: Ereignissteuerung . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Funktionale Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Funktionale Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Funktionsdefinitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4 Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.5 Tupel- und Funktionstypen . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.6 Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.7 Listenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.8 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.9 Konstruktion neuer Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.10 Anwendung algebraischer und abstrakter Datentypen . . . . . Vertiefung: Primitiv-rekursive Funktionen und funktionale Programmierung . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Logische Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1 Sprachkonzept und Programmaufbau . . . . . . . . . . . . . . . . . . 3.5.2 Künstliche Intelligenz und Wissensverarbeitung . . . . . . . . . . Vertiefung: Suche in gerichteten Graphen . . . . . . . . . . . . . . . Aufgaben zum 3. Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
277 278 279 280 280 281 283 286 290 294 297 301 307 309 316 317 318 318 325 332 334
4 4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.2 4.2.1 4.2.2 4.2.3 4.2.4 4.3 4.3.1 4.3.2 4.3.3 4.3.4
Technische Informatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der Computer und sein Betriebssystem . . . . . . . . . . . . . . . . . Aufbau und Funktion eines Computersystems . . . . . . . . . . . . Rechnen mit Computerzahlen . . . . . . . . . . . . . . . . . . . . . . . . . Buskonzepte und Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . Betriebssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prozessautomatisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technische Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Signalwandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NC-Steuerung und CNC-Steuerung . . . . . . . . . . . . . . . . . . . . . Roboter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Netzwerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lokale und Telekommunikationsnetzwerke . . . . . . . . . . . . . . Vernetzungsarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Leitungsgeführte Datenübertragungsmedien . . . . . . . . . . . . Datenübertragung per Funk . . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Aufgaben zum 4. Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
353 354 354 364 378 386 396 404 404 407 415 417 422 422 423 425 428 432 433
5 5.1 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6
Theoretische Informatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formale Sprachen und Automaten . . . . . . . . . . . . . . . . . . . . . Formale, natürliche und Programmiersprachen . . . . . . . . . . . Syntax und Ableitungsbaum . . . . . . . . . . . . . . . . . . . . . . . . . . Formale Grammatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zeichen, Alphabet, Verkettung, Zeichenkette . . . . . . . . . . . . Länge einer Zeichenkette, Wort und Wortmenge . . . . . . . . . Formale Sprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
439 440 440 440 441 443 445 446
6229_IVZ.indd 5
5
05.07.2006 11:12:09
6
Inhaltsverzeichnis
5.1.7 5.1.8 5.1.9 5.1.10 5.1.11 5.1.12 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.3.8 5.3.9 5.3.10 5.3.11 5.3.12 5.3.13
6229_IVZ.indd 6
Chomsky-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reguläre Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Endliche Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nichtdeterministische endliche Automaten . . . . . . . . . . . . . . Kellerautomaten und kontextfreie Sprachen . . . . . . . . . . . . . Turingmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Berechenbarkeitstheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vager Algorithmusbegriff und Berechenbarkeit . . . . . . . . . . Algorithmische Unlösbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmisch unlösbare Probleme . . . . . . . . . . . . . . . . . . . . . Entscheidbarkeit und Semientscheidbarkeit . . . . . . . . . . . . . . Turing-Berechenbarkeit und churchsche These . . . . . . . . . . . Hierarchie von Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Primitiv-rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . μ-rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Effiziente Algorithmen und Komplexität . . . . . . . . . . . . . . . . Praktische Unlösbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Intuitive Programmanalyse und Wahl der Problemgröße . . . Probleminstanzen und Analyseformen . . . . . . . . . . . . . . . . . . Effizienzbegriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asymptotische Aufwandsordnung . . . . . . . . . . . . . . . . . . . . . Lösung von Rekursionsgleichungen . . . . . . . . . . . . . . . . . . . . Vollständige Lösungssuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . Teile und Herrsche (divide and conquer) . . . . . . . . . . . . . . . . Verzweigen und Begrenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamisches Programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . Gefräßige Strategie (greedy) . . . . . . . . . . . . . . . . . . . . . . . . . . P-Probleme und NP-Probleme . . . . . . . . . . . . . . . . . . . . . . . . . Effiziente Näherungsalgorithmen . . . . . . . . . . . . . . . . . . . . . . Vertiefungen: Effiziente Näherungsalgorithmen – ein Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das Wichtigste im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . Aufgaben zum 5. Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
447 449 450 452 455 458 462 462 463 466 468 471 474 474 477 479 479 480 482 484 486 487 490 491 493 493 496 496 499
6 6.1 6.1.1 6.1.2 6.2 6.2.1 6.2.2 6.2.3
Ausblick – Computer: Chancen und Grenzen . . . . . . . . . . . . . Grenzen der Programmierung und der Informatik . . . . . . . . Theoretische Grenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Praktische, rechtliche und ethische Grenzen . . . . . . . . . . . . . Computer und Gehirn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Können Computerprogramme denken? . . . . . . . . . . . . . . . . . Ist das menschliche Gehirn ein Computer? . . . . . . . . . . . . . . . Können Computer lachen? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
509 510 511 515 518 518 520 522
A
Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
500 503 505
05.07.2006 11:12:10
Die Informatik befasst sich als Wissenschaft von der automatischen Informationsverarbeitung mit den Prinzipien informationsverarbeitender Prozesse und ihrer algorithmischen Realisierung mithilfe von Computern.
Grundbegriffe
1.1 Die Informatik als junge Wissenschaft Nicht zum Gegenstand der Informatik gehören natürlich entstandene Informationssysteme und -prozesse (z. B. Informationsaufnahme und -verarbeitung über Nervenzellen und Gehirn des Menschen), vorhandene Kenntnisse über deren inneren Aufbau und Funktionsweise werden jedoch ausgenutzt.
Die Informatik ist die Wissenschaft von der automatischen Informationsverarbeitung. Die Informatik befasst sich mit den Gesetzmäßigkeiten und Prinzipien informationsverarbeitender Prozesse und ihrer algorithmischen Realisierung mithilfe rechentechnischer Mittel sowie mit der Entwicklung und Nutzung automatisierter Informationsverarbeitungssysteme. Dabei müssen informationsverarbeitende Prozesse in „computerverständlicher“ Form beschrieben und entsprechende Mittel entworfen werden, damit solche „Programme“ abgearbeitet werden können.
1.1.1 Grundlagen und Gegenstandsbereiche der Informatik Ursachen, die zur Herausbildung der Wissenschaft Informatik führten
B B B B
– Mit dem Beginn der wissenschaftlich-technischen Revolution in der Mitte des 20. Jh. ist ein stürmisches Anwachsen von Informationen („Informationsexplosion“) zu verzeichnen. Es entstand das dringende gesellschaftliche Bedürfnis, diese Informationsflut zu beherrschen. – Innerhalb anderer Wissenschaften (insbesondere der Mathematik) waren verschiedene Grundlagen geschaffen worden, diese Informationslawine theoretisch zu bewältigen: • Algorithmusbegriff und Automatentheorie (Turing, 1938), • Theorie der rekursiven Funktionen (Gödel, 1930), • Informationstheorie (Shannon, 1949), • Theorie der formalen Sprachen (Chomsky, Ginsburg, 1955). – Durch die Entwicklung der Mikroelektronik waren die praktischen Voraussetzungen dafür gegeben, dass leistungsfähige Rechentechnik preiswert produziert und massenhaft in allen Bereichen des gesellschaftlichen Lebens eingesetzt werden konnte. – Die Vielfalt der Anwendungsmöglichkeiten informationsverarbeitender Technik und die ökonomische Notwendigkeit, die Potenzen dieser Technik zum Tragen kommen zu lassen, machten es erforderlich, geeignete Methoden zum Entwurf von Programmen und informationsverarbeitender Technik sowie sinnvolle, problemnahe Sprachen zur Kommunikation mit der Technik zu entwickeln. Grundlagen der Informatik
Schaltung auf einem Computerchip
theoretische Grundlagen
Algorithmentheorie, Theorie der formalen Sprachen, Automatentheorie, Informationstheorie, Logik, Berechenbarkeitstheorie, Komplexitätstheorie
technische Grundlagen
herkömmliche Rechentechnik, Nachrichtentechnik, Mikroelektronik, Sensortechnik, Optoelektronik, Telekommunikation (Bildschirm- und Satellitentechnik)
Die Informatik als junge Wissenschaft
Gegenstandsbereiche der Informatik Im Allgemeinen werden vier Gegenstandsbereiche der Wissenschaft Informatik unterschieden – die theoretische, die praktische, die technische und die angewandte Informatik. Theoretische, praktische und technische Informatik zählen zur Kerninformatik. Dabei gibt es viele Überschneidungen, sodass sich diese Bereiche auf manchen Gebieten nur schwer voneinander abgrenzen lassen. Theoretische Informatik: Die theoretische Informatik beschäftigt sich vor allem mit der Fundierung des Algorithmusbegriffs, untersucht die Leistungsfähigkeit von Algorithmen und erforscht die prinzipiellen Grenzen des Computers beim Lösen von Problemen. Sowohl für die Konstruktion von Algorithmen als auch für die Konstruktion von Computern spielen Methoden und Modelle aus der Mathematik eine wichtige Rolle. In der Mathematik werden aber überwiegend statische Strukturen betrachtet, in der Informatik dynamische (Prozesse).
Teilgebiete der theoretischen Informatik: Theorie der formalen Sprachen, Automatentheorie, Algorithmentheorie, Berechenbarkeitstheorie, Komplexitätstheorie, ...
I
Theoretische Informatik in der Schule: Weil der Algorithmusbegriff in der Informatik eine tragende Rolle spielt, wird bereits in der informatischen Grundbildung ein anschaulicher Algorithmusbegriff vermittelt. In der gymnasialen Oberstufe erfolgen dann mathematisch exakte Definitionen für diesen Begriff sowie Einblicke in andere Teilgebiete der theoretischen Informatik. Praktische Informatik: Die praktische Informatik beschäftigt sich vor allem mit der Formulierung von Algorithmen als Programme in Abhängigkeit von den rechentechnischen Möglichkeiten. Meist sind die Programme recht umfangreich und kaum überschaubar, es ist also auch eine Programmiermethodik (die Erarbeitung und Nutzung von Programmierverfahren) und die Entwicklung von Programmierumgebungen notwendig, sodass Programmierfehler reduziert werden. Auch müssen die Programme, die in der Erstfassung in einer höheren, dem Menschen verständlicheren Form vorliegen, in eine für den Rechner ausführbare Form übertragen werden, es müssen also spezielle Übersetzungsprogramme erarbeitet werden. Die Entwicklung von Betriebssystemen für Computer (Überwachung der Ausführung von Programmen und Übernahme der Steuerung der Ein- und Ausgabe) gehört ebenfalls zu den Aufgaben der praktischen Informatik. Für die Entwicklung und Nutzung von Betriebssystemen und für andere genannte Aufgaben benötigt der Informatiker Kenntnisse aus der Elektrotechnik (Speicherorganisation, technische Umsetzung logischer Verknüpfungen usw.), um die Möglichkeiten und Grenzen technischer Realisierungen auf einer konkreten Gerätetechnik abschätzen zu können.
Teilgebiete der praktischen Informatik: Programmiermethodik (Software-Engineering), Programmiersprachen, Übersetzerbau, Betriebssysteme, Dialogsysteme, Fragen der künstlichen Intelligenz und der Konstruktion von Expertensystemen, ...
I
10
Grundbegriffe
Praktische Informatik in der Schule: Notwendige Kenntnisse zur Nutzung von Betriebssystemen und dialog orientierter grafischer Benutzeroberflächen und des damit im Zusammenhang stehenden „Dateihandlings“ werden in der informationstechnischen bzw. informatischen Grundbildung angeeignet. Das Suchen von algorithmischen Lösungen für Probleme und die Formulierung der Lösungen als Programm, Kenntnisse zu genutzten Programmiersprachen und Programmiermethoden stehen meist im Mittelpunkt des Informatikunterrichts der gymnasialen Oberstufe. Teilgebiete der technischen Informatik: Rechnerarchitektur, Datenfernübertragung, Netze, Prozessdatenverarbeitung, VLSIEntwurf (Entwurf hochintegrierter Schaltkreise), …
I
Teilgebiete der angewandten Informatik: Betriebsinformatik, Rechtsinformatik, Mensch-MaschineKommunikation, Ergonomie, …
I
Technische Informatik: In der technischen Informatik befasst man sich mit dem funktionellen Aufbau der Hardware des Computers (Speicher, Zentraleinheit usw.) und den zugehörigen Ein- und Ausgabegeräten, also dem logischen Entwurf von Rechentechnik, Geräten und Schaltungen. Dabei sind Kenntnisse zu technischen Grundlagen der Informatik (Nachrichtentechnik, Informationstheorie, Mikroelektronik, Sensortechnik, Optoelektronik, Bildschirmtechnik, Lichtleiter- und Satellitentechnik) unerlässlich. Technische Informatik in der Schule: Um den Computer effektiv nutzen zu können, sind Kenntnisse über Hardwarebestandteile und ihre Kenngrößen sowie Fertigkeiten im Umgang mit peripheren Geräten wie Tastatur, Maus usw. erforderlich. Auch die Arbeit im Netz spielt eine immer größere Rolle. Dies wird schon in der informatischen Grundbildung vermittelt. Da die informatische Grundbildung sehr oft an den Unterricht in Technik oder Arbeitslehre gebunden ist, wird manchmal auch auf Prozessautomatisierung und Schaltalgebra eingegangen, was neben der Rechnerarchitektur eigentlich höheren Klassenstufen vorbehalten ist. Angewandte Informatik: Die angewandte Informatik beschäftigt sich mit Anwendungen von Methoden der Kerninformatik in anderen Wissenschaften und Gesellschaftsbereichen. Sie untersucht Abläufe (z. B. in der Wirtschaft, bei der Herstellung von Büchern, in der Medizin usw.) auf ihre Automatisierbarkeit durch Computer, erstellt anwendungsbezogene Analysen und hilft bei der Entwicklung von Programmsystemen, die bestimmte Anwendungsfälle abdecken sollen. Es werden Kenntnisse über die jeweiligen Anwendungsgebiete vorausgesetzt bzw. es muss sehr eng mit den entsprechenden Fachleuten zusammengearbeitet werden. Angewandte Informatik in der Schule: Schon in der informatischen Grundbildung geht es hier vor allem um grundlegende Kompetenzen im Umgang mit Anwendungssystemen (Textverarbeitung, Tabellenkalkulation, Datenbanksysteme, ...) und mit dem Internet sowie um Auswirkungen der Datenverarbeitung auf die Gesellschaft (einschließlich der Datenschutzproblematik).
Die Informatik als junge Wissenschaft
Übersicht zu grundlegenden Inhalten und Bereichen der Wissenschaft Informatik
Informatik Wissenschaft, die sich mit der automatischen Informationsverarbeitung beschäftigt
Theoretische Informatik Teilgebiet der Informatik, welches insbesondere die (meist mathematischen) Grundlagen der Information, ihrer Darstellung und effizienten Verarbeitung untersucht.
Technische Informatik Teilgebiet der Informatik, welches sich mit der technischen Realisierung der Informationsverarbeitung beschäftigt
Praktische Informatik Teilgebiet der Informatik, welches die Mittel zur Auswertung von Informationsdarstellungen bereitstellt (Formalisierung des Problems, Programmierung)
Angewandte Informatik Teilgebiet der Informatik, das Problemfelder für den Einsatz von informationsverarbeitender Technik aufschließt und die entsprechenden Anwendungsprogramme bereitstellt
Gesellschaft Die Informatik beeinflusst den sozialen und kulturellen Charakter einer Gesellschaft und ihre Produktion stark. Umgekehrt bestimmt die Gesellschaft, womit sich Informatik vorrangig befasst.
11
12
Grundbegriffe
1.1.2 Anwendungsbereiche der Informatik und gesellschaftliche Auswirkungen Bedeutung der Informatik
I
Der Kernprozess der wissenschaftlich-technischen Revolution ist die (vor allem durch die Wissenschaft Informatik mitbestimmte) Umwälzung der informationsverarbeitenden Technik, die eng mit der Automatisierung verbunden ist. Dabei werden zunehmend geistige Tätigkeiten des Menschen „technisiert“, was eine Revolution in der Entwicklung der Produktivkräfte darstellt, die nur vergleichbar ist mit der massenhaften Übernahme körperlicher Arbeitsfunktionen des Menschen durch Maschinen während der industriellen Revolution im 19. Jahrhundert. Durch die Übertragung automatisierbarer geistiger Tätigkeiten auf Maschinen werden die geistigen Kräfte des Menschen vervielfacht, wird Zeit gewonnen für schöpferisches Denken und Handeln. Außerdem erleichtert, beschleunigt und verbilligt die informationsverarbeitende Technik den Zugang zum vorhandenen Wissen der Menschheit.
b auch S. 510 ff.
Grenzen der Anwendung von Informatik und informationsverarbeitender Technik
Hinweis zu Problemen, die sich nicht algorithmisch lösen lassen (1.):
1. Es gibt zahlreiche Probleme – und dies ist mit Mitteln der theoretischen Informatik exakt nachgewiesen –, zu deren Lösung sich keine Algorithmen konstruieren lassen und die damit mit dem Computer nicht lösbar sind. 2. Es gibt zahlreiche Probleme, deren Lösungsaufwand (Speicherbedarf und Bearbeitungszeit) mit der Problemgröße exponentiell oder sogar noch stärker ansteigt (z. B. beim systematischen Probieren aller infrage kommenden Varianten), die also praktisch nicht exakt lösbar sind. Oft sind diese Probleme aus dem Bereich der Ökonomie. 3. Informationsverarbeitende Technik ist Hilfsmittel zum Lösen von Problemen, zur Unterstützung von Entscheidungen des Menschen. Zur Entscheidungsfindung – auch sozialer, moralischer, ethischer Art – kann der Computer beitragen. Aber die Entscheidungen selbst trifft der Mensch und führt sie aus bzw. lässt sie mithilfe von Computern ausführen. Nur der Mensch begreift sich als soziales Wesen und kann im Interesse der Gesellschaft Entscheidungen treffen. Dies schließt ein, dass er entscheidet, wann informationsverarbeitende Technik eingesetzt wird und wann nicht. Dies schließt aber auch ein, dass es ethische, soziale, ökologische und rechtliche Grenzen der Computernutzung geben kann, die diskutiert und immer wieder neu festgelegt werden müssen. In den letzten Jahrzehnten erkannte man beispielsweise zunehmend die Gefahren, die sich aus der schnellen Verfügbarkeit personenbezogener Daten und deren Konzentration in vernetzbaren Datenbanken ergeben. Das hat in vielen Ländern zur Ausarbeitung und Annahme von Datenschutzgesetzen geführt. Auch schließt der weltweite Informationsaustausch im Internet die Möglichkeit ein, ethisch und moralisch nicht vertretbare Bilder und Texte rassistischen oder pornografischen Inhalts zu verbreiten.
Es gibt keinen Algorithmus, der entscheidet, ob ein beliebiges Problem algorithmisch lösbar ist oder nicht, d. h., ob die Antwort auf eine gewisse Entscheidungsfrage „Ja“ oder „Nein“ lauten wird. Für viele Problemklassen gelingt dies jedoch.
Die Informatik als junge Wissenschaft
Gesellschaftliche Auswirkungen Die Auswirkungen der Informatik und des Einsatzes von Computertechnik umfassen im Wesentlichen zwei Bereiche: Beruf und Alltag. Ähnlich wie bei der Entwicklung mechanischer Maschinen während der industriellen Revolution im 19. Jahrhundert wird auch der Computer als Instrument der Rationalisierung eingesetzt, woraus sich für die Betroffenen – durch den Wandel von Arbeitsplätzen und beruflichen Anforderungen – oft schwerwiegende soziale Folgen ergeben. Andererseits erhöht sich der Lebensstandard durch den Einsatz von Computern (Kaufen durch Kassensysteme, vielfältige Informationsangebote durch neue Medien, Vereinfachung der Hausarbeit durch in die Haushaltstechnik integrierte Computer, Zahlungsverkehr, neue Freizeitmöglichkeiten usw.). Die letzten Beispiele zeigen aber auch, dass die Informatiksysteme für die meisten Menschen undurchschaubar geworden sind, dass die Chancen und Risiken dieses Einsatzes schwer abschätzbar sind. Informatiksysteme Der Begriff Informatiksystem beschreibt die Einheit von Hard- und Software sowie Netzen einschließlich aller durch sie angestrebten und verursachten Gestaltungs- und Qualifizierungsprozesse bezüglich Arbeit und Organisation. Dieser Begriff (nach der Gesellschaft für Informatik e. V.) beinhaltet insbesondere folgende Komponenten: • automatische Verarbeitung mit dem Computer (Einheit von Hard- und Software), • Vernetzung (auch im Sinne der räumlichen Verteilung der Informationsverarbeitung, einschließlich der Ausgabe von Daten über Bildschirm und Drucker), • Interaktion mit dem Nutzer (mit der Software selbst, aber auch durch Dateneingabe oder Interpretation der Datenausgabe). Alle Anwendungsprogramme und Programmierumgebungen lassen sich mit dem Begriff „Informatiksystem“ fassen, wenn man sie im Verbund mit dem Computer betrachtet, auf dem sie installiert sind. Außerdem werden durch diesen Begriff der Computer selbst (mit seinem Betriebssystem) oder aber auch „eingebettete“ Systeme beschrieben – beispielsweise Mobiltelefone oder elektronische Steuerungsanlagen im Auto. Ausgewählte Anwendungsgebiete informationsverarbeitender Technik Durch den Einsatz neuer Informatiksysteme haben sich in den letzten Jahren ganze Branchen strukturell gewandelt, was gleich im ersten Beispiel an der Produktion eines Buches gezeigt werden soll.
I
13
14
Grundbegriffe
CAD Konstruktionszeichnung
CAP Steuerungsprogramm
CAM fertiges Produkt
CAQ
computerintegrierte Fertigung (CIM)
Verlagswesen, Buch- und Zeitungsdruck: – Die Autoren liefern ihr Manuskript meist schon als Textdateien an den Verlag. – Der Redakteur oder Lektor redigiert das Manuskript direkt am Computer und reicht es an die Layouter weiter. – Die Layouter erstellen daraus mittels eines Desktop-PublishingProgramms durch Einfügen von Bildern und Grafiken und durch Gestaltung der Seiten eine veröffentlichungsreife Druckschrift am Bildschirm. Sie drucken die gestalteten Seiten in eine (Druck-)Datei und reichen diese Datei an das Satzstudio weiter. – Im Satzstudio werden mittels der Druckdatei Filme hergestellt. Beispielsweise werden für die Herstellung eines mehrfarbigen Buches im Allgemeinen 4 Filme (die die Farben Cyan, Magenta, Gelb und Schwarz repräsentieren) benötigt. Meist ist heute das Satzstudio schon in den Verlag integriert und selbstverständlich arbeiten die genannten Bereiche eng zusammen. Der Beruf des Setzers, der früher aus beweglichen Lettern eine Druckvorlage herstellte, ist mittlerweile gänzlich verschwunden. – Die Filme werden an eine Druckerei weitergeleitet. Hier werden sie auf eine Druckmaschine montiert. Der Druck kann beginnen. – Viele Druckereien bieten schon an, den Weg über das Satzstudio zu umgehen und gleich die Druckdateien an die Druckerei zu liefern. Filme werden nicht mehr hergestellt, sondern es erfolgt ein sogenannter Digitaldruck direkt aus den Druckdateien heraus. Damit wird es auch möglich, kleine, inhaltlich variable, bestimmten Kundenwünschen entsprechende Auflagen auf Anforderung des Verlages zu drucken (book on demand). Produktion: Häufig ist der gesamte Produktionsprozess für bestimmte Produkte voll automatisiert. Computerintegrierte Fertigung (CIM, computer-integrated manufacturing): – Das Produkt (z. B. ein Geräteteil, ein Werkzeug oder ein Mikroprozessor) wird schon mittels CAD-Systemen entworfen. CAD steht für computer-aided design (computerunterstütztes Entwerfen). Der Konstrukteur verwendet dabei Tastatur, Maus und Lichtgriffel, Grafik- und Rechenprogramme. Als Zeichenbrett dienen ihm Bildschirm und Plotter. – Oft werden die Zeichnungen durch ein Computerprogramm sofort in Steuerungsinformationen für Werkzeugmaschinen umgesetzt. Man nennt dies auch computerunterstützte Arbeitsvorbereitung (CAP, computer-aided production planning). – Durch Prozessrechner gesteuerte Werkzeugmaschinen (CNC-Maschinen, computerized numerical control) fertigen das Produkt. Diese Fertigung nennt man CAM (computer-aided manufacturing, computerunterstützte Fertigung). – Selbst die Qualitätskontrolle des fertigen Produkts, z. B. der Vergleich von Soll- und Istmaßen, wird durch Computer durchgeführt (CAQ, computer-aided quality control).
Die Informatik als junge Wissenschaft
Handel: Nach der vorausgehenden Einführung von informationsverarbeitender Technik im Rechnungswesen und in der Lagerhaltung wurden in den 1980er-Jahren elektronische Erfassungssysteme direkt am Ort des Verkaufs – also an der Kasse – installiert. Diese verkaufsnahe Datenerfassung durch Kassensysteme führte nach der Einführung der Selbstbedienung zu einer „zweiten Revolution“ im Handel. Man nennt diese Systeme auch POS-Systeme. Auf den Waren sind Etiketten aufgeklebt, auf denen der sogenannte EAN-Code aufgedruckt ist. Der EAN-Code erlaubt eine international einheitliche Warencodierung durch den Hersteller. Selbst dieses Buch ist auf der Rückseite mit einem EAN-Code versehen, in dem das Herstellungsland und die ISBN-Nummer des Titels verschlüsselt wurden, woraus das Kassensystem des Buchhändlers den Verlag und den konkreten Titel erkennen kann. Der Kunde entnimmt die Ware dem Regal und bringt sie zur Kasse. Hier wird mit einem automatischen Lesegerät (Barcode-Leser, Strichcode-Leser) der EAN-Code erfasst und innerhalb kurzer Zeit vom Computer der betriebsinterne Preis der Ware abgerufen. Die Erstellung des Kassenbons erfolgt so sehr schnell. Das Kassensystem erledigt aber auch alle anderen routinemäßigen Vorgänge eines Handelsbetriebes wie Bestandsveränderungen und das Auslösen von Bestellungen. Auch können Preise je nach Marktlage relativ schnell geändert werden, wobei der Kunde sicher sein kann, dass der aufgedruckte Preis mit dem durch den EAN-Code individuell festgelegten Preis der Ware übereinstimmt. Ansonsten kann er reklamieren: Es gilt immer der für den Kunden ersichtliche Preis. Freizeit: • Das Fernsehgerät wächst mittlerweile mit Telefon und Computer zu einem individuellen Wünschen gerecht werdenden Informations-, Auskunfts- und Kommunikationssystem zusammen (Bildschirmtext, digitales Fernsehen). • Computerspiele sind eine beliebte Freizeitbeschäftigung. • Preiswerte elektronische Tasteninstrumente (Keyboards) erzeugen die unterschiedlichsten Klangbilder und Rhythmen. Melodien können gespeichert und am Computer bearbeitet werden. Komponieren wird zur kreativen Beschäftigung für jeden. Bank- und Versicherungswesen: • Der Einsatz von Tabellenkalkulationsprogrammen hat schon die Kundenberatung vereinfacht. Geldanlagen und Versicherungen können den Kundenwünschen entsprechend kalkuliert und ausgewählt werden. • Der gesamte Zahlungsverkehr wird mittlerweile elektronisch abgewickelt: Lohn- oder Gehaltsüberweisungen; Abbuchung fester monatlicher Zahlungen (Miete, Energiekosten, Telefongebühren usw.) auf Kundenwunsch; Geld abheben am Automaten; bargeldloser Einkauf mit Chipkarte. • Das Führen der Bankgeschäfte von zu Hause aus (Homebanking) ist über das Internet möglich.
POS: Abkürzung für „point of sale“ („Ort des Verkaufs“) EAN-Code: Abkürzung für „Europäische ArtikelNummerierung“
15
Berufsbilder
Die Ausbildung auf dem Gebiet der Informatik erfolgte bis 1997 ausschließlich an Hoch- und Fachschulen auf solchen Gebieten wie Allgemeine Informatik, Wirtschaftsinformatik oder Technische Informatik – meist mit einem akademischen Abschluss. Viele Informatikberufe setzen heute keinen Hochschulabschluss mehr voraus, so auch der folgende. Systeminformatiker/Systeminformatikerin Arbeitsgebiete: – Entwicklung, Implementierung und Instandhaltung industrieller Informatiksysteme – Typische Einsatzfelder sind Automatisierungssys teme, Signal- und Sicherheitssysteme, Informations- und Kommunikationssysteme, funktechnische Systeme, eingebettete Systeme. Berufstätigkeiten: – Unterstützung bei der Entwicklung und Realisierung von Lösungen für Kunden, der Analyse geforderter Funktionalitäten, der Konzipierung von Systemen und Softwarelösungen, der Auswahl von Datenübertragungsmedien und von Hardund Softwarekomponenten – Montage und Prüfung von Hardwarekomponenten – Installation und Konfiguration von Betriebssystemen und Netzwerken – Erstellen von Bedienoberflächen und Benutzer dialogen, Implementierung von Sicherheitsmechanismen – Erstellung und Anpassung von Softwarekomponenten, Programmierung von Schnittstellen – Integration von Hard- und Softwarekomponenten, Analyse von Problemen beim Zusammenführen von solchen Komponenten und Entwicklung von Lösungsvorschlägen – Erfassung und Auswertung von Messwerten – Test von Komponenten im System unter unterschiedlichen technischen Umfeldbedingungen, Integration von Systemen in vorhandene Gesamtsysteme – Support bei Störungen, Analyse von Fehlerursachen in den Systemen, Analyse von Fehlerursachen zur Qualitätssicherung, – Einsatz von Testsoftware und Diagnosesystemen, Prüfung der Signale an Schnittstellen, Durchführung netzwerkspezifischer Prüfungen; Beseitigung von Fehlern durch Softwareanpassung oder durch Tausch von Komponenten oder Baugruppen
Den Ausbildungsberuf des Systeminformatikers gibt es seit dem 1. August 2003. Die Ausbildungsdauer beträgt 3 Jahre und 6 Monate.
Typische weitere Berufe: • Softwareentwickler konzipieren neuer Softwaresysteme. • Programmierer sind für die praktische Umsetzung theoretisch entwickelter Systeme verantwortlich. • Systemintegratoren planen, installieren, adminis trieren, konfigurieren und pflegen komplexe Informatiksysteme und üben Beratertätigkeiten aus (Consulting).
I
IuK-Berufe (IT-Berufe) Um den wirtschaftlichen Strukturwandel zu unterstützen, um ein Ausbildungsplatzangebot mit interessanten beruflichen Entwicklungschancen zu sichern und um die Ausbildung anwendungsbezogener zu gestalten, bieten die Industrie- und Handelskammern (IHKn) Deutschlands seit dem 1. August 1997 an, wichtige Informations- und Kommunikationstechnische Berufe (IuK-Berufe, neuerdings meist IT-Berufe genannt) direkt in Unternehmen ausbilden zu lassen. Für alle Berufe gibt es gemeinsame Kernqualifikationen, die durch spezielle Fachqualifikationen bei den einzelnen Berufen ergänzt werden. Kernqualifikationen sind: – Wissen über den Ausbildungsbetrieb – Betriebswirtschaft und Arbeitsorganisation – IuK-Produkte – Exemplarische Programmierung – Konzeption von IuK-Systemen – Inbetriebnahme und Administration (Verwaltung) von IuK-Systemen – Bedienung von IuK-Systemen
IuK-Systemelektroniker/in Fachqualifikation: – IuK-Systemtechnik – Installieren und Inbetriebnahme von IuK-Systemen – Administration, Service und Support – Instandsetzung – Projektmanagement Berufstätigkeiten: – Planung und Installation von Informations- und Kommunikationssystemen und Netzwerken einschließlich deren Stromversorgung – Dienstleistungen und Unterstützung für interne und externe Kunden – Anpassung von Hardware und Software an Kundenwünsche – Störungsbeseitigung Fachinformatiker/in Anwendungsentwicklung Fachqualifikation: – Programmierung, Programmiermethoden, Programmierwerkzeuge (Tools) – Applikationsmanagement – Datenbanken – Produktbereitstellung – Anwendungs- und Kommunikationsdesign – Projektmanagement – Anwendungen in den Bereichen kaufmännische, technische oder multimediale Systeme Berufstätigkeiten: – Erarbeitung von Softwarelösungen für Kunden – Realisierung der Softwarelösungen – Software-Engineering (Programmierung) – Nutzung moderner Softwareentwicklungstools (-werkzeuge) – Nutzung der aktuellen IuK-Technologien bis hin zu Multimedia-Anwendungen Fachinformatiker/in (Richtung Systemintegration) Fachqualifikation: – Planung der IuK-Systeme – Installation, Operating, Service – Schulung – Projektmanagement – Fachaufgaben einzelner Gebiete wie z. B. Rechenzentren, Netzwerke, Client/Server, Mobilkommunikation Berufstätigkeiten: – Planung, Konfiguration und Installation komplexer vernetzter Systeme bei Kunden
– Arbeit mit modernen Experten- und Diagnose systemen – Beratung, Betreuung und Schulung von Kunden bei der Einführung neuer Systeme IuK-System-Kaufmann/frau Fachqualifikation: – Marketing und Vertrieb – Analyse kundenspezifischer IuK-Systeme – Konzeption kundenspezifischer IuK-Systeme – Angebote, Preise, Verträge – Fakturierung, Einkauf – Projektmanagement – Realisierung kundenspezifischer IuK-Systeme – Service und Support Berufstätigkeiten: – Information und Beratung von Kunden bei der Konzeption kompletter Lösungen der IuK-Technologie – Projektleitung in kaufmännischer, technischer und organisatorischer Hinsicht bei der Einführung oder Erweiterung einer IuK-Infrastruktur – Beratung der Kunden von der ersten Konzeption bis zur Übergabe des IuK-Produkts – Erstellung von Angeboten und Finanzierungslösungen für IuK-Technologien Informatikkaufmann/frau Fachqualifikation: – betrieblicher Leitungsprozess, Aufbau- und Ablauforganisation – Rechnungswesen – Controlling – IuK-Organisation und -Projektmanagement – Planung und Beschaffung von Informatiksystemen – Systembereitstellung und -gestaltung – Anwenderberatung und Support (Unterstützung) Berufstätigkeiten: – Analyse von Geschäftsprozessen der jeweiligen Branche mit Blick auf die Einsatzmöglichkeiten der IuK-Techniken – Vermittlung zwischen den Anforderungen der Fachabteilungen auf der einen und IuK-Realisierung auf der anderen Seite – Beratung von Fachabteilungen in Fragen der Einsetzbarkeit von IuK-Systemen – Einführung von Standardanwendungen – Mitarbeit in Entwicklungsprojekten – Koordination und Administration von IuK-Systemen
18
Grundbegriffe
1.2 Daten, Datentypen und Datenstrukturen 1.2.1 Informationen und Daten Allgemeiner Informationsbegriff Philosophisch betrachtet ist jede Struktur, die als Struktur eines Systems Funktionen gegenüber den Elementen des Systems und umfassenderen Systemen erfüllt, Information (Beispiele: Kristallgitter, Samenzelle, Buch). Man kann also jede Wechselwirkung als Informationsverarbeitung auffassen. Die mit jeder Struktur gegebene Information dient auch dem Menschen zur Erkenntnisgewinnung über seine Umwelt.
Information (umgangssprachlich: Unterrichtung, Mitteilung, Auskunft) ist eine allgemeine Eigenschaft der uns umgebenden Welt. Informationen werden sowohl in der belebten und unbelebten Natur als auch in der menschlichen Gesellschaft aufgenommen, gespeichert, verarbeitet und weitergegeben. Kristallgitter (Informationsverarbeitung in der unbelebten Natur): Gesteine bestehen aus verschiedenen Mineralen, das fast überall zu findende Granit z. B. aus Quarz (SiO2), Feldspat, Plagioklas und anderen chemischen Verbindungen. Die meisten Minerale kris tallisieren in immer gleicher Form aus, die dann besonders schön zu erkennen ist, wenn ideale Kristallisationsbedingungen vorhanden waren. Die dargestellten Säulen mit zugespitzten Enden sind Bergkristall, eine Ausbildungsweise von Quarz. Die Atomanordnung von Quarz unterliegt bestimmten Gesetzmäßigkeiten. Bei der Anlagerung von weiteren Silizium- oder Sauerstoffatomen an den Kristall werden diese Informationen weitergegeben, die Struktur des Minerals entwickelt sich. DNS (Informationsverarbeitung in der belebten Natur): Wie entsteht aus einer Rose wieder eine Rose, aus einem Pferd wieder ein Pferd? Jedes Lebewesen ist aus einzelnen Zellen mit Zellkernen aufgebaut. Die genetischen Informationen, die die Entwicklung des Lebewesens steuern, sind in jedem Zellkern in der DNS (Desoxyribonukleinsäure) gespeichert. Ein Modell der DNS ist hier abgebildet. Die Anordnung (der Code) der organischen Basen Adenin (A), Thymin (T), Guanin (G) und Cytosin (C) in einzelnen Abschnitten der DNS (Gene) entscheiden über die Merkmale des Lebewesens. Die DNS kann sich in zwei Einzelstränge aufspalten, die Stränge werden mit komplementären Basen (z. B. A zu T) ergänzt. Es entstehen zwei identische „Tochterstränge“, die Information kann (bei Zellteilung) weitergegeben werden.
Daten, Datentypen und Datenstrukturen
Buch (Informationsverarbeitung in der menschlichen Gesellschaft): Der Mensch gibt Informationen insbesondere über die Sprache weiter. Mit Erfindung der Schrift konnten Informationen auf Tontafeln, Pergament- oder Lederrollen und in Büchern festgehalten werden. Durch die Erfindung des Buchdrucks mit beweglichen Lettern aus Metall durch Johann Gutenberg – das erste 1455 gedruckte Buch war eine Bibel – wurde die massenhafte Informationsverbreitung möglich. Davor wurden Bücher durch Mönche in Handarbeit kopiert. Anhand der Beispiele erkennt man Folgendes: Eigenschaften von Information – Information ist immer an einen stofflich(-energetischen) Träger gebunden. Kristallgitter (Atomgitter), DNS und Buch sind in den Beispielen die jeweiligen Informationsträger. – Information bewirkt etwas. Dabei sind 3 Fälle zu unterscheiden: • Information strukturiert ein System (Kristallgitter; Schaffung von Hardware in der Technik; Entwicklung von der Eizelle bis zum Lebewesen, ...) • Information steuert das Verhalten eines Systems (Reizablauf im menschlichen Körper; Nachrichtenübertragung, ...) • Information steuert über ein System Information (Programme in einem Computer; biologische Programme in Form von Reflexen, Instinkten, Emotionen, ...) – Information lässt sich beliebig vervielfältigen (das Vorhandensein von Informationsträgern vorausgesetzt).
Stoff (Materie, von engl. „matter“), Energie und Information sind die drei wichtigsten Grundbegriffe der Natur- und Ingenieurwissenschaften. Auch für die Informatik als Wissenschaft von der automatischen Verarbeitung von Informationen ist dieser Begriff von zentraler Bedeutung, obwohl er bisher kaum präzisiert worden ist, selbst obige philosophische Betrachtungen sind eine Theorie. Um den Begriff „Information“ für die Rechentechnik handhabbarer zu machen, ist es sinnvoll, den Begriff „Nachricht“ einzuführen. Nachrichten, Informationen, Daten Informationen werden mit Zeichen oder Signalen übertragen. Eine Zeichenkette ist eine Folge von Elementen (Buchstaben, Zahlen, Symbole) eines Alphabets. Ein Signal ist eine durch Messgeräte erfassbare physikalische Veränderung (ein Ton, ein elektrischer Impuls, ein Lichtblitz, ...). Signale dienen zur Darstellung von Zeichen. Eine Nachricht ist eine endliche Zeichenkette oder eine endliche Folge von Signalen, die von einem Sender (Quelle) über einen Kanal (der störanfällig sein kann) an einen Empfänger (Senke) übermittelt wird.
19
20
Grundbegriffe
Bei der Informationsübertragung müssen meist feste Regeln eingehalten werden: Ein Satz in deutscher Sprache sollte z. B. syntaktisch korrekt sein; ein Brief sollte im Kopf die Adresse des Absenders enthalten usw. Die Nachricht besitzt für den Empfänger zunächst keine Bedeutung, erst durch ihre Verarbeitung, Interpretation oder Bewertung erhält die Nachricht einen Sinn. Die Bedeutung einer Nachricht für den Empfänger (die einen Sachverhalt ausdrückt, einem Zweck dient oder eine Aktion auslöst) wird umgangssprachlich als Information bezeichnet. Interessant ist die Frage, wie man möglichst viel Information in möglichst kurzen Nachrichten übermitteln kann. Dieses Problem hat der amerikanische Mathematiker Claude E. Shannon 1948 in seiner Informationstheorie beschrieben und ein Maß für den mittleren Informationsgehalt einer Nachricht definiert. Die Einheit lautet bit. Die Einheit bit wird hier klein geschrieben, im Unterschied zu Bit (als kleinste Einheit der Datendarstellung). Der Begriff Informationsgehalt ist in der Informatik dort von Interesse, wo Nachrichten komprimiert oder ver- und entschlüsselt werden.
B
Eine Nachricht wird also durch (menschliche) Interpretation oder durch die Art und Weise wie sie algorithmisch verarbeitet (entschlüsselt oder gespeichert) wird zur Information. Auf der Datenbasis einer medizinischen Untersuchung (Blutbild, EKG, ...) kann ein Arzt (oder auch ein Expertensystem, ein Programm, welches medizinische Daten auswerten kann) möglicherweise eine Diagnose für einen Patienten stellen, eine Person ohne medizinische Bildung nicht. Die Informatik beschäftigt sich ausschließlich mit Informationen, die so dargestellt sind, dass sie maschinell erfasst, aufbereitet, ausgewertet, übertragen, gespeichert und zur Nutzung weitergegeben werden können. Automatisch bzw. elektronisch verarbeitbare Informationen fasst man mit dem Begriff Daten (Einzahl: Datum). Daten umfassen eine Zeichenfolge (meist bezeichnet als „Nachricht“) zusammen mit ihrer Bedeutung für den Empfänger. Die Zeichenfolge muss eindeutig über einem vorgegebenen Zeichenvorrat nach festgelegten Regeln aufgebaut sein. Für die Bearbeitung mit dem Computer werden die einzelnen Zeichen binär codiert, d. h. mittels zweier Ziffern verschlüsselt, die zwei Zustände (z. B. Strom fließt / fließt nicht) repräsentieren. Dualsystem Der Computer kann nur mit zwei möglichen Zuständen „rechnen“ – Strom fließt nicht / Strom fließt; Relais nicht angezogen / Relais angezogen; Schalter geöffnet / Schalter geschlossen usw. –, wofür man die Ziffern 0/1 (seltener 0/L oder in der Technik L für low / H für high) verwendet. Durch Annahme dieser Zustände in technischen Schaltungen können Rechenoperationen realisiert werden.
Die kleinste Einheit der Datendarstellung, die zwei mögliche Werte (0/1) annehmen kann, nennt man Bit.
Daten, Datentypen und Datenstrukturen
Mit einem Bit kann man 2 Zahlen zum Rechnen darstellen („Dualsys tem“). Um mehr Zahlen darstellen zu können, schreibt man „Bitmuster“ nieder, wobei die Position der einzelnen Ziffern – wie im Dezimalsystem – von entscheidender Bedeutung ist. 10011 = 1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 1 · 20 = 1 · 16 + 0 · 8 + 0 · 4 + 1 · 2 + 1 · 1 = 16 + 2 + 1 = 19 Also: 10011 im Dualsystem dargestellt bedeutet die Zahl 19 im Dezimalsystem, kurz 10011[2] = 19[10].
U
1111[2] = 1 · 23 + 1 · 22 + 1 · 21 + 1 · 20 = 23 + 22 + 21 + 20 = 8 + 4 + 2 + 1 = 15 10000[2] = 1 · 24 + 0 · 23 + 0 · 22 + 0 · 21 + 0 · 20 = 24 = 16 6[10] = 4 + 2 = 1 · 22 + 1 · 21 + 0 · 20 = 110[2] 31[10] = 16 + 8 + 4 + 2 + 1 = 1 · 24 + 1 · 23 + 1 · 22 + 1 · 21 + 1 · 20 = 11111[2] 32[10] = 1 · 25 + 0 · 24 + 0 · 23 + 0 · 22 + 0 · 21 + 0 · 20 = 100000[2] Zusammenfassend sei folgende Übersicht zum Dualsystem gegeben: Dualsystem Grundziffern: Stellenwert: Darstellungsform:
0, 1 Potenzen der Zahl 2 bmbm–1...b0,b–1b–2...b–n (b steht für die Grundziffern, m und n sind natürliche Zahlen)
Im Dualsystem kann man Addieren und Multiplizieren wie im Dezimalsystem. Grundaufgaben der Addition sind: 0 + 0 = 0, 0 + 1 = 1 + 0 = 1, 1 + 1 = 10. Das Rechnen ist einfacher, man muss sich für die Multiplikation beispielsweise nur 4 Grundaufgaben merken (statt 100 wie im Dezimalsystem), die Zahlen werden aber länger. Zum Rechnen mit dem Computer müsste man nur die Ziffern 0 bis 9 des Dezimalsystems sowie einige Operationszeichen wie „+“ oder „–“ als Bitmuster darstellen. Aber man will mit dem Computer auch schreiben. Insbesondere benötigt man dazu Buchstaben (groß/klein ≈ 60 Zeichen), (Ziffern = 10 Zeichen), Sonderzeichen (Operations-, Relations-, Satz-, Steuerzeichen ≈ 40 Zeichen; auf der Tastatur erkennbar), Grafikzeichen (‡, —, …) und Schriftzeichen aus anderen Sprachen (ë, É, …) Man kommt mit 256 = 28 Bitmustern aus. Die Bitmusterreihen haben die Länge 8. Die Zusammenfassung von 8 Bit zu einem Zeichen nennt man Byte. Dies ist die kleinste vom Computer akzeptierte Dateneinheit. Mit einem Byte können 28 = 256 verschiedene Zeichen dargestellt werden.
Oft spricht man im Zusammenhang mit dem Dualsystem von Binärcodierung. Binärcodierung heißt aber nur, dass zwei Zeichen zur Verschlüsselung genutzt werden, über deren Position in einer Zeichen- oder Signalkette wird nichts ausgesagt. Im Dualsystem werden ebenfalls zwei Zeichen zur Codierung genutzt, entscheidend ist aber hier deren Position, deren Stellung in einer Zeichenkette.
I
21
22
Grundbegriffe
U K steht für „Kilo“, M für „Mega“, G für „Giga“ und T für „Tera“. „Mega“ ist hier nicht exakt 1 Million. Aber die Abweichungen sind so gering, dass man überschlagsmäßig damit arbeiten kann.
Byte ist auch die Maßeinheit für die Kapazität von Speichermedien wie Disketten oder Festplatten. U 1 KByte (Abk. KB) = 210 Byte = 1 024 Byte (Zeichen) U ≈ 1 000 Byte 1 MByte (Abk. MB) = 220 Byte = 1 048 576 Byte (Zeichen) ≈ 1 Million Byte 1 GByte (Abk. GB) = 230 Byte = 1 073 741 824 Byte (Zeichen) ≈ 1 Milliarde Byte 1 TByte (Abk. TB) = 240 Byte = 1 099 511 627 776 Byte (Zeichen) ≈ 1 Billion Byte
U
Mit Word bezeichnet man eine Bitfolge der Länge 16. Hiermit können 16-stellige Dualzahlen codiert werden, nämlich die Zahlen von 0[10] = 0000000000000000[2] bis 65535[10] = 1111111111111111[2].
Hexadezimalsystem Die Bitmuster sind nicht sonderlich gedächtnisfreundlich und nehmen außerdem relativ viel Platz in Anspruch. Deshalb werden die Bytes (Zeichen, Bitmuster der Länge 8) oft durch eine Kurzschreibweise angegeben, die auf einem anderen Positionssystem, dem Hexadezimalsystem basiert. Hexadezimalsystem Grundziffern: Stellenwert: Darstellungsform:
U
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Potenzen der Zahl 16 hmhm–1...h0,h–1h–2...h–n (h steht für die Grundziffern, m und n sind natürliche Zahlen)
53E[16] = 5 · 162 + 3 · 161 + 14 · 160 = 5 · 256 + 3 · 16 + 14 · 1 = 1280 + 48 + 14 = 1342[10] Also: 53E im Hexadezimalsystem dargestellt bedeutet die Zahl 1342 im Dezimalsystem, kurz 53E[16] = 1342[10]. Ein Byte wird in zwei Tetraden (Halbbytes) zu je 4 Bits unterteilt. Diese Tetraden können wiederum jeweils durch genau eine Hexadezimalziffer (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) codiert werden, was die Umwandlung von einem Positionssystem in das andere vereinfacht.
U
26[10] = 0001 1010[2] = 1A[16] 98[10] = 0110 0010[2] = 62[16] 129[10] = 1000 0001[2] = 81[16]
Daten, Datentypen und Datenstrukturen
Im Folgenden wird ein (unvollständiger) Überblick über die Dezimalzahlen (dez), Dualzahlen (Bitmuster, b) und Hexadezimalzahlen (HEXCode, h) von 0 bis 255 gegeben: dez
b
h
dez
b
h
dez
b
h
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001 0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 0000 1111
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0001 0000 0001 0001 0001 0010 0001 0011 0001 0100 0001 0101 0001 0110 0001 0111 0001 1000 0001 1001 0001 1010 0001 1011 0001 1100 0001 1101 0001 1110 0001 1111
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
32 33 34 55 56 99 100 101 126 127 128 251 252 253 254 255
0010 0000 0010 0001 0010 0010 0011 0111 0011 1000 0110 0011 0110 0100 0110 0101 0111 1110 0111 1111 1000 0000 1111 1011 1111 1100 1111 1101 1111 1110 1111 1111
20 21 22 37 38 63 64 65 7E 7F 80 FB FC FD FE FF
ASCII-Zeichensatz Mit einem Byte sind also genau 256 Zeichen darstellbar. Zur Zuordnung der 256 Bitmuster (Bytes) zu jeweils genau einem Zeichen nutzt man heute meist den amerikanischen Standard-Code für den Informationsaustausch, den ASCII. Dem Byte dem Byte dem Byte dem Byte dem Byte dem Byte
01000001 01000011 01100001 01100011 00100000 00111110
entspricht der Großbuchstabe A, entspricht der Großbuchstabe C. entspricht der Kleinbuchstabe a, entspricht der Kleinbuchstabe c, entspricht das Leerzeichen, entspricht die Tilde (~).
Ursprünglich war der ASCII-Zeichensatz ein 7-Bit-Code, es konnten also nur 128 Zeichen dargestellt werden, das achte Bit diente als Prüfbit. Dieser „einfache“ ASCII-Zeichensatz ist auf allen Computern, in allen Ländern und in allen Programmen gleich. Außer den ersten 32 und dem letzten Zeichen, die für Steuerungsaufgaben reserviert sind, sind alle Zeichen auf der Tastatur dargestellt. Darüber hinaus kann man die Zeichen unter MS-DOS, in Programmierumgebungen und in Anwendungsprogrammen folgendermaßen abrufen: Man gibt den Dezimalwert (dez) auf dem Ziffernblock der Tastatur bei gedrückter -Taste ein und erhält jeweils das ASCII-Zeichen (asc), welches in der folgenden Tabelle dargestellt ist:
ASCII (gesprochen: aski) ist die Abkürzung für American Standard Code for Information Interchange.
23
24
Grundbegriffe
dez asc 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
! „ # $ % & ’ ( ) * + , . /
dez asc 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
dez asc 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
@ A B C D E F G H I J K L M N O
dez asc 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
P Q R S T U V W X Y Z [ \ ] ^ _
dez asc
dez asc
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del
‘ a b c d e f g h i j k l m n o
Das Zeichen 32 ist das Leerzeichen (Wortabstand), nicht zu verwechseln mit dem Steuerzeichen nul, welches das „leere Zeichen“ (Speicherplatz für „nichts“) ist. Die Steuerzeichen bedeuten Folgendes: dez asc 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
nul soh stx etx eot enq ack bel bs ht lf vt ff cr so si dle dc1 dc2 dc3 dc4 nak syn etb
Bedeutung der Abkürzung
Übersetzung, Bedeutung
null character start of heading start of text end of text end of transmission enquiry acknowledge bell backspace horizontal tabulation line feed vertical tabulation form feed carriage return shift-out shift-in data link escape device control 1 device control 2 device control 3 device control 4 negative acknowledge synchronous idle end of transmission block
leeres Zeichen, Nil, Null Anfang des Kopfes Anfang des Textes Ende des Textes Ende der Übertragung Stationsaufforderung positive Rückmeldung Klingel Rückwärtsschritt Horizontal-Tabulator Zeilenvorschub Vertikal-Tabulator Formularvorschub Wagenrücklauf Dauerumschaltung Rückschaltung Datenübertragungsumschaltung Gerätesteuerung 1 Gerätesteuerung 2 Gerätesteuerung 3 Gerätesteuerung 4 negative Rückmeldung Synchronisierung Ende Datenübertragungsblock
Daten, Datentypen und Datenstrukturen
dez asc
Bedeutung der Abkürzung
Übersetzung, Bedeutung ungültig, Abbruch Ende der Aufzeichnung Substitution (Austausch eines Zeichens) Umschaltung Hauptgruppen-Trennung Gruppen-Trennung Untergruppen-Trennung Teilgruppen-Trennung Löschen
24 25 26
can em sub
cancel end of medium substitute character
27 28 29 30 31 127
esc fs gs rs us del
escape file separator group separator record separator unit separator delete
ANSI-Zeichensatz Der ASCII-Zeichensatz wurde vom American National Standards Institute (ANSI), dem nationalen Normenausschuss der USA – vergleichbar mit dem Deutschen Institut für Normierung (DIN) – festgelegt. Auch den erweiterten ASCII-Zeichensatz – also zusätzlich die Zeichen für die Plätze von 128 bis 255 – hat dieses Institut festgelegt, man nennt ihn deshalb oft ANSI-Zeichensatz. Der ANSI-Zeichensatz weicht in den verschiedenen Ländern voneinander ab. Dies hängt damit zusammen, dass die verschiedenen Sprachen auch unterschiedliche zusätzliche Schriftzeichen haben. Deshalb gibt es vom ANSI normierte Code-Tabellen für die einzelnen Länder. In Deutschland sind 2 Tabellen gebräuchlich: Code-Tabelle 437 und der internationale Standard, die Code-Tabelle 850. Die Zeichen 128 bis 255 sind im Allgemeinen nicht auf der Tastatur dargestellt. Man kann sie aber unter dem Betriebssystem MS-DOS, in Programmierumgebungen und in Anwendungsprogrammen (im Allgemeinen auch unter der Benutzeroberfläche Windows) ebenfalls dadurch erhalten, dass man den Dezimalwert (dez) auf dem Ziffernblock der Tastatur bei gedrückter -Taste eingibt und dann die -Taste loslässt. Windows hat zusätzlich eine eigene Code-Tabelle. Die entsprechenden Zeichen erhält man dadurch, dass man vor dem Dezimalwert außerdem eine 0 eingibt. Die folgende Übersicht zeigt für die Zeichen 128 bis 255 (dez) die CodeTabelle 850 und die Codierung unter Windows (win). Freie Stellen bedeuten hier meist Steuerzeichen. dez 850 win
128 129 130 131
Ç ü é â
€ ‚ ƒ
dez 850 win
dez 850 win
dez 850 win
132 133 134 135 136 137
138 139 140 141 142 143
144 145 146 147 148 149
ä à å ç ê ë
„ … † ‡ ˆ ‰
è ï î ì Ä Å
Š ‹ Œ Ž
É æ Æ ô ö ò
‘ ’ “ ” •
25
26
Grundbegriffe
Damit nicht genug – wem diese Zeichen nicht ausreichen, der hat außerdem die Möglichkeit, in Anwendungsprogrammen mit Schriftfonts zu arbeiten, die spezielle Bedürfnisse befriedigen (Schaltzeichen, kartografische Symbole, mathematische Zeichen usw.). Dabei muss man die entsprechenden Zeichen durch Zuweisung der Schriftart formatieren.
I
dez 850 win
dez 850 win
dez 850 win
dez 850 win
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
û ù ÿ Ö Ü ø £ Ø × ƒ á í ó ú ñ Ñ ª º ¿ ® ¬ ½ ¼ ¡ « » ░ ▒ ▓ │
– — ˜ ™ š › œ ž Ÿ ° ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³
┤ Á Â À © ╣ ║ ╗ ╝ ¢ ¥ ┐ └ ┴ ┬ ├ ─ ┼ ã Ã ╚ ╔ ╩ ╦ ╠ ═ ╬ ¤ ð Ð
´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ
Ê Ë È i Í Î Ï ┘ ┌ █ ▄ ¦ Ì ▀ Ó ß Ô Ò õ Õ µ þ Þ Ú Û Ù ý Ý ¯ ´
Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï
± _ ¾ ¶ § ÷ ¸ ° ¨ · ¹ ³ ² ■
ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
Unicode und UCS-Code
Diakritische Zeichen markieren eine besondere Aussprache. „Normale Zeichen“ werden dabei durch Diakritika ergänzt. Solche Diakritika sind sind z. B. der Akut (é), der Gravis (è), der Zirkumflex (ê), ferner die Cedille (ç), das Trema (ë), Häkchen (š), Punkt (å), Querstrich (Ð) und die Tilde (ñ).
Für den Informationsaustausch im Internet wurde 1996 ein 16-Bit-Code mit dem Namen Unicode („ein einziger Code“, „Einheitsschlüssel“) vereinbart. Mit 16 Bit können 216 = 65 536 verschiedene Zeichen (einschließlich der diakritischen Zeichen) dargestellt werden. Damit wird es möglich, wesentliche Zeichen aller wichtigen Sprachen darzustellen. Die ersten 8 Bit dienen zur Auswahl einer Sprache, die nächsten 8 Bit beschreiben die Zeichen der ausgewählten Sprache. In den ersten 256 Zeichen ist der ASCII-Code enthalten und damit auch das lateinische Alphabet. Neuere Versionen der Betriebssysteme Windows, Linux oder Mac OS unterstützen Unicode. Zur Verbreitung von Unicode trug auch bei, dass die Web-Browser Netscape Navigator (ab Version 4) und Microsoft Internet Explorer (ab Version 4) Unicode-Dokumente anzeigen können. Der Unicode-Standard wird von einem Konsortium weiterentwickelt, dem fast 100 Firmen und Institutionen in der Daten verarbeitenden Industrie und Informationstechnologie angehören.
Daten, Datentypen und Datenstrukturen
Der Unicode ist als erste Ebene im UCS-Code (universal character set, „universelle Zeichenmenge“) enthalten. Das ist ein 32-Bit-Code, mit dem alle jemals auf der Erde verwendeten Zeichen dargestellt werden sollen.
1.2.2 Datentypen Sowohl für das Programmieren als auch für die Arbeit mit Anwendungsprogrammen ist es von Bedeutung, welcher Art die Daten sind, die verarbeitet werden sollen. Soll mit ihnen gerechnet werden, sollen Texte bearbeitet werden, sollen logische Operationen vorgenommen werden? Hierzu werden jeweils unterschiedliche Datentypen genutzt – auch um den Speicherbedarf möglichst gering zu halten. Der Begriff Datentyp beschreibt den Wertebereich von Daten, in dem ganz bestimmte Operationen gelten, die man auf alle Daten dieses Typs anwenden kann.
I
Datentyp (Name)
Bedeutung
Beispiele für mögliche Operationen, Relationen und Funktionen
integer
ganze Zahlen; i. Allg. von –215 bis 215 – 1, also von –32 768 bis 32 767
+ - × div mod abs
–101; –1; 0; 5; 101; 3000; 10 006
Addition Subtraktion Multiplikation ganzzahlige Division Rest bei der ganzzahligen Division Absolutbetrag
Vergleichsrelationen wie , =, (≠)
I
long- integer
ganze Zahlen; i. Allg. von –230 bis 230 – 1, also von –1 073 741 824 bis 1 073 741 823
Operationen, Relationen und Funktionen wie bei integer
real
rationale Näherungswerte für reelle Zahlen (vgl. auch den Text am Ende der Tabelle)
+ - × /
I
boolean (logical)
–101.0; 0.0; 5.0; 3000.0; –26.53; 0.01; 102.5; 22.5E20 (22,5 · 1020)
die beiden logischen Werte „falsch“ (false) und „wahr“ (true)
Addition Subtraktion Multiplikation Division
Vergleichsrelationen; verschiedene mathematische Funktionen (z. B. Logarithmus, Sinus) NOT nicht AND und OR oder
Beim Programmieren, aber auch bei der Arbeit mit Anwendungssystemen wie Tabellenkalkulations- oder Datenbankprogrammen sollte man immer zuerst überlegen, welche Datentypen man am sinnvollsten einsetzt, überprüfen, ob in der gewählten Programmiersprache oder im genutzten Anwendungsprogramm die entsprechenden Datentypen auch vorhanden sind und – wenn nicht – gegebenenfalls eine andere Programmiersprache oder ein anderes Anwendungsprogramm wählen.
27
28
Grundbegriffe
I
Datentyp (Name)
Bedeutung
Beispiele für mögliche Operationen, Relationen und Funktionen
char (charac- ter)
Zeichen (Ziffern, Buchstaben, Sonderzeichen, Grafiksymbole)
ord chr
string
5, 8, B, a, Y, l, –, º, é, Æ, e, ∫
Zeichenkette (hier liegt eigentlich eine Datenstruktur vor)
OTTO, A1, Otto, 4321+, 12623 Berlin
ordnet dem Zeichenwert die entsprechende ASCIICodezahl zu ordnet der ASCII-Codezahl das entsprechende Zeichen zu
verschiedene Funktionen zur Aneinanderreihung, Wiederholung, Aussonderung, Suche und Längenbestimmung sowie Vergleichsrelationen bei strings
Da der Computer nur endlich lange Zeichenfolgen verarbeiten kann, müssen reelle Zahlen (Typ real) als rationale Näherungswerte dargestellt werden. Erfolgt die Zahlendarstellung im Dezimalsystem z. B. auf 6 Dezimalen genau, so liegen im Intervall 0 ≤ x < 1 eine Million Zahlen, im Intervall 999998 ≤ x < 999999 nur eine Zahl, nämlich 999998. Die Zahlen sind also recht unterschiedlich verteilt und es gelten in der Menge der Computerzahlen nicht die üblichen Rechengesetze (Assoziativgesetz, Distributivgesetz). Dies kann in Einzelfällen zu großen Rechenungenauigkeiten oder falschen Ergebnissen führen.
In imperativen Programmiersprachen wird für „Datenstruktur“ auch „Datentyp“ genutzt.
I
1.2.3 Datenstrukturen Der Begriff Datenstruktur beschreibt die Zusammenfassung gleicher oder unterschiedlicher Datentypen nach bestimmten Konstruktionsprinzipien.
Daten- struktur
Bedeutung
Beispiele
Feld (array)
– Namensliste, Folge – Zusammenfassung von Daten gleichen Typs • in einer Reihe (eindimensionales Feld) von Zahlen • in Reihen und Spalten (zweidimensionales Feld) – Koeffizienten eines Gleichungssystems – Die einzelnen Daten werden als „Feldelemente“ (als Matrix dargestellt) bezeichnet. Jedes Feldelement ist durch Ordnungs– Stichprobe zahlen (Indizes) eindeutig festgelegt. Bei zweidimensionalen Feldern besitzt jedes Element zwei Indizes, bei dreidimensionalen Felder drei usw.
I
I
Daten, Datentypen und Datenstrukturen
Daten- struktur
Bedeutung
Beispiele
Verbund (record)
– Zusammenstellung von Daten unterschiedlichen – Zusammenfassung von WarenbezeichTyps nungen und Zahlen – Bei dieser Datenstruktur spricht man auch von einem Datensatz (z. B. Angaben zu einer Person), zu einer Preisliste der aus einzelnen Datenfeldern (z. B. Name, Straße, – Personalien PLZ, Wohnort) besteht. (Name, Adresse)
File
– Zusammenfassung von Daten gleicher Struktur. – Namensliste Man kann in einem File jede in der Programmier- – Zahlenfolge sprache vereinbarte Datenstruktur speichern, nur – Messreihe Files selbst nicht. – Für nicht zu große Files werden die Daten sequenziell (aufeinanderfolgend) abgelegt, für große Files sind andere Organisationsformen effektiver. – Ein File kann ständig erweitert werden (dynamische Datenstruktur) und wird unter einem Namen auf Datenträgern gespeichert.
Baum
– Die betrachteten Daten stehen nicht auf gleichem – Generationsfolge einer Familie Niveau, das heißt, es gibt über- und untergeordnete – baumartige Einteilung Daten. der Tierwelt (Stamm Jedes Datum auf einem gegebenen Niveau ist genau einem Datum von unmittelbar höherem Niveau / Klasse / Ordnung / unterstellt. Familie / Gattung / Art) Jedes Datum kann auf mehrere Daten des nächst- – Notation von aufniedrigeren Niveaus Bezug nehmen. einanderfolgenden Es gibt genau ein Datum, dass keinen Vorgänger möglichen Antworhat. ten zum Lösen eines – Die einzelnen Daten werden hier auch als KnoProblems, die nur „ja“ ten betrachtet, von denen verschiedene Verzweioder „nein“ lauten gungen (Kanten) zu den anderen Daten bestehen können (Binärbaum) Wurzel (root) A B
D
Knoten C
E
Endknoten (Blatt)
F
G
H
Kante (Zweig)
I
J
29
30
Grundbegriffe
1.3
Algorithmen und Programme
1.3.1 Algorithmen
I
Grundlage für die Entwicklung und Nutzung informationsverarbeitender Technik sind Algorithmen. Algorithmusbegriff
B
Der Name Algorithmus geht auf den Namen des arabischen Mathematikers Muhammad ibn Musa Al-Chwarizmi (787 – um 850) zurück, der in seinem Werk „Hisab al’schabr wal mukábala“ („Das Buch vom Hinüberschaffen und vom Zusammenfassen“) viele Rechenverfahren beschrieben hat.
I
I
Ein Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht, mit der man eine Vielzahl gleichartiger Aufgaben lösen kann. Ein Algorithmus gibt an, wie Eingabegrößen schrittweise in Ausgabegrößen umgewandelt werden. • Gebrauchsanweisungen, Bastelanleitungen, Spielregeln, Gewinnstrategien, mathematische Lösungsverfahren, ... • Die Schrittfolgen beim Arbeiten mit einem Taschenrechner sind auch Algorithmen. Man gibt diese Schritt- oder Tastenfolgen durch sogenannte Rechenablaufpläne an. Ein bekanntes Beispiel für einen „mathematischen“ Algorithmus ist der euklidische Algorithmus zur Ermittlung des größten gemeinsamen Teilers (ggT) zweier Zahlen: – Man teilt die größere durch die kleinere Zahl. – Geht die Division auf, ist der Divisor der ggT. – Geht die Division nicht auf, bleibt ein Rest. Dieser ist der neue Divisor, der alte wird zum Dividenden. Nun setzt man das Verfahren fort. Nach endlich vielen Schritten erhält man den ggT. Ist der letzte Rest 1, dann sind die Ausgangszahlen teilerfremd. Es ist der ggT von 544 und 391 gesucht. 544 : 391 = 1; Rest 153 391 : 153 = 2; Rest 85 153 : 85 = 1; Rest 68 85 : 68 = 1; Rest 17 Die Division geht auf, 68 : 17 = 4; Rest 0 17 ist der ggT von 544 und 391. Alle Rechenverfahren, insbesondere die schriftliche Addition, Subtraktion, Multiplikation oder Division, sind letztlich Algorithmen. Eigenschaften von Algorithmen Der obige Algorithmusbegriff ist keine exakte mathematische Definition, sondern er wurde mithilfe folgender Eigenschaften von Algorithmen beschrieben: Endlichkeit: Ein Algorithmus besteht aus endlich vielen Anweisungen (Verarbeitungsbefehlen bzw. Regeln) endlicher Länge.
Algorithmen und Programme
Eindeutigkeit: Mit jeder Anwendung ist auch die nächstfolgende festgelegt, d. h., die Reihenfolge der Abarbeitung der Anweisungen unterliegt nicht der Willkür des Ausführenden. (Man sagt auch: Algorithmen sind deterministisch). Das heißt, dass bei gleichen Bedingungen gleiche Eingabegrößen bei wiederholter Abarbeitung eines Algorithmus auf dieselben Ausgabegrößen abgebildet werden. (Man sagt auch: Algorithmen sind determiniert).
Ausführbarkeit: Jede einzelne Anweisung muss für den Ausführenden des Algorithmus (den „Prozessor“) verständlich und ausführbar sein. Ein Algorithmus ist also immer nur ein Algorithmus bezüglich eines Prozessors. Eine Beschreibung zum Lösen linearer Gleichungssysteme mithilfe des Einsetzungsverfahrens ist für viele Menschen ein Algorithmus, für einen Computer nur dann, wenn entsprechende Programme zur Formelmanipulation existieren. Für den Prozessor Computer wird man deshalb im Allgemeinen ein numerisches Verfahren benutzen und das Vorgehen nach dieser Lösung auch noch in einer ganz konkreten Programmiersprache formulieren müssen. Allgemeingültigkeit: Ein Algorithmus muss auf alle Aufgaben gleichen Typs (Aufgabenklasse) anwendbar sein und (bei richtiger Anwendung) stets zum gesuchten Resultat (zur Lösung bzw. zur Einsicht, dass die Aufgabe nicht lösbar ist) führen. Es gibt auch Eigenschaften, die für den Prozess gelten, den ein Algorithmus beschreibt: • Endlichkeit der Beschreibung bedeutet noch nicht, dass auch der beschriebene Prozess endlich sein muss (beispielsweise kommen verschiedene Verfahren zur Berechnung von Quadratwurzeln durch schrittweise Näherung für gewisse Eingabegrößen nie zum Ende). In der Praxis ist dies aber nicht sinnvoll und man fordert daher, dass der beschriebene Prozess nach endlich vielen Schritten (deren Anzahl nicht bekannt sein muss) abbricht, d. h. nach einer endlichen Zeitspanne zum Ende kommt (terminiert). Für das Beispiel (Berechnung von Quadratwurzeln) würde dies bedeuten, dass man die Genauigkeit festlegt, mit der evtl. auftretende irrationale Ausgabegrößen angenähert werden sollen. • Oft gibt es mehrere äquivalente Algorithmen (Algorithmen, die das Gleiche leisten – wenn auch auf unterschiedlichem Wege) zum Lösen ein und desselben Problems. Ein Algorithmus heißt effizient, wenn er ein vorgegebenes Problem in möglichst kurzer Laufzeit und/oder mit möglichst geringem Aufwand für den Prozessor löst.
Hat ein Algorithmus an gewissen Stellen mehrere Möglichkeiten der Fortsetzung, von denen der Prozessor nach Belieben eine auswählen kann, so heißt er nichtdeterministisch. Nichtdeterminis tische Algorithmen können durchaus determiniert sein. (Nichtdeterminis tische) Algorithmen, die bei gleichen Eingabegrößen und Startbedingungen unterschiedliche Ausgabegrößen liefern, heißen nichtdeterminiert. Man verlangt aber, dass solcherart Algorithmen mit sehr hoher Wahrscheinlichkeit das richtige Ergebnis liefern. Nichtdeterminierte Algorithmen gewinnen vor allem dort an Bedeutung, wo exakte (determinierte) Algorithmen zu aufwendig sind. Praktisch bedeutsam werden auch immer mehr sogenannte nichtsequenzielle Algorithmen, d. h. Algorithmen, bei denen einzelne Teile parallel bearbeitet werden (z. B. Auto fahren, Bereitstellung von Werten für Unteralgorithmen).
31
I
I
I
32
Grundbegriffe
1.3.2 Algorithmenstrukturen und Darstellungsformen Algorithmenstrukturen sind Bausteine, aus denen sich jeder Algorithmus zusammensetzen lässt. Man unterscheidet drei grundlegende Strukturen: • Folge von zwei oder mehreren Anweisungen, die hintereinander ausgeführt werden (auch A B Sequenz genannt) Auf Anweisung A folgt Anweisung B. • Auswahl von genau einer Anweisung oder B Folge aus mehreren Anweisungen oder FolA gen in Abhängigkeit von einer Bedingung C (auch Verzweigung genannt) Auf Anweisung A folgt in Abhängigkeit von einer Bedingung entweder Anweisung B oder Anweisung C. • Wiederholung (auch Zyklus oder SchleifenA1 A2 ... An struktur genannt) einer Anweisung oder Folge in Abhängigkeit von einer Bedingung Nach einer Reihe von Anweisungen folgt wieder die Anweisung A1.
Als spezielle Algorithmenstruktur kann man den Unteralgorithmus (die Prozedur) betrachten, der sich aus den anderen Strukturen zusammensetzt.
Algorithmen sollten möglichst knapp, aber präzise, für den Nutzer (den Ausführenden, den Prozessor) aufgeschrieben werden. Es existieren verschiedene Algorithmen-Notationsformen (Darstellungsformen): a) Beschreibung mithilfe der Umgangssprache: Ein Beispiel für die umgangssprachliche Beschreibung eines Algorithmus findet man auf S. 30 (euklidischer Algorithmus). Eine solche Darstellung ist wenig sinnvoll, wenn man an die Umsetzung in eine Programmiersprache und an den Prozessor Computer denkt. b) Verbale, aber formalisierte Beschreibung: Bestimmte, oft wiederkehrende Strukturelemente eines Algorithmus werden immer mit den gleichen Worten beschrieben. c) Programmablaufplan: Ein Programmablaufplan (Flussdiagramm) Anfang ist eine normierte grafische Darstellung von Algorithmen. Eingaben, Aktionen, Verzweigungen, Anfang und Ende des Algorithmus Eingabe: a, b werden durch grafische Symbole dargestellt, die durch Pfeile verbunden sind. d := a– b Für die Notation größerer Algorithmen sind Programmablaufpläne ungeeignet, da Darstellungsmittel für Datenbereiche und Schleifenstrukturen fehlen. Außerdem verführen Programmablaufpläne durch leichtes Einzeichnen unbedingter Sprünge (Verzweigungen) zu unübersichtlicher, schwer nachvollziehbarer, unstrukturierter Programmierung („Spaghettiprogrammierung“).
d< 0 nein
ja d := –d
Ausgabe: d Ende
Algorithmen und Programme
d) Struktogramm: Ein grafisches Darstellungsmittel für Algorithmen ist auch das Struktogramm (NassiEingabe: a, b Shneiderman-Diagramm). d := a – b Jede Aktion (jedes Strukturelement) eines Algorithmus wird durch einen Block dard Bool | Vor.: | Erg.: Genau dann wahr, wenn der Stack leer ist. OPERATIONEN top :: Stacks(Element) -> Element | Vor.: Der Stack ist nicht leer. | Erg.: Eine Kopie des obersten Elements des Stacks. pop :: Stacks(Element) -> Stacks(Element) | Vor.: Der Stack ist nicht leer. | Erg.: Der Stack ohne oberstes Element, alle Elemente sind unverändert. Die Operationen top und pop sind nicht voraussetzungslos: Der Anwender der Schnittstelle muss vor Verwendung der Funktionen Sorge tragen, dass der Stack nicht leer ist. Deshalb muss es in der Schnittstelle eine Funktion geben, mit der der Anwender das testen kann. Die anderen Funktionen sind voraussetzungslos. In imperativen Implementierungen kommt noch die Voraussetzung hinzu, dass die beteiligten Objekte initialisiert sein müssen. Die Spezifikation heißt prädikativ, weil Behauptungen aufgestellt werden. Vor Anwendung der Funktionen müssen bestimmte Gegebenheiten
50
Grundbegriffe
vorliegen. Das steht in den „Voraussetzungen“. Sind die Voraussetzungen bei der Anwendung der Funktion erfüllt, werden für die Ergebnisse (Effekte) nach Ausführung der Operation wieder Zusicherungen gemacht. Sind die Voraussetzungen bei der Ausführung nicht erfüllt, so ist das Ergebnis undefiniert. Die Implementierung darf in diesem Fall beliebig reagieren. Diese Technik kann man auch als eine Art Kontrakt (Vertrag) zwischen Anwender und Implementierer der Schnittstelle begreifen: die Verantwortlichkeiten sind eindeutig und widerspruchsfrei festgelegt. Sind in der Spezifikation der Operationen Voraussetzungen genannt, so müssen in der Schnittstelle Funktionen bzw. Prädikate vorhanden sein, die es dem Anwender gestatten, diese Voraussetzungen zu erfüllen bzw. zu überprüfen.
Abstrakte Datentypen algebraisch spezifiziert Die andere Methode zur Festlegung der Semantik der Operationen eines abstrakten Datentyps bedient sich algebraischer Gleichungen. Durch sie wird noch viel deutlicher, dass die Schnittstellenfunktionen nicht unabhängig voneinander erschaffen sind. Ihr Zusammenspiel definiert gerade die Bedeutung! Algebraische Spezifikation des ADT „Stacks“: SPEZIFIKATION MODELL: Folgen (x0, ..., xn-1) von Elementen, alle vom gleichen Typ. Die leere Folge () ist zugelassen, n ist nicht begrenzt. x0 heißt Top(-Element), xn-1 Boden des Stack. ABSTRAKTER DATENTYP Stacks(Element) NUTZT Element, Bool EXPORTIERT TYP Stacks(Element), FUNKTIONEN empty, push, isempty, top, pop SIGNATUR KONSTRUKTOREN empty :: Stacks(Element) push :: Element × Stacks(Element) -> Stacks (Element) PRÄDIKATE isempty :: Stacks(Element) -> Bool OPERATIONEN top :: Stacks(Element) -> Element pop :: Stacks(Element) -> Stacks(Element) AXIOME top(empty) = undefiniert top(push(x,s)) = x pop(empty) = undefiniert pop(push(x,s)) = s isempty(push(x,s)) = false isempty(empty) = true
Modelle
Die Signatur wird zur reinen Typfestlegung, die Semantik verbirgt sich in den „Axiomen“. Die Gleichungen beschreiben in der Regel die Wirkung der Prädikate und Operationen auf die „aufbauenden“ Funktionen, hier empty und push. Sie können als Behauptungen gelesen werden, z. B. pop(push(x,s)) = s als „Wird auf einen Stapel s, auf den ein Element x gepusht wird, pop angewendet, so erhält man den Stapel s zurück.“ Programmiersprachliche Realisierung von ADTs Einige Sprachen unterstützen durch spezielle Konstrukte die Spezifikation und Implementierung von ADTs (die funktionalen Sprachen SML, Hope und Miranda zum Beispiel). In der funktionalen Sprache Haskell werden das module-Konzept und Monaden dafür verwendet. Im Imperativen ist Modula-2 mit seinem Modulkonzept wegen der strikten Trennung von Schnittstelle und Implementierung besonders geeignet. In Java 5.0 werden Schnittstellen (interfaces) und Generizität genutzt, ansonsten ist das Klassenkonzept der Trennung von Schnittstelle und Implementierung eher hinderlich. Realisierungen gängiger ADTs finden sich in den sogenannten Collection Classes der Java-Bibliothek. In Pascal-Varianten wird man mit implementierungsabhängigen Spracherweiterungen wie dem Unit-Konzept arbeiten. Auch in Sprachen mit eher schwachen Abstraktionskonzepten (C zum Beispiel) lassen sich durch Konventionen und disziplinierte Programmierung ADTs realisieren. Abstrakte Datentypen sind ein programmiersprachenunabhängiges, allgemeines informatisches Konzept und damit unabhängig von sprachlichen Modeströmungen. In den gängigen Programmiersprachen wird es unterschiedlich gut unterstützt. Gezeigt wird die Realisierung des ADT „Stacks“ in Miranda: abstype stack * with empty :: stack * || Vor.: || Erg.: Ein leerer Stack isempty :: stack * -> bool || Vor : || Erg.: Genau dann wahr, wenn der Stack leer ist. push :: * -> stack * -> stack * || Vor.: || Erg.: push x s ist der unveränderte Stack s || mit neuem Topelement x top :: stack * -> * || Vor : Der Stack ist nicht leer || Erg.: Eine Kopie des obersten Elements des Stacks. pop :: stack * -> stack * || Vor : Der Stack ist nicht leer || Erg.: pop s ist der Stack s ohne das oberste || Element, sonst ist nichts verändert.
Programmiersprachen kommen und gehen, ADTs bleiben.
51
52
Grundbegriffe
|| Einfügen der Implementierung %insert "stackimpl1.m" || Austausch der Implementie%insert "stackimpl2.m" || rung durch wechselseitiges ||Entkommentieren/Auskommentieren Erste Implementierung mit dem Listentyp von Miranda: stack * == [*] || Bindung des abstrakten Typs an den || eingebauten Listentyp || Abstraktionsfunktion: Der konkreten Liste || [x0, ..., xn-1] der Implementierung ist der || abstrakte Wert (x0, ..., xn-1) zugeordnet. empty = [] isempty s = s = [] push x xs = x:xs top (x:xs) = x || partielle Definition, scheitert || bei leerer Liste pop (x:xs) = xs || dto. Zweite Implementierung mit einem algebraischen Datentyp in Miranda: stack * == stapel * || Bindung des abstrakten Typs an || den algebraischen Stapel, Abstraktionsfunktion: Dem || konkreten Wert P x0 (P x1 (... (P xn-1 E)...) || der Implementierung ist der abstrakte Wert || (x0, ..., xn-1) zugeordnet. stapel * ::= E | P * (stapel *) empty = E isempty s = s = E push x s = P x s top (P x s) = x || partiell pop (P x s) = s || partiell Eine korrekte Implementierung – besonders im Imperativen – muss explizit machen, wo sich die abstrakten Objekte in der Implementierung wiederfinden. Das kann bei Geflechten relativ aufwendig sein, ist aber für die Softwarewartung unverzichtbar. Die Zuordnung des konkreten Objekts zum abstrakten Wert des Modells heißt auch Abstraktionsfunktion. Häufig gibt es Beschränkungen (Feldgrenzen etwa), die die Implementierungen aller Schnittstellenfunktionen einhalten müssen. Dies wird in der Repräsentationsinvariante notiert.
Die Softwarewartungsfirma dankt :-)
Der Implementierer eines ADT notiert bei der gewählten Repräsentation den „abstrakten Wert in der Sprache der Repräsentation“ (die Abstraktionsfunktion) und ggf. einzuhaltende Invarianten.
Das hat nichts mit realen Rollen zu tun, der Programmierer ist hier sein eigener „Kunde“, er programmiert nur auf einer anderen Ebene.
Der Anwender der ADT-Schnittstelle wird häufig als „Kunde“ bezeichnet, sein Programm als „Kundenprogramm“. Ihm bleibt verborgen, welche Implementierung benutzt wird. Ihm bleibt nur die Schnittstelle und die sorgfältige Beschreibung ihrer Semantik zur Programmierung. Wegen der Unkenntnis der Implementierung reicht es nicht, sprechende Namen für die Schnittstellenfunktionen zu erfinden und darauf zu hoffen, dass der Anwender schon versteht, was gemeint ist.
Modelle
Kundenmodul zum ADT „Stacks“: Mit der Schnittstelle Stacks(Element) kann in einem Kundenmodul beispielsweise folgende Aufgabe gelöst werden: Schreibe eine Funktion, die einen Rechenausdruck auf korrekte Klammerung mit runden Klammern überprüft. Lösung mit Hilfe eines „Klammerstapels“, also eines Stack(Char): Man lege nur die öffnenden Klammern auf den Stapel und werfe bei jeder sich schließenden Klammer in der Eingabezeichenkette eine Klammer vom Stapel. Bleibt am Ende eine öffnende Klammer auf dem Stapel oder ist in der Eingabe noch eine schließende Klammer und der Stapel leer, so ist der Ausdruck falsch geklammert. Ist am Ende der analysierten Zeichenkette auch der Stapel leer, so war der Ausdruck korrekt. %include "stack.m" || Import von stack *, empty, isempty, push, pop korrekt :: [char] -> stack char -> bool || Nutzung von stack * || als Zeichenstapel korrekt [] s = isempty s korrekt (c:xs) s = korrekt xs (push c s), if c = ’(’ = korrekt xs (pop s), if c = ’)’ & ~isempty s = False, if c = ’)’ & isempty s = korrekt xs s, otherwise|| Überlesen anderer Zeichen test1 = korrekt "2+(3-5*(3-2)+4)" empty || korrekt test2 = korrekt "(()((()))()" empty || nicht korrekt Zusammenfassung Das ADT-Konzept unterstützt unabhängige Teamarbeit in größeren Softwareprojekten. Teams können bereits mit den (sorgfältig spezifizierten, nicht mehr veränderbaren) Schnittstellen programmieren, während andere sich um effiziente Implementierungen eben dieser Schnittstellen kümmern. • ADTs verwirklichen das Prinzip des „Information Hiding“ in Softwaresystemen. • Zentral ist die Trennung von Schnittstelle und Implementierung. • Eine ADT-Schnittstelle stellt einen Typ und die auf ihm operierenden Funktionen/Prozeduren zur Verfügung. • Die ADT-Schnittstelle funktioniert nur dann als Programmiergrundlage, wenn die Semantik des Typs und der Operationen exakt beschrieben ist. • Die Implementierungen von ADTs können ausgetauscht werden, ohne dass Anwendungsprogramme davon betroffen sind. • Das ADT-Konzept macht große Softwaresysteme wartbar, weil sich Implementierungsänderungen nur lokal auswirken. • Das abstrakte Datenobjekt (ADO) ist ein Spezialfall: Es dient der Verwaltung eines einzigen, zustandsbehafteten und in der Regel ziemlich dicken Objekts über eine abstrakte Schnittstelle. • Sprachen, die ADTs unterstützen sind unter anderen: die funktionalen Sprachen SML, Hope, Miranda, Haskell, die imperativen Sprachen Modula-2, Modula-3, ADA. In objektorientierten Programmiersprachen fällt die Implementierung nicht so leicht. Das Klassenkonzept vermengt leider Typ (= Schnittstelle) und Implementierung.
53
54
Grundbegriffe
1.4.3 Prädikatenlogik Aussagen, Relationen, Funktionen, Kalküle Die formale Logik untersucht Zusammenhänge zwischen (logischen) Aussagen und stellt Regeln für das logische Schließen bereit. Das kann man vergleichen mit der Arithmetik, die Zusammenhänge zwischen Zahlen untersucht und Regeln für das Rechnen bereitstellt. Aussagen im Sinne der Logik sind entweder wahr oder falsch. Zum Beispiel ist „5 ist größer als 3“ eine wahre Aussage, und „5 ist größer als 6“ eine falsche Aussage. Man sagt dazu auch, dass die erste Aussage gilt, die zweite dagegen nicht. In der Prädikatenlogik drücken die einfachsten („atomaren“) Aussagen immer Beziehungen (Relationen, Prädikate) zwischen irgendwelchen Objekten aus. Formal beschreibt man Beziehungen zwischen n Objekten c1,...,cn durch n-stellige Relationen r(c1,...,cn). Dabei wird eine Präfix-Schreibweise verwendet, der Name r der Relation steht vor der Aufzählung der Objekte. Man schreibt größer(5,3) statt 5>3 oder familie(ingrid,fred,anna) statt ingrid und fred sind eltern von anna. Als Argumente einer Relation können konkrete Objekte oder Variable betrachtet werden. In der Regel kann man aber nur dann feststellen, ob eine Relation zutrifft (wahr ist), wenn die Variablen einen bestimmten Wert erhalten. Da eine Aussage immer entweder wahr oder falsch ist, ist größer(X,Y) mit Variablen X und Y zwar ein logischer Ausdruck, aber noch keine Aussage. Eine Funktion f(X1,...,Xn) ordnet jeweils bestimmten Objekten c1,...,cn wiederum ein Objekt c zu, also zum Beispiel eine Zahl. Man kann auch eine Funktion mutter betrachten, die jeweils einer Person c ihre Mutter mutter(c) zuordnet, also z. B. mutter(anna)=ingrid. Relationen r(X1,...,Xn) können dagegen in Abhängigkeit vom Wert der Variablen nur zutreffen (wahr sein) oder nicht (falsch sein). Funktionen können, da sie ja wiederum Objekte bezeichnen, auch als Argumente von Relationen auftreten, und sie können dabei auch verschachtelt sein: familie(mutter(mutter(olga)),vater(mutter(thea)),anna). Dagegen dürfen in der hier betrachteten Prädikatenlogik der ersten Stufe die Relationen nicht als Argumente von Funktionen oder Relationen auftreten. Man kann n-stellige Funktionen f(X1,...,Xn) auch durch n+1stellige Relationen r(X1,...,Xn, f(X1,...,Xn)) beschreiben, indem man den Funktionswert als weiteres Argument der Relation verwendet: r(c1,...,cn,c) ist wahr, wenn f(c1,...,cn)=c gilt. Aus funktion_mutter(anna)=ingrid wird also relation_ mutter(anna,ingrid).
Modelle
Ein logischer Kalkül entsteht dadurch, dass man logische Ausdrücke miteinander verknüpfen kann und dadurch neue Ausdrücke erhält. Man kann auf diese Weise komplexere Zusammenhänge beschreiben und neue Relationen definieren. Quantifizierung Man kann eine Relation eltern definieren durch eltern(X,Y):= existiert K mit familie(X,Y,K). Die Relation nächster_Nachbar(X,N):= für alle Z gilt größer (distanz(X,Z),distanz(X,N)) wird wahr, wenn N der nächste Nachbar von X ist, wobei die Funktion distanz den Abstand angibt. Hier wurde jeweils eine der Variablen quantifiziert. Quantifizierungen sind grundlegend für die Prädikaten-Logik, dafür gibt es die speziellen Zeichen, die Quantoren, ∀ („für alle“) und ∃ („es existiert“). Aus einer n-stelligen Relation r(X1,...,Xn) wird durch Quantifizierung der i-ten Variablen eine (n-1)-stellige Relation p(X1,...,Xi–1,Xi+1,...,Xn)):= "Xi(r(X1,...,Xn)) bzw. q(X1,...,Xi–1,Xi+1,...,Xn)):= $Xi(r(X1,...,Xn)). Wenn alle Variablen in einem Ausdruck quantifiziert sind, erhält man eine Aussage. Dabei kommt es auf verschiedene Dinge an. • Zunächst spielt die Reihenfolge eine wichtige Rolle: Die Aussage "X($Y(größer(Y,X))) ist wahr im Bereich der natürlichen Zahlen (es gibt immer eine noch größere Zahl), die Aussage $Y("X(größer(Y,X))) dagegen nicht (es gibt keine Zahl, die alle anderen Zahlen und sich selbst übertrifft). • Wichtig ist weiterhin, auf welchen Bereich U von Objekten man sich jeweils bezieht (U steht für Universum). Die Aussage $Y("X(kleiner_oder_gleich(Y,X))) ist wahr für das Universum U der natürlichen Zahlen, aber nicht für die ganzen Zahlen. Aussagenverbindungen, aussagenlogische Operationen Die Relation schwester kann man definieren durch schwester(X,Y):= $M($V(familie(M,V,X) und familie(M,V,Y) und weiblich(X) und ungleich(X,Y))). Die Relation großvater kann man definieren durch großvater(GV,E):= $GM($M1[familie(GM,GV,M1) und $V1(familie(M1,V1,E))] oder $V2[familie(GM,GV,V2) und $M2(familie(M2,V2,E))]). Da sich in den Beispielen auf das Prädikat familie bezogen wird, müssen die Partner einbezogen werden. Zunächst gehört zu einem Großvater GV die jeweilige Großmutter GM: Ihr Existenz-Quantor (Klammern beachten,
Die Klammern werden notwendig, wenn später komplexere Ausdrücke betrachtet werden. Man kann auch mehrmals quantifizieren, allerdings sollte jedes Argument nur einmal quantifiziert werden (die Regeln eines korrekten syntaktischen Aufbaus von logischen Ausdrücken werden hier ausgespart). Sind alle Variablen in einem Ausdruck quantifiziert, so handelt es sich um eine Aussage, die entweder wahr oder falsch ist.
55
56
Grundbegriffe
unterschiedliche Klammern sollen die Lesbarkeit etwas erleichtern) bezieht sich auf den gesamten restlichen Ausdruck. Danach wird zunächst der Großvater mütterlicherseits erfasst, es muss also die Mutter M1 zum Enkel E existieren, und diese braucht wieder einen Partner V1. Hier beziehen sich die Quantoren nur noch auf Teile des weiteren Ausdrucks. Anschließend wird analog der Großvater väterlicherseits betrachtet. Neben der Verwendung der Quantoren wurden jetzt auch unterschiedliche Relationen miteinander verknüpft, indem wir die logischen Operatoren und bzw. oder verwendet haben. Im Folgenden werden die Symbole ∧ für das und bzw. ∨ für das oder verwendet. Mithilfe solcher Operatoren kann man komplexere Aussagenverbindungen erzeugen, deshalb heißen sie aussagenlogische Operatoren. Wesentlich ist dabei, dass ihre Wirkung unabhängig vom konkreten Inhalt der Aussagen ist, sie sind extensional. Das heißt, die Gültigkeit einer Aussagenverbindung hängt nur davon ab, ob die beteiligten Aussagen wahr bzw. falsch sind. Die Bedeutung des Operators ∧ ist intuitiv klar: Die Aussagenverbindung A1 ∧ A2 (Konjunktion) ist wahr, wenn beide Aussagen A1 und A2 gelten, andernfalls ist sie falsch. Der Operator ∨ wird hier im nicht-ausschließenden Sinn gebraucht, A1 ∨ A2 (Disjunktion) ist genau dann wahr, wenn wenigstens eine der beiden Aussagen A1 bzw. A2 gilt. Die Großvater-Relation trifft auch dann zu, wenn die beiden mit ∨ verknüpften Möglichkeiten zutreffen (Vater und Mutter des Enkels könnten auch Geschwister sein, zumindest in den antiken Legenden kommt so etwas vor). Als weitere zweistellige Aussagenverbindungen kommen in Betracht: • entweder gilt A1 oder A2 (ausschließendes oder, Alternative), • wenn A1 gilt, dann gilt A2 (Implikation, das Zeichen dafür ist ⇒), • A1 gilt genau dann, wenn A2 gilt (Äquivalenz, Zeichen: ⇔). Da die aussagenlogischen Operatoren nur die Werte wahr und falsch kennen, kann man ihre Wirkungsweise einfach durch Wahrheitstabellen darstellen. Insgesamt kann es 16 zweistellige Aussagenverbindungen geben, einige davon listet die folgende Tabelle auf.
I
A1
A2
A1 ∧ A2
A1 ∨ A2
A1 ⇒ A2
wahr
wahr
wahr
wahr
wahr
A1 ⇔ A2 wahr
wahr
falsch
falsch
wahr
falsch
falsch
falsch
wahr
falsch
wahr
wahr
falsch
falsch
falsch
falsch
falsch
wahr
wahr
Die Definition der Implikation könnte verwundern: Die Aussagenverbindung A1 ⇒ A2 ist auch wahr, wenn A1 den Wert falsch, und A2 den Wert wahr hat. Diese Aussagenverbindung beschreibt nicht die Gleichwertigkeit von A1 und A2 (das macht schon die Äquivalenz). Sie beschreibt die Gültigkeitserblichkeit beim korrekten Schließen: Wenn die Voraussetzungen wahr sind, darf eine korrekte Schlussregel auch nur zu gültigen Schlussfolgerungen führen. Wenn die Voraussetzungen falsch sind, kann über die Gültigkeit der Schlussfolgerungen nichts gesagt werden.
Modelle
Von den vier möglichen einstelligen Aussagenverbindungen ist das nicht, die Negation, interessant. Das Symbol dafür ist ¬.
A
¬A
wahr
falsch
falsch
wahr
Äquivalente Ausdrücke, Umformungsregeln Ähnlich wie bei arithmetischen Ausdrücken kann man auch logische Ausdrücke umformen. Dafür gibt es „logische Rechenregeln“.
Die Regeln ¬(A1 ∨ A2) = (¬A1) ∧ (¬A2)
Eine solche Regel lautet: ¬(A1 ∨ A2) = (¬A1) ∧ (¬A2) Dabei bedeutet das Gleichheitszeichen, dass auf beiden Seiten immer der gleiche Wahrheitswert entsteht, wenn die Ausdrücke A1 und A2 auf beiden Seiten die gleichen Werte haben. Man sagt dazu, dass die beiden Ausdrücke H1 auf der linken und H2 auf der rechten Seite äquivalent sind. Tatsächlich wird der Ausdruck H1 ⇔ H2 gerade dann wahr, wenn H1 und H2 äquivalent sind.
und ¬(A1 ∧ A2) = (¬A1) ∨ (¬A2)
Analog zum Rechnen in der Arithmetik, kann man logische Ausdrücke äquivalent umformen, indem man Teil-Ausdrücke durch äquivalente Ausdrücke ersetzt. Um keine Zweifel über die Zusammenhänge aufkommen zu lassen, verwendet man bei Bedarf Klammern (hier wird wieder auf genauere syntaktische Festlegungen und Vorrangregeln für die Operatoren verzeichtet). Eine weitere, ähnliche Regel besagt: ¬(A1 ∧ A2) = (¬A1) ∨ (¬A2) Es gelten auch die folgenden logischen Rechenregeln (Kommutativgesetze, Assoziativgesetze und Distributivgesetze): A1 ∧ A2 = A2 ∧ A1 A1 ∨ A2 = A2 ∨ A1 (A1 ∧ A2) ∧ A3 = A1 ∧ (A2 ∧ A3) (A1 ∨ A2) ∨ A3 = A1 ∨ (A2 ∨ A3) (A1 ∧ A2) ∨ A3 = (A1 ∨ A3) ∧ (A2 ∨ A3) (A1 ∨ A2) ∧ A3 = (A1 ∧ A3) ∨ (A2 ∧ A3) Die Äquivalenz kann man mithilfe der Implikation und der Konjunktion ausdrücken, die Implikation dann wiederum mithilfe der Alternative und der Negation: A1 ⇔ A2 = (A1 ⇒ A2) ∧ (A2 ⇒ A1) A1 ⇒ A2 = (¬A2) ∨ A1. Die „Rechenregeln“ erlauben die Umformung und Vereinfachung von aussagenlogischen Ausdrücken (b auch Randspalte). Hilfreich ist dabei auch die Elimination einer doppelten Verneinung: ¬(¬A) = A Aus ¬(A1 ∧ A2)=(¬A1) ∨ (¬A2) erhält man zum Beispiel durch Negation auf beiden Seiten ¬(¬(A1 ∧ A2))= ¬((¬A1) ∨ (¬A2)) und durch Elimination der doppelten Verneinung die Äquivalenz A1 ∧ A2= ¬((¬A1) ∨ (¬A2)). Mit dieser Regel kann man also den Operator ∧ durch die Operatoren ¬ und ∨ ersetzen.
werden auch als morgansche Gesetze bezeichnet und helfen beim Ersetzen von logischen Schaltungen durch gleichwertige Gatter (b auch S. 373).
Die Rechenregeln basieren auf Tautologien. Eine Tautologie ist eine Aussage, die immer wahr ist. Eine Tautologie ist auch das Gesetz vom ausgeschlossenen Dritten: A ∨ ¬A Tautologien mit Implikationen entsprechen logischen Schlüssen, die man beim Beweisen nutzen kann: A1 ∧ (A1 ⇒ A2) ⇒ A2 (Abtrennungsregel) A1∧(¬A2⇒¬A1)⇒A2 (indirekter Schluss) (A1 ⇒ A2) ∧ (A2 ⇒ A3) ⇒ (A1 ⇒ A3) (Kettenschluss) (A1 ⇒ A2) ⇔ (¬A2 ⇒ ¬A1) (Kontraposition)
57
58
Grundbegriffe
Darüber hinaus kann man jede denkbare Aussagenverbindung H mit n Aussagenvariablen A1, ..., An allein mit ∧, ∨, ¬ ausdrücken. Für die n Aussagenvariablen gibt es insgesamt 2n verschiedene Möglichkeiten, ihnen die Werte wahr bzw. falsch zuzuordnen. Man bezeichnet diese Möglichkeiten als Belegungen. Eine Belegung ist also eine Abbildung b der Menge {A1,...,An} in die Menge {wahr,falsch}. Für jede Belegung b nimmt H einen Wert wahr bzw. falsch an. H ist also durch eine Wahrheitstabelle mit 2n Zeilen beschreibbar. Jetzt wird ein Ausdruck H’ gesucht, der nur die Operatoren ∧, ∨, ¬ benutzt und die gleiche Wahrheitstabelle besitzt, der also zu H äquivalent ist. Zunächst betrachtet man sogenannte Elementar-Konjunktionen K= L1∧L2∧...∧Ln, wobei für einen Ausdruck Li entweder Ai selbst oder die Negation ¬Ai stehen kann. Auf Klammern kann wegen der Assoziativität verzichtet werden. Jede Elementarkonjunktion wird bei genau einer Belegung b wahr, nämlich bei der Belegung b mit b(Ai)=wahr, falls Li=Ai, und b(Ai)=falsch, falls Li=¬Ai. Umgekehrt gibt es auch zu jeder Belegung b genau eine Elementarkonjunktion Kb, die bei b den Wert wahr annimmt. Jetzt benutzt man nur diejenigen Belegungen b1,...,bk, bei denen der Ausdruck H den Wert wahr besitzt und bildet die Alternative aus den zugehörigen Elementarkonjunktionen: H’= (Kb1) ∨ (Kb2) ∨ ... ∨ (Kbk) Dann wird H’ genau dann wahr, wenn eine der benutzten Elementarkonjunktionen Kbi wahr ist, das heißt, wenn bei der entsprechenden Belegung bi der Ausdruck H den Wert wahr hat. Damit haben H und H’ die gleiche Wahrheitstabelle. Problematisch wird es nur, wenn der Ausdruck H niemals wahr wird und wenn deshalb unsere Alternative keine Bestandteile hat. Wenn aber der Ausdruck H immer falsch ist, kann man ganz einfach einen nur mit ∧, ∨, ¬ gebildeten gleichwertigen Ausdruck finden, zum Beispiel A1∧(¬A1).
Der logische Operator nand (NICHTUND, NAND-Gatter) ist im Abschnitt 4.1.2 genauer erklärt.
I
Alternativen aus Elementarkonjunktionen heißen Normalformen, sie bieten eine einfache Möglichkeit zur Realisierung beliebiger Wahrheitstabellen. Das ist bedeutsam für die Umsetzung in Hardware. Da man den Operator ∧ wiederum durch die Operatoren ¬ und ∨ ersetzen kann, reichen prinzipiell schon diese beiden Operatoren, um beliebige Wahrheitstabellen zu realisieren. Man kann sogar mit einem einzigen Operator alle Wahrheitstabellen realisieren, zum Beispiel mit dem Operator nand, definiert durch A1 nand A2 := ¬(A1 ∧ A2). Auch für den Umgang mit Quantoren gibt es „Rechenregeln“, die wichtigsten sind ¬($X H) = "X (¬H) , ¬("X H) = $X (¬H) , wobei H wieder ein beliebiger logischer Ausdruck ist, der auch weitere Quantoren enthalten kann.
Modelle
Manchmal hilft es dem Verständnis, die Verneinungen „nach innen“ zu verlagern: Es soll die Frage betrachtet werden, wer nicht Schwester von anna ist, also die Negation der Schwester-Relation: ¬schwester(X,anna)= ¬$M($V(familie(M,V,X) ∧ familie(M,V,anna) ∧ weiblich(X) ∧ ungleich(X,anna)))) Man kann die rechte Seite in zwei Schritten umformen in "M("V¬(familie(M,V,X) ∧ familie(M,V,anna) ∧ weiblich(X) ∧ ungleich(X,anna)))) Mithilfe weiterer Regeln entsteht daraus: "M("V(¬(familie(M,V,X)) ∧ familie(M,V,anna)) ∨ (¬ weiblich(X)) ∨ (¬ ungleich(X,anna)))) Das heißt, die Person X ist nicht die Schwester von anna, wenn sie nicht zur gleichen Familie gehört oder wenn sie männlich ist oder aber wenn sie anna selbst ist (insbesondere die letztere Möglichkeit könnte man vielleicht übersehen). Theorembeweiser, PROLOG Die bisherigen Ausführungen zeigen: Man kann logische Zusammenhänge durch logische Ausdrücke darstellen, und man kann mit diesen Ausdrücken rechnen wie mit arithmetischen Formeln. Das heißt, man kann logische Schlussfolgerungen durch Manipulation von Ausdrücken beweisen. Dieses Umformen von Ausdrücken kann nun auch ein Computer durchführen: Die Wahrheitswerte wahr und falsch werden dabei als Zustände wie „Strom fließt“ bzw. „Strom fließt nicht“ oder „Spannung vorhanden“ bzw. „Spannung nicht vorhanden“ interpretiert und durch die Dualziffern 1 bzw. 0 dargestellt. Logische Ausdrücke werden als elektrische Schaltungen (AND-Gatter, OR-Gatter, NAND-Gatter, NOR-Gatter, XOR-Gatter, ...) materialisiert. Man kann Beweise also automatisch durchführen lassen. Während aber ein Mensch mit seiner Intuition oft schnell die richtigen Umformungen findet, probiert der Computer solange unterschiedliche Möglichkeiten durch, bis er einen Beweis gefunden hat. Solche Verfahren laufen wie folgt ab: Um festzustellen, ob eine Behauptung aus einer Menge von Voraussetzungen folgt, muss man zunächst die Voraussetzungen durch eine Menge von logischen Ausdrücken H1,...,Hn darstellen. Diese Voraussetzungen heißen Axiome, und sie können die Arithmetik, die Geometrie, die Verwandtschaftsverhältnisse oder aber auch die Funktionsweise von Staubsaugern beschreiben. Die zu beweisende Behauptung wird dann ebenfalls als Ausdruck H dargestellt. Je nach dem interessierenden Bereich bezeichnet sie zum Beispiel eine geometrische Aussage oder einen möglichen Defekt des Staubsaugers. Jetzt benutzt man ein Verfahren, dass Ausdrücke umformen kann, ein sogenanntes Inferenzverfahren, und prüft, ob mit diesem Verfahren der Ausdruck H aus den Ausdrücken H1,...,Hn hergeleitet werden kann. Damit dieses Verfahren sinnvoll anwendbar ist, muss der (rein formale)
Die wichtigsten logischen Gatter der Schaltalgebra sind im Abschnitt 4.1.2 beschrieben.
59
60
Grundbegriffe
Inferenzprozess mit den inhaltlichen Bedeutungen und Schlussfolgerungen im gegebenen Bereich übereinstimmen. Wenn man aus den Staubsauger-Axiomen und den Formalisierungen der Beobachtungen die Aussage ¬hat_Strom(motor) ableiten kann, dann soll das auch in der Realität die Ursache für die Probleme mit dem Staubsauger beschreiben. Zu der geforderten Übereinstimmung gehört zunächst die Korrektheit des Systems (der Axiome und der Umformungsregeln): Es sollen nur Ausdrücke für solche Behauptungen ableitbar sein, die im gegebenen Bereich auch tatsächlich richtig sind. Damit das Verfahren die Behauptung aber auch beweisen kann, muss das System zusätzlich vollständig sein: Für alle richtigen Behauptungen muss der entsprechende Ausdruck auch ableitbar sein. Wenn der Computer jetzt systematisch alle Möglichkeiten durchsucht, wird er irgendwann den Ausdruck für eine gesuchte Schlussfolgerung finden. Dazu wird ein Suchverfahren benötigt, das alle Ableitungsmöglichkeiten systematisch erfasst. Suchverfahren sind eine vielfach eingesetzte Technik nicht nur für Beweisverfahren. Fahrplanauskunft, Routenplanung, Schachprogramme, Datenbanken und vieles mehr verwenden Suchtechniken, um die infrage kommenden Varianten systematisch zu durchmustern.
I gödelscher Unvollständigkeitssatz b auch Abschnitt 5.2.2
I
Die Voraussetzung für den Erfolg der Suche ist natürlich, dass die Behauptung aus den gegebenen Voraussetzungen folgt. Wenn der Staubsauger funktioniert, kann (bei korrekter Formalisierung) die Aussage ¬hat_Strom(motor) nicht bewiesen werden. Es kann dann sein, dass der Computer ohne Ende neue Ausdrücke ableitet ohne je zu einem Ergebnis zu kommen. Er müsste ja jetzt feststellen, dass der Ausdruck nicht ableitbar ist. Dazu müsste er entweder alle ableitbaren Ausdrücke untersuchen (aber das können tatsächlich unendlich viele sein), oder er müsste irgendwie auf andere Weise zu dem Ergebnis kommen können, dass der Ausdruck nicht ableitbar sein kann. Tatsächlich kann man zeigen, dass für hinreichend komplizierte Theorien, zum Beispiel für die Arithmetik, ein solcher negativer Nachweis nicht systematisch geführt werden kann: Es kann kein Computerprogramm geben, dass für beliebige Aussagen der Arithmetik entscheidet, ob sie aus den Axiomen der Arithmetik folgen oder nicht (gödelscher Unvollständigkeitssatz). Für einfachere Probleme ist dagegen der Ansatz erfolgreich. PROLOG ist eine Programmiersprache mit eingebautem Theorembeweiser. Man kann in dieser Programmiersprache die Axiome als Programm formulieren. Bei einer Anfrage an das Programm versucht das Inferenzverfahren des PROLOG-Systems einen Beweis zu finden und liefert das entsprechende Ergebnis. Aus Gründen der Effizienz werden dabei nicht die ableitbaren Ausdrücke untersucht, sondern es wird ein indirekter Beweis geführt. Das ist oft einfacher: Um einen Widerspruch nachzuweisen reicht ein einziges Gegenbeispiel. Die angewendete Methode heißt Resolutionsverfahren.
Modelle
1.4.4 Objektorientierte Modellierung Objekte, Attribute und Methoden Objekte sind Dinge, Lebewesen oder Sachverhalte der uns umgebenden realen oder auch virtuellen Welt. Es ist üblich, gleichartige Objekte unter einem Begriff zusammenzufassen. Wenn man z. B. den Begriff „Baum“ hört, hat man eine Vorstellung, einen „Bauplan“, für einen Baum. Es gibt so viele unterschiedliche Bäume, aber allen ist gemeinsam, dass sie einen Stamm und eine Krone besitzen. Damit hat man das Wesentliche hervorgehoben: Stamm und Krone. Alles andere wird erst einmal vernachlässigt. Weil jeder einzelne Baum nach dem gleichen Bauplan konstruiert ist, spricht man von der Klasse BAUM. Die Klasse BAUM ist nicht die Menge aller existierenden Bäume, sondern eher eine „Idee“ (ähnlich der Ideenlehre Platons, 427 – 347 v. Chr.), eine Konstruktionsvorschrift für Bäume. Ein konkreter Baum wiederum gehört der Klasse BAUM an. Die Klasse BAUM wird letztlich von anderen Objektklassen durch bestimmte Eigenschaften (Attribute) unterschieden. Bäume besitzen zum Beispiel einen Standort, einen Stammumfang, eine Baumhöhe und eine Kronenform. Sträucher besitzen keinen Stammumfang, gehören also einer anderen Klasse an. Die einzelnen Objekte einer Klasse werden durch ihre Attributwerte unterschieden. Bäume kann man beispielsweise durch folgende Attributwerte unterscheiden: • Jeder Baum besitzt einen anderen Standort. Das ist ein grundlegendes Unterscheidungsmerkmal. Attributwerte können hier sein: „an unserem Haus“, „in der nordöstlichen Ecke von Brittas Garten“, „der fünfte Baum auf der linken Straßenseite“ usw. • Werte für das Attribut Stammumfang könnten sein: „60 cm“, „95 cm“, „1 m“, „2 Armlängen“, ... • Beispiele für Attributwerte für die Baumhöhe sind: „12,50 m“, „9,00 m“, „2 m höher als unser Haus“. • Kronenformen können sein: „kugelförmig“ (z. B. beim Apfelbaum) oder „kegelförmig“ (z. B. bei der Tanne) usw. Bäume führen auch bestimmte Aktivitäten aus, die Informatiker sagen Methoden. Bäume können „wachsen“ oder sich „im Wind biegen“. Beim Auslösen bestimmter Methoden reagiert der Baum auf Botschaften. Solche Botschaften könnten hier sein: „Der Frühling hat begonnen. Die Sonne steht höher am Himmel. Es wird wärmer.“ oder „Es weht ein starker Wind.“
Die „Botschafts-Betrachtungsweise“ ist erst einmal ungewohnt. Wer sagt schon „Der Baum erhält die Botschaft, dass ein starker Wind weht. Damit wird die Methode Sichbiegen ausgelöst.“? Andererseits ist diese Modellierung durchaus einleuchtend, wenn man an einen Programmierer denkt, der ein Computerspiel entwickeln soll, in dem die Natur nachgebildet wird, und der Spieler per Knopfdruck auch Wind „erzeugen“ kann.
61
62
Grundbegriffe
Eine Klasse ist eine Schablone zum Erzeugen von Objekten. Die Ansammlung aller Objekte einer Klasse heißt Klassenextension. Klasse und Klassenextension sind nicht dasselbe.
Objekte sind Dinge, Lebewesen oder Sachverhalte der uns umgebenden Welt. Mit Klasse bezeichnet man den Bauplan von gleichartigen Objekten. Man sagt auch Objekttyp. Klassennamen werden mit Großbuchstaben geschrieben (oder beginnen mit einem Großbuchstaben). Alle Objekte einer Klasse haben die gleichen Attribute (Eigenschaften) und die gleichen Methoden (Anweisungsfolgen) die durch Botschaften (Nachrichten) ausgelöst werden. Der Zustand eines Objekts wird durch seine Attributwerte beschrieben, das Verhalten durch seine Methoden. In der objektorientierten Programmierung erhalten Botschaft und die durch sie ausgelöste Methode den gleichen Namen, was dazu führt, dass Botschaft und Methode oft synonym gebraucht werden. Methoden beziehen sich auf das Ändern von Attributwerten. Beispielsweise können Objekte in Multimediadokumenten (b Abschnitt 2.5.3) eine Methode „Erscheinen“ besitzen, welche sich auf das Attribut „Effekt“ (rotierend, wortweise, von links ins Bild fließen, ...) bezieht. Zum Darstellen von Klassen benutzt man sogenannte Klassenkarten. Das sind Rechtecke, in die alle Attribute und alle Methoden einer Klasse eingetragen sind (b links in der folgenden Übersicht). BAUM
Linde1: BAUM Attribute
Attribute Standort = in Kais Garten Stammumfang = 53 cm Baumhöhe = 5 m Kronenform = birnenförmig Kronenumfang = 9 m Laubfarbe = hellgrün ...
Methoden
Methoden
Standort Stammumfang Baumhöhe Kronenform Kronenumfang Laubfarbe ...
BaumSamenAbwerfen() Wachsen(Länge) LaubVerfärben(Jahreszeit) ...
BaumSamenAbwerfen() Wachsen(20cm im Jahr) LaubVerfärben(im Herbst) ...
Zum Darstellen von Objekten werden Objektkarten genutzt. Sie unterscheiden sich von Klassenkarten auf den ersten Blick dadurch, dass die Ecken abgerundet sind (b rechts im obigen Bild). Zusätzlich sind hier aber die konkreten Attributwerte für das jeweilige Objekt eingetragen. Um Methoden von Attributen zu unterscheiden, stehen am Ende von Methoden Klammern, in die bestimmte Werte eingetragen werden können. Nach den Attributnamen stehen Gleichheitszeichen, gefolgt von konkreten Attributwerten.
Modelle
Alle diese Mittel werden vor allem auch im Bereich der objektorientierten Programmierung genutzt. Wichtige Klassen wie Datentypen und Datenstrukturen kann man natürlich auch entsprechend modellieren und durch Klassenkarten beschreiben: Klassenkarten für einen Aufzählungstyp und für einen strukturierten Typ: ADRESSE_KUNDE
LAND_KUNDE
Straße: String PLZ: String Ort: String Land: LAND_KUNDE
Deutschland Österreich Schweiz
Der Aufzählungstyp LAND_KUNDE (links) hat 3 Attribute, da diese aber „diskret“ sind, also jeweils genau einen Wert besitzen, wurden hier nur die Attributwerte angegeben. Der strukturierte Typ (rechts) besitzt 4 Attribute. Die Werte des Attributs „Land“ sind durch LAND_KUNDE festgelegt. Klassen- und Objektdiagramme, Assoziationen und Vererbung Allgemeine Beziehungen (Assoziationen) können in Klassendiagrammen modelliert werden. Klassendiagramm zur Modellierung eines Textverarbeitungssystems: DATEI
ZEICHEN
DATEI
ZEICHEN
0..* 1 ist enthalten> 1 0..* 1 1..*
*
Die Raute auf der Seite des Aggregats (des Ganzen) symbolisiert das Behälterobjekt.
Teil
Der Hut des Schneemanns auf Seite 64 ist eine Komposition, bestehend aus einem Quadrat und einer Strecke, die gruppiert wurden. Löscht man den Hut, so sind auch die Objekte „Strecke1“ und „Quadrat1“ verschwunden. Ein wesentliches Konzept objektorientierter Programmiersprachen ist die Vererbung. Mithilfe der Vererbung können Klassen hierarchisch strukturiert werden: Attribute allgemeinerer Bedeutung werden Oberklassen zugeordnet (Generalisierung), speziellere Eigenschaften Unterklassen (Spezialisierung). Die Attribute der Oberklasse werden an die Unterklasse weitergegeben (vererbt). Eine Unterklasse verfügt also über die Attribute der Oberklasse(n) und über weitere, spezielle Attribute. Es gilt folgende Beziehung für Vektorgrafiksysteme:
Die Vererbung ist auch das Unterscheidungsmerkmal zu anderen Programmiersprachen: Nur Sprachen mit Vererbungskonzept dürfen sich „objekt orientierte Programmiersprache“ nennen. So ist Java objektorientiert, JavaScript dagegen nicht.
GRAFIKOBJEKT
ELLIPSE
RECHTECK
STRECKE
Hier werden Attribute wie Position, Größe, Linienstärke, Linienfarbe, Linienart, Flächenfarbe von GRAFIKOBJEKT an ELLIPSE, RECHTECK und STRECKE vererbt. Der nicht ausgefüllte Pfeil zeigt von der Unterklasse zur Oberklasse. Unterscheidungsmerkmal (Diskriminator) könnte hier „Eckenzahl“ oder „Stützpixel“ sein, Strecken haben demnach neue Attribute wie „Anfangspunkt“ und „Endpunkt“.
Strecken besitzen keine Füllfläche, das Attribut „Füllfarbe“ ist daher eigentlich nicht notwendig. Es schadet aber auch nichts, wenn Strecken es besitzen. Die Attributwerte werden nur nicht angezeigt.
65
66
Grundbegriffe
1.5
Informationsverarbeitende Technik
H
1.5.1 Zur Geschichte der Rechentechnik
H
Nachbau des Vierspeziesrechners von Wilhelm Schickhardt im Deutschen Museum in München
B
B
B
Nachbau der Analytical Engine auf Grundlage der Beschreibung von Charles Babbage
Rechenmaschinen im eigentlichen Sinne, das heißt mechanische Geräte, mit denen man die Grundrechenarten ausführen konnte, kamen erst im 17. Jahrhundert auf: – 1623 entwarf Wilhelm Schickhardt (1592 – 1635) einen Ziffernrechner für die vier Grundrechenarten (man sagt daher auch „Vierspeziesrechner“), der auf Grundlage verschiebbarer Rechenstäbe arbeiten sollte. Dieser Ziffernrechner wurde noch vor seiner vollständigen technischen Ausführung durch ein Feuer zerstört und es ist nicht bekannt, dass Schickhardt einen zweiten Rechner gebaut hat. – 1642 ließ sich Blaise Pascal (1623 – 1662) einen „Zweispeziesrechner“ für die Addition und die Subtraktion mittels Zahnrädern patentieren. Dieses Gerät fand eine solch weite Verbreitung, dass es unter der Bevölkerung zu Beunruhigungen wegen Arbeitsstellenverlust führte. – 1671 entwickelte Gottfried Wilhelm Leibniz (1646 – 1716) einen Vierspe ziesrechner, der auf der Grundlage von Walzen arbeitete. Ab 1832 entwarf Charles Babbage (1791 – 1871) einen Universalrechner, der aus vier Baugruppen aufgebaut werden sollte, nämlich: • einem Rechenwerk für die Darstellung von Dezimalzahlen, • einem Speicher für tausend 50-stellige Zahlen (der aus 50 000 Ziffernrädern bestand), • einem Eingabewerk für Zahlen und Verarbeitungsvorschriften auf der Grundlage eines Lochkartenlesers, wie er von dem französischen Seidenweber Joseph Marie Jacquard (1752 – 1834) für die Steuerung von Webstühlen benutzt wurde, • einem Druckwerk für die Ergebnisausgabe. Diese Maschine nannte Babbage „Analytical Engine“. Das war der erste digitale programmgesteuerte Rechenautomat. Der Aufbau der von Charles Babbage entworfenen „Analytical Engine“ entspricht dem Aufbau von modernen Computern: • Rechenwerk, • Steuereinheit,
• Datenspeicher, • Ein- und Ausgabegeräte.
Babbages Computer wurde zu seiner Zeit nicht gebaut. Die vielen mechanischen Teile behinderten die Funktionsfähigkeit.
B
Konrad Zuse steht vor dem Nachbau seines Rechners Z3 im Deutschen Museum in München.
Der Bau des ersten funktionstüchtigen Rechners mit Programmsteuerung gelang erst Konrad Zuse (1910 – 1995) im Mai 1941. Diesen Rechner nannte Zuse „Z3“. Die Programmeingabe erfolgte über ein Lochbandgerät, die Verarbeitung durch 2000 Relais. Folgende Dinge waren entscheidend: • Programmsteuerung (die Erweiterung um eine Lochstreifensteuerung beim „Z11“ nach dem 2. Weltkrieg führte zu einem nahezu universell einsetzbaren Rechenautomaten);
B
Informationsverarbeitende Technik
67
• elektromagnetische Bauteile (Relais); • Einführung des Dualsystems in die Rechentechnik (b S. 20, so konnte die Relaistechnik zum Rechnen genutzt werden).
B
Unabhängig von Zuse wurden auch in Großbritannien und den USA elektronische Rechner entworfen und gebaut. Man benutzte Elektronenröhren als Schaltelemente, später Transistoren und Dioden. Das Programm wurde über Schalter oder Lochkarten und Lochstreifen eingegeben. Das war eine aufwendige Arbeit. John von Neumann (1903–1957) entwickelte die Idee, dass auch das Programm selbst im Rechner gespeichert werden sollte. Erst das Programm macht den Rechner arbeitsfähig. Alle heutigen Rechner arbeiten auf Grundlage der Ideen von Charles Babbage, Konrad Zuse und John von Neumann. Ab 1950 kann von industrieller Rechnerentwicklung und -produktion gesprochen werden, wobei vor allem auf Grundlage der verwendeten Schaltkreistechnologie Computergenerationen unterschieden werden: Jahr
Gen.
Bauelementebasis
Geschwindigkeit
1950
1
Elektronenröhren als Schaltelemente
1000 Additionen pro Sekunde
1960
2
Halbleiterschaltkreise (Transis toren, Dioden)
10 000 Additionen pro Sekunde
1965
3
teilweise integrierte Schaltkreise
500 000 Additionen pro Sekunde
1970
4
überwiegend hochintegrierte Schaltkreise
10 Mio. Additionen pro Sekunde
1980
5
höchstintegrierte Schaltkreise (Mikroprozessoren)
...
Die Computer waren bis in die 1960er-Jahre hinein Einzelrechner für wissenschaftlich-technische Berechnungen. Erst als die Schaltelemente so verkleinert worden waren, dass sie auf einer Leiterplatte Platz fanden, konnte man an eine Massenfertigung von Computern denken – der Personal Computer (PC) wurde entwickelt. Den Siegeszug des PC konnte ab 1980 niemand mehr aufhalten. Das hatte vor allem zwei Ursachen: • Die Schaltungen für die Rechen- und Steuereinheit des Computers wurden so verkleinert und zusammengefasst, dass daraus ein winziger Chip (Mikroprozessor) wurde. • Und auch auf der Software-Seite fand eine Revolution statt: Im Jahre 1980 brachte Bill Gates’ Firma Microsoft das Betriebssystem MS-DOS auf den Markt. Bis dahin waren die Programme zur Steuerung des Computers (also das Betriebssystem) durch den Nutzer schwer änderbar. MS-DOS war von Diskette aus installierbar und mit einer neuen Version des Betriebssys tems musste man nicht mehr den gesamten Computer austauschen, sondern nur eine neue Diskette einlegen.
Der britische Mathematiker Alan Mathison Turing schlug ein universelles Automatenmodell (Turingmaschine) vor, durch das der Algorithmusbegriff mathematisch exakt gefasst werden konnte. Unter Turings Leitung wird auch 1943 in Großbritannien der erste elektronische Digitalcomputer – Colossus – entwickelt und erfolgreich genutzt, um im 2. Weltkrieg verschlüsselte deutsche Funksprüche zu decodieren.
H
H
B
Der Abakus – ein digitales Rechenhilfsmittel
H
„Digital“ heißt, das Rechnen beruht auf einem Zählvorgang. Beispiele für digitale Rechenhilfsmittel sind Zählstäbchen, Zählsteine, Abakus und Personal Computer.
Digitale und analoge Rechen- hilfsmittel
Als ältester Vorläufer einer digitalen Rechenmaschine gilt der Abakus. Der Abakus aus hellenistischer Zeit (etwa 300 bis 30 vor Christus) war eine Tafel aus Stein oder Holz mit aufgemalten oder eingeschnittenen Linien. Auf diesen Linien wurden Rechensteine geschoben. Die Linien bedeuteten Größenordnungen und ersetzten Dezimalstellen. Später entwickelte sich daraus der Rechenrahmen mit verschiebbaren Kugeln. Dieser Rechenrahmen ist heute noch in verschiedenen Ländern der Erde gebräuchlich. • In Russland ist er ein beliebtes Rechenhilfsmittel von Verkäuferinnen und heißt „Stchoty“ Es wird oft sogar dann noch benutzt, wenn andere Rechenhilfsmittel (Tischrechner oder Computer) an der Kasse vorhanden sind. • In China gibt es den Abakus seit dem 13. Jahrhundert als „Suan Pan“. Dieser Rechenrahmen hat viel Ähnlichkeit mit dem Soroban. • In Japan heißt der Rechenrahmen „Soroban“. Jedes Jahr werden Millionen von diesen Rechenrahmen angefertigt, ein Teil davon für Kinder in der 3. bis 6. Schulklasse. Im „Computerland“ Japan legen viele Menschen Sorobanprüfungen ab. Selbst Computerfirmen stellen mit Vorliebe junge Leute ein, die ein Ass auf dem Soroban sind. Der Soroban hat senkrecht angeordnete Stäbe mit je fünf Kugeln, wobei eine obere Kugel durch einen Querstab von den unteren vier getrennt ist. Die Kugeln der ganz rechten Spalte entsprechen den Einern, die links daneben den Zehnern usw. Die Kugeln unter dem Querstab stellen je eine Einheit dar, die obere jeweils fünf Einheiten.
H
Der Rechenstab – ein analoges Rechenhilfsmittel „Analog“ heißt, das Rechnen beruht auf einem Messvorgang. Beispiele für analoge Rechenhilfsmittel sind Rechenstab und Schickards Vierspeziesrechner (b S. 66).
H
Beim analogen Rechnen werden bestimmte Zahlen den unterschiedlichen Werten einer physikalischen Größe zugeordnet. Zum Beispiel könnte die Zahl 2 einer doppelt so hohen Spannung zugeordnet werden wie die 1. Auch die Länge ist eine physikalische Größe. Man kann beispielsweise mit zwei Linealen recht einfach addieren oder subtrahieren: Subtrahieren einer positiven Zahl
Addieren einer positiven Zahl
–10 –9 –8 –7 –6 –5 –4 –3 –2 –1 0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 –8 –7 –6 –5 –4 –3 –2 –1 0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10
Im Jahre 1614 gab John Napier (1550 – 1617) Logarithmentafeln heraus. Mit diesen Zahlenwerten konnte man die Multiplikation auf die Addition und die Division auf die Subtraktion zurückführen. Das vereinfachte nicht nur das schriftliche Rechnen der Kaufleute der damaligen Zeit, auch rechentechnisch lässt sich das leicht umsetzen: Wieder werden zwei Lineale nebeneinandergelegt und es werden Strecken addiert. Nur dass die Skaleneinteilung nicht so gleichmäßig wie auf dem Zeichenlineal ist: größeren Zahlen wird eine kürzere Strecke zugeordnet. John Napier entwarf auch ein System von Rechenstäbchen zur Durchführung von Multiplikationsaufgaben. Und schon 1622 entwickelt William Oughtred (1574 – 1660) den sogenannten Rechenstab, mit dem man multiplizieren und dividieren kann. Den Rechenstab mit verschiebbarer Zunge, mit dem bis in die 1970er-Jahre hinein in der Schule gerechnet wurde, schufen Edmund Wingate (1593 – 1656) und Seth Partridge (1603 – 1686).
B
B
Informationsverarbeitende Technik
1.5.2 Der Computer und sein Betriebssystem Der Computer als Einheit von Hardware und Software Ein Computer (auch Datenverarbeitungsanlage oder Rechner genannt) ist ein elektronisches System zur automatischen Verarbeitung von Informationen. Der Computer ist als Einheit von Gerätetechnik (Hardware) und Betriebssystem (Systemsoftware) zu betrachten. Ein Computer verarbeitet Eingabedaten in Ausgabedaten, ein grundsätzliches Prinzip – das EVA-Prinzip (Eingabe → Verarbeitung → Ausgabe) –, welches auch für alle Software gilt. Als Hardware bezeichnet man die technischen Geräte, die physischen Bestandteile des Computers. Hardware ist also alles, was man anfassen kann. Die Vorsilbe „hard“ (dt. hart) soll verdeutlichen, dass es sich bei der Hardware um unveränderbare Komponenten eines Computers handelt. Zur Hardware gehören insbesondere das Grundgerät, in dem meist auf einer Platine, dem Motherboard (Synonyme: Mainboard, Systemplatine, Hauptplatine), der Prozessor (das Kernstück des Computers), Speicherbausteine und weitere notwendige Funktionselemente (z. B. Grafikkarte) aufgesteckt sind. Im Grundgerät sind auch weitere Speichergeräte wie Festplatten-, CD-ROM- oder Diskettenlaufwerke eingebaut. Auch alle Ein- und Ausgabegeräte gehören zur Hardware. Manchmal bezeichnet man diese Geräte als periphere Geräte. Die Gesamtheit der Programme, die zur Steuerung der Hardware eines Computers und zum Lösen vielfältiger Aufgaben und Probleme notwendig sind, nennt man Software.
I
I
Die Vorsilbe „soft“ (dt. weich) soll veranschaulichen, dass es sich bei der Software um leicht veränderbare Komponenten eines Computers handelt. Man kann Software grob in 2 Kategorien unterteilen: • Systemsoftware (Betriebssystem): Das sind die Programme, die zur Steuerung der Hardware notwendig sind. Ferner gehört dazu sämtliche Software, die die Programmerstellung unterstützt (Programmierumgebungen). • Anwendersoftware: Hierzu gehören anwendungsneutrale Programme, z. B. zur Textbearbeitung oder Dateiarbeit. Dies ist also Software, die in ganz unterschiedlichen Bereichen der Arbeitswelt oder auch in der Freizeit einsetzbar ist. Zur Anwendersoftware gehören auch anwendungsspezifische Programme, z. B. zur Steuerung einer Werkzeugmaschine oder für spezielle Berechnungen. Auch Computerspiele kann man zu den anwendungsspezifischen Programmen rechnen, da sie spezielle Bedürfnisse befriedigen.
Computer kommt vom engl. „to compute“, was „berechnen“ bedeutet.
69
70
Grundbegriffe
Funktionseinheiten eines Computers Im Folgenden ist eine Übersicht über wesentliche physische Bestandteile eines Computers einschließlich seiner peripheren Geräte gegeben:
Eingabegeräte
Schnittstellen zu den Ein- und Ausgabegeräten
Motherbord
Tastatur
CPU PC-Grundgerät ROM
Maus für grafische Benutzeroberflächen
Festplatte
RAM
DVD/ CD-ROMLaufwerk
Scanner für Grafikeingaben
Ausgabegeräte
EINGABE
Monitor VERARBEITUNG Drucker
AUSGABE
I
I
CPU ist die Abkürzung für Central Processing Unit (deutsch: Zentrale Verarbeitungseinheit).
Die Funktionseinheiten, die im Grundgerät des Computers vereint und über ein sogenanntes Bussystem untereinander verbunden sind, werden in diesem Abschnitt beschrieben. Die Ein- und Ausgabegeräte werden in den Abschnitten 1.5.3 und 1.5.4 gesondert behandelt. Das Herzstück des Computers ist der Mikroprozessor (CPU), der auf einem sehr komplex aufgebauten Mikrochip untergebracht ist. Auf einem Chip können mehrere Millionen Transistoren vereint sein. Der Mikroprozessor besteht aus folgenden Komponenten: • arithmetisch-logische Einheit (ALU) zum Rechnen, • Register (Zwischenspeicher), • Steuerwerk.
Informationsverarbeitende Technik
Die Schnelligkeit eines Computers hängt entscheidend von der Verarbeitungsgeschwindigkeit (Taktfrequenz) der CPU ab, daher steht diese Kenngröße in Verkaufsprospekten von Computern oft an erster Stelle. Die Taktfrequenz bestimmt (ähnlich wie bei einer Digitaluhr) ein kleiner Schwingquarz. Die Frequenz wird in Megahertz (MHz) angegeben: „250 MHz“ bedeutet, dass der Prozessor pro Sekunde 250 Millionen Arbeitsschritte (Ja-Nein-Informationen) ausführt. International durchgesetzt haben sich vor allem zwei Linien: • Mikroprozessoren der Firma Intel (8086, 80286, 80386, 80486, Pentium), insbesondere dadurch, dass der Prozessor vom Typ 8086 ab 1978 in Personal Computer (PCs) der Firma IBM eingebaut wurde; seit 2006 werden Intel-Prozessoren auch in Macintosh-Computer eingebaut; • Mikroprozessoren der Firma Motorola (6502, 68000, 68040), die insbesondere für Macintosh Computer der Firma Apple entwickelt wurden (und in Europa kaum eine Rolle spielen).
Mikroprozessoren, die ursprünglich für die Computertechnik entwickelt wurden, findet man heute in ganz alltäglichen Dingen, in Haushaltsgeräten wie Waschmaschine und Mikrowelle, in Nachrichtengeräten wie Telefon und Fax, in Geld- und Parkhausautomaten oder in Kraftfahrzeugen (Antiblockiersystem, Kraftstoffeinspritzung).
Eine weitere Funktionseinheit, welche sich meist auf dem Motherboard befindet, sind die ROM-Bausteine. Mit ROM (read only memory, NurLese-Speicher) fasst man Festwertspeicher, also Speicher, deren Inhalt bereits bei der Herstellung festgelegt wird und nicht mehr verändert werden kann. Einer der ROMs ist das ROM-BIOS (Basic-Input-Output-System), das bei jedem Start des Computers sämtliche Hardwarekomponenten testet, den Rechner in Gang bringt und das Betriebssystem sucht. Auf dem Bild ist rechts neben dem BIOS der CMOS (RAM zum Eintragen der Uhrzeit) zu sehen, daneben die (hier runde) Batterie, die den CMOS mit Strom versorgt. Wichtig für eine schnelle Arbeit am Computer sind die RAM-Module. In den RAMs (random access memory, Speicher mit wahlfreiem Zugriff, Arbeitsspeicher) werden alle Programme geladen, mit denen während einer Sitzung am Computer gearbeitet wird. Für speicherintensive Benutzeroberflächen wie Windows oder Anwendungsprogramme wie MS Office ist es sinnvoll, die Kenngröße „RAM-Umfang“ relativ hoch zu wählen (512 MB und höher).
I
I
71
72
Grundbegriffe
Schnittstellen Alle peripheren Geräte (z. B. Ein- und Ausgabegeräte, externe Speicher) benötigen Anschlüsse an das Bus-System, sogenannte Schnittstellen.
I
Eine Schnittstelle (Interface) ist eine Verbindungsstelle zwischen Computern oder zwischen einzelnen Geräten des Computers zum Zweck des Informationsaustauschs.
serielle Schnittstelle
Bei einer seriellen Schnittstelle wird jedes einzelne Byte bitweise (nacheinander) über die Leitung geschickt. Sie ist die unkomplizierteste Art der Datenübertragung und wird dann genutzt, wenn es nicht auf hohe Geschwindigkeiten ankommt. Geräte, die oft an eine serielle Schnittstelle angeschlossen werden, sind Maus und Modem. Serielle Schnittstellen sind z. B. RS 232, RS 422 oder PS/2. Unter DOS und Windows heißen die seriellen Schnittstellen „COM“ (COM1, COM2, …). Für den seriellen Anschluss gibt es einen genormten 9-poligen Stecker.
Rechnerseite
Bei einer parallelen Schnittstelle (Parallelport, Druckerschnittstelle) wird jedes Byte über 8 parallele Leitungen transportiert. Sie wird dann genutzt, wenn es um schnelle Datenübertragung geht (z. B. Drucker). Unter DOS und Windows heißen die parallelen Schnittstellen „LPT“.
Druckerseite
USB ist die Abkürzung für universal serial bus.
Eine sehr schnelle, universelle Schnittstelle ist der USB, der als Bus ausgelegt ist: Es können beliebig viele Geräte angehängt werden, ohne dass diese sich gegenseitig stören. Anwenderfreundlich ist auch: Die Geräte können auch bei laufendem Rechnerbetrieb an den USB angeschlossen werden (Plug & Play). Betriebssysteme Ein wichtiger Software-Bestandteil des Computers ist das Betriebssystem. Es wird vom Computerhersteller im Allgemeinen mitgeliefert und besteht aus Steuer-, Datenverwaltungs-, Fehlerbehandlungs- und Dienstprogrammen sowie Programmierhilfen. Mit dem Begriff Betriebssystem (Systemsoftware) fasst man die Gesamtheit der Programme, die es gestatten, den Computer in Betrieb zu setzen, und die der Ausführung von Anwendungsprogrammen dienen, dabei eine effektive Auslastung des Computers gewährleis ten und teilweise in der Hardware (im ROM) fest eingespeichert sind. Im Einzelnen gehören dazu: • Organisationsprogramme (z. B. zur Ein-, Ausgabesteuerung und Speicherverwaltung oder zur Laufzeitorganisation), • Übersetzungsprogramme (für Programme höherer Programmiersprachen in Assembler- bzw. Maschinenprogramme), • Dienstprogramme (z. B. zum Initialisieren von Datenträgern, zur Dateiverwaltung; Editoren zur Programmkorrektur im Dialogbetrieb).
Informationsverarbeitende Technik
Bis 1980 war das Betriebssystem im Computer (meist einem Großrechner, an dem mehrere Terminals – Arbeitsplätze mit Monitor und Tastatur – hingen) „fest verdrahtet“. Dies hat aber etliche Nachteile: • Sind viele Terminals an einem Großrechner angeschlossen, verlängern sich die Wartezeiten der einzelnen Nutzer unerträglich, da der Rechner den Nutzern nur bestimmte Zeittakte für ihre Arbeit freigeben kann. • Bei einer Weiterentwicklung des Betriebssystems mussten Teile des Computers gegen neue ausgetauscht werden. • Die vorliegenden Anwendungsprogramme waren meist nicht auf andere Computer mit anderen Betriebssystemen übertragbar.
I I
Die Idee, dass jeder seinen persönlichen Computer (Personal Computer, PC) haben sollte, war deshalb revolutionierend. Das ab 1980 von der Firma Microsoft entwickelte Betriebssystem MS-DOS (Microsoft Disk Operating System) ist – wie der Name ausdrückt – durch ein externes Speichermedium (Diskette) installierbar und kann auch von der Diskette aus gestartet werden. Es wurde aus den Betriebssystemen CP/M und UNIX entwickelt. Das auf Personal Computern am meisten genutzte Betriebssystem ist das auf MS-DOS aufbauende Windows, in bestimmten Anwendungsbereichen auch Mac OS. Auf Großrechnern und in vernetzten Systemen ist das Betriebssystem UNIX (insbesondere die Varianten Linux und FreeBSD) verbreitet. Seit Anfang der 1990er-Jahre übernahmen Benutzeroberflächen (b Abschnitt 1.5.6) bestimmte Aufgaben des Betriebssystems, vor allem die Aufgaben der Dienstprogramme. So fasst man heute die Benutzeroberfläche Windows der Firma Microsoft als Betriebssystem (mit einem DOSKern) auf.
I
Aufgaben eines Betriebssystems 1. Ermöglichung der Kommunikation zwischen Nutzer und Rechner einschließlich des Ladens und Startens von Anwendungsprogrammen Die hierfür notwendigen Komponenten werden nach dem Start sofort in den Arbeitsspeicher geladen und verbleiben auch dort während der Arbeit am Computer: residenter Bestandteil des Betriebssystems. 2. Datenorganisation auf Festplatten und externen Datenträgern (Vorbereitung der Datenträger; Verzeichnisse erstellen; Dateien kopieren, löschen, umbenennen, …) Die elementaren Befehle hierfür sind Bestandteil der Dateien, die im Arbeitsspeicher resident sind. Viele Befehle befinden sich aber auch in eigenständigen Dateien, die auf der Festplatte in einem gesonderten Verzeichnis gespeichert sind, und nur in den Arbeitsspeicher geladen werden, wenn es notwendig ist: transienter Bestandteil des Betriebssystems. 3. Anpassung der Systemumgebung an Nutzerbedürfnisse (z. B. Programm abläufe effizienter gestalten, Speicherausnutzung optimieren)
I
I
73
74
Grundbegriffe
1.5.3 Eingabegeräte Zu den Eingabegeräten zählt man Tastatur, Maus, Scanner (Gerät zur punktweisen Eingabe von Bildern) und Joystick (Steuerknüppel; Gerät, das insbesondere bei Computerspielen zur waagerechten, senkrechten und diagonalen Bewegung von Bildschirmelementen benutzt wird). Die wichtigsten Eingabegeräte sind Tastatur und Maus (b folgende Abschnitte).
I Joystick
Scanner
Tastatur Die Tastatur dient zur Eingabe von Zeichen (auch Steuerzeichen) und ist i. Allg. mit einem Monitor gekoppelt. Die Tastatur ist in 4 Blöcke aufgeteilt: Steuerblock Esc ˆ
1 q
F1
F2
F3
2
3
4
w a y
d x
6
r
t f
c
7 z
g v
F6
b
8 u
h
Alt
F7 9
Num
p l
,
F10 F11 F12
ß
o k
m
F9 0
i j
n
F8
ü
ö .
+
Entf
ä -
AltGr
7
8
9
4
5
6
1
2
3
Strg 0
Schreibmaschinenblock
Bewegungsblock
&OUFS
< Strg
F5
5
e
s
F4
Numerikblock
In den einzelnen Blöcken findet man Sondertasten, die oft übergreifende Wirkung besitzen. Sie sind in die folgende Tabelle eingeordnet. Block
Funktion
Schreibmaschinenblock
Er dient zur Text- und Zahleneingabe. Die Tasten sind mehrfach belegt: • Im einfachen Modus erhält man Kleinbuchstaben und Ziffern. • In Verbindung mit der Shift-Taste < > ruft man Großbuchstaben und Sonderzeichen (!, ?, % usw.) ab. Den Shift-Modus kann man durchgängig erreichen, wenn die Shift-Lock-Taste < > einmal gedrückt wird. Auf der Tastatur rechts oben (in der Mitte) leuchtet dann eine Diode auf. Ein einmaliges Drücken von < > schaltet die Zweitbelegung wieder aus. • Manche Zeichen (eckige und geschweifte Klammern, @ usw.) gehören zu einer Drittbelegung (mit der gedrückten -Taste abrufbar). Tasten, wie , , (und , ) gelten nur in Verbindung mit anderen Tasten (werden immer zuerst gedrückt und festgehalten) und heißen deshalb auch Stummtasten.
Informationsverarbeitende Technik
Block
Funktion
Schreibmaschinenblock
Folgende Sondertasten sind von Bedeutung: • oder Tabulatorsprung • oder Eingabebestätigung • Löschtaste (Zeichen vor dem Cursor)
Bewegungsblock Mit den Cursor-Tasten (, , , ) erreicht man eine entsprechende Bewegung des Cursors (der Eingabemarke) auf dem Bildschirm. Über dem Cursor-Block findet man folgende Sondertasten: • oder Entfernen-Taste (Zeichen nach dem Cursor) • oder Einfügemodus (DOS-Ebene) • oder Bildlauf zum Zeilenanfang • oder Bildlauf zum Zeilenende • oder Bildlauf nach oben (oft seitenweise) • oder Bildlauf nach unten (oft seitenweise) Numerikblock
Der Numerikblock dient insbesondere der Eingabe von Zahlen und ReNum chenzeichen. Mit < > wird der Block ein- bzw. ausgeschaltet. Den aktivierten Modus erkennt man an der Leuchtdiode auf der Tastatur rechts oben (links). Gibt man den Dezimalwert für ASCII-Zeichen (b S. 23 ff.) auf dem Ziffernblock der Tastatur bei gedrückter -Taste ein, erhält man das gewünschte ASCII-Zeichen.
Steuerblock
Der Steuerblock besteht im Wesentlichen aus Funktionstasten (, , …, ), die dem Aufruf von Befehlen dienen. Die Tasten sind in den verschiedenen Programmen unterschiedlich belegt, ruft meist eine Hilfe auf. Zum Steuerblock gehören auch folgende Sondertasten: • Escape, Fluchttaste (Abbruch eines Kommandos) • Bildschirmausdruck (DOS-Ebene)
Maus Die Maus (mouse) ist ein meist auf Rollen gleitendes Eingabegerät, welches für menügesteuerte Programme und grafische Benutzer oberflächen entwickelt wurde. Sie ersetzt nicht die Tastatur, sondern erfüllt vor allem Funktionen des Bewegungsblocks der Tastatur. Die Maus wird auf einer festen Unterlage (Mousepad) hin und her bewegt, um den Cursor oder ein anderes Markierungssymbol auf dem Bildschirm zu steuern.
75
76
Grundbegriffe
Die Maus ist standardmäßig für Rechtshänder gedacht, man kann sie aber auf einen Modus für Linkshänder umstellen. In Windows geht man dabei folgendermaßen vor: Menü „Start“ (Task-Leiste) g „Einstellungen“ g „Systemsteuerung“ g „Maus“ g in der Registerkarte „Tasten“ die Tastenkonfiguration umschalten
Die (mechanische) Maus besteht insbesondere aus zwei Wellen und einer Kugel, womit waagerechte, senkrechte und in der Summe diagonale Bewegungen aufgenommen werden können. Die mechanischen Bewegungen werden in elektrische Signale gewandelt und an den Computer übertragen.
Lumineszenzdiode
Anpresswalze
Kugel
Durch das Bewegen der Maus auf dem Schreibtisch oder einer Unterlage wird schnell Staub und Schmutz aufgenommen. geschlitzte Die Wellen verkleben und die BeScheibe wegungsübertragung ist nicht mehr gewährleistet. Bleibt der Mauszeioptischer Sensor ger also auf dem Bildschirm „hängen“, ist eine gründliche Reinigung der mechanischen Teile angesagt. Hierzu schraubt man eine kleine Platte an der Unterseite der Maus auf, entfernt die Kugel und reinigt die Kugel und insbesondere die Wellen mit Alkohol und einem Pinsel, zur Not auch mit den Fingern. Für die Mausführung sind einige Regeln zu beachten: • Es sollte eine saubere, glatte, nicht zu harte, ausreichend große, nicht rutschende Mausunterlage gewählt werden. Das kann auch ein Platzdeckchen aus Weichplastik sein. • Beim Bewegen der Maus sollte der Handballen auf der Tischoberfläche mitrutschen. • Die Maus sollte mit der ganzen Hand in ihrer Position festgehalten werden, auch dann, wenn z. B. mit dem Zeigefinger die linke Maustaste gedrückt werden muss. Für die Arbeit mit der Maus sind folgende Begriffe wichtig: Techniken der Arbeit mit der Maus Zeigen Klicken Doppelklicken Anfassen Ziehen
Mauszeiger auf ein Objekt auf dem Bildschirm bewegen kurzes Drücken der Maustaste zweifaches Drücken der Maustaste in kurzer Folge auf ein Objekt zeigen, Maustaste drücken und gedrückt halten Maustaste gedrückt halten, während die Maus bewegt wird
Bei geringem Schreibtischplatz kann man statt einer Maus auch einen Trackball benutzen. Er sieht aus wie eine auf den Rücken gefallene Maus. Die Kugel wird mit dem Finger gerollt. Die Tasten befinden sich links und rechts der Kugel.
Informationsverarbeitende Technik
1.5.4 Ausgabegeräte Monitor Der Monitor (Bildschirm) macht den Zustand bzw. die Ausgabe eines Computers sichtbar. Er ist die wichtigste Verbindung zwischen Mensch und Computer, denn ohne ihn weiß der Nutzer nicht, ob seine Eingaben korrekt waren oder richtig ausgeführt wurden. Die Anzeige erfolgt elektronisch durch eine Kathodenstrahlröhre (Bildröhre) oder durch eine Flüssigkristallanzeige (LCD-Anzeige). Die LCD-Anzeige wird insbesondere bei kleinen, transportablen Computern (Laptops, Notebooks) verwendet, da die Monitore sehr flach sind und der Stromverbrauch gering ist. Da der Monitor das wichtigste Ausgabegerät ist, sollten unter ergonomischen und Arbeitsschutz-Gesichtspunkten die im Folgenden dargestellten Kenngrößen für Monitore beachtet werden: Kenngröße
Bedeutung
Bildschirmdiagonale
Die Bildschirmdiagonale gibt die Größe des sichtbaren Bildschirms in Zoll an. Für normales Arbeiten (auch in der Schule) reichen 17"-Monitore, für professionelle Layout- und Grafikarbeiten werden besser 21"-Monitore verwendet.
Auflösung
Mit „Auflösung“ fasst man die Anzahl der Bildpunkte, die horizontal und vertikal dargestellt werden können. Je höher die Auflösung ist, desto feiner ist das Bild, umso kleiner sind aber auch Menüs, Symbole und Schrift unter grafischen Benutzeroberflächen. Typische Werte sind: • 640 × 480 (Pixel) nicht für grafische Oberflächen geeignet • 800 × 600; 1024 × 768 für normale Arbeiten (auch in der Schule) • 1280 × 1024; 1600 × 1200 für professionelle Zwecke, 21"-Monitore
Zu den Ausgabegeräten zählt man Monitor, Drucker und Plotter (elektromechanisches Gerät zum Zeichnen von Kurven). Man kann auch an das Computergrundgerät oder an das CD-ROM-Laufwerk angeschlossene Lautsprecher zu den Ausgabegeräten rechnen.
I
I
77
78
Grundbegriffe
Kenngröße
1 Hz = 1} 1s
Bedeutung
Bildwieder- Die Bildwiederholfrequenz gibt an, wie oft das Moniholfrequenz tor-Bild in einer Sekunde aufgebaut werden kann. Sie wird in Hertz (Hz) angegeben. Je höher die Frequenz, desto flimmerfreier und ruhiger ist das Bild. Selbst bei einer Auflösung von 1024 × 768 sollten mindestens 70 Hz bis 100 Hz gewährleistet sein. und Bei LCD-Bildschirmen reichen oft (physikalisch bedingt) 60 Hz aus, weil die Dioden eine gewisse Nachleuchtzeit besitzen. Zeilenfrequenz
Als Kenngröße für Monitore wird oft noch die Zeilenfrequenz angegeben: Zeilenfr. = Zeilenanzahl · Bildwiederholfrequenz · 1,05 Zeilenfrequenz = 768 (Zeilen) · 80 Hz · 1,05 = 64 512 Hz ≈ 64,5 kHz Dies ist schon eine annehmbare Zeilenfrequenz.
I
RAM (random access memory): Speicher mit wahlfreiem Zugriff, b S. 71
Der Monitor wird von einer Grafikkarte gesteuert, die sich auf einem genormten Steckplatz (Slot) innerhalb des Computergehäuses befindet (b Bild). Oft sind Grafikkarten auch schon in das Motherboard integriert (on board). Grafikkarten besitzen meist einen eigenen RAM und einen Prozessor. Von der Grafikkarte hängt stark ab, ob die Kenngrößen eines Monitors voll „ausgereizt“ werden können. Andererseits hilft eine gute Grafikkarte keinem schlechten Monitor. Kenngröße
Bedeutung
RAM-Größe
Der RAM-Baustein der Grafikkarte sollte für fotorea listische Bildschirmdarstellungen mindestens 2 MB Speicherkapazität besitzen.
Bildwieder- Die Grafikkarte sollte die gleiche Bildwiederholfreholfrequenz quenz wie der Monitor besitzen. und Videobandbreite
Als Kenngröße für Grafikkarten wird oft die Video bandbreite (auch „Bildwiederholrate“ genannt) angegeben: Videobandbr. = Pixelanzahl · Bildwiederholfrequenz · 1,3
Videobandbreite = 1024 · 768 · 100 Hz · 1,3 ≈ 100 MHz
Informationsverarbeitende Technik
Drucker Neben dem Monitor ist der Drucker das am meisten genutzte Ausgabegerät. Im Laufe der Entwicklung wurden Drucker mit unterschiedlichen Funktionsprinzipien hergestellt:
I I
I
Typendrucker: Für jedes druckbare Zeichen ist – ähnlich wie bei einer Schreibmaschine – ein Typenträger vorgesehen. Der Wechsel des Zeichensatzes kann nur durch Austausch der Typenträger erfolgen. Nadeldrucker: Jedes Zeichen wird aus einzelnen Punkten einer Matrix zusammengesetzt (5 × 7 oder 7 × 9 Punkte). Man spricht auch von einem Matrixdrucker. Die Zeichen werden durch Nadeln erzeugt, die durch die Matrix hindurchschnellen und das Farbband auf das Papier drücken. Thermodrucker: Durch gezielte Wärmeeinwirkung, durch die temperaturempfindliches Papier seine Farbe ändert, werden die zu druckenden Zeichen dargestellt. Durchgesetzt haben sich vor allem folgende Druckertypen:
I
I
Tintenstrahldrucker: Diesen Druckertyp kann man zu den Matrixdruckern rechnen. Das Farbband entfällt und die Nadeln sind als feine Röhrchen ausgebildet, durch die Tinte auf das Papier gespritzt wird. Durch die großen Variationsmöglichkeiten des Punktrasters können sehr viele Schriftarten und Symbole dargestellt werden.
Laserdrucker: Die Zeichen werden durch einen Laserstrahl erzeugt und elektrofotografisch auf das Papier aufgebracht. Die Druckqualität ist sehr gut, die Druckgeschwindigkeit sehr hoch (bis zu 200 000 Zeichen pro Minute). Im Zusammenhang mit Druckern sind drei Begriffe wichtig:
I
Bei Matrix- und Laserdruckern ist dpi ein Maß für die Druckqualität: Anzahl der Punkte, die ein Drucker pro Inch (2,54 cm) erzeugen kann. Drucker mit 2 400 dpi haben eine sehr hohe Druckqualität, die im Verlagswesen zur Herausgabe von Vierfarbbüchern genutzt wird. Für Schwarz-
dpi ist die Abkürzung für dots per inch
79
80
Grundbegriffe
Weiß-Drucke oder Farbdrucke ohne Fotos reichen auch schon 1 200 dpi aus. Eine Druckqualität von 300 bis 600 dpi ist für nichtprofessionelle Zwecke völlig ausreichend.
I
Ein Druckertreiber ist ein Programm, welches auf Betriebssystemoder Benutzeroberflächenebene den Drucker steuert. Jeder Drucker hat einen eigenen Druckertreiber, der im Allgemeinen beim Kauf mitgeliefert wird. Man kann mit Druckertreibern auch ohne Druckeranschluss arbeiten. Viele Desktop-Publishing-Programme steuern auch die Monitorausgabe über Druckertreiber, man kann also schon am Bildschirm die Druckausgabe kontrollieren.
I
PostScript ist eine imperative Programmiersprache für die geräteunabhängige Beschreibung von Druckseiten. PostScript ist ein von der Firma Adobe entwickelter standardisierter Befehlssatz für Drucker, die in Belichtungsstudios zum Einsatz kommen. Man setzt am Computer ein Buch, speichert es mithilfe eines PostScriptDruckertreibers als Druckdatei ab und übergibt diese an das Belichtungsstudio, wo damit Filme für die Druckerei hergestellt werden (b S. 14). Viele Matrix- und Laserdrucker besitzen eine solche PostScript-Option, sind dadurch aber recht teuer. Der Vorteil ist: Man hat als Grafiker oder Setzer eine genaue Kontrolle über das tatsächliche Druckergebnis.
I
1.5.5 Externe Speicher Neben den RAMs im Mikroprozessor oder z. B. auf der Grafikkarte, die für die interne Befehlsausführung notwendig sind, gibt es eine Reihe externer Speicher, die insbesondere für die Datensicherung wichtig sind. Die wichtigsten externen Speicher für einen PC sind zurzeit Festplatte, CD-ROM, DVD und MemoryStick.
zu Speicherarten b Abschnitt 4.1.5, zu magnetischen Speichern insbesondere S. 400
I
Die Festplatte ist nicht nur zur Datensicherung von Bedeutung, sondern ohne große Festplatte ist die Arbeit mit speicherintensiven Benutzeroberflächen und Anwendungsprogrammen nicht möglich, denn diese werden dort abgelegt.
Informationsverarbeitende Technik
Die Festplatte besteht aus mehreren, übereinanderliegenden Scheiben, die sich je nach Typ (mit 3600 bis maximal 15000 Umdrehungen in der Minute) sehr schnell drehen. Der Schreib-/Lesekopf eines beweglichen Armes (ähnlich wie beim Plattenspieler) kann Daten magnetisch auf die Festplatte auftragen, lesen oder löschen. Ein älteres externes Speichermedium ist die Diskette. Ein Diskettenlaufwerk funktioniert so ähnlich wie ein Festplattenlaufwerk. Allerdings hat es nur eine einzige magnetisierbare Scheibe, die sich im Vergleich zur Festplatte sehr langsam dreht.
I
Die CD-ROM (auch einfach CD) ist ein aus der Audio-CD (CD-DA) entwickelter Datenträger in Form einer optischen Platte. Softwarehersteller speichern ihre Programme oder umfangreiche Datenmengen auf CD-ROMs, weil diese eine Speicherkapazität von ungefähr 650 MByte (neuerdings auch 700 MB oder 800 MB) haben. Zum Abspielen wird ein geeignetes Laufwerk benötigt, neben dem CD-ROM-Laufwerk können auch CD-R/ RW- und DVD-Laufwerke eingesetzt werden. Die Daten auf einer CDROM können nicht geändert werden. Mit sogenannten „Brennern“ kann man sich CDs selbst herstellen. Dabei gibt es zwei Möglichkeiten: • CD-R: Die gebrannte CD ist nicht änderbar. • CD-RW: Die CD kann mehrmals neu beschrieben werden.
CD-ROM ist die Abkürzung für compact disc read only memory, also einer CD, die nur gelesen werden kann.
Die DVD ist im Grunde genommen eine neuartige CD mit wesentlich höherer Kapazität. Es existieren unterschiedliche DVDTypen – nur lesbare oder wieder beschreibbare, allerdings sind letztere derzeit noch wenig verbreitet. Fast alle bisher verbreiteten DVDs werden nur auf einer Seite genutzt und verfügen dort auch nur über eine einzige Informationsschicht (DVD-5 mit 4,7 GByte). Es gibt weitere Varianten von nicht wieder beschreibbaren DVDs: DVD-9 mit 8,5 GByte (1 Seite, 2 Schichten), DVD-10 mit 9,4 GByte (2 Seiten, 1 Schicht) und DVD-18 mit 17,0 GByte (2 Seiten, 2 Schichten).
DVD ist die Abkürzung für digital versatile disc (vielseitige digitale Disc“ oder auch digital video disc (digitale VideoDisc).
Der MemoryStick („Speicherstab“, USB-Stick) ist eine kompakte Speicherkarte des Herstellers Sony, die vor allem in Digitalkameras und MP3Playern benutzt wird. Er wird aber auch mehr und mehr als Wechseldatenträger am PC verwendet. Der MemoryStick ist etwa 5 cm lang, 2 cm breit und 3 mm dick. Er wiegt nur wenige Gramm und hat eine Speicherkapazität bis zu 128 MByte.
Nebenstehend ist ein geöffnetes CDROM-Laufwerk mit CD-ROM abgebildet.
I I
Nebenstehend ist ein DVD-Laufwerk mit DVD abgebildet.
I
81
82
Grundbegriffe
1.5.6 Benutzeroberflächen Arten von Benutzeroberflächen Die Programme, mit denen man arbeitet, sollten so beschaffen sein, dass ihre Bedienung einfach ist, dass sie auf falsche Eingaben robust reagieren, dass sie sich nach den Denk- und Arbeitsweisen der Benutzer richten – eben dass sie benutzerfreundlich sind. Das Erscheinungsbild des Dialogs mit dem Computer und der Anwendungsprogramme auf dem Monitor heißt Benutzeroberfläche. In Abhängigkeit von Speicherkapazitäten und der immer stärkeren Verbreitung informationsverarbeitender Technik wurden im Laufe der Zeit verschiedene Arten von Benutzeroberflächen entwickelt:
I
I
Art
Beschreibung
kom- mando- gesteuert
Der Benutzer gibt über die Tastatur Betriebssystem Kommandos ein. Die Kommandos MS-DOS müssen syntaktisch korrekt sein, sonst erfolgt im Allgemeinen eine Fehlermeldung auf dem Monitor.
Beispiele
menü- gesteuert
Auf dem Bildschirm werden Listen von Kommandos angezeigt, die in der aktuellen Situation erlaubt sind. Der Nutzer wählt ein Kommando aus und legt damit Aktionen des Computers fest. Oft kann dabei die Maus eingesetzt werden.
Norton Commander (auf DOS aufgesetzte Benutzer oberfläche, die die Arbeit mit dem Betriebssystem erleichtert)
grafisch
Die Benutzeroberfläche erinnert an einen Schreibtisch, auf dem Programme zum Lösen von Arbeitsaufgaben abgelegt sind, die durch grafische Symbole (Icons) verdeutlicht werden. Die Anwendungen werden in Fenstern ausgeführt, die man verschieben, vergrößern oder verkleinern kann. Umfangreiche, aber übersichtliche Menüfolgen mit Klartext sowie Werkzeug-Symbolleisten unterstützen die Arbeit. Kommandos (über Tastenkombinationen) sind möglich.
Windows (vgl. die folgenden Seiten) X11 (grafische Benutzeroberfläche unter UNIX / Linux zur Arbeit mit Fens tern; mit den auf X11 aufgesetzten Desktops KDE und GNOME sind auch Befehle grafisch zugänglich)
Durchgesetzt haben sich die grafischen Benutzeroberflächen, da die Darstellung der Daten und Programme in grafischer Form, in Fenstern und bewegten Bildern, die leichte Interaktion und die vielen Kontrollmöglichkeiten bei der Ausführung von Dialogbefehlen den menschlichen
Informationsverarbeitende Technik
Denk- und Arbeitsweisen sehr nahekommen. Die Entwicklung und Nutzung von solchen Benutzeroberflächen wurde allerdings erst durch leis tungsfähige Mikroprozessoren (ab Intel 486 bzw. Pentium) und große Speicher (Arbeitsspeicher ab 8 MB, Festplatte ab 200 MB) möglich. Grafische Benutzeroberflächen Als Quasi-Standard für grafische Benutzeroberflächen hat sich Microsoft Windows durchgesetzt. Trotz vieler öffentlicher Kritik an Windows sowie der marktbeherrschenden Position der Firma Microsoft und ihres Gründers Bill Gates hat diese Standardisierung auch ihre positiven Seiten: • Es werden für den Nutzer wenig Vorkenntnisse im Umgang mit dem Computer vorausgesetzt. Elementare hardwarebezogene Aufgaben des Betriebssystems spielen sich im Verborgenen ab. • Die meisten Anwendungsprogramme sind Windows-Applikationen, d. h., dass Menü-, Dialog- und Fenstertechnik in diesen Anwendungsprogrammen ähnlich sind, ganz gleich, ob man mit einem Datenbank-, Textverarbeitungs-, Kalkulations- oder Grafikprogramm arbeitet. Im Folgenden werden daher wesentliche Elemente grafischer Benutzer oberflächen am Beispiel von Windows beschrieben. Wichtigstes Eingabegerät hierbei ist die Maus. Techniken der Arbeit mit der Maus sollten daher beherrscht werden (b S. 76). Auf dem Monitor erscheinen die Programme oder Programmgruppen als Icons (anschauliche, grafische Symbole). Den Start eines gewünschten Programms oder das Öffnen eines Fensters erreicht man dadurch, dass man das Icon markiert (anklickt) und danach die -Taste drückt oder einen Doppelklick mit der Maus auf das Icon ausführt. Die Icons können durch Ziehen mit der Maus an eine gewünschte Stelle verschoben werden. Der Nutzer richtet sich seinen „Schreibtisch“ entsprechend seinen Wünschen ein. Ein Icon, der Papierkorb, soll etwas näher betrachtet werden: Alle Dateien oder Verzeichnisse (Ordner), die gelöscht werden, landen im Papierkorb und man kann das Löschen leicht rückgängig machen. Versehentlich gelöschte Dateien sind also schnell wiederherstellbar. Löschen kann man Dateien unter Windows, indem man in Fenstern, in denen Dateien angezeigt werden, die entsprechenden Dateien markiert, den Menüpunkt „Datei“ auswählt und danach den Befehl „Löschen“ anklickt. Mit der -Taste erreicht man das Gleiche. Sollen Dateien tatsächlich gelöscht, also nicht erst in den Papierkorb geworfen, sondern gleich „verbrannt“ werden, dann ist dies dadurch erreichbar, dass man die Shift-Taste < > beim Löschen gedrückt hält. Nur Festplattenlaufwerke besitzen einen Papierkorb, Diskettenlaufwerke nicht, gelöschte Dateien sind also nicht mehr auf der Diskette vorhanden. Am unteren Ende des Bildschirms findet man die Task-Leiste. Hier werden alle geöffneten Fenster durch Schaltflächen angezeigt. Die TaskLeiste ist auch dann zu sehen, wenn man das Fenster eines Anwendungs-
83
84
Grundbegriffe
programms maximiert hat. Ein Wechsel zwischen den verschiedenen Programmen wird durch Anklicken der entsprechenden Schaltfläche erreicht.
Die Direkt-Hilfe von Windows lässt sich nicht nur über die Task-Leiste aufrufen, sondern auch mit der Funktionstaste oder dem HilfeMenü „?“ in den Arbeitsplatz- oder Explorerfenstern.
Ganz links ist die Schaltfläche „Start“ zu sehen. Bei Anklicken erscheint ein Menü mit wichtigen Befehlen (z. B. Aufruf von installierten Programmen, Änderungen von Einstellungen des Betriebssystems, Suchen von Dateien, Hilfe-Funktion, Beenden der Arbeit am Computer). Ein typisches Merkmal für die Arbeit mit grafischen Benutzeroberflächen ist die Arbeit in Fenstern. Mehrere Programmgruppen oder Anwendungsprogramme können gleichzeitig in verschiedenen Fenstern geöffnet werden, man kann bei der Arbeit zwischen den Fenstern hin- und herspringen. Die Fenster können durch Anklicken und Ziehen der Randleisten in die gewünschte Größe oder Form und durch Klicken auf die Leiste mit dem Namen des Fensters und Ziehen in die gewünschte Position auf dem Bildschirm gebracht werden.
Schaltflächen Fenster minimieren (auf der Task-Leiste ablegen)
Fenster maximieren (oder letzte Größe wiederherstellen)
Fenster (Anwendung) schließen
Bildlaufleisten Fensterausschnitt abwärtsrollen Ausschnitt durch Anfassen und Ziehen mit der Maus an die gewünschte Position bringen Ausschnitt abwärtsrollen
Ausschnitt nach links rollen
Ausschnitt nach rechts rollen
In fast alle Fenster ist die Menütechnik integriert. Ein Menü ist eine Liste von Befehlen, die in der aktuellen Situation am Bildschirm erlaubt bzw. möglich sind. Im obigen Bild werden in der Menüleiste beispielsweise die Menüs „Datei“, „Bearbeiten“, „Ansicht“, „Einfügen“, „Format“ und „?“ (Hilfe) angezeigt. Durch Anklicken des Menüs Datei erscheint das gesamte Untermenü wie ein Rollladen. Es heißt deshalb auch Pull-down-Menü. Selbst die Anordnung, die Bezeichnung und der Inhalt der Pull-down-Menüs ist in den Fenstern und Programmen unter Windows einheitlich.
Informationsverarbeitende Technik
Ganz links ist immer das Menü „Datei“ zu finden mit solchen Untermenüs wie „Neu“, „Öffnen“, „Speichern“, „Speichern unter…“, „Drucken“ oder (Programm) „Beenden“. Das Menü „Bearbeiten“ steht an zweiter Stelle mit Punkten wie „Ausschneiden“, „Kopieren“, „Einfügen“ usw. Befehle, die man in bestimmten Situationen nicht ausführen kann, sind grau gekennzeichnet. Befehle, die nicht direkt ausgeführt werden können, wo weitere Eingaben notwendig sind, sind mit drei Pünktchen (Öffnen eines Dialogfeldes) markiert. Manchmal reichen die Untermenüs eines Pull-down-Menüs nicht aus, es sind „Unter-Unter-Menüs“ erforderlich. Diese werden dann direkt neben den Untermenüs angezeigt. Man spricht von einem Pop-up-Menü. Um das in Windows integrierte kleine, aber durchaus leistungsfähige Textverarbeitungsprogramm WordPad aufzurufen, geht man wie folgt vor: Menü „Start“ (Schalter in der Task-Leiste) g „Programme“ g „Zubehör“ g „WordPad“. Menüs haben den Vorteil, dass man keine Kommandosprache beherrschen muss, um am Computer zu arbeiten. Allerdings kann man keinen Befehl überspringen, um zu einem bestimmten Menüpunkt zu gelangen und eine Aktion auszulösen. Fortgeschrittenen Nutzern helfen daher oft Tastenkombinationen (Hotkeys, „heiße Tasten“) für bestimmte Befehle, die ebenfalls bei der Arbeit mit grafischen Benutzeroberflächen möglich sind. Die Tastenkombinationen zum Auslösen von Aktionen stehen oft in den Untermenüs hinter den Befehlen. Einige sollte sich auch der Anfänger merken: Hotkey
Wirkung
+ s
Die aktuell bearbeitete Datei wird gespeichert.
+ p
Das Druck-Dialogfeld wird aufgerufen.
+ c + v
• Kopieren • Einfügen an eine zuvor markierte Stelle Die Tastenkombinationen + c und + v sind deshalb interessant, weil sie vielseitig anwendbar sind (auf markierte Dateien und Verzeichnisse, Grafiken, Textteile und Zeichen). Mit + c werden markierte Daten in die Zwischenablage von Windows kopiert, mit + v aus diesem Speicher herauskopiert. Die Daten bleiben bis zum Ausschalten des Computers dort bzw. werden beim nächsten Kopiervorgang überschrieben.
+ x
• Löschen markierter Objekte und Verschieben in die Zwischenablage
Immer im Kopf: + c und + v. Unter dem Betriebssystem Mac OS sind die Tastenkombinationen ähnlich, statt wird allerdings die •-Taste verwendet.
85
86
Grundbegriffe
1.5.7 Arbeit mit Dateien (Dateihandling) Dateiverwaltung Für das Betriebssystem besteht der Computer nur aus • Datenträgern (Disketten, Festplatten, CD-ROMs), vergleichbar mit Aktenschränken, die Aktenordner enthalten, • Verzeichnissen (Ordnern), vergleichbar mit Aktenordnern, die weiter geordnet sind und Akten enthalten, • Dateien, vergleichbar mit Akten (Texte, Bilder, …). Die Hierarchie der Ordnungsmittel ist in folgendem Klassendiagramm dargestellt: 0,1 0..*
DATENTRÄGER
1 0..*
ORDNER
0,1 0..*
DATEI
0,1 0..*
Objektbezeichnungen Alle Objekte haben bestimmte Bezeichnungen, die man nach festgelegten Regeln bilden muss, damit sie das Betriebssystem erkennen und unterscheiden kann. Vereinbarungen für Datenträgerbezeichnungen Windows
A: B: C: D: E: … Z:
Diskettenlaufwerke Festplatten oder Teile von Festplatten (Partitionen), DVD-Laufwerke, CD-ROM-Laufwerke, virtuelle Speicher, MemoryStick
Linux
Alle Datenträger oder Partitionen erhalten beliebige Namen mit einer maximalen Länge von 255 Zeichen (z. B. cdrom) und werden als Ordner in genau einem Ordnerbaum eingebunden.
Der Name von Verzeichnissen (Ordnern) darf unter MS-DOS aus maximal 8 Zeichen bestehen. Ab Windows 95 und unter Mac OS sind, um die Aussagekraft solcher Bezeichnungen zu erhöhen, auch mehr Zeichen zugelassen. Um die Kompatibilität (die Austauschbarkeit) zwischen verschiedenen Betriebssystemen und Datenträger-Standards zu gewährleisten, ist man aber gut beraten, bei der Vergabe von Verzeichnisnamen nicht mehr als 8 Zeichen zu verwenden. Man sollte möglichst nur Buchstaben oder Ziffern verwenden, statt dem Leerzeichen den Unterstrich: _
Informationsverarbeitende Technik
Vereinbarungen für Ordnerbezeichnungen Windows
Das höchste Verzeichnis (der Hauptaktenordner) heißt Hauptverzeichnis (Wurzelverzeichnis, root) und hat den Namen „\“ (Backslash). Um ein ganz bestimmtes Unterverzeichnis zu kennzeichnen, muss der gesamte „Pfad“, der durchlaufen werden muss, um zu ihm zu gelangen, angegeben werden: E:\WORD\TEXTE\NUTZER1
Linux
Pfadangaben beginnen mit „/“ (Slash), dem Zeichen für die Wurzel. Im folgendem Beispiel ist noch der Ordner cdrom für das gleichnamige Laufwerk angegeben: /cdrom/WORD/TEXTE/NUTZER1
Dateibezeichnungen werden folgendermaßen gebildet: dateiname.erweiterung Der Dateiname besteht (unter MS-DOS) aus maximal 8 Zeichen und wird vom Nutzer festgelegt. Nicht zugelassen sind Leerzeichen und Sonderzeichen wie : . * ^ @ \ / < > ; Der Unterstrich ( _ ) ist erlaubt. Es sollten keine Umlaute benutzt werden. Auch dürfen folgende Namen nicht verwendet werden, da sie Schnittstellen (Gerätetreiber) bedeuten: CON AUX COM1 COM2 PRN LPT1 LPT2 LPT3 NUL Unter Windows, Linux/UNIX und Mac OS können mehr Zeichen verwendet werden. Auch können unter bestimmten Betriebssystemen durchaus Umlaute oder Leerzeichen genutzt werden. Man sollte dies dennoch vermeiden. Die Erweiterung besteht (unter MS-DOS und Windows) aus maximal 3 Zeichen und gibt den Typ der Datei an. Die Erweiterung wird i. Allg. durch das genutzte Anwendungsprogramm selbst festgelegt. BRIEF_1.DOC könnte ein Brief an einen Verwandten sein. Den Dateinamen BRIEF_1 hat der „Schreiber“ festgelegt, die Endung DOC wurde durch das genutzte Programm (z. B. Word) erstellt.
Unter Linux gelten die gleichen Regeln wie unter Windows oder MS-DOS. Allerdings ist die Großund Kleinschreibung zu beachten und ausführbare Dateien haben normalerweise keine Datei endung (wie EXE).
Verwaltung von Datenträgern Datenträger müssen formatiert (in Spuren und Sektoren eingeteilt) sein, bevor sie Daten aufnehmen können. Alle Daten, die sich vor diesem Vorgang auf dem Datenträger befinden, werden gelöscht. Gekaufte Datenträger sind heute meist schon formatiert. Trotzdem ist es unter Umständen notwendig, einen Datenträger neu zu formatieren, z. B. dann, wenn man sicher sein will, dass alle Daten (beispielsweise Viren) auch wirklich gelöscht sind. Formatieren von Disketten unter Windows: – Diskette in das Diskettenlaufwerk einlegen – Doppelklicken auf das Symbol Arbeitsplatz und dann Klicken auf das Symbol für den Datenträger, der formatiert werden soll – Menü „Datei“ g „Formatieren“
Das Formatieren der Festplatte sollte dem Systembetreuer überlassen bleiben!
87
88
Grundbegriffe
Disketten kann man mithilfe des Betriebssystems kopieren und man kann ihnen Namen geben. Zum Kopieren von CDs oder DVDs wird spezielle „Brennersoftware“ genutzt. Arbeit mit Verzeichnissen Durch Verzeichnisse kann die Ablage von Dateien auf einem Datenträger sinnvoll organisiert werden. Auf einer Festplatte können mehrere Tausend Dateien gespeichert sein. Sind diese nicht geordnet abgelegt, können einzelne Dateien schwer wiedergefunden werden. Auch Disketten sollten durch Verzeichnisse mit ausdrucksstarken Bezeichnungen zur Dateiaufnahme vorbereitet werden. Ein solcher „Verzeichnisbaum“ kann beispielsweise folgendermaßen aussehen: \
Dos
Texte
Briefe
Rechnung
Diagramm
Sonst
Privat Gesch
Arbeit mit Verzeichnissen Das Umbennen von Verzeichnissen ist unter älteren DOSVersionen eigentlich nur möglich, indem man ein neues Verzeichnis anlegt, alle Unterverzeichnisse und Dateien des alten Verzeichnisses hineinkopiert und das alte Verzeichnis dann löscht.
MS-DOS
Mit den Befehlen MD und RD können Verzeichnisse angelegt bzw. gelöscht werden. MD TEXTE ein Verzeichnis TEXTE wird angelegt RD TEXTE das Verzeichnis TEXTE wird gelöscht Ein Verzeichnis kann nur vom übergeordneten Verzeichnis aus gelöscht werden. Es muss leer sein. Mit CD kann man Verzeichnisse wechseln: CD\ Wechsel ins Wurzelverzeichnis CD\SPIELE Wechsel von einem beliebigen Verzeichnis über das Wurzelverzeichnis ins Verzeichnis SPIELE CD.. Wechsel ins nächsthöhere Verzeichnis Das aktuelle Verzeichnis ist erkenntlich am Prompt-Zeichen, der Eingabeaufforderung vor jeder Befehlszeile. Das Standard-Prompt-Zeichen ist pfad> Der Verzeichnisbaum eines Datenträgers wird mit dem transienten Befehl TREE angezeigt. TREE A: zeigt alle Verzeichnisse im Laufwerk A: TREE C: /F zeigt alle Verzeichnisse und zusätzlich alle Dateien auf der Festplatte an; mit unterbrechbar
Informationsverarbeitende Technik
Arbeit mit Verzeichnissen Windows
Verzeichnisse anzeigen: – Doppelklicken auf das Symbol Arbeitsplatz – Doppelklicken auf das Symbol für das entsprechende Laufwerk (Windows zeigt die Dateien und Verzeichnisse auf dem Laufwerk an) – Man kann einen Ordner öffnen, indem man darauf doppelklickt. (Man kann zum vorhergehenden Ordner wechseln, indem man auf in der Symbolleiste klickt oder die Rücktaste drückt.) Die Hierarchie aller Verzeichnisse wird nur im WindowsExplorer angezeigt: – Menü „Start“ g „Programme“ g „Zubehör“ g „Windows-Explorer“ – auf ein Verzeichnis auf der linken Seite des Fensters klicken, um dessen Inhalt auf der rechten Seite anzuzeigen (Man kann die Größe von beiden Fensterseiten ändern, indem man die Trennleiste entsprechend zieht. Man kann ein Verzeichnis schnell öffnen und dessen Unterverzeichnisse anzeigen, indem man auf das Verzeichnis auf der linken Seite des Fensters doppelklickt.) – auf das Pluszeichen (+) klicken, um Unterverzeichnisse anzuzeigen Neue Verzeichnisse können im Arbeitsplatz oder WindowsExplorer erstellt werden: – Menü „Datei“ g „Neu“ g Ordner (Das neue Verzeichnis erscheint mit einem temporären Namen.) – Namen für das neue Verzeichnis eingeben; Im Arbeitsplatz oder Windows-Explorer können auch Verzeichnisse einfach gelöscht (anklicken und -Taste) oder umbenannt werden (zweimaliges Klicken – kein Doppelklick – auf das Verzeichnis; Namen ändern).
Linux
Nach dem Einloggen wird die Shell gestartet. Verzeichnisse lassen sich mit mkdir erstellen und mit rmdir löschen. Man kann sich das aktuelle Verzeichnis mit pwd anzeigen lassen. Mit cd können Verzeichnisse gewechselt werden: cd .. wechselt in das nächsthöhere Verzeichnis, cd / wechselt in das Wurzelverzeichnis, cd /user/lib wechselt in das Verzeichnis lib über user. Für die relative Pfadangabe sind zwei Einträge von Bedeutung: „.“ steht für das jeweilige Verzeichnis selbst und „..“ steht für das nächsthöhere Verzeichnis. Den Inhalt eines Verzeichnisses kann man sich mit ls auflisten lassen.
89
90
Grundbegriffe
Joker Wichtig für die Arbeit mit Dateien sind Jokerzeichen. Mit ihnen können gezielt bestimmte Gruppen von Dateien und Verzeichnissen „herausgefiltert“ werden. Auch für die Suche im Internet sind sie von Interesse. Dort nennt man sie aber im Allgemeinen Wildcards. Joker sind Platzhalter für ein oder mehrere Zeichen in Dateibezeichnungen bzw. Verzeichnisnamen. Der Joker „?“ steht für ein beliebiges Zeichen, der Joker „*“ für mehrere Zeichen. do?ument.doc
*.txt tmp*.* a* do?ument.*
Es wird nach einer Datei gesucht, die sowohl dokument.doc als auch document.doc heißen könnte bzw. in der ein beliebiger Buchstabe an der 3. Position vorkommen kann. Es wird nach allen Dateien gesucht, die die Endung txt besitzen. Es wird nach allen Dateien gesucht, die mit tmp beginnen. Es wird nach allen Dateien und Verzeichnissen gesucht, die mit a beginnen. Es wird nach allen Dateien gesucht, deren Name z. B. dokument oder document oder ähnlich sein könnte. Die Endung ist beliebig.
Arbeit mit Dateien
Unter Linux stehen Editoren wie vi, joe, emacs, oder elvis zum Erstellen von Textdateien zur Verfügung.
Dateien können auf verschiedene Art und Weise erzeugt werden: • Mit den Befehlen COPY CON, EDIT und EDLIN stellt MS-DOS Editoren („Texterzeuger“) bereit, mit denen man kleine ausführbare Dateien (z. B. Programme mit der Endung „.BAT”) selbst herstellen kann. • Mit Programmierumgebungen kann man Dateien (Programme) erzeugen. Die Endung „.PAS” steht z. B. für Turbo-Pascal-Programme. • Anwendungsprogramme erzeugen Dateien. Zum Beispiel erzeugt Works für Windows Textdateien (Endung „.WPS”), Kalkulationstabellen und Diagramme (Endung „.WKS”), Datenbank-Dateien (Endung „.WDB”) und Datenfernübertragungs-Dateien (Endung „.WCM”). Natürlich können auch fertige Dateien in die angelegten Verzeichnisse kopiert werden. Arbeit mit Dateien MS-DOS
Mit dem Befehl DIR werden Dateien in einem Verzeichnis angezeigt: DIR C:\DOS zeigt den Inhalt des DOS-Verzeichnisses an DIR *.COM zeigt alle Dateien im aktuellen Verzeichnis mit der Endung COM an DIR /w Anzeige in 5 Spalten; Angaben zur Größe usw. entfallen DIR /p seitenweise Auflistung der Dateien im aktuellen Verzeichnis
Informationsverarbeitende Technik
Arbeit mit Dateien MS-DOS
Die allgemeine Syntax zum Kopieren lautet: COPY lw:\pfad\quelldatei lw:\pfad\zield Beispiel: COPY C:\TEXTE\BRIEF.DOC A:\BRIEF1.DOC Befindet man sich gerade im Quellverzeichnis, kann dieses weggelassen werden. Befindet man sich im Zielverzeichnis kann der gesamte „Zielblock“ wegfallen. Der Befehl DEL ist zum Löschen zuständig, der Befehl REN zum Umbennen: DEL OTTO.TXT löscht Datei OTTO.TXT DEL *.SIK löscht alle Dateien mit der Endung .SIK DEL *.* löscht alle Dateien im aktuellen Verzeichnis; Sicherheitsabfrage ist mit „J“ zu beantworten REN UMSATZ2.WKS VERLUST.WKS Umbenennung einer Datei im aktuellen Verzeichnis Mit Umbenennungen sollte man vorsichtig sein. Oft sind Dateien miteinander verknüpft und mit der Bezeichnungsänderung gehen meist auch die Verknüpfungen verloren. (b auch Randspalte)
Windows
Bei Dateibezeichnungen sollte man nicht die Endung umbenennen, damit das Programm, mit dem die Datei erstellt wurde, sie wiedererkennt. Durch Umbenennung der Endung erreicht man auch keine Änderung des Dateiformats, dies können nur spezielle Konvertierungsprogramme.
Die Anzeige von Dateien erfolgt wie die Anzeige von Verzeichnissen (b S. 89 oben). Dateien kopieren (b auch Randspalte): – im Arbeitsplatz oder Windows-Explorer auf die Datei klicken, die kopiert werden soll – Menü „Bearbeiten“ g „Kopieren“ – Ordner oder Laufwerk öffnen, wo Kopie abgelegt werden soll – Menü „Bearbeiten“ g „Einfügen“ Man kann mehrere Dateien und Ordner zum Kopieren auswählen, indem man bei gedrückter -Taste alle gewünschten Elemente anklickt. Dateien löschen: – im Arbeitsplatz oder Windows-Explorer Dateien auswählen, die gelöscht werden sollen – oder Menü „Datei“ g „Löschen“ Man kann mehrere Dateien und Ordner zum Löschen auswählen, indem man bei gedrückter -Taste alle gewünschten Elemente anklickt. Dateien, die hintereinander aufgelistet sind, kann man markieren und auswählen, indem man die < >-Taste gedrückt hält. Die ausgewählten Dateien werden standardmäßig nicht gelöscht, sondern im Papierkorb abgelegt. Endgültiges Löschen kann man dadurch erzwingen, dass beim Löschen die < >-Taste gedrückt gehalten wird. Zum Umbenennen wird auf die Dateibezeichnung zweimal geklickt (kein Doppelklick) und die Änderung vorgenommen.
Kopieren von Dateien mit der Maus: Man kann Dateien mit der Maus aus einem Verzeichnis in ein anderes Verzeichnis ziehen. Dazu müssen Quellund Zielverzeichnis in geöffneten Fens tern sichtbar sein. Befinden sich Quellund Zielverzeichnis auf demselben Laufwerk, wird die Datei verschoben; befinden sich Quellund Zielverzeichnis auf verschiedenen Laufwerken, wird die Datei kopiert. Man kann Windows zum Kopieren – auch auf dem gleichen Laufwerk – zwingen, indem man die -Taste gedrückt hält.
91
92
Grundbegriffe
Arbeit mit Dateien Linux
Wird ein auf Linux aufgesetzter Desktop wie KDE verwendet, geschieht das Dateihandling so ähnlich wie unter Windows.
Die Dateien des aktuellen Verzeichnisses kann man sich mit ls auflisten lassen, ls –l listet zusätzlich die Dateiangaben auf. Neben dem Dateinamen, der Dateigröße und dem Erstellungsdatum werden jeweils noch Eigentümer und Zugriffsrechte angezeigt. Jeder Systembenutzer gehört einer Gruppe an. Gleichzeitig kann er auch Mitglied anderer Gruppen sein. Die persönlichen Zugriffsrechte ergeben sich aus den Zugriffsrechten der Gruppen: r (read) Leseberechtigung Berechtigung zum Anlegen von Verzeichnisw (write) sen und Dateien x (execute) Ausführungsberechtigung Mit mv wird eine Datei umbenannt, mit rm gelöscht. Mit cp dateiname ziel lassen sich Dateien kopieren, mit move verschieben (oder umbenennen). Mit den Hilfsprogrammen more und less kann man in Textdateien blättern, kürzere Dateien werden am schnellsten mit cat auf den Monitor gebracht.
1.5.8 Arbeitsschutz Im Zusammenhang mit der Arbeit am Computer fällt oft der Begriff „Ergonomie“, der aber eine umfassendere Bedeutung besitzt: Ergonomie: Wissenschaftliche Disziplin, die sich mit der Anpassung von Arbeitsmitteln und Arbeitsumgebungen an Eigenschaften und Bedürfnisse der Menschen beschäftigt, um deren Gesundheit zu schützen und ihre Leistungsfähigkeit zu erhöhen. In der Informatik unterscheidet man oft zwischen Software- und Hardware-Ergonomie. Die Software-Ergonomie befasst sich mit der Gestaltung dialog orientierter Programmsysteme und Benutzeroberflächen, die den geistigen, körperlichen und sozialen Bedürfnissen der Menschen entgegenkommen. So fordert man heute auch in Bewertungskriterien für den Einsatz des Computers in der Schule leistungsstarke Benutzeroberflächen, die die Schüler mit möglichst wenig Details des Betriebssystems und der Hardware konfrontieren, damit sie sich in der informationstechnischen Grundbildung und bei der Verwendung des Computers in anderen Unterrichtsfächern auf wesentlichere Inhalte konzentrieren können.
Informationsverarbeitende Technik
Die Hardware-Ergonomie beschäftigt sich mit der Anpassung der Arbeitsgeräte (Monitor, Tastatur, Maus, …) und der Arbeitsumgebung (Stuhl, Tisch, Beleuchtung, …) an die körperlichen und psychologischen Eigenschaften der am Computer arbeitenden Menschen. Es geht letztlich um die Gesundheit: Schlechtes Licht kann zu Kopfschmerzen und Augenbeschwerden führen; ein zu hoher Bildschirm oder Tisch begünstigt einen gekrümmten Rücken, einen verspannten Nacken oder ebenfalls Kopfschmerzen und Augenprobleme. Auch für die Schule gelten Vorschriften und technische Regelwerke hinsichtlich ergonomischer Anforderungen, die einzuhalten sind. Dazu gehören: • staatliche Regelungen wie die Bildschirmarbeitsverordnung (BildSchArbV) als Umsetzung der EU-Richtlinie 90/270EWG vom 29.5.1990 sowie das Gesetz über technische Arbeitsmittel; • Regelungen von Unfallversicherungsträgern wie GUV 17.7 (Sicherheitsregeln für Büroarbeitsplätze von 1979), GUV 17.8 und 23.3 sowie 50.12 (Sicherheitsregeln für Bildschirmarbeitsplätze im Bürobereich von 1980, 1994 bzw. 1997); • unzählige Normen des Deutschen Instituts für Normung e. V. (DIN), die ca. alle 5 Jahre überarbeitet werden, sowie europäische und internationale Normen (ISO). Im Folgenden sind ergonomische Anforderungen an Computerarbeitsplätze aufgeführt, die bei der Einrichtung von Computerkabinetten und bei der Arbeit am Computer zu beachten sind: • Gesundheitliche Probleme können vor allem durch die Arbeit am Monitor auftreten. • Die auf dem Bildschirm dargestellten Zeichen müssen scharf, deutlich und ausreichend groß sein sowie einen angemessenen Zeichenund Zeilenabstand haben. • Das Bild muss stabil und frei von Flimmern sein und darf keine Verzerrungen aufweisen. Der Monitor sollte strahlungsarm sein. • Die Helligkeit der Bildschirmanzeige und der Kontrast müssen einfach einstellbar sein und den Verhältnissen der Arbeitsumgebung angepasst werden können. • Bei längerer Arbeit am Computer sollten grelle Farben bei den Bildschirmeinstellungen vermieden werden, Schwarz-Weiß-Einstellungen sind für die Augen gut. • Der Bildschirm muss frei von Reflexionen und Blendungen sein. Es ist also immer auf den Einfallswinkel von Sonnenstrahlen oder elektrischer Beleuchtung zu achten. • Der Bildschirm sollte immer sauber sein. Man sollte ihn nicht berühren bzw. z. B. Fingerabdrücke entfernen. • Der Monitor muss frei drehbar und neigbar sein. • Die Tastatur muss vom Monitor getrennt und neigbar sein. Sie muss eine reflexionsarme Oberfläche besitzen. Die Beschriftung der Tasten muss bei normaler Arbeitshaltung gut lesbar sein. Die Arbeitsfläche vor der Tastatur muss ein Auflegen der Handballen ermöglichen.
T
I
b auch Kenngrößen von Monitoren, S. 77, 78
93
Grundbegriffe
• Alle Eingabegeräte (Tastatur, Maus) müssen auf dem Arbeitstisch variabel angeordnet werden können. Der Arbeitstisch muss eine ausreichend große und reflexionsarme Oberfläche besitzen. Der Arbeitsstuhl muss ergonomisch gestaltet und standsicher sein. Wenn eine ergonomisch günstige Arbeitshaltung ohne Fußstütze nicht erreicht werden kann, muss diese zur Verfügung gestellt werden. Ein Beispiel für eine günstige Anordnung von Arbeitsmitteln und ergonomische Sitzhaltung wird im folgenden Bild gegeben. Kopfneigung: 5°– 20°
Neigung der Sehachse: 5°–35°
Öffnungswinkel des optimalen Sehfeldes: 20°–25°
45 cm – 70 cm
72 cm
5°
42 cm – 53 cm
94
• Am Arbeitsplatz muss ausreichender Raum für wechselnde Arbeitshaltungen und -bewegungen vorhanden sein. Wenn eine Stunde am Computer gearbeitet wurde, sollte eine Pause von 10 Minuten eingelegt werden. • Die Beleuchtung muss an das Sehvermögen des Benutzers angepasst sein. Dabei ist ein angemessener Kontrast zwischen Bildschirm und Arbeitsumgebung zu gewährleisten.
Das Wichtigste im Überblick
Informatik Wissenschaft von der automatischen Informationsverarbeitung
Grundbegriffe
Algorithmus
Information
Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht. Algorithmen können mit der Umgangssprache, grafisch oder als Programm dargestellt werden. Ein Computer kann nur Probleme lösen, die sich als Algorithmen beschreiben lassen.
Bedeutung (Sinn) einer Nachricht für den Empfänger. Informationen, die in den Computer eingegeben und durch ihn verarbeitet werden, heißen Daten. Die kleinste Einheit der Datendarstellung ist ein Bit. Ein Bit kann 2 Werte annehmen (0 und 1). Die Zusammenfassung von 8 Bit heißt Byte (Zeichen).
Computer
&ingabe
7erarbeitung
"usgabe
Arbeitsspeicher Maus Prozessor (CPU)
Tastatur
Rechenwerk
Scanner Joystick
Bildschirm
Speicherwerk
Drucker Lautsprecher
Steuerwerk
Mikrofon
Kopfhörer
Festplatte
Diskette
CD-ROM/DVD
externe Speicher
Speichereinheiten • 1 KByte (Kilobyte) = 1024 Byte ≈ 1000 Byte • 1 MByte (Megabyte) ≈ 1 Million Byte • 1 GByte (Gigabyte) { 1 Milliarde Byte
95
96
Grundbegriffe
1.6
Datenschutz und Datensicherheit, Software-Rechte
Aus der schnellen Verfügbarkeit von Daten und deren Konzentration in vernetzbaren Datenbanken, durch die relativ einfachen Vervielfältigungsmöglichkeiten aber auch Zerstörungsmöglichkeiten von Daten und Programmen ergeben sich eine Reihe von Problemen, auf die sich die Begriffe „Datenschutz“, „Datensicherheit“ und „Software-Rechte“ beziehen. Datenschutz: Schutz des Bürgers vor Beeinträchtigungen seiner Privatsphäre durch unbefugte Erhebung, Speicherung und Weitergabe von Daten, die seine Person betreffen.
Datensicherheit: Vermeidung von Datenverlusten oder -verfälschungen, die durch unsachgemäße Ablage oder durch Zerstörung entstehen können.
Software-Rechte: Gesamtheit der staatlich festgelegten oder allgemein anerkannten Normen des Umgangs mit fremden oder selbst erstellten Programmen, elektronischen Texten, Bildern oder sonstiger Software.
1.6.1 Datenschutz Grundrecht auf Datenschutz Als im Zusammenhang mit der Einführung eines maschinenlesbaren Personalausweises in der Bundesrepublik Deutschland 1983 eine Volkszählung durchgeführt werden sollte, weigerten sich viele Bürger, die entsprechenden, umfangreichen Formulare auszufüllen. Gegen den Widerstand der Bundestagsmehrheit, der meisten Bundesländer und vieler Experten, gegen den Druck des Bundesinnenministeriums wurde das Problem des Datenmissbrauchs einer breiten Öffentlichkeit bekanntgemacht und ein richtungsweisendes gerichtliches Urteil (Urteil des Ersten Senats des Bundesverfassungsgerichts vom 15. Dezember 1983) erstritten. In diesem Urteil heißt es u. a.: „Wer damit rechnet, daß etwa die Teilnahme an einer Versammlung oder einer Bürgerinitiative behördlich registriert wird und daß ihm dadurch Risiken entstehen können, wird möglicherweise auf die Ausübung seiner entsprechenden Grundrechte verzichten. Dies würde nicht nur die individuellen Entfaltungschancen des einzelnen beeinträchtigen, sondern auch das Gemeinwohl, weil Selbstbestimmung eine elementare Funktionsbedingung eines auf Handlungs- und Mitwirkungsfähigkeit seiner Bürger begründeten freiheitlichen demokratischen Gemeinwesens ist.“
Datenschutz und Datensicherheit, Software-Rechte
97
Die geplante Volkszählung der Deutschen von 1983 wurde als teilweise verfassungswidrig erklärt. Weitaus wichtiger ist allerdings, dass das Bundesverfassungsgericht ein Grundrecht auf Datenschutz festgelegt hat. Dieses Grundrecht auf Datenschutz beinhaltet verschiedene Komponenten, die man mit den Begriffen informationelles Selbstbestimmungsrecht, Zweckentfremdungsverbot und informationelle Gewaltenteilung fassen kann. Diese Komponenten sind in der folgenden Tabelle dargestellt. Komponenten des Grundrechts auf Datenschutz informationelles Selbstbestimmungsrecht
• Schutz des Einzelnen gegen unbegrenzte Erhebung, Speicherung, Verwendung und Weitergabe persönlicher Daten • Jeder Bürger kann grundsätzlich selbst über die Preisgabe und Verwendung seiner persönlichen Daten bestimmen. • Dieser Schutz basiert auf der Auslegung des Art. 2 Abs. 1 (freie Entfaltung der Persönlichkeit) in Verbindung mit Art. 1 Abs. 1 (Menschenwürde) der Verfassung.
Zweckentfremdungsverbot
• Werden personenbezogene Daten gesammelt, muss der Gesetzgeber den Verwendungszweck bereichsspezifisch und präzise bestimmen. Es ist außerdem ein Nachweis erforderlich, dass die gesammelten Daten für den verwendeten Zweck geeignet sind. • Die Sammlung personenbezogener Daten auf Vorrat ist unzulässig. • Vorkehrungen zur Durchsetzung des Zweckentfremdungsverbots: • Aufklärungs-, Auskunfts- und Löschungspflichten • Weitergabe- und Verwertungsgebote • Kontrolle durch „unabhängige Datenschutzbeauftragte“
informationelle • Innerhalb einer Verwaltung oder Behörde darf Gewaltenteilung nicht jede Stelle im Interesse des Schutzes des Einzelnen und der gegenseitigen Machtkontrolle alles über jeden wissen. Datenschutz ist eine gesellschaftliche Aufgabe und muss mit rechtlichen Mitteln durchgesetzt werden. Das Problem möglichen Datenmissbrauchs wurde seit Anfang der 1980erJahre insbesondere dadurch akut, dass umfangreiche Datenbanken in verschiedenen gesellschaftlichen Bereichen entstanden. Im Folgenden sind sowohl für den staatlichen als auch für den privatwirtschaftlichen Bereich wichtige Datenbanken aufgeführt.
Neben dem Grundgesetz (der Verfassung) der BRD regeln das Bundesdatenschutzgesetz (BDSG) vom 20.12.1990 und eine entsprechende Europarichtlinie zum Datenschutz vom 24.10.1995 den Umgang mit personenbezogenen Daten.
T
T
98
Grundbegriffe
Datenbanken im staatlichen Bereich Sozialdatenbank
Datenbank mit Angaben zur sozialen Sicherung von Bürgern beim Bundesministerium für Arbeit und Sozialordnung
Ausländer- register
Datenbank mit Wohnsitzen und Personendaten in Deutschland lebender Ausländer
Verkehrszentralregister
Datenbank beim Kraftfahrtbundesamt mit Angaben über Fahrzeuge, Halter und Verkehrsverstöße
Datenbanken der Polizei
• ZPI (Zentraler-Personen-Index) mit Angaben über Personalien sowie Fundstellen von Akten im Polizeibereich • PIOS (Personen, Institutionen, Objekte, Sachen) mit Angaben zu Rauschgifthandel und Terrorismus • SSD (Straftaten-/Straftäterdatei) mit Angaben über Straftaten, Tatumstände, Täter und Zeugen • SIS (Schengener Informationssystem), länderübergreifendes computergestütztes Fahndungssystem mit Zentralcomputer in Strasbourg (Das Schengener Informationssystem trat am 26.3.1995 in Kraft und ist das erste länderübergreifende computergestützte Fahndungssystem.)
Datenbanken im privatwirtschaftlichen Bereich Schufa
Datenbank der Schutzgemeinschaft zur allgemeinen Kreditsicherung In ihr sind Daten über alle Kontenbesitzer von Banken und Sparkassen gespeichert. Banken und Sparkassen erhalten von der Schufa Auskünfte über die Kreditwürdigkeit ihrer Kunden.
Reisebüro
In solchen Datenbanken sind alle Flüge mit zugehörigen Daten abgespeichert – einschließlich der Information, ob ein gewünschter Flug ausgebucht ist oder nicht.
Versicherungen
• Alle Kfz-Besitzer sind in einer zentralen Datenbank aller Kfz-Versicherer gespeichert. Allein das Kfz-Kennzeichen reicht aus, um die Besitzer von Kraftfahrzeugen, deren Versicherung und Versicherungsnummer zu ermitteln. • Seit 1984 existiert in der BRD auch eine Datenbank über Kfz-Besitzer, die in einen Schadensfall verwickelt sind.
Personal- informations- systeme
In einigen Großbetrieben der Bundesrepublik exis tieren Datenbanken, in denen umfangreiche Daten über alle Betriebsangehörigen gespeichert sind.
Datenschutz und Datensicherheit, Software-Rechte
Es ist heute leicht möglich, Datenbanksysteme „zusammenzuschalten“. Die Auswirkungen eines solchen Zusammenschlusses können sein: • Durch die Verknüpfung verschiedener Datensammlungen entsteht ein Persönlichkeitsbild jedes Bürgers (der sogenannte „gläserne Mensch“). Der Einzelne weiß dabei nicht, welche Informationen über seine Person wem zur Verfügung stehen. • Völlig nebensächliche Daten können das Persönlichkeitsbild verfälschen. • Die Informationen können von dem, der darüber verfügt, missbraucht werden. Bei der Weitergabe von personenbezogenen Daten im privatwirtschaftlichen Bereich, z. B. an Versicherungen oder Versandhäuser, sollte Folgendes beachtet werden: Jeder hat das Recht, solche Daten zurückzuhalten, die zum Missbrauch führen können oder die für den eigentlichen Zweck der Datenerhebung nicht notwendig sind.
T T
I
Im Bundesdatenschutzgesetz, welches sowohl für private Unternehmen als auch für Bundesbehörden gilt, sind eine Reihe von weiteren Rechten der Bürger bezüglich ihrer Personen-Daten niedergelegt. Die Landesdatenschutzgesetze, die für die entsprechenden Landesbehörden gelten, untermauern diese Rechte. Rechte der Bürger nach den Datenschutzgesetzen Jeder Bürger hat das Recht auf • Auskunft darüber, welche Daten von ihm gespeichert sind, über den Zweck der Speicherung und über die Herkunft der Daten; • Berichtigung falsch gespeicherter Daten; • Löschung unzulässig gespeicherter Daten; • Sperrung von Daten (wenn die Richtigkeit der Daten nicht feststellbar ist); • Schadenersatz, wenn dem Betroffenen ein Schaden durch die unzulässige oder falsche Speicherung der Daten entstanden ist. Internet und Datenschutz Für eine Weitergabe personenbezogener oder personenbeziehbarer Daten ist nach dem Bundesdatenschutzgesetz und der Landesdatenschutzgesetze die schriftliche Einwilligung des Betroffenen erforderlich. Gibt jemand solche Daten von sich selbst oder auch von anderen auf einer Web-Site oder in einer E-Mail weiter, muss ihm bewusst sein, dass die Datenweitergabe nicht auf einen klar abgegrenzten Personenkreis zielt, sondern sie macht die betreffenden Daten allen zugänglich, die einen Internetanschluss besitzen. Die maschinelle Verarbeitung und Speicherung dieser personenbezogenen Daten ist jedem sehr leicht möglich. Nach und nach kann auf diese Weise ein umfangreiches Dossier über jeden Bürger angelegt werden.
Eine Versicherung ist zwar an Informationen über die Krankheitsanfälligkeit eines Kunden interessiert, diese Daten sollten aber verweigert werden. Das Alter des Kunden muss ein Versandhaus nicht wissen.
I
99
100
Grundbegriffe
Diese Möglichkeiten werden heute auch schon für kommerzielle Zwecke benutzt. So gibt es (vor allem in den USA) Firmen, die OnlineBestellungen bzw. Einkäufe über das Internet von bestimmten Personen analysieren, Persönlichkeitsprofile zusammenstellen und die gesammelten Daten an Versandhäuser verkaufen, da diese dann ganz gezielt personenbezogene Werbung betreiben können.
Pretty Good Privacy: b S. 103
Bei der Weitergabe von personenbezogenen Daten sollte man also auch im Internet das Folgende bedenken: • Es ist zu entscheiden, ob die Daten für die betreffende Person mehr oder weniger sensibel sind. Daten, die man auch in einem Telefonbuch finden kann (z. B. Name, Vorname, evtl. Privatadresse) sind offensichtlich nicht geschützt. Handelt es sich um weitergehende Informationen (Bild, evtl. Telefonnummer, beruflicher Werdegang, Interessen), können diese durchaus zweckentfremdet verwendet werden. • Einmal weitergegebene Daten kann man später nicht wieder zurücknehmen. Deshalb sollte man im Zweifelsfall möglichst wenige Daten auf einer Web-Site veröffentlichen oder zur Veröffentlichung freigeben. • Bei einigen Internetdiensten wie Telnet (Zugriff auf fremde Computer) wird ganz bewusst die Festplatte des eigenen Computers für fremde Nutzer freigegeben. Hier kann Datenschutz nur durch klar festgelegte und eingegrenzte Zugriffsrechte und -möglichkeiten gewährleistet werden. Personenbezogene Daten sollte man möglichst überhaupt nicht auf der Festplatte seines Computers speichern, sondern auf externen Datenträgern. • Insbesondere für E-Mails gilt, dass eine Information nur den Adressaten erreicht und sonst niemanden. Eine E-Mail findet ihr Ziel erst, nachdem sie über viele Rechner gelaufen ist. Der Versand gleicht somit dem Verschicken von Informationen per Postkarte. Auf jedem dieser Computer kann der Text vom Systemverwalter gelesen werden. Dieser hat bestimmt andere Sorgen, als alle E-Mails zu lesen. Trotzdem: Man sollte dort, wo es notwendig erscheint, im Internet Daten so versenden, dass die Inhalte von Dritten nicht mitgelesen werden können. Hierzu gibt es Verschlüsselungs- und Entschlüsselungsprogramme (z. B. „Pretty Good Privacy“). • Für das eigene E-Mail-Postfach sollten keine naheliegenden Passwörter und für verschiedene Zugänge verschiedene Passwörter verwendet werden (b folgenden Abschnitt „Datenverschlüsselung“). Datenverschlüsselung In etlichen Anwendungsprogrammen kann eine Datei mit einem Passwort (Kennwort) zur Überprüfung der Identität des berechtigten Nutzers versehen werden. Dabei kann der Zugriff oft auf eine Kombination von Lesen, Schreiben und Ausführen beschränkt werden.
Datenschutz und Datensicherheit, Software-Rechte
Bei der Vergabe von Passwörtern sollte man einige Regeln beachten: – Keine Namen oder häufig vorkommende Begriffe verwenden! Wenn ein unberechtigter Nutzer beispielsweise die Vornamen aus der Familie des Anwenders kennt, kann er das Passwort recht schnell finden. – Mindestanzahl von Zeichen verwenden! Hierdurch wird die Anzahl der Kombinationsmöglichkeiten größer. – Einprägsame Passwörter verwenden! Leicht kann es passieren, dass man sein Passwort vergisst. Das Ausprobieren der häufigsten eigenen Passwörter bringt selten Erfolg, weil viele Softwaresysteme den Zugang nach mehrmaligem erfolglosen Zugriff sperren. – Möglichst auch Ziffern und Sonderzeichen verwenden! Auch wenn sich solche Passwörter meist nicht gut merken lassen, für den unberechtigten Nutzer (den Hacker) wird es schwieriger, das Passwort zu „knacken“. – Niemandem das eigene Passwort verraten! Die Passwort-Methode hat jedoch einige Nachteile: – Nicht in jedem Softwaresystem ist es möglich, Passwörter zu vergeben. – Personen, die mit Computern vertraut sind (Wartungs- und Bedienungspersonal), können diesen Schutz leicht umgehen. – Wurde das Passwort über das Betriebssystem des Computers vergeben, unterliegen extern (z. B. auf Disketten) gespeicherte Dateien nicht mehr der Zugriffskontrolle durch den Computer. Sicherer für die Speicherung und Übertragung von Daten, die nur bestimmten Nutzern zugänglich sein sollen, ist die Methode der Verschlüsselung. Bei der Verschlüsselung (Chiffrierung) werden im Allgemeinen Zeichen und Zeichengruppen durch andere Zeichen nach einem bestimmten Schlüssel (Chiffre) ersetzt. Sollen die Daten vom Empfänger gelesen werden, läuft der Vorgang umgekehrt ab (Entschlüsselung, Dechiffrierung). Datenschutz ist eine Methode, die in der Geschichte der Menschheit schon immer eine Rolle gespielt hat. Oft mussten vertrauliche Botschaften zwischen Königen und Kriegsherren, Kaufleuten und anderen Personen übermittelt werden, wobei selbst der Bote, der Überbringer der Nachricht, deren Inhalt nicht kennen durfte. Die Spartaner schrieben vor 2500 Jahren ihre Nachrichten auf schmale Pergamentstreifen, die sie in vielen Windungen um einen zylindrischen Stab gewickelt hatten. Die Botschaft wurde am Stab entlang (von oben nach unten) geschrieben, der Rest der Pergamentrolle wurde mit sinnlosen Buchstaben gefüllt. Der Empfänger besaß einen Stab gleicher Form und Größe, auf den er das Pergamentband aufwickelte und so die Botschaft entschlüsseln konnte. Der Schlüssel war hier also der Stab.
In den Jahren 1986 und 1987 sind deutsche Hacker in über 100 Computer der amerikanischen Raumfahrtbehörde NASA eingedrungen. Sie veränderten Betriebssysteme so, dass sie sich mit einem eigenen Passwort offiziell anmelden konnten.
101
102
Grundbegriffe
Der römische Imperator Julius Cäsar ersetzte für vertrauliche Nachrichten einfach jeden Buchstaben des Textes durch jenes Zeichen, dass im Alphabet 3 Plätze weiter steht. Heraus kam ein unleserlicher Text. Der Empfänger kannte den Schlüssel, er musste jeden Buchstaben jeweils durch den Buchstaben ersetzen, der im Alphabet 3 Plätze vorher steht. Der französische Diplomat Blaise de Vigenère (1523 –1596) verbesserte die Cäsar-Verschlüsselung: Das Alphabet wird nicht immer um die gleiche Anzahl von Stellen verschoben, sondern die Anzahl der Stellen variiert. Beispiel: Schlüssel: (2,1,5) Text: ULLILIEBTULRIKESEHR Weiterzählen um: 2152152152152152152 Geheimtext: WMQKMNGCYWMWKLJUFMT
B
Im Zweiten Weltkrieg benutzten die Deutschen zur Verschlüsselung von militärischen Botschaften eine mechanische Chiffriermaschine mit dem Namen „Enigma“. Der englische Geheimdienst stellte zum Zwecke der Dechiffrierung eine große Gruppe von Spezialisten (unter ihnen Alan Mathison Turing, dem eine mathematisch exakte Definition des Begriffs „Algorithmus“ gelang) zusammen. Schließlich wurde der Code entschlüsselt und der Kriegsverlauf zugunsten Englands erheblich beeinflusst. Nach dem Zweiten Weltkrieg entwickelte sich eine eigenständige Disziplin der Mathematik, die Kryptografie (Kryptologie), die sich mit Verschlüsselungsverfahren beschäftigte. Ins Bewusstsein einer breiten Öffentlichkeit trat die Kryptografie allerdings erst im Zusammenhang mit dem Internet. Es gibt unterschiedliche Verschlüsselungsverfahren für Daten, über die im Folgenden ein Überblick gegeben wird:
DES ist die Abkürzung für Data Encryption Standard.
IDEA ist die Abkürzung für International Data Encryption Algorithmus.
Anfang der 1970er-Jahre wurde DES von der Firma IBM entwickelt und 1974 von der US-Regierung veröffentlicht. DES wird oft heute noch benutzt. Es basiert auf dem System der Chiffriermaschine Enigma (b 3. Beispiel auf dieser Seite) und vertauscht Zeichengruppen eines Textes und ersetzt sie dann durch andere Buchstaben. Ab 1990 entwickelten Xueija Lai und James Massey das weitaus sicherere Verfahren IDEA. IDEA verwendet einen 128 Bit langen Schlüssel, aus dem 52 Teilschlüssel erzeugt werden. Der Quelltext wird in Datenblöcke der Länge 64 Bit zerlegt, die Teilblöcke wiederum in vier 16 Bit lange Blöcke. Der IDEA-Algorithmus ersetzt nun in jedem Verschlüsselungsschritt jeden 16-Bit-Block durch ein vollkommen anderes Bitmuster gleicher Länge – und dies insgesamt achtmal. Zum Schluss wird aus den Teilblöcken wieder eine 64 Bit lange (nun verschlüsselte) Zeichenkette erzeugt. Sowohl DES als auch IDEA beruhen auf einem symmetrischen Verschlüsselungsprinzip, d. h., die Zeichenvertauschung wird vom Empfänger der verschlüsselten Nachricht Schritt für Schritt rückgängig gemacht, der Empfänger muss den Schlüssel kennen.
Datenschutz und Datensicherheit, Software-Rechte
Im Internet mit Millionen von Teilnehmern, die sich oft persönlich nicht kennen, ist es fast unmöglich, jedem berechtigten Nachrichtenempfänger den passenden Schlüssel zukommen zu lassen, ohne dass diese Schüssel gelegentlich in falsche Hände gelangen. Whitfield Diffie und Martin Helman entwickelten in den 1970er-Jahren ein Chiffrierverfahren, welches man als asymmetrisches Verschlüsselungsverfahren bezeichnet: Es gibt zwei Schlüssel, den einen benutzt man zum Chiffrieren, den anderen zum Dechiffrieren. Einen der beiden Schlüssel kann man öffentlich zugänglich machen (Public-Key-Verfahren). Im Jahre 1977 wurde das asymmetrische Verschlüsselungsverfahren RSA vorgestellt. Das Verfahren ist sehr sicher, wird aber meist nur für kurze Nachrichten benutzt, da die Verschlüsselung ca. tausendmal länger als mit DES oder IDEA dauert. Asymmetrische Verschlüsselungsverfahren nutzen i. Allg. Primzahlen. Große Primzahlen kann man zurzeit (und wohl auch zukünftig) nur durch systematisches Probieren in Primfaktoren zerlegen. Dies ist auch mit Computern sehr zeitaufwendig und deshalb sind asymmetrische Verfahren außerordentlich sicher.
RSA steht für die Nachnamen der Entwickler Ron Rivest, Adi Shamir und Leonard Adleman.
zu Public-Key-Verfahren b Mosaik auf der folgenden Seite
Zusammengefasst sei folgende Übersicht gegeben: symmetrische Verfahren
asymmetrische Verfahren
Die Zeichenvertauschung wird vom Empfänger der verschlüsselten Nachricht Schritt für Schritt rückgängig gemacht. Der Empfänger muss den Schlüssel kennen.
Es gibt zwei Schlüssel, einen öffentlichen (public key) und einen privaten (private key). Die Dechiffrierung kann jeweils nur mit dem Gegenstück erfolgen.
Zur Verschlüsselung sensibler Daten für das Internet wird heute meist das von Philip Zimmermann entwickelte Pretty Good Privacy (PGP) benutzt. Dieses Programm kombiniert symmetrische und asymmetrische Verfahren: Die Nachricht wird mit IDEA verschlüsselt, es werden also Zeichengruppen vertauscht und durch andere Zeichen ersetzt. Für jede Nachricht gibt es einen eigenen IDEA-Schlüssel. Der für den Empfänger bestimmte öffentliche Schlüssel wird mit RSA erzeugt und mit der chiffrierten Nachricht versandt. In der Bundesrepublik gibt es keine gesetzlichen Einschränkungen hinsichtlich der Nutzung von Verschlüsselungsverfahren, weil aus allen Teilen der Gesellschaft hiergegen protestiert wird. In den USA und in Frankreich ist die Verschlüsselung von Nachrichten nur erlaubt, wenn der Staat einen „Nachschlüssel“ besitzt. Es wird befürchtet, dass Polizei und Geheimdienst ihre Aufgaben nicht wahrnehmen können. Die Europäische Union hat dazu in einer Mitteilung vom 8.10.1997 festgestellt: „Eine Einschränkung der Verwendung von Verschlüsselungstechnologien könnte gesetzestreue Unternehmen und Bürger daran hindern, sich selbst gegen kriminelle Angriffe zu schützen, aber sie würde nicht bewirken, Kriminelle von deren Verwendung abzuhalten.“
I
103
Martin Helman, Whitfield Diffie und Ralph Merkle entdeckten das im Folgenden beschriebene Verfahren 1976 und ließen es sich 1977 patentieren.
Public-Key- Verfahren
Alex und Bea wollen nach dem Diffie-Helman-Merkle-Algorithmus Nachrichten via Internet austauschen. Als öffentlicher Schlüssel werden eine Primzahl p und eine Zahl g mit 2 ≤ g ≤ p – 2 genutzt. Alex denkt sich einen geheimen Schlüssel aus: a mit 1 ≤ a ≤ p – 2. Er errechnet A mit A ≡ ga (mod p) und schickt A als weiteren öffenlichen Schlüssel an Bea. Das Gleiche vollführt Bea. Ihr geheimer Schlüssel ist b mit 1 ≤ b ≤ p – 2. B wird an Alex gesendet. Dabei ist B ≡ gb (mod p). Alex rechnet nun den Schlüssel K folgendermaßen aus: K ≡ Ba (mod p). Bea geht ähnlich vor: K ≡ Ab (mod p). Es lässt sich nachweisen, dass wirklich K ≡ Ba (mod p) ≡ Ab (mod p) gilt. Der gemeinsame Schlüssel K ist niemandem außer den beiden zugänglich, er wurde ja jeweils mit den privaten Schlüsseln a bzw. b errechnet. Interessant dabei ist, dass z. B. Bea den privaten Schlüssel von Alex nicht kennt. Beim Diffie-Helman-Merkle-Verfahren handelt es sich um eine sogenannte Einwegfunktion: Die eine Richtung ist leicht, die andere sehr schwierig oder gar nicht zu berechnen. Die Eingabedaten sind aus den Ausgabedaten nicht mehr zu ermitteln, es sei denn, man versucht alle möglichen Zahlenkombinationen (a, p) und (b, p) die die Reste A bzw. B ergeben, zu ermitteln und die daraus resultierenden Werte für K auf die verschlüsselte Nachricht anzuwenden (wenn man außerdem noch weiß, wie dieser Schlüssel auf eine Nachricht von Bea oder Alex angewendet wurde). Bei großen p ist das Verfahren sehr sicher. Außerdem kann der Schlüssel schnell geändert werden: p kann aus einer Primzahltabelle gesucht werden. Sich eine Zahl a (oder b) ausdenken, ist nicht schwer. Und auch das Errechnen von K bereitet keine Schwierigkeiten, wenn man weiß, dass man mit Restklassen so
rechnen kann wie mit ganzen Zahlen (nur die Division führt aus der entsprechenden Zahlenmenge heraus und darf nicht genutzt werden).
Ein (einfaches) Beispiel (mit kleinem p): g = 4, p = 11 a=9 A ≡ 49 (mod 11) ≡ (43)3 (mod 11) ≡ 643 (mod 11) ≡ (–2)3 (mod 11) ≡ –8 (mod 11) ≡ 3 (mod 11) = 3 b=5 B ≡ 45 (mod 11) ≡ (43 · 42) (mod 11) ≡ (–2 · 5) (mod 11) ≡ –10 (mod 11) ≡ 1 (mod 11) = 1 K ≡ 35 (mod 11) ≡ (27 · 9) (mod 11) ≡ (5 · 9) (mod 11) ≡ 45 (mod 11) ≡ 1 (mod 11) = 1 bzw. K ≡ 19 (mod 11) = 1 Sobald der Schlüssel erstellt ist, kann der Sender ein Verfahren wie DES oder IDEA verwenden, um seine Nachricht zu verschlüsseln. Das beschriebene Schlüsselaustauschverfahren ist etwas umständlich, weil die Teilnehmer bei einer Nachricht online sein müssen, denn jeder muss im öffentlichen Gespräch seinen Teil zur Berechnung des Schlüssels K beitragen. Whitfield Diffie und Martin Hellman veröffentlichten ihr Konzept der asymmetrischen Verschlüsselung bereits 1975, ohne auch nur eine notwendige Einwegfunktion gefunden zu haben. Ron Rivest, Adi Shamir und Leonard Adleman gingen nach der Diffie-Hellman-Veröffentlichung ebenfalls auf die Jagd von Einwegfunktionen und wurden fündig: Sie entwickelten 1977 das nach ihnen benannte RSA-Verfahren. Es basiert auf der Idee, zwei sehr große Primzahlen (mit 100 Dezimalstellen) zu multiplizieren, was recht einfach ist. Das Produkt N dieser Zahlen wird (zusammen mit einer weiteren Zahl e) als öffentlicher Schlüssel verschickt. Der umgekehrte Weg, die Zerlegung der großen Zahl in Primfaktoren ist ungleich schwieriger. Der Schlüssel kann auf jedes einzelne Wort angewandt werden. Die Buchstaben des Wortes werden mit dem ASCII-Code in eine Zahl umgewandelt: Aus „Alex“ wird „065108101120“ (065 steht für A, 108 für l, ...). Für die weitere Codierung C des Wortes W wird folgende Formel benutzt: C ≡ We (mod N).
Datenschutz und Datensicherheit, Software-Rechte
I
1.6.2 Datensicherheit Bei der Arbeit an informationsverarbeitender Technik, im Umgang mit Anwendungsprogrammen und insbesondere mit Datenbanksystemen hat Datenschutz auch eine technische Bedeutung im Sinne von Datensicherheit: Wie können gesammelte Daten vor Verlust oder unsachgemäßer Veränderung durch andere Nutzer geschützt werden? Wie sollten umfangreiche Datenmengen strukturiert und abgelegt werden, damit sie jederzeit leicht wiedergefunden werden können? D atenverwaltung Mit der Zeit sammelt sich bei der Arbeit am Computer ein riesiger Berg von Daten an. Ein Beispiel: Auf einer Festplatte, auf der 2 GByte Speicherplatz belegt waren, fanden sich 13 000 Programmdateien und noch einmal so viel Textdateien, Grafikdateien usw. Es ist unumgänglich, dass diese Daten geordnet werden, z. B. wie in einem Aktenschrank (Datenträger), indem in einzelnen Fächern (Partitionen) Aktenordner (Verzeichnisse) stehen, in denen gebündelt (Unterverzeichnisse) Schriftstücke (Dateien) abgelegt sind. Durch eine sinnvoll strukturierte Datenablage auf den Speichermedien kann also die Wiederauffindbarkeit von Dateien und damit die Datensicherheit erhöht werden. Das bedeutet im Einzelnen: – Benennung von Festplatten, Festplattenpartitionen, Disketten, CDs und anderen Datenträgern (Label-Vergabe); – Anlegen von Verzeichnisbäumen mit ausdrucksstarken Bezeichnungen (b S. 88, 89); – Vergabe von Dateinamen in Anwendungsprogrammen, die auf den Inhalt schließen lassen. D atensicherung Daten, die für den Nutzer wichtig sind, müssen gespeichert werden. Dies kann auf der Festplatte, aber auch auf externen Speichermedien geschehen. Dabei ist Folgendes zu beachten: • Sobald man beispielsweise mit einem Anwendungsprogramm einen Brief begonnen oder eine Kalkulations-Datei eingerichtet hat, sollte man der Datei einen Namen geben und sie speichern. Stürzt der Computer ab, weil der Strom ausgefallen ist, sind alle nicht gespeicherten Daten unwiederbringlich verloren, die Arbeit war umsonst. Die Speicherung sollte in regelmäßigen Abständen erfolgen. Die meisten Anwendungsprogramme erlauben eine automatische Speicherung nach einem vom Nutzer einzustellenden Zeitrhythmus. Dies kann aber oft als störend empfunden werden, da man während der Speicherung größerer Dateien nicht an der Datei arbeiten kann. • Fast alle Programmiersysteme und Anwendungsprogramme erlauben es, Sicherungskopien von Dateien anzulegen: Mit dem aktuellen Speichern wird gleichzeitig die zuletzt gespeicherte Version in eine Sicherungsdatei umgewandelt (oft an der Endung .BAK zu erkennen). Stürzt das Programm durch einen Eingabefehler oder durch andere Probleme ab, wird manchmal auch die gerade geöffnete Datei zerstört. Die Siche-
105
106
Grundbegriffe
rungskopie aber, mit der nicht gearbeitet wird, ist noch vorhanden und kann wieder in eine „normale“ Datei umgewandelt werden. • Jede wichtige Datei sollte neben der Speicherung auf der Festplatte auf externen Datenträgern (CD, MemoryStick, …) gespeichert werden. Solche „Backups“ von Sicherungskopien sollten regelmäßig (z. B. am Ende eines Arbeitstages) vorgenommen werden. • In regelmäßigen Abständen bzw. nach der Beendigung von größeren Projekten sollte die Festplatte von nicht mehr benötigten, aber schon auf externen Speichermedien gesicherten Dateien befreit werden. Dabei ist zu beachten, dass man nicht aus Versehen eine falsche Datei löscht (z. B. durch die Verwendung von Jokern). • Beim Anlegen von Sicherungskopien auf Disketten und anderen Magnetspeichern sind folgende Hinweise zu beachten: • Disketten dürfen nicht in die Nähe von elektrischen Geräten, die Magnetfelder aufbauen (Monitor, Computergrundgerät), gebracht werden. • Disketten sind in staubfreier Umgebung stehend aufzubewahren. Die Öffnung für den Schreib-/Lesekopf darf nicht berührt werden. • Der hardwaremäßige Schreibschutz verhindert versehentliches Zerstören von Dateien und die Übertragung von Computerviren. • Der Schreib-/Lesekopf des Diskettenlaufwerks liegt beim Zugriff auf die Diskette auf ihrer Oberfläche. Insbesondere an der FAT, wo das Verzeichnis aufgetragen ist, führt die Reibung zur Minderung der Magnetisierung. Nach einiger Zeit wird die Diskette unbrauchbar. Eine Sicherungskopie der Sicherungskopie wird unvermeidlich. Erschreckend ist das Phänomen, dass mit jeder Höherentwicklung der Speichertechnik auch Information massenhaft verlorengeht, weil die Träger der Information einem größeren Verschleiß unterliegen und auch die Speicherungstechnik schneller veraltert: Mehr als 3000 Jahre alte Tontafeln kann man heute noch entziffern, weil die Keilschrift „dechiffriert“ ist. In einer von Johann Gutenberg im 16. Jahrhundert gedruckten Bibel aus säurefreiem Papier kann man heute noch blättern und lesen. Eine vor 70 Jahren gepresste Schelllack-Schallplatte kann man heute noch hören, wenn man einen entsprechenden Phonographen besitzt. Zumindest ist dies in einigen Jahren genau so leicht oder schwierig, wie sich an einer vor 20 Jahren hergestellten Schallplatte zu erfreuen. Die elektronisch gespeicherten Daten der US-Volkszählung von 1960 sind heute unlesbar. Textdateien, mit Wordstar geschrieben und auf einer 5,25-Zoll-Diskette gespeichert, sind nicht mehr lesbar, weil man Wordstar evtl. nicht mehr besitzt, die Konvertierung in ein anderes Textverarbeitungsprogramm kaum möglich ist und 5,25-Zoll-Diskettenlaufwerke gar nicht mehr hergestellt werden. Die Hersteller von CD-ROMs bescheinigen diesem Speichermedium bei entsprechend sorgsamem Umgang eine Nutzungsdauer von 100 Jahren. Nur – gibt es in 100 Jahren CD-ROM-Laufwerke und die zur Speicherung genutzten Datei-Formate überhaupt noch?
Datenschutz und Datensicherheit, Software-Rechte
Aus diesen Gründen sollte man beim Anlegen von Sicherungskopien außerdem bedenken: • Sicherungskopien von Dateien sollten mit dem Fortschreiten der Speichertechnik auf die jeweils neuen Speichermedien übertragen werden. • Es ist sinnvoll, wichtige Dateien zusätzlich in einem universellen Datenaustauschformat zu speichern (Textdateien beispielsweise im einfachen ASCII-Format .TXT oder im Rich-Text-Format .RTF). • Ein Ausdruck auf Papier ist immer noch die sicherste Methode, dass wichtige Informationen auf Dauer nicht verloren gehen.
zu universellen Datenaustauschformaten b auch Abschnitt 2.6.3
Schutz vor Computer-Viren Ein Virus (Computervirus) ist ein Programmteil, meist im Maschinencode, welches sich in andere Programme (Wirtsprogramme) hineinkopieren und somit vervielfachen und gleichzeitig meist schädliche Funktionen in einem Computersystem auslösen kann. Fast alle Viren besitzen den gleichen Aufbau: 1. Erkennungsteil: Mit diesem Programmstück wird festgestellt, ob das Programm, welches infiziert werden soll, schon vom gleichen Virus befallen ist. Eine entsprechende Kennung ist oft im Programmkopf des Wirtsprogramms abgelegt. 2. Infektionsteil: Dieses Programmstück bewirkt das Einlesen des zu infizierenden Programms in den Arbeitsspeicher, das Hinzufügen des gesamten Virusprogramms und das Zurückschreiben des Wirtsprogramms auf das Speichermedium. 3. Funktionsteil: Mit diesem Programmstück löst der Virus gut- oder bösartige Funktionen im infizierten Programm bzw. im gesamten Computersystem aus. Die unausgelasteten Programmierer, die Viren erzeugen, sind oft recht fantasiebegabt.
Der Name Computer-„Virus“ wurde in Analogie zu den biologischen Krankheitserregern gewählt. Dargestellt ist hier das HI-Virus, das die Immunschwächekrankheit Aids beim Menschen hervorruft.
Der Virus „Herbstlaub“ (BlackJack-Virus) lässt in Textverarbeitungsprogrammen die Zeichen von oben auf die letzte Zeile purzeln, wo sie liegen bleiben. „Columbus“ formatiert am oder nach dem 13. Oktober eines jeden Jahres die Festplatte und zerstört somit alle Daten (Christoph Columbus landete am 12. 10. 1492 in Amerika). Man unterscheidet Boot-Viren, die sich im Bootblock einer Diskette einnis ten und beim Booten der Diskette in den Arbeitsspeicher des Computers gelangen, Datei-Viren, die in einem Wirtsprogramm eine Programmzeile einfügen, welche relativ leicht zu entfernen ist. Für grafische Benutzeroberflächen und WYSIWYG-Anwendungsprogramme wurden auch Makro-Viren entwickelt. Makro-Viren befallen Dokumente von MS Office (Access, Word, Excel, PowerPoint). Sie breiten sich über die entsprechenden Office-Dokumente aus. Für die Ausbreitung ist die Programmiersprache Visual Basic for Applications (VBA) notwendig, die von Microsoft für MS Office mitgeliefert wird.
Ein typischer Vertreter für Makro-Viren ist der im letzten Beispiel beschriebene Virus „Herbstlaub“.
107
108
Grundbegriffe
Mindestens ebenso schädlich wie Viren, Würmer und Trojaner können Hoaxes (altenglisch für Scherz) sein: Über E-Mails werden Virusmeldungen versandt, die vor neuen, ganz gefährlichen Viren warnen und den Leser zu Aktionen aufrufen, die der Bekämpfung dieser Viren dienen sollen. Aber gerade mit diesen Aktionen wird dann der Computer lahmgelegt.
Zu den Viren im weiteren Sinne gehören Würmer und Trojaner: • Würmer benötigen kein Wirtsprogramm. Sie sind eigenständige Programme, die ursprünglich erstellt wurden, um in Rechnernetzen Kontrollfunktionen zu übernehmen und die Funktionsfähigkeit einzelner Computer zu überprüfen. Heutige Würmer verteilen sich per E-Mail-Anhang über das Internet, indem sie über willkürlich gewählte IP-Adressen nach anfälligen Computersystemen suchen. • Trojaner (benannt nach Odysseus’ List mit dem Holzpferd, welche zur Einnahme Trojas führte) sind nicht dokumentierte Programmteile, die sich in käuflich erworbener oder aus dem Internet heruntergeladener Software verbergen. Während der Nutzer mit dem Programm arbeitet, werden im Hintergrund Daten ausspioniert. Trojaner können über Jahre „schlafen“ und stellen dem Nutzer erst aufgrund eines Passworts Funktionen zur Verfügung, die katastrophale Auswirkungen haben. Mit dem Auftreten der ersten Viren wurden Antivirenprogramme (Virenscanner) entwickelt, die Dateien, Bootsektoren und Arbeitsspeicher auf Virenkennungen (die Bytefolgen im Programmkopf des Wirtes) hin durchsuchen. Bei Feststellung einer Infektion versucht der Virenscanner, die schädlichen Programmzeilen zu entfernen. Besser ist es, das gesamte Wirtsprogramm zu löschen. Die meisten Virenscanner besitzen auch eine Immunisierungsfunktion: Alle Kennungen bekannter Viren werden in den Programmkopf des jeweiligen Programms geschrieben. Ein angreifendes Virus „glaubt“ nun, das immunisierte Programm wäre bereits von ihm infiziert worden. Man sollte die Gefahren, die von Viren, Trojanern und Würmern ausgehen, nicht unterschätzen. Folgende Schutzmaßnahmen sollte man vor oder bei Befall von Viren ergreifen: • Es sollte immer nur Originalsoftware verwendet werden. • Alle Software, die aus unsicheren Quellen stammt, wird vor dem ersten Einsatz mit der neuesten Version eines Virenscanners geprüft. • Virenscanner sollten regelmäßig zum Einsatz kommen. Der Scanner kann in das Betriebssystem eingebunden und beim Start des Computers automatisch aktiviert werden. • Stellt man Virenbefall fest, werden die entsprechenden Programme gelöscht und neu installiert. Am sichersten ist es, die Festplatte neu zu formatieren. Computer ohne Virenschutzprogramme sind wie Häuser ohne Türen. Deshalb führen Stiftung Warentest und verschiedene Computerzeitschriften ständig Vergleichstests durch. Empfohlene Virenscanner sind AntiVirenKit (AVK) von G-Data, Anti-Virus Personal von Kaspersky und Norton AntiVirus von Symantec. Antivirenprogramme können nur dann wirksam gegen Viren, Würmer und Trojaner eingesetzt werden, wenn die gespeicherten Signaturen und Muster ständig durch Updates auf den aktuellen Stand gebracht werden.
Datenschutz und Datensicherheit, Software-Rechte
1.6.3 Software-Rechte Das Urheberrecht, also die Gesetze und Verordnungen zum Schutz geistigen Eigentums in den unterschiedlichen Gebieten des menschlichen Schaffens, gilt auch für Software. Mit einem Copyright, einem urheberrechtlichen, gesetzlich verankerten Schutz von kreativer Arbeit, welches ursprünglich für Texte, Musik, Zeichnungen und Designs galt, können auch Computerprogramme geschützt werden.
©
Die unberechtigte Vervielfältigung und das unerlaubte Vertreiben von Kopien der geschützten Software kann mit hohen Strafen geahndet werden, selbst dann, wenn die Kopien der eigenen Nutzung dienen und man sich keine geschäftlichen Vorteile verschaffen wollte. Während noch vor 30 Jahren die Hardwarekonstruktion die wichtigste Komponente war, die den Preis von informationsverarbeitender Technik bestimmte, ist es heute die Softwareentwicklung. An der Programmierung von Betriebssystemen, grafischen Benutzeroberflächen oder komplexen Anwendungsprogrammen sind oftmals mehrere hundert Personen über einen Zeitraum von Jahren beteiligt. Dies können sich nur große Softwareentwicklungsfirmen leisten, die dann auch die Rechte am fertigen Produkt besitzen. Softwarenutzer und Softwarehersteller schließen einen Lizenzvertrag ab, worin Rechte des Benutzers genau festgelegt sind, der Nutzer der Software erhält eine Lizenz zur Nutzung. Meist gilt der Vertrag ab dem Moment der Öffnung des verschlossenen Softwarepaketes. Es ist sinnvoll, dem Softwarehersteller die Vertragsannahme mitzuteilen. Dem Lizenznehmer werden dafür besondere Rechte zum Erwerb von verbesserten oder erweiterten Programmversionen eingeräumt, er kann preiswert ein Update erhalten. Mit CD-ROMs in Computerzeitschriften oder in Büchern sowie aus dem Internet erhält man oft kleinere Programme kostenlos oder zu einem geringen Entgeld. Man fasst diese Programme auch unter dem Namen Public Domain zusammen. Die Rechtslage bei dieser Software wird mit bestimmten Begriffen gekennzeichnet: Public Domain-Software Freeware: Diese Software ist urheberrechtlich geschützt, darf aber privat kopiert und weitergegeben werden. Shareware: Dies sind zumeist „Schnupper“- oder Demo-Versionen von Programmen, die man beliebig austesten und auch weitergeben, aber nicht verändern kann. Gegen eine (meist geringe) Gebühr kann man sich beim Softwareentwickler registrieren lassen und erhält die Vollversion des entsprechenden Programms. Auch Shareware ist urheberrechtlich geschützt
Public Domain bedeutet „für den öffentlichen Gebrauch“.
109
110
Grundbegriffe
1.6.4 Internet und Recht
I
Netiquette ist abgeleitet aus „Netzetikette“.
b auch unter 6.1.2 zu „Grenzen anständigen Handelns“, S. 517
Im Internet kann man wie nie zuvor massenhaft Ideen, Bilder, Musik verbreiten. Solche Informationen werden mitunter recht bedenkenlos auf eigene Web-Sites übertragen oder in anderen Publikationen (z. B. Printmedien) veröffentlicht und somit gewollt oder unbewusst unter dem eigenen Namen weiterverbreitet. Eigentlich ist aber jede Grafik, jedes Foto, jeder Text mit der Veröffentlichung auf einer Web-Site urheberrechtlich geschützt, meist sogar mit einem Copyright-Zeichen versehen. Auch im Internet sollte man sorgsam mit dem geistigen Eigentum anderer umgehen. Selbst wenn es bezüglich Internet-Veröffentlichungen noch rechtliche Unsicherheiten gibt, die durch neue Gesetze beseitigt werden müssen, beschäftigen sich die Gerichte zunehmend mit Fällen von Verletzung des Urheberrechts. In gewisser Hinsicht legt die Netiquette schon Verhaltensregeln im Internet (Knigge im Netz) auch in Bezug auf Rechtsprobleme auf freiwilliger Basis fest. So verlangt die Netiquette die Quellenangabe für Inhalte, die nicht vom Ersteller einer Web-Site selbst kommen, und verbietet persönliche Beleidigungen, Verletzungen religiöser, ethischer und weltanschaulicher Empfindungen anderer Netzteilnehmer, rassistische oder faschistische Äußerungen und Aufforderungen zu Gewalttaten. Solche Inhalte sind in frei zugänglichen Medien, wie z. B. auf einer WebSite, nicht nur aus moralischen, sondern auch aus strafrechtlichen Gründen auszuschließen. Bei bestimmten extremen Inhalten ist sogar das Herunterladen oder der Besitz unter Strafe gestellt. Streng genommen dürfte man noch nicht einmal zu Beweiszwecken entsprechende Web-Sites auf seine Festplatte laden. Die Landeskriminal ämter verzichten aber auf eine Strafverfolgung, wenn der Datenträger mit z. B. rassistischen Inhalten innerhalb von 48 Stunden bei der Polizei abgegeben wird. Es ist gegenwärtig nicht möglich, ohne einschneidende Eingriffe in die persönliche Freiheit des Einzelnen, verbotene Inhalte generell aus dem Internet zu entfernen – auch deshalb nicht, weil im Internet auf ausländische Angebote zugegriffen werden kann. Auch ist es fraglich, wer für das gesamte Internet politische, moralische oder sexuelle Inhalte bewerten soll. Hier kommt den Providern (den Anbietern eines Internetzugangs) eine besondere Verantwortung zu. Für die Schule regelt neben dem Strafgesetzbuch und dem MultimediaGesetz das Jugendschutzgesetz, welche Inhalte zugänglich sein dürfen – in keinem Fall rassistische, pornografische und gewaltverherrlichende Inhalte. In den letzten Jahren ist ein neues Problem aufgetaucht: Unaufgefordert werden E-Mails an viele Internet-Nutzer versandt – zu Werbe-Zwecken, Betrügereien (z. B. Ausspähen von Kontoverbindungen) oder zum Versand von Computerviren. Dieser sogenante Spam verstopft die elektronischen Briefkästen und ist daher unerwünscht. In den meisten Ländern ist das Versenden von Spam nicht verboten. Man sollte Spam-Mails nie öffnen, sondern sofort löschen. Auch ist die Installierung von Spam-Filtern wünschenswert.
Aufgaben
Aufgaben 1.1 Die Informatik als junge Wissenschaft Aufgabe 1.1.1 Der Ausdruck „wissenschaftlich-technische Revolution“ wurde von dem britischen Physiker John Desmond Bernal (1901–1971) eingeführt und bezeichnet den gewaltigen und sozial höchst folgenreichen technischen Umbruch, der seit dem 2. Drittel des 20. Jahrhunderts auf der Basis wissenschaftlicher Erkenntnisse besonders im Produktions- und Kommunikationsbereich stattfindet. Er ist nicht nur gekennzeichnet durch die computergestützte Steuerung und Regelung von Produktionsabläufen und die Einrichtung weitverzweigter Systeme der Datenerfassung und -verarbeitung, sondern in den letzten Jahren und Jahrzehnten sind auch andere Wissenschaftsgebiete wie beispielsweise Gentechnik oder Nanotechnologie zum Motor von Umbruchsprozessen geworden. Erläutern Sie, wie sich Informatik und Gentechnik oder Nanotechnologie gegenseitig beeinflussen!
Aufgabe 1.1.4 Die amerikanische Bezeichnung der Wissenschaft Informatik ist „computer science“. Diskutieren Sie diesen Begriff! Aufgabe 1.1.5 Nennen Sie Berufe, die mit Einführung informationsverarbeitender Technik verschwunden sind bzw. einer starken Wandlung unterworfen wurden!
1.2 Daten, Datentypen und Datenstrukturen Aufgabe 1.2.1 Welche der folgenden Informationssysteme lassen sich überwiegend elektronisch, also als Informatiksystem realisieren? Diskutieren Sie Sinn und Nutzen der technischen Abbildung des jeweiligen Informationssystems! a) Buchhandel b) Schreiben eines Romans und Kommunikation mit den Lesern c) Fotografie d) immunbiologisches System zur Abwehr von Krankheitserregern im menschlichen Körper e) Weitergabe von Erbinformationen bei Lebewesen (Genetik der Zelle) f) Theateraufführung g) Produktion und Vertrieb einer Zeitschrift h) Nervenzelle (Sinnesorgane) und Gehirn i) Komponieren und Vertreiben von musikalischen Werken k) Wahl einer neuen Regierung
Aufgabe 1.1.2 Mit welchen der folgenden Aufgaben beschäftigt sich vorrangig welcher Bereich der Informatik? a) Planung, Konfiguration und Installation eines Firmennetzes b) Programmierung eines Datenbanksystems c) Untersuchung der Effizienz eines Algorithmus d) Entwicklung einer Maus unter Beachtung ergonomischer Anforderungen e) Entwicklung einer neuen Programmiersprache f) Entwicklung eines neuartigen Speicherbausteins g) Untersuchungen zur Automatisierbarkeit betrieblicher Arbeitsabläufe h) Compilerbau i) Konstruktion eines Expertensystems für medizinische Untersuchungen k) Herstellung eines hochintegrierten Schaltkreises für ein Spiel
Aufgabe 1.2.2 Im täglichen Leben wird im Allgemeinen mit Dezimalzahlen gerechnet, der Computer arbeitet im Dualsystem. a) Geben Sie die folgenden Dezimalzahlen als Dualzahlen an! 5; 31; 32; 15; 131; 69; 512; 14 b) Geben Sie die folgenden Dualzahlen als Dezimalzahlen an! 1011; 11; 10001; 11111; 1101; 10000010
Aufgabe 1.1.3 Diskutieren Sie a) theoretische, b) praktische, c) ethisch-moralische und d) rechtliche Grenzen der Computernutzung!
Aufgabe 1.2.3 Rechnen Sie um! b) 101110[2] = x[10] a) 10111[2] = x[10] d) 1111[2] = x[10] c) 1111[10] = x[2] f) 85[10] = x[16] e) 85[10] = x[2] g) x[10] = 100000000001[2] h) 10101010101[2] = x[16]
111
112
Grundbegriffe
Aufgabe 1.2.4 Als Mittler zwischen den langen, schwer zu merkenden Dualzahlen und den Dezimalzahlen sind insbesondere Hexadezimalzahlen geeignet. a) Geben Sie folgende Dualzahlen als Hexadezimalzahlen an: 1000 1001 100 1001 1100 1111 1 1110 1001 1011 1001 1011 b) Geben Sie folgende Dezimalzahlen als Hexadezimalzahlen an: 17 15 144 256 16 4097 69 905 512 514 4096 10 000 139 810 5000 5001 9999 c) Geben Sie folgende Hexadezimalzahlen als Dezimalzahlen an: 32 0 35F AAA 6666 3333 A2A ABBA ABC BAD 123 AFFE F35 EBBE 321 Aufgabe 1.2.5 Rechnen Sie um! a) 10111[2] = x[16] b) 111110[2] = x[10] c) 1111[16] = x[2] d) 1111[16] = x[10] e) 221[10] = x[16] f) 2345[8] = x[2] = x[16] = x[10] g) 111000111[2] = x[8] = x[16] = x[4] Aufgabe 1.2.6 Ermitteln Sie die Tastenkombinationen zur Erzeugung folgender Zeichen: Ê á ¶ © Ø Ÿ £ ™ ‰ ® ¥ æ – - ÷ × x X Aufgabe 1.2.7 Rechnen Sie um (vervollständigen Sie die Tabelle)! Bit 25 165 824
Byte
KByte
MByte
3 145 728 2 048 1,44 5 760 111 111 111 111
4 194 304 256 3 145 728
Aufgabe 1.2.8 Eine Programmiersprache biete folgende Datentypen an: integer; longinteger; real; boolean; char. Welchen Datentyp würden Sie jeweils den Variablen zur Speicherung und Verarbeitung folgender Objekte zuordnen? Begründen Sie! a) Längen der Diagonalen eines Drachenvierecks b) Geschlecht eines Schülers (männlich oder weiblich) c) Ergebnis des Produktes zweier maximal 4-stelliger ganzer Zahlen d) Variablen, die zur Ersetzung von Buchstaben bei der Entzifferung von Geheimschriften dienen sollen e) Rest bei der ganzzahligen Division f) Variablen, die zur Berechnung des kleinsten gemeinsamen Vielfachen zweier Zahlen genutzt werden sollen g) Ergebnis des Produktes zweier maximal 2-stelliger ganzer Zahlen Aufgabe 1.2.9 Gegeben ist folgender Abschnitt aus einem TurboPascal-Programm: x:=4.8; y:=16; a:=SQR(y); b:=SQRT(y)+1; c:=ROUND(x)DIV y; d:=(y+1) MOD TRUNC(x); e:=(3*x/y)*10; Dabei bedeuten SQR Quadrat, SQRT Quadratwurzel, ROUND gerundeter Wert, DIV ganzzahlige Division, MOD Rest bei der ganzzahligen Division und TRUNC das Abschneiden der Nachkommastellen einer Dezimalzahl. a) Von welchem Datentyp sind die einzelnen Variablen? b) Welche Werte stehen für die Variablen a bis e im Speicher? Aufgabe 1.2.10 Eine Programmiersprache biete folgende Datenstrukturen (strukturierte Typen) an: array; record; file. Welche Struktur würden Sie jeweils für die Speicherung und Verarbeitung folgender Objekte und Sachverhalte wählen? Begründen Sie! a) 8×8-Feld eines Damespiels b) 6 000 Zufallszahlen
c) Spannungsmessreihe für ein physikalisches Experiment d) Fibonaccizahlen (Hinweis: Fibonaccizahlen berechnen sich aus der Summe der jeweils letzten beiden Folgenglieder: Gilt f1 = 1 und f2 = 1, dann folgt f3 = f2 + f1 = 1 + 1 = 2, f4 = f3 + f2 = 2 + 1 = 3, f5 = f4 + f3 = 3 + 2 = 5 usw.) e) Preisliste f) Namensliste (Vor- und Nachname) g) Koeffizienten eines Gleichungssystems aus 4 Gleichungen mit 4 Unbekannten (als Matrix dargestellt) h) Personalien i) Multiplikationstabelle für das große Einmaleins k) Lufttemperaturen, gemessen am Morgen und am Abend über einen Zeitraum von 2 Monaten Aufgabe 1.2.11 Geben Sie für folgende praktische Sachverhalte entsprechende Typen (Datenstrukturen) in Turbo Pascal an! a) Adresse (Vorname, Name, Straße, PLZ, Ort) b) Adressen-Verzeichnis mit 30 Adressen (Vorname, Name, Straße, PLZ, Ort) c) Multiplikationstabelle für das kleine Einmaleins d) Preisliste (Warennummer, Preis) e) Belegen der Komponente „Cola“ der Preisliste aus d) f) Firmenmitarbeiter (Name, Vorname, Geburtsdatum, Geschlecht, Gehalt) g) Eintragen des Geburtsjahres des Firmenmitarbeiters Wolkenstein aus Aufgabe f)
1.3 Algorithmen und Programme Aufgabe 1.3.1 Welcher der folgenden Prozesse kann nicht durch einen Algorithmus beschrieben werden? Begründen Sie jeweils! a) Lösen eines Gleichungssystems aus zwei Gleichungen mit zwei Unbekannten b) Benoten eines Aufsatzes c) Ordnen von 2000 vorgegebenen Zahlen nach ihrer Größe d) Auswerten der Ergebnisse eines Wissenswettbewerbes
Aufgaben
e) Leiten einer Gesprächsrunde f) Auswerten der Ergebnisse eines Sportfestes g) Ermitteln der Buchstabenhäufigkeit in einem Text h) Ermitteln der k-ten Primzahl i) Auflisten aller ungeraden natürlichen Zahlen k) Schreiben einer Eins in der nächsten Physikarbeit l) Wechseln eines Autoreifens (Radwechsel) m) Schreiben eines Liebesbriefes n) Stricken eines Pullovers o) Konstruieren eines Kreises durch 3 nicht auf einer Geraden liegenden Punkte p) Schießen eines Tores beim Fußball q) Addition zweier Brüche Aufgabe 1.3.2 Ordnen Sie den folgenden „Algorithmen“ die Begriffe „deterministisch“, „determiniert“, „nichtdeterministisch“, „nichtdeterminiert“ und „stochastisch“ zu! a) Primzahltest von R. Solovay und V. Strassen: Eine Zahl wird eingegeben. Falls der Algorithmus die Ausgabe „nein“ liefert, steht fest, dass die Eingabe n keine Primzahl ist. Wird die Ausgabe „ja“ gegeben, so ist n mit mindestens der Wahrscheinlichkeit 0,5 eine Primzahl. Durch m-maliges Wiederholen kann man diese Wahrscheinlichkeit auf 1 – 0,5m steigern. Für m = 10 ist die Wahrscheinlichkeit, dass bei Ausgabe „ja“ n eine Primzahl ist schon 0,9990234375. Für m = 100 kann man von einem sicheren Ereignis sprechen. b) Quicksort: Irgendein Element einer unsortierten Liste wird als Trennelement T genommen und alle anderen Elemente werden davor (wenn sie kleiner oder gleich T sind) bzw. dahinter (wenn sie größer als T sind) angeordnet. Mit den entstehenden Teilmengen wird ebenfalls so verfahren, bis alle Elemente an der richtigen Stelle stehen. (b auch Abschnitt 5.3.8, Seite 492) c) Mit einem Zufallsgenerator wird eine unsortierte Liste von Zahlen erzeugt und dann mit Minimumsort sortiert: Aus einer Liste wird das kleinste Element herausgesucht und an die erste Stelle einer neuen Liste gesetzt. Die Restliste wird wieder nach dem kleinsten Element durchsucht, welches an die zweite Stelle der neuen Liste gesetzt wird usw.
113
114
Grundbegriffe
Aufgabe 1.3.3 Gegeben sei folgendes Turbo Pascal-Programm „was_tue_ich“: PROGRAM was_tue_ich; VAR i, n, ergebnis: integer; BEGIN WRITELN (’Programm zur Berechnung von ? ? ?’); WRITELN; WRITE (’Eingabe n (n>=0): ’); READLN(n); IF n>0 THEN BEGIN ergebnis:=0; i:=0; REPEAT ergebnis:=ergebnis+n; i:=i+1; UNTIL i>=n; WRITELN (’Ergebnis: ’, ergebnis); END ELSE WRITELN (’Eingabe unzulässig!’); READLN END. a) Führen Sie einen Trockentest durch! Stellen Sie eine Wertebelegungstabelle (einschließlich der Anzahl der Schleifendurchläufe) für n = 5 auf! Beschreiben Sie, was das Programm leistet! b) Ersetzen Sie die Wiederholung mit nachgestelltem Test durch eine gleichwertige Zählschleife! Aufgabe 1.3.4 Gegeben ist das nachstehende Turbo Pascal-Programm: PROGRAM was_wird_berechnet; VAR a, b, p: integer; BEGIN writeln(‚Programm zur Berechnung ??? zweier Zahlen‘); writeln; write(‚1. Zahl: ‚); readln(a); write(‚2. Zahl: ‚); readln(b); p := 0; while a > 0 do begin if a mod 2 0 then p := p + b; a := a div 2; b := b * 2 end; write(p); readln END. a) Führen Sie einen Trockentest durch und stellen Sie eine Wertebelegungstabelle für a = 4 und b = 5 sowie für a = 9 und b = 6 auf! Beschreiben Sie kurz, was dieses Programm leistet! b) Ersetzen Sie die Wiederholung mit vorangestelltem Test durch eine gleichwertige Wiederholung mit nachgestelltem Test! Notieren Sie alle zu ändernden Zeilen!
1.4 Modelle Aufgabe 1.4.1 Welche Techniken (Datenmodellierung, Datenflussmodellierung, objektorientierte Modellierung, zustandsorientierte Modellierung) würden Sie bei der Modellierung folgender praktischer Probleme nutzen wollen? a) Beschreibung der Auswahl einer Telefonnummer mit dem Handy b) Entwurf eines Internetbuchhandels c) Definition eines nichtdeterministischen Kellerautomaten d) Beschreibung des Bussystems eines konkreten Computers e) Erklärung des Aufbaus eines Multimediadokuments f) Aufzeigen aller Zellbezüge in einem Kalkulationsdokument g) Entwurf eines Möbelkataloges
P
Aufgabe 1.4.2 Programmieren Sie mit dem Automaten-Kara das Beispiel von S. 47! Aufgabe 1.4.3 Ein Getränkeautomat akzeptiert ausschließlich 50Cent-Münzen und 1-Euro-Münzen. Im Display wird der eingeworfene Betrag angezeigt. Nachdem genau 1,50 € eingeworfen wurden, kann man sich über Auswahltasten für die Getränke Cappucino oder Kaffee entscheiden. Der Automat gibt das gewünschte Getränk aus und kehrt in den Startzustand „Bereit“ zurück. Über die Taste „C“ kann man in jedem Zustand den Vorgang abbrechen. Der Automat wechselt daraufhin in den Startzustand und gibt das eingeworfene Geld zurück. Zeichnen Sie das Zustandsdiagramm! Fehlerhafte Eingaben müssen im Diagramm nicht berücksichtigt werden. Aufgabe 1.4.4 In der Zahlentheorie, besonders der Kryptologie kann man die Maschinenzahlen mit ihren festen Beschränkungen vielen Zusammenhängen nicht gebrauchen. Man rechnet gerne mit beliebigstelligen natürlichen Zahlen, soweit der Speicher des Rechners reicht. Für diesen Zweck wird ein abstrakter Datentyp „Nat“ zum Rechnen mit beliebig großen natürlichen Zahlen spezifiziert.
Aufgaben
Konstruktionsfunktionen sind null, eins, die Nachfolgerfunktion succ sowie die Funktion def, die aus einer ganzen Maschinenzahl eine abstrakte natürliche Zahl erzeugt. Weiter gibt es die binären Operationen Addition (plus), Multiplikation (mal), die Subtraktion (sub), die ganzzahlige Division (divi) und die Potenzierung (pot). Zum Größenvergleich existieren eq0 (Vergleich mit null), eq zum Test auf Gleichheit zweier Nat-Zahlen, lt zum Test auf (echt) kleiner und le zum Test auf kleiner oder gleich. a) Geben Sie nach dem Muster des ADT „Stacks“ (S. 49) eine Spezifikation mit prädikativ spezifizierter Signatur für den ADT „Nat“ an! b) Schreiben Sie die Schnittstelle für den ADT „Nat“ in funktionaler Notation auf! Aufgabe 1.4.5 (Fortsetzung von Aufgabe 1.4.4) Die effiziente Implementierung der Arithmetik großer Zahlen ist eine schwierige Unternehmung. Die hier gewählte Implementierung ist modellhaft zu verstehen und ist extrem ineffizient. Als funktionale Repräsentation wird ein algebraischer Datentyp nats ::= N | S nats verwendet, er drückt aus, dass eine natürliche Zahl entweder N (null) oder Nachfolger einer natürlichen Zahl ist. Die abstrakte null wird durch N, eins durch S n, zwei durch S (S n) dargestellt usw. Implementieren Sie mit dem nats-Typ alle Schnittstellenfunktionen! Aufgabe 1.4.6 (Fortsetzung von Aufgabe 1.4.5) Schreiben Sie einen Klientenmodul, der nur die Schnittstelle des ADT Nat verwendet und folgende Funktionen implementiert: (a) modu n m, Test bei Teilung von n durch m, (b) ggT, größter gemeinsamer Teiler zweier NatZahlen, (c) sqr, Quadratfunktion, (d) double, Verdopplungsfunktion, (e) fak, Fakultätsfunktion, (f) fib, Funktion zur Berechnung der Fibonaccizahlen. Aufgabe 1.4.7 Das Rechnen innerhalb des Zahlkörpers Q der rationalen Zahlen lässt sich mit einem abstrakten Datentyp rat nachbilden. Die Konstruktionsfunktion d (wie „durch“) erzeugt aus einem Zahlenpaar (x, y) mit x ∈ Z und y ∈ N eine rationale Zahl. Exportiert werden weiter die Konstanten null und eins und die binären Operationen Addition (plus), Multipli-
115
116
Grundbegriffe
kation (mal), die unären Operationen negativ (Bildung des additiv Inversen) und kehrwert (Bildung des multiplikativ Inversen) angeboten. Weiter gibt es die Standard-„show“-Funktion zur Ausgabe von rationalen Zahlen (z. B. in der Form "17/5"). Eine weitere Ausgabefunktion stellt unechte Brüche als gemischte Zahlen dar. a) Entwerfen Sie eine Spezifikation analog zu der des ADT Stacks! b) Geben Sie eine kommentierte Schnittstelle für den abstrakten Datentyp in funktionaler Notation an! c) Implementierung: Im Zusammenhang mit der internen Repräsentation der Brüche als Zahlenpaare (in gekürzter Darstellung) ist eine Funktion normieren nützlich, die einen ggf. nicht vollständig gekürzten Bruch in seine Normdarstellung umwandelt. Programmieren Sie diese Funktion! d) Implementieren Sie alle Schnittstellenfunktionen! e) Schreiben Sie einen Klientenmodul, der alle Funktionen testet! Schreiben Sie ohne Kenntnis der Implementierung der rationalen Zahlen, allein mit der Schnittstelle die zwei Funktionen zur Subtraktion und Division von rationalen Zahlen. Aufgabe 1.4.8 Schlangen (engl. queues) sind aus dem täglichen Leben (nur zu gut) bekannt. Gesucht ist eine minimale Schnittstelle für abstrakte Schlangen. In einem ersten Schritt wird das Modell spezifiziert, es nutzt den mathematischen Folgenbegriff. Es stehen n Elemente (Leute) x0, ..., xn−1 in einer Schlange. a) Legen Sie die Semantik der Operationen (i) einreihen (engl. enqueue) (ii) bedienen (engl. dequeue) (iii) kopf (iv) laenge mit Hilfe von Folgen fest! Für das Bedienen am Schlangenkopf gibt es zwei mögliche Varianten: die Operation liefert den Kopf und die Restschlange oder nur die Restschlange allein. Meist wird die zweite Variante gewählt und zusätzlich die Operation kopf spendiert, die nur den Kopf liest, die Schlange aber unverändert lässt. b) Schreiben Sie eine Spezifikation nach dem Mus ter des Stacks! Spezifizieren Sie dazu den ADT prädikativ, d. h. mit Voraussetzungen und Ergebnissen.
Aufgabe 1.4.9 (Fortsetzung von Aufgabe 1.4.8) Spezifizieren Sie die Semantik der ADT-Schnittstelle Schlangen algebraisch, d. h. mithilfe von Gleichungsbeziehungen zwischen den Operationen! Hinweis: Welche Wechselbeziehung gilt für die Operationen einreihen und bedienen im Falle leerer bzw. nichtleerer Schlangen? Aufgabe 1.4.10 (Fortsetzung von Aufgabe 1.4.8) a) Geben Sie eine Signatur für den ADT Schlangen in einer funktionalen Sprache an! b) Implementieren Sie die Schnittstelle mit Listen! Wie effizient sind die einzelnen Operationen? Aufgabe 1.4.11 Eine zweite Implementierung des ADT Schlangen versucht, effizient an das Schlangenende heranzukommen und hält deshalb die Schlange in einem Paar von Listen. Ist die abstrakte Schlange q durch das Listenpaar (xs,ys) repräsentiert, so enthält xs ++ reverse ys die Schlangenelemente von q in natürlicher Reihenfolge. Gesucht ist: a) die Abstraktionsfunktion, d. h. ein abstrakter Schlangenwert, ausgedrückt durch diese Repräsentation, b) die Invariante, die für jede als Listenpaar repräsentierte Schlange immer gelten muss (programmiert als Prädikat in der Programmiersprache), c) die Implementierung der Schnittstellenfunktionen mit der Listenpaar-Repräsentation. Analysieren Sie die Effizienz der Operationen im Vergleich zur einfachen Listenrepräsentation! Aufgabe 1.4.12 Gesucht ist ein Kundenmodul der beiden Schnittstellen ADT Stacks und ADT Schlangen (Aufgabe 1.4.8). Allein unter Rückgriff auf Funktionen der Schlangen-Schnittstelle bzw. der Stapel-Schnittstelle sind folgende Funktionen zu implementieren: a) Aus zwei Schlangen q1, q2 wird eine dritte Schlange q3 hergestellt, in der die Elemente in der Reihenfolge erst q1, dann q2, auftreten. b) stack2queue wandelt einen Stapel so in eine Schlange um, dass das oberste Element zum Schlangenkopf wird. c) queue2stack wandelt eine Schlange in einen Stapel um, sodass das oberste Element des Stapels der Schlangenkopf ist. d) qreverse dreht den Inhalt einer Schlange um.
Aufgabe 1.4.13 Beweisen Sie durch Vergleich der Wahrheitstabellen, dass die im Abschnitt 1.4.3 auf S. 57 angegeben Distributiv-Gesetze für Konjunktion und Alternative gelten! Aufgabe 1.4.14 Neben den Quantoren " („für alle“) und $ („es existiert“) könnte man auch weitere Quantoren einführen, zum Beispiel $! („es gibt höchstens ein ...“) oder $!! („es gibt genau ein ...“) . Man kann diese Operatoren aber mit den bereits bekannten Quantoren und Operatoren sowie einer Relation gleich(X,Y) definieren. Dabei gilt gleich(X,Y) für identische X, Y. Geben Sie entsprechende Ausdrücke für $!X R(X,Y)bzw. $!!X R(X,Y) an! Aufgabe 1.4.15 In der natürlichen Sprache drücken wir uns nicht immer präzise aus, weil wir darauf vertrauen, dass der Gesprächspartner uns versteht und aus dem Zusammenhang die richtige Bedeutung erfasst. So klingen die beiden folgenden Sätze ganz ähnlich. Bei einer Übersetzung der (vermutlich) gemeinten Bedeutung in eine logische Aussage gibt es aber einen wesentlichen Unterschied. ! (a) Der Lehrer hat ein Bonbon für alle Kinder. (b) Der Lehrer hat eine Liste für alle Kinder. Beschreiben Sie die Bedeutungen durch logische Aussagen mit Quantoren für Kinder und Gegenstände (Liste bzw. Bonbons) unter Verwendung einer zweistelligen Relation lehrer_hat_fuer(Kind,Gegenstand)! Aufgabe 1.4.16 Man kann beliebige aussagenlogische Wahrheitstabellen durch Aussagenverbindungen allein mit den Operatoren ¬ und ∧ realisieren. Geben Sie eine Begründung dafür an! Weiterhin kann man jede Wahrheitstabelle allein mit dem Operator nand realisieren (nand(A,B):= ¬(A ∧ B). Geben Sie auch dafür eine Begründung an! Analog kann man auch einen Operator nor mit nor(A,B):= ¬(A ∨ B) definieren. Würde auch nor allein ausreichen? Aufgabe 1.4.17 Eine Relation r heißt transitiv, wenn sie die folgende Bedingung erfüllt: "X"Y"Z(r(X,Y) ∧ r(Y,Z) ⇒ r(X,Z))
Aufgaben
Ein Beispiel für eine transitive Relation ist die größer-Relation für Zahlen. Auch die Relation „Verwandtschaft“ unter Menschen ist transitiv, die Relation „Bekanntschaft“ dagegen nicht. Geben Sie weitere Beispiele für transitive und nicht-transitive Relationen an! Eine Relation ist nicht transitiv, wenn gilt: $X$Y$Z(r(X,Y) ∧ r(Y,Z) ∧ ¬r(X,Z)) Leiten Sie diesen Ausdruck aus der negierten Definition der Transitivität unter Benutzung der Umformungsregeln ab!
1.5 Informationsverarbeitende Technik Aufgabe 1.5.1 Zu den Bestandteilen des Computergrundgerätes gehören: CPU, ROM, ROM-BIOS, RAM. a) Erläutern Sie die Aufgaben dieser Bestandteile! b) Was bedeuten die jeweiligen Abkürzungen? Übersetzen Sie! Aufgabe 1.5.2 Informationsverarbeitung kann man auch als Eingabe, Verarbeitung und Ausgabe von Daten betrachten (EVA-Prinzip). Welcher Art sind die Eingabe- bzw. Ausgabedaten der folgenden Prozesse? a) Primzahltest b) Hypotenuse nach Pythagoras c) Flächenberechnung d) Preisabfrage e) Zahlen raten f) Laufschrift g) Funktion y = ln x darstellen h) Wertetabelle für y = 3 sin 2x i) Berechnung der Fakultät Aufgabe 1.5.3 Welche Techniken der Arbeit mit der Maus kommen bei den folgenden Aktionen zur Anwendung? a) Datei aus einem Ordner in einen anderen verschieben b) Fenster markieren c) Befehl aus einem Pull-down-Menü ausführen d) Programm starten e) Ellipse in einem Zeichenprogramm erzeugen f) Alternativtext zu einer Grafik auf einer Web-Site lesen Aufgabe 1.5.4 Erläutern Sie das Klassendiagramm auf S. 86!
117
118
Grundbegriffe
Aufgabe 1.5.5 Erstellen Sie einen Verzeichnisbaum, der folgende Sachverhalte berücksichtigt: a) Auf der Festplatte des Computers befindet sich ein Verzeichnis mit Bildern. b) Es soll ein Textverarbeitungsprogramm und ein Kalkulationsprogramm installiert werden. c) Alle persönlichen Daten sollen in einem gesonderten Verzeichnis abgelegt werden. Dabei soll zwischen Dokumenten und Tabellenkalkulationsdateien für die Schule (möglichst geordnet nach Fächern) und privaten Dokumenten unterschieden werden. d) Auf dem Computer befinden sich auch Spiele. Aufgabe 1.5.6 Welche Dateien werden den? a) TMP*.* c) ARBEIT4.??? e) *.HTM g) BR_ME?ER.DOC k) A*.TXT
hier gesucht und gefunb) d) f) i) l)
*.EXE ARBEIT4.* ??????.DOC ?ONF?G.S?S BRIEF*.*
Aufgabe 1.5.7 Notieren Sie ergonomische Anforderungen an Monitore für folgende Kenngrößen! a) Zeichengröße, Helligkeit, Kontrast, Farbdarstellung b) Reflexionen, Strahlung c) Bildschirmdiagonale und Auflösungsvermögen d) Bildwiederhol- und Zeilenfrequenz e) Abstand zu den Augen, Neigung des Monitors
1.6 Datenschutz- und Datensicherheit, Software-Rechte
Aufgabe 1.6.3 Erkundigen Sie sich a) beim Einwohnermeldeamt, b) bei einer Polizeidienststelle in Ihrer Wohngegend, welche Daten dort gespeichert sind und wozu sie verwendet werden! Aufgabe 1.6.4 Notieren Sie Maßnahmen zur Durchsetzung von Komponenten der Datensicherheit: a) leichte Wiederauffindbarkeit gespeicherter Daten b) Schutz vor Datenverlust durch Systemabstürze oder Technikausfall c) Vermeidung unbefugter Zugriffe (falsche Nutzung und Löschung von Daten) d) Schutz vor Computerviren Aufgabe 1.6.5 Handeln Sie in folgenden Situationen korrekt? a) Sie beobachten einen Unfall mit Fahrerflucht. Das Kfz-Kennzeichen des Flüchtenden haben Sie notiert und Sie holen die entsprechende Auskunft bei der Kfz-Meldestelle ein. b) Sie starten ein Spiel von einer selbstgebrannten CD-ROM. Ihr Virenscanner zeigt einen Virus an. Sie schließen das Programm, nehmen die CD-ROM aus dem Laufwerk und werfen sie in den Papierkorb. c) Sie haben eine CD-ROM mit vielen Bitmap-Grafiken gekauft, wandeln diese Grafiken in das GIF-Format um und nutzen sie ohne Quellenangabe zum Gestalten Ihrer Homepage.
Aufgabe 1.6.1 Es ist heute leicht möglich, Datenbanken im staatlichen und privatwirtschaftlichen Bereich „zusammenzuschalten“. a) Diskutieren Sie Auswirkungen eines solchen Zusammenschlusses! b) Nennen Sie Gesetze, Rechte der Bürger und Komponenten des Grundrechts auf Datenschutz, die dies verhindern sollen!
Aufgabe 1.6.6 a) Entschlüsseln Sie den Text ABIMPKDFEGBOD mit dem Vigenère-Schlüssel (1,3,9)! b) Denken Sie sich selbst einen Vigenère-Schlüssel (m,n) aus (nur zwei Werte, m, n ≤ 2) und verschlüsseln Sie eine Nachricht mit einer Länge von ca. 50 Zeichen! c) Versuchen Sie die Nachricht zu entschlüsseln, die Ihr Banknachbar in Aufgabe b chiffriert hat! Wie lautet sein Schlüssel?
Aufgabe 1.6.2 Diskutieren Sie die Weitergabe personenbezogener Daten im privatwirtschaftlichen Bereich, z. B. an Versicherungen oder Versandhäuser!
Aufgabe 1.6.7 Spielen Sie das Diffie-Helman-Merkle-Verfahren mit Ihrem Banknachbarn an einem selbstgewählten Beispiel durch (b S. 104)!
Die angewandte Informatik hilft u. a. bei der Entwicklung von Informatiksystemen, die bestimmte Anwendungsfälle – Textverarbeitung, Grafikbearbeitung, Tabellenkalkulation, Datenauswertung, Präsentation oder Informationsrecherche – abdecken sollen.
120
Angewandte Informatik
2.1
Textverarbeitung
Unter Textverarbeitung versteht man die computerunterstützte Erstellung, Bearbeitung und Speicherung von Texten. Mit der Erhöhung der Speicherkapazität und der Entwicklung grafischer Benutzeroberflächen wurden zusätzliche Funktionen (z. B. Einbindung von Grafiken und weiterer multimedialer Objekte; Querverweise zwischen Textteilen eines Dokuments und zu anderen Dokumenten) in Textverarbeitungsprogramme integriert.
2.1.1 Aufbau und Funktion von Textverarbeitungsprogrammen Stapel- und dialogorientierte Textverarbeitungsprogramme
WYSIWYG ist die Abkürzung für „what you see is what you get“ (Was du siehst, ist das, was du bekommen wirst.)
HTML ist die Abkürzung für „hypertext markup language“. HTML ist die Dokumentenbeschreibungssprache, die sich im Internet durchgesetzt hat.
stapelorientierte Programme
dialogorientierte Programme
Beschreibung
Bei der Texterstellung werden mithilfe von Sonderzeichen Formatierungsbefehle eingegeben, die z. B. die Schriftgröße, den Schriftstil oder die Zeilenlänge festlegen. Das endgültige Aussehen des Dokuments kann man entweder am Ausdruck erkennen oder es wird ein Formatierungsprogramm aufgerufen, welches die Formatierungsbefehle interpretiert und den formatierten Text auf dem Monitor ausgibt.
Der Nutzer steht mit dem Programm in ständiger Verbindung. Texte werden im Dialog mit dem Computer eingegeben und korrigiert. Formatiert wird mithilfe der Maus über Menüs, Icons und Werkzeugleisten. Das Dokument, welches teilweise auf dem Bildschirm zu sehen ist, entspricht in seiner Form der gedruckten Version (WYSIWYG).
Vergleich (Vor- und Nachteile)
• geringer Speicherbedarf • nutzerunfreundlich (Formatierungsfehler werden nicht sofort erkannt; der Bearbeiter muss sich eine Unmenge von Tastenkombinationen zur Formatierung merken)
• hoher Speicherbedarf • nutzerfreundlich (alle Formatierungen sofort ersichtlich; Formatierungen über aussagekräftige Icons und Menüfolgen; Tastenkombinationen zur schnelleren Formatierung sind möglich)
Beispiele
HTML, Formatierungsprogramm ist der Browser LaTEX (an Hochschulen weit verbreitet)
Microsoft Word; WordPad (Standard-Zubehör unter Microsoft Windows)
Textverarbeitung
Oberfläche dialogorientierter Textverarbeitungsprogramme Nachdem man beispielsweise auf das Symbol des entsprechenden Textverarbeitungsprogramms einen Doppelklick ausgeführt hat, erscheint ein Fenster mit der Oberfläche des Programms. Meist wird auch sofort ein leeres Dokument, also eine Textdatei, in die noch nichts geschrieben wurde, geöffnet. Im folgenden Bild ist die Oberfläche eines Textverarbeitungsprogramms dargestellt.
Profesionelle Textverarbeitungsprogramme sind Word von der Firma Microsoft und StarWriter von Sun Microsystems.
A B C D E F H K H G A Titelleiste mit dem Namen des aktuellen Dokuments sowie Schaltern zum Minimieren, Maximieren oder Schließen des Textverarbeitungsprogramms B Menüleiste mit Pull-Down-Menüs C Standard-Symbolleiste (QuickAccess-Leiste) mit Symbolen für häufig verwendete Befehle D Format-Symbolleiste mit Symbolen zur schnellen Formatierung des Textes E Zeilenlineal mit Einstellmöglichkeiten für Rand, Einzüge, Tabstopps, Spaltenbreiten z. B. in Tabellen F Arbeitsfeld zur Eingabe des Textes G Statuszeile mit Informationen zum Dokument bzw. zu einem gewählten Befehl (von links nach rechts: Nummer der aktuellen Seite; Abschnittsnummer; Seitennummer / Gesamtseitenzahl; Position der Einfügemarke in Zentimeter vom oberen Blattrand und bez. der Zeilen und der Zeichen in der Zeile; Anzeigen für den Tastaturstatus) H Bildlaufleisten zum Verschieben des sichtbaren Bildausschnitts K Einfügemarke (senkrechter Strich)
121
122
Angewandte Informatik
I
Funktion von Textverarbeitungsprogrammen Man arbeitet mit Textverarbeitungsprogrammen am Computer weitaus effektiver als mit herkömmlichen Verfahren (handschriftliche Dokumente, Schreibmaschine) – auch durch folgende Möglichkeiten: • Nutzung vorhandener Texte (ähnliche Briefe, Textbausteine); • gleichzeitiges Arbeiten mit mehreren Texten; • schnelle und einfache Fehlerkorrektur; • problemloses Kopieren; • erweiterte Gestaltungsmöglichkeiten (viele Schriftarten und -größen, Spalten, Rahmen, Tabellen, ...); • integrierte Trenn- und Rechtschreibhilfe; • Synonymwörterbuch; • einfaches Erstellen von Rundschreiben (Serienbriefe, Etiketten); • Übermitteln von Texten auf große Entfernungen (Netzwerke). Dokumente neu schreiben und bearbeiten
In Desktop-Publishing-Programmen ist meist eine Leerzeichenkon trolle vorhanden, die man aktivieren kann. Es wird dann automatisch nur ein Leerzeichen gesetzt.
Die Speicherung sollte auch während der Dokumentbearbeitung in regelmäßigen Abständen erfolgen, damit bei einem „Rechnerabsturz“ möglichst wenig Arbeit verloren geht.
Nach dem Starten des Textverarbeitungsprogramms kann sofort mit der Texteingabe begonnen werden, sofern alle Einstellungen in Ordnung sind. Standardmäßig wird ein einspaltiges DIN-A4-Dokument geöffnet. Die Einfügemarke (der Cursor), der kleine blinkende Strich, kennzeichnet die Stelle, an der der nächste Buchstabe eingesetzt wird. Die Position der Einfügemarke lässt sich mit den Tasten auf dem Bewegungsblock der Tastatur oder mit der Maus innerhalb des vorhandenen Textes verändern. Folgende Hinweise sollten beim Schreiben immer beachtet werden: • Ein Textverarbeitungsprogramm ist keine Schreibmaschine: Zeilenumbrüche erfolgen automatisch. Nur wenn man einen Absatz beenden oder eine Leerzeile einfügen will, drückt man auf die -Taste. • Man sollte nicht mehr als ein Leerzeichen hintereinander setzen. Die Textausrichtung erfolgt durch Tabulatoren. • Beim Schreiben unterscheidet man Einfügemodus und Überschreibmodus: Im Einfügemodus werden an der Position der Einfügemarke Zeichen zwischen den schon vorhandenen Text eingefügt. Im Überschreibmodus werden bei der Eingabe die nachfolgenden Zeichen gelöscht („überschrieben“). Standardmäßig sollte man den Einfügemodus verwenden. Ein schneller Wechsel zwischen Überschreib- und Einfügemodus ist in den meisten Textverarbeitungsprogrammen mit der -Taste möglich. • Sobald man mit dem Schreiben des Textes begonnen hat, sollte man dem Dokument einen Namen geben und es speichern. Den Befehl „Speichern unter…“ findet man immer ganz links in der Menüleiste im Menü „Datei“. Ist ein Name vergeben, kann die Speicherung mit Menü „Datei“ g Befehl „Speichern“ oder einem Klick auf den entsprechenden Schalter in der Standard-Symbolleiste ( ) erfolgen. • Das Bearbeiten von Texten wird erleichtert durch die Nutzung solcher Methoden wie Kopieren, Verschieben und Löschen. Bevor ein Textteil gelöscht, verschoben oder kopiert werden kann, muss er markiert werden.
Textverarbeitung
123
2.1.2 Objekte in der Textverarbeitung und ihre Attribute
I
Grundlegende Objekte in einem Textdokument Für den Computer ist ein Textdokument eine Datenstruktur (File), eine Sammlung von Zeichenfolgen, die Strukturierungszeichen (z. B. Zeilenendezeichen) enthält. Auch im Textdokument selbst lassen sich bestimmte „Datenstrukturen“ (Objekte) erkennen: Zeichen setzen sich zu Wörtern zusammen, Wörter zu Sätzen oder Zeilen, diese wiederum zu Absätzen. In den meisten Textverarbeitungsprogrammen können auch Tabellen erzeugt werden. Bei der Textverarbeitung unterscheidet man drei grundlegende Klassen: DOKUMENT, ABSATZ und ZEICHEN. Ein Dokumnet enthält Absätze. Ein Absatz enthält Zeichen. DOKUMENT
1 1..*
ABSATZ
1 0..*
ZEICHEN
Die zugehörigen Attribute heißen in der Textverarbeitung auch Formate. WYSIWYG-Textverarbeitungsprogramme stellen unterschiedliche Möglichkeiten der Zuweisung von Attributwerten (Formatierung) bereit: • Menü: Im Menü „Format“ findet man die Befehle „Zeichen“ (auch „Schriftart und Schriftstil“) und „Absatz“. • QuickAccess-Leiste: Die Symbolleiste (QuickAccess-Leiste, Formatierungsleiste) der Textverarbeitung stellt Mausbenutzern Abkürzungsverfahren für Schriftarten, Schriftgröße und Schriftstile sowie für Absatzformatierungen zur Verfügung. • Tastenkombinationen: Auch mit Tastenkombinationen kann man das Erscheinungsbild von markiertem Text in einem Dokument ändern.
Text, der formatiert werden soll, ist vorher immer zu markieren.
Die Klasse ZEICHEN und ihre Attribute Zeichen werden folgendermaßen erzeugt: • Zeichen, die auf der Tastatur dargestellt sind, erhält man durch Drücken der entsprechenden Taste. • Sonderzeichen, die nicht auf der Tastatur dargestellt sind, erzeugt man durch + . • Steuerzeichen wie „bedingter Trennstrich“, „geschützter Trennstrich“, „geschützter Wortzwischenraum“ erhält man oft durch Menüs. Sonderzeichen unter Word einfügen: – Menü „Einfügen“ g Befehl „Symbol...“ – Registerkarte „Sonderzeichen“ – entsprechendes Zeichen auswählen – Schalter „Einfügen“ (In der Registerkarte „Sonderzeichen“ ist auch der Schalter „Tastenkombination“ für die jeweils einzufügenden Zeichen zu finden.)
ANSI-Zeichensatz b S. 25, 26
I
124
Angewandte Informatik
Folgende Formatierungen für Zeichen sind möglich: Man sollte immer erst den gesamten Text schreiben, bevor bestimmten Textteilen (Wörter, Überschriften, ...) Zeichenformatierungen zugewiesen werden.
Bevor Zeichen formatiert werden können, müssen sie markiert werden. Besonders einfach gelingt dies mit der Maus: – Cursor an den Beginn des zu markierenden Textteiles setzen (Klicken) – den zu markie- renden Textteil mit gedrückter linker Maustaste überstreichen (Ziehen) – Maus loslassen
• Schriftart • Schriftgröße • Schriftstil (Schriftschnitt) • Effekte (Farbe, Schattierung, Relief usw.)
Eine Schriftart besteht im Allgemeinen aus allen Zeichen des Alphabets, jeweils als Groß- und Kleinbuchstaben sowie Ziffern, Interpunktions- und Sonderzeichen. Alle Zeichen haben das gleiche Design (die gleiche Gestalt). Oft gibt es für alle diese Elemente noch jeweils eine Ausführung in Kursivschrift und Fettschrift (b Schriftstil). Der Haupttext dieses Buches ist in Frutiger, einer serifenlosen, proportionalen Schriftart geschrieben.
Für Schriftgrößen verwendet man zwei Maßeinheiten, den Punkt und die Pica. Ein Punkt entspricht 0,376 mm (in den USA: 1 Point = 0,351 mm). Eine Pica entspricht zwölf Points.
Versalien sind die Großbuchstaben.
Mit Schriftgröße wird die senkrechte Ausdehnung der Zeichen ausgedrückt, also die Entfernung von der Unterkante eines Buchstabens mit Unterlänge wie g oder q bis zur Oberkante eines Buchstabens mit Oberlänge wie t oder h. Die Schriftgröße 12 (pt, Points) wird in den meisten Textverarbeitungsprogrammen standardmäßig vorgegeben. Dies ist die Größe der Typen auf einer Schreibmaschine. Man unterscheidet i. Allg. folgende Schriftstile (Schriftschnitte): Regular (Normal); Bold (fett); Italic (kursiv, d. h. geneigt); unterstrichen; Kapitälchen (etwas kleinere Versalien, b Bild oben); hochgestellt; tiefgestellt; unterschnitten (Verringerung des Buchstabenabstandes).
Textverarbeitung
Die Klasse ABSATZ und ihre Attribute Ein Absatz bildet eine gedankliche Einheit. Folgende technische Hinweise sind beachtenswert: • Ein Absatzende wird durch erzeugt. Dabei wird der Absatz durch das folgende Zeichen markiert: ¶ Der gesamte Text, der vor diesem Zeichen bis zum nächsten ¶ steht, gehört zum Absatz. • Innerhalb eines Absatzes erfolgt ein automatischer Zeilenumbruch. Man kann einen Zeilenumbruch („weiche Zeilenschaltung“) mit + erzwingen. Eine weiche Zeilenschaltung kann man an dem Zeichen , manchmal auch an erkennen. • Dieses Modell hilft bei der Arbeit: Alle Formatierungen (Eigenschaften) des Absatzes sind in der Absatzendemarke gespeichert. Durch das Löschen von ¶ können sie verloren gehen. Auch kann die Absatzendemarke mit + c in die Zwischenablage kopiert und die Absatzeigenschaften können mit + v auf andere Absätze übertragen werden. Folgende Formatierungen für Absätze sind möglich: • Ausrichtung • Einzüge • Zeilenabstand und Abstand vor und nach dem Absatz • tabellarische Gestaltung durch Tabulatoren und Tabstopps • Effekte (Rahmen, Umbruch, ...)
Sonderzeichen zur Darstellung von Absatzendemarken, weichen Zeilenschaltungen, Tabulatoren und Leerzeichen sollten auf dem Bildschirm immer zu sehen sein. Ist dies nicht der Fall, kann man deren Ansicht z. B. unter Word durch Klicken auf den Schalter in der QuickAccessLeiste (Symbolleiste Standard) erreichen. Diese Sonderzeichen werden nicht mitgedruckt, sie sind nur auf dem Bildschirm zu sehen.
Zum Formatieren muss der Absatz markiert sein. Will man einen Absatz markieren, wird der Cursor irgendwo in den Absatz gesetzt. Mehrere Absätze muss man mit gedrückter Maustaste überstreichen.
Bei der Ausrichtung von Absätzen zu den Seitenrändern unterscheidet man: linksbündig, zentriert, rechtsbündig und Blocksatz.
Man kann folgende Absatzeinzüge unterscheiden: linker Einzug, rechter Einzug, Erstzeileneinzug, negativer Erstzeileneinzug (hängender Einzug) sowie auch Kombinationen dieser Möglichkeiten.
Negative Erstzeileneinzüge helfen bei Aufzählungen und Gliederungen.
125
126
Angewandte Informatik
Der Ausdruck „Durchschuss“ stammt aus der Zeit, als man dünne Metallstreifen aus Blei zwischen die Zeilen der Schriftzeichen zur Vergrößerung der Zeilenabstände einsetzte.
Der Zeilenabstand (Durchschuss) richtet sich nach der Standard-Zeichengröße im Absatz. Der Abstand vor bzw. nach einem Absatz wird ebenfalls in Punkten (pt) oder Zeilen (z. B. 0,5 ze) angegeben. In das entsprechende Textfeld können aber auch Zentimeterangaben eingegeben werden (z. B. 0,25 cm).
Der Begriff Tabulator (Kolonnensteller) ist von der Schreibmaschine übernommen worden. Auch dort gibt es eine Einrichtung zum sprunghaften Bewegen und Anhalten des Wagens, um Textkolonnen untereinander zu schreiben.
Für eine tabellarische Übersicht (z. B. ein nach DIN-Norm geschriebener zweispaltiger Lebenslauf) werden mit der Tabulatortaste < |> Steuerzeichen – Tabulatoren – in den Text eingefügt. Es muss allerdings festgelegt werden, wie weit jeweils ein Tabulator (ein solcher Schritt) reicht. Hierzu benutzt man Tabstopps.
Zum Setzen von Tabstopps gibt es natürlich auch Menüs: Menü „Format“ g Befehl „Absatz...“
Tabstopps lassen sich am einfachsten über das Zeichenlineal setzen: – Es werden die Absätze markiert, denen ein Tabstopp zugewiesen werden soll. – Danach wird auf den linken Rand des Zeilenlineals solange geklickt, bis die gewünschte Tabstoppart angezeigt wird. – Es wird auf die Stelle im Lineal geklickt, an der ein Tabstopp gesetzt werden soll.
Beträgt die Größe der Standardschrift 8 pt, so wird in Textverarbeitungsprogrammen der Zeilenabstand automatisch mit 10 pt festgelegt und mit „Einzeilig“ oder „Einfach“ bezeichnet. Er kann aber auch genau auf ein bestimmtes Maß eingestellt werden (1,5 Zeilen oder 15 pt usw.).
Der Tabstopp ist ein Absatzattribut zum Ausrichten von Text in tabellarischer Form. Mit dem Tabstopp wird die Position angegeben, bis wohin ein Sprung mit der Tabulatortaste erfolgen soll. Man unterscheidet vier Arten von Tabstopps: • Linksbündig Der Text steht nach dem Tabstopp. • Zentriert Der Text wird am Tabstopp mittig ausgerichtet. • Rechtsbündig Der Text steht vor dem Tabstopp. • Dezimal Der Text (z. B. eine Dezimalzahl) ist am Komma ausgerichtet.
Zeilenlineal von Word: Füllzeichen sind insbesondere dann sinnvoll, wenn Gliederungen oder Inhaltsverzeichnisse gestaltet werden sollen, in denen die Textelemente so weit auseinanderliegen, dass eine eindeutige Zuordnung nicht möglich ist.
linksbündig zentriert
rechtsbündig
dezimal: 2,456 kg
Die Tabstopps können jederzeit verschoben werden, indem man sie mit der Maus „anfasst“ und an die gewünschte Position zieht. Tabstopps werden gelöscht, indem man sie aus dem Zeilenlineal „herauszieht“. Tabstopps kann man Füllzeichen zuweisen. Diese werden immer automatisch vor den Tabstopp eingesetzt.
Textverarbeitung
Die Klasse Dokument und ihre Attribute
Einen Seitenwechsel erkennt man auf dem Bildschirm im Allgemeinen an einer gepunkteten Linie: ................................ Einen erzwungenen Seitenumbruch (manuellen Seitenumbruch) erreicht man meist mit + oder über Menüs.
Ein Textdokument wird beim Drucken in Seiten eingeteilt. Dass man diese Seiten schon am Bildschirm sehen kann, liegt an der Software, die zum Drucker gehört, dem Druckertreiber. Für Attribute wie • Seitenlänge und -breite, • Seitenränder, Kopf- und Fußzeilenränder, Seitennummerierung, • Spaltenanzahl existieren in Textverarbeitungsprogrammen Standardvorgaben (Voreinstellungen), die man verändern kann. Folgende Seitenformatierungen sind im Allgemeinen möglich: Seitenrand oben
Kopfzeilenabstand zum Seitenrand
Fußzeilenabstand zum Seitenrand Seitenrand unten
Abschnittswechsel (Bereichswechsel, hier Wechsel von einspaltig zu zweispaltig)
Seitenrand innen
Seitenrand außen Fußnote (liegt im Textfeld)
Bundsteg (zusätzlich zu berücksichtigender Rand, wenn die Seiten als Buch gebunden werden sollen)
127
128
Angewandte Informatik
2.1.3 Publikation und Präsentation Möglichkeiten der Seitenformatierung zur Gestaltung von Dokumenten Für die Publikation längerer Dokumente sind neben der Festlegung der Seitengröße und der Seitenränder folgende Möglichkeiten von Bedeutung: Spalten und Tabellen, Kopf- und Fußzeilen sowie Fußnoten. In den meisten Textverarbeitungsprogrammen kann man ein Dokument in Bereiche oder Abschnitte untergliedern. Diese sind nicht mit der Struktur „Seite“ identisch, sondern können sich auf das gesamte Dokument, mehrere Seiten oder auch nur Teile von Seiten beziehen. So können unterschiedliche Seitenränder festgelegt werden, oder es kann z.B. auf einer Seite sowohl zwei- als auch dreispaltiger Text erzeugt werden. Abschnitte und Seiten sind im Normalfall einspaltig angelegt. Es ist meist möglich, mehrere Spalten festzulegen. Die Abschnittswechsel, die einen mehrspaltigen Abschnitt von anderen Abschnitten trennen, werden von Word automatisch eingefügt.
Spalten einrichten unter Word: – Menü „Format“ g Befehl „Spalten…“ – Einfache Spaltenformatierungen sind auch über den Schalter in der Standard-Symbolleiste möglich.
Text kann auch mittels Tabellen in Spalten angeordnet werden. Tabellen sind nicht nur mit Tabulatoren und Tabstopps erzeugbar (b S. 126), sondern sie können auch als gesonderte Objekte eingefügt werden. In Tabellen lassen sich Informationen nebeneinander (in Spalten) und untereinander (in Zeilen, Reihen) anordnen. Tabellen bestehen aus Zellen, die durch die Zeilen und Spalten erzeugt werden. In jeder einzelnen Zelle sind alle Zeichen- und Absatzformatierungen möglich. Die erste (obere) Zeile und / oder die erste (linke) Spalte einer Tabelle heißt Tabellenkopf und dient zum Eintragen von Spalten- bzw. Zeilenüberschriften.
In professionellen Desktop-PublishingProgrammen wie FrameMaker oder InDesign lassen sich weitere Eigenschaften für Tabellen festlegen: Abstand vor und nach einer Tabelle, Tabellentitel, Standardränder für Zellen, ...
Die Informationen bleiben stets übersichtlich angeordnet, auch wenn durch die Eingabe von viel Text die Zeilen innerhalb einer Zelle umgebrochen werden. Tabellen eignen sich auch zum Anordnen von Text und Grafik, die Linien der Tabelle können nämlich ausgeblendet werden, ohne dass das Tabellengerüst „zusammenfällt“. Zum Einfügen und Vorformatieren von Tabellen existiert meist ein gesonderter Menüpunkt (Menü „Tabelle“ g Befehl „Tabelle einfügen…“) und ein Schalter in der Standard-Symbolleiste ( ).
Folgende Formatierungen kann man für Tabellen vornehmen: • Anzahl der Zeilen und der Spalten; • Zeilenhöhe, Spaltenbreite, auch die Breite einzelner Zellen; • Ausrichtung der Tabelle zum Seitenrand (rechtsbündig, linksbündig, zentriert, rechter oder linker Einzug); • Rahmen und Hintergrundschattierung von Zellen.
Textverarbeitung
Kopfzeilen und Fußzeilen sind Bereiche im oberen bzw. unteren Seitenrand, in denen gleiche Textelemente für das gesamte Dokument auftreten. Solche Textelemente können sein: • Wiederholungen von Überschriften, • Seitennummer, • Datum und Uhrzeit der Dokumenterstellung, • Firmeninformationen wie Anschriften und Bankverbindungen. Der Inhalt der Kopf- und Fußzeilen wird nur einmal geschrieben. Die Kopf- und Fußzeilen für gerade (linke) bzw. ungerade (rechte) Seiten oder für die erste Seite eines Dokuments können gesondert definiert werden.
Seitennummern sollten immer außen erscheinen. Wiederholungen von Überschriften setzt man in die Kopfzeile, Firmeninformationen (z. B. Bankverbindungen) in die Fußzeile.
Kopf- bzw. Fußzeilen erstellen unter Word: – Eine günstige Dokumentansicht für das Erstellen von Kopf- und Fußzeilen lässt sich mit Menü „Ansicht“ g Befehl „Seiten-Layout“ erreichen. – Menü „Ansicht“ g Befehl „Kopf- und Fußzeile“ Es erscheinen • ein Bearbeitungskasten zum Schreiben der Kopfzeile und • eine neue Symbolleiste:
Seitenzahlen einfügen und formatieren
Datum Umschalten zum und Uhrzeit Seite Bearbeitungskasten einfügen einrichten für die Fußzeile
– Aus dem Kopf- oder Fußzeilenkasten kommt man über den Schalter „Schließen“ oder mit einem Doppelklick in den normalen Text. In wissenschaftlichen Texten werden oft Fußnotenzeichen an Begriffe oder Zitate angefügt. Die entsprechenden Erläuterungen bzw. Quellenangaben werden am Ende der Seite als Fußnoten oder am Ende des Textes (Endnoten) angefügt. Textverarbeitungsprogramme reservieren automatisch den entsprechenden Platz für den Fußnotentext und richten den Text auf jeder Seite so ein, dass sich das Fußnotenzeichen und der Fußnotentext auf der gleichen Seite befinden. Fußnoten erstellen unter Word: – Cursor an die Stelle setzen, wo das Fußnotenzeichen erscheinen soll – Menü „Einfügen“ g „Fußnote...“ (Formatierungen vornehmen) – Schalter „OK“ (Fußnotenzeichen wird eingesetzt und auf der Seite unten wiederholt) – Fußnotentext eingeben (Durch einen Doppelklick auf das Fußnotenzeichen vor dem Fußnotentext gelangt man in den „normalen“ Text zurück.)
Fußnotenzeichen lassen sich nur im „normalen“ Text löschen. Aber Vorsicht: Dabei wird auch der Fußnotentext gelöscht! Die folgenden Fußnotenzeichen passen sich automatisch in der Nummerierung an.
129
130
Angewandte Informatik
Möglichkeiten der Absatzformatierung zur Gestaltung von Dokumenten Die Absatzkontrolle sollte immer eingeschaltet sein, Schusterjungen und Hurenkinder sehen unschön aus.
Insbesondere sollten Überschriften mit dem folgenden Absatz verbunden werden.
In professionellen DTP-Programmen (Beispiele: FrameMaker, InDesign) kann der Nutzer Formatvorlagen für Absätze, Zeichen und Tabellen getrennt erstellen. Dadurch ist es beispielsweise möglich, einem Absatz das Format „Einzug“ zuzuweisen und bestimmten Wörtern im Absatz das Zeichenformat „Kapitälchen“. Bei Zuweisung eines neuen Absatzformats bleibt die Eigenschaft „Kapitälchen“ erhalten.
Vordefinierte Vorlagen sollten nicht gelöscht werden, da sich dies oft auf andere Formatvorlagen auswirkt, z. B. bauen Formatvorlagen von Inhaltsverzeichnissen auf Überschriftsvorlagen auf. (b S. 132)
Absätze können oft recht lang sein und werden gelegentlich mit einer neuen Seite umgebrochen. Textverarbeitungsprogramme stellen zum Umbruch von Absätzen etliche sinnvolle Kontrollfunktionen bereit: • Die „Absatzkontrolle“ verhindert alleinstehende Absatzzeilen, also dass die letzte Zeile eines Absatzes zu Beginn einer neuen Seite („Hurenkind“) oder die erste Zeile eines Absatzes am Ende der Seite („Schus terjunge“) steht. • Man kann das Textverarbeitungsprogramm dazu zwingen, dass der Absatz geschlossen umgebrochen oder generell auf die nächste Seite gebracht wird. • Es ist möglich, Absätze zu verbinden, sodass sie nur gemeinsam umgebrochen werden. Dokumente machen vor allem dann einen geschlossenen, ästhetischen Eindruck, wenn sich die Formatierungen von Überschriften, Fließtext oder Absätzen mit Einzügen wie ein roter Faden durch das gesamte Schriftstück ziehen. Einmal vorgenommene Formatierungen können gespeichert und immer wieder neuen Absätzen (manchmal auch Zeichen und Tabellen) zugewiesen werden. Unter einem Namen gespeicherte Formatierungen – insbesondere für Absätze – heißen Formatvorlagen (Druckformate). Wenn die Attributwerte einer Formatvorlage geändert werden, dann ändern sich automatisch alle entsprechenden Formatierungen im Dokument. Formatvorlagen helfen, Zeit zu sparen, sorgen für ein einheitliches Layout, erleichtern Layoutänderungen in einem Dokument und sind auch relativ einfach zu erstellen. Formatvorlagen erstellen unter Word: – Absatz mit gewünschten Eigenschaften (z. B. Standard-Schriftart, Ausrichtung, Einzüge, Tabstopps, Rahmen) versehen und markieren – neuen Formatnamen in das Listenfeld für Formatvorlagen (ganz links in der QuickAccess-Leiste) eintippen – Soll außerdem ein Shortcut – eine Tastenkombination zur schnelleren Formatierung – erstellt werden, so nutzt man besser Menüs: Menü „Format“ g Befehl „Formatvorlage…“ g Schalter „Bearbeiten…“ (Namen eingeben) g Schalter „Tastenkombination…“. Die erstellte Formatvorlage kann jederzeit anderen Absätzen zugewiesen werden, indem man den zu formatierenden Absatz markiert und die entsprechende Formatvorlage aus dem Listenfeld in der QuickAccessLeiste auswählt. Nicht benötigte Formatvorlagen können gelöscht werden. Formatvorlagen können geändert und auch auf andere Dokumente übertragen werden. Formatvorlagen in andere Dokumente übernehmen unter Word: – „Format“ g „Formatvorlage…“ g Schalter „Organisieren...“
Textverarbeitung
Grafikeinbindung und Desktop-Publishing In Dokumente lassen sich Grafiken und grafikähnliche Objekte wie Diagramme und Formeln einfügen. Möglichkeiten des Imports von Grafiken • Über die Zwischenablage von Windows (oder einer anderen Benutzeroberfläche) können Grafiken aus anderen Windows-Anwendungen eingefügt werden. • Es lassen sich Grafiken von der Festplatte oder externen Speichermedien einlesen. Zum Lieferumfang von Textverarbeitungsprogrammen gehören Grafikfilter, die die gängigsten Grafikformate lesen können. Meist werden auch vorgefertigte Grafiken bereitgestellt. • Textverarbeitungsprogramme besitzen oft selbst integrierte Mittel zur Erstellung und Nachbearbeitung von Grafiken.
Es gibt verschiedene Methoden, Grafiken in ein Dokument einzubinden: Einbetten von Objekten und die OLE-Methode (b Abschnitt 2.6.1)
Mit Möglichkeiten wie Mehrspaltigkeit, Tabellen- und Grafikeinbindung haben Textverarbeitungsprogramme heute schon solche Funktionen, dass sie als einfache DTP-Programme genutzt werden können. Unter DTP (Desktop-Publishing) versteht man das Erstellen und Gestalten grafischer Drucksachen wie Plakate oder andere Werbematerialien und Zeitschriften. Durch das Einbinden von Kopf- und Fußzeilen, durch die Generierung von Fußnoten, Inhaltsverzeichnis und Register und durch DTP-Funktionen (Mehrspaltigkeit, Rahmenpositionierung, ...) ist es möglich, mit Textverarbeitungsprogrammen auch Bücher und andere Drucksachen herzustellen. Bevor dies geschieht, muss das Layout dafür festgelegt werden. Unter Layout versteht man das generelle Erscheinungsbild eines Druckwerkes – angefangen vom Einband mit Titelbild über das Format (Seitengröße) und die Seitenaufteilung mit eingebundenen Tabellen und Grafiken bis hin zu den genutzten Schriftarten und -größen.
I
Schritte beim Erstellen von längeren Dokumenten Folgender Weg sollte gegangen werden: 1. Festlegen des Layouts: – Seitengröße, Seitenränder, Kopf- und Fußzeilenränder definieren – Spaltenanzahl- und -breite definieren – Druckformate für Absatz- und evtl. Zeichentypen festlegen 2. Text eingeben oder aus anderen Dokumenten „einfließen“ lassen 3. Text prüfen und korrigieren 4. Text formatieren, Tabellen und Grafiken einbinden 5. Dokument speichern (auch schon zwischendurch) 6. Dokument drucken
Desktop-Publishing heißt „Publizieren (Veröffentlichen) vom Schreibtisch aus“.
131
132
Angewandte Informatik
Sonderfunktionen in Textverarbeitungsprogrammen zur Publikation Zur Trennhilfe: Absätze im Blocksatz haben ohne Silbentrennung oft unschöne Lücken zwischen den einzelnen Wörtern. Es sieht nicht schön aus, wenn Silben mit weniger als 3 Zeichen von Wörtern abgetrennt werden, z. B. wenn „Oma“ getrennt wird. Auch die Aufeinanderfolge von mehr als 3 Zeilen mit einem Trennzeichen am Ende wirkt unschön. In professionellen Textverarbeitungsprogrammen kann man die Trennhilfe so einstellen, dass dies alles verhindert wird.
I
Folgende leistungsfähige Sonderfunktionen können Textverarbeitungsprogramme zur Verfügung stellen: • Druckformate (Absatzformate können gespeichert und anderen Absätzen jederzeit zugewiesen werden, b S. 130); • Dokumentvorlagen (spezielle Dokumente, welche als Muster für andere Dokumente derselben Art genutzt werden können); • Rechtschreibhilfe durch integrierten „Duden“; • automatische Silbentrennung (Trennhilfe) zur ästhetischeren Ansicht von Texten (b Informationstext in der Randspalte); • Thesaurus (Synonymwörterbuch) zum Bereitstellen sinnverwandter Begriffe; I • Textbausteine für sich ständig wiederholende Floskeln; • Suchen und Ersetzen von Text (und von Formaten); • Gliederung automatisch erstellen; • Inhaltsverzeichnis und Register automatisch erstellen; • Serienbriefe (b S. 133).
I
Gliederung Eine Gliederung strukturiert ein Dokument beispielsweise durch Überschriften für Kapitel (Gliederungsebene 1), Abschnitte (Ebene 2) und Unterabschnitte (Ebene 3). Der Inhalt der einzelnen Kapitel, Abschnitte und Unterabschnitte wird oft als Fließtext bezeichnet. Erstellen einer Gliederung unter Word: – Menü „Format“ g Befehl „Nummerierung und Aufzählungszeichen…“ – Registerkarte „Gliederung“ (Gliederungsart auswählen) Inhaltsverzeichnis und Register
Soll das Inhaltsverzeichnis am Anfang des Dokuments stehen, muss man dort durch Einfügen eines Seitenumbruchs vor dem Anlegen des Inhaltsverzeichnisses Platz schaffen, damit die Seitennummerierung nach dem Einfügen des Inhaltsverzeichnisses noch stimmt.
Ein Inhaltsverzeichnis eines Dokuments basiert auf seiner Gliederung. Wurde die Gliederung korrekt erstellt, lässt sich das Inhaltsverzeichnis mit den Seitenzahlen für die einzelnen Gliederungspunkte automatisch anlegen. Bei Änderung der Gliederung und Verschiebung von Seitenzahlen durch Einfügen oder Löschen von Text kann man das Inhaltsverzeichnis (oft schon per Tastendruck) aktualisieren. Einfügen eines Inhaltsverzeichnisses unter Word: – Cursor an die Stelle setzen, wo das Inhaltsverzeichnis erscheinen soll – Menü „Einfügen“ g Befehl „Index und Verzeichnisse...“ g Registerkarte „Inhaltsverzeichnis“ – Format der Gliederung auswählen; Gliederungstiefe festlegen – Option „Seitenzahlen anzeigen“; Option „Seitenzahlen rechtsbündig“; Füllzeichen zwischen Text und Seitenzahlen festlegen; Schalter „OK“ Das Inhaltsverzeichnis wird mit aktualisiert (Cursor im Verzeichnis)
I
Textverarbeitung
Das Register (der Index) ist ein Stichwortverzeichnis, welches meist am Ende eines längeren Dokuments – eines Buches – steht und in dem wichtige Begriffe alphabetisch geordnet aufgelistet sind. Dabei werden jeweils alle Seitennummern angegeben, wo die Begriffe zu finden sind. Das Register wird in zwei Schritten angelegt: – Es müssen alle Begriffe festgelegt werden, die im Register erschei- nen sollen. – Das automatische Erstellen des Registers muss eingeleitet werden. In Registern kann man zwischen Haupt- und Untereinträgen von Begriffen unterscheiden: Haupteintrag: Absatz 125 Untereintrag: Ausrichtung 125 Untereintrag: Schusterjunge 130 Untereintrag: Zeilenabstand 126 Anlegen eines Registers unter Word: Manuelles Festlegen der Registereinträge: – Wort markieren – Menü „Einfügen“ g Befehl „Index und Verzeichnisse...“ g Registerkarte „Index“ g Schalter „Eintrag festlegen...“ – Haupt- und Untereintrag unterscheiden; Option „Aktuelle Seite“ – Schalter „Festlegen“ (Fenster bleibt für mögliche weitere Einträge geöffnet) Erstellen des Registers: – Cursor an das Ende des Dokuments setzen – Menü „Einfügen“ g Befehl „Index und Verzeichnisse...“ g Registerkarte „Index“ – Formatierungseigenschaften für das Register festlegen – Schalter „OK“ Serienbriefe Ein Serienbrief ist ein Brief, der mit gleichem Hauptinhalt, aber individuellen Angaben für den Adressaten an verschiedene Personen verschickt wird. Für die Anrede oder die Anschrift werden Variablen verwendet, die beim Druck mit konkreten Angaben gefüllt werden. Es müssen zwei Dateien erstellt werden: • Die Steuerdatei (Datenquelle) enthält Variablen (Feldnamen im ersten Absatz oder im Tabellenkopf) und den zugehörigen Wechseltext. • Die Serientextdatei (das Hauptdokument) enthält den Textinhalt, der gleichbleibend in allen Briefen gedruckt wird, sowie die Variablen, die als Platzhalter für den Wechseltext fungieren. Beim Seriendruck werden diese beiden Dateien automatisch zusammengefügt. Es wird eine festgelegte Anzahl von Serienbriefen erzeugt.
In Word sind die Befehlsworte für den Registereintrag in geschweiften Klammern auf dem Bildschirm mitten im Text zu sehen. Mit lassen sich diese Steuerzeichen ausblenden.
133
134
Angewandte Informatik
Prinzip des Seriendrucks Hauptdokument
Datenquelle Vorname
Name
Geschlecht
Straße
PLZ
Ort
Anja Nils Maria Harald Paul
Metzler Meyer Weber Martens Schmidt
w m w m m
Heideweg 10 Baumstr. 12A Dorfstraße Am Wald 22 Steinweg 7
12245 34562 17168 07646 09385
Berlin Köln Pampow Stadtroda Lugau
Serienbriefe Paul Schmidt Steinweg 7 09385 Lugau Sehr geehrter Herr
Maria Weber Dorfstraße 17168 Pampow Sehr geehrte Frau
Nils Meyer Baumstr. 12A 34562 Köln Sehr geehrter Herr
Ein häufig auftretender Fehler ist, dass man versucht, von der Datenquelle aus zu drucken und nicht vom Hauptdokument.
Professionelle Textverarbeitungsprogramme besitzen meist eine komfortable Menüführung zum Erstellen und Drucken von Serienbriefen. Seriendruck unter Word: Erstellen des Hauptdokuments: – Menü „Extras“ g Befehl „Seriendruck…“ – 1. Hauptdokument: S Erstellen B Serienbriefe... S Aktives Fenster – 2. Datenquelle: S Datenquelle importieren B Datenquelle öffnen... oder erstellen... – Schalter „Hauptdokument bearbeiten“ Drucken: – Menü „Extras“ g Befehl „Seriendruck…“ – 3. Daten mit Dokument zusammenführen: Schalter „Ausführen…“
Beim Programmieren eines Serienbriefes können auch logische Fehler auftreten. Es ist daher sinnvoll, die Serienbriefe nicht direkt, sondern zuerst in eine Datei zu drucken und sich diese Datei anzuschauen.
Die Datenquelle kann in vielen Textverarbeitungsprogrammen auch extern – z. B. in einem Tabellenkalkulations- oder Datenbankprogramm – erstellt werden.
Zu Algorithmenstrukturen vgl. Abschnitt 1.3.2, S. 32 ff.
Beim Seriendruck läuft im Prinzip ein Programm ab, welches man selbst erstellt hat. Im Programm sind Variablen vorhanden. Die Werte werden aus der Datenquelle beim Druck eingegeben. Algorithmenstrukturen sind erkennbar: Man kann Entscheidungsstrukturen mit logischen Operatoren einbauen. Beispielsweise kann die Anrede in Abhängigkeit vom Geschlecht mit einem „Wenn...Dann...Sonst-Feld“ erfolgen. Beim Druck selbst laufen Schleifen ab.
Das Wichtigste im Überblick
Objekte, Attribute und Attributwerte in der Textverarbeitung
Dokument 1 enthält enthält enthält Absatz 1
Objekt Attribut
Attributwerte (Beispiele)
Dokument (Seite)
• DIN A4 (210 mm × 297 mm); DIN A5 (148 mm × 210 mm)
Absatz 2 ...
• Seitenlänge- und Breite (Papierformat) • Seitenränder • Seitennummerierung • Spaltenanzahl
Absatz • Ausrichtung • Einzug
enthält
• Abstand vor bzw. nach dem Absatz • Zeilenabstand
enthält Zeichen 1
enthält
Zeichen 2
• Tabstopp
enthält
Zeichen 3
• überall 2 cm • oben außen arabisch • 1-spaltig; 2-spaltig • linksbündig; zentriert; rechtsbündig; Blocksatz • links 2 cm; rechts 4 cm; hängender Einzug • 12 pt vor dem Absatz; 6 pt nach dem Absatz • einfach; doppelt; 1,5zeilig • linksbündig bei 4 cm; rechtsbündig bei 16 cm
...
Zeichen
• Inhalt • Schriftgröße • Schriftstil • Schriftfarbe • Schriftart
• A; B; e; x; ×; 1; 2; 9; &; ? • 8 pt; 10 pt; 12 pt • fett; kursiv; unterstrichen; Kapitälchen • Schwarz; Rot; Hellblau • Times Roman; Helvetica; Courier; serifenlose Schrift
Erarbeiten von Publikationen 1. 2. 3. 4. 5. 6. 7.
Layout festlegen: – Seitengröße (Papierformat) – Seitenränder – evtl. Spaltenanzahl und Spaltenbreite – evtl. Kopfzeilen oder Fußzeilen mit Seitennummern – Schriftarten – Absatzklassen und Formatvorlagen – Gliederungsebenen festlegen Text in das aktuelle Dokument eingeben oder aus anderen Dokumenten hineinkopieren Text prüfen und korrigieren (Rechtschreibhilfe, Thesaurus) Text formatieren und evtl. Grafiken einbinden Gliederung und Inhaltsverzeichnis erstellen Registerbegriffe festlegen und Register generieren Dokument drucken
135
136
Angewandte Informatik
I
2.2
Grafikprogramme
2.2.1 Computergrafik Ein Grafiktablett (Digitalisierungstablett) ist eine meist auf magnetischer Basis arbeitende Tafel, auf der mittels eines Stifts freihändig gezeichnet werden kann. Das Tablett ist über eine spezielle Steckkarte mit dem Computer verbunden.
Voraussetzungen für das Erstellen von Grafiken am Computer Unter Computergrafik versteht man die Erstellung und Verarbeitung von Grafiken mittels eines Computers. Hierzu benötigt man – Eingabegeräte wie Scanner, Maus, Tastatur, Grafiktablett, Touchscreen und Lichtstift – Software (Grafikprogramm) und Hardware (Grafikkarte) zur Verarbeitung der Grafikdaten; – Ausgabegeräte wie Bildschirm, Plotter und Drucker. Farben
I
Die Gestaltungsmöglichkeiten für Grafiken hängen stark von der Anzahl der benutzbaren Farben (Farbtiefe) ab. Außerdem ist immer zu beachten, welche Ein- und Ausgabegeräte man verwendet, denn jedes Gerät besitzt einen eigenen, mehr oder weniger eingeschränkten Farbraum. Man unterscheidet im Allgemeinen zwischen additiver Farbmischung (RGB-Modell, beispielsweise für den Monitor) und subtraktiver Farbmischung (CMYK-Modell, beispielsweise für den Drucker). Bei der additiven Farbmischung (RGB-Farbraum) werden alle Farben des Farbkreises durch Mischen des Lichtes der Grundfarben Rot, Grün und Blau erzeugt. Durch Mischen von rotem, grünem und blauem Licht erhält man weißes Licht. Die Wellenlängen der drei Grundfarben werden übereinander gelagert (addiert). Außerdem gilt: • Gegenüberliegende Farben des Farbkreises ergeben beim Mischen Weiß (Komplementärfarben). • Jede Farbe des Farbkreises kann man durch Mischen der beiden benachbarten Farben erhalten.
I
Bei einer Farbtiefe von 8 Bit stehen für eine Grundfarbe 28 = 256 Intensitätsstufen zur Verfügung (von 0 bis 255). additive Farbmischung
Das Tripel (R, G, B) = (255, 0, 0) liefert reines Rot; (200, 0, 0) ist ein dunkleres Rot; (0, 0, 0) ist die Abwesenheit von Licht (Schwarz). Beim Mischen wird das gerundete arithmetische Mittel der jeweiligen Intensitätsstufen gebildet: + 255 0 + 255 0+0 (255, 0, 0) + (255, 255, 0) = (255, 127, 0) = ( 255 , } , } 2 ) } 2 2
Beispiel für einen Farbkreis
(75, 255, 179) + (255, 0, 255) = (165, 127, 217)
Grafikprogramme
Der RGB-Farbraum besitzt eine Farbtiefe von 24 Bit (16 777 216 Farben). Diese ergibt sich aus dem Produkt der Darstellungstiefen der einzelnen Grundfarben: 256 · 256 · 256 = 28 · 28 · 28 = 224.
I
Bei der subtraktiven Farbmischung (CMYK-Farbraum) werden alle Farben des Farbkreises durch Mischen der Grundfarben Cyan (Blaugrün), Magenta (Purpur) und Yellow (Gelb) erzeugt. Black (Schwarz) erhält man durch Mischen von Cyan, Magenta und Yellow. Beim Druck wird meist eine gesonderte Schwarz-Patrone oder SchwarzPlatte genutzt. Außerdem gilt: • Gegenüberliegende Farben des Farbkreises ergeben beim Mischen Schwarz (Komplementärfarben). • Die Grundfarben der subtraktiven Farbmischung (Cyan, Magenta, Yellow) haben als Komplementärfarben die Grundfarben der additiven Farbmischung (Rot, Grün und Blau). Der CMYK-Farbraum besitzt eine Farbtiefe von 32 Bit (4 294 967 296 Farben). Diese ergibt sich aus dem Produkt der Darstellungstiefen der Grundfarben: 256 · 256 · 256 · 256 = 28 · 28 · 28 · 28 = 232. Die Farbanteile im CMYK-Farbraum werden oft in Prozent angegeben.
subtraktive Farbmischung
Das Tupel (C, M, Y, K) = (0, 100, 100, 0) ist reines Rot; (0, 100, 100, 20) liefert ein dunkleres Rot; (0, 30, 30, 0) ein helles Rosa. Das Tupel (C, M, Y, K) = (100, 100, 100, 0) müsste theoretisch das Gleiche liefern, wie (0, 0, 0, 100), nämlich Schwarz. Am Bildschirm ist dies auch so, aber beim Mischen realer Farben in der Druckerei kommt nur ein schmutziges Braun heraus. Eben aus diesem Grunde sowie aus Kostengründen nutzt man beim Druck als vierte Farbe Schwarz. Farben des RGB-Farbraumes kann man nach CMYK konvertieren und umgekehrt. Dabei werden die Farben verfälscht. Reines Magenta mit (C, M, Y, K) = (0, 100, 0, 0) lieferte unter Adobe Illustrator beim Konvertieren nach RGB das Tripel (239, 5, 127). Theoretisch müsste Magenta mit (R, G, B) = (255, 0, 255) festgelegt sein. Fünfmaliges Hin- und Rückkonvertieren erbrachte (C, M, Y, K) = (2,34; 97,66; 7,81; 0,39) und (R, G, B) = (235, 10, 125). Durch diese Schmutzeffekte beim Farbabgleich mit Schwarz ist eine mathematisch exakte Modellierung des Mischens über Mittelwertbildung wie bei der additiven Farbmischung nur sehr bedingt möglich. Das vom menschlichen Auge wahrgenommene Farbspektrum (a) ist breiter als der Farbumfang eines a technisch erzeugten Farbraums. b Darüber hinaus sind RGB-Farbraum (b) und CMYK-Farbraum (c) nicht deckungsgleich. Ein gescanntes Bild c sieht deshalb am Bildschirm oft anders aus als gedruckt.
Für die Darstellung am Monitor sind „RGB-Formate“ wie JPG und GIF besonders geeignet, für den Drucker „CMYKFormate“ wie TIFF oder EPS.
137
138
Angewandte Informatik
Pixelgrafik und Vektorgrafik Die Maßeinheit dpi steht für „dots per inch“ und bedeutet „Punkte pro Zoll“. Manchmal verwendet man hierfür auch die Abkürzung ppi (pixel per inch). Weitere übliche Maßeinheiten für das Auflösungsvermögen von Ausgabegeräten sind Punkt (pt) und Pica: 1
1
72 " 1 pt = } 72 Zoll = } = 0,0351 cm (USA) 1 " = 0,423 cm 1 Pica = } 6
I
CAD steht für computer-aided design (computerunterstütztes Entwerfen).
I
Die Computergrafik lässt sich auch hinsichtlich ihrer Wahrnehmung in zweidimensionale Computergrafik und dreidimensionale Computergrafik (3DGrafik) unterscheiden. Schon einfache Standardsoftware besitzt Werkzeuge zur Erzeugung von 3D-Objekten wie Perspektiven, Konturen oder Schlagschatten.
Zur Beschreibung von Grafik auf elektronischer Basis kann man sich zwei unterschiedliche Philosophien vorstellen: Erstens: Jeder einzelne Bildpunkt (Pixel) auf dem Monitor (oder auf einem ausgedruckten Blatt Papier) ist durch seine horizontale und vertikale Lage eindeutig festgelegt. Übliche Bildschirmauflösungen sind heute 800 × 600 oder 1024 × 768 (Pixel, b auch S. 77). Im Druck sind 100 dpi bis 2400 dpi möglich. Jeder Punkt wird nun durch seine Farbe (einschließlich Graustufen) beschrieben und die Computergrafik als Gesamtheit der farbigen Punkte. Eine solche Grafik nennt man Pixelgrafik, die Software, mit der man eine solche Grafik erzeugen und bearbeiten kann, Malprogramm. Pixelgrafik (Bitmap, Punktgrafik): Die Grafik setzt sich aus einzelnen Bildpunkten (Pixeln) zusammen, für die die Position und die Werte der Grundfarben gespeichert sind. Zweitens: Die Grafik wird als Zusammensetzung einzelner Objekte (Strecken, Polygone, Ellipsen, ...) betrachtet. Diese Objekte werden mathematisch beschrieben. Beispielsweise ist die Lage eines Rechtecks durch einen Eckpunkt und durch die beiden Vektoren, die von diesem Punkt auf die benachbarten Ecken weisen, eindeutig bestimmt. Weist man nun noch dem Rand und der Fläche des Rechtecks bestimmte Farbwerte zu und tut das Gleiche für alle anderen Objekte der Grafik, spricht man von Vektorgrafik. Die Software heißt Zeichenprogramm (CAD-Programm). Vektorgrafik: Die Grafik setzt sich aus geometrischen Objekten zusammen, die durch Randlinien (Linientyp, Linienbreite und Linienfarbe) und Flächen (Farbe) eindeutig beschrieben sind.
Pixelgrafik
Vekorgrafik
• hoher Speicherbedarf • verlustbehaftete Skalierung
• geringer Speicherbedarf • verlustfreie Skalierung
• besonders geeignet für alle künstlerischen Darstellungen (Malerei: „Pinselzeichnungen“) und Fotos
• besonders geeignet für Kon struktions-Zeichnungen (CADProgramme) und großflächige Grafiken (z. B. Cartoons)
Grafikprogramme
139
Grafikfomate
I
I
Pixelgrafik
• BMP (Windows-Bitmap, unkomprimiert, b S. 182) • GIF (Graphics Interchange Format, komprimiert, b S. 183) • JPG, JPEG (Joint Photographic Expert Group, komprimiert, b S. 183) • PCX (Klassiker der Pixel-Formate für PC, unkomprimiert) • PNG (Alternative zum GIF-Format, komprimiert) • PSD (Format des Malprogramms Adobe Photoshop) • TGA (Targa, auf PC wenig verbreitet, 32 Bit Farbtiefe) • TIF, TIFF (Tagged Image File Format, unkomprimiert, b S. 182)
Vektorgrafik
• AI (Format des Zeichenprogramms Adobe Illustrator) • CDR (Format des Zeichenprogramms Corel Draw) • CGM (genormtes Grafikformat zum Datenaustausch) • EPS (Encapsulated PostScript) • WMF (Windows Metafile, b S. 182)
Mal- und Zeichenprogramme können oft nicht nur ein Bitmap-Format in andere Bitmap-Formate konvertieren (umwandeln), sondern auch Pixelgrafiken in Vektorgrafiken und umgekehrt. Insbesondere zur Präsentation im Internet müssen Vektorgrafiken nach GIF, PNG oder JPG konvertiert, also in Pixelgrafiken umgewandelt werden. Dies ist mit gewissen Nachteilen verbunden: Zwar ist die Kompression beim Dateiformat GIF verlustfrei, aber sobald nur die kleinste Skalierung (Vergrößerung oder Verkleinerung) stattfindet, tritt der Treppeneffekt (einzelne Pixel werden sichtbar) besonders deutlich hervor. Schrift wird hierdurch meist unleserlich. Seltener ist die Umwandlung von Pixel- in Vektorgrafiken. Solch eine Konvertierung lohnt sich nur, wenn die Grafik durch recht wenige, eindeutig erkennbare Objekte (Flächen, Linien) beschrieben werden kann, die dann einfacher (als im Bitmap-Format) manipuliert werden können. Eine Fotografie sollte man nicht in eine Vektorgrafik umzuwandeln versuchen. Das könnte im Extremfall bedeuten, dass jeder Bildpunkt zum Grafikobjekt wird, was weder Speicherplatz spart noch einfache Bearbeitungsmöglichkeiten zulässt.
2.2.2 Pixelorientierte Grafikprogramme Werkzeuge Die Oberfläche der unzähligen Malprogramme ist aufgebaut wie die anderer WYSIWYG-Anwendungsprogramme: Symbole zur Mausbedienung, Pull-Down-Menüs wie „Datei“, „Bearbeiten“ usw. sowie eine Arbeitsfläche. Das Besondere ist eine horizontale oder vertikale Werkzeugleiste:
Komprimierte Grafiken, wie solche im GIF-Format, werden niemals skaliert. Man hebt sich für die Bearbeitung die Grafik in dem Format auf, in dem sie ursprünglich erstellt wurde (z. B. AI-Format).
I
I
Zu den Malprogrammen zählen Microsoft Picture It, Paint Shop Pro, Windows Paint oder das für professionelle Zwecke entwickelte Programm Adobe Photoshop.
140
Angewandte Informatik
Werkzeug
I
Auswahlwerkzeuge von Photoshop:
Auswahl
• Formgebunden: Meist steht ein Rechteck zum Markieren eines entsprechenden Bereiches zur Verfügung. Es sind aber auch andere Formen möglich. • Formfrei (Lasso): Die Form kann der Nutzer selbst festlegen. Dies kann ein Polygon, aber auch eine gekrümmte Fläche sein. • Zauberstab: Es werden nebeneinanderliegende Pixel ausgewählt, die eine ähnliche Farbe (mit einem vorher vom Nutzer festgelegten Farbbereich) haben. Er eignet sich also zum Auswählen unregelmäßig geformter, aber gleichmäßig gefärbter Bildteile, ohne dass man die Kontur mit dem Lasso nachzeichnen muss. Eine Auswahl kann kopiert, verschoben oder gelöscht werden. Der ausgewählte Bereich kann aber auch farblich verändert, gespiegelt, gedreht, verzerrt oder skaliert (verkleinert bzw. vergrößert) werden.
Werkzeuge und Objekte von Paint:
Freihandzeichnen
• Der Pinsel malt dicke Linien, deren Farbe und Form man einstellen kann. • Der Stift malt dünne Linien mit eingestellter Farbe. • Der Sprayer (Airbrush) funktioniert wie eine reale Farbspraydose: Je langsamer er bewegt wird, umso dichter liegen die aufgetragenen Farbpigmente. • Mit der Pipette wird eine Bildfarbe ausgewählt. • Der Farbfüller gießt eine ausgewählte Farbe in ein Feld, welches lückenlos von einer anderen Farbe umschlossen wird. • Der Radierer entfernt Bildteile bis zur Hintergrundfarbe. Die Stärke kann eingestellt werden.
Objekte
• Strecke: Farbe und Linienstärke können festgelegt werden • Kurven: Farbe und Linienstärke können festgelegt werden • Flächen: unterschiedliche Farbe für Rand und Fläche möglich • Schrift: Farbe, Schriftart, Schriftgröße und Schriftstil können ausgewählt werden
I
Mit diesen in fast allen Malprogrammen zu findenden Werkzeugen lassen sich Pixelgrafiken effektiv bearbeiten. Man möchte aus einer gescannten Farbfotografie die automatisch eingefügten Ziffern der Datums- und Zeitangaben entfernen. Hierzu wird die Bildansicht gezoomt (vergrößert), mit der Pipette eine Farbe der Ziffernumgebung ausgewählt (erst auf Pipette, dann auf Grafik klicken) und mit dem Farbfüller die Ziffernfläche der Umgebung angepasst (erst auf Farbfüller, dann auf Ziffernfläche klicken). Fehler können mit Menü „Bearbeiten“ g „Rückgängig“ behoben werden.
Grafikprogramme
Bereichsmanipulationen Zusätzlich zu den Werkzeugen stehen eine ganze Reihe von Manipulationen für das ganze Bild oder ausgewählte Bereiche zur Verfügung, die auf mathematischen Berechnungen beruhen. Der Bereich wird als Objekt betrachtet, dem neue Attribute zugewiesen werden. Man findet diese Methoden in Menüs wie „Bearbeiten“, „Bild“ oder „Filter“. Bewegungen
Skalieren; Verschieben; Spiegeln; Drehen; Verzerren
Farbmanipulationen
Heligkeit/Kontrast ändern; selektive Farbkorrektur; Invertieren (Farbe umkehren, b Marginalspalte); Entfärben (zu einem Schwarz-Weiß-Bild); ...
Filter
Scharfzeichner; Weichzeichner; Konturen finden (als Vorstufe zur Vektorisierung); Strukturierungsfilter wie Kacheln oder Mosaik; Verzerrungsfilter; Beleuchtungseffekte; Kunstfilter (es werden Malstile wie Aquarell nachempfunden); ...
Farbumkehrung:
I
Das Originalbild eines Zwerghamsters (a) wurde unter Adobe Photoshop farblich zu Blau hin verändert (b), mit einem Verzerrungsfilter (Strudel) manipuliert (c) bzw. mit Beleuchtungseffekten versehen (d). b
a
I
I
c
d
2.2.3 Vektororientierte Grafikprogramme Objekte Entsprechend der Philosophie von Zeichenprogrammen steht meist eine reichhaltige Auswahl unterschiedlicher Objekte zur Verfügung: Objekt
Attribut
Strecke Linienzug
Linienstärke; Stil des Streckenendes (z. B. Pfeile); Streckenfarbe; Streckenart (z. B. gestrichelt)
Sollen waagerechte oder senkrechte Strecken oder Strecken im Winkel von 45 º gezeichnet werden, hilft das Festhalten der -Taste beim Ziehen mit der Maus.
141
142
Angewandte Informatik
Bézierkurve:
I
Endpunkt
Ankerpunkt Griffpunkt
Objekt
Attribut
Bézierkurve
Linienstärke und -farbe; Lage von Anker- und Endpunkten; Griffpunkte der Tangenten an die Kurve
Polygon
Randfarbe; Randstärke; Flächenfarbe; Eckenzahl
Rechteck
Randfarbe und -stärke; Flächenfarbe; Breite; Höhe
Ellipse
Randfarbe und -stärke; Flächenfarbe; Breite; Höhe
Schrift
Schriftfarbe; Schriftart; Schriftgröße; Schriftstil
Werkzeuge und Manipulationen Sonderformen von Rechteck und Ellipse sind Quadrat bzw. Kreis (beim Zeichnen -Taste gedrückt halten).
Bevor Objekte manipuliert werden können, müssen sie markiert werden. Hierzu reicht meist ein einfacher Klick auf das Objekt. Die Markierung erkennt man an den sichtbar werdenden Anfassern. Sollen mehrere Objekte gleichzeitig bearbeitet werden, wird die Markierung mit gedrückter -Taste vorgenommen. Grundlegende Manipulationen sind hier wieder Kopieren, Verschieben, Löschen und Einfügen. Es gibt aber viel mehr:
Farbfüllung
• Farbfüllung: Fläche und Rand eines Objekts können mit unterschiedlichen Farben belegt werden. • Farbverlauf: Der allmähliche Übergang zwischen zwei oder mehr Farben oder Tonwerten derselben Farbe kann erstellt werden. • Füllmuster: Geometrische Muster können gezeichnet und in die Farbfelderpalette aufgenommen werden.
Anordnung und Ausrichtung
Objekte liegen in unterschiedlichen Ebenen, die zuletzt erstellten Objekte liegen vorn (obenauf). Diese Anordnung kann verändert werden. Objekte können auch horizontal und vertikal an ihren Rändern ausgerichtet oder gleichmäßig verteilt werden.
Gruppierung
Verschiedene Objekte werden zu einem Objekt zusammengefasst und gemeinsam bearbeitet. Die Gruppierung kann wieder aufgelöst werden.
Bewegungen
Es gibt Transformationswerkzeuge zum Verschieben, Drehen, Verändern der Höhe und der Breite sowie Verzerren von Objekten.
Fast alle Textverarbeitungsprogramme besitzen als Tool ein Zeichenprogramm. Für professionelle Zwecke gibt es Programme wie Adobe Illustrator, Macromedia Freehand, Corel Draw oder Xara X.
Unter dem DTP-Programm Adobe FrameMaker wurde hier ein Kreis gezeichnet (a), dieses Objekt zu einem regelmäßigen Fünfeck (b) manipuliert (Menü „Graphik“ g „Seitenanzahl...“), vertikal gespiegelt (c) und dann der untere Eckpunkt verschoben (d). Die Anfasser sind jeweils als schwarze Quadrate dargestellt. a
b
c
d
Das Wichtigste im Überblick
Pixelgrafik
Vektorgrafik
Objektklassen
• Pixel (und nur Pixel)
• Strecke, Streckenzug • Freihandlinie • Vieleck • Rechteck (Sonderform Quadrat) • Ellipse (Sonderform Kreis) • Textfeld
Attribute
• Position (Lage auf dem Zeichenblatt) • Farbe
• Position (Lage auf dem Zeichenblatt) • Größe (Länge, Breite) • Linienstärke, Linienfarbe, • Linienart, Stil des Linien endes • Flächenfarbe, Füllmuster oder Farbverlauf • Schriftgröße, -art, -stil und -farbe bei Textfeldern
Methoden
• Ausschneiden • Kopieren • Einfügen • Farbe ersetzen • Bildausschnitt verschieben • Bildausschnitt skalieren
• Ausschneiden (Löschen) • Kopieren • Einfügen • Farbe ersetzen • Gruppieren • Anordnen, Ausrichten • Verschieben • Drehen, Spiegeln • Skalieren
Grafik-Eigenschaften
• hoher Speicherbedarf • Skalierung mit Verlusten
• geringer Speicherbedarf • verlustfreie Skalierung
Verwendung der Programme
besonders geeignet für alle künstlerischen Darstellungen (Malerei: „Pinselzeichnungen“) und Fotos
besonders geeignet für Konstruktions-Zeichnungen (CADProgramme) und großflächige Grafiken (z. B. Cartoons)
Formate
GIF, JPG, PNG, TIF, PSD, BMP, PCX
AI, CDR, CGM, EPS, WMF
143
144
Angewandte Informatik
2.3 Tabellenkalkulation heißt im Englischen „spreadsheet calculation“.
Die derzeit wichtigsten Kalkulationsprogramme sind Microsoft Excel, Lotus 1-2-3 und StarOffice, wobei die letzten beiden Programme eigentlich Office-Pakete sind, die einen Kalkulationsteil beinhalten.
Tabellenkalkulation
2.3.1 Aufbau und Funktion von Kalkulationsprogrammen Tabellenkalkulation und Kalkulationsprogramme Unter Tabellenkalkulation versteht man die Erstellung und Verwaltung von Planungsübersichten, Rechnungen, Kostenabschätzungen u. Ä. in Form von Tabellen. Die Software für Tabellenkalkulationen nennt man Tabellenkalkulationsprogramm (kurz Kalkulationsprogramm). Die Oberfläche von Kalkulationsprogrammen ist im Allgemeinen wie die von Textverarbeitungsprogrammen aufgebaut – mit Titelleiste und dem Namen der aktuellen Tabelle, Menüleiste, verschiedenen Symbolleisten, Bildlaufleisten und der Statuszeile:
Das Arbeitsfeld ist eine Tabelle mit Spalten- und Zeilenköpfen, die der Orientierung dienen. Außerdem gibt es eine Bearbeitungsleiste (A) zum Eingeben bzw. Bearbeiten von Formeln und anderen Zellinhalten. Zahlen oder Werte für gegebene Größen werden in einzelne Zellen der Tabelle eingetragen. Es ist nun möglich, andere Zellen so mit Formeln oder Definitionsvorschriften zu versehen, dass die dortigen Zellinhalte aus den Werten der Ausgangszellen errechnet werden (B). In der oben dargestellten Tabelle wurde die Zelle B7 aus den Werten der Zellen B3, B4, B5 und B6 errechnet. Jede Änderung eines Eingabewertes führt automatisch zur Neuberechnung der davon abhängigen Werte in anderen Zellen. Wird in der oben dargestellten Tabelle der Wert für „Sonstige“ um 5000 erhöht, ändert sich „Gesamt“ auf 695000. Die eingegebenen und errechneten Daten können auch grafisch in Form von Diagrammen veranschaulicht werden (b Randspalte).
Tabellenkalkulation
Einsatzbereiche von Kalkulationsprogrammen • Durchführung sich periodisch wiederholender Berechnungen mit jeweils anderen (sich aus der aktuellen Situation ergebenden) Ausgangswerten im Rechnungswesen, in der Lager- und Buchhaltung • Vorausberechnung und Darstellung von mathematisch erfassbaren Prozessen wie Zins- und Rentenrechnung, demografische Entwicklungen oder Klimaprognosen • Darstellung von Ergebnissen mathematischer Berechnungen in Zahlen und Grafiken wie Präsentation von Firmenkennzahlen, Wahlergebnissen, Sparerträgen und Kreditangeboten
2.3.2 Objekte in Kalkulationsprogrammen und ihre Attribute Komplexe Objekte in Kalkulationsprogrammen sind Tabellen, die – wenn notwendig – miteinander verknüpft werden können. Objekte in einer Kalkulationstabelle sind Zeile, Spalte und Zelle. Diese Objekte besitzen bestimmte Attribute (Eigenschaften, Formatierungen). Als wesentliche weitere Objekte können Diagramme zur Kalkulationstabelle erstellt und formatiert werden. Die Objekte Zeile und Spalte und ihre Attribute Jede Zeile hat eine eindeutige Bezeichnung in Form einer Nummer. Die Zeilenhöhe bestimmt die Höhe aller Zellen in einer Zeile und passt sich automatisch an die Zelle mit der größten Schrift an, kann aber verändert werden. Auch jede Spalte hat eine eindeutige Bezeichnung. Meist sind es Buchstaben: A, ..., Z, AA, AB, AC, ... . Die Spaltenbreite bestimmt die Breite aller Zellen in dieser Spalte. Die Spaltenbreite passt sich im Allgemeinen nicht automatisch an die Zellinhalte an, was dazu führen kann, dass Text abgeschnitten und zu lange Zahlen nicht dargestellt werden können (es erscheint dann „#######“ oder „****** “). Das Abschneiden von Zellinhalten kann man verhindern: Excel: – Spalten markieren (Überstreichen der entsprechenden Spaltenköpfe mit der Maus) – Menü „Format“ g „Spalte“ g „Optimale Breite bestimmen“
Eine Tabelle besteht meist aus 65 536 Zeilen.
Am einfachsten lassen sich Spaltenbreite und Zeilenhöhe mit der Maus ändern:
mit gedrückter Maustaste ziehen
Spalten und Zeilen lassen sich auch einfügen, löschen oder verbergen. Das Objekt Zelle und seine Attribute Zellen ergeben sich aus dem Schnitt von Zeilen und Spalten. Jede Zelle hat damit eine eindeutige Bezeichnung, die sich aus Spaltenbezeichnung und Zeilennummer ergibt. Zellinhalte können Objekte folgender Klassen sein: • ZAHL (standardmäßig rechtsbündig ausgerichtet); • TEXT (standardmäßig linksbündig ausgerichtet); • FORMEL (Objekte beginnen mit einem Gleichheitszeichen).
Bei Zellen mit Formeln wird auf dem Tabellenblatt nur der Wert angezeigt. Das ist meist eine Zahl, kann aber auch ein Wahrheitswert oder sogar Text sein.
145
146
Angewandte Informatik
Die Attributwerte von Zellen können über das Menü „Format“ g „Zellen…“ festgelegt werden. Man kann aber auch mit gedrückter rechter Maustaste auf die entsprechenden Zellen klicken und es erscheint ein Pull-Down-Menü, in dem alle Methoden aufgelistet sind, die man auf die Zellen anwenden kann.
Jede Zelle kann gesondert formatiert werden. Gängige Zellattribute sind: • Zahlenformate wie negative oder rationale Zahlen mit Dezimalkomma und Tausenderpunkt, auch mit Währungseinheiten und anderen benutzerdefinierten Einheiten; unterschiedliche Datums- und Uhrzeitangaben sind möglich usw.; • Zeichenformatierungen, wie Schriftart, -größe, -stil und -farbe; • Ausrichtung in einer Zelle, wie links, zentriert, rechts, oben, mittig, unten; • Rahmen, Hintergrundfarben und -muster; • Zellschutz (Sperrung einzelner Zellen gegen unbefugte Eingabe).
2.3.3. Kalkulation Zellen mit Formeln
Vergleichsoperatoren finden dann Anwendung, wenn der Wert von Zellen verglichen werden soll. Beispiel: =A4> T2
I1
I2 I1 >> I2
Rein theoretisch kann die Impulslänge jeden Betrag annehmen. Praktisch ergibt die Ausdehnung in Beliebigkeit keinen Sinn. Sie erzeugt sogar zusätzliche Fehlerquellen. Außerdem sind Messungen oft in kurzen und kürzesten Zeitabständen durchzuführen. So wird ein Messzyklus in der zeitlichen Ausdehnung möglichst klein gehalten. Kurze Impulse bereiten aber wieder zusätzlichen Aufwand beim Ausmessen ihrer Längen. Auch soll die Impulslängenänderung noch ausreichend Differenzierungsmöglichkeiten bieten. Das hier angestrebte Impulsmessverfahren beinhaltet also zwei unbedingt zu berücksichtigende Vorgaben: • kurze, beliebig wiederholbare Messzyklen zur schnellen Messwerterfassung und • exakte Abbildung der Messwerte in den Impulslängen bei möglichst hoher Differenzierung als Auflösungsvermögen. Zur Messwerterfassung kann folgende Prinziplösung genutzt werden. Ein Generator zum Auslösen von Messvorgängen erzeugt asymmetrische Rechteckimpulse. Um angemessen schnell Messwerte erfassen zu können, wird dieser Generator auf eine Frequenz von ca. 500 Hz eingestellt.
409
410
Technische Informatik
Impulse des Generators: U [V] high low
t [s]
Dieser Generator regt einen monostabilen Flip-Flop an, der den Spannungspegel „High“ in proportionaler Länge zum Messwert erzeugt. Der Zyklus einer einzelnen Messung soll innerhalb einer Impulsfolge abgeschlossen sein. Damit können bei 500 Hz genau 500 Messungen durchgeführt werden. Impulslängendarstellung innerhalb der Generatorimpulse: U [V] high low
Das Beispiel geht von passiven, analogen Sensoren aus.
Messwert
t [s]
Sensor: Das bestimmende Glied in der Messeinrichtung ist der Sensor. Aktive Sensoren wandeln nichtelektrische Größen bereits in elektrische Größen um. Passive Sensoren bewirken eine Änderung elektrischer Eigenschaften, benötigen daher Hilfsstromquellen zur Signalerzeugung. Man unterscheidet zwischen • analogen Sensoren, • digitalen Sensoren und • binären Sensoren. Der Sensor ist die unmittelbare Schnittstelle zur Umwelt. Die Messeinrichtung wird so gestaltet, dass gleich eine Vielzahl unterschiedlicher Bauformen und Messgrößen sich für die Impulslängenänderung nutzen lassen. Transparent gestaltet sich die Längenmessung mit einem linearen Widerstand. ρ·l Ein Widerstand berechnet sich nach R = } . A ρ·l ρ·l·A } Rges l A =} = } = } } ρ · x x I ~ Rges Rx } A·ρ·x A Bei konstantem spezifischen Widerstand und konstantem Flächeninhalt der Querschnittsfläche verhält sich x ~Rx demnach der elektrische Widerstand proportional zu seiner Länge. Wird nun eine Teillänge x abgegriffen, stellt sich zwangsläufig ein Widerstand Rx ein. Der abgegriffene Widerstand gibt indirekt Auskunft über die aktuelle eingestellte Weglänge.
Prozessautomatisierung
Je nach Messauswertung ließe sich die Länge ebenfalls in Spannung darstellen. Ob durch den Abgriff oder den gesamten Widerstand, nach den Gesetzmäßigkeiten der Reihenschaltung fließt der gleiche Strom: Iges = I1 = I2 = In. Die Unterschiede liegen in der gemessenen Spannung. Nach dem ohmschen Gesetz I Uges Ux Uges · I U I =} R=} gilt: } :} =} x I I I Ux · I x V
Nach dieser Beziehung zeigt das Spannungsmessgerät indirekt die Länge x an.
Uges
Ux
Viele Sensoren basieren auf Widerstands- oder Kapazitätsänderungen. Grundlage der Messung soll hier die Ladezeit eines Kondensators sein. Diese richtet sich zum einen nach der Kapazität des Kondensators, zum anderen nach dem Stromfluss, der durch einen Widerstand in weiten Grenzen variiert werden kann. U
definierte Kondensatorspannung kleiner Wiederstand großer Wiederstand t
Ausgang für Entladung (I) Eingang des Schwellenwertschalters (I) Kontrollspannung (I) Rücksetzeingang (I) Ausgang (I) Triggereingang (I) Masse
1 2 3 4 5 6 7
556
Mit diesem R/C-Glied ergibt sich die Möglichkeit, Sensoren sowohl mit Kapazitätsänderungen (C = variabel und R = konstant), als auch mit Widerstandsänderungen (R = variabel und C = konstant) zu nutzen. Ohne jede Änderung lassen sich so mit derselben Messschaltung die unterschiedlichsten Analogdaten erfassen. Es wird ersichtlich, dass für die schaltungstechnische Umsetzung zwei Baugruppen benötigt werden, der Impulsgenerator und der eigentliche Analog/Digital-Umsetzer. Impulsgeneratoren lassen sich mit diskreten Bauelementen, mit Logikschaltkreisen oder z. B. mit Schaltkreisen höherer Funktionsintegration verwirklichen. Der Zeitgeberbaustein vom Typ „555“ zeichnet sich durch hohe Ganggenauigkeit aus. Mit dem gleichen Schaltkreis lässt sich auch ohne viel Außenbeschaltung in einfacher Weise ein monostabil arbeitender Flip-Flop für die Interpretation der Messwerte als Impulslängen aufbauen. In der Ausführung eines Doppeltimers (IC „556“) lässt sich der Generator und der A/D-Wandler leicht auf engstem Raum unterbringen. 14 13 12 11 10 9 8
R steht für Wiederstand, C für Kondensator
Betriebsspannung Ausgang für Entladung (II) Eingang des Schwellenwertschalters (II) Kontrollspannung (II) Rücksetzeingang (II) Ausgang (II) Triggereingang (II)
411
412
Technische Informatik
Wiederstände können sein: Potentiometer, Thermistoren, Drucksensoren, Fotowiderstände, elektrolytische Flüssigkeiten, poröse Werkstoffe mit Feuchtigkeits einbindungen, … . Kondensatoren können sein: Feuchte sensoren, Schallsensoren, Drehkondensatoren, … .
5
8
13
120 k
R messen
10 14
digitalisiertes Analogsignal
12 9 11
0V C messen
100 n
1N
2 6 3 7
4
100 n
1k
1
556
390 k
+UB
Der erste Timer (links im Bild) erzeugt in dieser Verschaltung die asymmetrischen Rechteckimpulse. Über die Widerstände von 27 kΩ und 390 Ω wird der Kondensator 100 nF an Pin 2 und 6 bis zur Schaltschwelle auf zwei Drittel der Betriebsspannung aufgeladen. Beim Erreichen dieser Spannung schaltet der interne Komparator um. Nun entlädt er sich auf ein Drittel der Betriebsspannung. Dort angekommen schaltet der zweite interne Komparator um. Das Ergebnis dieser Auf- und Entladungen sind die angestrebten asymmetrischen Rechteckimpulse an Pin 5 mit einer Frequenz von etwa 500 Hz. Der Anteil des High-Pegels ist gegenüber dem Low-Pegel extrem groß; die Low-Pegel erscheinen auf dem Oszillo skop lediglich als winzige Nadelimpulse. Das abgegebene Signal triggert über Pin 8 die zweite Baugruppe (rechts im Bild). Die Zeit mit „High“-Pegel hängt vom Kondensator an Pin 12 und dem Widerstandswert an Pin 13 ab. Die ladezeitbestimmenden Bauelemente sind der Kondensator Cmessen und der Widerstand Rmessen. Sie können beliebig durch Sensoren ausgewechselt werden. Als Sensoren kommen demzufolge Widerstände oder Kondensatoren infrage. Die Paarungswerte definieren die Rücksetzzeit auf den Spannungspegel Low. Das jeweils andere Bauteil behält den vorgeschriebenen Festwert. Es wird eine Gleichspannung von 12 V (oder weniger) benötigt. Die digitalisierten Analogdaten werden an die CTS-Leitung der seriellen Schnittstelle COM1 geführt. Um Fehlbedienungen mit schweren Folgen am Rechner auszuschließen, wird das Interface galvanisch getrennt über einen Optokoppler an den PC angeschlossen. Der Typ „4N25“ kann bedenkenlos durch andere Typen ausgetauscht werden. Programm: Die erzeugte Rechteckschwingung ist in ihrer Frequenz konstant. Anders verhält es sich mit dem sogenannten Tastverhältnis der Rechteckschwingungen, also dem Verhältnis des Periodenanteils mit hohem Potential (High-Anteil) zum Periodenanteil mit niedrigem Potential (Low-Anteil). Diese Relation ändert sich in einem weiten Bereich, wenn es zu einer Veränderung des Widerstandes und/oder der Kapazität kommt. Eine andere Größe zur Kennzeichnung der Kurvenform der Rechteckschwingung könnte man mit dem Begriff „Tastgrad“ umschreiben. Hierbei wird das Verhältnis der Zeitdauer des H-Anteils einer Periode zur
Prozessautomatisierung
Periodendauer insgesamt berechnet. Dieser Wert liegt somit im Bereich 0 < Tastgrad < 1. Multipliziert man den Tastgrad mit 100%, so wird der Schwingungsanteil mit dem High-Pegel anschaulich in Prozent ausgedrückt. Mit dem Anschluss des Analog-/Digital-Umsetzers an eine digitale Eingangsleitung des PC ist es per Software möglich, diese Kenngrößen einer Rechteckschwingung zu bestimmen. Der Grundgedanke besteht darin, dass die Rechteckschwingung in schneller Folge „abgetastet“ werden muss, um festzustellen, ob momentan ein High- oder ein Low-Pegel vorliegt. Aus dem Ergebnis vieler Abtastungen kann dann auf den Tastgrad oder das Tastverhältnis geschlossen werden. Quellcode: program L_H_Pascal; {Bestimmung des Tastverhaeltnisses} uses crt; var e,a,maske,z:byte; h,l:word; begin clrscr; writeln; writeln('*** Tastverhaeltnis ***':48); writeln; repeat gotoxy(10,10); l:=0; h:=0; z:=0; maske:=16; {CTS, COM1} inline($FA); {Unterbrechungen verhindern} e:=port[$3FE] and maske; {Startflanke an CTS, COM1 abwarten} repeat a:=e; e:=port[$3FE] and maske; until e>a; repeat {Messschleifen} repeat a:=e; e:=port[$3FE] and maske; {CTS, COM1} if e=maske then h:=h+1; {H-Pegel} if e=0 then l:=l+1; {L-Pegel} until e>a; z:=z+1; until z=10; {Anz. Durchläufe z. Mittelwertbildung} inline($FB); {Unterbrechungen erlauben} writeln('H-Anteil':18,'Gesamtzahl':14,'Anteil':12); writeln(h:24,h+l:14,h/(l+h)*100:14:1,'%'); delay(100); until keypressed; end. Programmbeschreibung: In diesem Programm sind verschiedene Werte als Konstanten eingetragen und ganz auf die COM1 ausgerichtet. Zu beachten ist am Anfang des Programms deshalb die Initialisierung der festgelegten Variablen. Die CTS-Leitung besitzt im Modemstatusregister (Offset = 6) den Stellenwert „16“. Die Basisadresse der COM1 ist 3F8h, das Modemstatusregister unter Berücksichtigung des Offsets mit 3FEh ansprechbar. Die Anweisung PORT ist sowohl für die Datenausgabe als auch für die Datenaufnahme einsetzbar. Ein eingelesener Wert kann unter Anwendung
413
414
Technische Informatik
Mit PASCAL oder C ist diese Aufgabe leicht zu erfüllen. Auch sind beim Einsatz dieser Compiler die Ergebnisse im Hinblick auf ihre Reproduzierbarkeit und Genauigkeit zufriedenstellend. Ein BASIC-Interpreter wie QBASIC hingegen scheitert selbst auf schnellen Computern bei dieser Aufgabenstellung.
Aktoren können sein: Lautsprecher, Lampe, Motor, Heizung, … .
einer logischen Verknüpfung mit AND daraufhin untersucht werden, ob genau das Bit im gelesenen Wert gesetzt ist, das dem Maskenwert entspricht. Und so funktioniert der erste Teil des Programms: Es verweilt in einer Wiederholung mit nachgestelltem Test, bis der zuletzt eingelesene Wert an der herausgefilterten Bitposition einen größeren Wert aufweist als beim Lesevorgang zuvor. Wenn genau dieser Sachverhalt zutrifft, dann ist ein Low-High-Wechsel lokalisiert worden, der als Startmerkmal für die Messungen dient. Für eine vorgegebene Anzahl von Perioden, im Beispielprogramm sind es zehn Schwingungen, wird anschließend in einer weiteren Programmschleife die Anzahl der Abtastungen mit Lowbzw. mit High-Pegel gezählt. Während der eigentlichen Messprozedur kommt es darauf an, dass das Computerprogramm für eine exakt gleichmäßige Abtastung des Rechtecksignals sorgt. Im Programmablauf darf es deshalb keinen unterschiedlichen Zeitaufwand für die Bewertung eines Low- oder eines High-Pegels geben. Außerdem darf die Messung nicht durch andere Prozesse im PC gestört werden. Aus diesem Grunde sind die Anweisungen inline zu finden. Sie schränkt die Interruptunterbrechungen stark ein. Nach Auswertung der zehn Perioden lässt sich in der Ergebnisanzeige erkennen, wie viel Abtastpunkte insgesamt realisiert werden konnten und wie groß der Anteil der High-Pegel an der Gesamtzahl war. Je öfter das Rechtecksignal während einer Schwingung abgetastet wird, desto genauer kann das Tastverhältnis ermittelt werden. In dieser Frage spielt die Taktfrequenz des Computers eine maßgebliche Rolle. Ein Pentium mit hoher Taktfrequenz wird viel bessere Messergebnisse liefern können als ein XT-Rechner. Aber auch die Programmiersprache wirkt sich auf das Ergebnis aus. Digital-/Analog-Umsetzer Ein Digital-/Analog-Umsetzer wandelt digitale Signale (wieder) in analoge Signale um. In grober Vereinfachung erfolgt dies in drei Schritten: 1. Der binäre Wert wird in einen entsprechenden dezimalen Zahlenwert umgerechnet. 2. Zwischen den dezimalen Zahlenwerten werden zusätzliche Werte rekonstruiert, berechnet, um „fließende“ Übergänge zu erhalten. 3. Das fertige analoge Signal gelangt über den Ausgang zu den Aktoren. Die binär abgelegte Auflösung definiert den tatsächlich verfügbaren, den physischen Wertebereich. Bei 32 Bit ergeben sich 2 · 231 = 16 777 216, also annähernd 17 Millionen darstellbare Nuancen. Für viele Anwendungen sind solche großen Wertebereiche gar nicht erforderlich, für andere hingegen immer noch zu klein. Mit geringen Auflösungen und größeren Wertesprüngen kommt man aus, wenn es darum geht, quasianalog die Lautstärke der Tonwiedergabe digital einzustellen. Weit höhere Ansprüche werden dort gestellt, wo es darum geht, das anspruchsvolle Wahrnehmungsvermögen von Menschen „auszutricksen“. Die physische Auflösung reicht da oft nicht aus als alleiniges Maß. Durch Interpolation werden noch zusätzliche, zwischenliegende Werte berechnet, um schließlich die „weichen“ Übergänge zu erzielen.
Prozessautomatisierung
4.2.3 NC-Steuerung und CNC-Steuerung NC-Steuerung NC bedeutet, dass eine Maschine anhand eingegebener Zahlen gesteuert wird. Zur Fertigung eines Werkstücks liegen mit der technischen Zeichnung die Abmessungen, Formen, Toleranzen, Werkstoffe und Oberflächengüten vor.
Ø6
Technische Zeichnung:
NC: numerical control
10
30
40
Für das Einbringen der Bohrungen wird der Bohrer jeweils in die erforderliche x-y-Position gebracht. Die 10 50 Weginformationen 60 lassen dazu zweier lei bestimmen: • Wird das Werkstück in einen Koordinatenursprung hineingelegt, lassen sich von diesem aus die Weginformationen absolut angeben. Jede einzelne Bohrposition wird vom Nullpunkt aus in den jeweiligen x- und y-Werten angegeben. • Die Weginformationen lassen sich aber auch relativ, inkremental als Zählergebnisse angeben. Dabei wird von der augenblicklichen Position des Bohrers ausgegangen.
Im Beispiel liegt der Koordinatenursprung bei der linken unteren Ecke des Werkstücks.
0, 0 10, 10 10, 30 50, 30 50, 10 0, 0 0, 0 10, 10 0, 20 40, 0 0, –20 –50, –10
In der Praxis können diese Weginformationen auch miteinander kombiniert werden. Jedenfalls sind die Steuersysteme unterschiedlich in der Lage, diese Informationen in Bewegungen der Bohrspindel (und Werkzeuge darüber hinaus) umzusetzen. Für die inkrementale Steuerung ist ein Zähler notwendig. Es lassen sich zwei grundlegende Formen dieser Bewegungsumsetzung in Maschinen unterscheiden: 1. Der zurückgelegte Weg wird mit einem Sensor als Impulse erfasst und vom Zähler registriert. Der Prozessor steuert danach den Aktor (Motor). Dies kann beispielsweise ein Strichmaßstab oder eine Strichscheibe (Codescheibe) sein. 2. Der Zähler kann andererseits auch positionsgenau einen Aktor bedienen, womit das Messsystem entfällt. Von solchen Aktoren wird eine hohe Wiederholgenauigkeit gefordert. Ein typischer Vertreter zur Ausführung exakter Winkelschritte ist der Schrittmotor.
415
416
Technische Informatik
Der Bohrer lässt sich genauso gut absolut positionieren. Auch hier sind zwei Varianten zu unterscheiden: 1. Der Weg wird absolut mithilfe eines Codes gelesen. Rotierende Bewegungen lassen sich etwa mit einer Codescheibe, geradlinige mit einem Codelineal messen. Aus dem Vergleich zwischen der gespeicherten Sollposition und der momentanen Position des Bohrers leitet die Prozessorik die entsprechende Bewegung des Motors ab. 2. Die andere Möglichkeit ergibt sich, wenn zusätzlich zum Strichmaß ein Grenzwertschalter angebracht ist. So wird der Bohrer nach jeder angefahrenden Position immer wieder in die Ausgangsstellung zurückgefahren, betätigt den Schalter und findet so seine Nullstellung. Von hier aus werden die Wege als Impulse absolut vom Nullpunkt gezählt. Bleibt die Frage, wo die Bewegungsabläufe, sie sind in der Regel viel komplexer und verlaufen zudem im dreidimensionalen Raum, gespeichert sind. Das klassische Prinzip sind die Lochkarten, wie sie sich bis heute in der modifizierten Form von Lochstreifen halten konnten. Binär sind darin die verschiedenen Aufgaben und Abmessungen als Löcher verschlüsselt.
Codelineal
Die Löcher (Bits) in einer Senkrechten quer zur Laufrichtung des Lochstreifens ergeben das jeweilige Schlüsselwort. Verbreitet sind 8 Bit. Höhere Werte, wie sie beispielsweise für die Maßumsetzungen benötigt werden, ergeben sich aus mehreren Lesepositionen hintereinander. Auch die Befehle sind als Lochmuster (Bitmuster) festgelegt. Lochstreifen mit Bearbeitungsprogramm Leser
Sollwertspeicher
Weiterschaltsignale
Sollwerte Messeinrichtung
APT: advanced programming tool
Istwerte
Vergleicher
Stellsignale
Antriebe
Der Lochstreifen entspricht einer maschinennahen Programmierung, wie sie mit der Assemblersprache realisiert wird. NC-Systeme lassen sich auch in höheren Sprachen (also anwenderfreundlicher) programmieren. Eine solche Programmiersprache ist beispielsweise APT. Der Befehlsumfang enthält Geometriebefehle, Bewegungsbefehle und Hilfsbefehle.
I
Prozessautomatisierung
CNC-Steuerung CNC steht für eine Technologie, bei der der Computer Bestandteil des Maschinensystems ist. Der Lochstreifen wird höchstens noch dazu verwendet, um das Programm in den Halbleiterspeicher einzulesen. Eine Tastatur ermöglicht jedoch eine direkte Programmierung ohne diesen Umweg und kann am Bildschirm verfolgt werden. Änderungen und Anpassungen lassen sich im Gegensatz zur NC-Steuerung also schnell und bequem vornehmen. Komponenten eines CNC-Systems Lochstreifen
Computer
Tastatur
Programmspeicher
Sensorik
Mikroprozessor
Bildschirm
CNC: computer numerical control
Die Programmiersprachen sind dieselben wie bei der NC-Steuerung, wobei mit dieser Technologie noch viele hinzukamen, die oft herstellerspezifisch sind.
Aktorik
4.2.4 Roboter Ein Roboter ist ein technisches System, dessen Bewegungsfunktionen ihre Vorlagen in den lebenden Organismen finden. Die Bewegungsfunktionen können mit intelligenten Funktionen wie das Wahrnehmen, das Lernen, die Fähigkeit zum Anpassen und Urteilen kombiniert sein. Intelligente und fühlende Roboter Künstliche Intelligenz bestand anfangs aus festverdrahteter Elektronik. Ein bekanntes Beispiel ist die elektronische Motte, die dem Licht zusteuerte und dabei verschiedenen Hindernissen auswich. Ihre Lernfähigkeit blieb in der Anwendung vorgefertigter Prozeduren behaftet. Mikroprozessoren gaben der Suche nach künstlicher Intelligenz neue Impulse. Wenngleich damit die Begrenzungen der Steuermöglichkeiten prinzipiell aufgehoben werden, so sind die möglichen Lösungen dennoch in der Struktur der Programme enthalten, werden also mehr oder weniger schon von den Entwicklern bedacht. Bis Roboter schöpferisch ihre eigene Lösung finden, wird es noch dauern. Der Weg dorthin geht über folgende Schritte:
Starke Veränderungen in der Produktion hat nicht nur die „Intelligenz“ und „Disponibilität“ der Computer hervorgebracht. Auch die „ausführenden Organe“ haben Qualitätssprünge erhalten. Roboter übernehmen z. B. bei der Montage von Personenkraftwagen den größten Teil der anstehenden körperlichen Arbeit. Es gibt bereits menschenfreie Produk tionshallen, ja sogar solche, die Roboter herstellen.
417
418
Technische Informatik
1. Wissen über die Problemstellung ist in der Programmstruktur enthalten. 2. Wissensbasierte Systeme lösen die Probleme unabhängig von Algorithmen. 3. Die Problembearbeitung erfolgt auf der Basis allgemeiner Problemlösungsverfahren.
Aibos mit ihren 18 Gelenken und 64-Bit-RISC-Prozessor mit 100 Hz und 16 MByte Arbeitsspeicher lassen sich gern streicheln.
Intelligent ist ein System dann, wenn es • eigenständig auf Probleme reagiert, • selbstständig Informationen auswählt und • sich bis zu einem gewissen Grade selbst organisiert. Die ersten Roboter mit Anfängen solch anspruchsvoller Merkmale qualifizieren sich zu unentbehrlichen Helfern im Haushalt, übernehmen Teile der Krankenpflege und agieren als Service-Roboter. Industrieroboter Industrielle Prozesse lassen sich in Teilschritte zergliedern, die sich formalisieren lassen, um sie dann auf technische Systeme zu übertragen. Prinzipiell lassen sich folgende Schritte auseinander halten: • Antransportieren von Materialien und Teilen • Zuführen in eine Bearbeitungsstation • Fertigen und Montieren • Entnehmen aus einer Bearbeitungsstation • Ordnen und Magazinieren • Abtransportieren der Teile und Fertigprodukte Alle Schritte lassen sich elementar bewältigen. Die zur Anwendung kommende Technik kann fest programmiert, aber auch frei programmierbar für wechselnde Anforderungen ausgelegt sein. Folglich lassen sie sich auch durch Industrieroboter bewältigen. Nach VDI 2860 sind Industrieroboter „Universell einsetzbare Bewegungsautomaten mit mehreren Achsen, deren Bewegungen hinsichtlich Bewegungsfolge und Wegen bzw. Winkeln frei programmierbar und gegebenenfalls sensorgeführt sind. Sie sind mit Greifern, Werkzeugen oder anderen Fertigungsmitteln ausrüstbar und können Handlungs- und/oder Fertigungsverfahren ausführen.“
Den ersten Industrie roboter „Unimax“ schuf die amerikani sche Firma Unimation Mitte der sechziger Jahre. Er konnte zugreifen, Objekte von einem Ort zum anderen bewegen, die Objekte auch drehen. Eine schwedische Gießerei setzte ihn zur Humanisierung der Arbeit ein.
Industrieroboter werden nach unterschiedlichen Aspekten eingeteilt. Nach Einsatzgebieten lassen sich folgende Arten unterscheiden: • Portalroboter: Als Idee stand hier der Portalkran Pate, wie er in großen Werkhallen oder in Werften zum Einsatz kommt. Über einen vergleichbaren Mechanismus wird ein Handgelenk zum Laden, Sortieren, Umschichten und dergleichen mehr bewegt. Diese Konstruktion erlaubt das Arbeiten an großflächigen Werkstücken. • Knickarmroboter: Ihr Hauptanspruch besteht darin, für die Durchführung unterschiedlicher Arbeiten den menschlichen Arm nachzubilden. Sie sind kompakter als Portalroboter und vor allem viel beweglicher. Der Aktionsraum eines Knickroboters beschreibt etwa die Form einer Kugel.
Prozessautomatisierung
Mischformen von Robotern: Der Portalroboter führt in erster Linie geradlinige Bewegungen aus, der Knickarmroboter drehende. Diese unterschiedlichen Bewegungsformen lassen sich auch miteinander kombinieren. Es entstehen daraus Roboter mit großem Aktionsraum für diffizile Arbeiten. Kleinere Konstruktionen dieser Art finden zum Beispiel in der Elektronik breitere Verwendung. Roboter werden dazu geschaffen, um Arbeiten zu verrichten. Die eigentliche Wirkstelle ist das am Handgelenk befestigte Werkzeug. Dies können angeflanschte Zangen zum Greifen, Vakuumsauger zum Heben, Elektroden zum Schweißen, Bohrmaschinen, Düsen zum Auftragen von Farben und Klebstoffen, Schraubendreher, Trennscheiben und anderes mehr sein. Was ein Roboter zu leisten in der Lage ist, hängt von vielen Faktoren ab. Ein wichtiges Maß ist seine Beweglichkeit, die Anzahl sogenannter Freiheitsgrade. Jede einzelne Bewegung bezeichnet einen Freiheitsgrad. Um die Lage eines Körpers im Raum beliebig ändern zu können, sind drei translatorische Freiheitsgrade erforz derlich. Die translatorischen Richtungen C werden mit x, y und z angegeben. Darüber hinaus werden drei rotiey rende Freiheitsgrade gebraucht, um B an beliebiger Stelle im Raum einen A x Körper in jede Lage drehen zu können. Diese werden mit A, B und C bezeichnet. Um diese Lagen mit dem Roboter verwirklichen zu können, wird eine Kinematik benötigt, die den Greifer oder das Werkzeug den Anforderungen entsprechend bewegt. Nicht jeder Roboter benötigt die maximale Anzahl möglicher Freiheitsgrade, sie werden von den zu verrichtenden Arbeiten bestimmt. In Kombination von drei Achsen entstehen unterschiedliche Arbeitsräume. Arbeitsräume bei 3 Achsen:
.
Roboter beispielsweise mit fünf rotierenden Achsen sind so beweglich, dass sie alle Bewegungen der Hand nachbilden können. Diese Roboter werden darum oft für die Montage, in Laboren und dort verwendet, wo diese Freiheitsgrade zur Verrichtung der Arbeiten unentbehrlich sind.
.
419
420
Technische Informatik
Für Roboter gibt es zwei Arten von Antrieben. Roboter zum Spielen oder Modellieren werden aus Gründen der Einfachheit meistens mit Schrittmotoren angetrieben. In Drehzahl und Drehmoment sind solche Antriebe für Industrieroboter zu schwach. Sie werden von den leistungsstärkeren Gleichstrommotoren, zunehmend auch von Servo-Drehstrommotoren angetrieben. Der Nachteil bei ihnen ist wieder, dass sie sich nicht direkt und positionsgenau steuern lassen. Es wird eine Messeinrichtung gebraucht, die die einzelnen Drehpositionen als Impulse auszählt. Gewöhnlich geschieht dies durch Lichtschranken, also optisch. 1 Beleuchtungseinrichtung
3
2 Blende 3 digitales Ausgangssignal
2
1
4 Fototransistor 5 Codescheibe
4
5
Codescheibe mit 4 Spuren bei einer Auflösung von 360 °: 16 = 22,5 °
Wie bei den NC-Maschinen schon erörtert, sind auch hier zwei Arten der Positionserfassung (hier des Drehwinkels) möglich: • Relativ lässt sich der Winkel mit einer Strichscheibe ( Codescheibe) ermitteln. Die Strichmarkierungen definieren den Drehwinkel, die wiederum in ihren Abständen die Auflösung bestimmen. Bei 360 Strichen auf den Umfang der Scheibe sind 1-Grad-Schritte, bei 8 000 Strichen 0,05 Grad-Schritte möglich. • Zur absoluten Angabe der Drehwinkel sind Scheiben nötig, die den jeweiligen Winkel als numerischen Wert angeben. Dazu sind je nach Auflösung sehr viel mehr Spuren erforderlich, als bei der relativen Wegerfassung. Die Anfahrpositionen eines Roboters werden in Computerprogrammen abgespeichert. Zumindest die Industrieroboter verwenden zwei getrennte Speicherbereiche, einen für die Reihenfolge der durchzuführenden Aktionen und einen für die Ablage der einzelnen Positionen. Da entsprechend diese beiden Teile auch getrennt programmiert werden können, bringt dies den Vorteil, dass die Positionen verändert werden können, ohne gleich auch die Aktionen mitbearbeiten zu müssen. Die Programmierung von Robotern erfolgt herstellerabhängig in unterschiedlichen Programmiersprachen.
Prozessautomatisierung
Hersteller
Programmiersprache
Hersteller
Programmiersprache
Adept ASEA Bosch
VAL ARLA BAPS
Siemens Unimation
SRCL VAL
Eine Vereinheitlichung der Programmiersprachen hat sich trotz der genormten Schnittstelle IRDATA für Roboter noch nicht durchsetzen können. Das Programmieren kann in zweierlei Weise erfolgen, on-line oder off-line. • Die On-line-Programmierung erstellt das Programm unmittelbar am Einsatzort des Roboters. Mit einer Teachin-Box wird der Roboterarm zur jeweils gewünschten Position gefahren, um diese dann in der Datenbank abzuspeichern. Diese Teach-In-Programmierung liefert die Positionen im Wegesystem. Die Arbeitsgeschwindigkeit, die natürlich deutlich höher ist, als von Hand angefahren wurde, zudem zwischen Zustell-, Arbeits- und Rückholbewegung unterscheidet, wird im Nachhinein eingegeben. Die andere On-line-Programmierung ist die Play-Back-Programmierung. Ein Facharbeiter nimmt den Roboter, das Arbeitsorgan quasi an der Hand und lenkt das Werkzeug im erforderlichen Ablauf. Die so übertragenen Daten werden abgespeichert. • Die Off-line-Programmierung erfolgt außerhalb des Robotereinsatzes. Der Wirtschaft bringt dies den Vorteil, keine großen Unterbrechungen im Arbeitszyklus zu haben. Sie erfolgt textlich oder grafisch, ist aber aufgrund der Ferne zum Einsatzort und der notgedrungenen Abstraktion auch sehr viel schwieriger und mit Ungenauigkeiten verbunden. Erleichterung bietet die grafische Oberfläche, die den Roboter dreidimensional darstellt und damit wenigstens virtuell die Einsatz- und Arbeitsbedingungen anzeigt, die dennoch nicht hundertprozentig den tatsächlichen Verhältnissen entspricht. Vielerorts setzt sich eine hybride Programmierung durch: Off-line wird das Skelett des Programms erstellt, das on-line präzisiert und ergänzt wird.
Teachin-Box
Mobile Roboter Die mobilen Roboter der Zukunft, die uns in alltäglichen Dingen unterstützen werden, sollen keine kalten, emotionslosen Maschinen sein. Wenngleich die wenigsten Roboter dem äußeren Vorbild des Menschen folgen werden, so lassen Forscher nicht los, sie auch mit einem Gesicht auszustatten, um uns ihre „Gefühle“ mitteilen zu können. Ein Maschinenmensch mit eigenen Gefühlen ist sicher noch eine Vision der Forscher. Doch einige Roboter können mit ihren Gesichtern simulierte Gefühle zeigen und die Bewegungen des Gegenübers verfolgen. Bald werden sie auch seine Mimik erkennen und interpretieren. „Asimo“ von Honda jedenfalls lernt immer besser das Laufen, und er soll auch schon mehrere Gesichter wiedererkennen und auseinanderhalten. Mobile Roboter befinden sie sich längst im Einsatz – im Kanalbau, bei der Fernerkundung, als Reinigungsgeräte usw.
Die ersten mobilen Roboter kennt man von der Weltraumfahrt. Wurde „Lunachod“ noch von der Erde aus gesteuert, so agierte „Sojourner“ schon weitgehend selbstständig.
421
422
Technische Informatik
4.3 Netzwerke gibt es als Straßennetz, als Energieverbundsysteme, als Telefonnetze und dergleichen mehr.
Netzwerke
Im wachsenden Umfang werden Personen und Materialien, Energien und Informationen hin- und herbefördert. Um effektive Verteilungsergebnisse zu erzielen, schafft man ganze Netzwerke. Schon die Mongolen, Chinesen, Assyrer und Römer schufen umfangreiche Straßen- und Kommunikationsnetze, die nachfolgenden Lösungen Vorbilder waren. Die afrikanischen Trommeln vernetzten den Informationsaustausch ebenso wie die Rauchzeichen der Indianer oder Griechen. Später kamen verschiede Netze zum Telegrafieren und Telefonieren hinzu. Mit der Computertechnik erlangten Informationsnetze einen besonderen Stellenwert. Als kleinstes Netz dieser Art mag man schon den Zusammenschluss zweier Rechner anerkennen. Das Superlativ liegt derzeit wohl im Übernetz der Netze, im Internet. Es verbindet Rechner noch so entlegener Orte und ermöglicht grenzenlose Information und Kommunikation. Es nimmt nunmehr schon klassisch zu nennende Formen des Informationsaustausches wie das Telefon, den Rundfunk oder das Fax auf und entwickelt völlig neue Formen der Kommunikation wie z. B. E-Mail, Videokonferenzen oder Newsgroups.
4.3.1 Lokale und Telekommunikationsnetzwerke Abhängig von den zu überbrückenden Entfernungen teilt man Netzwerke in drei Gruppen ein: LAN ist die Abkürzung für „local area network“. WAN ist die Abkürzung für „wide area network“. MAN ist die Abkürzung für „metropolitan area network“.
LAN: Hiermit wird ein Netz bezeichnet, dessen Reichweite auf wenige Gebäude eines abgeschlossenen Geländes (Betrieb, Fach- oder Hochschule, Verwaltung, Schule, …) beschränkt ist. WAN: Dieses Netz verbindet Teilnehmer über Hunderte von Kilometern, beispielsweise auch via Satellit. MAN: Die Übertragungsdistanz ist deutlich größer als beim LAN, aber eben auch wieder viel kleiner als beim WAN. Exakte Abgrenzungen per Definition sind kaum möglich. Eher stechen ihre Gemeinsamkeiten hervor: Mehrere Benutzer teilen sich die lokal beschränkten Ressourcen wie Laufwerke, Drucker oder Scanner und betreiben Datenkommunikation wie E-Mail mittels PC oder Workstation. Sie sind hierarchisch unstrukturiert meist auf derselben Ebene miteinander verknüpft. Die ersten Netzwerke waren LANs. Die Computer werden je nach Hardware und Netzanbieter in großer Vielfalt von Strukturen verbunden. Ein Standard bildete sich heraus, als sich zwei Vernetzungstechniken durchsetzten: • Ethernet von Xerox, DEC und Intel • sowie Token Ring von IBM. Nach wie vor sind aber auch andere Netztechnologien in Anwendung.
Netzwerke
4.3.2 Vernetzungsarten Vernetzungen können grundsätzlich von zwei unterschiedlichen Ansätzen ausgehen, von Peer-to-Peer oder von Client-Server. Beim Peer-to-Peer ist ein zentraler Drucker Server nicht unbedingt erforderlich, auf dem alle gemeinsam genutzten ................. Dateien liegen. Jeder Computer kann auf die Festplatte eines andeHub ren Computers zugreifen. Zum Zusammenschalten der Rechner wird .................... Computer .................... oft ein zentrales Steuergerät, ein Hub oder Computer verwendet. Solange diese Fremdzugriffe erfolgen, darf keiner der Rechner ausgeschaltet werden. In größeren Netzwerken verwendet man deshalb einen zentralen, dedizierten Server. Dieser arbeitet normalerweise Tag und Nacht bei ausgeschaltetem Monitor. Ein Client-Server-Netzwerk erlaubt den Zusammenschluss von weit mehr Rechnern.
.................. ........ Client
Server
Für den Fall eines Stromausfalls übernimmt eine USV (unterbrechungsfreie Stromversorgung auf Akkubasis) vorübergehend die Energiebereitstellung.
................. ........ Client
................ ........ ....
................. ........
Client
Client
Der unübersehbare Vorteil ergibt sich aus der zentralen Rolle des Servers. Die Dateien werden an einem einzigen Ablageort gespeichert, sind somit viel zuverlässiger zu aktualisieren, zu speichern und zu archivieren. Es gibt auch Mischformen, die Peer-to-Peer und serverbasierte Netzwerke in sich vereinen. Jedes Netz hat eine bestimmte physikalische Struktur, womit die Art der Verkabelung gemeint ist. Man bezeichnet die Anordnungen als Topologien. Verbreitet sind drei Arten von Topologien: Bus, Stern und Ring. Bus-Topologie: Alle Rechner sind nacheinander an einem Strang ange................... schlossen. Es genügt ein einziges Ka.................... .................... bel. Die Kabelenden der Endrechner Bus sind jeweils mit einem Widerstand abgeschlossen, die verfälschende Signalreflexionen verhindern. Fällt ein Kabelteil aus, funktioniert das ................... .................... gesamte Netzwerk nicht mehr.
Diese Lösung ist relativ preiswert.
423
424
Technische Informatik
Diese Lösung ist flexibel.
Stern-Topologie: Als Knoten benutzt man beim Stern in der Regel einen Hub. Es lassen sich so viel Rechner anschließen, wie Buchsen vorhanden sind. Es wird ziemlich viel Kabel benötigt. Dafür aber ist diese Lösung flexibel in der Anwendung, leicht erweiterbar und einfach in der Wartung. Ein Totalausfall des Sternnetzes kann ein defekter Hub verursachen. Ansonsten fällt nur der jeweils betroffene Rechner aus.
....................
....................
..................
..................
....................
.................... .................... ....................
Kabelschrank
..................
.................. ....................
Diese Lösung ist ideal für viele Rechner.
.................... ....................
Ring-Topologie: Es gibt hier keinen Anfang und kein Ende, alle Rech.................... ner sind ringförmig ohne Abschluss.................... widerstand miteinander verbunden. .................... Die Signalübertragung erfolgt hier .................. aktiv. Jeder Rechner erzeugt das Signal neu, kann seine eigenen Netz.................... daten anhängen und gibt sie dem .................. .................. Nachbarn weiter. Das Kabel muss .................... selbstverständlich nicht wirklich diese Ringform haben, es können auch hin- und herführende Leitungen in einem Strang untergebracht sein. Diese Topologie wird vornehmlich im Zusammenhang mit Glasfasernetzen angewendet. Sie überbrückt relativ weite Strecken und erlaubt die Einbindung sehr vieler Rechner. Die Datenübertragung funktioniert nicht mehr, sobald ein Rechner fehlerhaft arbeitet. Diese Topologien werden auch oft miteinander kombiniert. Es entsteht ein mehr oder weniger vermaschtes Netz, das durch mehrere bis viele alternative Transportwege gekennzeichnet ist. Mit der Menge der verfügbaren Leitungen werden sie logisch auch immer unempfindlicher gegenüber irgendwelchen Störungen. Gleiche LANs lassen sich über Brücken (bridges) verbinden. Natürlich führen die unterschiedlichen Übertragungswiderstände zu Energieverlusten, die schnell auch zu Datenverlusten werden können. Darum sind Repeater zwischengeschaltet. Sie verstärken die Signale und verhindern somit Verluste bei längeren Übertragungswegen. Die unterschiedlichsten Netzwerke koppelt ein Router. Es lassen sich so auch alle Protokolle übertragen, eine Voraussetzung, um auch weit voneinander entfernte LANs beispielsweise über öffentliche Standleitungen zu vernetzen. Dennoch gibt es auch einander inkompatible Netze, die normalerweise nicht die Chance einer Kopplung hätten. Hier besorgen Spezialrechner, sogenannte Gateways die Kommunikation. Sie ermöglichen zum Beispiel auch den Übergang zum ISDN.
Netzwerke
4.3.3 Leitungsgeführte Datenübertragungsmedien Für den Datenaustausch gibt es unterschiedliche Übertragungsmedien. Dabei ist es durchaus üblich und notwendig, einzelne Übertragungs strecken mit verschiedenen Medien zu überbrücken. Drahtwege
Funkwege
Lichtwege
Das Informationssignal wird als nieder- oder hochfrequenter elektrischer Wechselstrom übertragen.
Das Informationssignal wird als elektromagnetische Welle übertragen.
Das Informationssignal wird als elektromagnetische Welle im Frequenzbereich des sichtbaren Lichtes übertragen.
oberirdisch
unterirdisch
Lichtwellenleiter
Luftkabel Blankdraht
Erdkabel Seekabel
Richtfunk
mobiler Landfunk
Satellitenfunk
Leiter und Kabel Breite Verwendung findet das zweiR/2 L/2 adrige Kabel mit zwei gleich aufge bauten Leitungen. Der Leitungsvier C pol (zwei Eingänge und zwei Ausgänge) im Ersatzschaltbild dargeR/2 L/2 stellt macht deutlich, dass hier nicht nur ein ohmscher Widerstand wirkt. Jedes Übertragungskabel ist auch mit Induktivitäten und Kapazitäten behaftet. Aus diesem Grunde reagieren solche Leitungen frequenzabhängig. Der Dämpfung wegen dürfen bestimmte Längen nicht über- und unterschritten werden und Übertragungsraten lassen sich damit nicht beliebig erhöhen. Gerade LANs verwenden statisch Paarverseilung abgeschirmte Kabel. Sie unterdrüLagenverseilung cken Einflüsse von außen und über Firmen- und tragen Daten somit sicherer. MehVDE-Kennfäden rere Leitungspaare sind mit einer geerdeten statischen Umwicklung Beidraht versehen. Eine isolierende WickSeelenumwicklung lung trennt die Leitungen vom Sta statischer Schutz (St) tikschutz und das Ganze ist mit einem PVC-Mantel auch als mechaPVC-Mantel Y nischer Schutz umhüllt. Das Problem magnetischer Störfelder Kabelmantel nach außen und Störspannungen Schirmgeflecht auf die Datensignale nach innen ist (Außenleiter) Isolation mit dem Koaxialkabel in besonderer elektrische Weise gelöst. Feldlinien Kupferader (Innenleiter)
425
426
Technische Informatik
Im Innern befindet sich ein Kupferleiter, das Abschirmgeflecht ist der Außenleiter. Beide sind durch eine Isolation voneinander getrennt. Bei Anlegen von Spannungen entsteht nur zwischen dem Innen- und dem Außenleiter ein elektrisches Feld. Der Außenleiter wird geerdet, wodurch zwischen beiden Leitern eine Asymmetrie entsteht. Wegen ihrer Störfestigkeit werden Lichtwellenleiter zunehmend auch für die Nutzung im PC erschlossen.
Lichtwellenleiter gewinnen ihrer hohen Übertragungskapazität und der relativ einfachen Handhabe wegen als Medien an Bedeutung. Elektrische Signale werden als Lichtsignale umgewandelt und in Glas- oder Kunststofffasern über lange Strecken transportiert. Am Ende werden die Lichtsignale wieder in elektrische Signale zurückgewandelt. Ein Lichtwellenleiter hat einen Mantel Durchmesser kleiner als 1 mm. An den Wänden reflektiert der Lichtstrahl und nimmt nahezu verlustfrei Kern seinen Weg. Im Gegensatz zu Kupferkabeln können hier Fremdeinstreuungen wenig bewirken. Verluste durch Widerstände, Kapazitäten und Induktivitäten treten erst gar nicht auf. Die Leitungen und Kabel, aber auch die Funk- und Satellitenübertragung erfolgt in ganzen Systemlösungen. Die Übertragung ist immer ein Zusammenspiel zwischen Hard- und Software. Modem
Modem ist die Abkürzung für Modulator/Demodulator.
Mit einem Modem wird es möglich, das analoge Medium Telefonleitung zur Übertragung digitaler Daten zu nutzen. Das Modem ordnet die Bits bestimmten Tonfrequenzen zu. Die erste Lösung war noch recht einfach: Eine Tonfrequenz repräsentierte die 0, eine andere die 1. 1 0 0 1 1 0 440 Hz 440 Hz 880 Hz 440 Hz 880 Hz 880 Hz Die Datenraten waren gering. Mit vier Tönen lässt sich die Übertragungsrate schon verdoppeln. 1 0 1 1 1 0 0 0 0 1 0 0 880 Hz 1760 Hz 880 Hz 440 Hz 1320 Hz 440 Hz Dieses Verfahren lässt sich nicht beliebig fortführen, da eine zunehmende Dichte der Tonfrequenz das System auch empfindlicher gegenüber Störungen macht. Heute wird dieses Verfahren sogenannter Frequenzmodulation (Demodulation auf Empfängerseite) noch mit der Phasenmodulation kombiniert. ISDN
ISDN ist die Abkürzung für integrated services digital network.
Das ISDN hat besonders in Deutschland ein schnelles Wachstum erfahren. Die Leitungen des normalen Telefonanschlusses, einem KupferAderpaar, machen digitale Übertragungen von 144 KBit/s in beide Richtungen möglich. Abzüglich eines Steuerkanals ergibt sich eine effektive Übertragungsrate von zweimal 64 KBit/s, 64 KBit in jede Richtung. Neben diesen sogenannten B-Kanälen steht noch ein D-Kanal als Steuerkanal mit einer Übertragungsrate von 16 KBit/s zur Verfügung.
Netzwerke
Da dieses Netz bereits auf digitaler Basis funktioniert, ist lediglich noch ein Adapter zwischen Rechner und ISDN-Leitung erforderlich, der die Pegelanpassung optimiert. Die Datenübertragung selbst wird von entsprechenden Protokollen gesteuert und überwacht. xDSL Im Wesentlichen wurden erhöhte Datenübertragungsraten durch neuartige Modulationstechniken erzielt. Parallel spielen natürlich die Übertragungsmedien eine entscheidende Rolle. ISDN-Technik als DSL-Verfahren arbeitet auf einer Bandbreite von bis zu 120 kHz. Den 64 KBit/s ist perspektivisch so gesehen nichts mehr hinzuzusetzen. Mit größerer Bandbreite sind natürlich auch höhere Übertragungsraten zu erzielen. DSL nutzt diese. Der Anwender kann Daten mit hoher Geschwindigkeit empfangen und senden. Dabei können die vorhandenen Kupferdoppeladern des Telefons ohne aufwendige Investition für den breitbandigen DSL-Zugang genutzt werden. Es gibt verschiedene DSL-Techniken: • ADSL (asymmetric DSL): 8 MBit/s und 1 MBit/s (Download bzw. Upload) • HDSL (high data-rate DSL): 1,54 MBit/s und 2,04 MBit/s • SDSL (symmetric DSL): 3 MBit/s • VDSL (very high data-rate DSL): bis 51,8 MBit/s und bis 2,3 MBit/s (Download bzw. Upload)
DSL ist die Abkürzung für digital subscriber line.
I
Kabelmodem Ein sehr großer Anteil der Haushalte bezieht die analogen und digitalen Fernseh- und Radioprogramme über Kabel. Dieser Informationsdienst ist traditionell unidirektional ausgelegt, verläuft in Richtung Haushalte. 1996 wurde das Kabelmodem als neue Datennetztechnologie vorgestellt. Sie nutzt das existierende Netz in weiteren Kanälen für die Datenübertragung. Die größeren Bandbreiten ermöglichen mit bis an die 40 MBit/s deutlich höhere Übertragungsraten als Telefonleitungen oder ISDN. Die Interaktion erfordert die Einrichtung von Verteilerknoten mit Rückkanälen, den bidirektionalen Betrieb. Für das Down- und Upload können symmetrische und asymmetrische Verhältnisse eingerichtet werden. Für die gleichzeitige Nutzung von Telefongesprächen und Videokonferenzen ist das Kabelmodem von symmetrischer Konzeption von Vorteil. Das Kabelmodem ist permanent angeschlossen. Das heißt, es gibt kein An- und Abwählen. Die Daten sind nach dem gleichen Verfahren auf die Trägerfrequenzen zwischen 65 und 850 MHz moduliert, wie es bei Rundfunksignalen angewendet wird. Mit dem Kabelmodem werden die zweiwegefähigen HFC-Netzinfrastrukturen genutzt. HFC ist ein Verbund von Koaxialkabeln und Lichtleitern. Als optische Signale werden die Daten von der zentralen Einspeisestelle bis zum Koaxialverteilernetz übertragen, dort in elektrische Signale umgewandelt und so im letzten Wegeabschnitt zum Endteilnehmer transportiert. Den Kabelmodemzugang besorgt das CMTS in der Kopfstation oder einer Verteilerzentrale. Ein CMTS verwaltet in einem einzigen Fernsehkanal mehrere Tausend Modems. Als Standard hat sich die in den USA entwickelte DOCSIS durchgesetzt.
HFC: hybrid fiber coax CMTS: cable modem termination system DOCSIS: data over cable service interface specification
427
428
Technische Informatik
4.3.4 Datenübertragung per Funk IrDA: Infrared Data Association
Das zugrunde liegende Protokoll ist das gleiche wie bei Bluetooth. IrDA ist eine Point-toPoint-Verbindung
Infrarot (IrDA) Im Jahre 1979 integrierte Hewlett Packard eine IR-Schnittstelle in einen Taschenrechner, um so die Verbindung zum Drucker herzustellen. 1990 gab es die erste serielle IR-Schnittstelle in einem PC. Daraus entwickelte man einen Standard, der in der letzten Version bis zu 16 MBit/s bis zu einer Entfernung von 1 Meter überträgt. Es wurden von der IrDA bisher zwei Standards für Bitübertragungsschicht veröffentlicht: • SIR (serial IR physical layer) und • FIR (fast IR physical layer) Standard
Version
Jahr
Datenrate
SIR (serial infrared)
IrDA 1.0
1994
115,5 kbit/s
FIR (fast infrared)
IrDA 1.1
1995
4 Mbits/s
1999
16 Mbits/s
VFIR (very fast ifrared)
W-LAN W-LAN bezeichnet ein drahtloses lokales Netzwerk. Es beinhaltet den Zugriff auf alle Netzwerkressourcen wie beispielsweise Dateien, Drucker, Server oder Internetzugang. Für W-LAN gibt es mittlerweile mehrere Frequenzbänder auf teilweise völlig unterschiedlichen Frequenzen:
IEEE 802.11 bezeichnet einen Industriestandard für drahtlose Netzwerkkommunikation. IEEE ist die Abkürzung für Institute of Electrical and Electronics Engineers. IEEE 802.11 ist gleichbedeutend mit Wireless-LAN, WLAN, WiFi (Wireless Fidelity).
Standard
Frequenzen
Kanäle
IEEE 802.11a
5,15 GHz bis 5,725 GHz
19, alle überlappungsfrei; in Europa mit TPC und DFS nach 802.11h
IEEE 802.11b
2,4 GHz bis 2,4835 GHz
11 in den USA / 13 in Europa / 14 in Japan; maximal 3 Kanäle überlappungsfrei nutzbar
IEEE 802.11g
2,4 GHz bis 2,4835 GHz
11 in den USA / 13 in Europa / 14 in Japan; maximal 3 Kanäle überlappungsfrei nutzbar
Mit den Versionen wurden die Übertragungsraten deutlich erhöht. Konnten mit IEEE 802.11 noch maximal 2 MBit/s übertragen werden, so schafft IEEE 802.11n bis zu 540 MBit/s. Die Reichweite von W-LAN hängt stark von den baulichen Gegebenheiten ab. Im ungünstigsten Fall sind immer noch Reichweiten um die 30 m möglich. Ohne Hindernisse im Außenbereich lassen sich bis zu 400 m überbrücken, wobei hohe Übertragungsraten kleinere Entfernungen fordern. Für den Internetzugang benötigt man einen Access Point. Als Basisstation und Ausgangspunkt einer Funkzelle ist er mit einer Ethernet-Schnittstelle verbunden. Über einen Router ist der direkte Zugang zum Internet über vorhandene Telefon- und Datennetze möglich.
Netzwerke
Bei den W-LAN-Implementierungen werden IEEE 802.11n und 802.11p aufgrund raffinierter Hochfrequenz-Technologien und ausgeklügelter Protokolle herausragende Rollen spielen. Die Autoindustrie beispielsweise proklamiert auf dieser Basis faszinierende Möglichkeiten des mobilen Datenaustauschs. Bluetooth Bluetooth ist eine international standardisierte Datenschnittstelle mit Funkübertragung. Sie sendet und empfängt im lizenzfreien 2,4 GHzBand. Sie soll einmal Ersatz für die Kabel-Datenleitungen sein und eine Übertragung mit einer Brutto-Datenrate von bis zu 1 MBit/s sichern. Geplant sind Datenraten bis zu 12 MBit/s. Sehr kleine Baugrößen der Anlage, nicht größer als ein Geldstück, niedrige Kosten und geringer Stromverbrauch wird ihr für die Zukunft weite Verbreitung einbringen. Für den Datenverbund sind vielfältige Geräte möglich, etwa Handy, Navigationsgerät, Notebook, PC und die Musikanlage. Die Reichweite hängt natürlich von der Sendeleistung ab und staffelt sich in drei Klassen: • Klasse 1: 1 00 mW für 100 m Reichweite • Klasse 2: 2,5 mW für 20 m bis 50 m Reichweite • Klasse 3: 1 mW für 10 m Reichweite
Der Stammeskönig Harald Blaatand (engl. Bluetooth) wollte die WikingerStämme einigen. Die „Einigung“ multimedialer Elektronik ist auch Ziel dieses Funkstandards.
Vergleich der Schnittstellen Standard
Bluetooth
IrDA
Wireles LAN
Verbindungsart
Punkt zu Punkt, Punkt zu Mehrpunkt
Punkt zu Punkt
Punkt zu Punkt, Punkt zu Mehrpunkt
Übertragungsdistanz
10 m
1 m
300 m
Übertragungsumkreis
omnidirektional
30-Grad-Winkel
omnidirektional
Anzahl unterstützter Geräte
8
2
256
I Satelliten Bereits 1965 wurde der erste geostationäre Nachrichtensatellit „Intelsat 1“ als Relaisstation zwischen Europa und Amerika in einer Höhe von 36 000 Kilometern über dem Äquator installiert. Unter anderem übertrug er auch Daten. Seit dem folgten immer leistungsfähigere Übertragungssysteme dieser Art. Satelliten sind künstliche Erdtrabanten. Eine Erdfunkstelle sendet die Daten mittels Trägerfrequenzen im GHz-Bereich zum Satelliten. Ein Transponder wandelt sie in eine andere Frequenz um. Trägerversetzt gelangen Sie über Antennen zurück zur Erde und decken dort einen größeren Bereich ab. Da die Strahlungsleistung sehr gering ist, bedingt der Satellitenempfang einen Parabolspiegel, der genau auf den Sender ausgerichtet ist.
429
430
Technische Informatik
Mit dem Handy ins Internet Beim Handy-Netz werden derzeit 3 Generationen unterschieden: 1. Generation: analoge Funknetze 2. Generation: digitale Funknetze 3. Generation: breitbandige digitale Funknetze Das analoge Funknetz ist überholt und war für den Internetzugang uninteressant. Die meisten Handy-Nutzer kommunizieren derzeit weltweit im digitalen Funknetz der zweiten Generation. GSM-Datenübertragung GSM: global standard for mobile communikation GPRS: general packet radio service
Seit 1995 sind GSM-Netze in Deutschland beinahe flächendeckend für den Handybetrieb verfügbar. Solche Telefone benutzen den Frequenzbereich um 900 MHz (D1 und D2) oder 1 800 MHz (E+ und E2). Mit einer Übertragungsrate von derzeit 9,6 KBit/s sind sie nicht die schnellsten. Der besondere Reiz ist wohl vornehmlich darin zu sehen, dass mit GPRS-Technik auch das „Surfen” mit dem Handy möglich ist. Aufgrund des kleinen Handy-Displays und der relativ niedrigen Datenübertragungsrate wird dafür eine sparsamere Seitenbeschreibungssprache als HTML für WWW, nämlich WML zur Anwendung gebracht.
BasissationController
Mobilfunkvermittlungsstelle
ISDN
GSM-Netzwerk
PSTN
ISDN-Ausstattung Fax-Server Modem-Pool
Internet (X:25) drahtlos
RAS
LAN
Router Modem-Pool
UMTS-Datenübertragung UMTS: universal mobile telecommunication system
Wesentlich höhere Transportkapazitäten für Daten können in der 3. Generation mit UMTS bereitgestellt werden. Damit können neben den vielen zusätzlichen Diensten des Telefonierens auch Internetdienste in anspruchsvoller Qualität (WWW-Browsing, Informations- und Kommunikationsdienste) genutzt werden. Internetzugänge Einen privaten Internetzugang erhält man über einen Internet Service Provider oder einen Online-Dienst. Über das Telefonnetz wählt man sich in den entsprechenden Terminalserver. Dies stellt die unmittelbare Verbindung zum LAN des Dienstanbieters her. Von den dort stehenden Servern können die Dienste genutzt werden. Ins Internet wählt man sich mit der zugewiesenen IP-Adresse ein.
Netzwerke
Internet E-MailServer
NewsServer
DNS IP-Router
WWWServer
lokales Netzwerk Terminal Server Modems und ISDN-TerminalAdapter TK-Anlage Telefonnetz
Protokolle Der Datenaustausch basiert auf Programmen, die man als Protokolle bezeichnet. In ihnen ist festgelegt, wer, was und wann sendet, und an welche Adresse die Daten gehen. Für die Protokolle muss es natürlich einen Standard geben. Ansonsten wäre der Datenaustausch schlichtweg unmöglich. Die Internationale Standardorganisation (ISO) hat mit dem OSI-Referenzmodell (Open Standards Interface) sogenannte Schichten definiert, auf die sich der öffentliche Datenaustausch (und darüber hi naus) begründet. Nr.
Protokolle
Beispiele
7
Anwendungsschicht (application layer)
Web-Browser, E-Mail-Programme
6
Darstellungsschicht (presentation layer)
ASCII, HTML, XML, MIME
5
Steuerungsschicht (session layer)
HTTP, FTP, POP3, SMTP
4
Transportschicht (transport layer)
TCP, SPX, NetBeui
3
Vermittlungsschicht (network layer)
IP, IPX, X.25, T.70, T.90NL
2
Sicherungsschicht (data link layer)
PPP, X.75, LAP, HDLL, T.30
1
Bitübertragungsschicht (physical layer)
IEEE802, ATM, V.100
Danach ist der einfache Datentransport bereits auf der ersten Schicht, also mit geringsten Protokollanforderungen möglich. Wer kann aber gewährleisten, dass die Daten auch fehlerfrei den Empfänger erreichen? Bei Benutzung der zweiten Schicht im Protokoll wird eine falsche Paketübertragung dann wiederholt. Was schließlich mit den Datenpaketen überhaupt passieren soll, liegt in den höheren Schichten begründet.
431
432
Das Wichtigste im Überblick
Die Entwicklung der Menschheit ist eng mit dem Schaffen technischer Systeme verbunden. Treibende Kraft sind die Bedürfnisse. Die Fortschritte in Wissenschaft und Technik ließen aus dem Abakus ein hochkomplexes technisches System entstehen, den Computer. Sein Zweck ist das Erfassen, Ausgeben, Speichern, Transportieren und Verarbeiten von Informationen. Technisches System Formen, Werkstoffe und Funktionen
Bedürfnis
Zweck angestrebte Gesamtfunktion zur Bedürfnisbefriedigung
Formen und Werkstoffeigenschaften werden zur Verwirklichung der Funktionen miteinander verknüpft. Die Versorgung mit Programmen und Daten erfolgt über das Eingabewerk. Rechenwerk, Leitwerk und Speicher bilden den Prozessor. Er verarbeitet Anweisungen und Daten. Das Ausgabewerk stellt die Resultate zur Verfügung. Programme
Eingabewerk
Ausgabewerk
Speicher Daten Rechenwerk
Leitwerk
Mehrere Computer können zu einem Netzwerk miteinander verbunden werden. Der Zugriff auf andere Computer erhöht das Informationsaufkommen und stellt verschiedene Möglichkeiten der Kommunikation bereit. Das besondere Merkmal des Computers ist seine Universalität. Neben Spielen und Büroanwendungen findet er Anwendung in der Industrie. Sensoren sind die Eingabegeräte zum Erfassen von Zustandsinformationen. Aktoren dienen zur Beeinflussung des technischen Prozesses.
Prozess Sensoren
Aktoren
Sensorik
Aktorik Programm Signalanpassung
Computer Prozessor Prozessorik
Signalanpassung
Aufgaben
Aufgaben 4.1 Der Computer und sein Betriebssystem Aufgabe 4.1.1 Der Geschirrspüler funktioniert nicht mehr? Kein Problem. Keine Technik ist für die Unendlichkeit ausgelegt, also ist das nichts Besonderes. Dennoch, solche Ausfälle machen uns bewusst, was uns die Technik für Arbeit abnimmt, und welche Bequemlichkeiten sie schafft. a) Welche Schritte sind beim manuellen Säubern von schmutzigem Geschirr zu erledigen? b) Nennen Sie 5 Beispiele, wo ebenfalls verschiedene Handlungsfolgen im Haushalt, in der Schule und anderswo auf technische Systeme übertragen werden! c) Warum wird es auch in nächster Zeit vermutlich noch keinen Zimmeraufräumautomaten geben? Aufgabe 4.1.2 Die ersten Computer wurden vornehmlich zum Lösen von Rechenaufgaben gebaut. Dies ist zwar seine eigentliche Stärke geblieben, aber das Rechnen tritt für den Nutzer immer mehr in den Hintergrund. Tragen Sie mindestens 10 Anwendungen für einen PC zusammen! Aufgabe 4.1.3 Ermitteln Sie aus Fachzeitschriften und Angeboten des Internets den Wandel der typischen HardwareKonfiguration verkaufter PCs und stellen Sie eine Übersicht zusammen! Machen Sie zumindest Aussagen zu folgenden Komponenten: Jahr, Prozessor, Arbeitsspeicher, Festplatte, Grafikkarte. Aufgabe 4.1.4 Mit der Rechentechnik haben unterschiedliche Zahlensysteme an Bedeutung gewonnen. Am häufigsten werden das binäre (duale), das dezimale und das hexadezimale Zahlensystem verwendet. Begründen Sie die Notwendigkeit der Nutzung dieser unterschiedlichen Zahlensysteme! Aufgabe 4.1.5 Die Umwandlung der Zahlensysteme kann nach unterschiedlichen Algorithmen erfolgen. a) Ermitteln Sie nach der Substitutionsmethode die Dualzahl für die Dezimalzahl 89D!
b) Ermitteln Sie nach der Divisionsmethode die Dualzahl für die Dezimalzahl 171D! c) Für die Umrechnung zwischen dualen und hexadezimalen Zahlen gilt eine feste Zuordnung. Wandeln Sie die ermittelten Dualzahlen aus den Teilaufgaben a) und b) in hexadezimale Zahlen um! Aufgabe 4.1.6 Logische Grundfunktionen lassen sich technisch in unterschiedlicher Art realisieren. a) Im einfachsten Fall klappt dies bereits durch Verwendung mechanischer Eintaster (nicht betätigt ist der Strompfad geöffnet, betätigt geschlossen) und Austaster (nicht betätigt ist der Strompfad geschlossen, betätigt geöffnet) im Lampenstromkreis, wobei das Ausgangssignal mit einer Glühlampe angezeigt werden kann. Entwickeln Sie für die logischen Grundfunktionen NICHT, UND, NICHT-UND, ODER und NICHT-ODER Schaltungen, die den Anforderungen gerecht werden! b) Gegeben ist folgende Schaltung: A ≥1
X
B C
& ≥1
B
Q Y
C
Stellen Sie die Verknüpfung als Schaltungsgleichung dar und schreiben Sie den Wortlaut auf, wie man diese Gleichung liest! c) Tragen Sie alle möglichen Schaltzustände von Teilaufgabe b) in eine Zustandstabelle ein! _ _ _ C
B
A
C
B
A
0
0
0
1
1
1
X=
Y=
Q=
…
d) Entwickeln Sie aus der gewonnenen Logik in Teilaufgabe c) eine elektrische Schaltungsvariante mit mechanischen Schaltkontakten!
433
434
Technische Informatik
Aufgabe 4.1.7 Die logischen Funktionen können unter Anwendung der Gesetze der Schaltalgebra mit unterschiedlichen Gattern verwirklicht werden. a) Sortieren Sie die Schaltungen so, dass die gleichen logischen Funktionen zusammengefasst werden! a b 1 1 ≥1
≥1 1
1
c
d &
Multiplexer
1 &
& 1
&
g h ≥1
&
2 &
1 &
1 S1
f
e
b) Beschreiben Sie den Einfluss der Schalterstellung unter Auswertung der Ergebnisse in der Schaltbelegungstabelle! c) Welche Funktion übernimmt im Multiplexer das NAND-Gatter, das als Eingänge die Ausgänge der Setzgatter hat? d) Die Gatter im Demodulator teilen in Verbindung mit den Schaltern die Signale wieder in die jeweiligen Kanäle auf. Der Spannungswechsel wird zur Kontrolle mit Leuchtdioden angezeigt. Erläutern Sie das Prinzip der Aufteilung unter Zuhilfenahme einer Schaltbelegungstabelle (gemeinsame Leitung – Schalter 1 – Ausgang – Leuchtdiode)!
&
S2
&
3
i &
&
S3 4
b) Veranschaulichen Sie die Logiken mit Zustands tabellen! Aufgabe 4.1.8 Zur Mehrfachausnutzung von Leitungen und Frequenzen setzt man in Übertragungssystemen sogenannte Multiplexer ein. Das Beispiel (b nächste Spalte) zeigt, wie auf diese Art und Weise vier voneinander getrennte Signalgeber über eine gemeinsame Leitung ihre Daten übertragen können. Natürlich ist an der Gegenstelle wieder erforderlich, dem jeweiligen Empfänger dann auch die richtigen Informationen zukommen zu lassen. Diese Aufgabe erfüllt der Demultiplexer. a) Das Funktionsprinzip von Multiplexer und Demultiplexer basiert darauf, dass die Rechteck signale die Gatter nur in Abhängigkeit von der jeweiligen Schalterstellung (S1 bis S4) passieren lassen. Ermitteln Sie anhand einer Schaltbelegungstabelle (Signal 1, Schalter 1 und Ausgang Gatter 1), wann ein Gatter den Eingang für die Rechteck signale freigibt und wann nicht!
&
S4
Demultiplexer
+U & & & &
S1
S2
S3
S4
Aufgabe 4.1.9 Mit dem EVA-Prinzip kann das Grundprinzip der Informationsverarbeitung auch auf den Computer übertragen werden. Eine stark vereinfachte Struktur wird hier vorgeschlagen. Allerdings fehlen ihr noch die Zuordnungen. Tragen Sie die nachstehenden Begriffe in das Strukturbild eines Rechners ein! Drucker Maus ROM Tastatur Bildschirm CPU Scanner Monitor Modem Peripherie Bussystem Festplatte RAM Verarbeitung
Aufgaben
b) Ordnen Sie die nachstehenden technischen Sys teme ihren typischen Übertragungsarten zu! Kennzeichnen Sie gesondert diejenigen, für die beide Arten möglich sind! USB Tastatur Modem COM Maus Gerätefernsteuerung Drucker Festplatte LPT SCSI Bussystem RAM CD-ROM Prozessor Interface Monitor Scanner Nullmodem c) Immer höhere Übertragungsgeschwindigkeiten machen parallele Übertragung ab einem Punkt unbrauchbar. Erläutern Sie diese These! Aufgabe 4.1.12 Nennen Sie mindestens 10 moderne Maschinen und Anlagen außerhalb der PCs, die mit Mikroprozessoren ausgestattet sein können!
Aufgabe 4.1.10 Die aufgelisteten Wortsilben – richtig zusammengesetzt – ergeben typische Geräte der Informationstechnik. CHER – CKER – CON – DIS – DRU – FIK – GRA – JOY – KAR – KET – LAUF – LAUT – LER – LIGHT – MIK – MO – NI – PEN – PLOT – PRO – RO – SCREEN – SOR – SPRE – STICK – STRAHL – TA – TAS – TE – TE – TEN – TER – TIN – TOR – TOUCH – TROL – TUR – WERKS – ZES a) Stellen Sie die Lösungsworte dar! b) Ordnen Sie die Lösungswörter nach Geräten der Eingabe, Verarbeitung und Ausgabe! Aufgabe 4.1.11 Im Grundsatz kann man zwei Arten der digitalen Datenübertragung unterscheiden, die serielle und die parallele. Beide haben ihre Vor- und Nachteile, weshalb sie in Einzelfällen auch miteinander kombiniert werden. a) Leiten Sie aus den Vor- und Nachteilen der seriellen und der parallelen Datenübertragung besondere Eignungen für den praktischen Einsatz ab!
Aufgabe 4.1.13 Ein- und Ausgabegeräte sind genau genommen die entscheidenden Schnittstellen zwischen Computer und Mensch. a) Begründen Sie diese These! b) Geben Sie einen Überblick über die sozial-technische Entwicklung dieser Schnittstellen von den Anfängen bis heute! Gruppieren Sie die Veränderungen in ergonomische, technische, psychologische und andere wichtige Aspekte! Aufgabe 4.1.14 Betriebssysteme übernehmen im Computer unterschiedliche Aufgaben. In welchem Antwortblock sind die wichtigsten Aufgaben richtig zusammengefasst? A • Daten verwalten • Programme laden und ausführen • Zusammenspiel der Hardwarekomponenten organisieren • Netzverbindungen realisieren • Ein- und Ausgabegeräte koordinieren B • Datenfluss überwachen • Programme laden und ausführen • Zusammenspiel der Softwarekomponenten organisieren • Monitor mit Anzeigedaten versehen • Tastatur abfragen
435
436
Technische Informatik
C • Daten ausführen • Programme verwalten • Zusammenspiel der Hardwarekomponenten organisieren • Netzverbindungen steuern • Richtigkeit der Ein- und Ausgabe kontrollieren D • Daten und Programme speichern • Zusammenspiel von Hardwarekomponenten organisieren • Netzverbindungen realisieren • Ein- und Ausgabe steuern • Virenüberwachung ausführen Aufgabe 4.1.15 Computer und Netze schaffen neue Möglichkeiten, Menschen mit Behinderungen sozial zu integrieren.
d) Für Menschen mit Behinderungen kommt den Ein- und Ausgabegeräten eine ganz besondere Bedeutung zu. Geben Sie anhand von Recherchen einen Überblick über spezielle Ein- Und Ausgabegeräte! Illustrieren Sie durch Wort und Bild die einzelnen Geräte! e) Allen Menschen einen Zugang zum Internet zu ermöglichen, heißt in der Fachsprache „barrierefreier Zugang“. Erläutern Sie, warum es so wichtig ist, gerade den Menschen mit Behinderungen einen barrierefreien Zugang zu ermöglichen! Aufgabe 4.1.16 (Digitalfotografie) a) Stellen Sie in einer Übersicht die Gemeinsamkeiten und Unterschiede der analogen und der digitalen Fotografie gegenüber! b) Kennzeichnen Sie den erreichten Entwicklungsstand und Tendenzen in der Digitalfotografie! Aufgabe 4.1.17 Beim Scanner ist die Auflösung ein wichtiges Maß zu seiner Beurteilung. Allerdings ist hier zum einen die optische Auflösung und zum anderen die interpolierte Auflösung zu unterscheiden. a) Was kennzeichnet die wichtigsten Unterschiede dieser beiden Auflösungsarten? b) Welche Auflösung ist für die Kaufentscheidung die bedeutsamere? Begründen Sie dies!
a) Menschen mit Behinderungen sind nicht nur solche mit auffälligen Defekten. Behinderungen lassen sich streng genommen bei sehr vielen Menschen ausmachen, auch wenn diese im ers ten Moment nicht ins Gewicht fallen. Behinderungen gehen meist mit dem Älterwerden einher (Verlangsamungen, motorische Einbußen, schlechter werdende Augen usw.), sie sind aber auch bei vielen anderen Menschen anzutreffen (Farbblindheit, Brillenträger, Schwerhörigkeit usw.). Verschaffen Sie sich einen Überblick, welche Behinderungen anzutreffen sind! b) Analysieren Sie unterschiedliche Web-Präsentationen nach ihrer Tauglichkeit für Menschen mit Behinderungen! c) Überlegen Sie sich einen Katalog von Maßnahmen, wie man mittels Computer auch Menschen mit Behinderungen ansprechen sollte!
Aufgabe 4.1.18 Drucker bietet der Handel in kaum überschaubarer Zahl an. a) Warum diese Fülle, was unterscheidet die Drucker voneinander? b) Unterbreiten Sie für verschiedene Verwendungszwecke jeweils bevorzugte Drucker! Begründen Sie Ihre Entscheidungen!
Aufgaben
Aufgabe 4.1.19 Für Datenspeicher gibt es im Allgemeinen einen rasch wachsenden, unersättlichen Markt. Im Besonderen können Technologien unterschieden werden, die vor allem die Art der Datenablage in den Vordergrund stellen. Die speziellen Unterschiede betreffen den Einsatz, der eine Reihe von Bedingungen vorgibt.
a) Nennen Sie unterschiedliche Kriterien, nach denen sich die Vielfalt der Speicher ordnen lässt! b) Ordnen Sie die Speicher nach Art der Datenaufzeichnung! elektrische Speicher
magnetische Speicher
optische Speicher
andere Speicher
…
…
…
…
4.2 Prozessautomatisierung Aufgabe 4.2.1 Technische Prozesse lassen sich in unterschiedliche Klassen einteilen. Ordnen Sie den Prozessklassen je 3 Beispiele zu! Mess- und Prüf- prozesse
Fertigungsprozesse
Verfahrens- prozesse
Verteilungs- prozesse
…
…
…
…
Aufgabe 4.2.2 Die technischen Prozesse in automatisierten Systemen sind auf das Wirken der Sensorik, der Prozessorik und der Aktorik zurückzuführen. Dafür kommen jeweils die unterschiedlichsten Teilsysteme in Frage.
Ordnen Sie die nachstehenden Baugruppen den Komponenten eines automatisierten Systems zu! Fotowiderstand; Software; Zähler; Heizung; Motor; Vergleicher; Thermometer; Induktionssensor; Speicher; Lampe; Potentiometer; Magnet Sensorik
Prozessorik
Aktorik
…
…
…
Aufgabe 4.2.3 In selbsttätig ablaufenden Vorgängen der Technik unterscheidet man zwischen Steuern und Regeln. a) Was sind die grundlegenden Unterschiede dieser beiden technischen Vorgänge? b) Ordnen Sie die Beispiele nach der Art ihres Wirkungsablaufs in Steuern und Regeln! Fügen Sie je 2 weitere Beispiele hinzu! Begründen Sie die jeweilige Zuordnung! Wasserhahn; Tauchsieder; Gebläse im Rechner; Bügeleisen; Dimmerschalter für die Lampe; Elektroboiler; Klimaanlage; Außenlampe mit Dämmerungsschalter Aufgabe 4.2.4 Bekanntlich lassen sich Signale in zwei grundlegende Arten aufteilen, in analoge und digitale Signale. Wandler bzw. Umsetzer sind technische Vorrichtungen, mit denen die Signale von der einen Form in die andere überführt werden können. a) Sortieren Sie das Signalaufkommen in analoge und digitale Signale! Code der Funkuhr; TFT-Bildschirm; Tageslicht; menschliche Sprache; Gitarrenklänge; CRT-Monitor; Ausdehnung von Körpern; Festplatte; Daten im Internet; Musiknoten; Scancode; Sonnenuhr b) Begründen Sie die prinzipielle Notwendigkeit solcher Wandler für Multimedia-Rechner! c) Nennen Sie mindestens 8 Baugruppen im Computer oder an den Computer anschließbare Geräte, die A/D- bzw. D/A-Umsetzer integrieren! Aufgabe 4.2.5 Zur Herstellung des Winkels dient als Ausgangsmaterial ein rechteckiger Flachstahl. Um die Form herauszuarbeiten, sind die entsprechenden Koordinaten nach dem Muster x, y für die Eckpunkte festzulegen.
437
438
Technische Informatik
kalen Netzwerk zusammengeschlossen. Dies bringt eine erhebliche Ressourcenerweiterung mit sich und eröffnet vielfältige Kommunikationsmöglichkeiten. Die Begrenzung des Lokalen wird aufgehoben, wenn darüber hinaus auch der Zugang zum Internet realisiert wird. a) Informieren Sie sich über das bestehende lokale Netzwerk in der Schule! c) Wie ist in der Schule der Internetzugang gelöst?
20
50
20
80
a) Geben Sie die Wegeinformationen für das Werkzeug zum Herausarbeiten des Winkels beginnend von der linken unteren Ecke als absolute Wertepaare an! b) Geben Sie die Wegeinformationen für das Werkzeug zum Herausarbeiten des Winkels beginnend von der linken unteren Ecke als relative Wertepaare an!
Aufgabe 4.2.6 Codelineale werden zur Wegemessung eingesetzt.
•
•
•
• •
• • •
• • • •
•
• • •
•
• • •
• • • • • • • • • • • •
Das abgebildete 4-Bit-Codelineal ist für das zentimetergenaue Messen konzipiert. Die Genauigkeit soll auf das Hundertfache heraufgesetzt werden. Entwerfen Sie dafür ein geeignetes Codelineal!
Aufgabe 4.3.2 Das Internet ist ein inhomogenes Netz, das sich aus vielen Teilnetzen zusammensetzt. An der Datenübertragung sind sehr unterschiedliche Übertragungsarten beteiligt. Kennzeichnen Sie wichtige Übertragungsarten!
Telefonleitungen Standleitungen Richtfunkübertragungen
I
… …
Satellitenübertragungen
…
Rundfunkübertragungen
…
Aufgabe 4.3.3 Nachfolgend finden Sie vier Begriffspakete geschnürt. Aus ihnen sollte ersichtlich werden, um was es sich dabei im Konkreten handelt. Welche technischen Einrichtungen sind jeweils gemeint? Begründen Sie Ihre Aussage, indem Sie die Bedeutung der einzelnen Begriffe jeweils knapp erläutern und von ihnen auf die Lösung schließen!
Paket 1
Schalter; PS/2; Scancode; Puffer; AT; Interrupt; Mikroprozessor; Butterfly; Numerikblock
Paket 2
ROM; Spur; Pit; Land; MB; Polycarbonat; Frames; Bit; Musik und Daten
Paket 3
HD; Spur; Sektor; 1,44; 3,5; RAM; Magnet; Scheibe
Paket 4
Modulation; V.90; Schnittstelle; Datenpaket; AT-Befehle; 56 K; Telefon; Demodulation
4.3 Netzwerke Aufgabe 4.3.1 Der Grundgedanke einer Netzverbindung ist der Datenaustausch zwischen mindestens zwei Geräten. Schon am Computer angeschlossene Geräte bilden ein kleines Netzwerk. Die einfachste Form des Datenaustauschs zwischen zwei Computern wird mit einem Nullmodem realisiert. In der Regel sind heute mehrere bis sehr viele Computer und andere Datenendgeräte zu einem lo-
…
Die theoretische Informatik beschäftigt sich mit der Fundierung des Algorithmusbegriffs, untersucht die Leistungsfähigkeit von Algorithmen und erforscht die prinzipiellen Grenzen des Computers beim Lösen von Problemen.
440
Theoretische Informatik
5.1
I
Linguistik: Sprachwissenschaft
Formale Sprachen und Automaten
5.1.1 Formale, natürliche und Programmiersprachen Die Theorie der formalen Sprachen und die Automatentheorie nehmen in der theoretischen Informatik breiten Raum ein. Dabei werden die Einsichten vermittelt, die zum Verständnis von Anwendungen in verschiedenen anderen Gebieten erforderlich sind. Dies gilt beispielsweise für die Linguistik, den Compilerbau und die künstliche Intelligenz. Die Wortwahl formale Sprache unterstreicht die Abgrenzung sowohl zu den natürlichen als auch zu den Programmiersprachen. In formalen Sprachen spielt die Semantik, d. h. die Bedeutung der Sätze einer Sprache, keine Rolle. In der Programmiersprache Turbo Pascal bedeutet for i:= 1 to 5 do writeln('Hallo'); dass das Wort Hallo am Bildschirm 5-mal untereinander geschrieben wird. Das for-to-do-Sprachelement hat die Bedeutung eines Zyklus. Die darin enthaltene Wertzuweisung folgt der Semantik von :=. Für die Definition der Semantik von Programmiersprachen sind verschiedene Zugänge entwickelt worden, die hier jedoch nicht betrachtet werden.
I
5.1.2 Syntax und Ableitungsbaum Die Theorie der formalen Sprachen befasst sich ausschließlich mit dem syntaktischen Aspekt. Die Syntax einer Sprache ist die Lehre vom Satzbau. Sie umfasst sämtliche grammatikalische Regeln, deren Anwendungen zu korrekt gebauten Sätzen führen. Auch natürliche und Programmiersprachen besitzen eine Syntax. Für englische Sätze gilt die SPO-Regel, die die Reihenfolge Subjekt – Prädikat – Objekt vorschreibt. Das Beispiel führt zu der Frage, wie grammatikalische oder syntaktische Regeln anzuwenden sind. Dafür gibt es zwei Herangehensweisen: 1. Erzeugung (Synthese) eines Satzes 2. Erkennung (Analyse) eines Satzes Der Satz „She loves soccer players.“ ist syntaktisch korrekt, denn die Analyse gemäß der SPO-Regel verläuft positiv:
Formale Sprachen und Automaten
She
loves
soccer players
Subjekt
Prädikat
Objekt
.
Satz Ein „Konstrukteur“ dieses Satzes geht umgekehrt vor: Satz Subjekt
Prädikat
Objekt
She
loves
soccer players
.
Die für die Analyse bzw. Synthese eines Satzes verwendete Darstellung heißt Baum. Sogenannte Ableitungsbäume entstehen aber nur dann, wenn sämtliche Regeln eine spezielle Form besitzen (b Abschnitte 5.1.3 und 5.1.7: kontextfreie Grammatik). Die Satzbauregel für englische Sätze lautet in Kurzform SATZ → SUBJEKT PRÄDIKAT OBJEKT. Lies: „Ein SATZ ist definiert als eine Folge aus SUBJEKT, PRÄDIKAT, OBJEKT und einem anschließenden Punkt.“ Diese eine Regel genügt noch nicht, denn sie gibt keine Auskunft darüber, wofür SUBJEKT, PRÄDIKAT und OBJEKT stehen. Dies legen die folgenden Regeln fest: SUBJEKT → She → He SUBJEKT PRÄDIKAT → loves PRÄDIKAT → kicked PRÄDIKAT → likes OBJEKT → soccer players OBJEKT → swimming OBJEKT → the ball Damit können insgesamt 18 Sätze gebildet werden, wobei ein Satz wie „She kicked soccer players.“ daran erinnert, dass die Semantik wirklich keine Rolle spielt.
5.1.3 Formale Grammatik Offensichtlich gelingt es immer dann (wenigstens) einen Ableitungsbaum für einen gegebenen Satz anzugeben, wenn in jeder Regel auf der linken Seite genau eine zu erklärende syntaktische Einheit steht. Syntak-
Für das Zeichen → („ist definiert als“) wird oft auch das Zeichen ::= benutzt.
441
442
Theoretische Informatik
tische Einheiten werden in der Theorie formaler Sprachen Nichttermi- nale genannt. Für sie besteht Erklärungspflicht, d. h., jedes Nichtterminal muss die linke Seite wenigstens einer Regel bilden. Nichtterminale kommen im Satz selbst nicht vor. Sie haben lediglich eine metasprachliche Aufgabe, indem sie helfen, die Struktur von Sätzen der zu definierenden Sprache exakt zu beschreiben. Im Gegensatz dazu sind Terminale die wirklichen lexikalischen Bausteine eines Satzes. Sie werden an der entsprechenden Stelle platziert und mit anderen Terminalen verbunden. Seien N die Menge der Nichtterminale und T die Menge der Terminale, dann gilt für obiges Beispiel: N = {SATZ, SUBJEKT, PRÄDIKAT, OBJEKT } und T = {She, He, loves, kicked, likes, soccer_players, swimming, the_ball,.}.
Achtung! Der Ableitungspfeil in αi ⇒ αj, sprich: αi „geht unmittelbar über in“ αj, darf nicht verwechselt werden mit dem Definitionssymbol in den grammatikalischen Regeln, X → α, sprich X „ist definiert als“ α.
Es ist üblich, für Nichtterminale große Buchstaben zu schreiben, während die Schreibweise von Terminalen nicht beeinflussbar ist, da sie mit der Aufgabenstellung vorgegeben ist. Bei Programmiersprachen wird dies vom „Design der Sprache“ vorgeschrieben. In den folgenden Beispielen werden meist Kleinbuchstaben als Terminalsymbole benutzt. Im letzten Beispiel spielt das Nichtterminal SATZ eine besondere Rolle. Es bildet in jedem Falle die Wurzel des Ableitungsbaumes und heißt deshalb Axiom, Satz-, Spitzen- oder Startsymbol s. Eine Satzerzeugung beginnt also stets beim Spitzensymbol und endet, wenn sämtliche Nichtterminale durch Terminale ersetzt worden sind. Anstelle der Baumform gibt es noch folgende Schreibweise: ∗ s ⇒ α1 ⇒ α2 ⇒ … ⇒ αn, kurz s α n. ⇒ Die αi werden Satzformen genannt. Es sind Zeichenketten, die aus beliebig vielen Nichtterminalen und beliebig vielen Terminalen – auch gemischt und in beliebiger Reihenfolge – bestehen. Da die Ableitung eines Satzes – manchmal auch Herleitung genannt – bei αn endet, ist klar, dass αn kein einziges Nichtterminal enthält. αn ist ein aus s abgeleiteter Satz. Der Satz „He likes swimming.“ ist aus s=SATZ ableitbar, denn SATZ ⇒ SUBJEKT PRÄDIKAT OBJEKT . ⇒ He PRÄDIKAT OBJEKT . ⇒ He likes OBJEKT . ⇒ He likes swimming . Die vorangegangenen Betrachtungen münden nun in die Definitionen einiger abstrakter Begriffe.
b auch Definition einer formalen Grammatik im Abschnitt 3.1.4
Eine formale Grammatik G = (N, T, P, s) ist ein 4-Tupel, wobei die verwendeten Symbole die folgenden Bedeutungen besitzen: – N eine endliche Menge von Nichtterminalen; – T eine endliche Menge von Terminalen, mit N ∩ T = Ø; – P eine endliche Menge von Regeln oder Produktionen der Form α → β, wobei α und β Satzformen sind und α wenigstens aus einem Nichtterminal besteht; und schließlich – s das Startsymbol, mit s ∈ N.
Formale Sprachen und Automaten
Der amerikanische Informatiker Noam Chomsky (geb. 1928) hat formale Grammatiken erstmals ab 1956 verwendet. Um diese Leistung zu würdigen, werden formale Grammatiken (dieser Art) auch Chomsky-Grammatiken genannt. Sei G1 = (N1, T1, P1, s1) eine formale Grammatik, mit N1 = {GZAHL, ZIFFER, GZ}, T1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, P1 = {GZAHL → GZ | ZAHL GZ, ZAHL → ZIFFER|ZIFFER ZAHL, ZIFFER → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, GZ → 0 | 2 | 4 | 6 | 8}, s1 = GZAHL.
Mit dieser formalen Grammatik können alle geraden Zahlen (als Wörter) erzeugt bzw. erkannt werden.
Die beispielsweise in ZIFFER → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 verwendeten senkrechten Striche gestatten eine Kurzschreibweise für die zehn Regeln ZIFFER → 0, ZIFFER → 1, … , ZIFFER → 9. Die im Beispiel eingeführte Schreibweise inklusive der Verkürzungen für alternative Regeln geht auf Backus zurück und wird Backus-Normalform oder Backus-Naur-Form, kurz BNF, genannt. Kommen noch weitere Verkürzungen zum Einsatz, spricht man von einer erweiterten BNF, kurz: EBNF. Für die Syntaxdefinition von Programmiersprachen werden auch gern Syntaxgraphen (Syntaxdiagramme) benutzt. Syntaxgraphen für obige Grammatik G1: GZahl
Ziffer
GZ
0 1
GZ
…
Zahl
9 Zahl
GZ
Ziffer
2 4
Ziffer
B
Zahl
6 8
5.1.4 Zeichen, Alphabet, Verkettung, Zeichenkette Die Operation Verkettung legt fest, wie einzelne Zeichen zu einer Zeichenkette verbunden werden. Die Zeichen stammen aus einem Alphabet. Ein Alphabet ist eine beliebige endliche nichtleere Menge, deren Elemente Zeichen oder Symbole genannt werden.
B
B
Terminale werden als Kreise bzw. Ovale, Nichtterminale wer den als Rechtecke dargestellt.
443
444
Theoretische Informatik
Die folgenden Mengen A1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, A2 = {, ♣, }, A3 = { sin, cos, tan, cot, int, sqrt } sind Alphabete, wobei insbesondere die Elemente in A3 als (atomare) Symbole, die nicht etwa aus mehreren Buchstabensymbolen zusammengesetzt wurden, anzusehen sind. B1 = {0, 1, 1, 2} und B2 = { } = Ø sind keine Alphabete, da B1 gegen die Mengendefinition verstößt und B2 gegen die Alphabetdefinition, wonach die Grundmenge mindestens ein Zeichen enthalten muss. Das Symbol für den Verkettungsoperator ist ○, sprich: Kringel. Ähnlich, wie der Punkt für den Multiplikationsoperator in der Mathematik, wird ○ manchmal weggelassen. Es entstehen Zeichenketten. 1 ○ 3 = “13“, 8 ○ 2 = “82“, ○ ♣ = “♣“, sqrt ○ cot = “sqrtcot“ Die Verkettung ○, oder Konkatenation von z1 und z2, kurz: z1 ○ z2 = k, ist eine zweistellige Operation für Zeichen aus einem Alphabet A, wobei k = z1z2 durch Hintereinanderschreiben von z1 und z2 entsteht. k ist eine Zeichenkette, die zum besseren Erkennen in Hochkommata eingeschlossen wird. Selbstverständlich gilt k ∉ A. Um ganze Sätze bilden zu können, muss die Verkettung für Zeichen auf die Verkettung von Zeichenketten verallgemeinert werden. Die Verkettung ○, mit k1 ○ k2 = k, ist eine zweistellige Operation für Zeichenketten über einem Alphabet A, wobei k = k1k2 durch Hintereinanderschreiben von k1 und k2 entsteht. Das Ergebnis k ist eine Zeichenkette. Verkettung von Zeichenketten: “hallo“ ○ “otto“ = “hallootto“ “hallo“ ○ “ otto“ = “hallo otto“ “hallo“ ○ “ “ ○ “otto“ = “hallo otto“ “hallo“ ○ ““ ○ “otto“ = “hallootto“ Im Beispiel kommt die leere Zeichenkette ““ vor. Sie wird auch das leere Wort genannt und mit ε bezeichnet. Dies geschieht analog zur leeren Menge { }, für die im Allgemeinen Ø geschrieben wird.
⎫ ⎪ ⎪ ⎪ ⎬ ⎪ ⎪ ⎪ ⎭
Sei k eine Zeichenkette. Dann gilt: 1. k ○ ε = ε ○ k = k, 2. k ○ k ○ k ○ … ○ k = kn, n ≥ 0 n-mal 3. k0 = ε kn = k ○ kn – 1 = kn – 1 ○ k, n > 0
Formale Sprachen und Automaten
Die rekursive Definition von kn unter 3. in obiger Definition enthält die Gleichheit k ○ kn – 1 = kn – 1 ○ k. Dies gilt natürlich nur für ein und dieselbe Zeichenkette k.
Falsch wäre k1 ○ k2 = k2 ○ k1, denn ○ ist nicht kommutativ.
5.1.5 Länge einer Zeichenkette, Wort und Wortmenge Unter der Länge einer Zeichenkette k versteht man die Anzahl aller Zeichen von k. Dabei wird jedes Vorkommen eines bestimmten Alphabetzeichens in der betrachteten Zeichenkette extra gezählt. “abba“ und “haus“ haben beide die Länge 4. Die Länge einer Zeichenkette k = z1z2z3 … zp, kurz: |k| = p, ist gleich der Anzahl der Zeichen, die k enthält. Es ist nicht gefordert, dass die vorkommenden Zeichen paarweise verschieden sind. Für k = ε gilt |k| = 0.
Satz: Seien k1 und k2 , mit |k1| = n und |k2| = m, Zeichenketten. Dann gilt |k1 ○ k2| = n + m. Beweis: k1 = x1x2 … xn, k2 = y1y2 … ym k1 ○ k2 = x1x2 … xn y1y2 … ym = z1z2 … znzn + 1zn + 2 … zn + m |k1k2| = n + m Zeichenketten, die über einem Alphabet A gebildet werden, nennt man Wörter über A. Durch Verkettung können unendlich viele Wörter über einem gegebe nen Alphabet erzeugt werden. Dies gilt auch dann, wenn das Alphabet aus nur einem einzigen Zeichen besteht. Sei A = {a, b} ein Alphabet. Dann gehören sämtliche Wörter – der Länge 0, nämlich ε, – der Länge 1, nämlich “a“, “b“, – der Länge 2, nämlich “aa“, “ab“, “ba“, “bb“, – usw. in die Menge der Wörter über A, kurz: Wortmenge über A. Offensichtlich können über A rn verschiedene Wörter der Länge n erzeugt werden, wenn das Alphabet A genau r Elemente besitzt. Die Menge aller Wörter über einem Alphabet heißt Wortmenge A*, ∞
Σ
mit A* = A0 ∪ A1 ∪ A2 ∪ … ∪ Ai ∪ … = Ai i=0
A* ist stets eine unendliche Menge. Die angegebene Zerlegung von A* in Teilmengen Ai lässt erahnen, wie man sämtliche Wörter aus A* längenlexikogra phisch anordnen kann. Auf diese Weise kann man die Elemente aus A* durchnummerieren. Mengen, bei denen das gelingt, heißen abzählbar unendlich.
445
446
Theoretische Informatik
Die Definition verwendet Ai für die Menge aller Wörter über A, deren Länge gleich i ist. Ai bedeutet also, dass i-mal je ein beliebiges Element aus A genommen und an die jeweils aktuelle Zeichenkette angehangen wird. Das gleiche Resultat ergibt sich für i > 0 durch Ai – 1 ○ A. Es macht offenbar Sinn, die Verkettungsoperation auf Mengen anzuwenden. Für zwei Mengen M1 und M2 gilt M1 ○ M2 = {w1w2 | w1 ∈ M1 und w2 ∈ M2}. Seien M1 = {“ab“, “cd“, “a“} und M2 = {ε, “x“, “xy“}, so ist M1 ○ M2 = {“ab“, “cd“, “a“, “abx“, “cdx“, “ax“, “abxy“, “cdxy“, “axy“}.
⎫ ⎪ ⎪ ⎪ ⎬ ⎪ ⎪ ⎪ ⎭
Die Analogie zum kartesischen Produkt zweier Mengen ist offensichtlich. Ferner gelten M ○ Ø = Ø ○ M = Ø und M ○ {ε} = {ε} ○ M = M für beliebige Mengen M. Ist eine der beiden Mengen leer, so ergibt sich die leere Menge. Enthält eine der Mengen nur das leere Wort, so ergibt sich die andere Menge. Mit Mk wird die Verkettung M ○ M ○ … ○ M bezeichnet. k-mal M Für die Wortmenge A* über einem Alphabet A kann kein begrenzendes k angegeben werden, denn die erzeugbaren Wörter können beliebig lang sein. Hierfür wurde der oben schon verwendete Stern-Operator eingeführt.
I Kleene-Stern (sprich: Klini-stern) nach Stephen Cole Kleene (1909 – 1994)
Der Kleene-Stern ist eine einstellige Operation für Mengen M, mit M* = M0 ∪ M1 ∪ M2 ∪ … Aus der Definition ist unmittelbar erkennbar, dass 1. das leere Wort zu M* gehört und 2. M* eine unendliche Menge ist. Da die Verkettung weiter oben sowohl für Zeichen als auch für Zeichenketten definiert wurde, spielt es keine Rolle, ob M ein Alphabet oder eine Menge von Wörtern ist. Auf der Basis der eingeführten Grundbegriffe kann nun der Begriff „formale Sprache“ definiert werden.
5.1.6 Formale Sprache A* Ls
L7 L6
Eine formale Sprache L über einem Alphabet A ist eine beliebige Teilmenge der Wortmenge A*. Die Elemente von L heißen Sätze (im Compilerbau) bzw. Wörter (in der Theorie der formalen Sprachen). Es ist sofort klar, dass L1 = Ø (leere Sprache) und L2 = A* (Allsprache) zulässige Sprachen über A sind. Beide erweisen sich jedoch als praktisch weitgehend uninteressant, denn wozu braucht man eine Sprache, die keinen einzigen Satz enthält, oder eine, die hinsichtlich der Satzbildung keinerlei Regeln vorgibt?
Formale Sprachen und Automaten
Formale Grammatiken G sorgen dafür, dass die von ihnen erzeugbaren Sprachen L(G) im Allgemeinen gerade „zwischen“ Ø und A* liegen, d. h., Ø ⊆ L(G) ⊆ A*. ∗ Die von einer Grammatik G erzeugbare Sprache ist L(G) = {w | s w}, ⇒ d. h., jedes Wort w, das aus dem Spitzensymbol s über beliebig viele Schritte abgeleitet werden kann, gehört zu dieser Sprache. Die Länge der Ableitung spielt keine Rolle. Die auf Seite 445 angegebene Grammatik G1 beschreibt die Menge / Sprache der geraden Zahlen. T ergibt sich direkt aus A. Beispielsweise gehört die Zahl, genauer: das Zahlwort, “38“ zu L(G1), denn s = GZAHL ⇒ ZAHL GZ ⇒ ZIFFER GZ ⇒ 3GZ ⇒ “38“. Wenn es sich um Grammatiken handelt, deren Regeln auf der linken Seite aus genau einem Nichtterminal bestehen, spielt es keine Rolle, in welcher Reihenfolge die Nichtterminale in den Satzformen der Ableitung ersetzt werden. Sogar simultane Ersetzungen sind denkbar. Üblicherweise werden Linksableitungen verwendet, d. h., das am weites ten links stehende Nichtterminal wird zuerst ersetzt. Trotz dieser Verabredung kann es vorkommen, dass mehrere (echt) verschiedene Ableitungen für ein und dasselbe Wort aus L(G) existieren. Solche Grammatiken und die dazugehörigen Sprachen sind mehrdeutig. Die Grammatik G2 = ({S, A, B}, {a, b, c}, {S → aB | Ab, A → ac, B → cb}, S) ist mehrdeutig, denn das Wort “acb“ lässt sich auf verschiedene Weise aus S linksableiten:
S ⇒ AB ⇒ acb 1
S ⇒ Ab ⇒ acb
4
3
2
S
S a
B c
A b
a
b c
Es entstehen unterschiedliche Ableitungsbäume. Mehrdeutige Grammatiken sind höchst unerwünscht. Sie erschweren die Prozesse, die bei der Übersetzung von Programmiersprachen stattfinden, erheblich und können zu Fehlern führen. Leider kann i. Allg. weder das Aufspüren der Mehrdeutigkeit für Grammatiken noch deren Umformung in eindeutige Grammatiken, die die gleiche Sprache beschreiben, automatisch erledigt werden. Dies bleibt im Wesentlichen „Handarbeit“.
5.1.7 Chomsky-Hierarchie Formale Grammatiken und die damit verbundenen Sprachen werden klassifiziert. Klassifizierungsmerkmal ist die Regelgestalt.
447
Die Fälle L(G) = Ø und L(G) = A* sind praktisch bedeutungslos
448
Theoretische Informatik
Eine formale Grammatik G = (N, T, P, s) heißt
I Hinweis zu formalen Grammatiken des Typs 3: Ebenso ist X → γ oder X → Yγ für alle Regeln möglich. Die Formen X → γY und X → Yγ dürfen jedoch nicht vermischt werden.
I
– vom Typ 0 oder unbeschränkt, wenn für jede Regel α → β gilt: α ∈ (N ∪ T )*\ T* und β ∈(N ∪ T )*. – vom Typ 1 oder kontextsensitiv, wenn gegenüber Typ 0 für jede Regel übereinstimmend gilt, dass die Länge von α nicht größer ist als die von β, d. h., | α | ≤ | β | (Längenmonotonie). s → ε ist zulässig, wenn s auf keiner rechten Regelseite steht. – vom Typ 2 oder kontextfrei, wenn gegenüber Typ 1 für jede Regel einschränkend gilt, dass alle linken Regelseiten genau aus einem Nichtterminal bestehen, d. h., X → β, X ∈ N. X → ε ist zulässig. – vom Typ 3 oder regulär, wenn gegenüber Typ 2 für jede Regel einschränkend X → γ oder X → γY gilt, wobei γ ∈ T*, X,Y ∈ N. Die von den Grammatiktypen erzeugbaren Sprachen heißen dementsprechend.
Die durch Grammatiken vom Typ i erzeugbaren Sprachklassen +i (Menge +3 +2 +1 +0 von Sprachen des Typs i ) bilden eine Hierachie, d. h., sie stehen in nebenstehend skizzierter Beziehung: +0 Neben den Grammatiken gibt es für jede Sprachklasse ein spezielles +1 Automatenmodell und individuelle Beschreibungstechniken. Damit ge+2 lingt es, konkrete Sprachen, die im + 3 Allgemeinen unendliche Mengen sind, zu definieren. Dies ist nicht zu verwechseln mit der im Folgenden genannten viel allgemeineren Fragestellung für Sprachklassen: Das Wortproblem stellt die Frage nach der Entscheidbarkeit von „w ∈ L(G)?“, wenn w ein beliebiges Wort aus A* und G eine beliebige Grammatik des betrachteten Typs sind. Eine Frage oder ein Problem heißt entscheidbar, wenn es entweder mit ja (wahr/true) oder mit nein (falsch/false) beantwortet wird. Manche Problemstellungen müssen erst in eine entsprechende Entscheidungsform gebracht werden. Satz: Das Wortproblem ist für Typ-1- und damit auch für Typ-2- und Typ-3-Sprachen entscheidbar, jedoch nicht für Typ-0-Sprachen. Beweis: w = z1z2z3 … zn sei ein beliebiges zu untersuchendes Wort aus A*. Ein allgemeines Prüfverfahren für „w ∈ L(G)?“ arbeitet für G ohne ε-Regeln folgendermaßen: Vom Spitzensymbol s ausgehend werden durch Anwendung sämtlicher passender Regeln alle möglichen Satzformen gebildet (Simultanableitung). Mit den so gebildeten Satzformen fährt man ebenso fort,
Formale Sprachen und Automaten
bis deren Längen mit der von w übereinstimmen. Es gibt nur endlich viele Satzformen in (N ∪ T )n. Darunter befinden sich endlich viele Zeichenketten, die ausschließlich aus Terminalen bestehen. Kommt w darunter vor, gilt w ∈ L(G) ansonsten gilt w ∉ L(G). Das beschriebene Verfahren kann auf Typ-0-Grammatiken, wegen fehlender Längenmonotonie, im Allgemeinen nicht angewandt werden. Es ist nämlich möglich, dass das betrachtete Wort aus einer Satzform, die länger ist als w, ableitbar ist. Eine Begrenzung des „Suchraumes“ ist daher unmöglich. Das allgemeine Verfahren zur Entscheidung von „w ∈ L(G)?“ ist sehr aufwendig und zeitraubend. Für praktische Anwendungen ist es unbrauchbar. Im Gebiet „Compilerbau“ werden daher wesentlich effizientere Entscheidungsverfahren eingesetzt.
5.1.8 Reguläre Ausdrücke Typ-3-Sprachen können außerdem durch reguläre Ausdrücke beschrieben werden. (Auf Hochkommata wird im Folgenden verzichtet.) Reguläre Sprachen finden beispielsweise Anwendung bei – Variablennamen (Bezeichner) in vielen Programmiersprachen: Ein Be zeichner (identifier) ist eine beliebige Zeichenkette über einem bestimmten Alphabet, die mit einem Buchstaben beginnen muss. – Zahlen als Folge von Ziffern, z. B. 8364, (Problem: Unterdrückung von Vornullen). Komplexere Anwendungen regulärer Ausdrücke finden sich in Texteditoren. Dabei werden Muster, wie a*(b+c)d+ , nach denen man den Text durchsucht, vorgegeben. Jeder reguläre Ausdruck α definiert eine reguläre Sprache L(α). Man nennt sie auch reguläre Menge. Reguläre Ausdrücke sind wie folgend induktiv definiert: 1. Ø ist ein regulärer Ausdruck, und es gilt L(Ø) = Ø . 2. ε ist ein regulärer Ausdruck und es gilt L(ε) = {ε} . 3. Für jedes Alphabetzeichen a ∈ A, A … Alphabet, ist a ein regulärer Ausdruck, und es gilt L(a) = {a}. 4. Sind α und β reguläre Ausdrücke, so auch (α + β), und es gilt L(α + β) = L(α) ∪ L(β) (α · β), und es gilt L(αβ) = L(α) ○ L(β) (α*), und es gilt L(α*) = L(α)* ← Kleene–Stern. Nur die nach 1. bis 4. definierten Ausdrücke sind reguläre Ausdrücke.
Beispiele für reguläre Ausdrücke 1. α := (a + (b c)) L(α) = L(a) ∪ L(b c) = L(a) ∪ L(b) ○ L(c)
Der Norton Commander unter DOS verwendet folgende Muster, um bestimmte Dateinamen zu finden: test?.doc, *.bat, [abc]*.*, [a-e]*.* [^adt]*.*
449
450
Theoretische Informatik
= {a} ∪ {b} ○ {c} = {a} ∪ {bc} = {a, bc} 2. β := ((a + b)c) L(β) = {ac, bc} 3. γ := ((a*)b) L(γ) = {b, ab, a2b, a3b, … } Um die Ausdrücke lesbar zu halten, wird folgende Klammersparregel eingeführt: Im Ausdruck (α op1 β ) op2 γ dürfen die runden Klammern nicht entfallen, wenn die Priorität von op2 größer ist als die von op1. Die Reihenfolge der Operatoren mit aufsteigender Priorität lautet: +, · , *. Dies erinnert an das Zahlenrechnen mit + (Addition), · (Multiplikation) und n (Potenzieren), aber nicht alle Eigenschaften sind übertragbar. Es kann gezeigt werden, dass die Menge der mit regulären Ausdrücken beschreibbaren Sprachen mit der Sprachklasse übereinstimmt, die mit Typ-3-Grammatiken definiert werden.
I
5.1.9 Endliche Automaten Endliche Automaten, kurz: EA, sind eine alternative und äquivalente Beschreibungstechnik für reguläre Sprachen. Obwohl der Begriff an eine reale Maschine denken lässt, handelt es sich um ideelle Objekte, die ein bestimmtes Berechnungsmodell darstellen. Ein endlicher Automat (EA) ist ein Quintupel M = (Q, Σ, δ, q0, E ), mit Q … Σ … δ … q0 … E …
endliche Menge der Zustände; Eingabealphabet, Q ∩ Σ = Ø ; Überführungsfunktion (totale Funktion!), Q × Σ → Q; Startzustand, q0 ∈ Q; und endliche Menge der Endzustände.
Ein EA besteht aus einem Band, welches wiederum aus aufeinanderfolgenden Feldern besteht. Das zu analysierende Eingabewort wird zeichenweise auf das Band geschrieben, wodurch eine endliche zusammenhängende Folge von Bandfeldern gefüllt wird. Ein zum Automaten gehörender Lesekopf steht auf dem Feld, das das erste Zeichen des Eingabewortes enthält. Jeder EA beginnt seine Arbeit im Anfangszustand q0. In jedem Schritt oder Arbeitstakt erfolgt ein Zustandswechsel und der Lesekopf des Automaten wird um genau ein Feld (auf dem Band) nach rechts bewegt. Die Überführungsfunktion δ gibt an, welchen Folgezustand der Automat am Ende eines jeden Arbeitstakts einnimmt. Da δ eine totale Funktion ist, muss δ(qi, a) für alle qi ∈ Q und a ∈ Σ existieren. Eine zugehörige Tabelle ist also stets vollständig ausgefüllt.
Formale Sprachen und Automaten
δ
a0
a1
…
q0 q1 : qm
… … : …
qr
…
an qi
am
qj
…
Für δ gibt es eine sehr anschauliche grafische Darstellung. Falls qj – wie im Beispiel – ein Endzustand ist, wird dies durch doppelte Umrandung (zwei konzentrische Kreise) hervorgehoben. Das Akzeptanzverhalten des Automaten lässt sich so beschreiben: Ein EA stoppt, wenn das Eingabewort vollständig abgetastet wurde und verharrt in einem Zustand qk. Falls qk ein Endzustand ist, wird das Eingabewort von diesem EA akzeptiert, ansonsten wird es abgewiesen. a*b + ab* a, b b
q0
q1
q5
E q0 q1 q2 q3 q4 q5 q6
a
b a
a, b
q6
b a
q2
a, b
q3
b
q4
a
a q2 q5 q3 q3 q5 q5 q5
b q1 q5 q6 q4 q5 q5 q6
Die vollständige Definition des EA ist M1 = ({q0, q1, q2, q3, q4, q5, q6}, {a, b}, E, q0, {q1, q2, q4, q6}). Der Zustand q5 wirkt wie eine Falle: Wird dieser Zustand vom Automaten erst einmal eingenommen, gibt es keinen Weg mehr hinaus. Da er selbst kein Endzustand ist, endet die Analyse mit negativem Resultat. Die Analyse eines Eingabewortes, wie etwa Zustand Restwort “aaaab“, kann durch eine Folge von Konfigurationen [qi , r ] £ [q ,r ] £ [q ,r ] … i k i k k 1
1
2
2
3
3
protokolliert werden. Eine Konfiguration ent spricht einem „Schnappschuss“, einer Momentaufnahme der Arbeit des Automaten, und umfasst den aktuellen Zustand qi zusam men mit dem aktuellen Restwort rk.
q0 q2 q3 q3 q3 q4
aaaab aaab aab ab b ε
Die Abarbeitung endet in q4. Da q4 ein Endzustand ist, wird das Wort “aaaab“ vom Automaten akzeptiert und gehört somit zu der Sprache, die der Automat beschreibt. Allgemein gilt für die von einem EA M akzeptierte (erkannte, beschriebene, definierte) Sprache L(M): L(M) = {w|w ∈ Σ* und [q0, w] £* [qe , ε ] und qe ∈ E }. Das Symbol £* bedeutet „Konfigurationsfolge beliebiger Länge“.
£ heißt „führt zu“.
451
452
Theoretische Informatik
Dies wird auch gern unter Verwendung der erweiterten Überführungs funktion ^ geschrieben: δ (q , w) = q und q ∈ E }. L(M) = {w | w ∈ Σ* und ^ δ 0 e e ^ wird rekursiv definiert: δ ^ (q, ε ) = q δ ^ (q, aw) = ^ (δ (q, a), w) δ δ
5.1.10 Nichtdeterministische endliche Automaten Weiter oben wurde behauptet, dass Chomsky-Typ-3-Grammatiken und EA äquivalente Beschreibungsmittel für reguläre Sprachen sind. Satz: Zu jeder Typ-3-Grammatik G gibt es einen äquivalenten EA M und umgekehrt. Dies zu beweisen, bedeutet zwei Teile zu behandeln, nämlich 1. Konstruiere aus G einen äquivalenten EA M (Teil 1) und 2. Konstruiere aus M eine äquivalente Typ-3-Grammatik G (Teil 2). Der Beweis ist konstruktiv. Teil 2 – gegeben ist M, gesucht ist G, mit L(G) = L(M) – ist nicht schwer: Aus δ(qi, a) = qj ergibt sich die Regel qi → aqj, wobei qi , qj ∈ N und a ∈ T. Falls qj ein Endzustand ist, kommt zusätzlich qi → a hinzu. Auf diese Weise wird schließlich eine zugehörige äquivalente Grammatik aufgebaut. In Teil 1 des Beweises, ist ein äquivalenter endlicher Automat aus einer gegebenen regulären Grammatik zu konstruieren. Dies ist problematisch, wie folgender Auszug aus irgendeiner regulären Grammatik zeigt. q2 → aq1 | aq3 | … a Aufgrund der Definition eines EA, wäre q2 a
q1 q3
unzulässig.
Wie können mehrere Regeln für q2 mit einem einzigen Argument-WertPaar in der Überführungsfunktion ausgedrückt werden? Ein kleiner Trick ist erforderlich: Alle δ … a … möglichen Folgezustände werden zu einer Menge zusammengefasst. Dann ist obige Darstellung durchaus beq2 … {q1, q3} … rechtigt, denn der Funktionswert ist in diesem Beispiel δ(q2, a) = {q1, q3}. Im Tabellenkörper stehen also Mengen, genauer: Teilmengen von Q. Die Menge aller dieser Teilmengen von Q ist die Potenzmenge P(Q) von Q. Sie besitzt 2|Q| Elemente, denn Q ist endlich. Diese Modifikation des endlichen Automaten erfordert eine begriffliche Unterscheidung von der Basisform, die nachträglich deterministischer endlicher Automat, kurz: EA oder DEA, genannt wird. Der in diesem Ab schnitt entwickelte Automat heißt nichtdeterministischer endlicher Au tomat, kurz: NEA.
Formale Sprachen und Automaten
Ein nichtdeterministischer endlicher Automat (NEA) wird durch ein Quintupel M = (Q, S, δ, q0, E ) definiert, wobei bis auf δ die Bedeutungen der Symbole aus der Definition des (D)EA übernommen werden. Die Überführungsfunktion eines NEA ist wie folgt definiert: δ : Q × Σ → P(Q). δ ist eine totale Funktion.
I
Da Ø ∈ P(Q) für jede beliebige Menge Q gilt, kann es auch δ(q, a) = Ø eben. Dies wird als verbotener Übergang interpretiert. Der damit verg bundene Crash bedeutet Misserfolg des betrachteten Automaten bei dessen Analysetätigkeit. Wie arbeitet ein NEA? Falls es in einem Zustand, wie oben in q2, mit ein und demselben Zeichen a des Eingabealphabets Σ mehr als einen Folgezustand gibt, z. B. q1, q3, so wird der Automat entsprechend oft kopiert (geklont). Jeder, der so entstandenen „ununterscheidbaren Zwillingsautomaten“ wird in je ei nem der beiden Folgezustände mit dem aktuellen Band gestartet. Die Arbeit der Zwillingsautomaten erfolgt zeitlich parallel. Sobald einer von ihnen einen Erfolg signalisiert, wird die Arbeit der anderen eingestellt. Das Eingabewort gilt als akzeptiert. Anderenfalls müssen sie solange arbeiten, bis schließlich jeder von ihnen stoppt und einen Misserfolg gemeldet hat. Erst dann kann man sagen, dass das Eingabewort nicht zu der durch den Automaten festgelegten Sprache gehört. Formal ausgedrückt bedeutet das: ^ (q , w) ∩ E ≠ Ø} L(M) = {w ∈ Σ* | δ 0 Unter Verwendung von NEA können reguläre Sprachen im Allgemeinen kompakter definiert werden als mit DEA. Zum direkten Vergleich mit dem weiter oben angegebenen DEA wird im nächsten Beispiel ein NEA für a*b + a b* definiert. a q0 b
a a
b
q1 q4
q2
b
q3
Anstelle zu zeigen, dass es zu jeder regulären Grammatik einen äquivalenten DEA gibt, entstand ein NEA, der zur Beschreibung von Sprachen offenbar gute Dienste leistet, die eigentliche Beweisaufgabe ist damit jedoch nicht gelöst. Es bleibt zu zeigen, dass zu jedem NEA ein äquivalenter DEA konstruiert werden kann. Dies bedeutet dann außerdem, dass die Leistungsfähigkeit von DEA und NEA bei der Beschreibung regulärer Sprachen übereinstimmt.
453
454
Theoretische Informatik
Die Beweisidee liegt darin, den oben angewandten Trick rückgängig zu machen, indem jeder Menge aus P(Q) ein Zustand zi zugeordnet wird. Dann kann die Überführungsfunktion δ’ des gesuchten DEA aus δ des betrachteten NEA M = (Q, Σ , δ , q0, E ) nach der Vorschrift
δ’(zi, a) = ∪ δ(q, a) q∈z i
konstruiert werden. Die anderen Bestandteile des DEA M‘ = (Q’, Σ’, δ’, z’0, E’) ergeben sich aus Q’ = P(Q) z’0 = {q0} E’ = {zi ∈ Q’ | zi ⊆ Q und zi ∩ E ≠ Ø}. Konstruktion eines äquivalenten DEA aus einem NEA δ in Tabellenform
0,1
0
q0
q1
0
q2
δ
0
1
q0 q1 q2
{q0, q1} {q2} Ø
{q0) Ø Ø
⎫ ⎬ ⎭
⎫ ⎪ ⎬ ⎪ ⎭
z2
z3
z4
z5
z6
z. B. δ‘(z3, 0) = δ‘ ({q0, q1}, 0) = δ(q0, 0) ∪ δ(q1, 0) = {q0, q1} ∪ {q2} = {q0, q1, q2} = z6 1 Das Ergebnis lautet: 0 z3 z0 1 δ‘ 0 1 z0 z3 z1 z6 z2 z6
z0 z0 z0
0
{
⎫ ⎬ ⎭
z1
{
z0
⎫ ⎬ ⎭
{
{
P(Q) = {{q0}, {q1}, {q2}, {q0, q1}, {q0, q2}, {q1, q2}, {q0, q1, q2}, Ø} z7
z6
1
Q‘ = {z0, z1, z2, z3, z4, z5, z6, z7} z‘ = z0, denn q0 ist der Anfangszustand von M. E‘ = {z6}, denn q2 kommt nur in z2, z4 und z6 vor.
Offensichtlich gilt w ∈ L(M) genau dann, wenn w ∈ L(M‘). Außerdem wäre die Angabe einer zugehörigen Grammatik, deren Regelmenge P = {z0 → 0z3 | 1z0 z3 → 0z6 | 1z0 z6 → 0z6 | 1z0} ist unter Verwendung des weiter oben behandelten Verfahrens unmittelbar möglich. DEA: deterministischer endlicher Automat NEA: nichtdeterministischer endlicher Automat
Zusammenfassung: Reguläre Ausdrücke, Typ-3-Grammatiken, DEA und NEA sind äquivalente Beschreibungsmittel regulärer Sprachen.
NEA
DEA G3
Formale Sprachen und Automaten
5.1.11 Kellerautomaten und kontextfreie Sprachen Endliche Automaten definieren lediglich reguläre Sprachen. Um kontextfreie Sprachen beschreiben zu können, muss dieser Automatentyp erweitert werden. Welche Minimal-Erweiterungen nötig sind, sollen die folgenden Beispiele auszuloten helfen. Beispiel 1: Die Sprache der Palindrome über {a, b}. Palindrome sind Wörter, die mit ihrem jeweiligen Umkehrwort übereinstimmen, etwa abba und bbabb. Beispiel 2: Die Sprache L = {anbn | n ≥ 1}. Sie wird von der Grammatik G, mit G = ({S}, {a, b}, {S → ab | aSb}, S) beschrieben. Beispiel 3: Die Sprache der korrekt geklammerten arithmetischen Ausdrücke über dem Alphabet {a, ( , ), +, *}. Zur Analyse von Wörtern in diesen Beispielsprachen wird ein Zusatzspeicher benötigt, der zum „Merken“ des jeweils ersten Teils des Wortes (Beispiel 1) bzw. der eingelesenen a‘s (Beispiel 2) bzw. des Anfangsstückes eines Klammerausdrucks (Beispiel 3) dient. Ein einfaches „Mitzählen“ der eingelesenen Zeichen – etwa in Beispiel 1 – würde nicht ausreichen, denn auch deren Reihenfolge muss beachtet werden. Die Beispiele lassen erkennen, dass die beschriebene „Merkfunktion“ am besten durch einen Stapel- oder Kellerspeicher (engl.: stack) wahrgenommen wird. Die Arbeitsweise eines Stapels folgt der anschaulichen Vorstellung, wonach neue Elemente immer oben auf den Stapel gelegt (Operation „push“) und angeforderte Elemente stets von oben her entnommen (Operation „pop“) werden. Das aktuell oberste Stapelement wird „top of stack“ genannt. Zu beachten ist, dass pop das top of stack vom Stapel entfernt. Es wird also nicht nur eine Wertkopie benutzt, sondern das Element selbst, sodass der Stapel schrumpft. Ein „Vorziehen“ eines mitten auf dem Stapel liegenden Elements ist verboten. Ein nichtdeterministischer Kellerautomat ist definiert durch ein 7-Tupel M = (Z, Σ, Γ, δ, z0, k0, E ), mit Z Σ Γ δ z0 k 0 E
… endliche Menge der Zustände; … Eingabealphabet; … Kelleralphabet; … partielle Überführungsfunktion: Z × (Σ ∪ {ε}) × Γ → Pendlich (Z × Γ*); … Anfangszustand, z0 ∈ Z; … Kellervorbelegungszeichen, k0 ∈ Γ; … Menge der Endzustände.
455
456
Theoretische Informatik
Arbeitsweise: In jedem Arbeitstakt liest der Automat das top of stack A verbrauchend vom Stapel. Der aktuelle Zustand zi , das aktuelle Zeichen a auf dem Eingabeband und A bilden die Argumente der Überführungsfunktion δ. Falls δ für das spezielle Tripel (zi, a, A) definiert ist, bestimmt der Funktionswert δ(zi, a, A) ] (zj, s1s2s3 … sr ) den Folgezustand zj und das auf den Stapel zu schreibende Kellerwort s1s2s3 … sr, wobei die Speicherung mit sr, sr – 1 beginnt, sodass schließlich s1 das neue top of stack ist. Das zu speichernde Kellerwort darf leer sein. Wegen Z × (∑ ∪ {ε}) × Γ sind für δ Argumente der Gestalt (zi, ε, A) erlaubt. Dieser Spezialfall (ε an zweiter Stelle) bedeutet einen spontanen Übergang, also ein Arbeitstakt, bei dem der Lesekopf auf dem aktuellen Feld des Eingabebandes verharrt und dessen Inhalt unbeachtet lässt. Anderenfalls, d. h., wenn a ≠ ε , wird a gelesen und der Kopf rückt am Ende dieses Arbeitstaktes um genau ein Feld nach rechts. Eingabeband $
h
a
l
l
o
$
$
$
zi *
top of stack
(zi, a, *)
(zj, ***)
* #
# … Kellervorbelegungszeichen $ … Bandvorbelegungszeichen
Akzeptanzverhalten: Der Automat stoppt erfolgreich, wenn das Eingabewort vollständig abgetastet (gescannt) wurde und der dann aktuelle Zustand ein Endzustand ist. Der Kellerinhalt spielt keine Rolle. In diesem Falle wird gesagt, dass der Automat das Eingabewort akzeptiert hat.
b auch S. 453
b auch S. 450, 451
Die Menge aller Wörter, die von einem speziellen Kellerautomaten M akzeptiert werden, ist die von M akzeptierte Sprache L(M). (z L(M) = {w | w ∈ Σ* und ^ 0, w, k0) ∩ E ≠ Ø} δ Die Definition der erweiterten Überführungsfunktion erfolgt sinngemäß wie bei endlichen Automaten. L(M) kann auch unter Verwendung der Konfigurationenfolge definiert werden. L(M) = {w | w ∈ Σ* und [z0, w, k0] £* [ze, ε, α] und ze ∈ E, α ∈ Γ*} Bei der Definition des Konfigurationenübergangs kann man sich ebenfalls an der für endliche Automaten orientieren.
Formale Sprachen und Automaten
Eine undefinierte Stelle der Überführungsfunktion führt zum erfolglosen Abbruch (Crash) der Arbeit des geklonten Automaten. Es gibt also zwei Möglichkeiten für w ∉ L(M), nämlich Crash und ze ∉ E nach vollständigem Lesen des Eingabewortes. In allen Fällen stoppt der Automat. Nichtdeterminismus bei abstrakten Automaten wurde bereits für NEA erläutert. Dies gilt sinngemäß für nichtdeterministische Kellerautomaten. Der folgende nichtdeterministische Kellerautomat beschreibt die im Beispiel 2 auf S. 455 vorgestellte Sprache L(M) = {anbn | n ≥ N }. Der nichtdeterministische Kellerautomat M2 ist wie folgt definiert. M2 = ({z0, z1, z2}, {a, b}, {#, a}, E, z0, #, {z2}) (#, a): a#
(a, b): ε
(a, b): ε
z0
(#, ε): #
z1
z2
(a, a): aa top of stack
Eingabe
Kellerwort
Leider kann δ nicht als Tabelle dargestellt werden, so wie dies bei endlichen Automaten möglich war. Eine dritte Dimension wäre nötig, was die Übersichtlichkeit auf Papier negativ beeinträchtigen würde. Insofern ist die grafische Darstellung von δ klar zu bevorzugen. M2 akzeptiert beispielsweise das Wort aabb. Die folgende Tabelle zeigt die schrittweise Abarbeitung. Jede Zeile in der Tabelle charakterisiert eine Konfiguration. Die Folge der Konfigurationen beginnt stets mit [z0, w, #] und endet bei Akzeptanz von w mit [ze, ε, α], wobei ze ∈ E gilt und α irgendein Wort auf dem Keller ist. Der nichtdeterministische Kellerautomat im obigen Beispiel arbeitet quasi deterministisch. Die dort angegebene Überführungsfunktion δ gibt für jedes top-of-stack-Eingabe zeichen-Paar genau ein Folgezustand-Kellerwort-Paar an. Ein Klonen des betreffenden Automaten kann also nicht vorkommen.
Zustand
Eingabe(rest)wort
z0 z0 z0 z1 z1 z2
aabb abb bb b ε ε
top
↓ Keller # a# aa# a# # #
Man kann zeigen, dass die Klasse der kontextfreien Sprachen durch nichtdeterministische Kellerautomaten vollständig erfasst wird. Deterministische Kellerautomaten verfügen nicht über die „Reichweite“ nichtdeterministischer Kellerautomaten. Sie definieren die sogenannten deterministischen kontextfreien Sprachen, die eine echte Teilmenge der kontextfreien Sprachen bilden. Sie sind für die Praxis (Programmiersprachen, Compilerbau) die bedeutsamste Klasse und beinahe so mächtig wie kontextfreie Sprachen.
I
457
458
Theoretische Informatik
5.1.12 Turingmaschine Auch Kellerautomaten haben Grenzen. Sie sind nicht in der Lage, Typ-1und Typ-0-Sprachen zu definieren. L1 = {anbncn | n ≥ 1}. Obwohl L2 = {anbn | n ≥ 1} – wie oben vorgeführt – von einem Kellerautomat akzeptiert werden kann, ist dies für L1 nicht möglich, denn der „Merker“ n steht beim Einlesen der c‘s nicht mehr zur Verfügung.
B
Das später nach Alan Turing (1912 – 1954) benannte abstrakte Maschinenmodell beschreibt Typ-0-Sprachen. Das von Turing entwickelte Auto matenmodell entstand als Ergebnis der Suche nach einer abstrakten Beschreibung all dessen, was mit Computern berechenbar ist. Durch Ab straktion einer Handrechnung mit Kopf, Papier und Bleistift erhielt die Maschine (als Objekt unseres Geistes) folgende Gestalt: Handrechnung
Computerberechnung
Papier
unbeschränktes (potenziell unendliches) Band mit „Fächern“ für je ein Zeichen
„State of Mind“
endliche Menge von Zuständen eines abstraktes Automaten
Löschen und Ersetzen eines Zeichens auf Papier
Lese-Schreib-Kopf (wie bei Kassettenrecorder; Audio, Video)
$
$
h L
a
l
l
o
R zx read/write
$ Vorbelegung mit blanks, hier $
Eine Turingmaschine besitzt ein potenziell unendliches Band, dessen Felder ein bestimmtes Vorbelegungszeichen –h enthalten. In jedem Takt liest die Maschine den Inhalt des aktuellen Feldes, überschreibt den alten Feldinhalt durch ein in der Überführungsfunktion δ festgelegtes Zeichen aus dem Bandalphabet Γ und bewegt den Kopf entweder um genau ein Feld nach links (L) oder nach rechts (R). Anschließend nimmt der Automat einen neuen Zustand ein. Eine deterministische/nichtdeterministische Turingmaschine (DTM bzw. NTM) ist definiert durch ein 7-Tupel M = (Z, Σ, Γ, δ, z0, –h, E) mit Z … endliche Menge von Zuständen; Σ … Eingabealphabet; – } erlaubt ist; Γ … Bandalphabet, wobei Σ ⊆ Γ \ {h δ … partielle Funktion, mit DTM: (Z \ E) × Γ → Z × Γ × {L, R} bzw. NTM: (Z \ E) × Γ → P (Z × Γ × {L, R}); z0 … Anfangszustand, mit z0 ∈ Z; –h … Bandvorbelegungszeichen, wobei –h ∉ Σ, aber –h ∈ Γ ist erlaubt; E … endliche Menge von Endzuständen, E ⊆ Z.
Formale Sprachen und Automaten
Die Überführungsfunktion δ lässt sich – wie bei deterministischen/nichtdeterministischen endlichen Automaten – sowohl in Tabellenform als auch grafisch notieren. Ebenso wie DEA und NEA sind DTM und NTM bezüglich ihrer Beschreibungskraft gleichberechtigt. Es kann gezeigt werden, dass die Menge der von Turingmaschinen akzeptierten Sprachen genau die Menge der Typ-0-Sprachen ist. Dabei gilt für die von einer DTM M akzeptierte Sprache L(M) wiederum ^ (z , w) = z und z ∈ E }. L(M) = {w | w ∈ Σ* und δ 0 e e Achtung, dies bedeutet nicht, dass das Wortproblem für Typ-0-Sprachen lösbar sei. Es ist vielmehr so, dass eine Turingmaschine für eine beliebige Typ-0-Sprache die folgenden drei „Verhaltensformen“ zeigen kann: 1. Die Turingmaschine stoppt per Crash in einem Endzustand. Dann gilt w ∈ L(M). 2. Die Turingmaschine stoppt in einem Nichtendzustand infolge eines Crash, d. h., δ ist an dieser Stelle nicht definiert. Dann gilt w ∉ L(M). 3. Die Turingmaschine stoppt nicht. Dies ist der Fall bei unendlichem Links- bzw. Rechtslauf und bei unendlichen Zustandsschleifen (Endloszyklus). Dann wird die Frage „Gilt (entweder) w ∈ L(M) oder w ∉ L(M)?“ nicht entschieden.
b S. 448
Für die Klasse der Typ-1-Sprachen, die eine Teilmenge der Typ-0-Sprachen bilden, gilt, dass sie durch stets haltende Turingmaschine akzeptiert werden. Das heißt, es kann nur entweder Fall 1 oder 2 auftreten. Das Wortproblem ist für Typ-1-Sprachen lösbar. Der zugehörige Automa tentyp wird linear beschränkt genannt. Die einzige Einschränkung von linear beschränkten Automaten (LBA) gegenüber Turingmaschinen besteht darin, dass ein LBA den Bandbereich, auf dem zu Beginn der Bearbeitung das Eingabewort stand, nicht verlassen darf. Die von DTM und NTM akzeptierten Sprachen werden rekursiv aufzählbar genannt. Stets haltende Turingmaschinen beschreiben die Klasse der rekursiven Sprachen. Sie bilden eine echte Teilmenge der Typ-0- und enthalten die Typ-1-Sprachen. L = {anbncn | n ≥ 1} (b S. 458) Die Lösungsidee besteht darin, in je einer Aktion genau ein a und genau ein b zu „löschen“, indem es durch genau ein c bzw. d ersetzt wird. Danach werden die c‘s über die „d-Grenze“ paarweise gestrichen. Am Beispielwort aaabbbccc wird das Verfahren demonstriert und die zugehörige Überführungsfunktion angewendet bzw. entwickelt.
rekursiv aufzählbar: engl. – recursive enu merable
459
Theoretische Informatik
z0
ccd d ddccc z4 {
{
a aabbbccc (z0, a) → (z1, c, R)
c a abbbccc (z1, a) → (z1, a, R)
(z4, d) → (z4, d, R)
{
:
z1
c a adbbccc (z0, a) → (z1, c, R)
c c dddddcc
{
(z4, c) → (z5, d, L) (z5, d) → (z5, d, L) :
{
{
{
ccdddd c cc z4 ccddd d dcc z5
{
caa b bbccc (z1, b) → (z2, d, L) z1 ca a dbbccc (z2, a) → (z2, a, L) z2 c aadbbccc (z2, c) → (z0, c, R)
(z1, b) → (z2, d, L)
$ ddddddddd$ (z5, $) → (z6, $, R)
(z2, d) → (z0, d, L)
$ d dddddddd$ (z6, d) → (z6, d, R)
(z0, a) → (z1, c, R)
:
(z0, d) → (z3, d, L)
$dddddddd d (z6, $) → (z7, $, L) z7 z7 ist ein Endzustand
(z3, c) → (z4, d, R)
{
(z1, d) → (z1, d, R)
cd d ddddcc (z4, d) → (z4, d, R) z4 :
z5
{
(z1, a) → (z1, a, R)
z6
a:a, R a:c, R
z0
(z5, c) → (z4, d, R)
{
{
{
{
{
{
{
cc a dbbccc z0 cca d bbccc z1 ccad b bccc z1 cca d dbccc z2 cc a ddbccc z0 ccc d ddccc z0 cc c dddccc z3
z5
{
z0
{
{
z2
{
460
b:d, L
z1
z2
a:a, L d:d, L
d:d, R c:c, R d:d, L
d:d, R z3
c:d, R
z4
c:d, L
d:d, L z5
$:$, R
d:d, R z6
$:$, L
z7
c:d, R
Neben der Verwendung von Turingmaschinen als Akzeptor für Typ-0Sprachen spielt das Maschinenmodell (in der Berechenbarkeitstheorie)
Formale Sprachen und Automaten
eine wichtige Rolle bei der Abstraktion der Berechnung von Funktionen. Bei einer „Turingmaschine als Funktionsberechner“ gegenüber einer „Turingmaschine als Akzeptor“ wird der am Ende einer erfolgreichen Anwendung einer Turingmaschine auf ein Eingabewort vorhandene Bandinhalt als Ausgabe oder Resultatwert interpretiert. Dazu ist es sinnvoll zu verabreden, dass der Lese-Schreib-Kopf am Ende einer Berechnung auf dem ersten Zeichen des Bandwortes steht. Handelt es sich um eine mehrstellige Funktion, so sind die einzelnen Argumente durch genau ein Bandvorbelegungszeichen voneinander zu trennen. Analoges gilt für den Funktionswert vektorwertiger Funktionen. Die Nachfolgerfunktion ist für natürliche Zahlen wie folgt definiert. n + 1, wenn n ≥ 0 f(n) = n. d., sonst Für f(3) = 4 kann man sich das so vorstellen. $ $ * * * $ $ $ z0 $ $ * * * * $ $ z2 Eine vollständige Definition der Nachfolger-DTM MNf lautet MNf = ({z0, z1, z2}, {Ι }, {Ι, $}, δ, $, {z2}), mit
{
δ
Ι
$
z0 z1
(z0, Ι, R) (z1, Ι, L)
(z1, Ι, L) (z2, $, R)
Turingmaschinen, die für bestimmte Eingaben nicht stoppen, oder in ei nem Nichtendzustand enden, berechnen partielle Funktionen.
b Abschnitt 5.2, S. 462 ff.
461
462
Theoretische Informatik
5.2
Berechenbarkeitstheorie
5.2.1 Vager Algorithmusbegriff und Berechenbarkeit Die mächtigsten heute bekannten Werkzeuge zur Lösung von Problemen, die mit formalen Methoden beschrieben werden können, sind Algorithmen. Die Menge aller Formeln ist eine echte Teilmenge der Menge der Algorithmen.
Algorithmen Formeln
Unter Algorithmen werden üblicherweise Verfahren verstanden, die – ähnlich wie Kochrezepte oder (gute) Gebrauchsanweisungen – ohne kreatives Zutun des Ausführenden umgesetzt werden können. Es wird also gefordert, dass sie exakt und in gewisser Hinsicht allgemeingültig sind. Die Notation eines Algorithmus ist naturgemäß endlich. Dieses Aufschreiben kann ganz unterschiedlich ausfallen, ist im Allgemeinen für Computer „verständlich“ und wird als Programm bezeichnet. Die Ausführung eines Algorithmus entspricht dann der Abarbeitung eines Programms. Es gibt Programme, die nach endlicher Zeit stoppen, andere machen dies nicht. Folglich ist es sinnvoll, von abbrechenden und nicht-abbrechenden Algorithmen zu sprechen. Mit der gleichen Berechtigung kann gefordert werden, dass Algorithmen stets terminieren und ein Ergebnis produzieren. In der Literatur sind beide Angaben zu finden. Geläufig ist folgende Formulierung:
b auch Seite 30
Ein Algorithmus ist ein schrittweise ablaufendes Umformungsverfahren von Eingaben in Ausgabewerte, wobei für jeden Schritt die jeweils folgende Anweisung (ohne Nachdenken zu müssen) eindeutig bestimmt ist. Sind dann Verfahren, die eine Folgeanweisung aus einer vorgegebenen Palette zufällig bzw. nach einer bestimmten Vorschrift ermitteln oder zur Ausführungszeit erzeugen, keine Algorithmen? Diese wenigen Überlegungen machen bereits deutlich, dass es notwendig ist, den Algorithmusbegriff mathematisch exakt zu fassen, so wie dies weiter oben für den Sprachbegriff durch formale Grammatiken und abstrakte Automaten geschah. Schließlich besteht das Ziel darin, die Menge aller mit Algorithmen lösbarer Probleme angeben zu können. Der Berechenbarkeitsbegriff kann unmittelbar aus dem Algorithmusbegriff gewonnen werden. Eine Funktion f, mit f : X → Y, wobei y = f (x), für x ∈ X und y ∈ Y, falls f (x) existiert, ist berechenbar, wenn es einen Algorithmus Af gibt, der die Abbildung f realisiert.
Berechenbarkeitstheorie
Die Quadratfunktion für natürliche Zahlen ist berechenbar, denn es gibt einen Algorithmus, der für eine eingegebene natürliche Zahl n ihr Quadrat, nämlich n · n berechnet. Die natürlichzahlige Quadratwurzelfunktion q, mit
{
√ } n , wenn n Quadratzahl q(n) = n. d., sonst ist berechenbar, denn es kann beispielsweise ein PASCAL-Programm dafür angegeben werden. function q (n: integer): integer; var resultat: real; ganzzahlresultat: integer; begin resultat := sqrt(n); ganzzahlresultat := floor(resultat); if resultat = ganzzahlresultat then q := ganzzahlresultat else while true do; end; n keine ganze Zahl liefert, wird ein EndlosFalls das Ergebnis von √} zyklus ausgeführt. In diesem Fall gibt das Programm kein Resultat zurück, denn es hält nicht an. Der Algorithmus berechnet also die oben definierte partielle Funktion q. Die Programmzeile else q := 'n.d.' wäre grundsätzlich falsch und würde – vom falschen Datentyp abgesehen – zur Berechnung einer ganz anderen und totalen Funktion beitragen.
Auch die überall undefinierte Funktion u, mit u : x → n. d., ist berechenbar. function u (x: integer): integer; begin while true do u := 0 end;
5.2.2 Algorithmische Unlösbarkeit Ein wie auf S. 28 oder S. 462 gegebener Algorithmusbegriff ist vage und für die Beschreibung der Menge der berechenbaren Funktionen unbrauchbar. Die entscheidende Frage wird sein, ob es überhaupt Probleme gibt, die mit algorithmischen Mitteln unlösbar sind. Was ist ein Problem? Welchen Zusammenhang gibt es zwischen Problemen und Algorithmen? Fragestellungen, wie • Ist 332 748 721 eine Primzahl? • Ist 1 437 573 143 eine Primzahl? • Ist 8 343 eine Primzahl? haben eine gemeinsame Struktur, nämlich „Ist die natürliche Zahl x eine Primzahl?“
463
464
Theoretische Informatik
Letzteres nennt man ein Problem und die obigen Fragen sind Instanzen dieses Problems. In diesem Beispiel handelt es sich um ein Entscheidungsproblem, das mit folgender Funktion beschrieben werden kann. f : x → {wahr, falsch} Es ist offensichtlich, wie man zu einem Problem die zugehörige Funktion findet. Die allgemeinsten Funktionen, die hier betrachtet werden, sind n-stellige Wortfunktionen, also Funktionen der Art A* × A* × … × A* → A*. n-mal
B
I
B
Noch in den 30er Jahren des 20. Jahrhunderts stellte der in Königsberg (1886 – 1893) und Göttingen (1930) als Mathematikerprofessor tätige David Hilbert (1862 – 1943) eine Liste von 10 (komplizierten) Problemen vor, von deren Lösbarkeit er überzeugt war. Tatsächlich gelang dies auch für einige. Im Allgemeinen ist Hilberts Vermutung, wonach jedes mathematisch formulierte Problem (irgendwann) lösbar sei, falsch.
Darüberhinaus ist es möglich, ein gegebenes Problem so umzuformulieren, dass es ein Entscheidungsproblem darstellt. Um es gleich vorwegzunehmen: Es gibt in der Tat algorithmisch unlösbare Probleme. Dies ist insofern überraschend, weil der intuitive Eindruck, alles sei (mehr oder weniger leicht) lösbar, wenn nur die Beschreibung des Problems mathematisch exakt erfolgt, nicht abwegig erscheint. Kurt Gödel (1906 – 1978) schockierte 1931 die Logiker und Philosophen mit einer bis dahin völlig unerwarteten Erkenntnis, die in folgendem Satz wiedergegeben wird. Gödelscher Unvollständigkeitssatz: In jedem widerspruchsfreien Axiomensystem gibt es Sätze, die nicht mit den Mitteln dieses Systems bewiesen werden können. Dabei handelt es sich nicht etwa um Probleme, deren Lösungsfindung einen solchen Aufwand verursacht, dass sie mit vorhandenen Ressourcen (Zeit und Speicher) nicht geleistet werden kann. Ein Beispiel wäre das Schachspiel: Es ist klar, wie man sämtliche Partien systematisch erzeugen kann. Dennoch gibt es keinen Computer der zu deren Speicherung fähig wäre. Solche Probleme sind hier nicht gemeint. Die aufwandsmäßigen Lösungsbarrieren werden im Abschnitt 5.3 thematisiert. Wenn es algorithmisch unlösbare Probleme gibt, könnte dies darauf zurückzuführen sein, dass die Anzahl der Algorithmen geringer ist als die Anzahl der mathematisch exakt definierten Probleme. Deshalb wird im Folgenden die Mächtigkeit dieser beiden Mengen untersucht. Wie oben schon ausgeführt, lassen sich Algorithmen als Programme notieren. Dabei handelt es sich um einen Text endlicher Länge. Mit der hier gebotenen Abstraktion sind dies Wörter über einem gegebenen Alphabet A. Aus dem Wissensgebiet der formalen Sprachen ist bekannt, dass es abzählbar unendlich viele Wörter über A gibt. In der zugehörigen Wortmenge A* gibt es also genauso viele Elemente wie es natürliche Zahlen gibt. Da man für jeden Algorithmus sogar mehrere Programme, die sich möglicherweise nur durch einen Kommentar oder einige Leerzeichen bzw. Zeilenwechsel unterscheiden, angeben kann, gibt es mit Sicherheit höchstens abzählbar viele Algorithmen.
Berechenbarkeitstheorie
Wie viele Probleme gibt es? Es gibt genauso viele Probleme wie definierbare Funktionen. Die Frage ist also, ob es für jede Funktion einen Algorithmus gibt, der diese Funktion berechnet. Da es abzählbar unendlich viele Algorithmen gibt, soll zunächst angenommen werden, dass es auch abzählbar unendlich viele Funktionen f0, f1, f2, … : A* × … × A* → A* gibt, wobei A ein Alphabet bezeichnet. Einschränkend werden nur die einstelligen Wortfunktionen fi : A* → A* betrachtet. Die folgende Tabelle zeigt die Liste dieser Funktionen fi zusammen mit den zugehörigen Funktionswerten.
f0 f1 f2 f3 f4 :
w0
w1
w2
w3
…
f0(w0) f1(w0) f2(w0) f3(w0) f4(w0) :
f0(w1) f1(w1) f2(w1) f3(w1) f4(w1) :
f0(w2) f1(w2) f2(w2) f3(w2) f4(w2) :
f0(w3) f1(w3) f2(w3) f3(w3) f4(w3) :
… … … … …
Die Möglichkeit, die Funktionen durchnummerieren zu können, geht von der Annahme aus, dass es (höchstens) abzählbar unendlich viele solche Funktionen gibt. Wenn es gelingen sollte, nachzuweisen, dass eine einzige Funktion nicht in dieser Liste enthalten ist, dann wäre die Annahme falsch! In der Tat gibt es (mindestens) eine solche Funktion, nämlich g, mit g(wi) = fi(wi) ○ x, wobei x ∈ A und wi ∈ A*. Mit dieser Definition von g ist gesichert, dass g in dieser Liste nicht vorkommt, denn g stimmt mit keiner Funktion fi überein. Dafür reicht es ja aus, wenn g und fi an einer einzigen Stelle verschiedene Funktionswerte haben. In obiger Definition werden gerade die Hauptdiagonalelemente verfälscht, um diesen „kleinen Unterschied“ zu garantieren. Wenn g in f0, f1, f2, … nicht vorkommt, bedeutet das, einen Widerspruch zur Annahme. Richtig ist, dass die Menge aller (ein- und erst recht n-stelligen) Wortfunktionen überabzählbar unendlich viele Elemente besitzt. Diese Mächtigkeit entspricht der von reellen Zahlen, nicht jedoch von natürlichen. Fazit: Die Menge der Algorithmen reicht nicht aus, um jede (definierbare) Funktion berechnen zu können. Es gibt nichtberechenbare Funktionen bzw. absolut unlösbare Probleme. Die pessimistische Fassung dieser Tatsache lautet: Es gibt viel mehr absolut unlösbare als prinzipiell lösbare Probleme. Das in obiger Argumentation angewandte cantorsche Diagonalisierungsverfahren 2. Art ist die für die Theorie der Berechenbarkeit wichtigste Beweistechnik.
B nach Georg Cantor (1845 – 1918)
465
466
Theoretische Informatik
5.2.3 Algorithmisch unlösbare Probleme Das cantorsche Diagonalisierungsverfahren 2. Art ermöglicht einen Exis tenzbeweis. Man zeigt damit beispielsweise, dass (mindestens) ein absolut unlösbares Problem existiert. Ein Hinweis auf die Beschaffenheit eines solchen Problems wird jedoch nicht gegeben. Wie sieht ein konkretes algorithmisch unlösbares Problem aus? Das wohl bekannteste Beispiel ist das Halteproblem: Halteproblem: Gesucht ist ein Algorithmus H, der die Eingaben P und w erwartet, der nach endlich vielen Schritten stoppt und entweder die Ausgabe „ja“ oder „nein“ liefert. Ja soll ausgegeben werden, wenn H für ein beliebiges Programm P angesetzt auf ein beliebiges (passendes) Eingabewort w nach endlich vielen Schritten stoppt. Nein soll ausgegeben werden, wenn H für ein beliebiges Programm P angesetzt auf ein beliebiges (passendes) Eingabewort w nicht stoppt. Die folgende Skizze illustriert H und folgt dabei strikt der Definition. P
w H ja/nein
Um beweisen zu können, dass H nicht existiert, ist das Modell der universellen Turingmaschine erforderlich. Eine universelle Turingmaschine wird – wie jede Turingmaschine – mit einem Wort oder mehreren durch das Vorbelegungszeichen untereinander getrennten Wörtern über dem Eingabealphabet initialisiert. Als erstes Wort nimmt eine universelle Turingmaschine die Codierung einer Turingmaschine, die eine bestimmte Funktion berechnet. Das folgende Wort ist das Argument, auf das diese Funktion angewandt wird. Bei mehrstelligen Funktionen folgen mehrere Eingabewörter.
$ Turingmaschinencodierung
Daten
Die universelle Turingmaschine arbeitet wie ein Turingmaschinen-Interpreter: Sie entnimmt dem ersten Wort die erforderlichen Angaben, insbesondere die Überführungsfunktion, und erzeugt ein Verhalten, das der Anwendung von Turingmaschinen auf die Eingabe(n) entspricht. Es ist offensichtlich, dass sich diese Abstraktion in Gestalt eines ProgrammInterpreters in der praktischen Informatik prinzipiell wiederfindet. Dies
Berechenbarkeitstheorie
entspricht dem Arbeitsprinzip moderner Rechner. Auch John von Neumann stellte fest, dass die Unterscheidung von Daten und Programmen künstlich ist. Sie können in einem gemeinsamen Speicherbereich untergebracht werden, die Unterscheidung erfolgt durch verschiedenartige Interpretation. Zurück zum Beweis: Es ist sofort klar, P dass H’ existiert, wenn es H gibt, denn H’ ist ein Spezialfall von H. H’ H’ unterscheidet sich von H lediglich darin, dass er (neben P) das spezielle Wort w = ε, also das leere Wort, als ja/nein zweite Eingabe nimmt. Dies lässt sich auch folgendermaßen notieren:
{
ja, wenn P(ε) = r stoppt. H’(P) = nein, sonst, d. h. wenn P(ε) nicht stoppt. Da P beliebig wählbar ist, kann auch ein sehr „merkwürdiges“ Programm C verwendet werden. Falls H’ existiert, muss es auch C geben, denn C entsteht wie folgt aus H’ und der als berechenbar nachweisbaren Fall auswahl. stoppt nicht, wenn H‘(C) = ja. C(w) = w, sonst, d. h. H‘(C) = nein.
{
Welche Ausgabe liefert H’(C)? 1. Fall: H’ (C) = ja d. h. laut Definition von H’, dass die Berechnung von C angewandt auf ε mit dem Ergebnis r stoppt. Nach Definition von C gilt hingegen C stoppt nicht, wenn H’ (C) = ja. 2. Fall: H’ (C) = nein d. h., laut Definition von H’ bedeutet das: Die Berechnung von C angewandt auf ε stoppt nicht. Laut Definition von C gilt aber C(ε) = ε und C stoppt. In beiden Fällen ergibt sich ein Widerspruch, denn kein Programm kann gleichzeitig stoppen und nicht stoppen. Ein Widerspruch in einem indirekten Beweis bedeutet, dass die Negation der Annahme korrekt ist: Einen wie oben definierten Algorithmus H kann es also nicht geben. Das Halteproblem ist nicht lösbar. Für die Praxis bedeutet das etwa, dass es kein universelles Testwerkzeug für Endloszyklen in einem beliebigen, zu untersuchenden Programm, gibt und niemals geben wird. Dies betrifft den allgemeinen Fall. Für spezielle Programme oder Algorithmenklassen sind Techniken der Programmverifikation bekannt, mit deren Hilfe diese und weitere Prüfungen vorgenommen werden können. Das Halteproblem wird nun seinerseits benutzt, um die Unlösbarkeit anderer Probleme nachzuweisen. Durch die Reduktion eines unlösbaren Problems auf ein zu untersuchendes, ergibt sich eine ganz andere Beweisstrategie. Zur Reduktion von Palt auf Pneu ist es notwendig, eine totale und berechenbare Funktion f anzugeben, mit x ∈ Palt ⇒ f(x) ∈ Pneu.
B
467
468
Theoretische Informatik
Das Äquivalenzproblem für Programme ist (allgemein) algorithmisch unlösbar. Es besteht in der Entscheidung, ob zwei beliebige, vorgegebene Programme die gleiche Funktion berechnen. Ein solches Entscheidungsprogramm könnte in der Praxis gut verwendet werden, damit man sich bei zwei gleichermaßen korrekten programmtechnischen Lösungen für eine bestimmte Aufgabe von der mit den schlechteren Laufzeiteigenschaften trennen kann. Da das Halteproblem auf das Äquivalenzproblem reduziert werden kann, ist der Beweis der Unentscheidbarkeit der genannten Frage erbracht. Da sich umgekehrt das Aquivalenzproblem nicht auf das Halteproblem reduzieren lässt, kann es sogar als noch „unlösbarer“ als das Halteproblem angesehen werden, d. h., die genannten Probleme unterscheiden sich im Grad der Unlösbarkeit.
5.2.4 Entscheidbarkeit und Semientscheidbarkeit b Seite 464
Probleme können grundsätzlich als Entscheidungsprobleme (um)formu liert werden. „Wie viele Primzahlen kleiner als 20 gibt es?“ lautet als Entscheidungsproblem „Gibt es genau k Primzahlen kleiner als 20?“. Dabei handelt es sich um ein einstelliges Prädikat, das für k = 8 wahr und sonst, d. h. für k ≠ 8, den Wert falsch annimmt. Infolgedessen kann die Diskussion der Berechenbarkeit von Funktionen auf die Entscheidbarkeit von Prädikaten zurückgeführt werden. Prädikate sind spezielle Funktionen, deren Wertebereich genau die beiden Werte wahr und falsch enthält.
Auch das Halteproblem ist semientscheidbar. Ein entsprechender SemiEntscheidungsalgorithmus SE arbeitet so: Das zu untersuchende Programm P wird auf Eingabe w angesetzt. Stoppt es mit P(w) gibt SE den Wert wahr zurück, andernfalls läuft es endlos weiter.
Die Unlösbarkeit des Halteproblems (b S. 469) kann folglich ebensogut als Unentscheidbarkeit des Halteproblems (in Entscheidungsform) bezeichnet werden. Praktisch bedeutet es für ein Problem nicht entscheidbar zu sein, dass es eben nicht für jeden Eingabewert entweder wahr oder falsch zurückgibt und danach stoppt. Bei einer Reihe von Problemen besteht aber „wenigstens“ die Möglichkeit der „halben“ Entscheidbarkeit. Sie werden semi-entscheidbar genannt. Für den Fall, dass ein Eingabewort w das der Aufgabe entsprechende Prä dikat erfüllt, stoppt die Berechnung mit Rückgabewert wahr. Anderenfalls kommt sie nie zum Ende und damit auch nicht zur Rückgabe von falsch. Eine Verallgemeinerung der Beurteilung von Entscheidungsproblemen führt auf den Satz von Rice: Satz von Rice: Es ist unmöglich, für eine beliebige Turingmaschine, die als Codierung, also in Gestalt eines Wortes, vorliegt, algorithmisch festzustellen, welche Funktion sie berechnet. Es ist nicht einmal möglich zu bestimmen, ob diese Funktion so elementare Eigenschaften hat wie etwa zur Klasse der konstanten Funktionen zu gehören.
Berechenbarkeitstheorie
Mit einem kleinen Augenzwinkern wird die Aussage dieses Satzes auch als „Berufsgarantie“ für Informatiker und Informatikerinnen bezeichnet. Schließlich ist es unmöglich, Softwareentwicklung durch Ausfilterung gewünschter Programme aus der potenziell unendlichen Menge aller Programme zu betreiben. Allerdings machen sich auch hier Techniken breit, die für spezielle Software(klassen) automatisierte Konstruktionsmittel teilweise unter Rückgriff auf vorhandene Module bereitstellen. Das Halteproblem wird naturgemäß als Entscheidungsproblem angegeben. Es kann umformuliert werden zu: Die Sprache H ist die Menge aller Wörter 〈P〉$w, für die gilt, dass P angesetzt auf w stoppt. Hierbei ist 〈P〉 eine Turingmaschinencodierung von P. Es kann gezeigt werden, dass H eine (rekursiv) aufzählbare Menge ist (b Randspalte). Allgemein gilt folgender Satz: Eine Menge M ist aufzählbar genau dann, wenn M semi-entscheidbar ist, d. h., es existiert eine berechenbare Funktion wahr, wenn w ∈ M χ’M : A* → A*, mit χ’M(w) = n. d. , sonst
{
Beweis (1. Teil): „Wenn M aufzählbar ist, dann ist M semi-entscheidbar.“ Der Beweis ist konstruktiv, d. h., aus einer gegebenen Aufzählprozedur für h : N → M für die Wörter aus M relativ zu einer Grundmenge A* ist eine Prozedur zur Berechnung der „halben charakteristischen Funktion“ χ’M zu konstruieren. Ein Algorithmus für χ’M arbeitet so: Zur Eingabe von w berechnet er h(0), h(1), h(2), … solange bis entweder ein i, mit h(i) = w, gefunden wird, oder die Berechnung läuft endlos weiter. Beweis (2. Teil): „Wenn M semi-entscheidbar ist, dann ist M aufzählbar.“ Wir gehen davon aus, dass M nicht leer ist, d. h., es existiert mindestens ein Element a mit a ∈ M. Das Problem dieses Beweises ist die Semi-Entscheidbarkeit. Dies bedeutet, dass es einen Algorithmus X gibt, der für jedes Wort aus A* entweder mit Rückgabewert wahr stoppt (nämlich wenn w ∈ M) oder endlos weiterarbeitet. Aus X soll ein Algorithmus F konstruiert werden, der eine totale und surjektive Funktion f : N → M berechnet. Da A* eine durch Algorithmus Y aufzählbare Menge ist, kann der gesuchte Algorithmus F für f, der die Eingabe n erwartet, folgendermaßen arbeiten. (F erwartet die Eingabe n und produziert f(n).) 1. Initialisiere die Liste der Berechnungsaufgaben (LdBA) als leere Liste. 2. Setze i = –1. 3. Setze i = i + 1. 4. Berechne wi = Y(i). 5. Hänge die Berechnung X(wi) an LdBA (hinten) an.
469
Die Aufzählbarkeit ist ein wichtiger Begriff in der Berechenbarkeitstheorie. Während für abzählbar unendliche Mengen M = {a0, a1, a2, …} die Existenz einer bijektiven Abbildung g : N → M gefordert ist, wird für aufzählbare Mengen (b S. 459) zusätzlich die Berechenbarkeit von g gefordert (b S. 462). Dabei reicht es aus, wenn g surjektiv ist.
Eine Funktion f ist eine eindeutige Zu ordnung von Elemen ten einer Menge A zu Elementen einer Menge B. Gibt es Elemente in A, für die f nicht defi niert ist, dann heißt f partiell, wenn Df ⊆ A, andernfalls total, d. h. Df = A. Haben zwei verschiedene Elemente von A immer zwei verschiedene Bilder, dann heißt f injektiv (links eindeutig). Kommt jedes Element von B als Bild vor, so heißt f surjektiv (rechtstotal). Ist eine Funktion f sowohl injektiv als auch surjektiv, so heißt sie bijektiv (eineindeutig).
470
Theoretische Informatik
6. Entferne die erste Berechnungsaufgabe X(wr), r ≤ i, aus LdBA. Wenn X(wr) nach einer Sekunde Rechenzeit (mit wahr) stoppt, dann wenn n = i, dann Ausgabe: wr und STOPP, sonst weiter bei 3. sonst wenn n = i, dann Ausgabe: a und STOPP, . sonst hänge Berechnungsrest X (wr) hinten an LDBA an und setze fort bei 3. Der Algorithmus F stoppt für jedes Argument n und gibt als Resultat ein Wort aus M aus. F berechnet eine totale und surjektive Funktion f, mit obiger Definition. Die Liste der Berechnungsaufgaben hat zu jedem Zeitpunkt eine endliche Länge. Die feste Vorgabe t = 1 s der für eine Berechnungsaufgabe zur Verfügung stehenden Zeit t hat auf die genannten Eigenschaften von f keinen Einfluss, solange t > 0 gewählt wird. Andererseits ist es durchaus möglich, dass durch einen anderen Wert für t eine andere (totale, surjektive und berechenbare) Funktion f : N → M entsteht. Das angegebene (konstruktive) Beweisverfahren kann implementiert werden, wenn Sprachelemente für Berechnungen mit Zeitbeschränkung bereitstehen bzw. bereitgestellt werden können. Wichtig ist, dass die Restaufgabe mit dem erforderlichen Kontext als Datenstruktur gespeichert werden kann. Ein weiteres klassisches unentscheidbares Problem ist das postsche Korrespondenzproblem. Es lässt sich wie folgt formulieren:
I
Das Korrenspondenzproblem wurde 1946 von dem Mathema tiker E. L. Post (1897 – 1954) angegeben und bewiesen.
B
Postsches Korrespondenzproblem: Gegeben ist eine endliche Liste von Wortpaaren ((x1, y1), (x2, y2), …, (xk, yk)), wobei die nichtleeren Wörter xi und yi über einem bestimm ten Alphabet gebildet werden. Gesucht ist eine mindestens ein Element umfassende Indexliste i1, i2, … , in, wobei ij ∈ {1, 2, …, k}, sodass xi xi … xi = yi yi … yi gilt. 1
2
n
1
2
n
((aa, a), (ba, ab), (aab, aaab)) sei gegeben. Eine Lösung ist (1, 2, 2, 3), denn x1x2x2x3 = aababaaab = y1y2y2y3. Die Semi-Entscheidbarkeit bzw. Aufzählbarkeit des postschen Korrespondenzproblems kann man sich sehr leicht verdeutlichen: Es brauchen ja nur immer längere Indexlisten systematisch erzeugt zu werden. Das Verfahren stoppt entweder mit der dabei verwendeten Indexliste als Lösung oder es hält niemals an. Der Beweis der Unentscheidbarkeit benutzt die oben skizzierte Reduktionstechnik und ist relativ aufwendig, sodass er hier nicht zitiert wird. In der Tat gibt es sogar unentscheidbare Probleme, die nicht semi-entscheidbar sind.
Berechenbarkeitstheorie
471
5.2.5 Turing-Berechenbarkeit und churchsche These Vielfältige Versuche, den Berechenbarkeits- und Algorithmusbegriff zu präzisieren, haben zu unterschiedlichen Ergebnissen geführt: Turingmaschinen, Registermaschine, Markov-Ketten sind einige Beispiele, die in diverse Lehrbücher aufgenommen wurden. Mangels Internet gab es zur Entstehungszeit dieser Ansätze keine gegenseitige Information der Autoren. Erst im Nachhinein stelle sich heraus, dass die äußerlich so verschiedenen Beiträge im Kern gleichwertig – semantisch äquivalent – sind. Unter Verwendung der Turingmaschine kann der Berechenbarkeitsbegriff wie folgt angegeben werden. Eine Funktion f : A* → A* heißt turingberechenbar, wenn es eine Turingmaschine gibt, sodass für alle w1, w2 ∈ A* gilt: f(w1) = w2 genau dann, wenn [z0, w1] £* [ze, w2], wobei A ein Alphabet ist und ze ∈ E gilt. Das Verständnis dieser Definition wird durch folgende Bemerkungen unterstützt. 1. Zur Entscheidung, dass eine bestimmte Funktion f turingberechenbar ist, braucht nicht etwa eine zugehörige Turingmaschine angegeben zu werden. Der Nachweis der Existenz einer zugehörigen Maschine reicht vollkommen aus. Ist die Funktion k : N → {0, 1}, mit 1, wenn ulam(i) = 1 für alle i > 0, i ∈N k(n) = 0, sonst turingberechenbar? Es handelt sich praktisch um eine konstante Funktion, die jedes Argument n entweder auf den Wert 1 oder 0 abbildet. Die zur Definition von k verwendete Funktion ulam ist für natürlichzahlige Argumente größer als 0 wie folgt definiert: 1, falls n = 1 n2 ), falls n gerade ulam(n) = ulam(} ulam(3n + 1), falls n ungerade Bis heute ist nicht bekannt, ob ulam für jede positive ganze Zahl den Wert 1 liefert. Die Tatsache, dass diese für sehr große Zahlen auf leistungsstarken Computern nachgewiesen wurde, ist kein allgemeingültiger Beweis. Ähnlich wie beim Beweis des (großen) Satzes von Fermat, wonach die Gleichungen xn + yn = zn für n > 2 keine natürlichzahligen Lösungstripel (x, y, z) besitzen, kann es noch Jahrzehnte dauern, bis ein Beweis vorgelegt werden kann. Setzt man die Entscheidbarkeit des 0-stelligen Prädikats „ulam liefert für jedes beliebige Argument den Wert 1“ voraus, so ist dessen Wert entweder wahr oder falsch. Das ist sicher! Unklar ist derzeit nur, welcher der beiden Werte herauskommt. Da eine Prozedur für k außerdem lediglich berechenbare algorithmische Bausteine verwendet, ist k berechenbar.
{
{
B Stanislaw M. Ulam (1909 – 1984), ein gebürtiger Pole, emigrierte mit seinem Bruder Adam in die USA. Er hat eine Vielzahl hochanerkannter mathematischer Aufsätze und Bücher verfasst. Während seiner Tätigkeit in Los Alamos (New Mexico) lieferte er Beiträge zur Entwicklung der Atombombe. Der Satz von Fermat wurde 1637 notiert. Erst 1994 und nach jahrelanger Arbeit gelang es dem britischen Mathematiker Andrew Wiles diesen Satz zu beweisen.
472
Theoretische Informatik
2. Die angegebene Definition schließt die Berechnung partieller Funk tionen ein. „f(w) ist nicht definiert“ bedeutet für die TM Stopp in ei nem Nichtendzustand oder Endlosbewegung. 3. Es werden nur einstellige Wortfunktionen betrachtet. Dies ist keine Einschränkung der Allgemeinheit! Die Betrachtung kann sogar auf einstellige zahlentheoretische Funktionen h, mit h : N → N, zurückgeführt werden. Die Begründung gab Kurt Gödel (1906 – 1978), indem er zeigte, dass jedem Wort eine natürliche Zahl so zugeordnet werden kann, dass stellvertretend für alle Operationen mit Wörtern Operationen mit natürlichen Zahlen durchgeführt werden können. Die Operationen werden dabei ebenso durch natürliche Zahlen codiert, wie dies mit den Argumenten geschieht. Anschließend erfolgt die Rücktransformation der Ergebniszahl in das zugehörige Wort. w
v
i
h
w‘ A
B Kurt Gödel (1906 – 1978) wurde in Brno geboren und hat in Wien gearbeitet. Die Judenverfolgungen ließen ihn nach Princeton auswandern, wo er auch begraben ist. Sein wichtigster Beitrag zu Mathematik und Informatik ist sein Unvollständigkeitssatz (b S. 466).
, w = h(w) , w = v −1(f(v(w)))
f v
j N
, w kann auf zwei Wegen berechnet werden. v muss bestimmte Eigenschaften besitzen.
Es handelt sich also um ein Verschlüsselungsverfahren, wobei eine injektive Funktion v : A* → N verwendet wird, die folgende Eigenschaften besitzt: • w1 ≠ w2 ⇒ v(w1) ≠ v(w2) für w1, w2 ∈ A* • v(w) ist in endlich vielen Schritten berechenbar. • Für jede natürliche Zahl n ist in endlich vielen Schritten feststellbar, ob n die Gödelnummer eines Wortes w aus A* ist oder nicht, d. h., ob es ein Wort w ∈ A* gibt, mit v(w) = n. • Falls n die Gödelnummer von w ist, d. h. n = v(w), so kann w in endlich vielen Schritten ermittelt werden. v wird eine Gödelisierung (1935) der Wörter aus A* genannt. Gängige Gödelisierungen sind die Primzahlverschlüsselung und badische Verschlüsselungen. Gödelisierungen sind auch geeignet, um Wörter aus einer (abzählbar unendlichen) Sprache (Menge) zu ordnen. Diese folgende Aussage entspricht der Formulierung der Existenz unlösbarer Probleme in der Sprechweise der Gödelisierung. Satz: Bei einer beliebig festgelegten Gödelisierung ist es im Allgemeinen unmöglich festzustellen, ob eine bestimmte natürliche Zahl n Gödelnummer einer Codierung einer Turingmaschine, die eine bestimmte Funktion berechnet, ist.
Berechenbarkeitstheorie
Beweis: Anstelle von „Turingmaschinen“ und „Turingmaschinencodierungen“, verwendet der Beweis (beliebig komplexe) „Algorithmen“ und „Programme“, z. B. in der Sprache PASCAL. Weshalb (PASCAL-)Programme synonym zu Turingmaschinencodierungen verwendbar sind, wird weiter unten begründet. Darüber hinaus beschränkt sich die Argumentation auf die Betrachtung einstelliger zahlentheoretischer Funktionen. Die Berechtigung dafür ist durch die Gödelisierung gegeben. • Wähle als Alphabet A alle Zeichen, die in Programmen einer frei wählbaren Programmiersprache, etwa PASCAL, vorkommen dürfen. • Die Wortmenge A* kann durch eine Funktion h : N → A* aufgezählt werden. Unter den Wörtern aus A* gibt es natürlich viele, die keine (korrekten) (PASCAL-)Programme darstellen. Die Menge P = {P0, P1, P2, …} der (PASCAL-)Programme für die Funktionen p0, p1, p2, … ist eine echte Teilmenge von A*. v sei eine Gödelisierung der Wörter aus A*. • Annahme: Es gibt ein (PASCAL-)Programm E, das die folgende totale Funktion e : N → {wahr, falsch} berechnet: wahr, wenn n Gödelnummer eines Programms für pn ist e(n) = falsch, sonst
{
Nun ist zu zeigen, dass es für e keinen Algorithmus und folglich kein (PASCAL-)Programm gibt. e wird leicht modifiziert zu d.
{
pn(n), wenn n Gödelnummer eines Programms für pn ist d(n) = 0, sonst Es ist klar, dass ein (PASCAL-)Programm D für d existiert, wenn es E gibt. • Wenn D existiert, so muss es ein Programm G für g : N → N, mit
{
d(n) + 1, wenn d(n) ≠ 0 g(n) = 0, sonst geben, denn G kann unter Rückgriff auf D (Unterprogrammaufruf) und ausschließlicher Hinzunahme berechenbarer Konstrukte (ifthen-else) hergestellt werden. • ng sei die Gödelnummer für G, d. h. ng = v(G). • Was ergibt g(ng)? Aus obigen Definitionen kann für pn = g g(ng) = d(ng) + 1 = g(ng) + 1 abgelesen werden. Das Ergebnis stellt einen Widerspruch zur Gleichheitsforderung dar. • Die Annahme der Entscheidbarkeit des einstelligen Prädikats „Ist n Gödelnummer eines Programms für eine bestimmte Funktion?“ ist falsch. Sämtliche Versuche, die Begriffe Algorithmus und Berechenbarkeit zu präzisieren, stimmen trotz unterschiedlicher äußerer Gestalt in der Aussage überein. Dies führt zu der Vermutung, dass damit tatsächlich genau die Problemklasse beschrieben wird, die auch intuitiv als lösbar betrachtet wird. Genau dies ist die Aussage der churchschen These.
B Die These, dass jede im intuitiven Sinne berechenbare Funktion turingberechenbar ist, formulierte der amerikanische Logiker Alonzo Church (1903 – 1995) im Jahre 1936.
473
474
Theoretische Informatik
Warum ist dies eine These und nicht etwa ein Satz im mathematischen Sinne? Um die Übereinstimmung von Turing-Berechenbarkeit und intuitiver Berechenbarkeit nachzuweisen, wäre es nötig, den Begriff der intuitiven Berechenbarkeit zu formalisieren. Genau dies ist aus bekannten Gründen – siehe obige Diskussion – nicht möglich. Es bleibt also eine These, von deren Gültigkeit die Informatiker überzeugt sind.
5.2.6 Hierarchie von Sprachen
I
Einige der in den vorangehenden Abschnitten entwickelten Erkenntnisse über Klassen von Sprachen (Wortmengen) lassen sich durch folgende Hierarchie übersichtlich darstellen.
überabzählbare Mengen abzählbare Mengen semi-entscheidbare Spachen = rekursiv aufzählbare Sprachen = Typ-0-Sprachen turingentscheidbare Sprachen = Sprachen durch stets anhaltende TM definiert kontextsensitive Sprachen = S. durch linear beschränkte TM definiert = Typ-1-Sprachen kontextfreie Sprachen = Typ-2-Sprachen = Kellerautomatensprachen reguläre Sprachen = S. durch reguläre Ausdrücke definiert = Typ-3-Sprachen endliche Sprachen
z.B.: Zahlwörter z.B.: anbn, für natürlichzahlige n z.B.: anbncn, für natürlichzahlige n
z.B.: Halteproblem, postsches Korrespondenzproblem, Mengen aller Algor., Programme, TM z.B.: Mengen der wahren arithmetischen Formeln z.B.: Mengen der reellen Zahlen, Mengen aller Wortmengen über einem Alphabet
5.2.7 Primitiv-rekursive Funktionen Turingmaschinen können nur sehr einfache Operationen verarbeiten. Laut Definition sind dies elementare Kopfbewegungen, Lesen und Schreiben genau je eines Zeichens und Zustandswechsel. Komplexe Steuerstrukturen, wie sie in vielen höheren Programmiersprachen vorkommen, etwa – if-then-else, – repeat-until, – while-do oder – for-to/downto
Berechenbarkeitstheorie
erfordern sehr aufwendige Turingmaschinen. Diese werden häufig aus einfacheren Turingmaschinen zusammengesetzt, was Kopplung von Turingmaschinen genannt wird. Schließlich gelingt es für sämtliche Programmkonstruktionen diese Turingmaschinencodierung vorzunehmen. Damit ist der Beweis erbracht, dass Programme in einer beliebigen Sprache ebenso wie Turingmaschinencodierungen verwendbar sind. Was bleibt ist die Frage, ob alle üblicherweise angebotenen Sprachelemente wirklich notwendig sind. Anders ausgedrückt heißt das: Welche Kontrollstrukturen sind unbedingt erforderlich, um alle turingberechenbaren Funktionen implementieren zu können? Die Theorie der rekursiven Funktionen gibt darauf eine Antwort. Sie stellt einen weiteren alternativen Ansatz zur Präzisierung des Berechenbarkeitsbegriffes dar, indem für die Menge der berechenbaren Funktionen ein Aufbauschema angegeben wird.
I
Die Menge der primitiv-rekursiven Funktionen P umfasst – die Nachfolgerfunktion S : N → N, mit S(n) = n + 1. – die Nullfunktion r ∈ N.
C 0r :
Nr
→ N, mit
C 0r (n1,
n2, …, nr) = 0, wobei
(Der spezielle Fall r = 0 lässt sich als Konstante interpretieren.) – alle Projektionsfunktionen U ir : Nr → N, mit U ir (n1, n2, …, nr) = ni, wobei i, r ∈ N und 1 ≤ i. – alle Funktionen, die durch Substitution von Funktionen aus P erzeugbar sind. Sind f : Nr → N und g1, g2, …, gr : Nm → N in P enthalten, so ist auch die Funktion h : Nm → N, mit h(n1, n2, … , nm) = f(g1(n1, n2, …, nm)), g2(n1, n2, …, nm)), g3(n1, n2, …, nm)), : gr(n1, n2, …, nm)), in P. Man sagt, h entsteht durch Substitution von g1, g2, …, gr in f. – alle Funktionen, die durch Rekursion von Funktionen aus P erzeugbar sind. Sind f : Nr → N und g : Nr + 2 → N in P, so ist auch h : Nr + 1 → N in P, wobei h(0, n1, n2, …, nr) = f(n1, n2, …, nr) h(S(n), n1, n2, …, nr) = g(n, h(n, n1, n2, …, nr), n1, n2, …, nr) Man sagt, h entsteht durch (primitive) Rekursion aus f und g. – keine weiteren als die angegebenen Funktionen.
Eine Funktion f : Nn → N wird primitiv-rekursive Funktion genannt, wenn f in P enthalten ist.
b auch Mosaik „Primitiv-rekursive Funktionen und funktionale Programmierung“, S. 316
475
476
Theoretische Informatik
Die Potenzfunktion für natürliche Zahlen ist primitiv rekursiv. pot(0, a) = S(C 01 (a)) =1 pot(S(x), a) = g(x, pot(x, a), a) = mult(U 23 (x, pot(x, a), a), U 33 (x, pot(x, a), a)) = mult(pot(x, a), a) Aus obiger Definition primitiv-rekursiver Funktionen, insbesondere aufgrund der Rekursion als Konstruktionsmittel, folgt, dass die Zahl der zu durchlaufenen Zyklen zum Zeitpunkt des Aufrufes bestimmbar ist. Funktionen aus P sind also mit Zählschleifen implementierbar. Es ist sehr schwer eine Funktion zu finden, die nicht primitiv-rekursiv ist. Alle in der Schule behandelten Funktionen sind primitiv-rekursiv. Lange Zeit glaubte man, dass es nur solche Funktionen gäbe. Klar ist auch, dass jede primitiv-rekursive Funktion total (und berechenbar) ist. Insofern war es sensationell, als die Frage nach der Existenz (wenigstens) einer totalen und berechenbaren Funktion, die nicht primitiv rekursiv ist, mit „Ja“ beantwortet wurde. Diese Frage war übrigens schon 1926 von David Hilbert gestellt worden.
B
B
B
Ackermann war ein Schüler Hilberts. Von 1927 – 1961 war er im Schuldienst tätig, ab 1953 auch als Honorarprofessor in Münster.
Die entscheidenden Beiträge lieferten F. W. Ackermann (1896 – 1962) und R. Péter (1905 – 1977). Die total berechenbare, nicht primitiv-rekursive Funktion, die später Ackermann-Peter-Funktion genannt wurde, ist wie folgt definiert. AP(0, m) = S(m) I AP(n, 0) = AP(n – 1, 1) AP(n, m) = AP(n – 1, AP(n, m – 1)) In dieser rekursiven Definition kommen die Nachfolgerfunktion S und die Vorgängerfunktion vor. Diese sind primitiv-rekursiv. Die Funktion AP ergibt sich als Verallgemeinerung der rekursiven Definition der Grundrechenarten. Operation
n
Definition
Addition
1
Multiplikation
2
Potenzieren
3
Superpotenz
4
add(0, b) = 0 + b = b add(m, b) = m + b = ((m – 1) + b) + 1 = S(add(m – 1, b)) mult(0, b) = 0 · b = 0 mult(m, b) = m · b = add(mult(m – 1, b), b) pot(0, b) = b0 = 1 pot(m, b) = bm = bm – 1 · b = mult(pot(m – 1, b), b) super(0, b) = 1 super(m, b) = pot(super(m – 1, b), b)
Die „Superpotenz“ ist eine neu kreierte Operation, die sich aus der Verall gemeinerung der Grundrechenoperationen für n ≥ 1 ergibt. n = 0 kenn zeichnet die einstellige Nachfolgerfunktion S. Allgemein gilt für n ≥ 4: opn(0, b) = K opn(m, b) = opn – 1(opn(m – 1, b), b)
Berechenbarkeitstheorie
Für K kann irgendein Wert definiert werden, z. B.: opn(0, b) = opn – 1(1, b). Das ergibt insgesamt opn(0, b) = opn – 1(1, b) = opn – 1(opn(m – 1, b), b) opn(m, b) wobei ganz offensichtlich b bei jedem Auftreten unverändert bleibt. Zur Konstruktion der AP wird dieses „mitgeschleppte“ b weggelassen. Außerdem wird n, die Nummer der Operation, als erstes Argument aufgenommen. Dies führt zu op(n, 0) = op(n – 1, 1) op(n, m) = op(n – 1, op(n, m – 1)) Wenn op(0, m) = S(m) als erste Zeile in diesem Definitionsschema zur Aufnahme der (einstelligen) Nachfolgerfunktion ergänzt wird, braucht nur noch op in AP umbenannt zu werden und die obige Definition liegt vor. Der Beweis, dass AP keine primitiv-rekursive Funktion ist, kann in der Literatur nachgeschlagen werden. Die Beweisidee besteht darin zu zeigen, dass AP viel schneller wächst als jede primitiv-rekursive Funktion. Eine lohnenswerte Aufgabe besteht darin, die nebenstehende Tabelle für AP(n, m) soweit zu vervollständigen, wie es die konkrete Rech nerleistung ermöglicht.
AP(n,m) n 0 1 2 3 4
m 0 1 2 3 5
1
2
2 3 5 13
3 4 7 29
Für die Klasse der total berechenbaren Funktionen ist bis heute kein Aufbauschema, ähnlich den primitiv-rekursiven Funktionen, bekannt.
5.2.8 μ-rekursive Funktionen Turingberechenbare Funktionen sind partielle Funktionen. Da primitivrekursive Funktionen total sind, muss das Schema der primitiven Rekursion erweitert werden. Natürlich wird versucht, so wenig wie möglich daran zu verändern. Es hat sich gezeigt, dass nur ein kleiner Zusatz ausreicht, um die Klasse P zur Klasse R der sogenannten μ-rekursiven Funktionen auszubauen. Die Klasse R der μ-rekursiven Funktionen ist die kleinste Menge von Funktionen, die die Basisfunktionen (S, C 0r und U ir – b Klasse P) enthält und unter Substitution, (primitiver) Rekursion und Anwendung des (unbeschränkten) μ-Operators abgeschlossen ist. Sei f : Nr + 1 → N, mit r ≥ 0, eine partielle Funktion. Dann ist g : Nr → N, mit das kleinste n ∈ N, mit f(n, n1, n2, …, nr) = 0 wenn (1) so ein n überhaupt existiert und g(n1, n2, …, nr) = (2) f(m, n1, n2, …, nr) für alle m ≤ n def. undefiniert, sonst die durch Anwendung des (unbeschränkten) μ-Operators entstandene Funktion.
{
3
4
5
6
477
478
Theoretische Informatik
Es lässt sich zeigen, dass R genau die Klasse der Funktionen ist, die durch Zyklen mit Anfangsbedingung (while-do) oder Abbruchtest (repeatuntil) implementiert werden können. Gleiches kann natürlich unter Verwendung bedingter Sprünge (if-then goto) ausgedrückt werden. Die in höheren imperativen Programmiersprachen im Allgemeinen eingebaute Redundanz dient zur Erhöhung der Formulierungsfähigkeit und verbessert die Adaptivität der Sprache. Formal würde eine dieser Steuerstrukturen ausreichen. Bedauerlicherweise können keine überzeugenden Beispiele für μ-rekursive Funktionen angegeben werden. Klar, sofern es sich um eine partielle berechenbare Funktion handelt, ist es eine μ-rekursive. Die Funktion k : N → N, mit
{
√ } i , wenn √ } i ∈ N k(i ) = undefiniert, sonst ist μ-rekursiv. Beispielsweise ist k(12) nicht definiert, hingegen ist k(9) = 3. Die Anwendung des μ-Operators ist in folgender Definition von k erkennbar:
{
y = floor(x) = ⎣x⎦ ist die Ganzzahlfunktion. [x] ist die größte ganze Zahl, die x nicht übersteigt.
das kleinste n ∈ N, mit | i – n2 |= 0, wenn … s. Def. … k(i ) = undefiniert, sonst In der Tat ist schon zum Zeitpunkt des Aufrufs feststellbar, wie viele Zyklen 1. Setze n := 0. 2. Solange | i – n2 |≠ 0, erhöhe den Wert von n um 1. höchstens durchlaufen werden müssen, nämlich ⎣√ } i ⎦. Es wäre also möglich, für eine entsprechende totale Funktion eine Laufanweisung zu formulieren. Beispielsweise gelingt das für q : N → N, mit q(n) = } i ⎦. Dies entspricht der Anwendung des beschränkten μ-Operators, ⎣√ dessen Verwendung zur Konstruktion μ-rekursiver Funktionen nicht zulässig ist. Das folgende Diagramm zeigt zusammenfassend die Hierarchie der behandelten Funktionsklassen. N-rekursive Funktionen = turingberechenbare Funktionen = partielle berechenbare Funktionen totale berechenbare Funktionen primitiv-rekursive Funktionen
Effiziente Algorithmen und Komplexität
5.3
I
Effiziente Algorithmen und Komplexität
5.3.1 Praktische Unlösbarkeit Das wohl wichtigste, allgemeinbildende Ergebnis der Berechenbarkeitstheorie ist die Erkenntnis, dass es mathematisch exakt definierbare Probleme gibt, die algorithmisch absolut unlösbar sind. Aus der Theorie der formalen Sprachen ist bekannt, dass das Wortproblem für Chomsky-Typ-0-Sprachen algorithmisch nicht allgemein gelöst werden kann. Insgesamt gibt es wesentlich mehr algorithmisch unlösbare als lösbare Probleme. Dies sagt nichts über die Relevanz eines Problems oder einer Problemklasse aus Anwendersicht aus. Für die Klasse der prinzipiell lösbaren Probleme stellt sich die Frage nach deren Schwierigkeitsgrad. • Wie ist der Bereich des „algorithmisch prinzipiell Lösbaren“ strukturiert? • Gibt es unterscheidbare Schwierigkeitsstufen, die sich dann vielleicht in bestimmten Algorithmenklassen wiederfinden? • Was bedeutet „schwierig“, „schwer“ oder „schwerer als“? • Inwiefern können überhaupt objektive Aussagen zum Aufwand einer Berechnung gemacht werden, wenn doch die Computer infolge unterschiedlichster Hard- und Software ohnehin ganz verschieden schnell arbeiten? Diese und ähnliche Fragen gehören zum Gegenstand der Komplexitätstheorie und Algorithmik. Vor einiger Zeit hat ein spektakuläres Schachmatch zwischen einem menschlichen Spieler (Kasparow) und einem Computerprogramm (Rechner: deep blue) stattgefunden. Es hat viele Jahre gebraucht, bis ein Schachprogramm (auf Parallelrechnerbasis), das von den weltbesten Spielern ernst genommen wird, vorgelegt werden konnte. Warum ist es so schwer, ein gutes Schachprogramm zu schreiben? Es ist doch eigentlich ganz klar, wie es arbeiten muss: Erzeuge zu jedem Zug des Gegners sämtliche nach den Spielregeln mögliche Gegen(halb)züge. Danach erzeuge alle zulässigen Antwort(halb)züge des Gegners und so weiter. Auf diese Weise ergibt sich der Baum der Schachspiele (mit einer virtuellen Wurzel, von der 20 mögliche erste Halbzüge von Weiß abgehen). Auch wenn es nicht in jeder Stellung 20 Fortsetzungsmöglichkeiten gibt, kann kein Computer dieser Welt genügend Speicherplatz aufbringen und verwalten, um den gesamten Baum zu speichern. Unter der Annahme, dass es in jeder Stellung nur genau 5 Fortsetzungsmöglichkeiten für den am Zug befindlichen Spieler gibt, ein Spiel im Mittel nach 60 Zügen (120 Halbzüge) endet und zur Speicherung eines Knotens (innere- und Endknoten = Blätter) lediglich ein Byte gebraucht wird, würde der gesamte Baum einen Speicher von 121
50 + 51 + 52 + … + 5120 = 5 · 5
–1 ≈ 9,404 · 1084 in Byte 5–1
beanspruchen.
Schon vor der Zeit der Computer bewegte die Menschen die Idee eines maschinellen Gegners. Sie lösten dieses Problem, indem sie einen menschlichen Schachspezialisten in eine Kiste sperrten: Die erste „Computerstimme“ wurde geboren.
479
480
Theoretische Informatik
Obwohl algorithmisch vollständig beschreibbar, wird es auch in den nächsten Jahren nicht gelingen, den gesamten Schachbaum zu speichern und „entlang seiner Äste“ zu spielen. Der gigantische Aufwand (Speicher und Rechenzeit) verhindert praktische Realisierungen. Somit bleibt das Schachspiel ein kreatives Spiel, das menschlichen Geist erfordert, nämlich zum (fehlerbehafteten) Spielen ebenso wie zum Ersinnen besserer Programme, auch wenn der Schachsport ohne Computerunterstützung im professionellen Bereich schon längst nicht mehr auskommt. Die am Beispiel des Schachspiels betrachtete Klasse von Problemen lässt sich wie folgt beschreiben: Problemklasse Strategiespiele: Ein zugehöriger intuitiver Algorithmus löst das Problem prinzipiell durch Erzeugung und Bewertung aller Möglichkeiten bzw. Kandidaten. Aufgrund der damit verbundenen kombinatorischen Explosion ist die praktische Berechnung der Lösung mit einem solchen Algorithmus unmöglich. Im Falle des Schachspiels besteht eine natürliche Begrenzung auf 64 Felder, zweimal 16 Figuren usw. Die Dimension des Spielbaums liegt damit fest. Insofern kann man grundsätzlich nicht ausschließen, dass es irgendwann einmal gelingt, den kompletten Baum zu verwalten.
Ackermann-PeterFunktion b S. 476
Im Gegensatz dazu gibt es aber eine Reihe von (algorithmisch prinzipiell) lösbaren Problemen, die von einer oder mehreren Variablen abhängen, wie das beispielsweise bei der Ackermann-Peter-Funktion der Fall ist. Ganz gleich welchem Supercomputer die Berechnung von AP(x, y) gelang, AP(x, y + 1) bzw. AP(x + 1, y), y ≠ 1, schafft er nicht mehr. Das heißt, es lässt sich immer eine Eingabe finden, für die das gegebene Problem praktisch unlösbar ist, egal wie schnell und speicherfähig das verfügbare Berechnungswerkzeug ist. Die einzige Chance einer praktischen Lösung besteht in der Suche nach einem (hinsichtlich des Aufwands) besseren Algorithmus. Dies ist bisher trotz größter Anstrengungen leider nur in ganz wenigen Fällen gelungen, nicht für die Ackermann-Peter-Funktion und auch nicht für sehr viele aus Anwendersicht relevante (Optimierungs)Probleme. Fazit: Neben den absoluten Grenzen der (prinzipiellen) Berechenbarkeit gibt es objektive Grenzen der praktischen Berechenbarkeit.
5.3.2 Intuitive Programmanalyse und Wahl der Problemgröße Lässt sich von einem Programm feststellen, wie es sich zur Laufzeit für alle möglichen Eingaben praktisch verhält? Aus der Berechenbarkeitstheorie ist bekannt, dass es dafür kein allgemeingültiges Verfahren geben kann. Deshalb versuchen wir zunächst ein empirisches Vorgehen. Hierzu wird die Arbeitszeit, die zur Erzeugung bestimmter Resultate erforderlich ist, (z. B. mit einer Stoppuhr) gemessen.
Effiziente Algorithmen und Komplexität
Empirische Untersuchungen des Laufzeitverhaltens von Programmen sind in der Praxis in Form sogenannter Benchmark-Tests für die Hardwareleistung eines Computersystems wohlbekannt. Dabei wird ein Satz von besonders zeitaufwendigen Testaufgaben vorgegeben. Die Fibonaccizahlen erfüllen diese Forderung vorzüglich. Das Ziel kann aber auch darin bestehen, verschiedene Programme untereinander zu vergleichen, etwa um festzustellen, welcher von zwei Kandidaten der bessere (schnellere) Algorithmus für eine bestimmte Anwendungsklasse ist. Die globale Analyse eines Programms führt im Allgemeinen zu keinen zuverlässigen Rückschlüssen: Ein bezüglich des Zeitverbrauches verbesserungsbedürftiges Programm ist gewöhnlich nicht durchgehend schlecht. Oft sind es einzelne Bestandteile, bestimmte Schleifen oder Prozeduren, die im Gegensatz zu anderen Programmteilen besonders aufwendige Berechnungen hervorrufen. Es gilt die Faustregel: „Ca. 90% der Rechenzeit wird von ca. 10% des Programmcodes verbraucht.“ Hieraus folgt, dass schon kleinere Verbesserungen an den „richtigen“ Stellen das Laufzeitverhalten eines Programms spürbar positiv beeinflussen können. Mit einigen Zeitmessungen für Berechnungen mit diversen Werten ist es also nicht getan. Aussagekräftig ist der funktionale Zusammenhang zwischen der Problemgröße und dem zugehörigen Zeitaufwand. Dies kann eine Formulierung der folgenden Art sein: „Wenn man n ver-x-facht, so ver-y-facht sich der Zeitaufwand T(n).“ Gesucht ist also eine Aufwandsfunktion T, mit y = T(n). Beispielsweise liefert T(n) = c · n + e, mit c, e = konst, einen linearen Zeitaufwand. Darin sind die konkreten Werte der rellen Konstanten c und e von untergeordnetem Interesse. Von entscheidender Bedeutung für eine Aussage zum Laufzeitverhalten eines Algorithmus ist die Wahl der Problemgröße n. Es reicht vorerst aus, der Intuition zu folgen, wie es die folgenden Beispiele erkennen lassen. Wahl der Problemgröße n (intuitiv): Problem
n
Suchen in einer Datenbank
die Anzahl der darin enthaltenen Datensätze
Sortieren einer Liste
die Anzahl der zu sortierenden Elemente
Algorithmen, die mit Feldern arbeiten
Dimension dieser Felder
Lösen von Gleichungssystemen mit mehreren Unbekannten
die Anzahl der Unbekannten
Im Konkreten ist allerdings Vorsicht geboten, denn eine oberflächliche Wahl der Problemgröße kann die Aufwandsbetrachtung bis zur Unbrauchbarkeit verfälschen.
481
benchmark (engl.): Nivellierungszeichen Fibonaccizahlen sind Zahlen, die dadurch gebildet werden, dass man jeweils zwei aufeinanderfolgende natürliche Zahlen addiert und damit das nächste Glied der Folge erhält. Beispiel: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
I
482
Theoretische Informatik
Ungeeignete Wahl einer Problemgröße n: Der Zeitaufwand zum Addieren zweier n-stelliger Zahlen wird in Abhängigkeit von der Stelligkeit n ausgedrückt. Gleiches wäre für die Multiplikation unzutreffend, denn die Elementaroperation „Addition zweier einstelliger Zahlen“ ist weniger aufwendig als die „Multiplikation zweier einstelliger Zahlen“.
5.3.3 Probleminstanzen und Analyseformen Gegeben sei ein Problem der Größe n. Gesucht ist der Aufwand zur Lösung dieses Problems. Kann überhaupt von dem Aufwand einer Problemlösung gesprochen werden? Ist es nicht beispielsweise für ein Sortierprogramm von Vorteil, wenn die zu sortierenden Listenelemente schon vorsortiert sind, sodass eigentlich nichts mehr zu tun ist? In der Tat kann der Lösungsaufwand eines Problems von den konkreten Eingaben (Argumenten, aktuellen Parametern) abhängig sein. So gibt es Sortieralgorithmen, die von einer Vorsortierung profitieren, andere nicht. Zur Aufwandsanalyse wäre es eigentlich notwendig, alle Instanzen eines Problems zu betrachten. Ebensogut könnten die besonders guten bzw. besonders schlechten Instanzen betrachtet werden, um eine Aussage über den geringsten bzw. größten Aufwand zu erhalten. Dies führt zu den folgenden Analyseformen: – Worst-Case-Analyse: Die im schlechtesten Fall (für die ungünstigste oder aufwendigste Instanz) erforderliche Laufzeit wird herangezogen. Dies entspricht auch dem Maximum aller möglichen Laufzeiten. – Average-Case-Analyse: Die im mittleren Fall (Durchschnitt, arithmetisches Mittel, Erwartungswert) erforderliche Laufzeit wird ermittelt. – Best-Case-Analyse: Die im günstigsten Fall (für die aufwandsgünstigste Instanz) erforderliche Laufzeit wird ermittelt. Der Aufwand im average case kann auch durch Zeitmessung für sehr viele zufällig gewählte Instanzen ganz brauchbar ermittelt werden. Die rechnerische Analyse setzt Wahrscheinlichkeitsbetrachtungen ein. Leider sind gerade manche mit mathematischen Mitteln geführten AverageCase-Untersuchungen sehr komplex, wenn sie nicht zu grob ausfallen sollen.
I
Wie können verschiedene Aufwände miteinander verglichen werden? Ein Programm A habe einen Zeitaufwand von y = TA(n) = 2n2 im worst case. Ein zweites Programm B zur Lösung des gleichen Problems habe – ebenfalls im worst case – einen Zeitaufwand von y = TB(n) = 100 n. Welches Programm ist (im worst case) besser? Programm B ist besser als A, denn aus den gegebenen Funktionen kann man unmittelbar ablesen: – Wenn n verdoppelt wird, vervierfacht (TA) bzw. verdoppelt (TB) sich der Zeitaufwand. – Wenn n verzehnfacht wird, verhundertfacht (TA) bzw. verzehnfacht (TB) sich der Zeitaufwand.
Effiziente Algorithmen und Komplexität
Ein rascher Überblick ergibt sich, wenn die beiden Aufwandsverläufe grafisch über n _ dargestellt werden. Das spezielle n , ab welchem B wirklich besser ist als A, kann leicht abgelesen werden. Die Beurteilung der Aufwände hängt also auch vom Einsatzfall des Programms ab. _ Im Allgemeinen ist das Verhalten für große n von Interesse. Für n < n ist in obigem Beispiel A besser als B. y 20000 y = T(n) = 2n2 y = T(n) = 100n
15000
10000
5000
O
20
40
60
80
100
n
_ n
kann natürlich auch rechnerisch festgestellt werden. Dies führt nicht selten auf eine nichtlineare Gleichung, die im Allgemeinen iterativ zu lösen ist. _
Bestimmung der Schnittstelle n der beiden Kurven: _ _ TA(n ) = TB (n ) _ _ 2n 2 = 100 n _ _ n (n – 50) = 0 _ n = 50 Offensichtlich ist quadratischer Aufwand schlechter als linearer, allerdings erst ab einer Problemgröße n > 50. Aufwand der Multiplikation zweier gleichlanger natürlicher Zahlen: Die beiden Zahlen sind z1 = a1a2 … an und z2 = b1b2 … bn. Das allgemein bekannte schriftliche Multiplikationsverfahren arbeitet mit quadratischem Aufwand: z1 · z2 = b1 · z1 + b2 · z1 + … + bn · z1 = b1 · (a1a2 … an) + b2 · (a1a2 … an) + … + bn · (a1a2 … an) Es ergeben sich n Additionen und n · n Multiplikationen des kleinen Einmaleins. Für den Zeitaufwand gilt Tmult (n) = c · n2 + d · n.
483
484
Theoretische Informatik
Quadratischer Aufwand ist nicht zufriedenstellend. In der Literatur finden sich alternative Multiplikationsalgorithmen. Bis heute kann nicht ausgeschlossen werden, dass es einen Multiplikationsalgorithmus gibt, der mit linearem Aufwand, d. h. T(n) ~ n, auskommt. Gefunden wurde er bisher allerdings nicht.
5.3.4 Effizienzbegriff Der Effizienzbegriff wird häufig als Modewort benutzt oder mit Effektivität gleichgesetzt. Das ist für die Informatik unbrauchbar.
I
I
Ein Algorithmus heißt effizient, wenn er ein vorgegebenes Problem mit möglichst geringem Ressourcenverbrauch (Zeit, Speicher) löst. Zwischen Zeit- und Speicherverbrauch besteht ein enger Zusammenhang, der dem zwischen unterschiedlichen Energieformen in der Physik ähnelt. Letzteres folgt einem Erhaltungssatz. Aus der Erfahrung des praktischen Programmierens ist die Faustformel bekannt, wonach Rechenzeit durch Speicher „erkauft“ werden kann und umgekehrt. Speicherintensive Datenstrukturen erlauben meist sehr elegante Berechnungsstrukturen. Ein nicht gründlich durchdachtes Datenmodell kann programmtechnischen Zusatzaufwand erfordern und somit die Laufzeiteigenschaften verschlechtern. Dennoch wird der Zeiteffizienz – auch aus praktischer Sicht – die größere Aufmerksamkeit entgegen gebracht. Diese beschreibt den Zeitaufwand zur Lösung eines Problems in Abhängigkeit von der Problemgröße n. Dadurch ist es möglich, von den speziellen Eigenschaften der konkreten Rechenanlage, auf der das betrachtete Programm läuft, zu abstrahieren. Diese Abstraktion wird vertieft, indem nicht etwa die Zeitdifferenzen oder die Anzahl der Elementaroperationen in Programmen, sondern die Takte einer abstrakten Turingmaschine zur Analyse herangezogen werden. Wenn im Folgenden nur von Aufwand gesprochen wird, ist immer der Zeitaufwand gemeint. Verfahren, deren Zeitverhalten als Polynom in n ausgedrückt werden kann, haben polynomialen Aufwand und r ist der Grad des Polynoms T(n) = ar nr + ar – 1nr – 1 + … + a1n1 + a0, mit r ∈ N, ar, … , a0 ∈ R, ar ≠ 0. Wenn r = 1, spricht man von linearem Aufwand. r = 2 bzw. r = 3 bedeuten quadratischer bzw. kubischer Aufwand.
Ein Verfahren besitzt exponentiellen Aufwand, wenn die folgende funktionale Beziehung gilt: T(n) = c · zn, wobei z, c ∈ R, c ≠ 0, z > 1
Der folgende Vergleich einiger Funktionsgraphen macht deutlich, dass exponentieller Aufwand praktisch unbrauchbar ist.
Effiziente Algorithmen und Komplexität
Die Funktionsgra phen auf dieser und der folgenden Seite zeigen T für sehr kleine n, um Schnittpunkte zu erkennen. Grundsätzlich interessieren wir uns jedoch für T bei sehr großen n.
y 20
y = T(n) = n y = T(n) = n2 y = T(n) = 2,71n ?
15 10 5
O
0,5
1
1,5
2
2,5
3
n
Noch deutlicher gibt dies die folgende Tabelle wieder. Dabei wird angenommen, dass ein zur Berechnung verwendeter realer Computer 109 Operationen je Sekunde ausführt. Rechenzeit für n in Sekunden T(n)
n=10
n=100
1 n n2 2n
10–9
10–9
10–7 1,024 · 10–6
10–5 1,268 · 1021 ≈ 1013 Jahre
10–8
n=1000 n=10000 n=100000 n=1000000 10–9 10–6 10–3
10–7
10–9 10–5 0,1
10–9 10–4 10
10–9 10–3 1000
Häufig werden auch Logarithmen zur Basis 2, e oder 10 verwendet, um den Aufwand von Algorithmen zu charakterisieren. Die folgende Abbildung zeigt entsprechende Funktionsgraphen zum Vergleich. y
y = T(n) = konst = 8 y = T(n) = log(n) y = T(n) = n y = T(n) = nlog(n)
20 15 10 5 0 –5
1
2
3
4
5
6
7
8
9
10
n
e = 2,718281828… (eulersche Zahl, Basis der natürlichen Logarithmen)
485
486
Theoretische Informatik
5.3.5 Asymptotische Aufwandsordnung Um den Aufwand eines Verfahrens im mittleren Fall (average case) zu ermitteln, wird Gleichverteilung aller möglichen Eingaben eines Problems der Größe n zugrunde gelegt. Die Anwendung von Wahrscheinlichkeitsrechnung führt oftmals zu sehr komplexen und unhandlichen Ausdrücken.
Analyseformen b S. 482
∃ sprich: „es existiert ein …“ ∀ sprich: „für alle …“
Wie weiter oben bereits festgestellt wurde, spielen konstante Summanden und Faktoren in Termen für T(n) keine nennenswerte Rolle, wenn sich die Analyse auf das Aufwandsverhalten für sehr große n konzentriert. Es ist daher sinnvoll, eine spezielle Notation für asymptotische Aufwandsordnungen einzuführen. Dabei handelt es sich um eine Art Klassifikation von Algorithmen nach deren Aufwand. Diese asymptotische Ordnung kann für alle drei Analyseformen (best-, average- und worst case) angegeben werden. Die asymptotische Ordnung O(f ), sprich: „groß-O von f“, einer Funktion f : N → R0+ ist die Menge aller Funktionen t : N → R0+, die nach oben durch ein positives reelles Vielfaches von f beschränkt werden, wenn n hinreichend groß ist. O(f ) = {t | t : N → R0+ und ∃c ∈ R+ ∃n0 ∈ N ∀ n ≥ n0 (t(n) ≤ c · f(n))} T mit T(n) = 2n2 – 6x + 7 liegt in O(n2), denn ab n0 ≈ 1,2 gilt für alle n ∈ N die Relation 2n2 – 6x + 7 ≤ cn2, wobei c beispielsweise den Wert 2 haben kann. Die folgende Abbildung stellt den Sachverhalt grafisch dar. y 50 y = T(n) = 2n2 – 6n + 7 y = f(n) = 2n2
45 40 35 30 25 20 15 10 5 O
1
2
3
4
5
n
Beim Gebrauch der O-Notation hat sich eine gewisse Großzügigkeit eingeschliffen. So ist es beispielsweise für T(n) = 2n2 – 6n + 7 üblich, T(n) = O(n2) zu schreiben, obwohl es eigentlich T ∈ O(n2) heißen müsste.
Effiziente Algorithmen und Komplexität
Die nun eben etablierte Gleichheitsschreibweise birgt die Gefahr der Symmetrie, wie bei 3 = 2 + 1, wo die Gleichheit sowohl von links nach rechts als auch von rechts nach links gelesen werden darf. Dies gilt hier nicht! T(n) = 2n2 + 7 = O(n2) = O(n3) ≠ O(n2) Es gibt weitere asymptotische Ordnungen, Ω und Θ, die hier jedoch nicht weiter betrachtet werden.
5.3.6 Lösung von Rekursionsgleichungen Rekursionsgleichungen oder rekurrente Gleichungen ergeben sich ganz natürlich bei der Effizienzanalyse rekursiver Algorithmen. Rekursive Algorithmen entstehen ihrerseits bei der Anwendung bestimmter Entwurfsmethoden, die in Folgeabschnitten vorgestellt werden. Dies betrifft insbesondere Teile-und-herrsche-Verfahren. All das ist sinnvoll, um nicht bei jeder Problemlösung ganz von vorne zu beginnen. Es ist besser, eine Palette von Standardstrategien bereitzuhalten. Aus der rekursiven Gestalt von Algorithmen können die zugehörigen Rekursionsgleichungen direkt abgelesen werden. Fibonaccizahlen: function fib(n: word): longint; begin if n lsg1:=rsolve({T(0)=1,T(1)=1,T(n)=T(n-1)+T(n-2)},T(n)); 2 √ } 5 – }
2 √ } 5 }
(} )
n
(
)
n
√ }
5 + 1 5 – 1 + } 25 } lsg1 := } 25 } √
√ } 5 + 1
√ } 5 – 1
> simplify(lsg1); 2 √} 5 2 n(√} 5 – 1)–n +√} 5 ( √} 5 – 1)–n +√} 5 ( √} 5 + 1)–n (–1)n – (√} 5 + 1)–n (–1)n } (
(
)
(
)
(
)
)
5 }}}}}}} ((√} )(√} )) 5 – 1 5 +1
> evalf(lsg1); .7236067976 1.618033988n + .2763932023 (–.6180339886)n Das Ergebnis lautet T(n) = O(cn). > lsg2:=rsolve({T(0)=0,T(1)=0,T(n)=T(n-1)+T(n-2)+1},T(n)); √ } 5 } 2
√ } 5 – } 2
(} )
n
(
)
n
√ }
5 – 1 5 + 1 lsg2 := –1 + }25 } + } 25 } √
√ } 5 – 1
√ } 5 + 1
> simplify(lsg2); 1 √} 1 1 } 1 1 } 1 } 1 } 1 2 – 10 + √ } 5 } 5 – } + 5 } √ 5 – } + 5– } √ 5 – } –√ 5 – } √ 5 – } } 2 2 2 2 2 2 2 5 2 }}}}}}} } } ((√ 5 – 1)(√ 5 + 1)) (–n)
(
)
(
(–n)
)
(
(–n)
)
(
(–n)
)
> evalf(lsg2); –1. + .7236067976 1.618033988n + .2763932023 (–.6180339886)n Erwartungsgemäß ergibt sich das Ergebnis T(n) = O(cn). Die obige Prozedur fib arbeitet also mit exponentiellem Aufwand. Eine zweite Technik zum Lösen von Rekursionsgleichungen ist das Raten und Einsetzen. In englischsprachiger Literatur wird es intelligent guesswork – geschicktes Raten – genannt. Dahinter steht eine sehr einfache Idee: Raten und Einsetzen: Anhand einer Wertetafel für T wird versucht, eine explizite Bildungsvorschrift für T(n) herauszufinden bzw. zu vermuten. Es ist sofort einzusehen, dass diese Methode nicht immer erfolgreich ist, aber das ist die mit CAS auch nicht.
{
1, wenn n = 1 n Sei T(n) = 3T( } ) + n, sonst 2 n
T(n)
1 2 4 8 16 32
1 5 = 3 · 1 + 2 19 = 32 · 1 + 3 · 2 + 22 65 = 33 · 1 + 32 · 2 + 3 · 22 + 23 211 = 34 · 1 + 33 · 2 + 32 · 22 + 3 · 23 + 24 665
Effiziente Algorithmen und Komplexität
Aus der Wertetafel kann durch Verallgemeinerung eine Bildungsvorschrift vermutet werden: T(2k) = 3k · 20 + 3k – 1 · 2 + … + 30 · 2k
Σ = 3k Σ ( }23 )i k
= 3k – i2i i=0
k
0=i
( ()
)
3k1 – }23 k + 1 = }} 1–} 23
T(2k) = 3k + 1 – 2k + 1 Um bei allen erforderlichen Divisionen durch 2 als Ergebnis eine natürliche Zahl zu erhalten, wurde mit Zweierpotenzen n = 2k gearbeitet. Da das Ziel der Analyse in einer Aussage über die asymptotische Ordnung besteht, ist diese Vereinfachung durchaus gerechtfertigt. In der Rechnung muss k durch log2n substituiert werden, damit ein Ausdruck in n entsteht. Das Ergebnis ist: T(n) = 3nlog 23– 2n Unter Verwendung der Gleichheit 3log2n= nlog 23ergibt sich schließlich T(n) = O(nlog23) Selbstverständlich besteht grundsätzlich eine Beweisnotwendigkeit für die Allgemeingültigkeit des gefundenen Ausdrucks für alle natürlichen Zahlen. Dies geschieht mit dem Verfahren der vollständigen Induktion:
I
Vollständige Induktion: Eine Aussage S über alle natürliche Zahlen n ≥ n0 ist wahr, 1. wenn S für n = n0 gilt und 2. wenn aus der Richtigkeit von S für ni die Richtigkeit von S für ni + 1 (für beliebiges i) folgt. Der Beweis für obiges Beispiel wird hier nicht vorgeführt. Anstelle dessen wird am Beispiel des Algorithmus zur Erzeugung der n-ten Fibonaccizahl eine Methode illustriert, die konstruktive Induktion genannt wird. Die Idee besteht darin, neben dem Beweis der Allgemeingültigkeit des Ausdrucks für T(n) eventuelle Konstanten gewissermaßen als Nebenprodukte zu ermitteln. Für das Beispiel gilt der Ansatz T(n) = O(cn) ≤ a · cn. Im Induktionsanfang wird gezeigt, dass sich ein a > 0 finden lässt, sodass T(0) = 1 ≤ a · c0 und T(1) = 1 ≤ a · c1 gelten. Mit c > 1 erfüllt a = 1 beide Ungleichungen. Der Induktionsschritt geht von der Gültigkeit von T(n – 1) ≤ a · c n – 1 und T(n – 2) ≤ a · c n – 2, n ≥ 2, aus.
489
490
Theoretische Informatik
Es wird gezeigt, dass dann T(n) ≤ a · c n gilt: T(n) = T(n – 1) + T(n – 2) ≤ a · c n – 1 + a · c n – 2 ≤ a · c n · } c +2 1 c
Damit der Ausdruck a · c n · } c +2 1 mit dem Ansatz T(n – 1) ≤ a · c n – 1 überein c
stimmt, muss } c + 1 = 1 gelten. Die positive Lösung dieser Gleichung ergibt 2
(
√ } 5 + 1 n
c
) } n T(n) = O((} 5 2 + 1 ) )
c = } 2 ≈ 1,618. Damit ist klar, dass gilt √
I
I
Neben diesen Techniken zur Lösung von Rekursionsgleichungen gibt es weitere, die hier nicht detailliert behandelt werden können. Beispiele sind: • Die Iterationsmethode, auch telescoping genannt, expandiert die rekursive Vorschrift durch Selbstanwendung solange, bis die Anfangsbedingung erreicht ist. Dann steht der gesuchte Ausdruck praktisch da. • Die Master Methode funktioniert wie ein Kochrezept: Erprobt und aufgeschrieben, zur Nachnutzung empfohlen. Drei Arten von Mustern n der Gestalt T(n) = aT( } ) + f (n), für Konstanten a ≥ 1 und b > 1 werb den angeboten. Wenn eines davon passt, ist die Bestimmung von T(n) durch Anwendung des Rezepts (Master Theorem) quasi erledigt. Passt keines, so ist die Methode zur Lösung der speziellen Gleichung unbrauchbar. Ein Universalmittel zur Lösung von Rekursionsgleichungen gibt es nicht.
5.3.7 Vollständige Lösungssuche
I I
Die systematische Darstellung aller Lösungskandidaten erfolgt üblicherweise in Gestalt eines Baumes. Wie bereits festgestellt, ist der vollständige Aufbau oder die vollständige Durchmusterung eines solchen Baumes ab einem bestimmten Wert der Problemgröße viel zu aufwendig. Die Verfahren • Tiefe-zuerst (depth first) bzw. • Breite-zuerst (breadth first) sind die Basismethoden einer systematischen Lösungssuche. Die Suche bleibt auf einen Teil des Baumes beschränkt, wenn bei einem bevorzugten Vorstoß in die Tiefe, also zu einem Blatt hin, das Ergebnis gefunden wird. Dies hängt natürlich von der Aufgabenstellung ab. Bei Optimierungsproblemen, die nach dem globalen Minimum bzw. Maximum fragen, gibt es oftmals keine Möglichkeit festzustellen, ob das betrachtete Blatt ein globales Optimum darstellt. Tiefe-zuerst-Verfahren sind insbesondere für solche Aufgaben geeignet, bei denen die zuerst gefundene Lösung interessiert und nicht etwa
Effiziente Algorithmen und Komplexität
alle Lösungen gesucht werden. Dazu zählen die sogenannten Existenzprobleme der Art „Gibt es ein/eine …, sodass die Bedingung … erfüllt wird?“.
I
8-Damen-Problem: Gibt es (wenigstens) eine Möglichkeit, 8 Damen (Königinnen) so auf einem Schachfeld aufzustellen, dass sie sich gegenseitig nicht schlagen können? Dieser Aufgabentyp liegt bei Optimierungsproblemen im Allgemeinen nicht vor. Rucksackproblem(e): Aus einer nichtleeren Menge von n Gegenständen mit den Gewichten g1, g2, …, gn sind genau die auszuwählen, die von einem Rucksack mit einer (Gewichts-)Kapazität K aufgenommen werden können. Die Kapazität K darf keinesfalls überschritten werden. Dabei soll der Gesamtwert der mitgenommenen Gegenstände möglichst groß sein. Die Gegenstandswerte sind w1, w2, …, wn. Dürfen die Gegenstände nicht geteilt und bruchstückhaft mitgenommen werden, spricht man vom 0/1-Rucksackproblem, anderenfalls vom Bruchstück-Rucksackproblem. Eine Abschwächung des Problems (nicht des Aufwands) ergibt sich durch zahlenmäßiges Gleichsetzen von gi und wi. Dies ist als Teil mengen-Summen-Problem, engl. subset-sum problem, bekannt. Praktisch relevante Sachkontexte lassen sich leicht finden. Beispielsweise kann man die gi als Massen unterschiedlicher Frachtgüter (in Kisten gleicher Abmessung) deuten, die per LKW mit (beschränkter) Ladekapazität K befördert werden sollen. Das Fahrzeug darf weder überlastet noch soll Transportkapazität verschenkt werden. Also müssen die für den Transport infrage kommenden Güter geschickt ausgewählt werden. Ohne die Gewichtsbeschränkung einfließen zu lassen, müssten sämtliche 2n Möglichkeiten zur Auswahl von Gegenständen beurteilt werden. Es entsteht ein Binärbaum (Entscheidungsbaum), dessen jeweils linker Ast „mit-Gegenstand-i“ und dessen jeweils rechter Ast „ohne-Gegenstand-i“ bedeuten. Dies lässt einen Aufwand in O(2n) erwarten. Wird die mit K gegebene Gewichtsbeschränkung einbezogen, kann die Verfolgung bzw. der (dynamische) Aufbau einiger Teile des Baumes entfallen, da die Hinzunahme bestimmter Gegenstände verboten ist. Am exponentiellen Aufwand ändert sich jedoch nichts. Es ist daher naheliegend, den Baumdurchlauf durch Techniken der Vorausschau (greedy) bzw. der Beschneidung (branch and bound) zu verkürzen.
5.3.8 Teile und Herrsche (divide and conquer) Die Idee dieser Verfahren besteht darin, das gestellte Problem so zu zerlegen, dass Probleme gleichen Typs aber geringeren Grades entstehen. Nach Lösung der Teilprobleme werden deren Resultate zur Gesamt lösung zusammengesetzt. Dies ist ein typischer Einsatzfall für rekursive
491
492
Theoretische Informatik
Prozeduren, und es ist für ein effizientes Verhalten sogar notwendig, dass die Teilprobleme rekursiv gelöst werden. Typische Beispiele für Teile-und-Herrsche-Verfahren sind:
I
I
I
Binäres Suchen findet in einer aufsteigend/fallend geordneten Liste a1, a2, …, an statt. Ist das (in etwa) mittlere Element am der Liste größer als das gesuchte Element x, wird die Suche in Teilliste a1, a2, …, am fortgesetzt, ansonsten in am + 1, am + 2, …, an. Im günstigsten Fall gilt x = am, sodass der Aufwand in O(1) liegt. Ungünstigstenfalls liegt er in O(n). Im average case gilt n T(1) = 1 und T(n) = T( } ) + 2, 2 was auf T(n) = O(log n) hinausläuft. Das ist besser als das sequenzielle Suchen, das mit linearem Aufwand arbeitet.
Quicksort: Eine Liste wird sortiert, indem zwei kürzere Teillisten gebildet werden. Teilliste 1 enthält alle Elemente, die bezüglich der zur Sortierung verwendeten Ordnungsrelation kleiner oder gleich einem aus der Liste frei wählbaren Trennelement (Pivot) t sind. In Teilliste 2 werden die restlichen Elemente, die also größer als t sind, aufgenommen. t selbst kommt in keiner der beiden Teillisten vor. Die sortierte Gesamtliste ergibt sich aus der Liste, die aus der sortierten Teilliste 1, t und der sortierten Teilliste 2 – in dieser Reihenfolge – durch Anfügen entsteht. Die Sortierung der in jedem Falle kürzeren Listen erfolgt mit der zu definierenden Quicksort-Prozedur in je einem rekursiven Aufruf. Für den Aufwand dieses Verfahrens gilt: best case: O(n log n) average case: O(n log n) worst case: O(n2)
Mergesort: „Merge“ heißt so viel wie „zusammenführen“ (oft als „mischen“ oder „vermischen“ übersetzt) und bedeutet für dieses Sortierverfahren, dass zwei bereits sortierte Teillisten durch ein Tor geschleust werden. Nach dem Tor gibt es nur noch eine Liste, die dadurch entsteht, dass die jeweils ersten Elemente der beiden Teillisten miteinander verglichen werden. Das bezüglich der verwendeten Ordnungsrelation kleinere Element wird aus der betreffenden Teilliste entfernt und durch das Tor in die Resultatliste geschoben. Im Unterschied zu Quicksort werden die beiden Teillisten einfach durch (in-etwa-)Halbierung der Ausgangsliste gebildet, ohne irgendeinen Vergleich hinzuzunehmen. Für den Aufwand dieses Verfahrens im mittleren Fall gilt offensichtlich
{
0, wenn n = 1 T(n) = n 2 T( } ) + n, sonst 2 Die Lösung dieser Rekursionsgleichung ergibt T(n) = O(n log n).
Effiziente Algorithmen und Komplexität
493
Während Quicksort ein typisches internes Sortierverfahren ist, das also für den Sortiervorgang keinen zusätzlichen externen Speicher einsetzt, wird Mergesort für externes Sortieren bevorzugt. Bei der Suche nach besseren Algorithmen zur Multiplikation großer ganzer Zahlen, O(n1,59), und zur schnellen Matrixmultiplikation O(n2,81) (von Strassen), das derzeit Beste ist O(n2,376), sind Fortschritte erreicht worden, die allerdings in erster Linie theoretischen Wert besitzen.
5.3.9 Verzweigen und Begrenzen
I
Rundreiseproblem (Traveling salesman problem): Gegeben ist eine Menge von Städten und die Entfernungen zwischen ihnen. Gesucht ist die kürzeste Rundreise, die jede Stadt (außer die Start-und-Ziel-Stadt) genau einmal besucht und in der Start-und-Ziel-Stadt endet. Ein naiver Algorithmus zur Lösung dieses Problems besteht darin, alle möglichen Städtefolgen (Permutationen) zu erzeugen, den jeweils zugehörigen Gesamtweg zu berechnen und das Minimum herauszufiltern.
I
Die Idee von Verzweigen und Beschränken, engl.: branch and bound, besteht darin, Teile des Baumes, die garantiert nicht zur Lösung (Optimum) führen können, abzuschneiden. Zu diesem Zweck wird nach jedem Expansionsschritt (branch) eine Schranke (bound) für jeden Knoten des Baumes berechnet. Der Knoten mit dem kleinsten Schrankenwert wird als nächster expandiert. Die anderen Kandidaten werden in einer Prioritätswarteschlange für eventuelle Folgeversuche aufbewahrt. Der vielversprechendste Kandidat steht in einer solchen Schlange an erster Stelle. Dabei handelt es sich um eine Art Backtracking. Es wird allerdings nicht zu einem bereits untersuchten Knoten zurückgegangen, sondern zu einem anderen Kandidaten (Knoten) auf einem früheren Niveau. Der Erfolg des Verfahrens hängt von der Wahl der Schrankenfunktion ab. Ist deren Anwendung zu aufwendig, wird das durch Begrenzen Eingesparte an dieser Stelle verbraucht. Umgekehrt bewirken allzu grobe Schrankenfunktionen kaum einen Begrenzungseffekt. Manchmal ist es besser, eine Schätzfunktion zur Berechnung der Schranke einzusetzen. Sie kann zwar nicht mehr garantieren, dass das Optimum auf dem beschriebenen Wege gefunden wird. Im Allgemeinen wird jedoch sehr effizient ein Ergebnis ermittelt, dass dem Optimum sehr nahe ist.
5.3.10 Dynamisches Programmieren Die Bezeichnung „Programmieren“ ist hier ziemlich irreführend. Mit dem Programmieren im eigentlichen Sinne hat dynamisches Programmieren nur wenig zu tun. Der Begriff „dynamisches Optimieren“ wäre zutreffender.
Backtracking (Rückziehungsverfahren): Eine Teillösung eines Problems wird systematisch zu einer Gesamtlösung ausgebaut. Ist in einem gewissen Stadium ein Ausbau der vorliegenden Teillösung nicht mehr möglich (Sackgasse), werden die letzten Schritte rückgängig gemacht, und es wird ein anderer Weg gegegangen.
494
Theoretische Informatik
Zum Top-down- und Bootom-up-Vorgehen b auch S. 251
Im Gegensatz zu dem Top-down-Vorgehen bei Teile-und-Herrsche verwendet dynamisches Programmieren einen Bottom-up-Ansatz. D. h., es wird erwartet, dass die optimale Gesamtlösung aus optimalen Teillösungen aufgebaut werden kann. Nicht jedes Problem erfüllt diese Optimalitätsbedingung. Außerdem kann es passieren, dass die Anzahl der Teilprobleme unakzeptabel hoch ist. „Von unten her“ werden alle Teillösungen ermittelt und in eine Tabelle eingetragen. Die Berechnung zeitlich nachfolgender Tabelleneinträge greift dann auf bereits vorhandene zurück. Dadurch werden Mehrfachberechnungen, wie sie bei rekursiven Definitionen gelegentlich vorkommen, vermieden. Zur Berechnung der 6. Fibonaccizahl werden die 5. und die 4. Fibonaccizahl benötigt. Die anzuwendende Formel ist fib(n) = fib(n – 1) + fib(n – 2), wobei fib(0) = fib(1) = 1. Die Berechnung der 5. Fibonaccizahl erfordert dann ihrerseits die (rekursive) Berechnung der 4. und 3. An diesem kleinen Beispiel wird schon deutlich, dass sehr aufwendige Berechnungen mehrfach ausgeführt werden müssen. Hier wird unter anderem die 4. Fibonaccizahl zweimal berechnet. Eine Baumdarstellung für fib(6) würde die Teilrechnungen eindrucksvoll illustrieren. Würde jedes Ergebnis der Anwendung einer (rekursiven) Prozedur in einer Tabelle (oder auch einer anderen passenden Datenstruktur) gespeichert, dann könnte vor Ausführung einer Berechnung nachgesehen werden, ob der gesuchte Wert schon existiert und der Aufwand für dessen Auffindung wäre wesentlich geringer als eine Neuberechnung. Dieses naheliegende Vorgehen wird memoizing oder substantivisch memoization genannt. Dabei kann nicht in jedem Falle garantiert werden, dass ein gerade benötigter Wert schon in der Tabelle steht. Da jeder erforderliche Wert genau einmal berechnet werden muss, spielt es grundsätzlich keine Rolle, wann das geschieht. Unnötige Tabellenfelder bleiben leer. Traditionell wird die Reihenfolge, in der die Tabellenfelder gefüllt werden, durch eine iterative Vorschrift bestimmt. Da eine Tabelle ein zweidimensionales Objekt ist, können beispielsweise zwei verschachtelte Laufanweisungen (Zeilenindex, Spaltenindex) dafür sorgen, dass die Tabelle zeilenweise ausgefüllt wird. Dieses tabellenbezogene Vorgehen hat den Nachteil, dass die vorliegende rekursive Lösungsvorschrift aufgegeben werden müsste. Das ist unerwünscht. Rekursive Prozeduren zusammen mit memoizing sind daher ein vielversprechender Ansatz zur effizienten Lösungsfindung.
0/1-Rucksackproblem b S. 491
Lösung des 0 /1-Rucksackproblems: Die eingangs formulierte Optimalitätsbedingung gilt: Gegenstand i wird in den optimal gepackten Rucksack ohne i gesteckt. Dies garantiert den optimalen Rucksack mit i. Anders gesagt, die noch zur Auswahl stehenden Gegenstände werden in einen bis dahin optimal gefüllten Rucksack gesteckt und der dann ermittelte Gesamtwert wert(i, g) wird in die Tabelle geschrieben. Der rekursive Ansatz lautet:
Effiziente Algorithmen und Komplexität
{
0, i = 0 wert(i – 1, g), i > 0, g – gi < 0 wert(i, g) = max(wert(i – 1, g), wert(i – 1, g – gi) + wi ), sonst wert(i, g) bezeichnet den optimalen Gesamtwert des Rucksacks mit einer Restgewichtskapazität g ≤ K. Hierfür wurden Gegenstände aus {1, 2, …, i}, mit i ≤ n, ausgewählt. wert(i, g) = wert(i – 1, g) beschreibt, dass der i-te Gegenstand nicht in den Rucksack gepackt wird, weil er zur Überschreitung der Kapazität führen würde. Damit steht für eine Auswahl der restlichen Gegenstände 1, 2, …, i – 1 noch ein Gewicht von insgesamt g zur Verfügung. Es gibt natürlich keinen Wertzuwachs, wenn Gegenstand i nicht eingepackt wird. Wird Gegenstand i aufgenommen, so kann nur noch ein Gewicht von g – gi durch die noch auszuwählenden Gegenstände ausgeschöpft werden. Der Gesamtwert steigt in diesem Fall um wi. Dieser Wert kann durchaus geringer sein, als wenn man auf die Mitnahme des iten Gegenstandes verzichtet und dafür andere einpackt. Dies wird in der Formel durch die Bestimmung des Maximums ausgedrückt. Für folgende konkrete Aufgabe, mit n = 10, K = 120 und i
1
2
3
4
5
6
7
8
9
10
gi wi
10 18
11 20
12 17
13 19
14 25
15 21
16 27
17 23
18 25
19 24
ergibt sich ein optimal gepackter Rucksack mit einem Gesamtwert von 183. Zur Berechnung ohne memoizing benötigte die verwendete Implementation 2024 rekursive Aufrufe, mit memoizing waren es nur 560. Dynamisches Programmieren durch iteratives Ausfüllen der Tabelle führt offensichtlich zu einem Aufwand in O(n · K) · O(1) = O(nK) zur Berechnung der gesamten Tabelle mit n Zeilen und K Spalten. Dies sieht wie ein linearer Aufwand aus, der durch empirische Untersuchungen keinesfalls bestätigt wird. In Wirklichkeit gehört das 0 /1-Rucksackproblemen zu den (aufwandsmäßig) schwersten Problemen überhaupt. Es scheint sogar ziemlich sicher zu sein, dass die Suche nach einem exakten Lösungsverfahren, das mit Polynomzeit arbeitet, aussichtslos ist. Eine genauere Überlegung ergibt, dass „vernünftige“ Werte für K (im Allgemeinen nicht polynomial) von n abhängen: Für eine große Anzahl von Gegenständen, wird naturgemäß ein größeres K verwendet. Anstelle K als Konstante anzusehen, führt die Betrachtung der Bit-Darstellung von K zu einer Problemgröße, die dann offensichtlich im Exponenten steht. Hier ist also die Verwendung der sogenannten Bit-Komplexität, auf die schon eingangs bei der Unterscheidung von Elementaroperationen beim Addieren im Gegensatz zum Multiplizieren hingewiesen wurde, dringend erforderlich.
495
496
Theoretische Informatik
Die Binärdarstellung von K hat eine Länge von log2(K) ≈ m, sodass K ≈ 2m gilt. Unter Verwendung der Bit-Komplexität liegt der Aufwand des Verfahrens folglich in O(n · 2m), was wiederum exponentiellen Aufwand bedeutet. Dynamisches Programmieren löst das 0 /1-Rucksackproblem mit einem Aufwand, der als pseudo-polynomial bezeichnet wird. In der Tat gibt es nicht sehr viele solche Algorithmen.
5.3.11 Gefräßige Strategie (greedy) greedy (engl.): gierig
Die Idee dieses Verfahrens besteht darin, in jedem Schritt den besten „Happen“ zu nehmen und die optimale Lösung ganz ohne aufwendiges Backtracking zu erzeugen. Greedy-Algorithmen sind einfach zu implementieren und vergleichsweise sehr effizient. Dem steht der Nachteil gegenüber, dass nicht jedes Problem mit greedy exakt gelöst werden kann. Die Klasse der greedy-lösbaren Probleme lässt sich algebraisch beschreiben, was hier jedoch nicht ausgeführt wird. Besitzt ein Optimierungsproblem die geforderte Eigenschaft nicht, so wird mit einem entsprechenden greedy-Algorithmus im Allgemeinen eine sehr gute Näherung für das Optimum ermittelt.
0/1-Rucksackproblem b S. 491 und S. 494
Das 0 /1-Rucksackproblem kann mit greedy nicht exakt gelöst werden, das Bruchteil-Rucksackproblem hingegen schon. Die Sortierung der Kandidatenliste gewährleistet, dass der „beste Gegenstand“ ganz vorn steht. Sortiert wird nach dem „spezifischen wi Wert“, dem Quotienten } g i aus Wert und Gewicht jedes einzelnen Gegenstandes. Die so sortierten Gegenstände werden solange in den Rucksack gesteckt, bis der nächstfolgende die Kapazitätsgrenze überschreiten würde. Beim Bruchteilrucksack wird gerade der Teil des aktuellen Kandidaten genommen, dessen Gewicht die Restkapazität ausschöpft. Es kann gezeigt werden, dass im Falle des Bruchteilrucksacks die Verwendung mehrerer Gegenstände mit geringerem spezifischen Wert anstelle eines schon früher eingepackten Gegenstandes zu keinem besseren Gesamtwert führt. Für obige Instanz des 0 /1-Rucksack-Problems führt der beschriebene Greedy-Algorithmus zur Mitnahme aller Gegenstände außer Nr. 8 und 10. Dies ergibt ein Gesamtgewicht von 172. Die exakte Lösung 183 wird nicht ganz erreicht.
5.3.12 P-Probleme und NP-Probleme Problemen sieht man im Allgemeinen nicht an, ob sie aufwandsmäßig leicht oder schwer lösbar sind. Es ist sogar so, dass ganz ähnliche Probleme, deren Formulierung nur geringfügige Abweichungen aufweisen, fundamental unterschiedliche Aufwände zur Lösung beanspruchen. Die folgende Tabelle nennt zwei
Effiziente Algorithmen und Komplexität
Beispiele, die auch ohne tiefere Kenntnis der Graphentheorie prinzipiell verständlich sein sollten. leicht, d. h. in O(nk), k ≥ 1
schwer, d. h. in O(kn), k > 1
Finde den kürzensten Weg von Knoten A nach B in einem gegebenen gewichteten Graphen.
Finde den längsten Weg von Knoten A nach B in einem gegebenen gewichteten Graphen.
Existiert ein Weg von A nach B mit einem Gewicht G, mit G ≤ K?
Existiert ein Weg von A nach B mit einem Gewicht G, mit G ≥ K?
Die Klasse der leichten Probleme heißen P-Probleme. Der Namen erinnert an die Tatsache, dass der Aufwand (als Anzahl der Arbeitstakte einer deterministischen Turingmaschine zur Erzeugung eines Resultatwortes auf dem Band) zur Lösung eines Problems verschiedener Problemgrößen n (Eingabewortlängen) durch ein Polynom in n nach oben beschränkt werden kann. P ist die Klasse aller Probleme, die mithilfe deterministischer Algorithmen in polynomialer Zeit gelöst werden können. Mithilfe von Diagonalisierungstechniken und Zeithierarchiesätzen kann nachgewiesen werden, dass es (berechenbare) Probleme gibt, die nicht in P liegen. Außerdem gibt es eine Reihe von Problemen, für die gezeigt wurde, dass zu ihrer Lösung ein exponentieller Mindestaufwand erforderlich ist. Hinzu kommen Tausende von praktisch relevanten Problemen, von denen man nicht weiß – aber ganz stark vermutet – dass zu deren Lösung kein Polynomzeitalgorithmus existiert. Die größte Leistung der Komplexitätstheorie besteht darin, die meisten dieser Probleme in einer Menge der „allerschwersten“ Probleme zusammengefasst zu haben. Sie besitzen die folgende Eigenschaft: Wenn man für ein einziges Problem aus dieser Menge tausender Probleme eine Lösung in P findet, kann man auch alle anderen Probleme aus dieser Menge mit einem Polynomzeitalgorithmus lösen. (Es kommt sogar hinzu, dass man alle erforderlichen Lösungsalgorithmen aus dem einen gefundenen strikt ableiten kann, ohne dafür neu nachdenken zu müssen.) Die Tatsache, dass es trotz enormer Anstrengungen bis heute niemandem gelungen ist, ein solches Problem zu lösen, stützt die Vermutung, dass es keine effizienten Lösungen für alle diese Probleme gibt. Wie wurde diese Problemklasse definiert? Ein wichtiger erster Schritt ist die Hinzunahme des Nichtdeterminismus als theoretisches Konzept. Bekanntlich gestatten nichtdeterministische endliche Automaten eine Sprache wesentlich kompakter zu definieren
b S. 452
497
498
Theoretische Informatik
als deterministische Pendants. Ansonsten haben sie die gleiche Beschreibungsmächtigkeit. Bei Turingmaschinen (nicht bei Kellerautomaten) ist das ebenso. Damit ist von vornherein klar, dass die Rechenfähigkeit beim Übergang zu Nichtdeterminismus nicht erweitert wird. Der Nichtdeterminismus ist (lediglich) ein imaginäres Werkzeug zur Gewinnung von Strukturaussagen. Die Rechenzeit einer nichtdeterministischen Turingmaschine ist die Anzahl der Arbeitstakte, die zur Lösung eines Entscheidungsproblems (Akzeptanz eines Eingabewortes) auf dem kürzesten Wege erforderlich sind. Außerdem hat man die Vorstellung, dass eine Worst-case-Schranke für die Rechenzeit bekannt ist, sodass lange Rechnungen im Falle nicht akzeptierter Eingaben mit Ausgabe von 0 abgebrochen werden können. Die Klasse der NP-Probleme ist die Menge aller Probleme, die nichtdeterministisch in Polynomzeit gelöst werden können. Sowohl bei P als auch bei NP sind exakte Lösungsalgorithmen, nicht Näherungsverfahren, gemeint. Aufgrund der Eigenschaften von Turingmaschinen ist klar, dass nichtberechenbare Probleme nicht in NP liegen. Es gibt aber auch berechenbare Probleme, die vermutlich nicht in NP vorkommen. So ist z. B. nicht bekannt, ob jedes deterministisch in exponentieller Zeit lösbare Problem in NP liegt. Diese Betrachtung wird hier jedoch nicht vertieft. Deterministische Turingmaschinen können bekanntlich nichtdeterministische Turingmaschinen simulieren. Dann lässt sich das Verhalten einer nichtdeterministischen Turingmaschine, die ein Problem aus NP in Polynomzeit nichtdeterministisch entscheidet, wie folgt beschreiben: In einem ersten Schritt errät die Maschine einen Lösungskandidaten, etwa in Gestalt einer 0-1-Folge. Danach folgt ein Verifikationsschritt, der deterministisch arbeitet und den Lösungskandidaten überprüft. Beide Schritte erfordern Polynomzeit. Natürlich liegt jedes Problem aus P auch in NP. Auf der Basis der oben genannten Vorstellung von der Arbeitsweise der nichtdeterministischen Turingmaschinen ist dies einfach nachweisbar. Man braucht ja nur einen Lösungskandidaten in Polynomzeit deterministisch zu verifizieren. Der nichtdeterministische erste Schritt entfällt bzw. wird durch die deterministische Berechnung der Lösung ersetzt. Bis heute ist es niemandem gelungen zu zeigen, dass es ein Problem gibt, das nachgewiesenerweise zu NP aber nicht zu P gehört. Es ist also noch offen, ob P = NP oder P ⊂ NP gilt, obwohl niemand daran glaubt, dass P = NP zutrifft.
Rundreiseproblem b S. 493
Die schwersten Probleme in obigem Sinne werden NP-vollständig genannt. Unter Verwendung einer Reduktionstechnik kann ein betrachtetes Problem als NP-vollständig nachgewiesen werden, ohne eine ausführliche Betrachtung mithilfe von nichtdeterministischen Turingmaschinen anstellen zu müssen. Beispielsweise ist das Rundreiseproblem NP-vollständig.
I
Effiziente Algorithmen und Komplexität
Wenn „neue“ Probleme durch Bezug zu bekannten NP-vollständigen Problemen charakterisiert werden, kommt dem ersten nicht durch Reduktion beweisbaren Problem eine besondere Rolle zu. Die wurde von S. A. Cook (1971) gefunden. Er wies (mit Turingmaschinen) nach, dass das Erfüllbarkeitsproblem der Aussagenlogik NP-vollständig ist. Das Problem besteht in der Entscheidung, ob eine gegebene aussagenlogische Formel durch Belegung der darin enthaltenen Variablen mit wahr bzw. falsch erfüllbar ist. Der Satz von Cook gilt als eine der herausragendsten Leistungen der theoretischen Informatik.
5.3.13 Effiziente Näherungsalgorithmen Wenn es keine effizienten Programme zur Lösung mancher praktisch relevanter Probleme gibt, entsteht die Frage nach Näherungsalgorithmen, über deren Güte möglichst klare Vorstellungen bestehen sollten. Neben den bereits oben behandelten Verfahren wie • branch and bound mit Schätzfunktion für die Schranke und • greedy für „nicht-greedy-fähige“ Probleme gibt es eine Reihe weiterer approximativer Algorithmen, von denen einige im nachfolgenden Mosaik vorgestellt werden.
I
I I
Eine besondere Klasse von Verfahren sind stochastische Algorithmen. Sie werden auch probabilistisch (von propability = Wahrscheinlichkeit) genannt. Sie arbeiten mit Zufallszahlen. Höhere Programmiersprachen verfügen über Sprachelemente für Zufallszahlen, wie beispielsweise randomize und random. Da die Berechnung einer „Zufallszahl“ deterministisch – und gar nicht zufällig – erfolgt, spricht man lieber von Pseudozufallszahlen. Im Wesentlichen werden die folgenden 4 Klassen stochastischer Algorithmen unterschieden: 1. numerische stochastische Algorithmen 2. Sherwood-Algorithmen 3. Las-Vegas-Algorithmen 4. Monte-Carlo-Algorithmen Stochastische Algorithmen sind grundsätzlich nichtdeterministische Algorithmen, in denen ein Zufallselement die Steuerung beeinflusst. Programme benutzen dafür Pseudozufallszahlen. Während Sherwood-Algorithmen immer das richtige Ergebnis ausgeben und folglich in die Klasse der determinierten Algorithmen gehören, sind Monte-Carlo-Algorithmen nichtdeterminierte Algorithmen. Sie irren sich gelegentlich, d. h., die angegebene Lösung ist mit einer vorgegebenen Wahrscheinlichkeit falsch. Las-Vegas-Algorithmen geben entweder ein richtiges Ergebnis zurück oder finden keines. Insofern können sie im Allgemeinen nicht in die Gruppe der determinierten Verfahren eingeordnet werden. Numerische stochastische Algorithmen produzieren eine Näherungslösung mit wählbarer Genauigkeit. Sie stellen eine Art nichtdeterminierter Simulation dar.
B Stephen Cook wurde 1940 in Buffalo (New York) geboren, arbeitete als Professor in Berkeley und Toronto und hat neben der Theorie der NP-Vollständigkeit über 50 Beiträge zur Komplexitätstheorie verfasst.
499
Effiziente Näherungsalgorithmen – ein Überblick
Da sich zahlreiche, gerade für praktisch relevante Fragestellungen inte ressante Verfahren einer effizienten Bearbeitung verschließen, müssen Näherungsalgorithmen, (Approximationsverfahren) herangezogen werden. Dabei erwartet man, dass die effizient berechnete Näherungslösung nur geringfügig von dem – leider unbekannten – Optimum abweicht. Entsprechende Nachweise, die hier nicht betrachtet werden können, sind mitunter sehr schwer zu erbringen. Heuristiken
Der Name „heuriskein“ stammt aus dem Griechischen und bedeutet so viel wie „finden“ oder „entdecken“. Eine Heuristik ist ein Verfahren, das zur Lösung eines Problems sinnvoll erscheint. Es kann allerdings nicht garantiert werden, dass es (immer) funktioniert. Im täglichen Leben werden Heuristiken beispielsweise in Gestalt von Faustregeln bereitgehalten. Probabilistische Algorithmen Auf den ersten Blick scheinen probabilistische Algorithmen Heuristiken zu sein. Die Integration des Zufalls kann man sich sicherlich als eine sehr einfache (blinde) Heuristik vorstellen – eine Faustregel ohne dahinter stehende Idee. Der entscheidende Unterschied zwischen Heuristiken und probabilistischen Algorithmen besteht darin, dass man bei letzteren streng analytisch vorgeht und für wohldefinierte Mengen per Zufall Entscheidungen trifft. Dadurch wird die Fehlerwahrscheinlichkeit solcher Verfahren bestimmbar. Bei Heuristiken, die auf Intuition beruhen, ist das im Allgemeinen nicht der Fall. Für NP-vollständige Probleme sind Heuristiken sehr willkommen, bieten sie doch die vermutlich einzige Möglichkeit einer näherungsweisen Lösung. Lokale Suche Versucht man auf dem Weg zur optimalen Lösung in jedem Entscheidungspunkt mit der lokal vorhandenen Information auszukommen, spricht man von lokaler Suche. Der „Entscheidungsaufwand“ ist gering, die Effizienz entsprechend hoch. Greedy-Verfahren gehören zu dieser Gruppe. Wie sieht es mit der Ergebnisqualität solcher Verfahren aus?
Wie wir in Abschnitt 5.3.11 bereits erfahren haben, kann ein solches Verfahren nur unter bestimmten Voraussetzungen eingesetzt werden. Für das Bruchteil-Rucksackproblem findet es das (exakte) Ergebnis, für das 0/1-Rucksackproblem jedoch nicht. Im zweiten Fall erhält man eine durchaus brauchbare Näherung. Man spricht auch von einer Greedy-Heuristik – mit den oben genannten Schwächen. Greedy-Heuristiken zeichnen sich dadurch aus, dass sie stets nach einer (lokalen) Verbesserung streben. Sie sind weder bereit, eine Entscheidung zu revidieren noch eine vorübergehende Verschlechterung hinzunehmen. Wenn wir eine Greedy-Idee zur approximativen Lösung des Rundreiseproblems (bAbschnitt 5.3.9) anwenden, bedeutet das, gerade den Knoten als nächsten in die Rundreise einzubinden, der den größten Gewinn realisiert, d.h. eine kürzere Rundreise beschert. Eine (recht kurzsichtige) Methode besteht darin, den Knoten, der dem jeweils aktuellen Standort am nächsten liegt, auszuwählen (nearest neighbor heuristic). Diese Strategie liefert im Allgemeinen keine guten Ergebnisse. Bessere Resultate erzielt die Anwendung der farthest insertion: Beginnend mit den am engsten zusammen liegenden Knoten erweitert man dabei die Tour um jeweils den Knoten, dessen Minimalabstand zu einem bereits auf der Rundreise liegenden Knoten maximal ist. Diese Technik führt mindestens zu ebenso guten Werten, wie die random insertion, die einen zufällig ausgewählten noch unbenutzten Knoten so integriert, dass die Rundreiselänge minimal wird. Die lokale Suche entspricht dem Vorgehen beim Erklimmen eines Berggipfels und wird deshalb auch hill climbing search genannt. Auch die folgende Illustration trifft den Sachverhalt: Man verfährt wie ein Autofahrer, der bei Nacht und Nebel versucht, sein Hotel auf dem Gipfel eines Berges zu erreichen. Am Fuße des Berges angekommen, entscheidet er sich an jeder Weggabelung für die Fortsetzung mit dem größten Anstieg. Natürlich kann er den Verlauf des Weges nur ein kleines Stück einsehen. Aber diese lokale Information ist das Einzige, das der Fahrer heranzieht, um dem Hotel schrittweise näher zu kommen. Dabei besteht natürlich die Gefahr auf einen Nebengipfel zu geraten und von dort aus das Hotel in gar nicht allzu großer Ferne sehen zu können, ohne dort zu sein. Die Methode kann also anstelle des globalen ein lokales Optimum ermitteln.
I
Threshold accepting, simulated annealing, Tabu-Suche Dem eben beschriebenen „Nebengipfel-Problem“ begegnet man, indem ein besseres Verfahren zwischenzeitliche Verschlechterungen in Kauf nimmt. Dabei arbeitet man mit einer Toleranzschwelle (threshold) T. Würde eine lokale Veränderung zu einer Bewertung führen, die mehr als T unter der der Vorgängerlösung liegt, wird sie verworfen und eine andere versucht. Unser Autofahrer darf dann auch Straßen mit (anfangs) sehr geringem Gefälle benutzen.
dort wieder wegzukommen. Überraschenderweise kommt es bei Problemen mit größeren Werten für die Problemgröße n kaum noch vor, dass Thresholdaccepting-Verfahren zu lokalen Optima führen. Es ist natürlich keine Kunst, einen Threshold-accepting-Algorithmus zum Scheitern zu bringen, indem man als Startlösung gerade die Nebengipfel-Position wählt. So etwas kommt in der Praxis fast nie vor. Bei den beiden oben genannten Verfahren kann es passieren, dass ein oder mehrere Schritte rückgängig gemacht werden. Um zu sichern, dass in jedem Schritt wirklich nur neue Lösungen erzeugt werden, muss man die vorangegangenen k Lösungen speichern. Dies geschieht in sogenannten Tabu-Listen, die eine oder mehrere Warteschlangen implementieren. Stimmt ein neuer Kandidat mit einer historischen Lösung in einer Tabu-Liste überein, wird er nicht genommen. Eine solche Heuristik nennt man Tabu-Suche.
I
I
Sintflut-Algorithmus
I
I
Finden über längere Zeit keine Verbesserungen statt, senkt man T langsam auf null, was gerade dem weiter oben beschriebenen hill climbing entspricht. Anfangs kann T sogar so groß gewählt werden, dass dadurch kaum Beschränkungen entstehen. Threshold accepting kann nicht garantieren, dass wirklich das globale Optimum gefunden wird: Ist der Autofahrer nach einiger Fahrzeit (und schon reduziertem T) erst einmal auf einem Nebengipfel gelandet, kommt er von dort nicht wieder weg. Um dies zu vermeiden, haben Scott Kirkpatrick, C. D. Gellat und M.P. Vecchi vom IBM-Forschungszentrum Yorktown Heights (USA) 1983 die Idee des simulierten Ausglühens, simulated annealing, entwickelt: Anstelle beim Unterschreiten des Schwellwertes T den neuen Lösungsvorschlag generell zu verbieten, wird zufällig entschieden, ob man den Kandidaten nicht doch zulässt. Die Wahrscheinlichkeit für diese Genehmigung hängt dabei von der Größe der TÜberschreitung ab: Kleine Verschlechterungen werden eher toleriert als größere. Dies schließt nicht aus, dass gelegentlich (langfristig allerdings sehr selten) sehr große Abweichungen zu T zugelassen werden, was den Rückzug vom Nebengipfel ermöglicht. Leider musste man feststellen, dass sich Simulatedannealing-Verfahren sehr leicht in lokalen Optima verfangen und relativ lange Zeit benötigen, um von
Während Threshold-accepting-Verfahren für jeden Schritt einen Schwellwert vorgeben, finden wir bei Sintflut-Algorithmen eine Art globale untere Schranke S für den Zielfunktionswert. In jedem Schritt kann man sich völlig frei zwischen besserer und schlechterer Lösung entscheiden, wenn nur S dadurch nicht unterschritten wird. Im weiteren Verlauf dieses Prozesses wird S langsam erhöht, bis die Freiheitsgrade für weitere Schritte versiegen. Eine anschauliche Vorstellung dieser Technik liefert eine Sintflut, die den Wasserstand (S) auf der Erde langsam, aber dennoch unweigerlich immer weiter ansteigen lässt, und zwar solange, bis ein Bergsteiger, der vor den Wassermassen auf einen möglichst hohen Punkt zu flüchten versucht, ertrinkt. Zwischenzeitlich war ihm aber jeder Aufstieg genauso möglich wie jeder Abstieg in ein Tal, wenn es nicht bereits überflutet ist. Zahlreiche Anwendungen der beschriebenen Heuristiken haben gezeigt, dass der Sintflut-Algorithmus beinahe genauso gut ist wie threshold accepting, allerdings nicht ganz so stabil in der Qualität der Lösungen. Bei geschickter Implementierung ist Sintflut etwas schneller. Im Gegensatz zu simulated annealing arbeiten threshold accepting und Sintflut deterministisch. Einige Untersuchungen legen den Schluss nahe, dass diese Verfahren, die die Veränderungsschritte berechnen anstatt sie zufällig zu ermitteln, besser abschneiden.
Evolutionäre, insbesondere genetische Algorithmen Während sich der Sintflut-Algorithmus an einem physikalisch-technischen Prozess orientiert, adaptieren evolutionäre Algorithmen bestimmte Gesetze der Biologie, insbesondere der Populationsgenetik. Dabei werden ganze Populationen (nicht einzelne Individuen) und deren genetisch bedingte Entwicklung betrachtet. Evolutionäre Algorithmen beruhen auf Forschungsergebnissen auf drei Teilgebieten: den genetischen Algorithmen, den Evolutionsstrategien und dem evolutionären Programmieren. Wir beschreiben hier nur genetische Algorithmen. Lokale Verbesserungsstrategien, die wir schon beim hill climbing kennengelernt haben, können auch nach dem Vorbild der Natur stattfinden. Man modifiziert eine ganze Population von Lösungen, die den Chromosomen entsprechen. Diese Modifikation erfolgt durch Kreuzung (cross-over) einzelner Lösungen und durch anschließende Auslese (Selektion). Diese Auslese erfolgt nach dem Prinzip die besten Exemplare zu übernehmen und die anderen wegzulassen. Zur Beurteilung der Güte wird eine Fitness-Funktion benutzt.
I
Würde man sich nur auf die Kreuzung vorhandener Lösungspaare beschränken, wären echte Verbesserungen schon nach wenigen Zyklen nicht mehr zu erwarten. Deshalb sind Mutationen als gravierende genetische Veränderungen notwendig. Auf diese Weise können völlig unbrauchbare wie hervorragende Lösungen entstehen. Eine Güteverbesserung kann sich durch Mutation unmittelbar einstellen oder erst in späteren Generationen sichtbar werden. Das Verfahren stoppt nach einer gewissen Anzahl von Zyklen, wenn sich keine weiteren Verbesserungen in gewünschter Dimension einstellen.
Evolutionäre Algorithmen werden häufig hybrid, d. h. im Zusammenwirken mit anderen Methoden, z. B. Heuristiken, angewandt. Mit Heuristiken lassen sich Anfangspopulationen herstellen, die danach mit evolutionären Algorithmen verbessert werden. Neuronale Netze
I
Neuronale Netze stellen ein Produkt der Neuroinformatik dar. Sie reflektieren die Fortschritte in der Gehirnforschung, die die Anwendung mathematischer Modelle ermöglichen. Ein neuronales Netz besteht aus einer Vielzahl (künstlicher) Neuronen (Nervenzellen), die untereinander über gewichtete Verbindungen gekoppelt sind. Die Gewichte repräsentieren die hemmende oder erregende Art der Reizweiterleitung, die in der Natur von den Synapsen über Dendriten (inputKanal) bzw. über das Axon (output-Kanal) an die Synapsen stattfindet. Die Synapsen sind so etwas wie die Andock- oder Kontaktstellen benachbarter Neuronen. Ab einem bestimmten Schwellwert eingehender Signale „feuert“ ein Neuron, d. h., dass ein elektrisches Signal an andere Neuronen weitergegeben wird. Es ist möglich, dass ein empfangenes Neuron seinerseits zum Feuern angeregt wird. Ein neuronales Netz erzeugt zu Eingangsdaten bestimmte Ausgangsdaten, die sich aus der Zusammenschaltung und „Reizverarbeitung“ der (sehr einfach strukturierten) Neuronen ergeben. Dabei wird es zu Beginn des Einsatzes eines neuronalen Netzes so sein, dass zu bekannten Ein-Ausgabe-Paaren nicht die gewünschte Ausgabe hergestellt wird. Eine Lern- oder Trainingsphase ist erforderlich. Dabei werden die Gewichte solange korrigiert, bis das Netz das gewünschte Verhalten zeigt. Erst danach kann es auf echte Eingaben und damit zur Lösung entsprechender Problem instanzen eingesetzt werden. Genetische Algorithmen leisten gute Dienste für neuronale Netze, indem sie beispielsweise Lerndaten generieren und Gewichte optimieren. Backpropagation-, Hopfield- (rückgekoppelte) und (selbstorganisierende) Kohonen-Netze sind inzwischen wohleta blierte Vertreter dieser Algorithmen. Inzwischen hat man sehr gute Ergebnisse bei der näherungsweisen Lösung NP-vollständiger Probleme und Aufgaben der Mustererkennung mit neuronalen Netzen erzielt. Man akzeptiert den Einsatz solcher Systeme auch in sensiblen Bereichen, wie etwa der Flugnavigation.
Das Wichtigste im Überblick
Theorie der formalen Sprachen und Automatentheorie
Alphabet: endlich, nicht leer {a,b,…z,0,1,…9,_ ,!}
Wortmenge: abzählbar unendlich {accz, barkuf, h!5n3, …} Sprache 1
Wort: accz, barkuf, …
Sprache 2
Sprache n
Sprache: abzählbar unendlich (selten: endlich)
Wie definiert man formale Sprachen (als abzählbar unendliche Mengen)?
formale Grammatik
abstrakte Automaten
Gehört ein gegebenes Wort zur Sprache oder nicht?
Grammatikklassen
Automatenklassen
Sprachklassen
503
504
Das Wichtigste im Überblick
Berechenbarkeitstheorie und Komplexitätstheorie
Problem
nein
Ist das Problem mathematisch definierbar?
Problemlösung entzieht sich der Computerwelt.
nachgewiesenermaßen nein
ja
ja
Existiert eine algorithmische Lösung?
Berechenbarkeitstheorie
Das Problem ist absolut unlösbar.
nein
(höchstwahrscheinlich) nein
Gibt es einen effizienten Algorithmus?
nein
Ist ein effizienter Algorithmus bekannt?
ja
Algorithmus entwickelt?
Näherungslösung
Effiziente Algorithmen und Komplexität
ja
Problemlösung
ja
Aufgaben
Aufgaben 5.1 Formale Sprachen und Automaten Aufgabe 5.1.1 a) Wiederholen Sie die Begriffe „Syntax“ und „Semantik“ von Wörtern bzw. Sätzen! b) Bestimmen Sie die Semantik des folgenden Satzes der deutschen Sprache! „Der Apfel fällt nicht weit vom Stamm.“ Ist dieser Satz syntaktisch korrekt? Begründen Sie Ihre Entscheidung! c) Notieren Sie einen „Satz“ (Programm) in PASCAL mit der Bedeutung: Addiere zu A die Zahl 2 solange, bis A größer ist als 20. Beginne mit A = 3. d) Worin besteht der Unterschied zwischen den Begriffen „Zahl“ und „Zahlwort“? Aufgabe 5.1.2 Das Alphabet Arömisch, über dem sämtliche römische Zahlwörter gebildet werden, ist Arömisch = {I, V, X, L, C, D, M}. a) Tragen Sie alle Regeln zur Erzeugung römischer Zahlen über Arömisch zusammen und geben Sie diese verbal an! b) Nennen Sie zwei Zahlwörter, die nur Zeichen aus Arömisch enthalten, aber gegen wenigstens eine dieser Regeln verstoßen! Aufgabe 5.1.3 Gegeben sei die formale Grammatik G = (N, T, P, s) mit N = {Telefonnummer, Vorwahl, Teilnehmernummer, Ziffer}, T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –}, P = {Telefonnummer → Vorwahl – Teilnehmernummer, Vorwahl → 0 Ziffer Ziffer Ziffer Ziffer, Teilnehmernummer → Ziffer Ziffer Ziffer Ziffer Ziffer • Ziffer Ziffer Ziffer Ziffer Ziffer Ziffer • Ziffer Ziffer Ziffer Ziffer Ziffer Ziffer Ziffer, Ziffer → 0 • 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 }, s = Telefonnummer. a) Geben Sie zwei Telefonnummern an, die sich aus dem Spitzensymbol ableiten lassen! b) Notieren Sie die Ableitung für die Nummer 03124 –160815 in der Form „Telefonnummer ⇒ … ⇒ 03124 –160815“!
c) Geben Sie für die Ableitung von 03124–160815 einen Ableitungsbaum an! d) Wie viele syntaktisch korrekte Telefonnummern werden mit der oben angegebenen Grammatik definiert?
Aufgabe 5.1.4 Geben Sie den jeweiligen Ergebnistyp (entweder „Zeichen“ oder „Wort“) an! a) Zeichen ° Zeichen → ......................... b) Wort ° Zeichen → ......................... c) Zeichen ° Wort → ......................... d) Wort ° Wort → ......................... Aufgabe 5.1.5 Stellen Sie fest, ob die Verkettungsoperation für Zeichenketten kommutativ bzw. assoziativ ist und beweisen Sie gegebenenfalls das Vorliegen dieser Eigenschaften! Hinweis: Kommutativität: w1 ° w2 = w2 ° w1 Assoziativität: (w1 ° w2) ° w3 = w1 ° (w2 ° w3) Aufgabe 5.1.6 a) Wie viele Zeichenketten können durch Verkettung von Elementen aus der Menge M = {"heute", "ball", "!", "werfen", "_"} gebildet werden? b) Geben Sie eine Zeichenkette an, die nicht durch Verkettung von Wörtern aus M erzeugbar ist!
505
506
Theoretische Informatik
Aufgabe 5.1.7 Gegeben sei das Alphabet A = {K, q, L}. a) Wie viele verschiedene Wörter der Länge vier können über A gebildet werden? Geben Sie drei davon an! b) Wie viele verschiedene Wörter, deren Länge nicht größer als vier ist, gibt es über A? Aufgabe 5.1.8 Ermitteln Sie die Anzahl der Elemente der Menge A0 ∪ A1 ∪ A2 ∪ … ∪ An, wenn das Alphabet A genau m Elemente besitzt! Aufgabe 5.1.9 a) Wie viele Elemente besitzt die Wortmenge A*, wenn das zugehörige Alphabet A genau 6 Zeichen enthält? b) Wie viele Sprachen gibt es in A*? Aufgabe 5.1.10 Stellen Sie fest, ob Gdangling = (N, T, P, s) mit N = {A, B, V}, T = {if, then, else, a, b}, P = {V → if b then A else A • if b then A, A → a • V} und s = V eindeutig ist! Begründen Sie Ihre Entscheidung! Hinweis: Nutzen Sie Ihre Erfahrungen im Programmieren mit PASCAL und denken Sie daran, dass die IF-THENELSE-Anweisung im THEN-Teil und im ELSE-Teil beliebig verschachtelt werden kann Aufgabe 5.1.11 Warum können für die Ableitungen von Wörtern kontextsensitiver Sprachen – definiert durch Chom sky-Typ-1-Grammatiken – keine Ableitungsbäume angegeben werden? Aufgabe 5.1.12 Geben Sie für die Sprache der Palindrome LPali = {w • w ∈ {a, b}* und w = umkehr(w)} eine kontextfreie Grammatik GPali an! Hinweis: Bedenken Sie, dass Wörter mit der in der Definition angegebenen Eigenschaft symmetrisch sind. Die Symmetrieachse kann durch ein Zeichen oder zwischen zwei Zeichen verlaufen. Im ersten Fall ist •w• ungerade und im zweiten gerade. Palindrome: OTTO, RENTNER, REITTIER
Aufgabe 5.1.13 Geben Sie eine kontextfreie Grammatik Garith = (N, T, P, s) zur Definition der Sprache der korrekt geklammerten arithmetischen Ausdrücke an, wobei T = {a, (,), +, ·} ist! Aufgabe 5.1.14 Warum gelingt es nicht, für L = {w • w = anbncn, n ≥ 1} eine kontextfreie Grammatik anzugeben? Aufgabe 5.1.15 Welche Eigenschaft von Chomsky-Typ-0-Grammatiken verhindert die Lösbarkeit des Wortproblems? Aufgabe 5.1.16 Geben Sie für folgende Sprachen je einen regulären Ausdruck an! a) Sprache der Uhrzeiten der Form XY:VW, mit den üblichen Werten für X, Y, V und W. b) Sprache der Geldbeträge der Form XYZ,VW Euro. Bedenken Sie, dass X und Y entfallen, also nicht null sind, wenn es sich um einstellige Euro-Beträge handelt. c) Sprache der E-Mail-Adressen der vereinfachten Form [email protected], wobei angenommen wird, dass name, x und y Wörter über einem Alphabet ohne Sonderzeichen sind.
@
Aufgabe 5.1.17 Geben Sie für die Sprache der Uhrzeiten aus Aufgabe 5.1.16 a) einen deterministischen endlichen Automaten an! P Verwenden Sie AutoEdit. Hinweis: Falls Sie AutoEdit an dieser Stelle zum ersten Mal verwenden, hilft Ihnen der Einführungsassistent. Sie benötigen nur wenige Minuten, um sich auf diese Weise mit der Systembedienung vertraut zu machen. Aufgabe 5.1.18 Geben Sie für die Sprache der Euro-Geldbeträge aus Aufgabe 5.1.16 b) einen nichtdeterministischen endlichen Automaten an! P Verwenden Sie AutoEdit.
Aufgaben
P
P
P
Aufgabe 5.1.19 Definieren Sie einen nichtdeterministischen Kellerautomaten, der genau die Sprache der Palindrome aus Aufgabe 5.1.12 akzeptiert! Verwenden Sie AutoEdit. Protokollieren Sie die Konfigurationsfolge für die Akzeptanz des Wortes abba ohne Sackgassen! Aufgabe 5.1.20 Könnte die Sprache der Palindrome über {a, b} mit durch ! markierter Wortmitte durch einen deterministischen Kellerautomaten akzeptiert werden? Beispielsweise gehören die Wörter a!a ab!ba und bba!abb zu dieser Sprache. Begründen Sie Ihre Antwort und illustrieren Sie – wenn notwendig – die Arbeitsweise des Automaten an einem Beispiel! Verwenden Sie AutoEdit. Geben Sie die vollständige Definition des DKA an, dessen Eingabealphabet {a, b, !} ist! Aufgabe 5.1.21 Protokollieren Sie die Arbeit der im Folgenden definierten Turingmaschine S = (Z, S, Γ, δ, z0, –h, E), wenn sie auf die Bandinschrift …$ I I I$… angesetzt wird! Es gelten Z = {zr, zl, ze}, S = {I}, Γ = {I, $}, z0 = zr, –h = $ und E = {z }. e δ ist definiert durch δ(zr, I) = (zr, I, R), δ(zr, $) = (zl, I, L), δ(zl, I) = (zl, I, L), δ(zl, $) = (ze, $, R). Verwenden Sie AutoEdit und protokollieren Sie die Arbeit der TM unter Verwendung der folgenden, nur teilweise ausgefüllten Tabelle! Takt
Zustand
Bandsituation
1
zr
...$ I I I$...
2
zr
...$ I I I$... ...
3
zr
4
zr
5
zl
6
...
7 8 9 ...
Aufgabe 5.1.22 Gesucht ist eine Turingmaschine, die angesetzt auf eine Bandinschrift der Form ...$IIIIIII$IIII$... den Bandinhalt ...$IIIIIIIIIII$... hinterlässt und den Kopf wie zu Beginn der Abarbeitung auf das erste I (von links gesehen) stellt. Eine solche Maschine könnte als „a+b“-Berechner interpretiert werden. Im Beispiel wurde 7 + 4 = 11 dargestellt. Konstruieren Sie eine solche Turingmaschine und geben Sie deren vollständige Definition an! P Verwenden Sie AutoEdit.
5.2 Berechenbarkeitstheorie Aufgabe 5.2.1 Erläutern Sie, was ein Algorithmus ist! Aufgabe 5.2.2 Stellen Sie fest, welche der folgenden Aussagen richtig sind und welche nicht! Kann man in jedem Fall eine Entscheidung treffen? Begründen Sie! a) Für jede mathematische Formel gibt es ein PASCAL-Programm zu deren Berechnung. b) Für jede mathematische Formel gibt es genau ein PASCAL-Programm zu deren Berechnung. c) Jeder Algorithmus kann durch eine Formel f der Gestalt y = f(x1, ..., xn) beschrieben werden. d) Definition: Ein Dorfbarbier ist der Mann im Dorf, der alle männlichen Dorfbewohner rasiert, die sich nicht selbst rasieren. Zu beurteilende Aussage: Der Dorfbarbier rasiert sich nicht selbst. e) P sei ein Programm, das wahr ausgibt, wenn x2 + } 1x – 7 für eine beliebige ganzzahlige Eingabe ein ganzzahliges Ergebnis ausgibt. Es gibt tausende PASCAL-Programme für P. f) Es gibt überabzählbar unendlich viele algorithmisch unlösbare Probleme. Aufgabe 5.2.3 Machen Sie sich vollständig klar, weshalb die Diagonalverfälschung beim cantorschen Diagonalisierungsverfahren zwingend notwendig ist! Eine Veränderung von Werten einer Zeile oder Spalte würde also nicht ausreichen. Aufgabe 5.2.4 Gegeben sei das Alphabet A = {a, b}. Sei v eine Gödelisierung für w ∈ A* wie folgt:
507
508
Theoretische Informatik
v(w) = p1z 1· p2z 2· … · pnz n, mit Primzahlen pi, wobei im Beispiel zi ∈ {1, 2} gilt, wegen a → 1 und b → 2. a) Bestimmen Sie v("abba") = 21· 32 · 52 · 71 ! b) Stellen Sie fest, ob 12600 und 381150 unter v Gödelnummern sind! Falls dies der Fall ist, geben Sie die zugehörigen Wörter an! Beschreiben Sie das dabei angewandte Verfahren ausführlich! Aufgabe 5.2.5 Weisen Sie nach, dass die Multiplikation zweier natürlicher Zahlen eine primitiv-rekursive Funktion ist!
Aufgabe 5.3.3 Welchen praktischen Gewinn brächte P = NP? Aufgabe 5.3.4 Wenden Sie die greedy-Methode auf das 0/1-Rucksackproblem an und bestimmen Sie die Güte der dadurch erzielten Näherung für eine Reihe von Beispielen! Vergleichen Sie dabei die exakten Werte mit den Näherungswerten und bestimmen Sie den größten prozentualen Fehler.
5.3 Effiziente Algorithmen und Komplexität Aufgabe 5.3.1 } das VerStellen Sie rechnerisch fest, ab welchem n fahren mit dem polynomialen Aufwand a) y = f(n) = n, b) y = n log2n (wird als polynomial betrachtet) bzw. c) y = f(n) = n2 gegenüber y = f(n) = 2n vorzuziehen ist! Skizzieren Sie außerdem die Graphen der vier Funktionen in ein und dasselbe Koordinatensystem! Aufgabe 5.3.2 a) Schreiben Sie ein Programm zur Berechnung der n-ten Fibonaccizahl auf der Basis der rekursiven Definition dieser Zahlenfolge! b) Bauen Sie anschließend die Technik des memoizing in das Programm ein! c) Vergleichen Sie die Aufwände in beiden Fällen! Bestimmen Sie diese empirisch (Zeitmessung bzw. Anzahl von Elementaroperationen) und versuchen Sie danach, den Aufwand mit theoretischen Mitteln zu bestimmen!
Aufgabe 5.3.5 Verwenden Sie ein Routenplanungsprogramm aus dem Internet, um den kürzesten Weg zu einem Ihrer Urlaubsziele zu bestimmen! Warum findet das Programm in so erstaunlich kurzer Zeit eine Lösung, wo doch die Routenplanung zu den NP-Problemen gehört?
Sind alle Arbeiten, die vorstellbar sind, auch auf einem Rechner programmierbar? Gibt es Grenzen für den Computereinsatz? Können Computerprogramme denken? Ist das menschliche Gehirn ein Computer? Können Computer lachen?
510
Ausblick – Computer: Chancen und Grenzen
6.1
Grenzen der Programmierung und der Informatik
1993 begannen Bund und Länder die Entwicklung eines einheitlichen Softwaresystem für die rund 650 Finanzämter der Bundesländer. Zuletzt arbeiteten 40 verbeamtete und 150 angestellte Steuerfachleute, Programmierer und Softwareentwickler im Projekt FISCUS („Föderales Integriertes Standardisiertes Computer-Unterstütztes Steuersystem“); es wurde jedoch nie fertig entwickelt. Über einen Zeitraum von zwölf Jahren gab die öffentliche Hand rund 900 Millionen Euro Entwicklungskos ten, ohne ein brauchbares Ergebnis zu erhalten. Der Bundesrechnungshof beanstandete seit dem Jahr 2000 die FISCUS-Entwicklung – ohne ernsthafte Folgen. Im Jahr 2000 wurde die Entwicklung der mit dem eingesetzten Personal neu gegründeten privaten fiscus GmbH übertragen. Bis zum Jahr 2004 erstellte die fiscus GmbH einige Teilanwendungen, darunter die OnlineStammdatenabfrage, ein Programm für die Grunderwerbssteuer und ein Programm für Bußgeldverfahren und Strafsachen, ohne das Gesamtprogramm vorlegen zu können. Deshalb beschloss die Finanzministerkonferenz 2005, die fiscus GmbH zu liquidieren und ein neues Projekt KONSENS (Koordinierte neue Softwareentwicklung der Steuerverwaltung) zu starten. Die abgestellten Beamten wurden wieder in den Finanzverwaltungen eingesetzt, die Angestellten entlassen. Damit scheiterte das „aufwendigste Informationstechnik-Projekt in der Verwaltung der Bundesrepublik Deutschland,“ wie es der Berliner Landesrechnungshof nannte. Warum haben sich so viele Fachleute bei der Einschätzung einer informatischen Entwicklungsaufgabe derart verschätzt? Mit einiger Übung und Erfahrung lernen Softwareentwickler doch, den Aufwand zur Bewältigung einer Aufgabe abzuschätzen. Wieso kommt es dann immer wieder zu gewaltigen Fehleinschätzungen, sodass die Entwicklung eines fertigen Programms viel länger dauert als ursprünglich erwartet und die Kosten den ursprünglich gesetzten Rahmen weit überschreiten? FISCUS ist kein Einzelfall, es ist nur ein besonderes schwerwiegendes Beispiel solcher Fehleinschätzungen. Der finanzielle und zeitliche Rahmen, den die Auftraggeber gesetzt haben, ist bei FISCUS nach 12 Jahren und fast eine Milliarde Euro an seine Grenzen gestoßen, ohne ein brauchbares Produkt zu liefern. Nun glaubt niemand, dass die Prozesse der Steuerverwaltung nicht durch Programme abgebildet und unterstützt werden können. Hier ist vor allem der Arbeits- und Abstimmungsaufwand unterschätzt worden. Angesichts eines solchen Scheiterns stellen sich aber einige grundsätzliche Fragen zur Programmierung und zum Informatikeinsatz. (A) Sind alle Arbeiten, die vorstellbar sind, auch auf einem Rechner programmierbar? (B) Ist alles, was sich prinzipiell mit Papier und Bleistift berechnen lässt, programmierbar? (C) Wie viel Aufwand ist nötig, um ein solches Programm zu entwickeln? (D) Welche Grenzen des Programmierbaren oder der Informatik gibt es?
Grenzen der Programmierung und der Informatik
6.1.1 Theoretische Grenzen Programmierbarkeit und Berechenbarkeit Es ist leicht, Aufgaben zu nennen, für die man keine erfolgreiche Vorgehensweise kennt, um sie zu programmieren: Korrekte Übersetzung vom Deutschen ins Französische gehört sicher zu den ungelösten Aufgaben, ebenso der mathematische Beweis der Existenz unendlich vieler Primzahlzwillinge. Kann ein Computerprogramm diese Aufgaben lösen? Zurzeit sicher nicht und man könnte sich zurücklehnen und sagen: „Noch nicht!” Oder mit dem gleichen Recht, nämlich keinem, erklären: „Niemals!” Die Frage A, ob alles Denk- und Wünschbare programmierbar sei, scheint weitgehender als die Frage B, ob alles Berechenbare programmierbar sei. Um dies mit Sicherheit sagen zu können, müsste man aber wissen, was denn „berechenbar” ist. Diese Frage hat sich tatsächlich der bedeutendste Mathematiker am Ende des neunzehnten Jahrhunderts gestellt. Der Göttinger Mathematikprofessor David Hilbert (1862 – 1943) schlug ein „Grundlagenprogramm” der Mathematik vor, das u. a. eine präzise Klärung des Begriffs „Berechenbarkeit” erstellen sollte. Die Frage erwies sich als äußerst schwierig. In den ersten Jahrzehnten des zwanzigsten Jahrhunderts wurden unterschiedliche Vorschläge für diese Präzisierung vorgestellt. Der aus heutiger Sicht spannendste Vorschlag kam 1936 von dem jungen britischen Mathematiker Alan Mathison Turing (1912 – 1954), der in seiner Veröffentlichung „On computable numbers with an application to the Entscheidungsproblem“ eine Papiermaschine beschrieb, die das Rechnen mit Bleistift und Radiergummi auf Karopapier formalisiert. Er argumentierte, dass eine Maschine mit einem unbegrenzt großen Vorrat an Karopapier und einem endlichen Satz einfacher Regeln, einem Programm, wie man heute sagen würde, gerade so wie ein menschliches Gehirn arbeitet, wenn es nach einem erlernten Verfahren rechnet. Diese „Turingmaschine” erwies sich bis heute als äquivalent (oder überlegen) zu allen anderen Vorstellungen von Berechenbarkeit, so dass man heute „Turing-Berechenbarkeit” als eine Art Definition der Berechenbarkeit interpretiert. Ein exakter Beweis, dass dies nun alles sei, was berechenbar ist, ist allerdings nicht möglich – dazu ist ein so schillernder Begriff wie „Berechenbarkeit” zu vage. Interessant ist, dass Turings Papiermaschine recht gut mit einem modernen programmierbaren Computer vergleichbar ist. Auch ein Computer arbeitet nach den endlich vielen Regeln eines Programms, er beschreibt schrittweise einen Speicher (und löscht ihn gelegentlich) und solange man noch externe Speichermedien findet, kann man den Speicher nach Bedarf erweitern. Nicht-berechenbare Funktionen Turing konnte mit seiner Papiermaschine nachweisen, dass keineswegs jede definierbare mathematische Funktion über den natürlichen Zahlen oder einem endlichen Vorrat von Zeichen auch berechenbar ist. Benutzt
Zwei Zahlen heißen Primzahlzwilling, wenn sie beide Primzahlen sind und dazwischen nur eine einzige gerade Zahl liegt. So sind 3 und 5 Primzahlzwillinge, ebenso wie 17 und 19 oder 41 und 43. Es sind ziemlich viele Primzahlzwillinge bekannt und es wird vermutet, dass es beliebig viele gibt.
B
B
b Abschnitt 5.2.5, S. 471 ff.
511
512
Ausblick – Computer: Chancen und Grenzen
man den Begriff der mathematischen Abbildung, so folgt das aus der „Überabzählbarkeit” definierbarer Funktionen f: N → N und der bloßen „Abzählbarkeit“ der Menge aller Programme. Es gibt zwar unendlich viele Programme, sie reichen aber trotzdem nicht aus, um alle definierbaren Funktionen zu programmieren. Anders ausgedrückt: Es gibt „nicht-berechenbare” Funktionen und damit „nicht-programmierbare” Aufgaben. Die Frage A, ob alles Vorstellbare auch programmiert werden kann, muss demnach negativ beantwortet werden. Damit wird für eine konkrete Fragestellung, wie der nach der Konstruktion einer menschenähnlichen Übersetzungsmaschine oder einem bestimmten mathematischen Beweis aber nichts Endgültiges ausgesagt. „Noch nicht!” oder „Niemals!” bleiben mögliche Meinungen zur prinzipiellen Programmierbarkeit, aber man sollte zurückhaltend mit starken Meinungsäußerungen umgehen, wenn man keine Idee hat, wie eine bestimmte Aufgabe denn programmiert werden könnte. Die Frage B, ob sich alles Berechenbare auch programmieren lässt, ist von Turings Ergebnis scheinbar nicht berührt, weil man diese Frage B ja gerade beantwortet, indem man eine präzise Turingmaschine angibt oder einen Computer explizit programmiert, um eine bestimmte Aufgabe zu lösen. Findet man so eine exakte Lösung mittels eines Programms, so wird der Rechner angeworfen und nur auf das Ergebnis gewartet. Die größten bis 2005 gefundenen Primzahlzwillinge besitzen über 51 000 Stellen. Zurzeit (2006) gibt es keinen anerkannten Beweis, dass es unendlich viele Primzahlzwillinge gibt, obwohl die Mehrzahl der Mathematiker das sicher erwartet. Dieses vertrackte Problem steht durchaus im Zentrum zahlentheoretischer Forschung. Ein 2004 veröffentlichter Be weisversuch von R. F. Arenstorf enthält einen Fehler und wurde vom Autor zurückgezogen.
Oder gibt es da doch ein Problem? Wie wäre die Frage zu beantworten, ob es noch neue, bislang unbekannte Primzahlzwillinge gibt? Das ist im Prinzip ganz einfach: Um zu erkennen, ob eine Zahl n (größer 3) eine Primzahl ist, testet man einfach mit einem Programm, ob sie durch eine kleinere Zahl (außer 1) teilbar ist. Anschließend testet man, ob n – 2 eine Primzahl ist. Falls es unendlich viele Primzahlzwillinge gibt, wird nach hinreichend langer Rechenzeit stets ein neuer Zwilling gefunden. Da man aber wenig über die Lücken zwischen benachbarten Primzahlzwillingspaaren weiß, kann dieses Verfahren sehr lange dauern – vielleicht viel länger als der Computer das aushält. Schlimmer wird es freilich, falls es gar nicht unendlich viele Primzahlzwillinge geben sollte; dann rechnet das kleine Programm, nachdem es den größten Primzahlzwilling ermittelt hat, immer weiter, ohne jemals ein weiteres Ergebnis zu erzielen. Aber das weiß man nicht und die Frage B, ob nämlich alles Berechenbare auch programmierbar sei, lenkt auf ein unentscheidbares Problem: Man weiß bei manchen wohldefinierten Rechenvorgängen und ihren entsprechenden Programmen nicht, ob sie jemals enden werden.
Grenzen der Programmierung und der Informatik
Komplexität und eingesetzte Mittel Der Aufwand, den ein Programm an Zeit oder Speicherplatz verbraucht, kann beachtlich werden. In manchen Fällen ist nicht vorherbestimmbar, ob die einsetzbaren Mittel überhaupt ausreichen, etwa bei der Frage nach dem „nächsten” Primzahlzwilling. Aber auch, wenn man weiß, dass es eine Lösung geben muss, können Zeit oder Speicherbedarf über handhabbare Grenzen hinauswachsen. Manche Fragestellungen haben einen Rechenaufwand, der unabhängig von der Eingabe ist. So kann man nahezu mühelos zu jeder negativen Zahl –n ihr positives Gegenstück +n angeben. Man vertauscht einfach das Minuszeichen mit einem Pluszeichen. Solche Probleme gelten, ebenso wie Fragen, deren Rechenaufwand bloß linear mit der Länge der Eingabe wächst, als gut skalierbar. Ein einfaches Beispiel für lineare Skalierbarkeit ist die Addition zweier gleich langer Zahlen. Für jede Ziffer sind maximal drei Ziffern zu addieren, nämlich die beiden Eingaben und ein eventueller Übertrag. Damit wächst der Aufwand n des Addierens linear mit der Länge n der Eingaben. Dieses Wachstum heißt lineares Wachstum. Anders sieht es beim Multiplizieren nach der üblichen Schulmethode durch Verschieben und Addieren aus: Hier müssen n Additionen für eine Multiplikation mit n Stellen ausgeführt werden. Bei zwei gleich langen Eingaben müssen also n2 Operationen ausgeführt werden; die Komplexität dieses Verfahrens wächst quadratisch. Oft wird versucht, solche Komplexitäten zu reduzieren. In einem fairen Fußballturnier müssten eigentlich alle Mannschaften gegen alle spielen. n(n-1) Spiele, wie aus dem Beispiel der Bei n Mannschaften wären das } 2 Tabelle für fünf Mannschaften ableitbar ist. Fußballturnier mit 5 Mannschaften (Spiel: ×; kein Spiel: –)
A
A
B
C
D
E
–
×
×
×
×
B
–
–
×
×
×
C
–
–
–
×
×
D
–
–
–
–
×
E
–
–
–
–
–
Bei den 32 Mannschaften der Weltmeisterschaft wären das 31·16 = 496 Spiele. Bei täglich fünf Spielen würde das Turnier dann einhundert Tage ohne Pause dauern. Als Ausweg werden Schichten gebildet – beginnend mit der Vorrunde, in der alle vier Mannschaften einer Gruppe gegen alle anderen Gruppenmitglieder spielen. Das sind 8 Gruppen mit je 6 Spielen. Danach wechselt das Verfahren. Es folgt ein Auswahlsystem, bei dem sich nur noch Sieger treffen – vom Achtelfinale bis zum Finale. Dies sind
I
Das ist freilich keine untere Schranke für die Multiplikation. Es sind schnellere Multiplikationsverfahren zur maschinellen Programmierung bekannt.
513
514
Ausblick – Computer: Chancen und Grenzen
weitere 8 + 4 + 2 + 1 = 15 Begegnungen. Und weil Fußballregeln nicht immer logisch sind, gibt es ein zusätzliches Spiel um den 3. Platz. Die Gesamtzahl der Begegnungen wird so von 496 auf 64 begrenzt – eine handhabbare organisatorische Komplexitätsreduktion. Manche Probleme sind aber komplizierter. Sollen alle möglichen Kombinationen aus n verschiedenen Elementen gebildet werden, so wächst die Komplexität dieser Aufgabe exponentiell an. Würde ein Autohersteller ein Modell mit neun möglichen Ausstattungsvarianten wie heizbarem Außenspiegel, Automatikgetriebe, verschließbarem Tank, MP3-Spieler, Glasschiebedach, Biodieselmotor, getönten Scheiben, Liegesitzen oder Breitwandreifen anbieten und alle möglichen Kombinationen auf jeweils einer Katalogseite beschreiben, so besäße dieser Katalog einen Umfang von wenigstens 29 Seiten. Das ist ein 512 Seiten starker Katalog. Beim VW Golf bietet der Hersteller aber 12 Motorenvarianten, 4 Frontscheibenvarianten, 3 Türvarianten, 10 Radiovarianten usw. an. Einige Ausstattungen schließen sich wechselseitig aus, sodass 47 Ausstattungen unabhängig voneinander gewählt werden können. Ein vollständiger Katalog aller möglichen bestellbaren Golf-Varianten wüchse dann auf 247 Seiten an, also auf über 140 Billionen Seiten. Auch bei Volkswagen wird niemals alles gebaut werden, was möglich wäre. Solche exponentiell wachsenden Kombinationsprobleme sind auch mit den schnellsten Rechnern und den größten Platten und den schnellsten Druckern niemals bearbeitbar – sie bilden eine praktische Grenze der Komplexität und die Frage C lässt sich nicht mehr positiv beantworten. Es gibt Fragestellungen, deren programmierte Lösung mehr Mittel oder Zeit verlangen, als wir bereitstellen können. Erkennbare Grenzen der Programmierung und der Informatik
I
Nicht alles, was prinzipiell berechenbar ist, ist auch praktisch programmierbar. Man kann nur das mit Programmen bearbeiten, was in vernünftiger Zeit mit den vorhandenen Mitteln der Hardware und Software bearbeitet werden kann. Wenn diese stets beschränkten Mittel und Zeiten überschritten werden, muss man effektivere Verfahren finden – oder auf denkbare programmierte Lösungen verzichten. Weil man die Fragen A, B und C nicht positiv beantworten kann, gibt es prinzipielle Grenzen der Berechenbarkeit. Diese Grenzen sind grundsätzlich, wenn man nicht-berechenbare Funktionen programmieren will, oder sie hindern an einer praktischen Überwindung, wenn man auf unmäßige Mittelanforderungen stößt. Solange freilich immer mehr Aufwand in die Verbesserung der Mittel gesteckt wird, mag man auf Verbesserungen hoffen. Die wichtigste Verbesserung ist die fast gesetzmäßige Verbesserung der Hardware, die mit
Grenzen der Programmierung und der Informatik
großer Regelmäßigkeit schnellere Prozessoren und größere Speicher bereitstellt. Vieles, was jetzt nicht machbar erscheint, mag in zehn oder zwanzig Jahren mit besseren Prozessoren und größeren Speichern programmierbar werden. Wenn aber die Laufzeit, der Speicherbedarf oder die Zahl der Druckseiten exponentiell zum Umfang der Eingabedaten anwachsen, dann hilft auch ein noch so rasantes Wachstum der Mikroelektronik nicht weiter. Das Katalogbeispiel macht deutlich, dass es unmäßige Mittelanforderungen geben kann, die niemals erfüllt werden können. Leider ist es nicht einfach, eine prinzipielle Unlösbarkeit eines konkreten Problems oder seine praktische Unlösbarkeit nachzuweisen – und selbst dann kann es doch noch brauchbare Näherungslösungen geben. In der Frage der Übersetzung menschlicher Sprachen gibt es aber nicht einmal eine klare Zielfunktion, denn auch menschliche Übersetzer sind sich nicht immer einig, was denn eine gute Übersetzung ist. Näherungsweise mag ein Programm so eine Übersetzung erreichen – aber die konkreten Anforderungen können sehr verschieden sein, sodass man wohl immer nur Annäherungen der Übersetzung an das Original erreichen kann (mit Menschen wie mit Computern). Allerdings sind alle bislang vorgestellten Computerübersetzungen noch nicht einmal eine akzeptable Näherung an die durchschnittliche Leistung menschlicher Übersetzer.
Der industrielle Entwicklungsplan dazu heißt mooresches Gesetz: Alle 18 bis 24 Monate verdoppelt sich die Zahl der Transistorfunktionen auf einem Chip. Ohne diese Basis hätte man keine billigen, schnellen Computer.
6.1.2 Praktische, rechtliche und ethische Grenzen Gibt es neben der Grenze der Berechenbarkeit und des rechnerischen Aufwandes weitere Grenzen für die Programmierung und die Informatik? (Frage D) Dazu muss man sich von der engen Vorstellung, Programmieren sei nur das Schreiben von Anweisungsfolgen für Rechnerhardware, lösen und die weiten Kontexte der Informatik betrachten. Dies kann hier nur gestreift werden. Eine Vertiefung müsste auf andere Disziplinen neben der Informatik zurückgreifen. Materielle Grenzen der Computertechnik Die technischen Möglichkeiten wachsen von Jahr zu Jahr, aber mit schnelleren Prozessoren und immer größer werdenden Speichern, wächst auch die Gefahr, dass diese materiellen Strukturen Fehler aufweisen. Das können Konstruktionsfehler sein, wie sie auch bei der Software allzu häufig zu finden sind, aber es können auch Ausfälle sein, weil Material nun einmal altert. Auch das beschränkt prinzipiell programmierbare Prozesse praktisch. Bei digitaler Technik gibt es glücklicherweise Methoden der Codierung, die Fehler entdecken oder gar korrigieren können. Leider sind diese Methoden sehr aufwendig, sodass beispielsweise eine Audio-CD nur zu einem Drittel Original-Aufnahmedaten trägt, aber zu zwei Dritteln mit fehlerkorrigierendem und fehlerentdeckendem Code beschrieben ist. Bei DVDs und Festplatten ist dieses Verhältnis von Nutzdaten zu Fehlerkorrekturen noch ungünstiger.
b auch „Grenzen der Anwendung von Informatik und informationsverarbeitender Technik“, S. 12
I
515
516
Ausblick – Computer: Chancen und Grenzen
Ökonomische und rechtliche Grenzen Die Frage nach den Grenzen der Informatik hat auch noch ganz andere Facetten. Im Hintergrund stehen vor allem ökonomische Fragen: Wie viel Geld und Zeit kann lohnend investiert werden, um mit den entstehenden Produkten diese Investition zurückzugewinnen? Das FISCUS-Projekt ist vor allem an diesen finanziellen und zeitlichen Grenzen gescheitert. Gelegentlich wird auf die alternative Entwicklung von Software als Freeware oder in Open-Source-Projekten hingewiesen, wo eine finanzielle Entschädigung entfallen kann, weil die Entwickler sich als Teil einer hilfreichen Gemeinschaft verstehen. Doch selbst wenn Entwickler auf eine materielle Entschädigung verzichteten, bliebe immer eine Grenze durch die für ein Projekt aufwendbare Zeit. Diese Ökonomie der Zeit kann niemals ignoriert werden. Neben ökonomischen Fragen gewinnen juristische Randbedingungen immer größere Bedeutung. Informatisches Handeln unterliegt nicht nur zivilrechtlichen Vertragsbedingungen und eventuellen Strafen, denn verkaufte Software muss versprochene Eigenschaften erfüllen und gemessen am Stand der Technik so fehlerarm wie möglich sein. Nachlässigkeiten können dem Produkthaftungsrecht unterliegen, nach dem Ersatz oder Reparatur zu leisten ist, aus dem aber auch Schadensersatzansprüche aus fehlerhaftem Verhalten von Software abgeleitet werden können. Unter Umständen kann Soft- und Hardware sogar strafrechtlich von Bedeutung sein. Dies gilt, wenn Software z. B. dazu dient, Daten auszuspähen (§ 202a Strafgesetzbuch), Daten unzulässig zu verändern (§ 303a StGB) oder Computersabotage (§ 303b StGB) zu unterstützen. Auch Programme und Geräte, die hauptsächlich zur Umgehung eines „wirksamen Kopierschutzes” dienen, dürfen nach dem Urhebergesetz (§ 95a UrhG) weder hergestellt noch in den Handel gebracht werden. Bei ihrer rechtswidrigen Benutzung drohen strafrechtliche Konsequenzen. StGB § 202a Ausspähen von Daten (1) Wer unbefugt Daten, die nicht für ihn bestimmt und die gegen unberechtigten Zugang besonders gesichert sind, sich oder einem anderen verschafft, wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft. (2) Daten im Sinne des Absatzes 1 sind nur solche, die elektronisch, magnetisch oder sonst nicht unmittelbar wahrnehmbar gespeichert sind oder übermittelt werden.
StGB § 303a Datenveränderung (1) Wer rechtswidrig Daten (§ 202a Abs. 2) löscht, unterdrückt, unbrauchbar macht oder verändert, wird mit Freiheitsstrafe bis zu zwei Jahren oder mit Geldstrafe bestraft. (2) Der Versuch ist strafbar.
Grenzen der Programmierung und der Informatik
StGB § 303b Computersabotage (1) Wer eine Datenverarbeitung, die für einen fremden Betrieb, ein fremdes Unternehmen oder eine Behörde von wesentlicher Bedeutung ist, dadurch stört, dass er 1. eine Tat nach § 303 a Abs. 1 begeht oder 2. eine Datenverarbeitungsanlage oder einen Datenträger zerstört, beschädigt, unbrauchbar macht, beseitigt oder verändert, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft. (2) Der Versuch ist strafbar. Grenzen anständigen Handelns Jenseits dieser gesetzlichen Bestimmungen muss man fragen, ob manche Techniken der Informatik nicht einfach unmoralisch sind. Dies zeigt sich schon bei Software, die dazu dient, Menschen zu belästigen, zum Beispiel durch das Versenden unerwünschter Mails. In manchen Ländern wird der Spam-Versand („unerbetene kommerzielle Kommunikation durch elektronische Post”) unter Strafe gestellt – in anderen dagegen nicht. Nach einigen vom Bundesamt für Sicherheit in der Informationstechnik (BSI) angeführten Studien belastet dieser unerwünschte Mailversand das Netz inzwischen mit bis zu 90% der gesendeten E-Mails. Ein wachsender Anteil dieser Spam-Mails wird mit offensichtlich betrügerischen Absichten versendet, z. B. zum Ausspähen von Kontoverbindungen und den zugehörigen Kennwörtern. Österreich hat seit dem 1.3.2006 ein neues „Anti-Spam-Gesetz”, das der einschlägigen EU-Richtlinie angepasst ist. Werbe-E-Mails ohne vorherige Zustimmung des Empfängers sind dort generell nicht zulässig. In Deutschland greift unter bestimmten Umständen das Wettbewerbsrecht – oder bei Betrugsversuchen oder dem Versand von Computerviren u. Ä. das Strafrecht. Dem Bundestag liegt ein Entwurf einer „Änderung des Teledienstegesetzes” von der Grünen-Fraktion vor. Darin wird Spam zwar nicht generell untersagt wie in Österreich, wohl aber das Verschleiern oder Verheimlichen des Mail-Absenders, des kommerziellen Inhalts der Mail im Betreff oder die Nutzung fremder Rechner zum Versenden. Selbst wenn man von den Betrügern absieht, wird wohl kein SpamVersender davon ausgehen, dass Menschen froh darüber sind, unerwünschte Werbesendungen zu erhalten, die bloß per E-Mail versendet werden, weil dies der bei weitem billigste Weg des „Marketing” ist. Besonders fragwürdig wird es, wenn die Adressen unfreiwilliger Opfer mit technischen Mitteln wie Web-Bots ausgespäht werden und diese gar als vorgebliche Absender eingesetzt werden. Auch wenn dies im Einzelfall (noch) nicht verboten sein mag, werden die weitaus meisten Informatiker dies als ethische Schranke des Programmierbaren erkennen.
Spam ist die ursprüngliche Abkürzung für spiced pork and ham („gewürztes Schweinefleisch und Schinken“), was in einem Sketch von Monty Python für penetrante Werbung stand. In die Internetsprache umgedeutet steht Spam als Abkürzung für send phenomenal amounts of mail („enorme Mengen an E-Mail versenden“).
517
518
Ausblick – Computer: Chancen und Grenzen
6.2
Computer und Gehirn
Es gibt eine gewisse Tradition, Werkzeuge als Verlängerungen oder Verstärkungen des menschlichen Körpers zu interpretieren. Ein Hammer kann als eiserne Faust, eine Zange als eiserner Griff verstanden werden. Ist auch der Computer eine Verstärkung des Körpers? Kann man Computerprogramme als fixierte Denkprozesse verstehen und ist der Computer vielleicht eine maschinelle Erweiterung des menschlichen Gehirns?
B
Das Buch erschien 1948, auf Deutsch bei Econ in Düsseldorf.
In der Frühzeit der Computerentwicklung um 1950 haben nicht nur Journalisten den Namen „Elektronengehirn” verwendet. Es gab Bücher, die das Wort im Titel führten und komplizierte Vergleiche zwischen den Bauelementen elektronischer Rechenanlagen und den aktuellen Einsichten zum menschlichen Gehirn auflisteten. Unterstützt wurde dies durch die damals neue wissenschaftliche Bewegung der Kybernetik. Der große amerikanische Mathematiker Norbert Wiener (1894 – 1964) regte Ende der 1940er-Jahre eine Reihe von wissenschaftlichen Tagungen an, auf denen die strukturellen Gemeinsamkeiten und Ähnlichkeiten so unterschiedlicher Wissensgebiete wie der Biologie, Mathematik, Ökonomie, Psychologie oder der Elektrotechnik unter den Aspekten von Steuerung und Regelung diskutiert wurden. Mit seinem Buch: „Kybernetik. Regelung und Nachrichtenübertragung im Lebewesen und in der Maschine“ schuf Wiener einen gemeinsamen Titel für diese sehr unterschiedlichen Forschungsgebiete. Die Tatsache, dass die Kybernetik etwa gleichzeitig mit dem Bau der ersten elektronischen Rechenautomaten entstand, hat zu wechselseitigen Einflüssen geführt, die aber nie sehr tief gingen. Im Zentrum der Kybernetik stand die Erklärung von rückgekoppelten Reiz-Reaktionsschemata, also von Folgen einzelner Handlungen, deren Ergebnisse selber wieder zum Anlass neuer, veränderter Handlungen wurde. Mit diesen Rückkoppelungsschleifen gelang es, komplex aussehende Handlungsketten auf einfache Schritte zurückzuführen. In der Biologie wurde die kybernetische Modellierung recht erfolgreich eingesetzt, in anderen Anwendungsfeldern ist ihr Einfluss weitgehend verschwunden. Die Kybernetik war freilich nie auf die digitale Rechentechnik der Informatik und die Programmierung beschränkt; sie verstand sich als wesentlich umfangreichere wissenschaftliche Denkfigur.
6.2.1 Können Computerprogramme denken? Auch Alan Turing, der 1936 den Begriff der Paper Machine als allgemeines Modell aller denkbaren Rechenmaschinen einführte, hat über die Verwendung des Begriffs „Intelligenz” bei Rechenmaschinen nachgedacht. Ganz im Geiste der damals, zumindest in den angelsächsischen Ländern vorherrschenden psychologischen Denkschule des „Behaviorismus“, derzufolge geistige Tätigkeiten allein durch das Verhalten von Menschen (oder Tieren) beobachtet und analysiert werden sollen, überlegte sich Turing ein Imitationsspiel, um allein durch Fragen und Antworten über Intelligenz zu entscheiden.
Computer und Gehirn
Mit den heutigen Mitteln wäre dies Spiel mit drei vernetzten Terminals realisierbar: An einem Terminal sitzt der Frager, der Fragen als Text eingeben kann und auf einem Bildschirm die Antworten der anderen beiden Teilnehmer lesen und bewerten kann. Die anderen Teilnehmer bleiben für diesen Frager unsichtbar. Der Frager soll nun innerhalb einer gewissen Zeit, z. B. fünf Minuten, entscheiden, wer von den beiden Antwortern ein Mann und wer eine Frau ist. Mit einem ähnlichen Aufbau ließe sich die Frage nach der maschinellen Intelligenz entscheiden. Man nimmt jetzt nur zwei Terminals. An einem Ende sitzt der Frager, am anderen entweder ein „intelligentes Programm”, das automatische Antworten generiert, oder ein Mensch. Wenn der Frager am Ende der Befragung eines Computerprogramms nicht mehr zuverlässig weiß, ob er mit einem Menschen oder einem Computer verbunden war, sollte man dem Programm wohl eine gewisse „Intelligenz” zubilligen, meint Turing. Das Spiel wird übrigens im Rahmen eines Wettbewerbs jährlich gespielt und die Leistungen der Simulationsprogramme, die natürlich auch unsinnige Antworten geben und geben dürfen (wie die Menschen auch) sind recht eindrucksvoll. Ob sich allerdings daran Intelligenz erweist, die mit der menschlichen Intelligenz vergleichbar ist, bleibt doch recht fragwürdig. Andererseits muss man zugeben, dass kein Mensch auch nur die geringste Chance hätte, in diesem Spiel einen Computer zu simulieren, sobald dessen Stärken gefordert werden, also beispielsweise die Primzahlen zwischen Zehntausend und Einhunderttausend aufzuzählen oder auch nur die fünfte Wurzel von 314 159 265 zu ziehen. Eigentlich ging es Turing auch nicht um eine exakte Beschreibung menschlicher Intelligenz, sondern um die angemessene Beschreibung der sprachlichen Verwendung des Wortes „Intelligenz“. Er vermutete, dass um das Jahr 2000 herum Computerprogramme geschrieben werden könnten, die im Imitationsspiel mit 70% Wahrscheinlichkeit bei fünfminütiger Befragung als Menschen durchgingen. Seine Schlussfolgerung ist: „Die ursprüngliche Frage ,Können Maschinen denken?‘ halte ich für zu bedeutungslos, um diskutiert zu werden. Dennoch glaube ich, dass sich am Ende des Jahrhunderts die Verwendung und die allgemeine Einstellung so verändert haben, dass man, ohne Widerspruch erwarten zu müssen, von denkenden Maschinen sprechen kann.“ Tatsächlich gibt es heute mindestens zwei verschiedene Verwendungen von „intelligenter Maschine” oder „intelligentem Programm“ – einer umgangssprachlichen, womit man einen gewissen Respekt vor der Fähigkeit des Programmierers ausdrückt, weil er eine überraschende Leistung eines Programms demonstriert, und einer „seriöseren”, wo man letztlich zugeben muss, dass man noch nicht einmal weiß, was Intelligenz bei Menschen genau bedeutet.
http://www.loebner. net/Prizef/loebnerprize.html
B Das Zitat stammt aus: Alan M. Turing, Computing machinery and intelligence, MIND, VOL. LIX. No. 236, Okt. 1950
519
520
Ausblick – Computer: Chancen und Grenzen
Turing hat sich im gleichen Artikel vorgestellt, dass man eine Maschine zu intelligenten Leistungen in einem langwierigen Ausbildungsprozess erziehen könnte. Diese Ideen spielen eine gewisse Rolle bei „künstlichen neuronalen Netzen” oder bei „lernenden Programmen”, ohne dass dies bislang zu anerkannten „denkenden Maschinen“ oder auch nur breiteren praktischen Anwendungen geführt hätte. Ein rühriger Zweig der Informatik, die „künstliche Intelligenz (KI)”, hat sich seit Mitte der 1950er-Jahre vorgenommen, Computerprogramme zu schreiben, die intelligentes Verhalten simulieren. Das hat sich als recht fruchtbare Leitidee erwiesen, sodass die KI heute in eine Fülle von Teilgebieten zerfallen ist. Die urspüngliche Idee, ein menschliches Gehirn zu simulieren, ist dabei aber immer weiter aus dem Blickfeld gerückt. Heute interessiert man sich in der KI viel eher dafür, das „intelligente” Schwarmverhalten von Bienen, Fischen oder Ameisen zu verstehen. Zusammenfassend muss man feststellen, dass die Frage „Können Computerprogramme denken?” zu schwammig ist, um sie akzeptabel zu beantworten. In der Informatik wird diese Frage deshalb nicht mehr ernsthaft verfolgt. Auch in den Forschungen zur künstlichen Intelligenz geht es nicht mehr darum, ein maschinelles Gehirn zu programmieren, sondern darum, bei einzelnen Anwendungen konkretes „intelligent erscheinendes“ Verhalten mit Rechnerprogrammen maschinell nachzuahmen – oder zu übertreffen. Zweifellos können Rechner schneller rechnen als Menschen, schneller sortieren, schneller eine optimale Zugverbindung zwischen zwei Bahnhöfen finden oder feinfühliger ein Anti-Blockier-System der Autobremse steuern. Darüber hinaus können Programmpakete komplexe Produktionsvorgänge steuern, dreidimensionaler Ultraschallbilder von Föten filmen oder fußballspielende Robothunde koordinieren und fahrerlose Fahrzeuge erfolgreich durch eine unbekannte Wüstenstrecke leiten. All diese und zehntausende weiterer Programmbeispiele konkurrieren mit intelligenten menschlichen Analysen und Tätigkeiten. Bei speziellen, konkreten Aufgaben mag man also durchaus von „intelligenten Programmen” sprechen. Intelligentes Alltagsverhalten oder gar „Bewusstsein” ist bei Computern und Robotern allerdings noch nicht beobachtet worden und man weiß nicht, wie man so etwas modellieren und programmieren sollte – und ob man es überhaupt kann.
6.2.2 Ist das menschliche Gehirn ein Computer? Während er Nachweis, dass Computer ähnlich wie menschliche Gehirne arbeiten, trotz der fünfzig Jahre Informatik und KI-Forschung bislang ausblieb, gibt es auch Wissenschaftler die die umgekehrte Frage stellen: Ist das menschliche Gehirn ein Computer?
Computer und Gehirn
Ganz sicher benehmen sich Menschen anders als reale Computer und die Wissenschaft weiß viel zu wenig über das menschliche Gehirn, um zu dessen Funktion, zum Bewusstseins oder zu unserer Psyche eine umfassende oder gar abschließende Antwort zu geben. Zwar ist die Mehrheit der Wissenschaftler wohl davon überzeugt, dass das menschliche Bewusstsein allein auf materielle Prozesse im menschlichen Körper zurückzuführen ist und das Denken im Gehirn stattfindet. Unklar ist dennoch, wie Denken und Bewusstsein genau entstehen und ob man diese Prozesse auch außerhalb eines menschlichen oder tierischen Körpers erzeugen kann. Angesichts dieser gewaltigen Herausforderung ist vielleicht verständlich, dass manche Wissenschaftler zum bislang einzigen funktionierenden Beispiel einfacher maschineller „Denkprozesse“, dem Computer, greifen, um das viel komplexere Verhalten des Gehirns und sogar der Seele zu erklären. Die „Metapher” des programmierten Gehirns hat sich bereits im Alltag festgesetzt. Der Psychologe Dietrich Dörner hat sogar ein Buch mit dem Titel „Bauplan für eine Seele” geschrieben, in dem psychische Vorgänge in Form programmartiger Strukturen beschrieben werden. Dörner erklärt sein Vorhaben mit den Worten: „Um die Seele zu erklären, muss ich sie als informationsverarbeitendes System begreifen. Natürlich ist die Seele keine Maschine im Sinne eines Staubsaugers, sondern ein unwahrscheinlich kompliziertes Gebilde. Der Grundbauplan allerdings ist gar nicht so schwer zu entschlüsseln.“ Dem hält der amerikanische Neurophysiologe und Nobelpreisträger Gerald M. Edelman in entgegen, dass es keinen wissenschaftlichen Grund gibt, Gehirn und Computer miteinander in eine enge Beziehung zu setzen. „Denken … hängt von Körper und Gehirn ab. Es ist verkörpert. Sinn ergibt sich aus Beziehungen zu körperlichen Bedürfnissen und Funktionen. Der Geist ist kein Spiegel der Natur. … Gedächtnis lässt sich nicht durch interne Codes oder syntaktische Systeme beschreiben. Man braucht außerdem ein Selbst und ein Bewusstsein höherer Ordnung, um all seine linguistischen Manifestationen erklären zu können.”
Das Buch „Bauplan für eine Seele“ ist erschienen bei Rowohlt, Reinbek, 1989.
Das Zitat stammt aus: Gerald M. Edelmann, Göttliche Luft, vernichtendes Feuer, München: Piper, 1995.
Kein existierender Computer kann als halbwegs differenziertes Modell eines Gehirns herhalten. Es gibt jedoch Ansätze, wenigstens die Funktion einzelner Elemente des Nervensystems mit Hilfe von Computerprogrammen nachzubilden. Am Polytechnikum Lausanne soll zusammen mit der IBM im BlueBrain-Projekt die nur wenige Millimeter große neokortikale Säule junger Ratten dynamisch mit einem Computerprogramm nachgebildet werden. Es geht also nicht um ein ganzes Rattenhirn, sondern nur um einen winzigen Teilbereich. Schon dafür müssen rund 10 000 Neuronen in einem
http://bluebrainproject.epfl.ch/ und Technology Review (http://www.heise. de/tr/artikel/74873)
521
522
Ausblick – Computer: Chancen und Grenzen
Programm beschrieben und ihre Verknüpfung mittels 50 Millionen Synapsen programmiert werden. Dazu benötigt man die Rechenleistung eines „Superrechners.” Für eine Simulation in „Echtzeit”, die das Programm so schnell wie die Nervenzellen der jungen Ratte ablaufen ließe, reicht allerdings auch ein solcher Superrechner nicht aus.
6.2.3 Können Computer lachen? Das radikal neue am Computer ist, dass man manche Denkprozesse, besonders solche, die mit Rechnen zu tun haben, programmieren kann, sodass Computer Aufgaben, die dem Menschen schwerfallen, extrem schnell und zuverlässig lösen können. Andererseits gibt es viele Fragen, die der Mensch ganz leicht beantworten kann, die man aber nicht oder noch lange nicht programmieren kann. So fällt es Menschen ganz leicht, Gesichter wieder zu erkennen; Computerprogramme haben da enorme Schwierigkeiten. Dem Menschen fällt es dagegen schwer, eine Kette von Additionen und Divisionen fehlerfrei durchzuführen. Computer lassen sich für eine solche Rechnung leicht programmieren und sie machen dabei so gut wie nie Fehler.
I
Karl Steinbuch, Automat und Mensch, Heidelberg-BerlinNewYork: SpringerVerlag, 1966
Vielleicht lässt sich Intelligenz daran erkennen, dass die Menschen über sich selbst nachdenken – und sogar über sich lachen können. 1966 hat Karl Steinbuch, ein Pionier der Rechentechnik und der Kybernetik, darüber nachgedacht, ob ein Computer Witze verstehen kann. Steinbuch vermutet, dass es schon möglich sei, einen Computer so zu programmieren, dass er guten Witz erkennen könnte, dass es aber sehr, sehr aufwendig wäre, ein solches Programm zu schreiben. Ein Beweis dieser Vermutung steht auch ein halbes Jahrhundert später noch aus, denn bislang ist noch kein Rechner beim Lachen ertappt worden.
524
Anhang
Register Symbole @ 188 1. Normalform 158 1:1-Beziehung 157 1:n-Beziehung 63, 157 2. Normalform 158 3. Normalform 158 3D-Grafik 138 3D-Kreisdiagramm 150 8-Damen-Problem 491 λ-Kalkül 42 µ-rekursive Funktion 42, 477 A A/D-Wandler 407 A1-Bezugsart 147 Abakus 68 Abfrage 155 Ableitungsbaum 441 – Wurzel 442 Absatzabstand 126 Absatzeinzüge 125 Absatzformatierung 125, 130 Absatzkontrolle 130 Abschnitt in Textdokumenten 128 absoluter Zellbezug 147 abstrakte Klasse 265, 279 abstrakte Methode 267 abstrakter Datentyp 46, 48, 308 abstraktes Datenobjekt 48 Abstraktionsfunktion 52 Abtrennungsregel 57 abzählbar unendlich 445 Account 190 Ackermann, F. Wilhelm (1896 –1916) 476 Ackermann-Peter-Funktion 476, 480 Addieren von Dualzahlen 374 additiven Farbmischung 136 Adleman, Leonhard M. (geb. 1945) 103, 104
ADO 48 Adressbus 357, 358, 378 Adresse 396 Adressierung – direkte 218 – indirekte 218 ADSL 427 ADT 46, 48, 308 – Schnittstelle 48 – Tabellen 315 Aggregation 65, 262 AGP 380 Aibo 418 Airbrush 140 Akkumulatortechnik 287, 289 Aktor 406 Akut 26 Akzeptanzverhalten eines Automaten 451 Al-Chwarizmi, Muhammad ibn Musa (787 – um 850) 30 algebraischer Listentyp 309 algebraische Spezifikation – einer Schnittstelle 48 – eines abstrakten Datentyps 50 algebraische Typen 307 ALGOL 60 210 Algorithmen – äquivalente 31 Algorithmenstrukturen 32 Algorithmierung 246 Algorithmik 479 algorithmische Unlösbarkeit 463 algorithmisch unlösbare Probleme 466 Algorithmus 30, 42, 95, 462 – determinierter 499 – effizienter 31, 42, 484 – Eigenschaften 30 – evolutionärer 502 – genetischer 502 – linearer 33 – nichtdeterminierter 31, 499
– nichtdeterministischer 31, 42 – nichtsquenzieller 31 – Notationsformen 32 – numerischer stochastischer 499 – probabilistischer 500 – stochastischer 499 Aliasname 188 Allgemeingültigkeit eines Algorithmus 31 Alphabet 212, 443 alphanumerisch 162 Altavista 193 Alternative 56, 371 ALU 70, 361 analog 68 Analog-/Digital-Umsetzer 407, 408 Analyseformen 482 Analytical Engine 66 AND 220, 369 Androide 405 Anfangsknoten 312 Anfangszustand 47 Anfassen 76 angewandte Informatik 10, 11 Animationen in Präsenta tionen 176 Anordnung in Zeichenprogrammen 142 ANSI-Zeichensatz 25, 26 Antivalenz 220, 371 Antivirenprogramm 108 Anweisung 39 – bedingte 230 – einfache 221 – Konzepte 221 Anweisungsfolge 33 Anwendersoftware 69 API 387, 391 Applet 198, 259 Applikation 198, 259 Applikationsoperator 282, 283 applikative Programmiersprache 41 APT 416 äquivalente Algorithmen 31
äquivalente Ausdrücke 57 Aquivalenz 56, 373 Äquivalenzproblem für Programme 468 Arbeitsfeld 121 Arbeitsschutz 92 Archie 190 arithmetischen Zahlenfolge 150 arithmetischer Operator 220 ARPANET 186 ARRAY 238 array 28, 214 ASCII-Text 182 ASCII-Zeichensatz 23 Assembler 209, 252, 253 Assemblerlauf 209 Assemblerprogramm 361 Assemblerprotokoll 209 Assemblersprache 40, 209 assemblieren 209 Assemblierer 209 Assoziation 63, 64, 262 asymmetrische Verschlüsselung 103 asymptotische Aufwands ordnung 486 asynchroner Betrieb 379 ATA-Schnittstelle 384 ATAPI 384 Attachment 188 Attribut 61, 156, 160, 258, 279 – „Effekt“ 176, 177 Attributwert 46, 62, 156 Auflösung 77 Aufruf 219 Aufwand – exponentieller 484 – kubischer 484 – linearer 484 – polynomialer 484 – quadratischer 484 Aufwandsfunktion 481 Aufzählbarkeit 469 Aufzähltyp 307 Aufzählungstyp 236
Register
Ausdruck 221 – bedingter 282 – bewachter 282 – regulärer 449 Ausführbarkeit eines Algorithmus 31 Ausgabeanweisung 39 Ausgabedatei 218 Ausländerregister 98 Ausrichtung – in Zeichenprogrammen 142 – von Absätzen 125 Aussage 54 aussagenlogische Operation 55 aussagenlogischer Operator 56 Aussagenverbindung 55 ausschließendes ODER 56, 371 Auswahl 32 – einseitige 34 – mehrseitige 36 – zweiseitige 35 AutoForm 174 Automat – Akzeptanzverhalten 451 – deterministischer endlicher 452 – endlicher 450 – linear beschränkter 459 – nichtdeterministischer endlicher 452, 453 Automatenmodell 448 Automatentheorie 440, 503 Automatisieren 405 Automatisierung 405 Automatisierung von Prozessen 406 AutoWert 162 Average-Case-Analyse 482 AWT 259 Axiom 59, 369, 442 B Babbage, Charles (1792–1871) 66, 67
525
Backbone 186 Backslash 87 Backtracking 493 Backus, John (geb. 1924) 212, 280, 443 Backus-Naur-Form 212, 443 Backus-Normalform 443 BASIC 41, 210 Basistyp 283 Baum 29, 441 Baumsortieren 314 BCNF 158 Beamer 172 Bean 258 bedingte Anweisung 230 bedingter Ausdruck 282 Befehlsbearbeitung 360 Behaviorismus 518 Benchmark-Test 481 Benutzeroberfläche 82 – grafische 82, 83 – kommandogesteuert 82 – menügesteuert 82 berechenbare Funktion 462 Berechenbarkeitstheorie 504 Bereich in Textdokumenten 128 Bereichsbezug 146 Bericht 155 Berners-Lee, Tim (1955 – 2001) 189 beschränkte Polymorphie 292 Best-Case-Analyse 482 Betriebssystem 69, 72, 386 – Architektur 387 – Aufgaben 73, 386 – laden 389 – Schichtenmodell 387 Betriebssysteme, Entwicklungsetappen 386 bewachter Ausdruck 282 Bewegungsblock 75 Bezeichner 212, 258, 449 Bézierkurve 142 bidirektional 379 bijektive Funktion 469
526
Anhang
Bildlaufleiste 121 Bildschirm 77 Bildschirmdiagonale 77 Bildschirmschuss 180 Bildwiederholfrequenz 78 binär 366 Binärbaum 29, 244, 309, 310, 491 – polymorpher 307 Binärcodierung 21 binärer Suchbaum 313 binäres Suchen 492 BIOS 380, 388 Bit 20, 95 bit 20 Bitmap 138 Blatt 29, 310, 312 Block 39 Blockkonzept 219 Bluetooth 429 BMP 182 BNF 212, 443 Boch, Grady 46 Body 188, 195 book on demand 14 Boole, George (1815 –1864) 367 BOOLEAN 236 boolean 27, 214 Boot-Laufwerk 389 Boot-Viren 107 Booten 388, 390 Bootstrap Loader 388 Botschaft 61, 62 Bottom-to-top-Programmierung 251 Bottom-up-Ansatz 494 Bottom-up-Programmierung 251 Boyce-Codd-Normalform 158 branch and bound 491, 493 Breitband-Zugang 186 Breite-zuerst-Suche 327, 333, 490 Brenner 81 Browser 187 Brücke 424 Brute-force-Suche 330
Bubblesort 255 Buffer 373 Bundesdatenschutzgesetz 97, 99 Bundsteg 127 Bus 357 Bus-Topologie 423 Buscontroller 378 Bussystem 70, 355, 358 – Bestimmungsgrößen 379 – lokales 378 – Taktfrequenz 379 BYTE 235 Byte 21, 95 byte 214 C C (Programmiersprache) 41, 210 C++ 41, 210 Cache 356 CAD 14, 138 CAD-Programm 138 CAM 14 Caml Light 280 Cantor, Georg (1845 –1918) 465 cantorsches Diagonalisierungsverfahren 2. Art 465 CAP 14 Cˇ apek, Karel (1890 –1938) 405 CAQ 14 Carry 374 CAS 487 Cäsar, Gaius Julius (100 – 44 v. Chr.) 102 CASE-OF-Anweisung 39, 231 CD-R 81 CD-ROM 81 CD-RW 81 Cedille 26 Centronics 382 CERN 189 CGI 198 Channel 190 CHAR 236 char 28, 214, 220
Chat 190, 192, 199 Chat-Raum 190 Chatter 190 Chatterbot 331 Chiffre 101 Chiffrierung 101 Chomsky, Noam (geb. 1928) 8, 443 Chomsky-Grammatik 443 Chomsky-Hierarchie 447 Church, Alonzo (1903 –1995) 280, 473 churchsche These 473 CIM 14, 407 Client 186 Client-Server-Netzwerk 423 closed world assumption 323 CMOS 71, 389 CMTS 427 CMYK-Farbraum 137 CNC 417 CNC-Maschine 14 CNC-Steuerung 417 COBOL 210 Codd, Edgar Frank (geb. 1923) 153 Codelineal 416 Codescheibe 415, 416, 420 Codierung 247 Colossus 67 COM 72 Common Lisp 280 Compiler 214, 252, 253 – Arbeitsweise 253 Computer 69, 95, 354 – Aufbau 66 – Funktionseinheiten 70 Computeralgebrasystem 487 Computerarbeitsplatz – ergonomische Anfor derungen 93 Computerarten 354 Computergenerationen 67 Computergrafik 136 – dreidimensionale 138 – zweidimensionale 138
Computersabotage 517 Computervirus 107 cons-Operator 294 Controller 356, 380 control statement 221 Cook, Stephen A. (geb. 1940) 499 Copyright 109 CP/M 73 CPU 70, 356 Curry-Isomorphie 291 Currying 290 D D/A-Wandler 408 Datei 86, 215 – Kopieren mit der Maus 91 Datei-Viren 107 Dateibezeichnungen 87 Dateihandling 86, 90 Dateiverwaltung 86 Daten 20, 95 Daten ausspähen 516 Datenaustausch zwischen Anwendungsprogrammen 180 Datenbankarchitektur 153, 171 Datenbankarten 153 Datenbanken – bei Versicherungen 98 – der Polizei 98 – im privatwirtschaftlichen Bereich 98 – im staatlichen Bereich 98 – in Reisebüros 98 Datenbankmanagement system 153, 161, 171 – Aufgaben 153 Datenbankschema 159 – Anforderungen 154 Datenbanksprache 167 Datenbanksystem 153, 171 Datenbasis 153, 171 Datenbus 357, 358, 378 Datenfeld 29 Datenflussdiagramm 149, 152
Register
Datenflussmodellierung 46 Datenkapselung 223, 261 Datenmodellierung 45 – relationale 155, 171 Datenobjekt 216 Datenreihe 150 Datensatz 29, 160, 238 Datenschutz 96 – Europarichtlinie 97 – Grundrecht auf ~ 96 – im Internet 99 Datenschutzgesetze, Rechte der Bürger 99 Datensicherheit 96, 105 Datensicherung 105 Datenstrukturen 28 Datenträger 86 – Formatierung 87 – Verwaltung 87 Datenträgerbezeichnung 86 Datentyp – abstrakter 46, 48 Datentypen 27 – abstrakte 308 – in DBMS 162 Datenübertragung – Grundarten 380 – GSM 430 – parallele 381 – Parameter 381 – per Funk 428 – serielle 380 – UMTS 430 Datenübertragungs- medien, leitungsgeführte 425 Datenübertragungsrate 379 Datenveränderung 516 Datenverarbeitungsanlage 69 Datenverwaltung 105 DBMS 153, 161, 171 DDL 167, 168 DEA 452, 454 Debugger 254 Dechiffrierung 101 deduktive Programmier sprache 318
Deep Blue 325 Definition, lokale 283 Deklaration 39 deklarative Programmiersprache 41, 208 Delphi 41, 210, 223 De Morgan, Augustus (1806 –1873) 373 Demultiplexer 434 DES 102 deskriptive Programmiersprache 318 Desktop-Publishing 131 Destruktor 258 determinierter Algorithmus 499 deterministische kontextfreie Sprache 457 deterministischer endlicher Automat 452 Dezimalsystem 365 Dezimalzahl in Dualzahl umrechnen 366 DHTML 197 Diagrammtypen 150 diakritische Zeichen 26 dialogorientierte Textverarbeitungsprogramme 120 Diffie, Whitfield (geb. 1944) 103, 104 Diffie-Helman-Merkle-Algorithmus 104 digital 68 Digital-/Analog-Umsetzer 408, 414 Digitaldruck 14 Digitalisierungstablett 136 Dino-Online 193 Direkt-Hilfe 84 direkte Adressierung 218 disjunkter Vereinigungstyp 307 Disjunktion 368, 370 Diskette 81 div 220 divide and conquer 491 Dividieren von Dualzahlen 376
527
528
Anhang
DMA 360 DML 167, 168 DNS 187 DOCSIS 427 Dokumentation 248 Domain 188 Domain Name Service 187 Doppelklicken 76 Dörner, Dietrich 521 DOT 402 DOUBLE 236 double 214 Download 190 dpi 79, 138 DRAM 399 dreidimensionale Computergrafik 138 drop 297 dropwhile 297 Drucker 79 Druckerschnittstelle 382 Druckertreiber 80, 127 Druckformat 130 DSL 187 DSL-Techniken 427 DTD 195 DTP 131 dual 366 Dualsystem 20, 21, 366 Dualzahlen – Addition 374 – Division 376 – Multiplikation 376 – negative 376 – Rechnen mit über großen Stellen 377 – Subtraktion 375 – Vergleichen 377 Durchschuss 126 DVD 81 DVD-10 81 DVD-18 81 DVD-5 81 DVD-9 81 dynamischer Speicher 398 dynamisches Programmieren 493 E E-Mail 188, 199 E-Mail-Adresse 188
EA 450 EAN-Code 15 EBNF 212, 443 Edelman, Gerald M. (geb. 1929) 521 EEPROM 399 effizienter Algorithmus 31, 42, 484 EIDE 384 Einbetten 180 – von Objekten 131 Eindeutigkeit eines Algo rithmus 31 eineindeutige Funktion 469 Einfügemarke 121, 122 Einfügemodus 122 Eingabeanweisung 39 Eingabedatei 218 Eingabegeräte 74 Einloggen 389 einseitige Auswahl 34, 231 Einwegfunktion 104 elektronische Speicher 398 Elternknoten 312 Embedding 180 Endknoten 29, 312 endliche Liste 301 endlicher Automat 450 Endlichkeit eines Algorithmus 30 Endnote 129 Endrekursion 287, 288 Endzustand 47 Entfernen-Taste 75 Entität 45, 156 Entitätenmenge 45 Entity 156 Entity-Relationship- Diagramm 157 Entity-Relationship-Modell 157 Entityklasse 156 Entitymenge 156 Entscheidbarkeit 468 Entscheidungsbaum 491 Entscheidungsfunktion 152
Entscheidungsproblem 468 Entschlüsselung 101 ENTWEDER-ODER 371 EPROM 399 Equi Join 166 ER-Diagramm 157 ER-Modell 45, 157 erbende Klasse 268 Ereignisbehandlung 273 ereignisgesteuerte Programmierung 251 ereignisorientiertes Programm 223 Ereignisvariable 223 Ergibtanweisung 39, 228 Ergonomie 92 ergonomische Anforderungen an Computerarbeitsplätze 93 erweiterte BNF 443 Ethernet 422 euklidische Algorithmus 30 eulersche Zahl e 485 Europarichtlinie zum Datenschutz 97 EVA-Prinzip 69 Eventualtyp 307 Eventvariable 223 evolutionärer Algorithmus 502 Exklusiv-ODER 371, 373 exponentieller Aufwand 484 EXTENDED 236 extensional 56 externe Ebene 153 externes Datenobjekt, Zugriff 217 externe Speicher 80, 95, 396 F Fachinformatiker für Anwendungsentwicklung 17 Fachinformatiker für Systemintegration 17 Fakten 318 Fallunterscheidung 36, 231 Fano-Bedingung 185
Farbfüller 140 Farbfüllung 142 Farbkreis 136 Farbmischung – additive 136 – subtraktive 137 Farbtiefe 136 Farbverlauf 142 Feld 28, 160, 238 Feldelement 28 Fenster 84 Fermat, Pierre de (1601 – 1665) 471 Fermat, Satz von 471 Fertigungsprozess 404 Festplatte 80 Fibonacci (um 1180 –1250) 288 Fibonaccizahlen 288, 481, 487 FIFO 244 FILE 239 File 29, 215 – Organisationsformen 216 – sequenzielles 217 file 214 filter 298 Finitheit 42 FIR 428 Fireball 193 FireWire 384 – Anschlussbelegung 385 Flash-EEPROM 399 Fließtext 132 Flip-Flop 398 float 214 flüchtiger Speicher 399 Flussdiagramm 32 Folge 32 Folie 172 FOR-Anweisung 231 formale Grammatik 212, 442 formale Logik 54 formaler Parameter 222 formale Sprache 440, 446 Format-Symbolleiste 121 Formatierung von Datenträgern 87
Register
Formatvorlage 130 FORTRAN 210 FP 280 FRAM 399 Frame 259, 264 FreeBSD 73 Freeware 109 Freiheitsgrad 419 Fremdschlüssel 160 FTP 189, 199 FTP-Client 190 FTP-Server 190 – anonymer 190 Füllmuster 142 Füllzeichen 126 FUNCTION 240 Funktion 54, 148, 149, 152, 469 – Aufruf 233 – berechenbare 462 – bijektive 469 – eineindeutige 469 – Generizität 291 – höhere 292 – injektive 469 – linkseindeutige 469 – nicht-berechenbare 511 – nicht endrekursive 289 – partielle 469 – polymorphe 291 – primitiv-rekursive 475 – rechtstotale 469 – surjektive 469 – toatale 469 – turingberechenbare 471 – μ-rekursive 477 funktionale Programmiersprache 41 – Kennzeichen 281 funktionale Programmierung 149, 316 funktionales Programm 149 Funktionsdefinition 281, 282 – rekursive 286 Funktionsklassenhierarchie 478 Funktionskonstruktor 284
Funktionsplotter 151 Funktionstyp 284 Funktionsverkettung 293 Fußnote 129 Fußnotenzeichen 129 Fußzeile 129 G Gameport 382 Gates, Bill (geb. 1955) 67, 83 Gateway 186 GByte 22 GDI 391 gecurryt 291 gefräßige Strategie 496 Generalisierung 65 Generizität 291 genetischer Algorithmus 502 geometrischen Zahlenfolge 150 Geradeausprogramm 33 gerichteter Graph 332 Geschichte der Rechentechnik 66 Geschwisterknoten 312 Gesetz vom ausgeschlossenen Dritten 57 get-Methode 266 GIF 183 Ginsburg, Seymour (geb. 1928) 8 Gliederung 132 GNOME 82 Gödel, Kurt (1906 –1978) 8, 464, 472 Gödelisierung 472 Gödelnummer 472 gödelscher Unvollständigkeitssatz 60, 464 Google 193 GPRS 430 Grafikformate 139, 182 Grafikkarte 78 – Kenngrößen 78 Grafikprogramm – pixelorientiertes 139 – vektororientiertes 141
529
530
Anhang
Grafiktablett 136 grafische Benutzerober- fläche 82, 83 Grammatik 212 – formale 212, 442 – kontextfreie 448 – kontextsensitive 448 – mehrdeutige 447 – unbeschränkte 448 Graph 318, 327 – gerichteter 332 Gravis 26 greedy 491, 496 Greedy-Algorithmus 496, 500 Greedy-Heuristik 500 Grenzen der Programmierung und der Informatik 510, 514 Grenzwertschalter 416 Großcomputer 354 Grundfarben 136, 137 Grundrecht auf Datenschutz 96 Gruppierung 142 GSM 187, 430 GSM-Netz 430 Gutenberg, Johann (um 1395 –1468) 19, 106 H Hacker 101 Halbaddierer 374 Halbleiterspeicher 398 halbsynchroner Betrieb 379 Halde 242 Halteproblem 466, 468, 469 Handy und Internet 430 Hantieren 404 Hardcopy 180 Hardware 69 Hardware-Ergonomie 93 Haskell 41, 51, 280 Hauptplatine 69 Hauptspeicher 396 Hauptverzeichnis 87 HDSL 427 Head 188, 195
Heimcomputer 354 Helman, Martin 103, 104 Heron von Alexandria (um 100) 405 Heuristik 43, 500 – Greedy-~ 500 HEX-Code 23 hexadezimal 366 Hexadezimalsystem 22, 366 HFC 427 High 367 Hilbert, David (1862 –1943) 464, 476, 511 Hilfe-Funktion 84 hill climbing search 500 Hoaxes 108 höhere Funktion 292 Holografiespeicher 402 Homebanking 15 Homepage 194 Hope 51, 280 Host 186 Hotkey 85 HPIB 382 HTM 184 HTML 120, 184, 189, 194 – Befehle 196 – Dokumenttyp-Definition 195 – Grundgerüst einer HTML-Seite 195 HTTP 189 Hub 385, 423 Huffman-Algorithmus 185 Hurenkind 130 hybride Programmierung 421 Hyperlink 197 Hypermedia-System 189 Hypermedien 189 Hypertext 189 Hz 78 I IDE-Schnittstelle 383 IDEA 102 identifier 449 Identität 373 IEEE 428
IEEE 802.11 428 IF-THEN-Anweisung 39, 231 IF-THEN-ELSE-Anweisung 39, 231 IMAP 188 imperative Programmier sprache 41, 208, 214 – Anforderungen 215 imperatives Programm 208 Implementieren 44 Implementierung 44 Implikation 56, 368, 373 Impulsdiagramm 368 Impulsgenerator 411 Index 133 Indexoperation 297 indirekte Adressierung 218 indirekter Schluss 57 Indizes 28 Induktionszyklus 231 Industrieroboter 418 Inferenz-Maschine 326 Inferenzverfahren 59 Infixoperator 281 Informatik 8, 11, 95 – Anwendungen 14, 15 – Anwendungsgrenzen 12 – Bedeutung 12 – Gegenstandsbereiche 9 – gesellschaftliche Auswirkungen 13 – Grenzen 510, 514 – Grundlagen 8 – Herausbildung der Wissenschaft 8 – rechtliche Grenzen 516 Informatiksystem 13, 44 Information 18, 20, 95 – Eigenschaften 19 informationelle Gewalten teilung 97 informationelles Selbst bestimmungsrecht 97 Informationsabgleich 194
Informationsgewinnung 193 Informationspräsentation 194 Inhaltsverzeichnis 132 Inhibition 373 injektive Funktion 469 Instanz 260 INTEGER 235 integer 27, 214 intelligente Maschine 519 intelligentes Programm 519 Interface 72, 273 interne Ebene 153 internes Datenobjekt – Zugriff 218 interne Speicher 396 Internet 186, 422 Internet-Broadcaster 192 Internet-Dienst 186, 199 Internet-Knoten 186 Internet-Telefonie 192, 199 Internetadresse 189 Internetradio 192, 199 Internet Relay Chat 199 Internet und Recht 110 Internetzugang 430 Interpreter 252 Interrupt 379 Interrupt-Acknowledge- Leitung 379 Interruptrequest 379 IP 192 IP-Nummer 187 IP-Telefonie 192, 199 IRC 190, 199 IRC-Client 190 IRC-Clientprogramm 190 IrDA 428, 429 IRDATA 421 ISDN 187, 426 ISO 183 IT-Berufe 16 Iterationsanweisung 232 Iterationsmethode 490 IuK-Berufe 16 IuK-System-Kaufmann/frau 17
Register J Jacobson, Ivar 46 Jacquard, Joseph Marie (1752 – 1834) 66 Jaquet-Droz, Pierre (1721 – 1790) 405 Java 41, 198 Java 5.0 51 JavaScript 198 Joker 90 Joystick 74 JPEG 183 JPG 183 K Kabel 425 Kabelmodem 427 Kalkulationsprogramm 144 – Einsatzbereiche 145 Kante 29, 332 Kapitälchen 124 Kapselung 279 Kardinalität 64, 157 Kasparow, Garri (geb. 1963) 479 Kassensystem 15 KByte 22 KDE 82 Kellerautomat – nichtdeterministischer 455 Kellerspeicher 243 Kennwort 100 Kernel 394 Kettenschluss 57 KI 325, 520 Kindknoten 312 Klammeraffe 188 Klasse 46, 61, 62, 265, 279 – abstrakte 265, 279 – erbende 268 – vererbende 268 Klassen – ABFRAGE 155 – AUTOFORM 179 – bei der Tabellenkalkulation 152
Register
531
– bei der Textverarbeitung 123 – BERICHT 155 – DIAGRAMM 179 – FILM 179 – FOLIE 179 – FORMULAR 155 – GRAFIK 179 – in Grafikdokumenten 143 – in Multimediadokumenten 172, 179 – KLANG 179 – MULTIMEDIADOKUMENT 179 – SCHALTFLÄCHE 179 – TABELLE 154 – TEXTFELD 174, 179 Klassendiagramm 63, 257 Klassenextension 62 Klassenkarte 62 Klassenmethode 269 Klausel 320 Kleene, Stephen Cole (1909 –1994) 446 Kleene-Stern 446 Klicken 76 Knickarmroboter 418 Knoten 29, 310, 332 – Höhe 312 kommandogesteuerte Benutzeroberfläche 82 Komplement 375 Komplementärfarben 136, 137 Komplexität 513 Komplexitätstheorie 479, 504 Komposition 65, 293 Kompressionsalgorithmus 183 Kondensator 398 Konjunktion 368, 369 Konkatenation 444 Konstante 373 Konstruktor 258, 260, 279 kontextfreie Grammatik 448 kontextsensitive Grammatik 448
532
Anhang
Kontraposition 57 konvertieren 139 konzeptionelle Ebene 153 Kopfzeile 129 Kopieren von Dateien mit der Maus 91 Korrektheit eines Systems 60 Kreisdiagramm 150 Kryptografie 102 Kryptologie 102 kubischer Aufwand 484 künstliche Intelligenz 325, 520 Kybernetik 518 L Ladungsspeicher 398 Lai, Xueija 102 LAN 186, 422 Landesdatenschutzgesetze 99 Laptop 77 Las-Vegas-Algorithmus 499 Laserdrucker 79 Lasso 140 Layout 131 LCD-Anzeige 77 leeres Wort 444 leere Zeichenkette 444 Leerzeichenkontrolle 122 Leibniz, Gottfried Wilhelm (1646 –1716) 66 Leiter 425 leitungsgeführte Datenübertragungsmedien 425 Leonardo von Pisa, genannt Fibonacci (um 1180 –1250) 288 lexikalische Analyse 253 Lichtwellenleiter 426 LIFO 49, 243 linear beschränkter Automat 459 linearer Algorithmus 33 linearer Aufwand 484 lineare Rekursion 286 Linguistik 440 Liniendiagramm 150
Link 181, 189 Linker 214 Linksableitung 447 linkseindeutige Funktion 469 Linux 73, 393 – Blockbild des Systemkerns 393 – Dateihandling 92 – Datenträgerbezeichnungen 86 – Ordnerbezeichnungen 87 – Verzeichnisarbeit 89 – Zugriffsrechte 92 LISP 41, 280 Liste 294 – endliche 301 – numerische 296 – polymorphe 295, 307 – verkettete 243 Listenalgebra 301 Listenfunktionen 297 Listenkonstruktor 284, 294 Listenreduktion mit Faltungsfunktionen 299 Listentyp 284 – algebraischer 309 – polymorpher 294 Listenverkettung 297 Live-Chat 190 Lochkarte 416 Lochkartenmaschine 397 Lochstreifen 416 logical 27, 214 Login 190 logisch 162 logische Ebene 153 logische Operationen 367 logische Programmiersprache 41, 318 logische Rechenregeln 57 – Assoziativgesetze 57 – Distributivgesetze 57 – Kommutativgesetze 57 logischer Kalkül 55 logischer Operatoren 220 logische Verknüpfungen, Überblick 372, 373
LOGO 41 lokale Definition 283 lokales Bussystem 378 lokales Netzwerk 422 lokale Suche 500 LONGINTEGER 235 longinteger 27 Low 367 LPT 72 LSB 361 Lucas, Edouard (1842 –1891) 288 Lycos 193 M m:n-Beziehung 157 Mac OS 73, 395 magnetische Speicherung 400 magneto-optischen Speicherung 403 Mail-Client 188 Mail-Server 188 Mailbox 188 Mailing-Liste 188 Mainboard 69 Mainframe 192 Makro-Viren 107 Malprogramm 138 – Bereichsmanipulationen 141 – Werkzeuge 139, 140 MAN 422 map 298 Marke 230 maschinenorientierte Sprache 209 Maschinenprogramm 209 Maschinensprache 40 Massenspeicher 396, 397 Massey, James 102 Master 383 Master-Boot-Record 389 Master Methode 490 Matrixdrucker 79 Maus 75, 76 – Techniken 76 MBit 357 MByte 22 Mechanisieren 404 mediwarp 193
mehrdeutige Grammatik 447 mehrdeutige Sprache 447 Mehrfachvererbung 268 Mehrfachverzweigung 36 mehrseitige Auswahl 36 Memo 162 memoizing 494 MemoryStick 81 Menge, reguläre 449 Menü 84 menügesteuerte Benutzer oberfläche 82 Menüleiste 121 Menütechnik 84 Mergesort 305, 492 Merkle, Ralph 104 Messprozess 404 Meta-Suchmaschine 193 Meta-Tag 195 MetaCrawler 193 MetaGer 193 Metasprache 197 Methode 61, 62, 258, 267, 272, 279 – „Erscheinen“ 176 – abstrakte 267 MHz 71 Microsoft Office 181 Mikroprozessor 70, 355 Milner, Robin (geb. 1934) 280 MiniDisc 403 Minimumsort 113 Miranda 41, 51, 280, 281 MIT 189 ML 280 Mnemonics 209, 361 MO-Disk 403 Mobilfunk 187 mod 220 Modell 44 – Entity-Relationship-~ 157 – relationales 159 Modellierung 44 – objektorientierte 46, 61
Register
– relationale 153 – zustandsorientierte 47 Modem 186, 426 MODULA 210 Modula-2 51 modulares Programmieren 251 Modularisierung 387 Monitor 77 – Auflösung 77 – Bildwiederholfrequenz 78 – Kenngrößen 77 – Zeilenfrequenz 78 Monte-Carlo-Algorithmus 499 mooresches Gesetz 515 morgansche Gesetze 57 Motherboard 69 Mousepad 75 MP3 184 MRAM 399 MS-DOS 73, 82, 391 – Dateihandling 90 – Verzeichnisarbeit 88 MSB 361 Multimediadokument 172 – Gestaltungskriterien 178 Multiplexer 434 Multiplizieren von Dualzahlen 376 Muster 449 Musteranpassung 287, 289 – auf algebraischen Datentypen 308 – auf Listen 295 Musteranpassung auf Listen 295 MVC 259, 277 N Nachfolgerfunktion 475 Nachfolgerknoten 312 Nachricht 19, 267 Nadeldrucker 79 NAND 58, 370
Napier, John (1550 –1617) 68 Nassi-Shneiderman-Diagramm 33 Naur, Peter (geb. 1928) 212 NC 415 NC-Steuerung 415 NEA 452, 453, 454 Negation 368, 373 negativer Erstzeileneinzug 125 Negator 368 Netiquette 110, 191 NetNews 191, 199 Netzwerk 422 – lokales 422 Neumann, John von (1903 –1957) 67, 354, 360, 467 neuronales Netz 327, 502 News 191 News-Client 191 NewsReader 191 nicht-berechenbare Funktionen 511 NICHT-ODER 372, 373 NICHT-UND 58, 370, 373 Nichtblatt 312 nichtdeterminierter Algorithmus 31, 499 nichtdeterministischer Algorithmus 31, 42 nichtdeterministischer endlicher Automat 452, 453 nichtdeterministischer Kellerautomat 455 nicht endrekursive Funktion 289 nichtlineare Rekursion 288, 289 nichtsequenzieller Algorithmus 31 Nichtterminal 212, 442, 443 nickname 190 NNTP 191 NOR 372 Normalform 58
533
534
Anhang
Normalisierung 157 Norton Commander 82 NOT 220 Notebook 77 NP-Problem 498 NP-vollständig 498 NTBBA 187 Numerikblock 75 numerisch 162 numerische Liste 296 numerische Rekursion 289 numerischer stochastischer Algorithmus 499
Open Root Server Network 187 optische Speicherung 401 optisches Speicherband 402 OR 220, 370 ord 220 Ordner 86 Ordnung, asymptotische 486 organischer Speicher 403 Oughtred, William (1574 –1660) 68
O Oberklasse 258 OBERON 210 OBJECT 238 Objekt 46, 61, 62 – einbetten 131 Objektdiagramm 64 Objekte – in Datenbankmanagementsystemen 154 – in Kalkulationsprogrammen 145, 152 – in Malprogrammen 140 – in Zeichenprogrammen 141 Objektkarte 62 objektorientierte Modellierung 46, 61 objektorientierte Programmiersprache 41 objektorientierte Programmierung 46, 210, 223, 251, 257 Objektprogramm 224, 253 Objekttyp 62 OCaml 280 ODER 56, 370, 373 Off-line-Programmierung 421 Office-Paket 181 OLE 181 OLE-Methode 131 OLE-Objekt 162 On-line-Programmierung 421
P P-Problem 497 P2P 199 Paartyp 284 packages 258 Papierkorb 83 parallele Datenübertragung 381 parallele Schnittstelle 72, 382 Parallelverarbeitung, verteilte 327 Parameter, formaler 222 Parameterliste 222 parametrischer Polymorphismus 291 partielle Funktion 469 Partition 86 Partridge, Seth (1603 –1686) 68 PASCAL 210 Pascal, Blaise (1623 –1662) 66 Passwort 100 PC 67, 354 PCI-Bus 380 PDF 184 Peer-to-Peer 192, 199, 423 peripheres Gerät 69 PERL 198 permanenter Speicher 399 Personal Computer 67, 354 Personalinformationssystem 98 Peter, Rozsa (1905 –1977) 476
Pfad 312 PGP 188 Philon von Byzanz (um 230 v. Chr.) 405 physische Ebene 153 physische Speicher 397 Pica 124, 138 PICT 182 Pinsel 140 Pipeline-Technik 356 Pipette 140 Pixel 138 Pixelgrafik 138 – Grafikformate 139, 143 – Klassen 143 – Methoden 143 PL/1 210 Platon (427 – 347 v. Chr.) 61 Play-Back-Programmierung 421 Plug & Play 388 Plug-In 187 PNG 183 POINTER 236, 241 Pointervariable 218 Polygon 142 polymorph 49 polymorphe Funktion 291 polymorphe Listen 295, 307 polymorpher Binärbaum 307 polymorpher Listentyp 294 Polymorphie 223, 270, 291 – beschränkte 292 Polymorphismus – parametrischer 291 polynomialer Aufwand 484 Pop-up-Menü 85 POP3 188 Port 358 Portalroboter 418 POS-System 15 POST 388 Post, E. L. (1897–1954) 470
posten 191 postsches Korrespondenzproblem 470 PostScript 80 ppi 138 Prädikat 54, 284, 323, 468 Prädikatenlogik 323 prädikative Programmiersprache 41 prädikative Spezifikation einer Schnittstelle 48 prädikative Spezifikation eines abstrakten Datentyps 49 praktische Berechenbarkeit, Grenzen 480 praktische Informatik 9, 11 praktische Unlösbarkeit 479 Präsentation 172 – abspielen 176 Präsentieren 172 pred 220 Primärschlüssel 156, 160 primitiv-rekursive Funktion 316, 475 primitive Rekursion 475 Primzahltest von Solovay und Strassen 113 Primzahlzwilling 511 Privatchat 190 probabilistischer Algorithmus 500 Problem, allerschwerstes 497 Problemanalyse 245 Probleminstanzen 482 problemorientierte Programmiersprache 208 PROCEDURE 240 Programm 38, 40, 95, 208, 224, 280, 406, 462, 511 – ereignisorientiertes 223 – imperatives 208 – in Maschinensprache 209 Programmablaufplan 32 Programmdokumentation 248
Register
Programmentwicklung, Arbeitsschritte 248 Programmgröße 224 Programmieren – dynamisches 493 – modulares 251 – strukturiertes 250 Programmierer 16 Programmierhilfsmittel 252 Programmiermethoden 250 Programmierschnittstelle 387 Programmiersprache 40, 208 – applikative 41 – deduktive 318 – deklarative 41, 208 – deskriptive 318 – Erzeugung 212 – funktionale 41 – höhere 40 – imperative 40, 41, 208, 214 – logische 41, 318 – maschinenorientierte 209 – objektorientierte 41 – prädikative 41 – problemorientierte 40, 208 – prozedurale 41, 256 – strukturierte 41 – systemorientierte 208 – universelle 208 – unstrukturierte 41 Programmiersprachen, Überblick 211, 256 Programmiersprachentypen 208 Programmierung 245 – ereignisgesteuerte 251 – funktionale 149 – im engeren Sinne 247 – objektorientierte 46, 210, 223, 251 Programmkopf 226 Programmstrukturkonzepte 219
Programmtest 247 Programmverifikation 467 Programmverzweigung 230 Projektion 164 Projektionsfunktion 475 PROLOG 41, 59, 60, 318 PROLOG-Programm 323 PROM 399, 400 Prompt-Zeichen 88 Protokoll 387, 431 Provider 187 Prozedur 32 – Aufruf 233 prozedurale Programmiersprache 41 – Erzeugung 212 – Operatoren 220 prozedurale Programmiersprachen, Überblick 256 Prozess 404, 432 Prozessautomatisierung 406 Prozessor 406 Prüfprozess 404 PS/2 382 Pseudozufallszahl 499 Public-Key-Verfahren 103, 104 Public Domain-Software 109 Publikation erarbeiten 135 Pull-down-Menü 84 Punkt 124, 138 Punktgrafik 138 Q QL 168 quadratischer Aufwand 484 Quantifizierung 55 Quantor 55 Quellprogramm 214, 224, 253 QuickAccess-Leiste 121 Quicksort 113, 255, 492
535
536
Anhang
R R/C-Glied 411 Radierer 140 RAM 71, 78 Raten und Einsetzen 488 REAL 236 real 27, 214 Rechenablaufplan 30, 34 Rechenhilfsmittel – analoges 68 – digitales 68 Rechenstab 68 Rechentechnik, Geschichte 66 Rechnen mit Computerzahlen 364 Rechner 69 Rechtsassoziativität 285 rechtstotale Funktion 469 RECORD 238 record 29, 214 referenzielle Integrität 160, 166 Regeln 407 Register 133 reguläre Menge 449 regulärer Ausdruck 449 rekurrente Gleichung 487 Rekursion 286, 289 – lineare 286 – nichtlineare 288, 289 – numerische 289 Rekursionsgleichung 487 rekursive algebraische Typen 307 rekursive Definition der Grundrechenarten 476 rekursive Funktions- definition 286 rekursive Sprache 459 Relation 54, 160, 163 relationale Algebra 163 relationale Datenmodellierung 155, 171 relationales Modell 153, 159 Relationenschema 159 Relationship 45, 156 relativer Zellbezug 147 remote login 191
Remote Terminal Emulation 191 REPEAT-Anweisung 39, 233 Repeater 424 residenter Bestandteil des Betriebssystems 73 Resolutionsverfahren 60 Retrieval-Engine 193 RGB-Farbraum 136 Ring-Topologie 424 Rivest, Ron (geb. 1947) 103, 104 Robot 193 Roboter 417 – mobile 421 ROM 71, 399 – festverdrahteter 399 – programmierbarer 400 ROM-BIOS 71 root 29, 87 Router 187, 424 RS 232 382 RS 422 382 RSA 103, 104 RTF 182 Rucksackproblem 491 Rumbough, Jim 46 Rundreiseproblem 493 S SATA 384 SATA I 384 SATA II 384 Satelliten 429 Satz, Ableitung 442 Satzform 442 Satzsymbol 442 Satz von Cook 499 Satz von Fermat 471 Satz von Rice 468 Säulendiagramm 151 Scanner 74 Schaltalgebra 367 – Postulate 368 – Theoreme 369 Schaltbelegungstabelle 368 Schaltfläche 176 Schaltungsgleichung 368
Scheme 280 Schengener Informationssystem 98 Schickhardt, Wilhelm (1592 –1635) 66 Schleifenstruktur 32 Schlüssel 101, 156 Schmalband-Zugang 186 Schnittstelle 72, 265, 267 – parallele 72, 382 – serielle 72, 382 – Spezifikation 48 Schreib-Lese-Kopf 401 Schreibmaschinenblock 74 Schriftart 124 Schriftgröße 124 Schriftschnitt 124 Schriftstil 124 Schrittmotor 415 Schufa 98 Schusterjunge 130 SCSI 382, 383 SCSI-1 383 SCSI-2 383 SCSI-3 383 SDSL 427 Search-Engine 193 Seitenformatierung 127 Seitennummer 129 Selektion 164 Semantik 213, 440 semantisch äquivalent 471 semantische Analyse 253 semi-entscheidbares Problem 468 semipermanenter Speicher 399 sensitive Map 197 Sensor 406 Sequenz 32, 33, 39 sequenziell 216 sequenzielles File 217 Serielle ATA 384 serielle Datenübertragung 380 serielle Schnittstelle 72, 382 Serienbrief 133
Seriendruck 133 – Algorithmenstrukturen 134 – Prinzip 134 Serientextdatei 133 Server 186 SET 237 set-Methode 266 Shamir, Adi (geb. 1952) 103, 104 Shannon, Claude Elwood (1916 – 2001) 8, 20, 367 Shareware 109 Shell 394 Sherwood-Algorithmus 499 Shift-Lock-Taste 74 Shift-Taste 74 SHORTINT 235 side 194 Signal 19 Signalanpassung 406 Signalwandler 407 simulated annealing 501 SINGLE 236 single statement 221 Sintflut-Algorithmus 501 SIR 428 SIS 98 site 194 Skalartyp 236 Skalierung 139 Skript (Programm) 282 Slash 87 Slave 383 Slot 78 SmartSuite 181 SML 51 SML of New Jersey 280 SMTP 188 Softphone 192 Software 69 Software-Ergonomie 92 Software-Rechte 96, 109 Softwareentwickler 16 Sohnknoten 312 Solovay, Robert 113 Sondertaste 74 Soroban 68
Register
Sortieralgorithmen – funktionale Implementierungen 304 Sortieren – durch Erzeugen eines Binärbaums 255 – durch Sortieren von Adressen 255 – durch Umsortieren auf dem Platz 255 – durch Verschmelzen 305 – durch Vertauschen benachbarter Elemente 255 Sortiermerkmal 255 Sortierverfahren 255 Sozialdatenbank 98 Spalte 128, 145 Spaltenbreite 145 Spam 110, 517 Speicher 396 – elektronische 398 – externe 80, 95, 396 – flüchtige 399 – interne 396 – Leistungsparameter 396 – magneto-optische 403 – optische 401 – organischer 403 – permanente 399 – physische 397 – semipermanente 399 Speicherbaustein 400 Speichereinheiten 95 Speicherelement 396 Speicherhierarchie 396 Speicherkapazität 396 Speichermedien 397 Speichermodul 400 Speicherung – elektronische 398 – magnetische 400 – magneto-optische 403 – optische 401 – physische 397 Speicherwort 396
537
Speicherzelle 396 Speicherzugriffszeit 396 Spezialisierung 65 Spezialsprache 208 Spezifikation 44 Spezifikation einer Schnittstelle 48 Spider 193 Spitzensymbol 442 Sprache – deterministische kontextfreie 457 – formale 440, 446 – mehrdeutige 447 – rekursive 459 – von einem EA akzeptierte 451 – von einer Grammatik G erzeugbare 447 – von M akzeptierte 456 Sprachenhierarchie 474 Sprayer 140 Sprunganweisung 39, 230 SQL 167, 168 – Auswertung der Datenbasis 170 – Datenbearbeitung 169 – Datendefinition 168 SQL-92 168 SQL-99 168 SQL2 168 SQL3 168 SRAM 399 stack 49 Standard-Symbolleiste 121 Stapel 49 Stapeldiagramm 151 stapelorientierte Text verarbeitungsprogramme 120 Stapelspeicher 243 StarOffice 181 Startsymbol 442 Startzustand 47 statement 221 statischer Speicher 398 statische Typprüfung 283 Statuszeile 121
538
Anhang
Stchoty 68 Steinbuch, Karl (1917 – 2005) 522 Stern-Topologie 424 Steueranweisung 221 Steuerblock 75 Steuerbus 357, 358, 378 Steuerdatei 133 Steuern 406 Stichwortverzeichnis 133 Stift 140 stochastischer Algorithmus 499 Strassen, Volker (geb. 1936) 113 Strategiespiel 480 Streaming 192 Streaming-Client 192 Streaming-Player 192 Streaming Audio 192 Streifendiagramm 151 Strichmaßstab 415 Strichscheibe 415, 420 STRING 237 string 28 Stroustrup, Bjarne 210 struct 214 Struktogramm 33 strukturierte Programmiersprache 41 strukturiertes Programmieren 250 Stummtaste 74 Stylesheet 197 Suan Pan 68 Substitution 475 Subtrahieren von Dualzahlen 375 subtraktiven Farbmischung 137 succ 220 Suchbaum 313 Suchen – binäres 492 – lokales 500 Suchmaschine 193 Suchverfahren 60, 327 – Schema 332 Superskalar-Technik 356
Surfen 189, 197 surjektive Funktion 469 Swing-Klasse 259, 277 Symbol 443 symmetrische Verschlüsselung 102 synchroner Betrieb 379 syntaktische Einheit 441 syntaktische Fehler 254 Syntax 208, 440 Syntaxanalyse 253 Syntaxdiagramm 443 Syntaxgraph 213, 443 Systemelektroniker 17 Systeminformatiker 16 Systemintegrator 16 Systemkern 394 systemorientierte Programmiersprache 208 Systemplatine 69 Systemsoftware 69, 72 T Tabelle 154, 160 – in der Textverarbeitung 128 Tabellenkalkulation 144 – Diagramme 150 – Formeleingabe 146 – Funktionen und Datenflüsse 149 – mathematische, logische und Zeichenkettenfunktionen 147 Tabellenkalkulationsprogramm 144 Tabellenkopf 128 Tabstopp 126 Tabu-Suche 501 Tabulator 126 take 297 takewhile 297 Taktfrequenz 71 Task-Leiste 83 Tastatur 74 Tastenkombination 85 Tauschbörse 192 Tautologie 57 TByte 22 TCP/IP 187
Teach-In-Programmierung 421 Teachin-Box 421 Techniken der Arbeit mit der Maus 76 technische Informatik 10, 11 technischer Prozess 404 technisches System 432 Teilautomatisieren 404 Teile-und-Herrsche-Verfahren 492 Teilmengen-Summen-Problem 491 telescoping 490 Telnet 191, 199 Telnet-Client 192 Terminal 442, 443 Terminal-Emulations-Protokoll 191 Terminalmenge 212 terminieren 462 text 214 Textdokument 127 – erstellen 131 – Objekte 123 – speichern 122 Texteditor 252 Textfeld 174 Textfile 216 Textformate 182 Textverarbeitung 120 – Grafikeinbindung 131 – Objekte, Attribute, Attributwerte 135 – Publikation und Präsentation 128 – Sonderfunktionen 132 Textverarbeitungs- programm – dialogorientiertes 120 – Funktion 122 – Oberfläche 121 – stapelorientiertes 120 theoretische Informatik 9, 11 Theorie der formalen Sprachen 440, 503
Theorie der rekursiven Funktionen 475 Thermodrucker 79 Thesaurus 132 Thread 191 threshold accepting 501 Tiefe-zuerst-Suche 327, 333, 490 TIF 182 TIFF 182 Tilde 26 Tintenstrahldrucker 79 Titelleiste 121 Token Ring 422 Tomlinson, Ray (geb. 1941) 188 Top-down-Programmierung 251 Top-to-bottom-Programmierung 251 Topologie 423 Tortendiagramm 150 Torvalds, Linus Benedict (geb. 1969) 393 totale Funktion 469 Trackball 76 Transaktion 154 Transaktionenverwaltung 154 transienter Bestandteil des Betriebssystems 73 Traveling salesman problem 493 Traversieren 313 Trema 26 Trennhilfe 132 Treppeneffekt 139 Trojaner 108 Tupel 160, 290 Tupelkonstruktor 284, 290 Tupeltyp 284 Turbo-Pascal-Programm 224 Turbo Pascal 41, 210 Turing, Alan Mathison (1912 –1954) 8, 67, 102, 330, 458, 511, 518, 519
Register
Turing-Berechenbarkeit 511 Turing-Programm 42 turingberechenbare Funktion 471 Turingmaschine 67, 458, 511 – universelle 466 Typ 216, 235, 283 – einfacher 235 – zusammengesetzter 217, 237 Typ-0-Grammatik 448 Typ-1-Grammatik 448 Typ-2-Grammatik 448 Typecasting 275 Typendrucker 79 Typsynonyme 286 U Überlauf 374 Überschreibmodus 122 Übersetzer 252, 253 UCS-Code 27 Ulam, Stanislaw M. (1909 –1984) 471 Ultra ATA 384 UML 46 UMTS 187, 430 unbeschränkte Grammatik 448 UND 56, 369, 373 ungecurryt 291 Unicode 26 unidirektional 379 universelle Programmier sprache 208 universelle Turingmaschine 466 UNIX 73, 395 Unlösbarkeit – algorithmische 463 – praktische 479 unstrukturierte Programmiersprache 41 Unteralgorithmus 32, 38 Unterprogramm 222 – Aufruf 233 – Vereinbarungen 226
Unterprogrammtechnik 219, 222 Unterprogrammtyp 240 unzip 300 Upload 190 Urheberrecht 109 URL 189 USB 72, 385 – Anschlussbelegung 385 USB-Stick 81 Usenet 191, 199 V Vaterknoten 312 VDSL 427 Vektorgrafik 138 – Grafikformate 139, 143 – Klassen 143 – Methoden 143 vektororientiertes Grafikprogramm 141 Venndiagramm 368 Verbinderprogramm 214 Verbund 29, 166, 238 Vereinbarung 39, 219 Vereinbarungsteil 226 vererbende Klasse 268 Vererbung 65, 223, 279 Verfahrensprozess 404 Vergleichsoperator 220 Vergleichsoperatoren in der Tabellenkalkulation 146 Verkehrszentralregister 98 verkettete Liste 243 Verkettung 293, 443, 444 Verknüpfen 180 Verknüpfen und Einbetten 181 Verknüpfung 181, 197 Vernetzungsarten 423 Versalie 124 Verschlüsselung 101 – asymmetrische 103 – symmetrische 102 verteilte Parallelverarbei- tung 327
539
540
Anhang
Verteilungsprozess 404 Vervollständigung 307 Verweis 197 Verweisfunktion 148 Verzeichnis 86 Verzweigen und Begrenzen 493 Verzweigung 32 VFIR 428 Videobandbreite 78 Vielwegbaum 307 Vierspeziesrechner 66 Vigenère, Blaise de (1523 –1596) 102 Viren – Boot-~ 107 – Datei-~ 107 – Makro-~ 107 – Schutzmaßnahmen gegen ~ 108 Virenscanner 108 Virus 107 Voice 192 Voice over IP 199 VoIP 192, 199 VoIP-Anwenderprogramme 192 Volladdierer 374 vollständige Induktion 489 Von-Neumann-Prinzip 355 Von-Neumann-Rechner 354 Vorgängerknoten 312 VRML 197 W W-LAN 428 W3-Konsortium 189 W3C 189 Währung 162 WAN 186, 422 Web 189, 199 Web-Browser 187 Web-Side 194 Web-Site 194 WEB.DE 193 Webcrawler 193 Webkatalog 193
Webmaster 189 Webradio 199 Webserver 189 Websuchmaschine 193 Weizenbaum, Joseph (geb. 1923) 330 Wenn-Funktion 148 Wertebereich 160 Wertemenge 160 WHILE-Anweisung 39, 232 Wiederholung 32 – gezählte 37 – mit Eingangsbedingung 36 – mit Endbedingung 37 – mit nachgestelltem Test 37, 233 – mit vorangestelltem Test 36, 232 Wiener, Norbert (1894 –1964) 518 WiFi 428 Wildcard 90 Windows 73, 82 – Dateihandling 91 – Datenträgerbezeichnungen 86 – Ordnerbezeichnungen 87 – Verzeichnisarbeit 89 Windows-Server 2003 392 Windows 2000 392 Windows 3.x 391 Windows 95 391 Windows 98 391 Windows NT 392 Windows Vista 392 Windows XP / 2003 392 Wingate, Edmund (1593 –1656) 68 Wireless-LAN 428, 429 Wirth, Niklaus (geb. 1934) 210, 213 Wirtsprogramm 107 Wissensverarbeitung 326 WMF 182 WORD 235
Word 22 Workstation 354 World Wide Web 189, 199 Worst-Case-Analyse 482 Wort 445, 446 – leeres 444 Wortmenge 445 Wortproblem 448 Würmer 108 Wurzel 29 – des Ableitungsbaumes 442 Wurzelverzeichnis 87 WWW 189, 199 WYSIWYG 120 X X-Window 395 X11 82 xDSL 427 XHTML 197 XML 197 XOR 220, 371 Y Yahoo! 193 Z Z1S1-Bezugsart 147 Z3 66 Zählanweisung 231 Zahlenfolge – arithmetische 150 – geometrische 150 Zahlenformate in Kalkula tionstabellen 146 Zahlenreihe 150 Zahlensysteme 365 Zähler 162 Zählschleife 37, 39, 231 Zauberstab 140 Zeichen 443 Zeichenformatierung 124 Zeichenkette 19, 296 – Länge 445 – leere 444 Zeichenkettenoperator 220 Zeichenprogramm 138 – Werkzeuge und Manipulationen 142
Zeigen 76 Zeiger 241 Zeigertyp 241 Zeigervariable 218 Zeile 145 Zeilenabstand 126 Zeilenfrequenz 78 Zeilenhöhe 145 Zeilenlineal 121 Zeitaufwand 484 Zellbereich 146 Zellbezug 146 – absoluter 147 – relativer 147 Zelle 145 Zellinhalte 145
Register
Zellschutz 146 Zentrale Verarbeitungseinheit 356 ZF-Notation 296 Ziehen 76 Zimmermann, Philip (geb. 1954) 103 zip 300 Zirkumflex 26 zusammengesetzter Typ 217, 237 Zuse, Konrad (1910 –1995) 66, 67 Zustand 47
Zustandsdiagramm 47 zustandsorientierte Modellierung 47 Zuweisung 39 Zweckentfremdungs- verbot 97 zweidimensionale Computergrafik 138 zweiseitige Auswahl 35, 231 Zweispeziesrechner 66 Zwischenablage 85 Zyklenorganisation 231 Zyklus 32
541
542
Anhang
Bildquellenverzeichnis AEG Hausgeräte GmbH 513/1; akg-images, Berlin 19/1, 106/2; BackArts GmbH 505/2; Katrin Bahro, Berlin 71/2, 400/1, 436/2; Corel Photos Inc. 18/1, 288/1, 508/1, 520/1; Deutsche Telekom AG 13/1; Deutsches Museum, München 66/1, 66/2, 66/3; DUDEN PAETEC GmbH 502/1; Anett Engelmann, Berlin 141/2; Lutz Engelmann, Berlin 15/2, 61/1, 68/1, 71/1, 74/1, 79/1, 105/1, 141/1, 145/1, 523/1; Honda Motor Europe GmbH 331/2; HVBG/Senn 436/1; Astrid Kalenberg, Berlin 81/1; Nick Koudis / Getty Images 509/1, 518/1; Hans-Joachim Laabs, Nudow 421/1; Günter Liesenberg, Berlin 70/1, 74/2, 78/1, 79/2, 80/1, 381/1, 397/1; Lothar Meyer, Potsdam 205/1; Photo Disc Inc. 7/1, 11/1, 11/2, 11/3, 11/4, 15/3, 61/2, 75/1, 77/1, 107/1, 119/1, 207/1, 246/1, 247/1, 248/1, 257/1, 257/2, 257/3, 331/1, 353/1, 439/1, 501/1, 510/1, 514/1, 521/1; PHOTO DISC ROYALTY FREE 8/1, 16/1, 508/2; Siemens AG / München 505/1, 522/1; Sony Deutschland GmbH 81/2, 418/1, 520/2; B. Wöhlbrandt, Schönlage 437/1