InDesign. JavaScript. <xml/> Technologisches Praktikum InDesign Satzautomation. Objektmodell. XML-Rules IDE

Ähnliche Dokumente
InDesign. JavaScript. <xml/> Technologisches Praktikum InDesign Satzautomation. Objektmodell. XML-Rules IDE

InDesign. JavaScript. InDesign Satzautomation. Objektmodell. Übersicht. ExtendScript. Automatisieren IDE

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Algorithmen und ihre Programmierung

Funktionen nur wenn dann

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

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

JavaScript O'REILLY. Das umfassende Referenzwerk. Deutsche Übersetzung von Ralf Kuhnert, Gisbert W. Selke & Harald Selke

JavaScript und PHP-Merkhilfe

Funktionen in JavaScript

Funktionen nur wenn dann

Stand und Ausblick

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Unterlagen. CPP-Uebungen-08/

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

Java I Vorlesung Imperatives Programmieren

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

JAVA-Datentypen und deren Wertebereich

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

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

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Webbasierte Programmierung

Modellierung und Programmierung 1

VORKURS INFORMATIK EINE EINFÜHRUNG IN JAVASCRIPT

PHP JavaScript Kapitel 4. Kommentare

Übersicht Shell-Scripten

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Einführung in die Programmierung für NF MI. Übung 04

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Programmieren I + II Regeln der Code-Formatierung

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

Martin Unold INFORMATIK. Geoinformatik und Vermessung

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

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

Arithmetik in der tcsh

Das Objektmodell von InDesign

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Shell-Scripting Linux-Kurs der Unix-AG

Projekt 3 Variablen und Operatoren

Informatik I: Einführung in die Programmierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Girls Day 2017 Programmierung

Web-Techniken Einführung in JavaScript

Shell-Scripting Linux-Kurs der Unix-AG

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Greenfoot: Verzweigungen

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

Grundlagen von C# - 2

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Programmieren I. Kapitel 5. Kontrollfluss

Grundlagen und Konzepte von C Datenstrukturen

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Wie entwerfe ich ein Programm?

Schleifenanweisungen

Kapitel 3: Variablen

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

Funktionen/Methoden. InDesign Satzautomation

Web-basierte Anwendungssysteme PHP-Einführung

Grundlagen der Programmierung

Gregor Fellenz. InDesign. automatisieren. Keine Angst vor Skripting, GREP & Co. dpunkt.verlag

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

Linux und Shell-Programmierung Teil 6

Programmierkurs Python I

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

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

Programmieren I + II Regeln der Code-Formatierung

System.out.println("TEXT");

Deshalb ist hello + world = 0. Umgekehrt gilt das Gleiche, weshalb 8 plus 3 gleich 83 ist. Dies ist in Zeile 5 in Terminal 2 gezeigt. In der Regel sol

Übung zur Vorlesung Multimedia im Netz

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

Programmierkurs Python I

Schleifen: Immer wieder dasselbe tun

Operatoren (1) Operatoren (2)

Fangen wir mit ein paar Unterschieden und Gemeinsamkeiten zu JavaScript an: CoffeeScript kennt keine Strichpunkte am Ende der Zeile.

Intensivübung zu Algorithmen und Datenstrukturen

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Übersicht. Einführung in Perl Datenstrukturen I. Datentypen Übersicht (1) Kernbegriffe. Kernbegriffe. Einführung der Datentypen.

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Tag 4 Repetitorium Informatik (Java)

Informatik I - Übung 2 Programmieren in Eclipse

Spieleentwicklung. Diane Hanke, Okan Danyeli & Toni Wirth

Algorithmen und ihre Programmierung

RO-Tutorien 3 / 6 / 12

1 Klassen anlegen und Objekte erzeugen

Glossar. SVG-Grafiken in Bitmap-Grafikformate. Anweisung Eine Anweisung ist eine Folge aus Schlüsselwörtern, Variablen, Objekten,

Herzlich Willkommen. Über mich Termine Literatur Über PHP

Es gibt immer einen Schlüssel und einen zugehörigen Wert,

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

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

Transkript:

