Diana Lange. Generative Gestaltung Komplexe Datentypen: String

Ähnliche Dokumente
String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Diana Lange. Generative Gestaltung Operatoren

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Einstieg in die Informatik mit Java

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Repetitorium Informatik (Java)

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Diana Lange. GENERATIVE GESTALTUNG Komplexe Datentypen: PShape

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Übungsblatt 3: Algorithmen in Java & Grammatiken

Herzlich Willkommen. Über mich Termine Literatur Über PHP

Objektorientierte Programmierung OOP Programmieren mit Java

PIWIN 1 Übung Blatt 5

Biograe Grundlagen Arten Anwendung Problem. L-Systeme. Fabian Trattnig, Georg Messner, Benedikt Huber. 25. Jänner 2008

Probeklausur: Programmierung WS04/05

Programmierung in C. Grundlagen. Stefan Kallerhoff

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Dr. Monika Meiler. Inhalt

Array-Verwaltung. Array-Verwaltung im Speicher Illustration. Zuweisung von Arrays. Speicherbereinigung. Aliasierung Eine Besonderheit

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Objektorientierte Programmierung

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

Lua - Erste Schritte in der Programmierung

Java programmieren: Konsolen-Programme

Objektorientierte Modellierung (1)

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Modellierung und Programmierung 1

Graphic Coding. Klausur. 9. Februar Kurs A

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

Klausur in Programmieren

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Jahrgang: Jahrgang 1. Thema: Systementwicklung einer Webapplikation - Geheimnachrichten-Generator

Programmierung mit C Zeiger

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

5.4 Klassen und Objekte

4 Codierung nach Viginere (Lösung)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte Programmierung OOP Programmieren mit Java

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

5. Tutorium zu Programmieren

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Bitte beachten Sie: Es gibt mehr als einen Lösungsweg. Ihre Lösung kann auch richtig sein, wenn sie nicht mit der hier gezeigten Lösung übereinstimmt.

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Einführung in die Programmierung

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Programmierkurs: Delphi: Einstieg

Primitive Datentypen

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Klausur C-Programmierung / / Klingebiel / 60 Minuten / 60 Punkte

Vorlesung Informatik II

JAVA KURS COLLECTION

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Relationen-Algebra und Persistenz Teil I

Programmierkurs Java

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Grundwissen Informatik JS September 2015

Primitive Datentypen und Felder (Arrays)

Handbuch für die Erweiterbarkeit

Computeranwendung und Programmierung (CuP)

Einführung in die Programmierung für Wirtschaftsinformatik

5 Grundlagen der Java-Syntax

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

2. Programmierung in C

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Java Einführung Collections

Probeklausur: Programmierung WS04/05

Windows PowerShell. CmdLets. PipeLine / Filter. Variablen / Operatoren. Schleifen / Prüfmethoden. Funktionen / Skripte. Allgegenwärtige Parameter

Java - Überladen von Methoden und Konstruktoren

Thomas Behr. 17. November 2011

