Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

APL A programming language Maria Heym. Proseminar "Vergleich von Programmiersprachen" 2 APL A double-decker bus. Its takes rows and columns of passengers.

Ähnliche Präsentationen


Präsentation zum Thema: "APL A programming language Maria Heym. Proseminar "Vergleich von Programmiersprachen" 2 APL A double-decker bus. Its takes rows and columns of passengers."—  Präsentation transkript:

1 APL A programming language Maria Heym

2 Proseminar "Vergleich von Programmiersprachen" 2 APL A double-decker bus. Its takes rows and columns of passengers to the same place all at the same time. But, it drives only in reverse gear, and is instrumented in Greek. [5] APL Sie schießen sich in den Fuß und verbringen den ganzen Tag damit raus zukriegen, wie sie das mit weniger Buchstaben schaffen können. [6]

3 Proseminar "Vergleich von Programmiersprachen" 3 Besonderheiten Zeichensatz Mächtigkeit Abarbeitungsreihenfolge

4 Proseminar "Vergleich von Programmiersprachen" 4 Gliederung 1.Entstehungsgeschichte 2.Anwendungsbereiche 3.Typkonzepte 4.Funktionsaufbau 5.Zuweisung eines Wertes auf eine Variable 6.Prozedurkonzepte 7.Globale Programmstrukturen 8.Ereignissteuerung 9.Beispiel MergeSort 10.Quellen

5 Proseminar "Vergleich von Programmiersprachen" 5 Entstehungsgeschichte (I) Als mathematische Notationsform von Kenneth E. Iverson 1962 in A programming language vorgestellt Zunächst zur formalen Beschreibung von IBM Systems/ : erster Interpreter von APL

6 Proseminar "Vergleich von Programmiersprachen" 6 Entstehungsgeschichte (II) Bis 1985: IBM führender Anbieter des Interpreters Seit 1992: Weiterentwicklung durch kleinere Softwarefirmen Aufnahme in die.Net-Familie

7 Proseminar "Vergleich von Programmiersprachen" 7 Anwendungsgebiete Statistiken zur Datenanalyse Banken, Versicherungen wenn´s mal schnell gehen soll Von Mathematikern, Ingenieuren & Nicht- Programmierern verwendet

8 Proseminar "Vergleich von Programmiersprachen" 8 Typkonzepte (I) Nur 2 Datentypen explizit unterscheidbar –Zeichenketten –Zahlen Interne Unterscheidung zwischen Festpunkt-, Gleitpunktzahlen und Boolean

9 Proseminar "Vergleich von Programmiersprachen" 9 Typkonzepte (II) Aus Skalaren: (homogene) dynamische Feldern Vektoren Matrizen Höherdimensionale Felder

10 Proseminar "Vergleich von Programmiersprachen" 10 Funktionsaufbau Funktionskopf: Funktionsende durch

11 Proseminar "Vergleich von Programmiersprachen" 11 Beispiel Hello World hello_world [1] `hello world` [2]

12 Proseminar "Vergleich von Programmiersprachen" 12 Zuweisung eines Wertes auf eine Variable (I) Skalare skalarZuweisung [1] x 100 [2] y`5` [3] skalarZuweisung x 100 y 5

13 Proseminar "Vergleich von Programmiersprachen" 13 Zuweisung eines Wertes auf eine Variable (II) Vektoren vektorZuweisung [1] aι5 [2] b [3] c`123` [4] d,100 [5] e,`b` [6] f,A [7]

14 Proseminar "Vergleich von Programmiersprachen" 14 Zuweisung eines Wertes auf eine Variable (III) Matrizen folgen allgemein der Struktur A ρ matrizenZuweisung [1]V [2]A2 2 3ρ V [3]

15 Proseminar "Vergleich von Programmiersprachen" 15 Zuweisung eines Wertes auf eine Variable (IV) matrizenZuweisung [1]V [2]A2 2 3ρ V matrizenZuweisung V

16 Proseminar "Vergleich von Programmiersprachen" 16 Zuweisung eine Wertes auf eine Variable (V) matrizenZuweisung2 [1]B3 4ρ1 2 3 matrizenZuweisung2 B

17 Proseminar "Vergleich von Programmiersprachen" 17 Prozedurkonzepte Keine Deklarationsteile Nur externe Prozeduren –Prozeduren vom Funktionstyp –Prozeduren vom Anweisungstyp Grundsätzlich call-by-value

18 Proseminar "Vergleich von Programmiersprachen" 18 Funktionstyp Dyadisch: x funktion y Monadisch: funktion z Niladisch: funktion

19 Proseminar "Vergleich von Programmiersprachen" 19 Anweisungstyp Dyadisch: r x funktion y Monadisch: r funktion y Niladisch: r funktion

20 Proseminar "Vergleich von Programmiersprachen" 20 Beispiele Anfwerte [1]DB+CB+BA1 [2] Aufrund X [1]X+1|-X [2] L ReEck H [1]2xL+H [2]

21 Proseminar "Vergleich von Programmiersprachen" 21 Beispiele (II) RSumme [1]R(?6)+?6 [2] UKreisumf R [1]U2x°R [2] RA Hyp B [1]R((A*2)+B*2)*.5 [2]

22 Proseminar "Vergleich von Programmiersprachen" 22 Elementare Operatoren (I) SymbolMonadischDyadisch +Identität +5 Summe 7+5 -Negation -5 Differenz 7-5 !Fakultät 3! Binomialkoeffizient 3!2

