Home
Über uns
Produkte
Dienstleistung
Beratung
J Programmierung
... in der Theorie 1
... in der Theorie 2
... in der Praxis 1
... in der Praxis 2
Kunden & Partner
Kontakt
Impressum



Im Kontrast zu vielen anderen Programmiersprachen ist J eine Array-Orientierte Programmiersprache. Das heisst, ein Array ist ein grundlegender Datentyp, so wie z.B. in C "int" oder "float". Ein Array in J kann verschie-denste Datentypen (Integer, Floating, String, etc.), oder wieder Arrays beinhalten. Eine "Schachtelung" Array-in-Array ist nur durch den zur Verfügung stehenden Speicher begrenzt.

Die folgenden Beispiele (in J und C) vermitteln einen kurzen Überblick über die Leistungsfähigkeit von J im Bereich "Arrays":

 

Beispiel 1: Erstellen eines Arrays 10x10 mit den Zahlen von 1 - 100

   J

   arr =. 10 10 $ 1 + i. 100


 

   C

   int i = 0;
   int j = 0;
   int k = 0;
   int arr[10][10];

   for(i=0;i<10;i++) {
      for(j=0;j<10;j++) {
         arr[i][j] = k;
         k += 1;
      }
   }

   // Optional (Ausgabe von arr nach stdout)
   for(i=0;i<10;i++) {
      printf("%3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",
      arr[i][0],arr[i][1],arr[i][2],arr[i][3],
      arr[i][4],arr[i][5],arr[i][6],arr[i][7],
      arr[i][8],arr[i][9]);
   }

 

________________________________________________________________

 

Beispiel 2: Ermitteln aller geraden, ungeraden und Primzahlen

   J

   Es werden einige Funktionen definiert, die dann auf das ganze Array "arr"
   angewendet werden.

   gz =: 3 : '1~:2|y'
   uz =: 3 : '0~:2|y'
   pz =: 3 : '1 p: y'
   NB. Ermittelt die geraden Zahlen
   NB. Ermittelt die ungeraden Zahlen
   NB. Ermittelt die Primzahlen


   Diese Funktionen werden auf das Array "arr" angewendet:




 

   C

   int gz(int n)
   {
      if((n%2)==0) {
         return 1;
      } else {
         return 0;
      }
   }

   int uz(int n)
   {
      if((n%2)!=0) {
         return 1;
      } else {
         return 0;
      }
   }

   // Primitiv aber kurz
   int pz(int n)
   {
      int i = 0;

      if(n<2)  return 0;
      if(n==4) return 0;

      for(i=2;i<(n/2);i++) {
         if((n%i)==0) {
            return 0;
         }
      }

      return 1;
   }

   // Der Einfachheit halber nur die Ausgabe, ohne Modifikation

   for(i=0;i<10;i++) {
      printf("%3d %3d %3d %3d %3d %3d %3d %3d %3d %3d ",
             gz(arr[i][0])?arr[i][0]:0,
             gz(arr[i][1])?arr[i][1]:0,
             gz(arr[i][2])?arr[i][2]:0,
             gz(arr[i][3])?arr[i][3]:0,
             gz(arr[i][4])?arr[i][4]:0,
             gz(arr[i][5])?arr[i][5]:0,
             gz(arr[i][6])?arr[i][6]:0,
             gz(arr[i][7])?arr[i][7]:0,
             gz(arr[i][8])?arr[i][8]:0,
             gz(arr[i][9])?arr[i][9]:0);
   }

   for(i=0;i<10;i++) {
      printf("%3d %3d %3d %3d %3d %3d %3d %3d %3d %3d ",
             uz(arr[i][0])?arr[i][0]:0,
             uz(arr[i][1])?arr[i][1]:0,
             uz(arr[i][2])?arr[i][2]:0,
             uz(arr[i][3])?arr[i][3]:0,
             uz(arr[i][4])?arr[i][4]:0,
             uz(arr[i][5])?arr[i][5]:0,
             uz(arr[i][6])?arr[i][6]:0,
             uz(arr[i][7])?arr[i][7]:0,
             uz(arr[i][8])?arr[i][8]:0,
             uz(arr[i][9])?arr[i][9]:0);
   }

   for(i=0;i<10;i++) {
      printf("%3d %3d %3d %3d %3d %3d %3d %3d %3d %3d ",
             pz(arr[i][0])?arr[i][0]:0,
             pz(arr[i][1])?arr[i][1]:0,
             pz(arr[i][2])?arr[i][2]:0,
             pz(arr[i][3])?arr[i][3]:0,
             pz(arr[i][4])?arr[i][4]:0,
             pz(arr[i][5])?arr[i][5]:0,
             pz(arr[i][6])?arr[i][6]:0,
             pz(arr[i][7])?arr[i][7]:0,
             pz(arr[i][8])?arr[i][8]:0,
             pz(arr[i][9])?arr[i][9]:0);
   }

 

=> J ... in der Theorie 2

 
Top