Objektmodell Technologisches Praktikum InDesign Satzautomation 11740 TP: Cross-Media-Publishing 20.3, 27.3., 10.4. und 17.4 2010 10:00 Uhr bis 17:00 Uhr Raum 171 <xml/> InDesign XML-Rules Gregor Fellenz Mediengestalter für Digital- und Printmedien Studium Druck- und Medientechnologie, HdM Stuttgart pagina GmbH, Tübingen gregor.fellenz@indesignblog.com JavaScript IDE

Übersicht 1. InDesign Programmierung mit JavaScript Einführung JavaScript für Printprodukte InDesign Objektmodell Programmierung und Programmierkonzepte 2. Weiterführende Themen Zusammenspiel von strukturierten Daten und Satzautomation Überblick XML und InDesign Die Folien zum Download: http://www.indesignblog.com/hdm

Literatur, Informationen und Quellen JavaScript SelfHTML http://de.selfhtml.org/javascript/ Weblastig, JavaScript Einsteigerseite, leider nicht so gut wie der HTML Teil. Core JavaScript 1.5 Reference https://developer.mozilla.org/en/core_javascript_1.5_reference Wer s theoretisch mag JavaScript: The Definitive Guide, Fifth Edition, David Flanagan http://oreilly.com/catalog/9780596101992/index.html JavaScript: The Good Parts, Douglas Crockford http://oreilly.com/catalog/9780596517748/index.html Anspruchsvolle Übersicht zu Konzepten und zum Einsatz von JavaScript

InDesign und Scripting InDesign mit JavaScript automatisieren, Peter Kahrel http://www.oreilly.de/catalog/indesignjsger/index.html Einziges Buch, Systematische Einführung Adobe Scripting Guide http://www.adobe.com/products/indesign/scripting/ Adobe Scripting Forum (sehr rege Community) http://forums.adobe.com/community/indesign/indesign_scripting Hilf dir Selbst Forum http://www.hilfdirselbst.ch/foren/adobe_indesign_forum_4.html Adobe Informationen zu XML http://wwwimages.adobe.com/www.adobe.com/products/indesign/scripting/pdfs/indesign_and_ xml_technical_reference.pdf

Ziele oder wozu das alles? In jedem Layoutprozess fallen routinemäßige Aufgaben an, die sich zwar durch Handarbeit lösen lassen, aber in der Ausführung zeit- und nervenaufreibend sind. Skripte können viele dieser Aufgaben übernehmen.? Fertige Scripts einsetzen oder minimal anpassen... Reichhaltige Auswahl von Adobe Skripts oder im Netz Kleine Helferlein widerkehrende Aufgaben lösen. Statt 10 mal klicken einmal programmieren. Verweise auflösen, Sanftes spationieren Dokumentanalyse Preflight selber programmieren Layoutautomatisierung aus strukturierten Daten Fertige oder fast fertige Layouts erstellen Layouts aus XML-Daten steuern

Scripting in InDesign: VB Skript, AppleScript und JavaScript Einführung JavaScript Plattformunabhängig (Mac/Windows/[Linux]) Sprache ist aus der Web-Programmierung bekannt. Clienstseitige Schnittstelle (API) für den Zugriff auf HTML-Dokumente Browser Sandbox aus Sicherheitsgründen Kombination aus Sprachkern und Document Object Model (DOM) Wir lernen beides zusammen, der Sprachkern ist auch im Web einsetzbar. Leichte und schlanke Sprache Wer schon mal programmiert hat oder informatisches Verständnis mitbringt lernt JS schnell. Bei InDesign meist prozedurale Programmierung es wird aber auf Objekte zugegriffen. Layouts/Bücher sind prozedural, haben eine definierte Abfolge und Ende. JavaScript in InDesign kann auch auf das Dateisystem zugreifen Adobe Implementierung

Werkzeuge und Hilfsmittel Texteditor ausreichend Adobe ExtendedScript Toolkit Editor/Mini IDE (Integrierte Entwicklungsumgebung) für InDesign Ideal zum Entwickeln von Skripten, Syntaxhervorhebung Befehlszeile, Konsole zum testen Debugging Einzelschritte und Breakpoints Hilfe mit Objektmodell

