JavaScript Einführungskurs

Größe: px
Ab Seite anzeigen:

Download "JavaScript Einführungskurs"

Transkript

1 JavaScript Einführungskurs c 2001, Thomas Barmetler Stand: 11. September 2001 Regelmäßig aktualisierte Version unter: Kontakt: JS-Tutorial@barmetler.de

2 Inhaltsverzeichnis 1 Einführung in JavaScript Was ist JavaScript - und wie lerne ich es? Fehlersuche Das Grundgerüst Das erweiterte Grundgerüst Recycling von Scripten Deaktiviertes JavaScript - was nun? Kommentare Variable Reservierte Wörter Optionaler Strichpunkt Strings Escape-SequenzenbeiStrings Operatoren ArithmetischeOperatoren StringOperatoren Vergleichsoperatoren LogischeOperatoren BitOperatoren Zuweisungs-Operatoren WeitereOperatoren RangfolgederOperatoren Arbeiten mit Zeichenketten (Strings) String.charAt(n) String.concat(value,... ) String.indexOf(substring, [start]) String.lastIndexOf(substring, [start]) String.length String.split(delimiter) String.substr(start, [length])

3 3.8 String.substring(from, [to]) String.toLowerCase() String.toUpperCase() Regular Expressions StatischeAbfragen DynamischeAbfragen RegExpMethode:test() RegExp Methode: exec() RegExpEigenschaften Patterns formulieren EscapeZeichen Beispiele fürpattern Programmablauf steuern Anweisungsblock Funktion If-Abfrage If...else-Abfrage Switch-Abfrage While-Schleife Do...while-Schleife For-Schleife Break-Anweisung Continue-Anweisung Cookies Cookie Attribut: expires Cookie Attribut: path Cookie Attribut: domain Cookie Attribut: secure Cookiespeichern Cookieauslesen Objekte 50 3

4 7.1 DefinitionvonObjekten EigenschaftenvonObjekten Referenz auf ein Objekt MethodeneinesObjektes Document Object Model (DOM) Das Screen-Objekt DasNavigator-Objekt DasWindow-Objekt DasFrames-Objekt DasLocation-Objekt DasDocument-Object DasFormular-Objekt DasImage-Objekt Weitere Infos LinksinsWWW Editoren Bücher AAngabenfür Übungen 61 B Lösungsvorschläge für die Übungen 64 4

5 1 Einführung in JavaScript Zu Beginn sollen ein paar grundlegende Begriffe erwähnt werden und gleich im Anschluß daran soll gezeigt werden wie man JavaScript Code in eine HTML Datei einbettet. 1.1 Was ist JavaScript - und wie lerne ich es? Erstens: JavaScript ist nicht Java! Während eine Java Anwendung meist in einem speziellen Programm - der sogenannten Entwicklungsumgebung - erzeugt wird, kann JavaScript in jedem beliebigen Texteditor eingegeben werden. Ein weiterer gravierender Unterschied liegt in der Ausführung: Eine Java Applikation muss nach dem programmieren erst einmal kompiliert, also in eine für den Computer verständliche Sprache übersetzt werden. JavaScript hingegen ist eine Script Sprache. Dies bedeutet, dass alle Anweisungen erst zur Laufzeit interpretiert werden. Zweitens: Manchmal ist auch JavaScript nicht gleich JavaScript! Was sich wohl zunächst etwas verwirrend anhört stimmt - leider. Es zeigt sich, dass verschiedene Browser manche Anweisungen einfach anders interpretieren. Ja, es geht sogar soweit, dass verschiedene Versionen des gleichen Browsers einzelne Elemente unterschiedlich interpretieren. Deshalb sollte man sich stets im Klaren sein, für welches Publikum man seine Webseiten erstellt. Ist es nur ein lokales Unternehmensnetz, in dem eine einheitliche Plattform vorherrscht, oder will man seine Seiten über das Internet der ganzen Welt zur Verfügung stellen? Im zweiten Fall sollte unbedingt ein sorgfältiger Cross-Browser-Check erfolgen. Drittens: Diese Kurzeinführung ist mit Sicherheit kein Ersatz für (mindestens) ein gutes JavaScript Buch. Bei der Anschaffung sollte besonders auf einen guten und ausgedehnten Referenzteil Wert gelegt werden. Aufgrund ständiger Änderungen und Neuerscheinungen wurde hier bewußt auf die Angabe einer Literaturliste verzichtet. Nach meiner Erfahrung sind jedoch besonders Bücher aus dem O Reilly oder dem Addison-Wesley Verlag empfehlenswert. Viertens: Studieren sie Quelltexte! Nützen sie die Möglichkeit dass der Code von JavaScript - übrigens genau wie alle HTML-Anweisungen - stets einsehbar ist. Dies geschieht einfach durch einen Klick auf die rechte Maustaste in ihrem Browser und dem dortigen Menüpunkt Quelltext anzeigen bzw. in den englischen Versionen View Source. Und schlussendlich: Experimentieren sie! Seien sie offen gegenüber neuen Ideen und probieren sie diese einfach einmal aus. Denn der beste und effektivste Weg JavaScript zu lernen ist Learning by doing. 5

6 1.2 Fehlersuche Sie werden sich vielleicht wundern: Da wird mir noch nicht mal ein einziger JavaScript Befehl gezeigt, und trotzdem ist man bereits beim Kapitel Fehlersuche! Doch das hat so schon seine Richtigkeit. Bevor wir mit JavaScript überhaupt beginnen, sollte man wissen, wie man die häufigsten Fehler vermeidet, oder sie im Fall der Fälle wenigstens aufspüren kann. Die häufigsten Fehler Zuweisung contra Vergleich Beachten sie bitte, dass das einfache Gleichheitszeichen (=) in JavaScript ein Zuweisungsoperator und kein Vergleichsoperator ist! Nur das doppelte Gleichheitszeichen (==) vergleicht auch wirklich zwei Werte miteinander. var Test = 0; if (Test = 1) document.write("test war O.K.!"); Die Ausgabe lautet hier: Test war O.K.! Leider stimmt die obige Ausgabe nicht, obwohl keine Fehlermeldung erscheint. Da alle Werte ausser Null so viel wie true bedeuten wird die Zuweisung Test = 1 erfolgreich ausgeführt, als true gewertet, und die Ausgabe geschrieben. Groß contra klein JavaScript ist case-sensitiv! Beachten sie also bei jedem Zeichen eines Variablen- oder Funktionsnamen die Groß- oder Kleinschreibung. Ansonsten werden sie vom JavaScript-Interpreter eine Fehlermeldung erhalten. Aufspüren von Fehlern Sollte ein Script doch mal nicht auf Anhieb so funktionieren wie es soll, dann gilt es vor allem Ruhe zu bewahren, und strukturiert vorgehen. Einen ersten Ansatzpunkt bringen die Browser Internet Explorer und Netscape Navigator bereits von Haus aus mit. Im allgemeinen prüft letzterer das Script wesentlich genauer und liefert auch detailliertere Fehlermeldungen. Nescape Navigator Durch eintippen der Zeilejavascript: (incl. des Doppelpunktes!) in die Adresszeile des Browsers (vgl. Abbildung 1) erscheint ein neues Fenster 6

7 Abbildung 1: Fehlerdiagnose mit Netscape Navigator das alle Meldungen des JavaScript-Interpreters anzeigt. Dort finden sich dann Angaben wie Zeilennummer, Datei und Art des Fehlers. Internet Explorer In der Statuszeile des Browsers erscheint ein Fehlersymbol (vgl. Abbil- Abbildung 2: Fehlerdiagnose mit Internet Explorer dung 2) falls ein Script nicht ordnungsgemäß arbeitet. Per Doppelklick auf dieses Symbol öffnet sich ein weiteres Fenster mit einer detaillierten Fehlermeldung. 7

