JXN Benutzerhinweise

    Befehlswiederholung     Arithmetik     Autovervollständigung

Befehlswiederholung

  1. Ein Mausklick auf eine Zeile in der Ausgabeliste überträgt die Zeile in das Eingabefeld. Die Zeile kann im Eingabefeld modifiziert und mit [↵] erneut ausgeführt werden.

  2. Mit den Cursor-Tasten [ ↑ ] und [ ↓ ] wird die Befehlshistorie durchlaufen und im Eingabefeld angezeigt. Mit [ ↓ ] [↵] [ ↓ ] [↵] … wird eine Befehlssequenz wiederholt.

  3. Mit  name=[↵] wird die letzte Zuweisung an die Variable name wiederholt.

  4. Menü: File > Edit…  überträgt die Ausgabeliste in ein Editor-Fenster. Im Editor können die Befehle bearbeitet und mit  Menü: Run > replace & close  erneut ausgeführt werden.

Besonderheiten der Arithmetik gegenüber Java

    siehe auch JXN_versus_Java, JxnSimplifiedSyntaxTable und JXN_EBNF_Syntax
  • Der Multiplikationsoperator '*' kann wegfallen
    z.B.:   a b ≡ a * b, 2t ≡ 2 * t, 2(a+3b) ≡ 2 * ( a + 3 * b )

    Beachten Sie:   a / b c ≡ a / b * c ≡ ( a / b ) * c   ≠   a / ( b c ) ≡ a / ( b * c ) ≅ a / b / c

  • Funktionsaufrufe mit genau einem Parameter können ohne Klammern geschrieben werden
    z.B.:   sqrt 3 ≡ sqrt(3), sin 2 t ≡ sin( 2 * t ), aber  exp 2 * t ≡ exp(2) * t

  • Auflösung der syntaktischen Mehrdeutigkeit a b:
    a b wird interpretiert als
        a * b   falls Variable a definiert ist
        a(b)    falls Methode a für b definiert ist
        sonst Fehlermeldung: identifier a undefined


  • Als Potenzoperator wird '^' oder alternativ "**" verwendet
    z.B.:   y^x ≡ y**x ≡ pow( y, x )

    Der Potenzoperator hat Vorrang vor '*', '/' und weggelassenem '*'-Operator
    d.h.   a y^x b ≡ a * pow( y, x ) * b
    Achtung: irreführende Schreibweise vermeiden z.B.: 2y^3x ≡ 2 y^3 x ≡ 2 * pow( y, 3 ) * x

    Der Potenzoperator hat auch Vorrang vor dem unären '-'-Operator (vgl. → Wikipedia)
    d.h.   -y^x ≡ -(y^x) ≡ -pow( y, x )


  • @ClassName(…) ruft den Konstruktor auf: @ClassName(…) in JXN steht für new ClassName(…) in Java.


  • Die vordefinierte Variable  $ enthält das Ergebnis des letzten Statements.
    Beispiel:
       sqrt(2)
        = 1.4142135623730951 (double)
       $^2
        = 2.0000000000000004 (double)
      
  • Weitere Beispiele (siehe auch JxnSimplifiedSyntaxTable):
      y = x^2 + p x + q  ≡  y = pow( x, 2 ) + p * x + q
      z = y^sqrt 2x  ≡  z = pow( y, sqrt( 2 * x ) )
    
      x = exp( -0.5 t^2 ) cos( 2 PI f ( t - t0 ) )
        = exp  -0.5 t^2 * cos  2 PI f ( t - t0 )  ≡  x = exp( -0.5 * pow( t, 2 ) ) * cos( 2 * PI * f * ( t - t0 ) )
    
    aber
      x = exp  -0.5 t^2   cos  2 PI f ( t - t0 )  ≡  x = exp( -0.5 * pow( t, 2 )   * cos( 2 * PI * f * ( t - t0 ) ) )
    
    
    Vermeidung der irreführenden Schreibweise beim Potenzoperator ('^' hat unabhängig von der Schreibweise Vorrang vor dem weggelassenen '*'-Operator):
      exp -2x^2t  ≡  exp -2 x^2 t  ≡     exp( -2   * pow( x, 2 ) * t )
        y^-2x^2t  ≡    y^-2 x^2 t  ≡  pow( y, -2 ) * pow( x, 2 ) * t
    
      exp -2(x+1)                     ≡     exp( -2   * ( x + 1 ) )
        y^-2(x+1)  ≡  y^-2 ( x + 1 )  ≡  pow( y, -2 ) * ( x + 1 )
    
      sqrt(2+3)^-2x  ≡  sqrt(2+3)^-2 x  ≡  pow( sqrt( 2 + 3 ), -2 ) * x
         y(2+3)^-2x  ≡    y (2+3)^-2 x  ≡    y * pow( 2 + 3,   -2 ) * x
    

  • Methodenaufrufe:
    f x.g y ≡ f(x.g(y)) ≠ f(x).g(y)  ( ≡ (f x).g y )
    
    f (x).g() ≡ f(x).g() ≠ f( (x).g() )
    
       sqrt ( 2.5 2.5 ).intValue()  ! vermeiden
        = 2 (int)
       sqrt( 2.5 2.5 ).intValue()      ! = sqrt( 2.5 * 2.5 ).intValue() => sqrt( 6.25 ) > 2.5 (double) > 2 (int)
        = 2 (int)
       sqrt 2.5 ( 2.5 ).intValue()     ! = sqrt( 2.5 * (2.5).intValue() ) => sqrt( 5.0 )
        = 2.23606797749979 (double)
       sqrt( ( 2.5 2.5 ).intValue() )  ! = sqrt( ( 2.5 * 2.5 ).intValue() ) => sqrt( 6.0 )
        = 2.449489742783178 (double)
       (sqrt 2.5 * 2.5).intValue()     ! = ( sqrt(2.5) * 2.5 ).intValue()
        = 3 (int)
       sqrt 2.5 * (2.5).intValue()     ! = sqrt(2.5) * (2.5).intValue()
        = 3.1622776601683795 (double)
    

  • Konstruktor-Aufrufe:
      @class_name object.method_name single_argument
    ≡ @class_name(object.method_name(single_argument))
    ≠ @class_name(single_argument1).method_name(single_argument2)
    
    

Autovervollständigung

  • Autocomplete wird mit der [Bild↓]- oder [Bild↑]-Taste im Eingabefeld initialisiert und zeigt Vorschläge auf Basis des bereits eingegeben Textes nach folgenden Mustern:
    - [Bild↓] oder Namensanfang[Bild↓] wählt aus den bekannten Variablennamen (die mit Namensanfang beginnen)
    - identifier.[Bild↓] oder identifier.Namensanfang[Bild↓] wählt aus den public methods oder fields des/der durch identifier bestimmten Objekts oder Klasse
  • [Bild↓] zeigt den folgenden, [Bild↑] den vorherigen Vorschlag, [Esc] setzt auf den Ausgangszustand zurück, eine beliebige Texteingabe oder [→] akzeptieren den aktuell angezeigten Vorschlag