Übungsaufgabe Kann s endlich mal losgehen? JavaScript-Kochrezept: 1. InDesign und Adobe ExtendScript starten 2. Programm schreiben 3. Entweder direkt aus der IDE oder in der InDesing Skriptpalette ausführen 4. Fertig! Speicherort: Über das Skript Panel am einfachsten zu finden. Skripte InDesign bekannt machen: In folgendes Verzeichnis legen Win Mac C:\Dokumente und Einstellungen\[Benutzername]\Anwendungsdaten\Adobe\InDesign\Version 5.0\Scripts\Scripts Panel ~/Users/[Benutzername]/Library/Preferences/Adobe InDesign/Version 5.0/Scripts/ScriptsPanel Musterskript helloworld_01.jsx im Ordner 01_jsx var _dokument = app.documents.add(); var _tf = _dokument.textframes.add(); _tf.geometricbounds = [20,20,100,100]; _tf.contents = "hallo welt";

Übungsaufgabe Extended Script Toolkit lieben lernen... Öffnen Sie das Extended Script Toolkit für CS4 Die Datei befinden sich im Ordner 01_jsx Öffnen Sie die Datei helloworld_02.jsx Öffnen Sie die Datei estk_01.indd in InDesign Erkunden Sie die Bedienoberfläche Setzen Sie einen Breakpoint Verwenden Sie den Einzelschritt Modus Erstellen Sie ein neues Skript (STRG + N) schreiben app.selection[0] und wählen Ausführen aus dem Debugmenü. Dieses Zeile zeigt, was im InDesign-Dokument ausgewählt ist. In der JavaScript-Konsole zeigt ESTK [objekt InsertionPoint] an. Schreiben Sie app.selection[0] direkt in die Konsole!

Syntax wie schreibt man das eigentlich? Der Syntax beschreibt den Aufbau, die Grammatik und auch die Rechtschreibung einer Programmiersprache. JavaScript ist sehr tolerant, trotzdem sollte man sich von vornherein einen guten Stil angewöhnen. Komplexere Skripte werden sonst schnell sehr unleserlich. Skripte in Ausführungsreihenfolge, von oben nach unten. JavaScript ist case-sensitive, Namen immer gleich schreiben! abc ist nicht Abc, Namen können nicht doppelt vergeben werden. Keine Leer- oder Sonderzeichen in Namen! Es gibt reservierte Worte (im ESTK fett+blau) z.b.: if, else, false, for, null, true, var,... Text muss immer mit Anführungszeichen ("..." oder '...') umschlossen sein. Zahlen ohne Anführungszeichen (einfach 5 oder 85), Kommazahlen mit Punkt (3.45). Semikolon wird als Trennzeichen zweier Befehle verwendet ; Zeilenschaltung funktioniert, aber nicht immer eindeutig Tabs, Leerzeichen, Return = Whitespace Kommentare werden nicht ausgeführt und können mit // eingeleitet werden. Geschweifte Klammern für Funktionen {} Parameter werden in Klammern übergeben function (param1, param2)

Variablen Eine Variable ist ein Platzhalter, Speicherplatz, Referenz, Lesezeichen Der Wert einer Variablen kann sich während des Ablaufs ändern An verschiedenen Stellen des Programms kann sie ganz unterschiedliche Werte haben. Variablen sollten durch das Schlüsselwort var deklariert werden Einer Variable kann ein Wert zugewiesen werden, dazu dient der Zuweisungsoperator (=) var _variablenname = Wert Case-sensitiv, d.h. zahl und Zahl sind zwei verschiedene Variablen Tipp: Vermeiden Sie Umlaute und Sonderzeichen in Variablennamen. Kann beliebige Werte aufnehmen, übliche Unterscheidungen: Zahlen (Kommazahlen immer mit Punkt abtrennen z. B. 12.05) Strings (Texte in Anführungszeichen z. B. ein Text ) Boolesche Werte (Wahr oder falsch, true bzw. false), Objekte (Ein InDesign Dokument, Array) null (Schlüsselwort für einen Nullwert, noch kein Wert zugewiesen, nicht zu verwechseln mit der Zahl 0 ) Aber: In JavaScript nicht typisiert

