HEUTE. Unterschiede Pseudocode / Programmcode. Rundung und modulo (Tafel) Pseudocode: findprimeswithdifference. Strings in JAVA.

Ähnliche Dokumente
Verarbeitung von Zeichenketten

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Abschnitt 11: Beispiel: Die Klasse String (Teil 1)

Tutorium 2. Strings. Skript zur Vorlesung Einführung in die Programmierung

Strings in Java. Die String Klasse und Methoden. A. Müller

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Objektorientierte Programmierung. Kapitel 17: Strings

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Objektorientierte Programmierung. Kapitel 18: Strings

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Abschnitt 7: Beispiel: Die Klasse String (Teil 1)

Der Datentyp String. Stringvariable und -vergleiche

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

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

Beispielprüfung CuP WS 2015/2016

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Primitive Datentypen

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Zeichenketten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java. 16.

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Programmierpraktikum

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Elementare Konzepte von

Modellierung und Programmierung 1

a) Für das vorgegebene Programmstück ergibt sich folgendes Referenzgeflecht:

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Einführung in die Programmierung mit VBA

Übungen zum Bioinformatik-Tutorium. Blatt 3

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Methoden und Wrapperklassen

Grundlagen der Informatik Enums, Strings und Arrays

13. Erweiterte Konzepte Grundlagen der Programmierung 1 (Java)

Informatik II. Woche 10, Giuseppe Accaputo

System.out.println("TEXT");

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Vorkurs: Java-Einführung

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Strings. 3 Stringvergleiche Realisieren Sie bitte folgendes Programm: AnPr

2 Programmieren in Java I noch ohne Nachbearbeitung

Einfache Sortierverfahren in Java, 2. Version

1 Klassen anlegen und Objekte erzeugen

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Informatik II Prüfungsvorbereitungskurs

Welche Informatik-Kenntnisse bringen Sie mit?

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Erste Java-Programme (Arrays und Schleifen)

Programmiervorkurs Einführung in Java Tag 1

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Übungen zu Algorithmen

1 Klassen anlegen und Objekte erzeugen

Erste Java-Programme (Scopes und Rekursion)

Algorithmen und Datenstrukturen II

Einführung in die Programmierung 1

Programmieren 2 Java Überblick

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke.

Dateien. DVG Dateien 1

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

Informatik I - Einstiegskurs

Vorkurs Informatik WiSe 16/17

Transkript:

15.11.06 1 HEUTE 15.11.06 3 Unterschiede Pseudocode / Programmcode Rundung und modulo (Tafel) Pseudocode: findprimeswithdifference Strings in JAVA Pseudocode: kontextfrei Variablentyp passend Schleifen nach Sinn klare mathematische Struktur passender Rückgabetyp man erklärt Menschen Programmcode: braucht Klassen-/Methodenkontext Variablen mit Typ, muss deklarieren konkrete do-/for-/while-schleifen Effizienztricks Rückgabetyp zu definieren Sicherheitsabfragen evtl. redundante Statements man erklärt dem Computer 15.11.06 2 Pseudocode 15.11.06 4 findprimeswithdifference: algorithmische Ideen exakte Art, Algorithmen zu beschreiben Form zwischen Fließtext und Programmcode: sprachlich direkt wie Text übersichtlich strukturiert wie Code Kompromiss zwischen beiden Extremen Vorteile: mathematische Klarheit Unabhängigkeit von Programmiersprachen viele Fachbücher verwenden Pseudocode Bedingungen für Lösung: Paar von Primzahlen die benachbart sind mit gegebener Differenz Idee A: erzeuge aufsteigend alle Paare von benachbarten Primzahlen prüfe jeweils, ob sie die gegebene Differenz haben Idee B: (alternativ): erzeuge aufsteigend Paare von Primzahlen mit der gegebenen Differenz prüfe jeweils, ob sie benachbart sind