public class SternchenRechteckGefuellt {

Klausur in Programmieren

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Die Programmiersprache C99: Zusammenfassung

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

5 Codierung nach RSA (Lösung)

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Klassen mit Instanzmethoden

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Programmierstil. Objektsammlungen. Konzepte. Zwischenspiel: Einige beliebte Fehler... Variablennamen Kommentare Layout Einrückung

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

Einführung in die Informatik

Propädeutikum zur Programmierung

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Informatik II Musterlösung

Inhalt: Version 1.7.5

Algorithmen und Datenstrukturen 01

Arbeiten mit JavaKara

Quiz und Übungen. C++ Übung am 19. Mai 2016

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays

Transkript:

Diana Lange Generative Gestaltung Komplexe Datentypen: String

einführung In diesem Foliensatz geht es um den Datentyp String. Die Darstellung von Schrift wird in einem gesonderten Foliensatz behandelt: http://diana-lange.de/content/files/gg_hawk_ss26/17_komplexedatentypen_pfont.pdf In Variablen von diesem Datentyp werden Zeichenketten (z.b. Wörter, Sätze, usw.) mit beliebiger Länge abgelegt. Da Zeichenketten häufig in der Programmierung benötigt werden, gibt es für sie eine spezielle Initalisierung. Beachte: Zeichenketten werden mit doppelten Anführungszeichen umrahmt.

einführung In diesem Foliensatz geht es um den Datentyp String. Die Darstellung von Schrift wird in einem gesonderten Foliensatz behandelt: http://diana-lange.de/content/files/gg_hawk_ws15/15_komplexedatentypen_pfont.pdf In Variablen von diesem Datentyp werden Zeichenketten (z.b. Wörter, Sätze, usw.) mit beliebiger Länge abgelegt. Da Zeichenketten häufig in der Programmierung benötigt werden, gibt es für sie eine spezielle Initalisierung. Beachte: Zeichenketten werden mit doppelten Anführungszeichen umrahmt. Da der Datentyp String zu den Komplexen Datentypen gehört, gibt es aber auch eine andere Möglichkeit der Initalisierung. String txt = new String("Hallo Welt"); vergleiche: PVector meinvektor = new PVector(10, 15);

ZeichenKetten ZusammenFÜhren Der einzige Rechenoperator, der auch für Strings zulässig ist, ist das Pluszeichen. Im Kontext von Strings hat das Plus aber eine andere Bedeutung: Mit dem Plus werden Zeichenketten zusammengefügt; es wird eine zusammgesetzte Zeichenkette gebildet. Man spricht dabei von Konkatenation. String h = "Hallo"; String w = " Welt"; String ausgabe = h + w; // ausgabe hat jetzt den Wert "Hallo Welt"

typumwandlung Die Umwandlung in einen String ist am einfachsten. Denn sobald ein String schon einen Inhalt hat, kann ein Element mit einem beliebigen Datentyp einfach mit einem Plus hinzugefügt werden. int zahl = 42: String antwort = zahl + " ist die Antwort"; // ergibt "42 ist die Antwort"

typumwandlung Die Umwandlung in einen String ist am einfachsten. Denn sobald ein String schon einen Inhalt hat, kann ein Element mit einem beliebigen Datentyp einfach mit einem Plus hinzugefügt werden. int zahl = 42: String antwort = zahl + " ist die Antwort"; // ergibt "42 ist die Antwort" Wenn der String, den man erstellen möchte, nur die Zahl selber beinhalten soll, dann kann man einfach einen leeren String hinzufügen. String wort = "" + 4; // ergibt "4" Was nicht geht: String zahlalsstring = 5.55;

String String "" String("") String(char[] einzelzeichen) // keine Attribute int length() char charat(int index) boolean contains(string lookup) boolean contains(char lookup) boolean equals(string comparestring) int indexof(string s) String replace(char oldchar, char newchar) void replaceall (String s, String t) String substring(int beginindex, int endindex) String tolowercase() String touppercase() Hier gezeigt ist ein Ausschnitt der Methoden, die String mitliefert. Weitere Infos gibt es unter https://docs.oracle.com/javase/7/docs/api/java/lang/string.html Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

String length() und charat() Die Zeichen einer Zeichenkette sind durchnummeriert: "Hallo Welt" 01234 56789 Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

string length() und charat() Die Zeichen einer Zeichenkette sind durchnummeriert: "Hallo Welt" 01234 56789 Über diese Nummerierung (index) kann man aus einer Zeichenkette ein einzelnes Zeichen extrahieren. char anfang = txt.charat(0); char foo = txt.charat(6); // 'h' // 'w' Achtung! Wie bei Arrays ist ein Zugriff auf einen Index, der nicht existiert, nicht möglich. println("fehler: " + txt.charat(10)); // FEHLER - OUT OF BOUNDS

string length() und charat() Die Zeichen einer Zeichenkette sind durchnummeriert: "Hallo Welt" 01234 56789 10 Zeichen Mit der Methode length() kann die Länger einer Zeichenkette (Anzahl von Zeichen) bestimmt werden println(txt.length()); // Ausgabe: 10 int letzterindex = txt.length() - 1; char letzteszeichen = txt.charat(letzterindex); println(letzteszeichen); // Ausgabe: 't'

string length() und charat() Mit den Methoden length() und charat() und einer Schleife kann man eine Zeichenkette zeicheweise durchlaufe: int i = 0; while (i < txt.length()) { char aktuelleszeichen = txt.charat(i); println("aktuelles Zeichen: " + aktuelleszeichen); i = i + 1; } Ausgabe: "aktuelles Zeichen: h" "aktuelles Zeichen: a" "aktuelles Zeichen: l"... Beispielcode: http://www.openprocessing.org/sketch/204745

string contains() Die contains() Methode überprüft, ob ein Zeichen oder eine Zeichenkette in einem String vorkommt. Als Ergebnis wird true oder false zurückgegeben. Achtung: Es wird zwischen Groß- und Kleinschreibung unterschieden. println(txt.contains('a')); // Ausgabe: true println(txt.contains("hallo")); // Ausgabe: true boolean ueberpruefung = txt.contains("hallo"); println(ueberpruefung); // Ausgabe: false

string equals() Die equals() Methode überprüft, ob zwei Zeichenketten identisch sind. Zwei Zeichenketten sind identisch, wenn alle Zeichen der beiden Zeichenketten gleich sind. Als Ergebnis wird true oder false zurückgegeben. Achtung: Es wird zwischen Groß- und Kleinschreibung unterschieden. println(txt.equals("hallo Welt")); // Ausgabe: true String hallowelt = "hallo welt"; if (txt.equals(hallowelt)) { // Nope - Bedingung ist false }

string indexof() Die indexof() Methode überprüft, ob ein Zeichen oder eine Zeichenkette in einem String vorkommt. Als Ergebnis wird die Position (Index) zurückgegeben, an der der Suchstring (zum ersten Mal) gefunden wurde oder -1, wenn der Suchstring nicht im Ursprungsstring enthalten ist. Achtung: Es wird zwischen Groß- und Kleinschreibung unterschieden. println(txt.indexof("welt")); // Ausgabe: 6 int index = txt.indexof('l'); println(index); // Ausgabe: 2 String foo = "xzy"; println(txt.indexof(foo)); // Ausgabe: -1 Beispielcode: http://www.openprocessing.org/sketch/146415

string replace() Die replace() Methode ersetzt ein Zeichen mit einem anderen Zeichen. Als Ergebnis wird ein neuer, geänderter String zurückgegeben, String geandert = txt.replace('l', 'x'); println(geandert); // Ausgabe: "Haxxo Wext"

string replaceall() Die replaceall() Methode ersetzt eine (Teil-)Zeichenkette mit einem anderen (Teil-)Zeichenkette in einem String. Als Ergebnis wird ein neuer, geänderter String zurückgegeben, String geandert = txt.replaceall("l", "xyz"); println(geandert); // Ausgabe: "Haxyzxyzo Wexyzt"

string substring() Die substring() Methode extrahiert eine Teilzeichenkette aus einer Zeichenkette. Als Ergebnis wird ein neuer String zurückgegeben. Als Paramter werden zwei Indexe (int) übergeben. Der erste Parameter bestimmt das erste Zeichen, das in der Teilzeichenkette enthalten sein soll; der zweite Parameter bestimmt das Ende (so dass das Zeichen an dieser Position nicht mehr enthalten ist). Hallo Welt 01234 56789 String teilzeichenkette = txt.substring(0, 5); println(teilzeichenkette); // Ausgabe: "Hallo" String ende = txt.substring(8, txt.length()); println(ende); // Ausgabe: "lt"

string tolowercase() & touppercase() Die Methoden tolowercase() und touppercase() wandeln den aktuellen String in Klein- bzw. Großbuchstaben um und gibt den umgewandelten String zurück. String klein = txt.tolowercase(); String gross = txt.touppercase(); println(txt); println(klein); println(gross); // Ausgabe: "Hallo Welt" // Ausgabe: "hallo welt" // Ausgabe: "HALLO WELT"

Escape Zeichen Um bestimmte Zeichen in Strings oder chars darzustellen, ist es notwendig diese zu maskieren Dies ist beispielsweise der Fall, wenn man Zeichen darstellen will, die eine spezielle Bedeutung haben (z.b. Hochkommata - die für gewöhnlich Anfang und Ende des Strings markieren) oder auch gar nicht dargestellt werden (z.b. Zeilenumbruch). Diese Zeichen werden durch so genannte Escape-Sequenzen dargestellt. Quelle: http://www.java-blog-buch.de/0304-escape-sequenzen/ Die Kombination \n (Backslash n) in einem String erzeugt einen Zeilenumbruch. Weitere Escape Zeichen sind unter der oben beigefügten Quelle zu finden. String ausgabe = "hallo\nwelt"; hallo Welt Die Kombination \" (Backslash Hochomma) in einem String wird als Hochkomma dargestellt. String ausgabe = "hallo\"welt\""; hallo "Welt" Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

Anwendingsbeispiel Lindenmayer-System Lindenmayer-Systeme (L-Systeme) sind grammatische Modelle zur Erstellung realisitischer Pflanzenstrukturen. Benannt wurden das 1968 entwickelte System nach dem Botaniker Aristid Lindenmayer. Er transformierte den regelbehafteten Aufbau von Pflanzen in ein Ersetzungssystem. In einem einfachen Beispiel wird die Funktionsweise deutlicher: Am Anfang ist das Zeichen»F«(Axiom) gegeben, welches durch die Zeichenfolge»[F+F]«ersetzt werden soll. Nach einer Ersetzung erhält man nun»f+f«, nach der zweiten»[[f+f]+[f+f]]«. Die auf diese Weise entstandene Zeichenkette wird dann als Grafik interpretiert, wobei jedem Zeichen eine explizite Bedeutung zugeordnet ist (Siehe nächste Folien) Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

Anwendingsbeispiel Lindenmayer-System Ausgangssituation: Axiom: F Ersetzungsregeln: F -> [F+F] Das Axiom ist die Zeichenkette, die am Anfang gegeben ist. Die Ersetzungsregeln bestimmen welche Zeichen mit welchen anderen Zeichen ersetzt werden soll. F [F+F] [[F+F]+[F+F]] [[[F+F]+[F+F]]+[[F+F]+[F+F]]]... // Axiom // erste Ersetzung // zweite Ersetzung // dritte Ersetzung Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

Anwendingsbeispiel Lindenmayer-System Im Lindenmayer-System repräsentiert jedes Zeichen eine bestimmte grafische Komponente. In dieser Tabelle finden sich alle vereinheitlichten Zeichen und ihre Bedeutung. Natürlich ist es problemlos möglich, weitere Zeichen und Bedeutungen hinzuzufügen. So könnte beispielsweise das System um das Zeichen»B«für Blühte zeichnen und»l«für Blatt zeichnen erweitert werden. Zeichen Bedeutung F Vorwärtsbewegung um eine Linienlänge & Zeichnen der Linie f Vorwärtsbewegung um eine Linienlänge ohne Zeichnen der Linie + Drehung nach Links um gegebenen Winkel - Drehung nach Rechts um gegebenen Winkel [ Speichern des aktuellen Zustandes (Winkel, Position, usw.) ] Zurückkehren zum vorher gespeicherten Zustand Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

Anwendingsbeispiel Lindenmayer-System Rechts: Die Zeichenkette Links: Die grafische Interpretation dieser Zeichenkette Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

Anwendingsbeispiel Lindenmayer-System Je nach Axiom und Ersetzungsregeln ändert sich die Gestalt der Pflanze. Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de

Anwendingsbeispiel Lindenmayer-System Weitere L-Systeme: Axiom: Ersetzungsregeln: X F -> FF X -> F-[[X]+X]+F[+FX]-X Axiom: Ersetzungsregeln: X F -> FF X -> F[+X]F[-X]+X Axiom: Ersetzungsregeln: F F -> FF+[+F-F-F]-[-F+F+F] Axiom: Ersetzungsregeln: F F -> F[+FF][-FF]F[-F][+F]F Axiom: Ersetzungsregeln: F F -> F[-F]F[+F][F] Generative Gestaltung. Nature. SoSe 2016. diana lange. hawk@diana-lange.de