Arithmetische Operatoren JavaScript kann rechnen, dazu stehen die folgenden Rechenoperatoren zur Verfügung: + Addition (und Verbinden von Strings) Subtraktion * Multiplikation / Division % Modulo (Restrechnung) ++ Erhöhung (Inkrement) Minderung (Dekrement)

Übungsaufgabe Mit Variablen umgehen Die Dateien befinden sich im Ordner 01_jsx Öffnen Sie die Datei helloworld_02.jsx im Extended Script Toolkit Verwenden Sie für den Text "hallo Welt" eine Variable. Verwenden Sie die JavaScript Konsole um Variablen zu analysieren. Durch den Zuweisungsoperator = wird der Ausdruck rechts vom Gleichheitszeichen ausgewertet und dann dem links stehenden Ausdruck zugewiesen (In diesem Fall liest man also von rechts nach links!). Berechnen Sie die Summe zweier Zahlen und geben Sie das Ergebnis im Textrahmen aus. Geben Sie anstatt von Text Zahlen in einem Textrahmen aus. Was ist zu beachten? Was passiert wenn Sie Text und Zahl addieren?

Texte Text muss innerhalb von JavaScript in Anführungszeichen "" stehen. Texte werden in der Informatik Strings genannt. Ein String ist eine Zeichenkette, also ein Folge von zusammen gespeicherten Zeichen. var _text = "Viele Zeichen ergeben einen Text" Steht ein + zwischen zwei Strings werden diese dadurch zu einem Gesamtstring verbunden. Sonderzeichen in Strings werden mit dem Escape Zeichen eingeleitet \n Neue Zeile Soft Return \r Neue Zeile Return \t Tabulator \" Anführungszeichen für die Verwendung von Anführungszeichen innerhalb des Texts \' Einfaches Anführungszeichen \\ Backslash. Um einen \ auszugeben muss z. B. "c:\\pfad\\datei.txt" geschrieben werden. Ein einfacher Backslash wird als Beginn eines Steuerzeichens interpretiert. Strings können mehr! Sie haben Funktionen und Eigenschaften: String.length gibt z. B. die Länge der Zeichenkette zurück String.substring(0,1) gibt das erste Zeichen zurück

Übungsaufgabe Zeichenketten Die Dateien befinden sich im Ordner 01_jsx Öffnen Sie die Datei helloworld_02.jsx im Extended Script Toolkit Verwenden Sie den Objektmodell Viewer zur Übersicht über die Funktionen von Strings. Die folgenden String-Methoden sind im Allgemeinen besonders nützlich, machen Sie sich mit Ihnen vertraut: indexof(), lastindexof() und substring() Beachten Sie, dass Positionen bei Null beginnen! Kürzen Sie den String "hallo welt!" in "welt!" und geben Sie den Text aus. Strings können mit dem + Operator verknüpft werden. Fügen Sie die Strings "hallo" und "welt!" zusammen. Fügen Sie einen String mit Zeilenschaltung zusammen.!! Wenn var a den String "4" speichert und var b den String "9" ist das Ergebnis der Addition der Strings "49" nicht die Zahl 13. Mit der Funktion Number("123") können Strings in Zahlen verwandelt werden, Mit der Funktion (123).toString() können Zahlen in Strings verwandelt werden Korrigieren Sie casting_01.jsx

Anweisungen durch Abfragen Während des Programmablaufs können Abfragen ausgewertet werden. Dazu wird eine Kontrollstruktur benötigt, die zur Formulierung von Bedingungen dient. Damit können Verzweigungen im Ablauf abgebildet werden. Bedingte if-anweisungen werden verwendet, um einen Zustand zu prüfen Klassisch ist die Abfrage If Else mit zwei Anweisungsblöcken also: Wenn eine Bedingung zutrifft wird der erste Anweisungsblock ausgeführt (if) Wenn die Bedingung nicht zutifft wird der zweite Anweisungsblock ausgeführt (else), der zweite Block ist optional 1. Prüfung: if( app.selection.length == 0 ) { } alert("es ist nichts ausgewählt"); 2. Verzweigung durch Alternative: if( app.selection.length == 0 ) {... } else { } alert("es ist etwas ausgewählt");