15.11.06 5 Idee A: bildliche Funktionsweise mit diff = 8 3 5 7 1113 1719 23 2931 37 4143 47 53 5961 67 7173 79 83 89 97 15.11.06 7 Idee B: bildliche Funktionsweise mit diff = 8 3 5 7 1113 1719 23 2931 37 4143 47 53 5961 67 7173 79 83 89 97 47 prim Tests 57 prim Tests Primzahltest mit positivem Ergebnis Primzahltest mit negativem Ergebnis lo hi Primzahltest mit positivem Ergebnis Primzahltest mit negativem Ergebnis Primzahltest in der i Schleife lo i hi 15.11.06 6 Idee A: Pseudocode findprimeswithdifference( diff ) Input: diff Æ Output: lo, hi Æ benachbarte Primzahlen mit hi lo = diff, wenn existent { Sonderfälle überprüfen } if diff = 1 then return ( 2, 3 ) else if diff ist ungerade then return kein solches Paar endif { hi mit kleinster ungerader Primzahl initialisieren } hi := 3 do { while hi lo diff } lo := hi hi := lo + 2 while hi ist keine Primzahl do hi := hi + 2 endwhile while hi lo diff return ( lo, hi ) 15.11.06 8 Idee B: Pseudocode findprimeswithdifference( diff ) Input: Output: wie Idee A { Sonderfälle: wie Idee A } { lo mit kleinster ungerader Primzahl initialisieren } lo := 3 while true do hi := lo + diff if lo prim and hi prim then i := lo + 2 while i < hi and i nicht prim do i := i + 2 endwhile if i hi then { erfolgreich } return ( lo, hi ) endif lo := hi else lo := lo + 2 endif endwhile

15.11.06 9 Idee B: bildliche Funktionsweise mit diff = 8 ohne Doppelte 15.11.06 11 Strings in JAVA 3 5 7 1113 1719 23 2931 37 4143 47 53 5961 67 7173 79 83 89 97 Textverarbeitung ist eine der wichtigsten Computeraufgaben, z.b. Editor: Email, Programme, Briefe, Artikel, Bücher Compiler, Shell autom. Datenein- und Ausgabe Texte liegen in zwei Formen vor: 43 prim Tests im externen Speichermedium Datei (engl. file) im Arbeitsspeicher String (dt. Zeichenkette) wiederholter = eingesparter Primzahltest lo i hi 15.11.06 10 15.11.06 12 Strings in JAVA string engl.: Schnur, Saite string bag engl.: Einkaufsnetz string orchestra engl.: Streichorchester bedeutet Hintereinanderreihung von Zeichen, also eigentlich character string: Z_e_i_c_h_e_n_k_e_t_t_e Strings in JAVA sind eine eigene Klasse keine Information über inneren Aufbau (black box) Zugriff nur über public-methoden (tool box)

15.11.06 13 Eigenschaften von Strings 15.11.06 15 Verkettung (Konkatenation) von Strings Strings werden zur Laufzeit angelegt String mystr3 = "die " + ; // einfache Verkettung Strings sind unveränderlich Strings können literal initialisiert werden, z.b.: "die " String hello = "Hallo Freunde! - Hallo Otto!" ; String steuernr = "4 / 367 882 57 / 210" ; String antwort = "\"Ach ja?\"\n\"bl\u00f6d!\"\n\"richtig.\"\n" ; mystr3 "die TU Berlin" String + String String-Variablen haben Referenztyp: "Hallo Freunde! Hallo Otto!" 15.11.06 14 Konstruktoren von Strings 15.11.06 16 Verkettung (Konkatenation) von Strings String mystr0 = new String () ; // leerer String String mystr1 = new String ( ) ; // literale Init. String mystr3 = "die " + ; // einfache Verkettung += " 10623" ; // am Ende anhängen String = new String ( mystr1 ) ; // kopierter String "die " mystr0 "" mystr3 "die TU Berlin" String + String mystr1 vorher " 10623" nachher String += String