8 1.3 Das Grundgerüst JavaScript Code kann prinzipiell überall in einem HTML-Dokument eingefügt werden. Um die Programmierung jedoch sauberer und übersichtlicher zu gestalten sollte man möglichst viel davon am Anfang jeder Datei unterbringen. Genauer gesagt zwischen dem <\TITLE> und dem <HEAD> Tag. Die Vorteile dieser frühen Definition werden später noch offensichtlich. So sollte das dann aussehen: <HTML> <HEAD> <TITLE>Hier steht der Seitentitel</TITLE> <script language="javascript"> Hier kommen die JavaScript Anweisungen </script> </HEAD> <BODY> Hier kommen die HTML Anweisungen </BODY> </HTML> 1.4 Das erweiterte Grundgerüst Leider hat das oben vorgestellte Grundgerüst noch einen Nachteil. Bei älteren Browsern, die kein <script> Tag verstehen, werden alle Zeilen die dazwischen stehen als normaler HTML Code interpretiert. Dies hat zur Folge, dass alle JavaScript Angaben einfach auf den Bildschirm geschrieben werden. Doch es gibt einen kleinen Trick um dies zu umgehen: <HTML> <HEAD> <TITLE>Hier steht der Seitentitel</TITLE> <script language="javascript"> <!-- Verstecke nachfolgendes vor aelteren Browsern Hier kommen die JavaScript Anweisungen // beende das Versteckspiel --> </script> </HEAD> <BODY> Hier kommen die HTML Anweisungen </BODY> </HTML> Glücklicherweise ist in JavaScript die Zeichenfolge <!-- die Anweisung um dahinter eine Zeile Kommentar zu schreiben. Dies bedeutet, dass alles was in einer Zeile hinter dieser Zeichenfolge kommt nicht als Code interpretiert 8

9 wird. In HTML dagegen ist genau dies der Beginn eines Kommentarblocks, der sich über mehrere Zeilen erstreckt. Um das Ende des Blockes zu kennzeichnen bedarf es eines erneuten Kniffs: da zwar HTML die Anweisung --> als das Ende eines Kommentarblockes kennt, JavaScript aber versuchen würde dies als einen Befehl zu interpretieren, muss man die Zeile vor dem <\script> zuerst als JavaScript Kommentar markieren, um darin maskiert das Ende des HTML Kommentarblockes unterzubringen. 1.5 Recycling von Scripten Da so manche programmierte Funktion oder Prozedur nicht nur in einer, sondern vielleicht in mehreren Seiten Verwendung finden soll, ist es manchmal einfach lästig alles per copy and paste wieder zu übernehmen. Besonders bei Änderungen am Code kann dies schnell zu einer sehr unübersichtlichen Angelegenheit werden. Doch es gibt eine einfache Möglichkeit all diese Probleme zu umgehen. Der Code wird nicht mehr direkt in die HTML-Datei geschrieben sondern in einer eigenständigen Datei mit der Endung.js abgelegt. In der HTML-Datei findet sich nur noch ein Aufruf dieses Codes. Beachtet werden muss dabei nur, dass sich in der Datei mit dem JavaScript Code keine <script> Tags mehr befinden, da diese bereits in der HTML-Datei stehen: <HTML> <HEAD> <TITLE>Hier steht der Seitentitel</TITLE> <script LANGUAGE="JavaScript" SRC="../scripts/beispiel.js"></script> <script LANGUAGE="JavaScript" SRC="./eingabe.js"></script> </HEAD> <BODY> Und hier der HTML Code </BODY> </HTML> In diesem Beispiel erkennt man, dass die erste JavaScript Datei von der HTML Datei aus gesehen ein Verzeichnis höher - gekennzeichnet durch zwei Punkte in der Pfadangabe - und dort in einem Unterverzeichnis scripts liegt. Die Datei selbst heißt beispiel.js. Der zweite eingebundene Code liegt im gleichen Verzeichnis - gekennzeichnet durch einen Punkt in der Pfadangabe - wie die HTML Datei und heißt eingabe.js. 1.6 Deaktiviertes JavaScript - was nun? Angenommen auf einer Web-Seite seien sehr viele Funktionen mit JavaScript realisiert. Dann möchte der Programmierer natürlich nicht, dass ein Besucher auf diese Seite gelangt, der in seinem Browser JavaScript abgeschaltet 9

10 hat. Schließlich würde dieser nur viele Fehlermeldungen oder Fehlfunktionen bekommen, und die Seite erschiene in einem schlechten Licht. Abhilfe schafft hier eine Einstiegsseite, die eigentlich keinen darstellbaren Inhalt enthält und doch unheimlich wichtig sein kann. Diese Einstiegsseite hätte dann einen Code wie folgt: <HTML> <HEAD> <TITLE>Hier steht der Seitentitel</TITLE> <script LANGUAGE="JavaScript"> <!-- Verstecke nachfolgendes vor aelteren Browsern window.location.href=./neue_seite.html ; // beende das Versteckspiel --> </script> <noscript> Bei ihrem Browser ist JavaScript deaktiviert! <br> Bitte ändern sie dies und besuchen uns dann erneut. </noscript> </HEAD> <BODY> Hier kommen die HTML Anweisungen </BODY> </HTML> Was passiert? Beim Aufruf der Seite wird sofort der JavaScript Code abgearbeitet. Die Anweisung window.location.href=./neue seite.html ; weist den Browser an, eine andere Datei - nämlich die mit der Adresse./neue seite.html - im momentan aktiven Fenster darzustellen. Sollte jedoch JavaScript deaktiviert sein, so werden sämtliche Angaben zwischen den <script> Tags ignoriert. Stattdessen wird der Text zwischen den <noscript> Tags wie ganz gewöhnliches HTML ausgegeben. 1.7 Kommentare Kommentare sind (kurze) Anmerkungen neben dem eigentlichen Code, die das Verständis desselben fördern sollen. Sparen sie nicht damit! Egal ob es für jemand anderen ist, der später mit ihrem Quelltext arbeiten muss, oder ob sie selbst drei Monate später noch einmal Veränderungen vornehmen müssen: Kommentare erleichtern die Arbeit ungemein! Es muss zwischen ein- und mehrzeiligen Kommentaren unterschieden werden. Ein einzeiliger Kommentar beginnt stets mit // und geht bis zum Ende derselben Zeile. Ein mehrzeiliger Kommentar wird dagegen von /*... */ eingefasst. In der Praxis sieht das wie folgt aus: // Dies ist ein einzeiliger Kommentar 10

11 /* Hier beginnt mehrzeiliger Kommentar, und erstreckt sich ueber drei Zeilen */ 1.8 Variable Variable sind ganz grundlegende Elemente einer Programmiersprache. Sie bilden sozusagen einen Platzhalter für Werte, die man innerhalb einer Funktion braucht. Um diese Platzhalter mit einem Wert zu belegen, oder einen Wert wieder auszulesen, müssen ihnen Namen zugewiesen werden. Für die Vergabe von Variablennamen gelten folgende Regeln: Variablennamen sind case-sensitiv. Das heißt, dass zwischen Gross- und Kleinbuchstaben sehr wohl unterschieden wird. Variablennamen müssen mit einem Buchstaben (egal ob groß- oder kleingeschrieben) oder einem Unterstrich ( ) beginnen Der Rest des Namens kann nur Buchstaben, Ziffern und als einziges Sonderzeichen den Unterstrich ( ) enthalten - Leerzeichen, Umlaute und sonstige Satzzeichen sind nicht erlaubt! Namen sollten maximal eine Länge von 32 Zeichen haben. Keines der reservierten Wörter aus Kapitel 1.9 darf als Variablenname verwendet werden. Variablenname gültig/ungültig Begründung 2 Test Wert gültig nur Buchstaben, Zahlen und Unterstrich verwendet case ungültig reserviertes Wort em@il adresse ungültig das ist nicht erlaubt Aepfel gültig nur Buchstaben verwendet doppel-name ungültig das Sonderzeichen - ist nicht erlaubt (nur der Unterstrich) fähre ungültig Umlaute sind nicht erlaubt Um ein Programm verständlicher zu schreiben ist es sinnvoll, Variablen zu Beginn mit einem einleitenden var zu definieren, und gleich auch zu initialisieren - das heißt: mit einem Anfangswert zu belegen. 11

