Click here to load reader

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

  • View
    109

  • Download
    2

Embed Size (px)

Text of APL A programming language Maria Heym. Proseminar "Vergleich von Programmiersprachen" 2...

  • Folie 1
  • APL A programming language Maria Heym
  • Folie 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 schieen sich in den Fu und verbringen den ganzen Tag damit raus zukriegen, wie sie das mit weniger Buchstaben schaffen knnen. [6]
  • Folie 3
  • Proseminar "Vergleich von Programmiersprachen" 3 Besonderheiten Zeichensatz Mchtigkeit Abarbeitungsreihenfolge
  • Folie 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
  • Folie 5
  • Proseminar "Vergleich von Programmiersprachen" 5 Entstehungsgeschichte (I) Als mathematische Notationsform von Kenneth E. Iverson 1962 in A programming language vorgestellt Zunchst zur formalen Beschreibung von IBM Systems/360 1966: erster Interpreter von APL
  • Folie 6
  • Proseminar "Vergleich von Programmiersprachen" 6 Entstehungsgeschichte (II) Bis 1985: IBM fhrender Anbieter des Interpreters Seit 1992: Weiterentwicklung durch kleinere Softwarefirmen Aufnahme in die.Net-Familie
  • Folie 7
  • Proseminar "Vergleich von Programmiersprachen" 7 Anwendungsgebiete Statistiken zur Datenanalyse Banken, Versicherungen wenns mal schnell gehen soll Von Mathematikern, Ingenieuren & Nicht- Programmierern verwendet
  • Folie 8
  • Proseminar "Vergleich von Programmiersprachen" 8 Typkonzepte (I) Nur 2 Datentypen explizit unterscheidbar Zeichenketten Zahlen Interne Unterscheidung zwischen Festpunkt-, Gleitpunktzahlen und Boolean
  • Folie 9
  • Proseminar "Vergleich von Programmiersprachen" 9 Typkonzepte (II) Aus Skalaren: (homogene) dynamische Feldern Vektoren Matrizen Hherdimensionale Felder
  • Folie 10
  • Proseminar "Vergleich von Programmiersprachen" 10 Funktionsaufbau Funktionskopf: Funktionsende durch
  • Folie 11
  • Proseminar "Vergleich von Programmiersprachen" 11 Beispiel Hello World hello_world [1] `hello world` [2]
  • Folie 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
  • Folie 13
  • Proseminar "Vergleich von Programmiersprachen" 13 Zuweisung eines Wertes auf eine Variable (II) Vektoren vektorZuweisung [1] a5 [2] b1 2 3 4 5 [3] c`123` [4] d,100 [5] e,`b` [6] f,A [7]
  • Folie 14
  • Proseminar "Vergleich von Programmiersprachen" 14 Zuweisung eines Wertes auf eine Variable (III) Matrizen folgen allgemein der Struktur A matrizenZuweisung [1]V1 0 2 1 0 3 1 1 5 2 1 5 [2]A2 2 3 V [3]
  • Folie 15
  • Proseminar "Vergleich von Programmiersprachen" 15 Zuweisung eines Wertes auf eine Variable (IV) matrizenZuweisung [1]V1 0 2 1 0 3 1 1 5 2 1 5 [2]A2 2 3 V matrizenZuweisung V 1 0 2 1 0 3 1 1 5 2 1 5
  • Folie 16
  • Proseminar "Vergleich von Programmiersprachen" 16 Zuweisung eine Wertes auf eine Variable (V) matrizenZuweisung2 [1]B3 41 2 3 matrizenZuweisung2 B 1 2 3 1 2 3 1 2 3 1 2 3
  • Folie 17
  • Proseminar "Vergleich von Programmiersprachen" 17 Prozedurkonzepte Keine Deklarationsteile Nur externe Prozeduren Prozeduren vom Funktionstyp Prozeduren vom Anweisungstyp Grundstzlich call-by-value
  • Folie 18
  • Proseminar "Vergleich von Programmiersprachen" 18 Funktionstyp Dyadisch: x funktion y Monadisch: funktion z Niladisch: funktion
  • Folie 19
  • Proseminar "Vergleich von Programmiersprachen" 19 Anweisungstyp Dyadisch: r x funktion y Monadisch: r funktion y Niladisch: r funktion
  • Folie 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]
  • Folie 21
  • Proseminar "Vergleich von Programmiersprachen" 21 Beispiele (II) RSumme [1]R(?6)+?6 [2] UKreisumf R [1]U2xR [2] RA Hyp B [1]R((A*2)+B*2)*.5 [2]
  • Folie 22
  • Proseminar "Vergleich von Programmiersprachen" 22 Elementare Operatoren (I) SymbolMonadischDyadisch +Identitt +5 Summe 7+5 -Negation -5 Differenz 7-5 !Fakultt 3! Binomialkoeffizient 3!2
  • Folie 23
  • Proseminar "Vergleich von Programmiersprachen" 23 Elementare Operatoren (II) Vektor 5 Kl. Index von X in Y 1 2 6 4 7 Gibt SV zurck A Erstellt Matrix SV DV | Betrag |-5 X modulo y 12|5 Multiplikation mit X Kreisfunktion NX
  • Folie 24
  • Proseminar "Vergleich von Programmiersprachen" 24 Elementare Operatoren (III) NNX(-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
  • Folie 25
  • Proseminar "Vergleich von Programmiersprachen" 25 Globale Programmstrukturen (I) Blcke existieren nicht Alternativ: Funktionen, gotos Namensbereiche: 1.Variablen der Umgebung in aufgerufenen Funktionen bekannt 2.Lokale Variable setzt globale Variable auer Kraft
  • Folie 26
  • Proseminar "Vergleich von Programmiersprachen" 26 Globale Programmstrukturen (II) aufrufend [1]S1 [2]aufgerufen [3] aufgerufen [1]S1 [2]SS+1 [3]
  • Folie 27
  • Proseminar "Vergleich von Programmiersprachen" 27 Globale Programmstrukturen (III) aufrufend S 2
  • Folie 28
  • Proseminar "Vergleich von Programmiersprachen" 28 Globale Programmstrukturen (IV) aufrufend [1]S1 [2]aufgerufen [3] aufgerufen;S [1]S1 [2]SS+1 [3]
  • Folie 29
  • Proseminar "Vergleich von Programmiersprachen" 29 Globale Programmstrukturen (V) aufrufend S 1
  • Folie 30
  • Proseminar "Vergleich von Programmiersprachen" 30 Ereignissteuerung Keine explizite Ereignissteuerung Sprnge mglich Sprnge zu Marken Sprnge auf Zeilennummern
  • Folie 31
  • Proseminar "Vergleich von Programmiersprachen" 31 Beispiel Sprnge sprung [1] 0 [2] 3 4 5 [3] next [4]next: 0 [5] 7 [6]
  • Folie 32
  • Proseminar "Vergleich von Programmiersprachen" 32 Beispiel MergeSort (I) while- Schleife; Aufruf LOOP WHILE c DOTO end end: POOL
  • Folie 33
  • Proseminar "Vergleich von Programmiersprachen" 33 Beispiel MergeSort (II) While-Schleife; Realisierung lLOOP [1] LOOPSTACK(1+(27)[1+1]), LOOPSTACK,l0 [2] clabelc DOTO label [1]clabelc, label [2]
  • Folie 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]
  • Folie 35
  • Proseminar "Vergleich von Programmiersprachen" 35 Beispiel MergeSort (IV) If-Verzweigung; Aufruf IF c DOTO label1 label1: label2 DOTO ELSE label2: FI
  • Folie 36
  • Proseminar "Vergleich von Programmiersprachen" 36 Beispiel MergeSort (V) labelIF clabel [1]label(~clabel[1])/1+clabel[1+1] [2] ELSE0 FI0
  • Folie 37 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]">
  • 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]
  • Folie 38
  • Proseminar "Vergleich von Programmiersprachen" 38 Beispiel MergeSort (VII) mlistllist merge rlist [1]mlr0 [2]LOOP [3]WHILE((l