15.11.06 17 get-methoden von Strings 15.11.06 19 get-methoden von Strings int length ( ) // Länge in Anzahl Zeichen String substring ( int begin, int end ) // Teilstring ausgeben int length0 = mystr0.length() ; // = 0 int length2 =.length() ; // = 15 = größter Index + 1 String mystr4 = mystr3.substring( 4, 8 ) ; // = "TU B" mystr0 "" mystr3 "d i e _ T U _ B e r l i n" ( 1) + 1 = 0 0 1 2 3 4 5 6 7 8 9 10 11 12 "T U _ B e r l i n _ 1 0 6 2 3" mystr4 "T U _ B" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + 1 = 15 15.11.06 18 get-methoden von Strings 15.11.06 20 get-methoden von Strings char charat ( int index ) char letter0 = mystr0.charat( 3 ) ; char letter2 =.charat( 3 ) ; // Zeichen an Pos. index // (ab 0) // ungültig => Exception! // = B int indexof ( char letter ) // Pos. des 1. Zeichens int indexof ( String str ) // Pos. des 1. Teilstrings int index1 = mystr3.indexof( e ) ; // = 2 int index2 = mystr3.indexof( "Berlin" ) ; // = 7 int index3 = mystr3.indexof( "10623" ) ; // = -1 (nicht gefunden) mystr0 "" (0 1 2 3) mystr3 "d i e _ T U _ B e r l i n" 0 1 2 3 4 5 6 7 8 9 10 11 12 "T U _ B e r l i n _ 1 0 6 2 3" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 indexof( e ) indexof( "Berlin" )

15.11.06 21 set-methoden von Strings 15.11.06 23 Vergleichsmethoden von Strings String tolowercase ( ) // alles in Kleinbuchstaben boolean equals ( String str ) // inhaltlich gleich zu str? String touppercase ( ) // alles in Großbuchstaben String mystr5 =.tolowercase() ; // = "tu berlin 10623" String mystr6 =.touppercase() ; // = "TU BERLIN 10623" String mystr8 = new String( ) ; boolean isequal1 =.equals( mystr3 ) ; boolean isequal2 =.equals( mystr8 ) ; // = false // = true mystr3 "die TU Berlin" false mystr5 "tu berlin 10623" false true mystr8 mystr6 "TU BERLIN 10623" == mystr8.equals( mystr8 ) 15.11.06 22 set-methoden von Strings 15.11.06 24 Vergleichsmethoden von Strings String replace ( char old, char new ) // jedes old -> new boolean startswith ( String str ) // beginnt mit str? String mystr7 = mystr3.replace( e, \u00e4 ) ; // = "diä TU Bärlin" boolean endswith ( String str ) // endet mit str? boolean isprefix =.startswith( mystr4 ) ; // = true boolean ispostfix =.endswith( "Berlin" ) ; // = false mystr3 "d i e _ T U _ B e r l i n" mystr4 "TU B" mystr7 "d i ä _ T U _ B ä r l i n" true startswith( "TU B" ) false endswith( "Berlin" ) "Berlin"

