Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-1/43 Teil IX Dateien
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-2/43 Inhalt String Objekte Daten und Dateien Binär- / Textdateien CSV-Dateien CSV-Dateien & Tabellenkalkulation JAVA - Streams
String - Objekte Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-3/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-4/43 String Für String-Objekte gibt es verschiedene Methoden um diese zu vergleichen, Teile des Strings auszuwerten, oder in andere Datentypen umzuwandeln. Zuerst muss man einen String einlesen; unter JAVA wie folgt: String eingabe = new String(); Scanner sc = new Scanner(System.in); String eingabe = sc.nextline(); String-Vergleich auf Gleichheit (equals) if ( eingabe.equals( Hallo ) ) { System.out.println("Du hast " + eingabe + " eingegeben."); } Achtung: wird jedoch hallo oder HALLO eingegeben, so wird dies nicht als gleich interpretiert!
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-5/43 String String-Vergleich auf Gleichheit, jedoch mit ignorieren der Groß-/Kleinschreibung (equalsignorecase) if ( eingabe.equalsignorecase( hallo ) ) { System.out.println("Du hast " + eingabe + " eingegeben."); } Jede Schreibweise von hallo wird dies nicht als gleich interpretiert! String-Länge (length) if ( 5 == eingabe.length() ) { System.out.println("Du hast " + eingabe + " eingegeben."); } Jede Eingabe eines Strings der Länge 5 wird als true interpretiert.
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-6/43 String Teil-String (substring) String teil_der_eingabe = new String(eingabe.substring(1,4)); Ergibt als Inhalt von teil_der_eingabe : all Erste Zahl bei substring ist die Position, ab der der Teil-String beginnen soll (Zählung ab 0!); die zweite Zahl (optional) ist die Position, ab der Zeichen nicht mehr in den Teil-String übernommen werden sollen. Wird an Position 2 keine Zahl angegeben, wird dies gleich der Angabe von eingabe.length() interpretiert. H a l l o 0 1 2 3 4 String-Vergleich auf einen TeilString if ( eingabe.substring(2,4).equalsignorecase( ll ) ) { Systemout.println("Du hast " + eingabe + " eingegeben."); } Jeder String, der an Position 2-3 ll egal ob groß oder klein geschrieben, wird als gleich interpretiert!
String String-Vergleich auf Gleichheit, jedoch mit ignorieren der Groß-/Kleinschreibung (equalsignorecase) if ( eingabe.equalsignorecase( hallo ) ) { System.out.println("Du hast " + eingabe + " eingegeben."); } Jede Schreibweise von hallo wird dies nicht als gleich interpretiert! Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-7/43
String Umwandeln von String nach Integer String text1 = 123 ; String text2 = 456 ; String text = new String(); int zahl1 = Integer.parseInt(text1); int zahl2 = Integer.parseInt(text2); int summe = zahl1 + zahl2; text = text1 + text2; System.out.println("Summe: " + summe); System.out.println("Aber Text ist: " + text); Ergibt: 579 123456 Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-8/43
Daten & Dateien Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-9/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-10/43 Daten & Dateien Bisher behandelt: Benutzereingaben von der Tastatur Sie haben gelernt, dass sich Computer sehr gut zum Verarbeiten von großen Datenmengen eignen Aber: Diese lassen sich nur sehr umständlich über die Tastatur eingeben
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-11/43 Daten & Dateien Bisher behandelt: Benutzereingaben von der Tastatur Sie haben gelernt, dass sich Computer sehr gut zum Verarbeiten von großen Datenmengen eignen Aber: Diese lassen sich nur sehr umständlich über die Tastatur eingeben Größere Datenmengen liegen daher in Form von Dateien vor Excel-Listen Einfache Textdateien mit einem Wert pro Zeile CSV-Dateien XML-Dateien Binärdateien (darunter auch Bilder, Audio- und Videodateien) Programme können auch so verfasst werden, dass Eingaben über Dateien stattfinden, anstatt durch Eingabe über die Tastatur
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-12/43 Daten & Dateien - Anwendungsbeispiele Ein Sensor schreibt Temperaturwerte eines Versuchsaufbaus in eine Datei, diese Daten sollen später ausgewertet werden Ein Mediaplayer liest Binärdaten aus einer Audio- bzw. Videodatei (*.wav,*.avi,*.mpg,*.mp4) Die Kontaktdaten zum Erstellen eines Serienbriefes liegen als Textdatei vor Spielstände von Computerspielen enthalten teilweise Dateirepräsentationen der gesamten Spielwelt (*.wdl)
Binär- / Textdateien Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-13/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-14/43 Binär-/Textdateien Daten können entweder als Binär- oder als Textdatei vorliegen Bei einer Binärdatei werden Werte in ihrer binären Repräsentation gespeichert Textdateien enthalten Werte als ASCII-Text (Eine Textdatei wiederum enthält natürlich die binäre Repräsentation des Textes) Binärdateien sind in der Regel kleiner als Textdateien z.b. belegt ein int-wert in binärer Form exakt 4 Byte In Textform belegt der gleiche Wert je Stelle 1 Byte, da für jede Stelle ein Zeichen in der Textdatei verwendet wird Textdateien können wiederum leichter von Menschen gelesen und editiert werden
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-15/43 Binär-/Textdateien Binärdateien begegnen Ihnen häufig dort, wo zum Betrachten bzw. Bearbeiten der Daten kein normaler Texteditor verwendet wird, sondern ein Programm Häufig sind dies Multimediadateien wie Audio- oder Audio/Video-Dateien Diese Dateien mit einem Texteditor zu betrachten ist sinnlos, da die enthaltenen Daten keine sinnvolle textuelle Darstellung besitzen Zum Öffnen solcher Dateien muss ein für die Datei passendes Programm verwendet werden, welches in der Lage ist den Inhalt der Datei "richtig" zu interpretieren Grundsätzlich haben Binärdateien den Vorteil, Daten wesentlich effizienter zu speichern als es in Textdateien möglich ist (Zusätzlich werden in den meisten Formaten vor allem Multimediainhalte stark komprimiert)
Binär-/Textdateien Das folgende Beispiel zeigt ein 16x16 Pixel groÿes Grauwertbild (256 Graustufen). Daneben der relevante Auszug aus der Datei. ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ff ff 00 ff ff 00 00 ff ff ff ff 00 00 ff ff 00 ff ff 00 ff ff ff ff 00 ff ff 00 ff ff ff ff 00 ff ff 00 ff ff ff ff ff 00 00 ff ff ff ff ff 00 ff ff 00 ff ff ff ff 00 ff ff 00 ff ff ff ff 00 ff ff 00 ff ff 00 00 ff ff ff ff 00 00 ff ff 00 ff ff 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 ff ff ff ff ff ff ff ff ff ff ff ff 00 ff ff ff 00 ff ff ff ff ff ff ff ff ff ff 00 ff ff ff ff ff 00 ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ff 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-16/43
Binär-/Textdateien Das PNG-Format speichert ebenfalls Bilddaten, allerdings in komprimierter Form. Durch die Kompression ist der Bildinhalt hier nicht direkt ersichtlich. 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52.PNG...IHDR 00 00 00 10 00 00 00 10 08 00 00 00 00 3a 98 a0...:.. bd 00 00 00 01 73 52 47 42 00 ae ce 1c e9 00 00...sRGB... 00 09 70 48 59 73 00 00 0b 13 00 00 0b 13 01 00..pHYs... 9a 9c 18 00 00 00 07 74 49 4d 45 07 de 01 03 09...tIME... 23 09 03 91 a5 eb 00 00 00 51 49 44 41 54 18 d3 #...QIDAT.. 5d 8f 41 0e 00 21 08 c4 5a e3 ff bf 3c 7b 40 51 ].A..!..Z...<{@Q 97 db 4c 4a 09 86 77 26 00 02 90 2e 2c cc 00 e3..lj..w&...,... 64 62 15 b6 26 c2 b8 32 44 e6 36 3e 57 36 63 15 db..&..2d.6>w6c. 41 02 48 70 13 66 bb 66 db d6 de 58 db 89 97 54 A.Hp.f.f...X...T d2 d0 5c b1 4c 87 38 e3 ff fd 0f 45 c7 1b 30 97..\.L.8...E..0. 77 d6 2a 00 00 00 00 49 45 4e 44 ae 42 60 82 w.*...iend.b. Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-17/43
Binär-/Textdateien Als Textdateien bezeichnet man alle Dateien, welche normalen Text enthalten (i.d.r. ASCII) Diese Dateien können mit einem Texteditor wie Notepad, Kate, Vim, Emacs geöffnet und geschrieben werden Häufig werden Textdateien verwendet, wenn Daten gespeichert werden müssen, welche sowohl vom Computer als auch von Menschen verarbeitet werden Ein Beispiel hierfür ist der Quellcode, den Sie im Laufe des Semestersgeschrieben haben Dieser ist in einer einfachen Textdatei hinterlegt, welche vom Compilergeöffnet wird Textdateien enthalten als einzige Information Zeichen, aber keinerlei Metainformationen wie Schriftgröÿe, Schriftstil, etc. (Worddateien sind damit keine Textdateien!) Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-18/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-19/43 Binär-/Textdateien Quellcode: Verschiedene Programmiersprachen verwenden in der Regel verschiedene Dateiendungen, die Dateien sind aber stets reine Textdateien HTML ist eine Beschreibungssprache für Webseiten, welche mittels "Tags" Metainformationen über das Aussehen der Webseite speichert. <head><title>dies ist eine Webseite!</title></head><body> Langweilig...</body> Latex ist Textsatzsystem zur Erzeugung von Dateien der Druckvorstufe (.pdf,.dvi) \item \textbf{latex} ist Textsatzsystem zur Erzeugung von Dateien der Druckvorstufe (\texttt{.pdf}, \texttt{.dvi}) CSV-Dateien sind die textuelle Darstellung von Tabellen, und werden häufig verwendet um strukturierte Daten für Mensch und Maschine lesbar abzuspeichern
CSV-Dateien Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-20/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-21/43 CSV-Dateien CSV-Dateien sind Textdateien Die Abkürzung steht für Comma separated values In deutsch etwa: Durch Kommata getrennte Werte Diese enthalten in einer Dateizeile mehrere Werte, welche durch ein Trennzeichen voneinander getrennt sind Das Trennzeichen kann beliebig gewählt sein, ist aber meistens (,), (;) oder ein Tabulator (\t) CSV-Dateien können mehrere Zeilen enthalten, wobei jede Zeile exakt gleich viele Werte enthalten muss Damit sind CSV-Dateien Darstellungen von Tabellen in reiner Textform
CSV-Dateien Folgendes ist ein Ausschnitt aus einer Wetterdatendatei: 1 Stations_ID, Mess_Datum, Qualitaets_Niveau, Struktur_Version, LUFTTEMPERATUR,REL_FEUCHTE,eor 2 3660,1995030600,1995030600, 7, 26,.3, 93.0,eor 3 3660,1995030601,1995030601, 7, 26,.6, 92.0,eor 4 3660,1995030602,1995030602, 7, 26,.7, 89.0,eor 5 3660,1995030603,1995030603, 7, 26,.8, 88.0,eor 6 3660,1995030604,1995030604, 7, 26,.5, 91.0,eor Es ist üblich, innerhalb solcher Dateien in der ersten Zeile zu definieren, welche Spalte welche Bedeutung hat. DEMO Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-22/43
CSV-Dateien & Tabellenkalkulation CSV-Dateien können von Excel (bzw. Open- und LibreOffice) geöffnet und geschrieben werden: (Spaltentyp festlegen! Wichtig!) Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-23/43
CSV-Dateien & Tabellenkalkulation CSV-Dateien können von Excel (bzw. Open- und LibreOffice) geöffnet und geschrieben werden: (Durch den Spaltentyp beim Import werden die Daten konvertiert) Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-24/43
CSV-Dateien & Tabellenkalkulation Hierdurch ist es nun leicht möglich aus den reinen Zahlen- Daten Grafiken zu erstellen (markieren der Spalten): Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-25/43
CSV-Dateien & Tabellenkalkulation Festlegen beim erstellen des Diagramms wie/was interpretiert werden soll Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-26/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-27/43 CSV-Dateien & Tabellenkalkulation Spaltenüberschrift als Bezeichnung Daten: Bereich für Name Kategorien ggf. anpassen ($B$2 statt $B$1)
CSV-Dateien & Tabellenkalkulation Ergebnis: Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-28/43
DEMO (Mittelwert) Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-29/43
LibreOffice Calc Mittelwert einer Spalte Einen Mittelwert einer ganzen Spalte wird in den verschiedenen Tabellenkalkulationsprogrammen unterschiedlich gebildet. Bsp.: LibreOffice Schritt 1: Markieren der Spalte und Namen vergeben Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-30/43
LibreOffice Calc Mittelwert einer Spalte Eingabe auf H2: =MITTELWERT(LUFTTEMPERATUR) Ziehen der H2 auf alle Zeilen Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-31/43
LibreOffice Calc Mittelwert einer Spalte Spalten B,E,H markieren (Strg und MausKlick) Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-32/43
LibreOffice Calc Mittelwert einer Spalte Ergebnis: Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-33/43
LibreOffice Calc Mittelwert im Diagramm Automatisch von Calc hinzufügen lassen Vorteil: keine eigene Spalte, einfache Daten-Erweiterung möglich Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-34/43
LibreOffice Calc Mittelwert im Diagramm Ergebnis Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-35/43
LibreOffice Calc Extras - Optionen Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-36/43
LibreOffice Calc Beispiel für Bedingte Formatierung : Spalten auswählen Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-37/43
LibreOffice Calc Beispiel für Bedingte Formatierung (Fortsetzung): Ergebnis: Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-38/43
CSV-Dateien CSV-Dateien eignen sich ebenfalls, sie in einem Programm selbst zu öffnen und zu bearbeiten Dazu werden (in Java) spezielle Eingabeströme verwendet, die von Dateien einlesen können Prinzip von Strömen ist es, verschieden Eingabequellen (Tastatur, Datei, Netzwerk,...) zu abstrahieren und damit ähnlich behandeln zu können Kurz: Die Scanner Klasse in JAVA zum formatierten Einlesen von Tastatureingaben kann auch für Dateien verwendet werden Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-39/43
Streams (Ströme) Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-40/43
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-41/43 Streams (Ströme) Ströme, bzw. Stromobjekte sind Klassen, die sich auf die Verarbeitung bestimmter Ein- und Ausgaben spezialisieren Das bereits bestehende Objekt System.in ist ein Objekt der Klasse InputStream, also ein generischer Eingabestrom 1 Scanner scan = new Scanner(System.in); 2 String text = scan.next(); //Extrahiert einen String aus dem Eingabestrom Die Scanner-Klasse ist dabei in der Lage, von einem beliebigen Eingabestrom zu lesen!
Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-42/43 Streams (Ströme) Dateneingabeströme (JAVA: System.in / FileReader) 1 public static void main(string[] args) throws FileNotFoundException 2 { 3 Scanner scan = new Scanner(System.in); 4 String wort1 = scan.next(); 5 String wort2 = scan.next(); 6 System.out.println(wort1 + " " + wort2); 7 } 1 public static void main(string[] args) throws FileNotFoundException 2 { 3 Scanner scan = new Scanner(new FileReader("input.txt")); 4 String wort1 = scan.next(); 5 String wort2 = scan.next(); 6 System.out.println(wort1 + " " + wort2); 7 }
Fragen?