23 Proseminar "Vergleich von Programmiersprachen" 23 Elementare Operatoren (II) ι Vektor ι5 Kl. Index von X in Y ι 7 ρ Gibt SV zurück ρA Erstellt Matrix SV ρ DV | Betrag |-5 X modulo y 12|5 ° Multiplikation mit π °X Kreisfunktion N°X

24 Proseminar "Vergleich von Programmiersprachen" 24 Elementare Operatoren (III) NN°X(-N)°X 0(1-X²) 1sin Xarc sin X 2cos Xarc cos X 3tan Xarc tan X 4(X²-1)(X²+1) 5sinh Xarc sinh X 6cosh Xarc cosh X 7tanh Xarc tanh X

25 Proseminar "Vergleich von Programmiersprachen" 25 Globale Programmstrukturen (I) Blöcke existieren nicht Alternativ: Funktionen, goto´s Namensbereiche: 1.Variablen der Umgebung in aufgerufenen Funktionen bekannt 2.Lokale Variable setzt globale Variable außer Kraft

26 Proseminar "Vergleich von Programmiersprachen" 26 Globale Programmstrukturen (II) aufrufend [1]S1 [2]aufgerufen [3] aufgerufen [1]S1 [2]SS+1 [3]

27 Proseminar "Vergleich von Programmiersprachen" 27 Globale Programmstrukturen (III) aufrufend S 2

28 Proseminar "Vergleich von Programmiersprachen" 28 Globale Programmstrukturen (IV) aufrufend [1]S1 [2]aufgerufen [3] aufgerufen;S [1]S1 [2]SS+1 [3]

29 Proseminar "Vergleich von Programmiersprachen" 29 Globale Programmstrukturen (V) aufrufend S 1

30 Proseminar "Vergleich von Programmiersprachen" 30 Ereignissteuerung Keine explizite Ereignissteuerung Sprünge möglich –Sprünge zu Marken –Sprünge auf Zeilennummern

31 Proseminar "Vergleich von Programmiersprachen" 31 Beispiel Sprünge sprung [1] ι0 [2] [3] next [4]next: 0 [5] 7 [6]

32 Proseminar "Vergleich von Programmiersprachen" 32 Beispiel MergeSort (I) while- Schleife; Aufruf LOOP WHILE c DOTO end … end: POOL

33 Proseminar "Vergleich von Programmiersprachen" 33 Beispiel MergeSort (II) While-Schleife; Realisierung lLOOP [1] LOOPSTACK(1+(ı27)[1+ι1]), LOOPSTACK,lι0 [2] clabelc DOTO label [1]clabelc, label [2]

34 Proseminar "Vergleich von Programmiersprachen" 34 Beispiel MergeSort (III) destWHILE clabel [1]clabel[ι1]/0,dest(~clabel[ι1])/ clabel[1+ι1]+1 [2]LOOPSTACK1LOOPSTACK [3] backPOOL [1]back1LOOPSTACK [2]

35 Proseminar "Vergleich von Programmiersprachen" 35 Beispiel MergeSort (IV) If-Verzweigung; Aufruf IF c DOTO label1 … label1: label2 DOTO ELSE … label2: FI

36 Proseminar "Vergleich von Programmiersprachen" 36 Beispiel MergeSort (V) labelIF clabel [1]label(~clabel[ι1])/1+clabel[1+ι1] [2] ELSE0 FIι0

37 Proseminar "Vergleich von Programmiersprachen" 37 Beispiel MergeSort (VI) slistmergeSort ulist; llength; llist;rlist [1]llengthρ ulist [2]slistulist [3]IF (llength>1) DOTO end [4]llist(llength:2)ulist [5]rlist(-llength:2)ulist [6]llistmergeSort llist [7]rlistmergeSort rlist [8]slistllist merge rlist [9]end: FI [10]

38 Proseminar "Vergleich von Programmiersprachen" 38 Beispiel MergeSort (VII) mlistllist merge rlist [1]mlr0 [2]LOOP [3]WHILE((l<ρllist)Λ(r< ρrlist)) DOTO end1 [4]IF(llist[l]

39 Proseminar "Vergleich von Programmiersprachen" 39 Beispiel MergeSort (VIII) [9]mlist[m]rlist[r] [10]mm+1 [11]rr+1 [12]end2:FI [13]end1:POOL [14]LOOP [15]WHILE(l<ρllist)DOTO end [16]mlist[m]llist[l] [17]mm+1 [18]ll+1 [19]end:POOL

40 Proseminar "Vergleich von Programmiersprachen" 40 Beispiel MergeSort (IX) [20]LOOP [21]WHILE (r<ρrlist) DOTO end [22]mlist[m]rlist[r] [23]mm+1 [24]rr+1 [25]end:POOL [26]

41 Proseminar "Vergleich von Programmiersprachen" 41 Quellen [1] Dialogsprachen; I.Kupka/ N. Wilsing; B.G. Teubner Stuttgart [2] Einführung in APL; Ernst Dotzauer; B.I. Hochschultaschenbücher [3] Programmieren in APL; Wolfgang K. Giloi; de Gruyter Lehrbuch [4] APL2-Ein erster Einblick, Brown/Pakin/Polivka; Springer-Verlag [5] [6]


Herunterladen ppt "APL A programming language Maria Heym. Proseminar "Vergleich von Programmiersprachen" 2 APL A double-decker bus. Its takes rows and columns of passengers."

Ähnliche Präsentationen


Google-Anzeigen