15.11.06 25 Vergleichsmethoden von Strings 15.11.06 27 Eigenschaften von StringBuffer s int compareto ( String str ) // lexikogr. Vergleich int compval1 =.compareto( mystr6 ) ; // = 32 int compval2 =.compareto( mystr8 ) ; // = 0 // compval1 = e - E = (char)101 - (char)69 = 32 // str1.compareto( str2 ) == 0 str1.equals( str2 ) mystr6 "T U _ B E R L I N _ 1 0 6 2 3" werden zur Laufzeit angelegt sind veränderliche Zeichenkettenobjekte unterstützen im Wesentlichen Veränderungsmethoden müssen in String umgewandelt werden, um die String-Methoden zu nutzen e E = 32 "T U _ B e r l i n _ 1 0 6 2 3" 0 mystr8 "T U _ B e r l i n _ 1 0 6 2 3" 15.11.06 26 Umwandlungsmethoden von Strings 15.11.06 28 Konstruktoren von StringBuffer s static String valueof ( <type> var ) static String valueof ( Object obj ) // <type> -> String // Object -> String int intval = 10623 ; String intstr = String.valueOf( intval ) ; // = "10623" String doublestr = String.valueOf( 1.0623e4 ) ; // = "10623.0" StringBuffer mybuf0 = new StringBuffer () ; // leer StringBuffer = new StringBuffer ( );// literal StringBuffer mybuf2 = new StringBuffer ( mystr1 ) ; // kopiert // es gibt KEINEN Konstruktor StringBuffer( StringBuffer )! // String.valueOf( <type> var ) == new <Type>( var ).tostring() // String.valueOf( Object obj ) == obj.tostring() mybuf0 "" mystr1 intval 10623 intstr "10623" mybuf2

15.11.06 29 Ausgabe / Umwandlung von StringBuffer s 15.11.06 31 Einfügen von Elementen int length ( ) // Länge der Zeichenkette int capacity ( ) // Größe des belegten Speichers StringBuffer insert ( int begin, String str ) StringBuffer insert ( int begin, <type> var ) // einfügen // ab begin String tostring ( ) String mystr9 =.tostring() ; // Umwandlung in einen String.insert( 9, ", PLZ" ) ; // = "TU Berlin, PLZ 10623" mybuf2.insert( 9,, ) ; // = "TU Berlin,10623.0" vorher ", PLZ" nachher "TU Berlin, PLZ 10623" mystr9 15.11.06 30 Anfügen von Elementen 15.11.06 32 Löschen von Elementen StringBuffer append ( String str ) // am Ende anhängen StringBuffer deletecharat ( int index ) // Zeichen löschen StringBuffer append ( <type> var ) // primitiver Typ StringBuffer delete ( int begin, int end ) // Teilstr. löschen.append( " 10623" ) ; // = mybuf2.append( 1.0623e4 ) ; // = "TU Berlin10623.0".delete( 2, 9 ) ; // = "TU, PLZ 10623" mybuf2.deletecharat( 16 ) ; // = "TU Berlin,106230" vorher " 10623" vorher "T U _ B e r l i n, _ P L Z _ 1 0 6 2 3" nachher 0 1 2 3 4 5 6 7 8 9 10 1112 1314 1516 1718 19 nachher "T U, _ P L Z _ 1 0 6 2 3"

15.11.06 33 Verändern von Elementen 15.11.06 35 Zerlegen von Strings: die Klasse StringTokenizer StringBuffer setcharat ( int index, char letter ) StringBuffer replace ( int begin, int end, String str ) boolean hasmoretokens ( ) // noch weitere Wörter? String nexttoken ( ) // nächstes Wort ausgeben.setcharat( 2, : ) ; // = "TU: PLZ 10623" mybuf2.replace( 3, 10, "Dresden " ) ; // = "TU Dresden 106230" StringTokenizer strtok = new StringTokenizer( text ) ; while ( strtok.hasmoretokens() ) System.out.println( strtok.nexttoken() ) ; vorher nachher mybuf2 mybuf2 "T U _ B e r l i n, 1 0 6 2 3 0" 0 1 2 3 4 5 6 7 8 9 10 1112 1314 15 "T U _ D r e s d e n _ 1 0 6 2 3 0" "Dies ist ein Text." 15.11.06 34 Zerlegen von Strings: die Klasse StringTokenizer import java.util.stringtokenizer ; String text1 = "Dies ist ein Text." ; String text2 = "Dies,ist,ein:Text." ; // normale Trennzeichen // andere Trennzeichen StringTokenizer strtok1 = new StringTokenizer ( text1 ) ; StringTokenizer strtok2 = new StringTokenizer ( text2, ",:" ) ; "Dies ist ein Text." "Dies,ist,ein:Text." "Dies" "ist" "ein" "Text."