Wahr oder falsch? Die Werte true und false kommen aus der Aussagenlogik. Die Werte sind logischerweise jeweils immer genau richtig oder immer falsch. In JavaScript sind die Bezeichner true und false reserviert, d.h. sie dürfen nur im eigentlichen Sinne verwendet werden und z. B. nicht als Variablennamen. Die if Abfrage testet immer, ob der Ausdruck (Vergleich/Frage) mit true beantwortet wurde. if (true) { //wird immer ausgeführt } true entspricht dem Zahlenwert 1 false entspricht dem Zahlenwert 0 Das verwirrende Beispiel: false === 0 // Ergebnis: true Der zugehörige Datentyp heißt Boolean und kann auch in Variablen verwendet werden.

Vergleichsoperatoren für Abfragen Es gibt sechs Vergleichsoperatoren um Bedingungen (Ausdrücke) zu formulieren: == gleich Achtung: Ein Zuweisung x=11 wird mit einem = vorgenommen. Der Vergleichsoperator für Abfragen if(x == 11) besteht aber aus zwei ==. === identisch, eigentlich besser für Vergleiche!= ungleich > größer < kleiner >= größer oder gleich <= kleiner oder gleich Logische Operatoren Komplexe Abfragen können mit logischen Operatoren verknüpft werden: && bedeutet logisch und bedeutet logisch oder! bedeutet nicht (Umkehrung)

Übungsaufgabe Abfragen Die Dateien befinden sich im Ordner 01_jsx Öffnen Sie die Datei abfragen.jsx im Extended Script Toolkit Die Variable _seitenanzahl ist mit der Länge der Seiten im aktuell geöffneten Dokument belegt. Geben Sie alternative Texte in Abhängigkeit von der Dokumentlänge aus. Testen Sie Ihre Kontrollstruktur, indem Sie dem Dokument Seiten hinzufügen. Spielen Sie mit den Vergleichoperatoren. Fragen Sie z. B. eine Mindestseitenanzahl ab. Testen Sie zwei Texte auf Gleichheit gibt es einen Unterschied? Was testet der > bzw. < Vergleichsoperator wenn er auf Strings angewendet wird? Definieren Sie Variablen mit den reservierten Wörtern true und false und verwenden Sie diese in Abfragen. Mit dem Vergleichsoperator == können auch Objektzustände abgefragt werden. Wenn keine Dokument geöffnet ist, enthält das Objekt app.documents[0] den Wert null. Der Wert null ist von der Ziffer 0 oder einem leeren String ("") zu unterscheiden. Er hat die Bedeutung leer, unbestimmt, ohne Wert Testen Sie ob ein Dokument geöffnet ist.

Arrays Arrays sind eine häufig verwendete Datenstruktur in JavaScript. Mit Arrays können Listen von Zahlen oder Zeichenketten gesammelt/zusammen verwaltet werden. Ein Array ist eine Liste von Einzelelementen Definition über Variablendeklaration: var _namen = ["Markus" "Christian" "Thomas"]; Oder als leeres Array var _namen = new Array(); Anhängen von neuen Elementen _namen.push("tobias"); 0 1 2 #... Markus Christian Thomas Wert Elemente eines Arrays werden die Position (index) in eckigen Klammern adressiert. Das Ergbnis von _namen[0] ist "Markus" von _namen[2] ist "Thomas" Arrays haben viele nützliche Funktionen/Eigenschaften Die Länge eine Arrays (d.h. die Zahl der Elemente): _namen.length Arrays sortieren: _namen.sort(); Ein Array kann mit join() zu einem String zusammengeführt werden. Strings können mit split("trenner") in Arrays überführt werden

Übungsaufgabe Arrays Die Dateien befinden sich im Ordner 01_jsx Öffnen Sie die Datei anordnungen.jsx im Extended Script Toolkit Verwenden Sie den Objektmodell Viewer zur Übersicht über die Funktionen von Arrays. Ermitteln Sie die Länge des Arrays und geben Sie diese aus. Fügen Sie ein neues Element hinzu! Prüfen Sie das Ergebnis. Geben Sie die Inhalte des Arrays aus. Sortieren Sie den Array und geben Sie die Inhalte aus. Testen Sie die Sortierung mit deutschen Umlauten.!! Eine Sonderform ist der assoziative Array. Es verwendet keinen numerischen Index, sondern sogenannte Schlüssel zur Indizierung und damit zur Adressierung der Elemente (Wörterbuch). In JavaScript kann anstatt eines Zahlenindex ein String verwendet werden. Erstellen Sie einen assoziativen Array!

Schleifen Eine Schleife ist eine Kontrollstruktur, mit der man eine Gruppe von Anweisungen mit einer bestimmten Anzahl von Wiederholungen ausführen kann. Sehr oft gebraucht und einfach sind for-schleifen, es gibt noch while-schleifen Benötigt wird ein immer Startwert, eine Endbedingung (Abfrage) und die Anweisungen die ausgeführt werden sollen. z. B. Alle Seiten eines Dokuments sollen nummeriert werden: Startwert 1 (Erste Seite) Endbedingung Anzahl der Seiten erreicht Anweisung Seiten nummerieren Beispiel: for (var i = 0; i < _array.length; i++) { //Anweisungsblock } Arrays (und Sammlungen) eignen sich perfekt für Schleifen: Arrays haben einen Startwert (Es wird von 0 gezählt) 2 3 i = 1 i = 2 _array[i] = Christian _array[i] = Thomas Arrays haben eine Endbedinung, die Länge (Eigenschaft length) die abgearbeitet werden muss 1 i = 0 _array[i] = Markus

Übungsaufgabe Schleifen Übung Die Dateien befinden sich im Ordner 01_jsx Öffnen Sie die Datei schleifen.jsx im Extended Script Toolkit Schreiben Sie eine Funktion zum nummerieren von Seiten Die Sammlung (ähnlich einem Array) von Seiten erhalten Sie mit app.documents[0].pages; Bauen Sie einen Text aus aktueller Seitenzahl und Gesamtseitenlänge in der Form Seite 1 von 10. Legen Sie einen Array mit vier Namen an. Fügen Sie den Array in einem Textrahmen zusammen ohne die Funktion join() zu verwenden. Platzieren Sie 5 Textrahmen mit beliebigem Inhalt auf einer Seite!

Funktionen/Methoden Methoden von Objekten tun etwas z. B. haben viele Objekte die Methode.add() Funktionen können auch selber geschrieben werden z. B. um Codeteile öfter zu verwenden! Machen den Code übersichtlicher! Es können Argumente (Parameter) übergeben werden, die innerhalb der Funktion verwendet werden können. Funktionen können einen Rückgabewert der mit der Anweisung return zurückgegeben wird return beendet immer die Funktion. Wir verwenden schon die ganze Zeit die Funktion main() obwohl das gar nicht nötig wäre!

Geltungsbereich/Scope Werden Variablen außerhalb einer Funktion deklariert, so sind sie global verwendbar. D.h. sie sind in dem gesamten Skript erreichbar. Innerhalb einer Funktion deklarierte Variablen gelten auch nur in dieser und sind von außen nicht erreichbar. var a; a = 1; function test() { var a; a=2; alert(a); // ergibt 2 } test(); alert(a); // ergibt 1

Interaktion mit dem Anwender Es gibt drei sehr einfache Funktionen, um während der Ausführung eines Skripts mit dem Benutzer des Skripts zu kommunizieren: Mit der Funktion alert() kann der Benutzer auf etwas hingewiesen werden. Mit confirm() kann der Benutzer etwas gefragt werden var _ergebnis = confirm("sind Sie sicher?"); Mit der Funktion prompt() können einfache Abfragen gestaltet werden. var _input = prompt();

Übungsaufgabe Kommunikation Erstellen Sie ein neues Skript. Testen Sie die drei Interaktionsfunktionen. Lassen Sie den Anwender Ihres Programms entscheiden ob ein Textrahmen mit grüner oder roter Hintergrundfarbe erstellt werden soll. Die Eigenschaft für die Referenz auf den Textrahmen lautet: _tf.fillcolor = "Name der Farbe"; Sie müssen zunächst die beiden Farben rot und grün erstellen und bennen! Der Funktion prompt() können bis zu drei Argumente übergeben werden, finden Sie heraus, wozu diese dienen! Lassen Sie den Anwender mit der Funktion prompt() den Text für einen Textrahmen bestimmen.