Modul: Programmierung B-PRG Grundlagen der Programmierung 1 – Teil 1 – V5
Zeichenketten
Prof. Dr. Detlef Krömker Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (12)
Hier wird Wissen Wirklichkeit
Rückblick auf V2
Wir haben
Numerische Datentypen
Kennengelernt, jetzt
2 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Unser heutiges Lernziel
Zeichenketten als elementare Datentypen sollen verstanden werden
Einschließlich einiger Besonderheiten.
3 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
1 Wo sind wir?
V 0 Begrüßung und Einführung ---- V 1 Daten – Information – Wissen V 2 Computer – Algorithmus – Programm V 3 Variablen – Datentypen – Objekte ---- V 4 Elementare numerische Datentypen V 5 Zeichenketten ---- V 6 Verzweigungen und Schleifen V 7 Prozeduren ---- V 8 Aggregierte Datentypen V 9 Klassen V10 Graphen und Bäume V11 Bibliotheken
4 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Übersicht
Was ist Text?
Welche Schriftarten existieren?
Wie werden diese im Computer codiert?
Was sind Zeichenketten?
5 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Text = geschriebene Sprache (im engeren Sinne) kommt von lat. textus = ‣ Gewebe ‣ Geflecht ‣ Stoff
6 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
2 Funktionale Verbindung zwischen Gewebe und Text
Semantisches Text Netzwerk
linear-temporäre Aneinanderreihung von Zeichen und Worten wird mental in eine semantische Netzwerkrepräsentation transformiert => Text „verstrickt“ und „verflechtet“ Objekte und Akteure miteinander,
7 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Darstellung des Textes benötigt eine Schrift, deren Zeichen wahlweise
‣ Phoneme ‣ Silben ‣ Wörter bzw. Begriffe kodieren.
8 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Klassifikation der Schriften Alphabetschrift Zeichen ~ Laut
Silbenschrift Zeichen ~ Silbe
Logogramme Zeichen ~ Wort, Aussage, Anweisung
9 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
3 Alphabetschrift Alphabet (von gr. αλφάβητο [alfáwito] - Alpha & Beta)
Beispiele: ‣ Lateinische Schriften: Den småne skriften ‣ IPA-Lautschrift: [alfáwito] ‣ Kyrillisch: Ду бист кайн Весси! ‣ Griechische Schrift: αλφάβητο ‣ Tengwar, Sindarin ... :
10 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Silbenschrift Beispiele: ‣ Cherokee (siehe rechts) ‣ Kyprisch ‣ Linear B ‣ Akkadische Keilschrift
11 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Wortbildschrift, Logogrammschrift Beispiele: ‣ Hanzi (chinesisch) ‣ Hanja (koreanisch) ‣ Maja-Schrift ‣ Jurjen ‣ Tangut
12 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
4 Sonderformen der Logogramme Ziffernsysteme & Symbolik der Mathematik oder der Chemie
Piktogramme
13 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Klassifikation der Schriften (Besonderheiten) Hybride Systeme z.B. Japanisch = Kombination aus Silbenschrift (Hiragana, Katagana) und Logogrammschrift (Kanji)
Modifizierte Alphabetschriften z.B. Arabisch
14 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Schriftsysteme der Welt
http://de.wikipedia.org/wiki/Schrift
15 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
5 Begriff: Alphabet in der Informatik ist in der Informatik weiter gefasst als in der Lingustik:
Unter Alphabet versteht man (z.B. nach DIN 44300) eine total geordnete endliche Menge (oft nichtleere endliche Menge) von unterscheidbaren Symbolen (Zeichen).
Häufig symbolisiert durch Σ
16 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Begriff: Zeichenreihe
Zeichenreihen = endliche lineare Reihen von Zeichen eines Alphabets Σ
Übrigens: Auch die Zeichenreihe, die keine Zeichen enthält, ist ein Wort - das leere Wort. Es wird mit ε bezeichnet.
17 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Begriff: Kleensche Hülle
Unter der Kleenschen Hülle Σ* versteht man die Menge aller Wörter (i.d.F. Zeichenreihen) über dem Alphabet Σ.
18 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
6 Beispiel Dezimalsystem:
Σ = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
Σ* = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... }
19 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Begriff: Zeichensatz
Die Zuordnung von alphanumerischen Zeichen (Buchstaben und Ziffern) sowie Sonderzeichen zu einem Zahlencode.
Beispiele: ‣ ASCII (meist verwendet) ‣ IBM EBCDIC (verliert an Bedeutung)
20 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Begriff: Schriftart
Synonyme: font, typeface
Bekannte Schriftarten: Arial Times New Roman Frutiger light Courier New Impact Century Gothic
21 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
7 Proportionale vs. Nicht-proportionale Schriften Proportionale Schriften Nichtproportionale Schriften (veränderliche Typenbreite) (fixe Typenbreite)
(Arial, Times, Frutiger, ..) (Courier New, Lucida Console, ...)
22 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Grotesk vs. Antiqua Grotesten-Schriften Antiqua-Schriften (ohne Serifen) (mit Serifen)
(Arial, Frutiger, Lucida (Times, Courier New, ..) Console, ...)
23 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Problematik Zeichensatz
früher nur 7 oder 8 Bit für ein Zeichen verwendet => Unzählige nationale Varianten z.B. Umlaute und scharfes S im Deutschen
Lösungsversuch:
Unicode mit 16 Bit
24 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
8 Internationale Zeichensätze
ASCII Einer der ältesten Computer- 1963 Sehr weit verbreitet, Zeichensätze – 7 Bit (Programmier- sprachen, Internet- Adressen, etc.)
ISO/IEC 8859 15 verschiedenen Kodierungen 1986 u.a. in Linux und zur Abdeckung europäischer MS Windows Sprachen sowie Arabisch, verwendet. Hebräisch, Thailändisch und Türkisch Unicode ISO/IEC Internationaler Standard – (7) 8, 1991 nimmt an 10646 -– 1991 16 oder 32 Bit Bedeutung stark zu
25 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ISO 646 ‣ Nationale 7 Bit Varianten der ASCII Codierung
‣ IA5 (Internationales Alphabet Nr. 5)
‣ Für die nationalen Versionen sind 12 Positionen im Zeichensatz für national definierte Zeichen freigegeben. Die deutsche Variante ist in DIN 66003 festgelegt und ist als Variante 21 registriert
‣ veraltet
26 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Weitere nationale Zeichensätze ARMSCII Armenisch Big5 Chinesisch (Taiwan) Guojia BiaozhunZeichensatz für vereinfachte chinesische Schriftzeichen HKSCS Chinesisch (Hong Kong) ISCII Alle indischen Sprachen KOI8-R Russisch KOI8-U Ukrainisch TIS-620 Thailändisch, ähnlich ISO 8859-11 (1990) TSCII Tamil VISCII Vietnamesisch SJIS Japanisch, entworfen von Microsoft EUC „Extended UNIX Coding“ Mehrere ostasiatische Sprachen
27 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
9 Proprietäre Zeichensätze von Computerfirmen EBCDIC Von IBM entwickelter Zeichensatz
MacRoman, MacCyrillic für Apple Mac Computer vor Mac OS X (seit OS X wird Unicode verwendet)
Windows- und DOS-Codepages Windows-1252; MS-DOS Codepage 437, Codepage 850
Windows Glyph List 4
28 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ASCII genauer unter die Lupe genommen ‣ American Standard Code for Information Interchange
‣ Entwickelt 1963 als 6-Bit-Code (ohne Kleinbuchstaben) von Bob Bemer
‣ Eingeführt 1968
29 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ASCII genauer unter die Lupe genommen
ASCII
Cod …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F e 0… NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1… DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2… SP ! " # $ % & ' ( ) * + , - . /
3… 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4… @ A B C D E F G H I J K L M N O
5… P Q R S T U V W X Y Z [ \ ] ^ _
6… ` a b c d e f g h i j k l m n o
7… p q r s t u v w x y z { | } ~ DEL
30 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
10 ASCII-Anekdote
APPLE ÜÄ
31 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ASCII-Anekdote
APPLE ÅÆ
32 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ASCII genauer unter die Lupe genommen Problem: ASCII enthält keine diakritischen Zeichen!
⇒ 1972 Einführung von ISO 646-IRV
⇒ Internationale Kompatibilitätsprobleme APPLE ÜÄ
APPLE ][ APPLE ÅÆ
APPLE ÕÃ
33 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
11 ASCII genauer unter die Lupe genommen (ISO 646-IRV)
23 24 40 5B 5C 5D 5E 60 7B 7C 7D 7E ISO 646-IRV # ¤ @ [ \ ] ^ ` { | } ~ Deutschland # $ § Ä Ö Ü ^ ` ä ö ü ß Schweiz ù $ à é Ç ê î ô ä ö ü û USA (ASCII) # $ @ [ \ ] ^ ` { | } ~ UK £ $ @ [ \ ] ^ ` { | } ~ Frankreich £ $ à ° Ç § ^ ` é ù é ¨ Kanada # $ à â Ç ê î ô é ù é û Finnland # $ @ Ä Ö Å Ü é ä ö å ü Norwegen # $ @ Æ Ø Å ^ ` æ ø å ~ Schweden # $ É Ä Ö Å Ü é ä ö å ü Italien £ $ § ° Ç é ^ ù à ò ù ì Niederlande £ $ ¾ ÿ ½ | ^ ` ¨ ƒ ¼ ´ Spanien £ $ § ¡ Ñ ¿ ^ ` ° ñ ç ~ Portugal # $ @ Ã Ç Õ ^ ` ã ç õ ~
34 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ASCII genauer unter die Lupe genommen
⇒ Internationale Kompatibilitätsprobleme
⇒ Proprietäre 8-Bit Formate
⇒ Codepage 473 (IBM-PC unter MS-DOS)
⇒ Auch heute noch bei Eingabeaufforderungs-Fenstern unter Windows
35 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
ISO IEC 8859 8-Bit-Zeichensatz aufbauend auf ASCII (erste 7 Bits)
Halbherzig => Wieder mehrere Varianten (z.B. ISO 8859-1 für westeuropäische Länder)
=> 15 verschiedene Zeichensätze (1 bis 16 ohne 12)
36 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
12 ISO IEC 8859
-1 Latin-1 Westeuropäisch -2 Latin-2 Osteuropäisch -3 Latin-3 Südeuropäisch -4 Latin-4 Baltisch -5 Kyrillisch -6 Arabisch -7 Griechisch Veränderung an 8 Positionen -8 Hebräisch (u.a. €-Zeichen) -9 Latin-5 Türkisch -10 Latin-6 Nordisch -11 Thai -13 Latin-7 Baltisch -14 Latin-8 Keltisch -15 Latin-9 Westeuropäisch -16 Latin-10 Südosteuropäisch
37 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Unicode - Identisch mit Universal Character Set (UCS nach ISO 10646 ISO 10646) - 42 Bit / Zeichen => über vier Milliarden Möglichkeiten - Aber nur ~1 Million prinzipiell erlaubte Code-Werte
- Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language.
38 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Unicode - Die Codes von Unicode-Zeichen werden hexadezimal mit vorangestelltem U+ notiert.
- ursprünglich 65.536 Zeichen (UCS-2, 16 Bit)
- In Version 2.0 wurde der Codebereich um weitere 16 gleichgroße Bereiche, sogenannte Planes erweitert. Somit sind nun maximal 1.114.112 (220+216) Zeichen bzw. Codepoints (=eindeutige Zeichennummer )im Codebereich von U+00000 bis U+10FFFF vorgesehen (UCS-4, 32 Bit).
- Bislang, in Unicode 4.0, sind bisher 96.382 Codes individuellen Zeichen zugeordnet. Das entspricht nur etwa erst 9% des Coderaumes.
39 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
13 Unicode Transformation Format (UTF), 256 „Variation Selectors“ für Glyphenvarianten (Fraktur, Handschrift, Antiqua, etc.)
Für die unteren 256 Zeichen die weit verbreitete ISO 8859-1- Kodierung (Latin1) beibehalten
40 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Erstellen von Unicode-Zeichen Beispiel „⊕“
Suche in entsprechender Tabelle (hier: Mathematische Symbole) => hexadezimale Zeichennummer
Python: Voranstellen von \uHHHH (vier Hexadezimale Ziffern (0 .. 65.536) in Python hier \u2295
HTML oder XML: „⊕“ Die Zeichennummer kann auch dezimal, dann ohne führendes „x“, angegeben werden, zum Beispiel „⊕“ für das gleiche Zeichen.
41 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Erstellen von Unicode-Zeichen Die Text Encoding Initiative TEI hat Empfehlungen erarbeitet, Unicode in XML-Dateien in leichter verständlicher Form einzugeben. Hier handelt es sich um einen Satz benannter Zeichen (engl.: named entites), der in das Stylesheet integriert wird. Allgemein übliche benannte Zeichen sind z.B. die Umlaute wie „Ä“ statt „Ä" für Ä.
42 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
14 Erstellen von Unicode-Zeichen Unter Windows (ab Windows 2000) kann in vielen Programmen der Code hexadezimal eingegeben werden. Mit nachfolgendem Alt-x, innerhalb von MS Word 2003 aber Alt-c, wird das Zeichen erzeugt. Diese Tastenkombination kann unter Windows XP auch benutzt werden, den Code des vor dem Cursor stehenden Zeichens anzuzeigen.
43 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Zeichenketten in Python
Python implementiert zwei verschiedene Basis-Typen für Zeichenketten (strings):
· Strings (8-Bit, ein Oktett, ein Byte)
· Unicode-Strings (variable Codelänge von 8-32 Bits)
44 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Zeichenketten in Python
Strings können in einfachen, doppelten oder dreifachen Anführungszeichen geschrieben werden
=> Unterschiede
45 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
15 Zeichenketten in Python
>>> "Hello World“ "Hello World“ >>> 'Python ist toll!‚ 'Python ist toll!‚ >>> """Python ist toll!""„ >>> print _ Python ist toll! >>>'Python ist toll!' SyntaxError: EOL while scanning single-quoted string
46 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Zeichenketten in Python
>>> 'Python ist \ \(Backslash) verlängert die physische Zeile zu einer logischen Zeile. toll!‚ 'Python ist toll!‚
>>> """Auch Möchtegerne müssen 0,00€ für Python bezahlen""„ 'Auch M\xf6chtegerne m\xfcssen 0,00\x80 f\xfcr Python bezahlen‚ >>> print -_ Auch Möchtegerne müssen 0,00€ für Python bezahlen
47 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Zeichenketten in Python
Strings sind Zeichen-Sequenzen, die mit ganzen Zahlen, beginnend bei Null, indiziert werden. Um auf ein einzelnes Zeichen davon zuzugreifen, verwendet man den Index-Operator s[ i ] wie folgt:
a = "Hello World" b = a[4] # b = 'o'
48 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
16 Zeichenketten in Python Um einen Teilstring zu erhalten, benutzt man den Teilbereichsoperator (engl. slice) s[i:j]. Dieser extrahiert alle Elemente von s, deren Index k im Intervall i <= k < j liegt. Falls einer der beiden Indizes weggelassen wird, so wird entweder der Anfang oder das Ende des Strings angenommen:
a = “Hello World” c = a[0:5] # c = "Hello" d = a[6:] # d = "World" e = a[3:8] # e = "lo Wo"
49 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Zusammenfassung
Wieder einmal viele, viele Details.
Jetzt müssen Sie üben, direkt mit dem Interpreter
50 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
Fragen und (hoffentlich) Antworten
51 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
17 Ausblick
Kontrollstrukturen
Danke für Ihre Aufmerksamkeit
52 Programmieren 1 – Teil 1 – V5 Prof. Dr. Detlef Krömker Hier wird Wissen Wirklichkeit WS 2007/2008
18