12 Code var USA; USA = Land ; var USA = 50; var Land= Deutschland, Einwohner=82E6; Erläuterung Definition der Variable USA ohne Initialisierung Verspätete Initialisierung oder Wertzuweisung Definition und gleichzeitige Initialisierung der Variablen USA mit einer Zahl Definition und Initialisierung einer Liste von Variablen, die durch Kommas syntaktisch getrennt werden. Des weiteren ist es ganz entscheidend wo eine Variable definiert wird. Bei einer Definition innerhalb eines Anweisungsblockes (siehe Kapitel 5.1) bzw. einer Funktion (siehe Kapitel 5.2) ist die Variable auch nur innerhalb dieser Struktur sichtbar und verwendbar. Man spricht dann von einer lokalen Variablen. Wird die Variable jedoch außerhalb eines solchen Codeblockes eingeführt, dann handelt es sich um eine globale Variable, auf die von allen nachfolgenden Anweisungsblöcken, Funktionen und auch freien Codestücken zugegriffen werden kann. 1.9 Reservierte Wörter Folgende Wörter dürfen nicht als Variablen- oder Funktionsnamen verwendet werden: abstract else instanceof super boolean export int switch break extends interface synchronized byte false long this case final native throw catch finally new throws char float null transient class for package true const function private try continue goto protected typeof default if public var delete implements return void do import short while double in static with 1.10 Optionaler Strichpunkt Üblicherweise sollte jede Anweisung in JavaScript mit einem Strichpunkt abgeschlossen werden! Da es theoretisch aber erlaubt ist bei einzeiligen Anweisungen auf ihn zu verzichten, entsprechen die zwei folgenden Zeilen einander in der Wirkung exakt: 12

13 a =3; a =3 Sobald zwei Befehle jedoch auf einer Zeile zusammengefasst werden, wird zumindest der erste Strichpunkt zwingend notwendig: a =3; b =5; Um ungewollte Programmausführungen und damit aufwändige Fehlersuche von vornherein auszuschließen, sollte der Strichpunkt am Ende einer jeden Anweisung einfach zur Gewohnheit werden. Hier ein Beispiel, wie es sonst leicht schief gehen kann: return true Was ist denn nun gemeint? return true; oder return; true; 1.11 Strings Mit dem allgemein üblichen Begriff string sind Zeichenketten, bestehend aus Buchstaben und/oder Zahlen, mit einer maximalen Länge von 255 Zeichen, gemeint. Stringwerte stehen stets in einfachen ( ) oder doppelten ( ) Anführungszeichen. Hier zwei Beispiele für Stringzuweisungen: var text = "Kennen sie eine gute Suchmaschine?"; var eingabe = Guten Morgen ; Selbst wenn einer Variablen vom Typ String nun (scheinbar) ein Zahlenwert zugewiesen wird, so lässt sich mit dieser keine Berechnungsoperation durchführen! Darum ist streng darauf zu achten, dass a =5; eben nicht das gleiche ist wie a = 5 ; Die erste Zuweisung ist eine Wertzuweisung, während die zweite eine Stringzuweisung repräsentiert Escape-Sequenzen bei Strings Der Backslash (\) hat in JavaScript eine besondere Bedeutung: es erlaubt aus der üblichen Interpretation eines Zeichen auszusteigen. Zum Beispiel würde folgende Anweisung nicht korrekt sein: var aussage = Mark sagte: Hallo Tom ; Das Problem bei obigem Beispiel ist, dass innerhalb der Anführungszeichen, die den kompletten String umgeben noch andere stehen, welche die direkte Rede einschließen. Klar, dass man hier die äußeren Anführungszeichen durch doppelte ersetzen könnte, doch es gibt auch Fälle, wo dies nicht möglich ist. Und dann hilft das Escape-Zeichen (\). Obiger Problemfall sähe dann folgenderma- 13

14 ßen aus: var aussage = Mark sagte: \ Hallo Tom\ ; Nachfolgend eine Tabelle mit den möglichen Escape-Sequenzen: Sequenz Dargestelltes Zeichen \b Backspace: zeichenweises Zurückschalten \f Form feed: Seitenvorschub \n New line: Zeilenumbruch \r Carriage return: Wagenrücklauf \t Tabulator \ Apostroph oder einfaches Anführungszeichen \ Doppeltes Anführungszeichen \XXX Das Zeichen, welches in der Latin 1 Codierung durch die drei dezimalen Ziffern XXX repräsentiert wird. \xxx Das Zeichen, welches in der Latin 1 Codierung durch die zwei hexadezimalen Ziffern XX repräsentiert wird. \uxxxx Das Zeichen, welches in der Unicode Codierung durch die vier dezimalen Ziffern XXXX repräsentiert wird. (Wird vom Navigator 4 noch nicht unterstützt!) 14

15 2 Operatoren In diesem Kapitel sollen die wichtigsten Operatoren - aufgeschlüsselt nach den Variablentypen auf die sie wirken - vorgestellt werden. Es ist wichtig zu wissen, dass Variable in JavaScript bei ihrer Initialisierung nicht auf einen bestimmten Datentyp festgelegt werden müssen! Dies hat jedoch auch zur Folge, dass bei bestimmten Operationen eine automatische Typkonvertierung erfolgen kann, was oftmals zu scheinbar unerklärlichen Fehlern führt. 15

16 2.1 Arithmetische Operatoren Operator Beschreibung Beispiel + Addition zweier Zahlen x=1; y=x+1; y hat nun den Wert 2 - Subtraktion der zweiten von der ersten Zahl x=5; y=x-1; y hat nun den Wert 4 * Multiplikation zweier Zahlen x=y=3; z=x*y; z hat nun den Wert 9 / Division der ersten durch die zweite Zahl % Division der ersten durch die zweite Zahl und Rückgabe des Restes (Modulorechnung) ++ Erhöhung einer Zahl um eins (Inkrementierung) Die Position des Operators ist entscheidend: y = ++x ist nicht das gleiche wie y = x++ Bei der ersten Variante wird x erst um eins erhöht und dieser erhöhte Wert wird y zugewiesen. Bei der zweiten Variante wird das alte x auf y zugewiesen und anschließend wird x um eins erhöht. Erniedrigung einer Zahl um eins (Dekrementierung) Wie bei ++ ist auch hier die Position wichtig! x = 15; y=3; z=x/y; z hat nun den Wert 5 x = 15; y=6; z=x%y; z hat nun den Wert 3 x=9; y = ++x; y hat nun den Wert 10 x=9; y = x++; y hat nun den Wert String Operatoren Die oben beschriebenen Vergleiche finden nur statt, wenn beide Operatoren Strings sind. Die Vergleichsoperatoren == und!= haben hier die gleiche Wirkung wie im Abschnitt Vergleichsoperatoren auf Seite 18 beschrieben. Besonders beim + Operator ist etwas Vorsicht geboten. Wie in der Einlei- 16

17 tung zu den Operatoren erwähnt, findet bei unterschiedlichen Variablentypen eine Typkonvertierung statt. Sollte jedoch ein String mit einem anderen Typ zusammentreffen, so überwiegt stets der String! Ferner muss die Reihenfolge der Befehlsabarbeitung berücksichtigt werden: solange keine Klammern gesetzt werden geschieht die Ausführung der Anweisungen stets von links nach rechts, was manchmal verwirrende Auswirkungen haben kann: JavaScript Anweisung Variable s enthält nun folgenden Text s=1+2+ KugelnEis ; 3KugelnEis s = Anzahl Eiskugeln: ; Anzahl Eiskugeln: 12 Die wichtigsten Operatoren für Strings: Operator Beschreibung Beispiel + Verbindet zwei Strings zu einem x= Java ; y = Script ; z=x+y; zenthält nun JavaScript < Vergleich auf alphabetische Reihenfolge: liefert true falls der erste Operand im Alphabet vor dem zweiten kommt, sonst false. > Vergleich auf alphabetische Reihenfolge: liefert true falls der erste Operand im Alphabet nach dem zweiten kommt, sonst false. x = JavaScript ; y= HTML ; x <y; Auswertung ergibt false x = JavaScript ; y= HTML ; x >y; Auswertung ergibt true 17

