Cours de J (Leçon 3)

 

par Michel J. Dumontier

 

 

Quelques nouveaux concepts de base

 

Rappel : ce qui suit est le résultat de l'exécution d'un script J.

Les instructions sont en gras (sauf les NB.), les variables, verbes et expressions sont aussi en gras dans les commentaires.

Remarque : Ayant été confronté à bien des fautes de traduction lors de mes onze années passées à la normalisation d'APL (1978-1988), et comme j'aime utiliser les mots les mieux adaptés à la sémantique ou aux concepts rattachés à ceux-ci, j'ai souligné certains mots qu'il convient d'utiliser dans les futurs livres ou articles sur J (puisqu'il y a de nouveaux concepts par rapport à APL dans cette leçon).

 

   NB. Quelques nouveaux concepts de base expliqués

   NB. rapidement (et par ordre alphabétique en anglais!)

     

   <:3 4 5 NB. Décrémenter de 1 (_1+) (Decrement)

2 3 4

     

   +: i.3  NB. Doubler (Double)

0 2 4

    

   30 +. 45  NB. PGCD (vaut 15) (GCD)

15

        

   -: 6 4 0 NB. Moitié (Halve)

3 2 0

     

   j. 3   NB. Imaginaire (utilisation monadique)(Imaginary)

0j3

     

   >:i.4  NB. Incrémenter de 1 (1+) (Increment)

1 2 3 4

     

   _+ -_  NB. Indéterminé (le résultat) (Indeterminate)

_.

   

   _        NB. Infini (Infinity)

_

     

  

   _: 4  5 NB. Infini (monadique)(Infinity)

_

     

   2 3 _: _5  NB. Infini (diadique)(Infinity)

_

   NB. f/y insère la fonction f

   NB. entre les items de y

        

   NB. / est un adverbe, il modifie la

   NB. fonction f sur sa gauche

   NB. Ici, il modifie + pour donner la

   NB. fonction somme sur une liste

        

   +/ 3 4 5  NB. vaut 12

12

     

   

   6 *. 15  NB.  PPCM (vaut 30=2*3*5) (LCM)

30

     

   2 [ 3  NB. Gauche (voir Même) (Left)

2

  

   'co' E. 'cocorico-co' NB. Membre d'un intervalle (Member of Interval)

1 0 1 0 0 0 1 0 0 1 0

     

   NB. Les "uns" du résultat b=. x E. y

   NB. indiquent les débuts des occurences

   NB. du motif x dans y

     

   NB. ~. est la fonction ESSENTIEL (NUB): elle a pour résultat

   NB. tous les items différents dans l'ordre rencontré.

     

   ~. 2 3 5 2 4 7 5 NB. 2 3 5 4 7

2 3 5 4 7

     

   NB. ~: CRIBLE DE l'ESSENTIEL (NUBSIEVE): donne le crible

   NB. de l'ESSENTIEL  

 

   ~: 2 3 5 2 4 7 5 NB. 1 1 1 0 1 1 0

1 1 1 0 1 1 0

  

   NB. # COPIE (COPY): Preuve à l'aide de COPIE

  

   1 1 1 0 1 1 0 # 2 3 5 2 4 7 5   NB. PREUVE

2 3 5 4 7

     

   montrer=.] NB. montrer (show)

  

   montrer a=. 3 4$i.12

0 1  2  3

4 5  6  7

8 9 10 11

  

   oblique=. /.  NB. adverbe OBLIQUE (OBLIQUE)

   

   NB. fonction identique

   NB. appliquée obliquement (parralèlement à la 2e diagonale)

  

   + oblique a

 0  0 0

 1  4 0

 2  5 8

 3  6 9

 7 10 0

11  0 0

  

   NB. somme sur appliquée obliquement

  

   +/ oblique a

0 5 15 18 17 11

  

   NB. Adverbe OBLIQUE autre exemple:

        

   ]t=.1 2 1 */ 1 3 3 1

1 3 3 1

2 6 6 2

1 3 3 1

 

                                       </.t

 

1 3 2 3 6 1 1 6 3 2 3 1

 

 

   somme=. +/

   somme /. t

1 5 10 10 5 1

   NB. La multiplication est une somme OBLIQUE

 

   NB. Rappel: #. est la fonction base

   10 #. 2 3 5 7

2357

 

   1 5 10 10 5 1 * 10^5 4 3 2 1 0

100000 50000 10000 1000 50 1

 

   +/1 5 10 10 5 1 * (10^5 4 3 2 1 0)

161051

 

   10 #. somme /. t

161051

 

   121*1331

161051

  

   NB. ENFERMER ET EXTRAIRE (BOX et OPEN) (1)

                                           <2 4

 

2 4

   

   #<2 4  NB. c'est un scalaire

1

   $$<2 4 NB. sa forme est vide

0

  

   NB. EXTRAIRE DE LA BOÎTE (OPEN the BOX):

   NB. vous retrouvez ce qu'il y a(vait) dans la boîte.

  

   ><2 4

2 4

  

   divisepar =. %

NB.il n'y a pas (encore) de caractères accentués en J

  

   combiendans =. divisepar ~ 

  

   NB. ~ commute les arguments (Passive)

  

   12 divisepar 3 NB. est équivalent à:

4

  

   3 combiendans 12  NB. a f~ b  est équivalent à b f a

4

  

   montrer a

0 1  2  3

4 5  6  7

8 9 10 11

  

   +/a     NB. sur le Rang 0

12 15 18 21

  

   +/ " 1 a    NB. Rang 1

6 22 38

  

   NB. Réel/Imaginaire: éclate les deux parties

   NB. d'un nombre complexe en deux "réels"

   +. 2j3

2 3

  

   NB. Reflet f~ x est équivalent à x f x (Reflexive)

   ^~ 3   NB. est équivalent à 3 ^ 3

27

  

   NB. ] x Même: donne l'argument x (Same)

   NB. Voir montrer=. ] ci-dessus

 

(1) Ouvrir n'est pas suffisant: on peut ouvrir sans extraire.

   NB. Rappel: classement ascendant et descendant:

  

   /: 5 2 7  NB. classement ascendant

1 0 2

   \: 5 2 7  NB. classement ascendant

2 0 1

  

   NB. a /: b  tri: l'argument gauche est

   NB. trié selon le classement ascendant de

   NB. l'argument droit.

  

   1 2 3 /: 5 2 7 NB. tri selon le classement ascendant de l'argument droit

2 1 3

  

   1 2 3 \: 5 2 7 NB. tri selon le classement descendant de l'argument droit

3 1 2

 

   NB. Le tri croissant (intrinsèque) est donc /:~

  

   tric =. /:~

 

   NB. Et le tri décroissant (intrinsèque) est \:~

 

   trid =. \:~

  

   tric 2 5 1 7 3

1 2 3 5 7

  

   trid 2 5 1 7 3

7 5 3 2 1

   

   *: 7   NB. carré

49

  

   %: 64  NB. racine carrée

8

  

   NB. Table: x f/ y

   NB. chaque cellule de x est appliquée sur y en entier

  

   1 2 3 */ 1 2 3 4 NB. table de multiplication

1 2 3  4

2 4 6  8

3 6 9 12

  

   NB. ___________________  FIN (de la leçon 3)