<<

Modul: Programmierung -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 ---- 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 .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. 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... 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 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 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 Chinesisch (Taiwan) Guojia BiaozhunZeichensatz für vereinfachte chinesische Schriftzeichen HKSCS Chinesisch (Hong Kong) ISCII Alle indischen Sprachen KOI8- 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 (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 … …D … …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 I

5… P R S U V X 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 \ \() 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