18 2.3 Vergleichsoperatoren Operator Beschreibung Beispiel == Vergleich zweier Variablen bezüglich x =1; ihres Wertes. Bei Gleichheit wird y =4; true zurückgegeben, sonst false. Falls die zwei Variablen unterschiedlichen x == y; Auswertung ergibt false Typs sind, findet eine Typ- konvertierung statt. Objekte, Arrays und Funktionen werden nach Referenz verglichen. Dies bedeutet dass zwei Elemente diesen Typs nur gleich sein können wenn sie auf das gleiche Objekt verweisen. Ist eine Variablen mit null belegt und die andere undefiniert werden sie als gleich angesehen.!= Vergleich zweier Variablen bezüglich ihres Wertes. Bei Ungleichheit wird x =1; y =4; true zurückgegeben. Die Regeln x!=y; für den Vergleich sind identisch zum Auswertung ergibt true == Operator. === Zwei Variablen werden auf Identität verglichen. Bei Gleichheit wird true zurückgegeben. Die Regeln für den Vergleich sind identisch zum == Operator allerdings findet keine Typkonvertierung statt und eine mit null belegte Variable wird von einer undefinierten unterschieden!!== Falls keine Identität vorliegt wird true zurückgegeben. < Rückgabewert ist true falls der erste Operand kleiner ist als der zweite, sonst false. > Rückgabewert ist true falls der erste Operand größer ist als der zweite, sonst false. <= Rückgabewert ist true falls der erste Operand kleiner oder gleich ist als der zweite, sonst false. >= Rückgabewert ist true falls der erste Operand größer oder gleich ist als der zweite, sonst false. x = 15; y =6; x<y; Auswertung ergibt false x = 15; y =6; x>y; Auswertung ergibt true 18

19 2.4 Logische Operatoren Operator Beschreibung Beispiel && Bool sche UND-Verknüpfung. x =1; Es wird zuerst der Ausdruck y =7; links des Operators ausgewertet. Sollte dieser true ergeben - und x<5&&y>5; Auswertung ergibt true auch nur dann - so wird auch der rechte Ausdruck ausgewertet. Ergibt dieser ebenfalls true, so ist der Rückgabewert true, sonst false. Bool sche ODER-Verknüpfung. Es wird zuerst der Ausdruck links des Operators ausgewertet. Sollte dieser false ergeben - und nur dann - wird auch der rechte Ausdruck ausgewertet. Sollte dieser true sein, so ist auch der Rückgabewert true, sonst false. x =1; y =7; x>5 y<5; Auswertung ergibt false! Invertierung eines Wertes. x = true; y =!x; yistnunfalse 19

20 2.5 Bit Operatoren Diese Operatoren dienen der Low-level Bearbeitung von Binärzahlen und werden in JavaScript üblicherweise nicht verwendet. Sie sind hier nur der Vollständigkeit halber aufgelistet. Operator Beschreibung Beispiel << Alle Bits des ersten Operanden werden um die Anzahl Stellen, wie sie der zweite Operand angibt (0.. 31) nach x =3; x<<1; Nun enthält x den Wert 6 links geschoben. Enthält der erste Operand eine positive Zahl, so werden rechts Nullen nachgeschoben, ist er dagegen negativ, so werden Einsen eingefügt. Das Verschieben von Bits entspricht pro verschobener Stelle der Multiplikation mit zwei. Um das Beispiel gut zu verstehen empfiehlt sich die Umwandlung der Zahlenwerte in Binärschreibweise! >> Bitweises nach rechts schieben (vergleiche mit dem << Operator). Das Verschieben von Bits entspricht pro verschobener Stelle der Division durch zwei, wobei dann nur der Wert vor dem Komma zur Verfügung steht. >>> Wie >>= Operator, nur dass von links generell Nullen nachgeschoben werden. & Bitweise UND-Verknüpfung. Das bedeutet, dass entweder das Bit in Operand eins, und das korrespondierende Bit in Operand zwei eins sein müssen um bei der Verknüpfung gesetzt zu werden. Bitweise ODER-Verknüpfung. Das bedeutet, dass entweder das Bit in Operand eins, oder in Operand zwei oder jedoch beide eins sein müssen um bei der Verknüpfung gesetzt zu werden. ˆ Bitweise Exklusiv-ODER Verknüpfung. Das bedeutet, dass entweder das Bit in Operand eins, oder das korrespondierende Bit in Operand zwei eins sein muss (aber nicht beide), um bei der Verknüpfung dieses Bit zu setzen. x =3; x>>1; Nun enthält x den Wert 1 20

21 2.6 Zuweisungs-Operatoren Nachfolgende Tabelle soll lediglich die Wirkung der verkürzten Schreibweise näher bringen. Selbstverständlich kann diese Verbindung von Operator und Zuweisung auch mit den restlichen Operatoren (zum Beispiel den bitweisen Operatoren) erfolgen. Operator Beschreibung Beispiel = Einfache Zuweisung. Die Ausführung geschieht stets von rechts nach links. x =5; y =3; z =2; y = z = x; x, y und z haben Wert 5 += Addition und Zuweisung auf eine der beiden Variablen a += b; entspricht: a = a + b = Subtraktion und Zuweisung auf eine der beiden Variablen. a = b; entspricht: a = a b = Multiplikation und Zuweisung auf eine der beiden Variablen a = b; entspricht: a = a b / = Division und Zuweisung auf eine der beiden Variablen a/= b; entspricht: a = a/b %= Modulo Operation und Zuweisung auf eine der beiden Variablen a %= b; entspricht: a = a % b 21

22 2.7 Weitere Operatoren Operator Beschreibung Beispiel?: Bedingungs-Operator. Dies ist der einzige Operator mit drei Operanden. Erst wird der Ausdruck vor dem? ausgewertet. Ist a<0?a +1:a/5 Falls a kleiner Null, gib a+ 1zurück, sonst das Ergebnis der Division a/5 dieser true, so wird der Wert des zweiten Operanden (oder Operation) zurückgegeben, ansonsten der Wert der letzten Operation., Komma-Operator. Zum Abtrennen verschiedener Anweisungen a =1,b=9,c=5; innerhalb eines Aus- drucks.. Punkt-Operator. Zum Ansprechen von Eigenschaften oder Methoden eines Objektes. [ ] Wie Punkt-Operator und zusätzlich zum Ansprechen von Array- Elementen. document.lastmodified document.write( Hello world ) frames[0].length document[ lastmodified ] arrayelement[i] document.forms[j+1] () Operator zum Funktionsaufruf. document.close() Math.sin(x) window.open() typeof Aufgrund der automatischen Typkonvertierung kann es passieren, dass der aktuelle Typ einer Variablen nicht eindeutig klar ist. Der typeof Operator liefert dann einen von drei möglichen Strings zurück. var Zahl 5; Typ = typeof Zahl; Rückgabewert: number var Zeichen = Hallo ; Typ = typeof Zeichen; Rückgabewert: string var istwahr = true Typ = typeof istwahr; Rückgabewert: boolean 2.8 Rangfolge der Operatoren Wie es in der herkömmlichen Mathematik die bekannte Punkt-vor-Strich-Regel gibt, so ist auch in JavaScript die Reihenfolge der Abarbeitung verschiedener Operatoren genau festgelegt. Die Klammern besitzen dabei die besondere Bedeutung aufgrund ihrer höchsten Priorität die Abarbeitung von Operationen zu beeinflussen. 22

23 Rang Operatorzeichen Operatorname Operatortyp 1 () [] Klammer Gruppierung 2! ++ Nicht Inkrement, Dekrement Logischer Operator Arithmetischer Operator Negation Nicht Arithmetischer Operator Bit Operator 3 / % Multiplikation Division Modulo-Operation Arithmetische Operatoren 4 + Aneinanderreihung String Operator 5 + Addition Arithmetische Operatoren Subtraktion 6 << >> >>> Linksverschiebung Rechtsverschiebung Null-fill- Rechtsverschiebung Bit-Operatoren 7 < > <= >= Erster Wert ist kleiner Erster Wert ist größer Erster Wert ist kleiner oder gleich Erster Wert ist größer oder gleich Werte sind gleich Werte sind ungleich Vergleichsoperatoren 8 == Vergleichsoperatoren!= <> 9 & UND Bit-Operator 10 ˆ Exklusiv-Oder Bit-Operator 11 ODER Bit-Operator 12 && UND Logischer Operator 13 ODER Logischer Operator 14?: Bedingung Konditionaler Operator 15 = += = / = &= %= ˆ= = <<= >>= >>>= Zuweisungsoperatoren 16, (Komma) Aneinanderreihung Zuweisungsoperatoren 23

24 3 Arbeiten mit Zeichenketten (Strings) Nach meiner Erfahrung ist eine der häufigsten Einsatzgebiete von JavaScript die Überprüfung von Formulareingaben. Da es sich hierbei sehr oft um textuale (=string) Werte handelt, sollen hier einige Möglichkeiten zur Zerlegung, Überprüfung und Auswertung vorgestellt werden. Ich betone ausdrücklich, dass dies eine Einführung und deshalb nicht vollständig ist! Soweit nicht ausdrücklich darauf hingewiesen wird, werden bei allen vorgestellten Methoden die Zeichen jedes String beginnend mit Null durchgezählt. Das bedeutet, dass in dem String JavaScript das Zeichen S den Index 4 hat! Die in eckigen Klammern [ ] aufgeführten Argumente sind optional, d.h. sie sind nicht zwingend erforderlich. 3.1 String.charAt(n) Argumente n Index des Zeichens das zurück gegeben werden soll. Rückgabewert Das n-te Zeichen der Zeichenkette String. Erläuterung Falls n nicht zwischen 0 und string.length-1 liegt, dann wird ein leerer String zurück gegeben. Da JavaScript keine leeren Strings im engsten Sinn kennt, hat auch dieser Rückgabewert die Länge 1. Beispiel var text = JavaScript ; text.charat(2); Rückgabewert: v text.charat(4); Rückgabewert: S 3.2 String.concat(value,... ) Argumente value,... Ein oder mehrere Werte, die an die Zeichenkette String angefügt werden sollen. Rückgabewert Ein neuer String, der durch das anfügen sämtlicher Argumente entstanden ist. Erläuterung concat() konvertiert falls nötig zuerst sämtliche Argumente zu Zeichenketten bevor sie an String angefügt werden. Die ursprüngliche Zeichenkette String wird nicht verändert, sondern ein neuer String zurück gegeben! 24

25 Beispiel var text1 = 1 plus 2 ; var text2 = macht ; text1.concat(text2, 3 ); Rückgabewert: 1 plus 2 macht String.indexOf(substring, [start]) Argumente substring start Die Zeichenkette, nach der innerhalb von String gesucht werden soll. Optionaler Ganzzahlwert, der eine Startposition innerhalb von String angibt, ab der nach substring gesucht werden soll. Rückgabewert Falls substring innerhalb von String gefunden wurde, wird der Index des ersten Zeichens von substring an der ersten Fundstelle zurück gegeben. Bleibt die Suche erfolglos, so ist der Rückgabewert 1. Erläuterung In Navigator 2 und 3 wird bei einem Startwert, der größer ist als die Länge der Zeichenkette ein leerer String anstatt 1 zurück gegeben. Beispiele var text = abcxxabcxxabc ; text.indexof( xx ); Rückgabewert: 3 text.indexof( xx,4); Rückgabewert: 8 text.indexof( xx,10); Rückgabewert: String.lastIndexOf(substring, [start]) Argumente substring start Die Zeichenkette, nach der innerhalb von String gesucht werden soll. Optionaler Ganzzahlwert, der eine Startposition innerhalb von String angibt, ab der nach substring gesucht werden soll. Rückgabewert Falls substring innerhalb von String gefunden wurde, wird der Index des ersten Zeichens von substring an der letzten Fundstelle zurück gegeben. Bleibt die Suche erfolglos, so ist der Rückgabewert 1. Erläuterung Die Suche innerhalb String erfolgt von rechts nach links! Da die Indexierung der einzelnen Zeichen innerhalb des String jedoch weiterhin von links nach 25

26 rechts erfolgt gibt der Rückgabewert die letzte Position des substring vor der Position start an. Beispiele var text = abcxxabcxxabc ; text.lastindexof( xx ); Rückgabewert: 8 text.lastindexof( xx,8); Rückgabewert: 8 text.lastindexof( xx,9); Rückgabewert: 8 text.lastindexof( xx,6); Rückgabewert: String.length Rückgabewert Anzahl der Zeichen von String. Erläuterung Diese String Eigenschaft ist nur lesbar und kann nicht verändert werden. Der Aufruf dieser Eigenschaft erfolgt ohne runde Klammern! Der Index des letzten Zeichens von String ist stets String.length - 1. Beispiel var text = JavaScript ; text.length; Rückgabewert: String.split(delimiter) Argumente delimiter Ein Zeichen oder eine Zeichenkette, an welcher String aufgeteilt werden soll. Sollte kein Argument angegeben sein, enthält das zurück gegebene Array lediglich ein Element: String. Wird dagegen ein Leerzeichen ( ) als Argument übergeben, so wird String nach jedem einzelnen Zeichen auseinander gebrochen. Rückgabewert Ein Array mit Zeichen(ketten), die beim auseinanderbrechen von String an den durch das Argument vorgegebenen Grenzen entstanden sind. Erläuterung Das Begrenzungszeichen selbst wird nicht im Array abgelegt. Beispiele var text = Dies ist ein - sehr gutes - JavaScript Tutorial! 26

27 a = text.split( - ); a = text.split( ); a[0] = Dies ist ein ; a[0] = D ; a[1] = sehr gutes ; a[1] = i ; a[2] = JavaScript Tutorial! ; a[2] = e ; a[3] = s ;. 3.7 String.substr(start, [length]) Argumente start length Gibt den Startindex der zu extrahierenden Zeichenkette an. Falls dieser Wert negativ ist, so wird von rechts nach links gezählt, wobei das letzte Zeichen 1, das vorletzte Zeichen 2, usw. entspricht. Anzahl der Zeichen die ausgehend vom Startindex extrahiert werden sollen. Wird dieser Wert nicht angegeben, so werden ausgehend vom Startindex alle Zeichen bis zum Ende von String zurück gegeben. Rückgabewert Der Teil der Zeichenkette String, welcher durch die Indizes start und eventuell length bestimmt sind. Erläuterung Die original Zeichenkette String wird durch diese Operation nicht verändert. Beispiele var text = abcdefg text.substr(2,2); Rückgabewert: cd text.substr(3); Rückgabewert: defg text.substr(-3,2) Rückgabewert: ef 3.8 String.substring(from, [to]) Argumente from to Gibt den Index des ersten zu extrahierenden Zeichens an. Der Wert muss zwischen 0 und string.length-1 liegen. Index des ersten nicht mehr zu extrahierenden Zeichens! Muss um mindestens eins größer sein als from. Der Wert muss zwischen 1 und string.length liegen. Rückgabewert Der Teil der Zeichenkette String, welcher durch die Indizes from und eventuell to bestimmt sind. 27

28 Erläuterung Die original Zeichenkette String wird durch diese Operation nicht verändert. Sollte der Wert from größer sein als to, so werden die zwei Werte automatisch getauscht, und erst anschließend die Operation ausgeführt. Beispiele var text = abcdefg text.substring(2,4); Rückgabewert: cd text.substring(3); Rückgabewert: defg text.substring(3,2); Rückgabewert: c 3.9 String.toLowerCase() Rückgabewert Einen neuen String, in dem alle Buchstaben ausschließlich als Kleinbuchstaben enthalten sind. Beispiel var text = JavaScript Tutorial text.tolowercase(); Rückgabewert: javascript tutorial 3.10 String.toUpperCase() Rückgabewert Einen neuen String, in dem alle Buchstaben ausschließlich als Großbuchstaben enthalten sind. Beispiel var text = JavaScript Tutorial text.touppercase(); Rückgabewert: JAVASCRIPT TUTORIAL 28

29 4 Regular Expressions Regular Expressions erlauben die sehr flexible Formulierung von Mustern (englisch: patterns) nach welchen innerhalb einer Zeichenkette gesucht werden soll. Aber warum denn schon wieder etwas um Zeichenketten zu bearbeiten?!?! Da wurden doch bereits im Kapitel 3 so viele Möglichkeiten vorgestellt. Um diese Frage zu beantworten möchte ich ein kleines Beispiel vorstellen: Stellen sie sich vor, dass in ein Formular eine Adresse eingetragen werden soll. Bevor das Formular an den Server geschickt wird soll die Syntax der Adresse überprüft werden. Da es sich hierbei um eine äußerst komplexe Aufgabe handelt sollen lediglich folgende Punkte geprüft werden: 1. Es müssen mindestens drei Zeichen vor Symbol stehen (erlaubt sind Groß- und Kleinbuchstaben sowie Zahlen) 2. Nach Symbol müssen wiederum mindestens drei der im vorherigen Punkt genannten Zeichen stehen 3. Zum Abschluss folgt ein Punkt mit darauf folgenden zwei, drei oder vier Buchstaben (keine Zahlen mehr erlaubt!) als Top-Level Domain So, und nun versuchen sie einmal die Einhaltung dieser Bedingungen mit den bisher vorgestellten Möglichkeiten zu überprüfen. Dafür ist ein erheblicher Aufwand nötig. Mit einer Regular Expression sieht das dann so aus: .search(/\w{3,@\w{3,\.[a-zA-Z]{2,4/); Zugegeben: das sieht auch etwas aufwändig - und auch kryptisch - aus, aber am Ende dieses Kapitels werden die einzelnen Ausdrücke verständlich sein (siehe auch Übung 1). Noch ein Tip: da sich die Notation von Regular Expressions in JavaScript fast komplett an die Notation in der Skriptsprache Perl anlehnt, können viele weitere Infos und Beispiele zu Suchmustern im Internet gefunden werden. 4.1 Statische Abfragen Statische Abfragen werden hart codiert - d.h., sie können nicht zur Laufzeit verändert werden. Dafür haben sie aber den Vorteil sehr einfach in der Handhabung zu sein. Genau so wie Strings stets in Anführungszeichen angegeben werden, so stehen die Suchmuster, die gefunden werden sollen, stets in einen führenden und 29

30 einen folgenden Schrägstrich (/) gepackt. Der folgende Ausdruck würde also testen, ob sich innerhalb des Strings der Variablen text das Wort Java befindet: var text = "Ein Irrtum: JavaScript ist gleich Java!"; var pos = text.search(/java/); Wird das Suchmuster gefunden, enthält die Variable pos den Index des ersten Zeichens der ersten Fundstelle (hier: 12). Achtung: auch hier hat das erste Zeichen des String den Index 0! Kommt das Suchmuster in dem String nicht vor, dann wird der Wert -1 zurück gegeben. Hinter dem schließenden Schrägstrich kann noch eines oder beide der zwei erlaubten Attribute angefügt werden. Ein g um eine globale Suche durchzuführen und somit alle Fundstellen des Musters zu erhalten (üblicherweise bricht der Suchvorgang nach dem ersten Fund ab), ein i für eine case-insensitive Suche (d.h., die Gross- und Kleinschreibung wird nicht berücksichtigt), oder ein gi um beide gleichzeitig anzuwenden. 4.2 Dynamische Abfragen Dynamische Abfragen können variabel erzeugt werden. So ist es denkbar, dass ein Besucher einer Webseite in ein Formular das Suchmuster einträgt, und dieser Formularwert für eine Suche verwendet wird. Dafür dient der RegExp()-Konstruktor. Er nimmt ein oder zwei Argumente, und generiert damit ein neues Suchmuster. Das erste Argument ist die Zeichenkette, nach der gesucht werden soll - also der Teil, welcher bei statischen Abfragen zwischen den Schrägstrichen (/) steht. Das zweite Argument ist optional und bestimmt den Suchraum. Beim ersten Argument ist etwas Vorsicht geboten: es wird stets als String in Anführungszeichen übergeben. Braucht man innerhalb der Definition des Suchmusters jedoch einen Backslash (\), so muss dieser stets durch einen weiteren Backslash escaped werden. Das liegt daran, dass in Strings der Backslash als Escape-Sequenz dient (z.b. um mit \n einen Zeilenumbruch anzugeben). Um also nach einer Ziffer zu suchen muss statt \d das Argument \\d lauten. Beim zweiten Argument gibt es nur vier Möglichkeiten: es ist ein g (für globale Suche), ein i (für case-insensitive Suche - d.h., die Gross- und Kleinschreibung wird nicht berücksichtigt), ein gi um beide zu gleichzeitig anzuwenden oder man lässt es weg. Um also alle Stellen mit drei aufeinander folgenden Ziffern innerhalb des Strings text zu finden sieht der Code folgendermassen aus: var pattern = new RegExp("\\d{3", "g"); Um das RegExp()-Objekt mit einem neuen Suchmuster zu belegen ist die compile() Methode nötig. Sollen also auf einmal fünf statt drei aufeinander folgende Ziffern gefunden werden, so lautet der Code: 30

31 pattern.compile("\\d{5", "g"); 4.3 RegExp Methode: test() Von den zwei durch das RegExp()-Objekt definieren Methoden ist test() die einfachere. Sie übernimmt als Argument einen String, und testet, ob in diesem String das durch RegExp() definierte Suchmuster vorkommt. Ist das pattern vorhanden, wird true zurück gegeben, sonst false. var pattern = /java/i; var abfrage = pattern.test("javascript ist gut!"); Durch Anwendung des i Attributes führt obige Abfrage zu einem Treffer, und die Variable abfrage enthält den Wert true. 4.4 RegExp Methode: exec() Die Methode exec() übernimmt einen String als Argument und sucht darin nach dem durch RegExp() definierten Suchmuster. Wird das Muster nicht gefunden wird null zurück gegeben, ansonsten ein Array. Das Arrayelement mit Index 0 enthält den gefundenen Suchstring, alle weiteren Arrayelemente enthalten die Teilstrings, welche durch die geklammerten pattern definiert werden. Des weiteren enthält die index Eigenschaft den Index der Fundstelle, und die input Eigenschaft verweist auf den String in dem gesucht wurde. Wird exec() zusammen mit einem globalen RegExp-Objekt verwendet, dann setzt es seine lastindex Eigenschaft auf das Zeichen, welches unmittelbar dem gefundenen Suchmuster folgt. Wird exec() nun ein weiteres Mal für die selbe RegExp aufgerufen, wird die Suche nicht am Anfang des Strings begonnen, sondern an der Stelle, die durch lastindex bestimmt ist. Wurde hingegen kein Treffer gelandet, so wird lastindex auf 0 gesetzt. Dies erlaubt einem alle möglichen Fundstellen innerhalb des Strings aufzurufen: var pattern = /Java/g; var text = "Ein Irrtum: JavaScript ist gleich Java!"; var ergebnis; while((ergebnis = pattern.exec(text))!= null) { alert("gefunden: " + ergebnis[0] + "\n An Position: " + ergebnis.index); 4.5 RegExp Eigenschaften Es sollen noch einige nützliche Eigenschaften des RegExp Objektes vorgestellt werden: 31

32 Eigenschaft Beschreibung source Read-only String, der das reine Suchmuster enthält global Read-only Eigenschaft, die angibt, ob die Suche das g Attribut enthält ignorecase Read-only Eigenschaft, die angibt, ob die Suche das i Attribut enthält lastindex Lese- und schreibbare Eigenschaft, welche den Index des ersten Zeichens nach einem gefundenen Suchstring enthält leftcontext Der Text links vom zuletzt gefundenen Suchstring rightcontext Der Text rechts vom zuletzt gefundenen Suchstring lastmatch Den zuletzt gefundenen Suchstring lastparen Den Suchstring, welcher durch den letzten geklammerten Ausdruck des patterns bestimmt wird $1, $2,..., $9 Die Suchstrings, welche durch die ersten neun geklammerten Ausdrücke des patterns bestimmt werden 4.6 Patterns formulieren Wie bereits mehrfach in Beispielen gezeigt, wird das einfachste Suchmuster durch die Aneinanderreihung von Buchstaben, Zahlen und eventuell Zeichen aufgebaut. Um also nach der Zeichenkette Java zu suchen lautet die Anweisung: pos = text.search(/java/); Es gibt allerdings einige Vereinfachungen. Bestimmte Typen von Zeichen, wie z.b. nur Buchstaben, oder nur Zahlen, sind zu so genannten Klassen zusammen gefasst: Klasse Bedeutung [...] Irgend eines der in eckigen Klammern aufgelisteten Zeichen [ˆ...] Alle Zeichen außer den in eckigen Klammern aufgelisteten. Irgend ein einzelnes Zeichen außer der Zeilenumschaltung (newline). Dies entspricht [ˆ\n] \w Irgend ein Buchstabe oder eine Zahl. Dies entspricht [a-za-z0-9] \W Irgend ein Zeichen außer Buchstabe oder Zahl. Dies entspricht [ˆa-zA-Z0-9] \s Irgend ein nicht druckbares Zeichen. Dies entspricht [ \t\n\r\f\v] \S Irgend ein Zeichen außer den nicht druckbaren. Dies entspricht [ˆ \t\n\r\f\v] \d Irgend eine Zahl. Dies entspricht [0-9] \D Irgend ein Zeichen außer einer Zahl. Dies entspricht [ˆ0-9] 32

33 Des weiteren lässt sich auch noch angeben, wie oft ein bestimmtes Zeichen, oder eben eine Klasse von Zeichen, gefunden werden soll: Ausdruck Bedeutung {n,m Finde das voranstehende Zeichen mindestens n, aber nicht öfters als m mal {n, Finde das voranstehende Zeichen mindestens n mal (oder eben öfters) {n Finde das voranstehende Zeichen genau n mal.? Finde das voranstehende Zeichen kein oder ein mal. Das heißt, dass das Zeichen optional ist. Dies entspricht {0,1 + Finde das voranstehende Zeichen ein oder mehrmals. Dies entspricht {1, * Finde das voranstehende Zeichen kein oder mehrmals. Dies entspricht {0, Außerdem gibt es noch die Möglichkeit Zeichen zu gruppieren, Alternativen zu formulieren, und auf bereits vorher gefundene Zeichen zu referenzieren: Ausdruck Bedeutung (...) Gruppierung. Die Zeichen in der Klammer werden als Gruppe gesucht. Praktisch, da man auf diese Gruppen auch sämtliche Wiederholungszeichen wie?, +, *,... anwenden kann. Außerdem werden geklammerte Ausdrücke für eine spätere Referenzierung gemerkt. Alternative. Finde entweder den Ausdruck links des senkrechten Strichs, oder den rechts davon. \n Referenz. Findet die gleiche Zeichenfolge (nicht das allgemein formulierte Pattern!) welches bereits bei der n-ten runden Klammer gefunden wurde. Die Gruppierungen werden anhand der linken, geöffneten Klammern von links nach rechts durchnumeriert. Zu guter Letzt kann auch noch die Position der gewünschten Fundstelle vorgegeben werden: 33

34 Ausdruck Bedeutung ˆ Finde nachfolgendes Pattern am Anfang eines Strings, bzw. bei einer Suche über mehrzeiligen Text am Anfang jeder Zeile $ Finde voranstehendes Pattern am Ende eines Strings, bzw. bei einer Suche über mehrzeiligen Text am Ende jeder Zeile \b Finde eine Wortbegrenzung. Das heisst, es wird die Grenze zwischen einem \w und einem \W Zeichen gefunden. Dies hilft um ein einzelnes Wort zu suchen. Soll z.b. nur der String Java gefunden werden, ohne jeglichen Zusatz wie Script so müsste mannach/\sjava\s/ suchen. Dadurch hätte man aber stets ein führendes und ein folgendes Leerzeichen! Besser ist das Pattern /\bjava\b/. \B Finde eine Position, die keine Wortbegrenzung ist. 4.7 Escape Zeichen Soll nach Zeichen, die bei der Formulierung von Pattern eigentlich eine besondere Bedeutung haben (wie z.b. der Punkt oder das Fragezeichen), gesucht werden, so müssen diese durch ein Escape Zeichen gekennzeichnet werden: Escape Was wird gesucht? Zeichen \f Form feed: Wagenvorlauf \n Newline: Zeilenumschaltung \r Carriage return: Harte Zeilenumschaltung \t Tabulator \v Vertikaler Tabulator \/ Schrägstrich: / \\ Backslash: \ \. Punkt:. \* Stern: * \+ Plus: + \? Fragezeichen:? \ Senkrechter Strich: \( Geöffnete runde Klammer: ( \) Geschlossene runde Klammer: ) \[ Geöffnete eckige Klammer: [ \] Geschlossene eckige Klammer: ] \{ Geöffnete geschweifte Klammer: { \ Geschlossene geschweifte Klammer: \xxx Das ASCII Zeichen, welches durch die Oktalzahl xxx bestimmt wird \xnn Das ASCII Zeichen, welches durch die Hexadezimalzahl nn bestimmt wird 34

35 4.8 Beispiele für Pattern Nachfolgend sind einige Beispiele, die zum besseren Verständnis beitragen sollen: Pattern Ergebnis /\d{2,4/ Finde Gruppen mit mindestens zwei, und maximal vier Zahlen /\w{3\d?/ Finde exakt drei aufeinander folgende Zeichen aus der Gruppe der Buchstaben und Zahlen, welchen optional noch eine weitere Zahl folgen kann /\s+java\s+/ Finde genau den String java mit einem oder mehreren führenden und folgenden Leerzeichen /[ˆ ]*/ Finde keines oder mehrere Zeichen, die jedoch kein Anführungszeichen sein dürfen /ab cd ef/ Finde entweder den String ab oder cd oder ef /ef (ab cd)+/ Finde entweder den String ef oder mindestens eine Wiederholung von einem der Strings ab oder cd /\d{3 [a-z]{4/ Finde entweder drei aufeinander folgende Zahlen, oder vier aufeinanderfolgende Kleinbuchstaben /java(script)?/ Finde den String java gefolgt von einem optionalen String script /([ ])[ˆ ]*\1/ Finde einen Ausdruck, der in Anführungszeichen steht. Dazu wird zuerst nach einem einfachen oder doppelten Anführungszeichen gesucht. Dann kann (muss aber nicht) eine beliebig lange Zeichenkette folgen, die alles außer eben Anführungszeichen enthalten darf. Am Ende muss wieder ein Anführungszeichen stehen, und zwar (durch die Referenz \1 bestimmt) genau das gleiche wie am Anfang, also ein einfaches oder ein doppeltes. /ˆ(mo)/i Finde am Anfang eines Strings (bzw. bei mehrzeiliger Suche am Anfang jeder Zeile) die Buchstabenkombination mo egal ob sie klein oder groß geschrieben ist. /[\.!\?]$/ Finde am Ende eines Strings (bzw. bei mehrzeiliger Suche am Ende jeder Zeile) entweder einen Punkt, ein Ausrufe- oder ein Fragezeichen. Der Punkt und das Fragezeichen müssen im Pattern escaped werden! /ˆJavaScript$/ Finde den String JavaScript wenn er allein in einer Zeile steht (da er gleichzeitig am Zeilenanfang und am Ende stehen muss). 35

36 5 Programmablauf steuern Üblicherweise erfolgt die Abarbeitung der JavaScript Befehle sequentiell - das heisst: einer nach dem anderen, genau in der Reihenfolge, wie sie beim Programmieren eingegeben wurden. Oft sollen aber manche Anweisungen mehrmals hintereinander durchgeführt werden, oder nur dann, wenn eine bestimmte Bedingung erfüllt ist. Genau dies kann man mit Anweisungsblöcken und Schleifen erreichen. In diesem Kapitel sollen anhand ganz einfacher - und dadurch überschaubarer - Beispiele die wichtigsten Strukturen zum Beeinflussen des Programmablaufs vorgestellt werden. 5.1 Anweisungsblock Um zwei oder mehr Anweisungen, die mehrmals auf der selben Seite benötigt werden, nicht wiederholt eintippen zu müssen bedient man sich Anweisungsblöcken. Anweisungsblöcke beginnen stets mit dem Schlüsselwort function. Anschließend folgt der Name des Blockes, für den die gleichen Namenskonventionen gelten wie für Variable (siehe Seite 11). Direkt dahinter folgt ein Paar runde Klammern: ( ). Der eigentliche Anweisungsblock steht dagegen in einem Paar aus geschweiften Klammern: {. Den Anweisungsblöcken können auch Werte, die sie für die Bearbeitung brauchen, übergeben werden. Diese Werte nennt man Parameter. Sie stehen immer in den runden Klammern direkt hinter dem Namen. Um mehrere Werte an einen Anweisungsblock zu übergeben werden sie durch Kommas separiert aufgelistet. Ein Anweisungsblock sieht demnach prinzipiell folgendermaßen aus: function Name(Parameter1, Parameter2,...) { JAVASSCRIPT BEFEHLE Und die Funktion wird so aufgerufen: Name(Parameter1, Parameter2,...); Nehmen wir an, sie wollen bei bestimmten Ereignissen ein Pop-Up Fenster erscheinen lassen, das aber jedes Mal eine andere Meldung ausgibt. Dann sollten sie sich einen Anweisungsblock schreiben, dem sie den entsprechenden Text übergeben, und dann von dem Code innerhalb des Blockes das Meldungsfenster ausgeben lassen. Der Anweisungsblock nach dem </TITLE> Tag in <SCRIPT>-Tags lautet hierfür: 36

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

IT-Zertifikat: Allgemeine Informationstechnologien II PHP IT-Zertifikat: Allgemeine Informationstechnologien II PHP PHP ( PHP: Hypertext Preprocessor ) ist eine serverseitige Skriptsprache: Der PHP-Code wird nicht wie bei JavaScript auf dem Clientrechner ausgeführt,

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Zweck dieser Anleitung ist es einen kleinen Überblick über die Funktion Last Minute auf Swisshotelportal zu erhalten. Für das erstellen

Mehr

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de Inhaltsverzeichnis Inhaltsverzeichnis... 1 Grundlagen... 2 Hyperlinks innerhalb einer Datei... 2 Verweisziel definieren... 2 Einen Querverweis setzen... 3 Verschiedene Arten von Hyperlinks... 3 Einfache

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

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

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

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

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Lernwerkstatt 9 privat- Freischaltung

Lernwerkstatt 9 privat- Freischaltung Was tun, wenn mein Rechner immer wieder die Freischaltung der Lernwerkstatt 9 privat verliert und ich die Ursache dafür nicht finden kann? Normalerweise genügt es, genau eine einzige online-freischaltung

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Summenbildung in Bauteiltabellen mit If Then Abfrage

Summenbildung in Bauteiltabellen mit If Then Abfrage Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Snippets - das Erstellen von "Code- Fragmenten" - 1

Snippets - das Erstellen von Code- Fragmenten - 1 Snippets - das Erstellen von "Code- Fragmenten" Das Erstellen von "Code- Fragmenten", welche mit dem TinyMCE ausgewählt werden können. Grundlegendes: Die Datei, welche die in Folge erklärten Daten und

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Binärdarstellung von Fliesskommazahlen

Binärdarstellung von Fliesskommazahlen Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen) 1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

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

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

So die eigene WEB-Seite von Pinterest verifizieren lassen!

So die eigene WEB-Seite von Pinterest verifizieren lassen! So die eigene WEB-Seite von Pinterest verifizieren lassen! Quelle: www.rohinie.eu Die eigene Seite auf Pinterest verifizieren Es ist offiziell. Vielleicht haben auch Sie in den vergangenen Wochen die Informationen

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Kapitel 3. Codierung von Text (ASCII-Code, Unicode)

Kapitel 3. Codierung von Text (ASCII-Code, Unicode) Kapitel 3 Codierung von Text (ASCII-Code, Unicode) 1 Kapitel 3 Codierung von Text 1. Einleitung 2. ASCII-Code 3. Unicode 2 1. Einleitung Ein digitaler Rechner muss jede Information als eine Folge von 0

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Anleitung BFV-Widget-Generator

Anleitung BFV-Widget-Generator Anleitung BFV-Widget-Generator Seite 1 von 6 Seit dem 1. Oktober 2014 hat der Bayerische Fußball-Verband e.v. neue Widgets und einen neuen Baukasten zur Erstellung dieser Widgets veröffentlicht. Im Folgenden

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book Wir wollen wissen wieviel Umsatz Vertreter Müller im Juni gemacht hat? Dazu klicken wir irgendwo in ein Feld und geben ein: =SVERWEIS

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

«Integration in WebSite» HTML-/Javascript-Code-Beispiele

«Integration in WebSite» HTML-/Javascript-Code-Beispiele QuickInfo «Integration in WebSite» HTML-/Javascript-Code-Beispiele Fragen? Ihre Umfrage soll direkt in resp. auf Ihrer WebSite erscheinen? Die Möglichkeiten für eine technische Integration an exakten Stellen

Mehr

5. Übung: PHP-Grundlagen

5. Übung: PHP-Grundlagen 5.1. Erstes PHP-Programm 1. Schreiben Sie PHP-Programm innerhalb einer Webseite, d.h. innerhalb eines HTML-Dokument. Ihr PHP-Programm soll einen kurzen Text ausgeben und Komentare enthalten. Speichern

Mehr

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN Wir wollen nun die Rechengesetze der natürlichen Zahlen auf die Zahlenmenge der ganzen Zahlen erweitern und zwar so, dass sie zu keinem Widerspruch mit bisher geltenden

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Neue Zugangsdaten für sg-online erstellen

Neue Zugangsdaten für sg-online erstellen Neue Zugangsdaten für sg-online erstellen Inhaltsverzeichnis 1 Zuerst: Ändern des Passwortes 1 1.1 Rufen Sie dazu die Seite https://www.sg-hdh.de auf............................. 1 1.2 Klicken Sie auf:

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

Stapelverarbeitung Teil 1

Stapelverarbeitung Teil 1 Stapelverarbeitung Teil 1 In jedem Unternehmen gibt es von Zeit zu Zeit Änderungen in Normen und Firmenstandards, an die aktuelle und bereits bestehende Zeichnungen angepasst werden müssen. Auch Fehler

Mehr

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung Kapitel 1 Die Vorbereitung Vorgängerversionen. Bald darauf folgte dann schon die Version 4, die mit einer kleinen Bearbeitung bis vor Kurzem 15 Jahre unverändert gültig war. All das, was du die letzten

Mehr

Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern

Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern Allgemein USB-Stick Dateimanager Explorer (Windows XP) - Dateien auf dem USB-STick finden Nachdem der Stick über

Mehr

Zugriff auf Daten der Wago 750-841 über eine Webseite

Zugriff auf Daten der Wago 750-841 über eine Webseite Zugriff auf Daten der Wago 750-841 über eine Webseite Inhaltsverzeichnis Einleitung... 3 Auslesen von Variablen... 4 Programm auf der SPS... 4 XML-Datei auf der SPS... 4 PHP-Script zum Auslesen der XML-Datei...

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Mag. Christian Gürtler Programmierung Grundlagen der Informatik 2011 Inhaltsverzeichnis I. Allgemeines 3 1. Zahlensysteme 4 1.1. ganze Zahlen...................................... 4 1.1.1. Umrechnungen.................................

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr