Programmeerimiskeel APL Raivo Laanemets 17. mai a.

Seotud dokumendid
Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

PHP

Microsoft Word - ref - Romet Piho - Tutorial D.doc

Andmebaasid, MTAT Andmebaasikeeled 11.loeng

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

loeng7.key

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Funktsionaalne Programmeerimine

Polünoomi juured Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n a n 1 x

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Roman Jagomägis Programmeerimiskeel privaatsust säilit

Microsoft PowerPoint - loeng2.pptx

Word Pro - diskmatTUND.lwp

Andmed arvuti mälus Bitid ja baidid

Praks 1

Word Pro - digiTUNDkaug.lwp

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

6. KLASSI MATEMAATIKA E-TASEMETÖÖ ERISTUSKIRI Alus: haridus- ja teadusministri määrus nr 54, vastu võetud 15. detsembril E-TASEMETÖÖ EESMÄRK Tas

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

AWK Aho Weinberger Kernighan struktuurse teksti töötlemise keel rikkalikult tekstitöötlusvahendeid omal alal suhteliselt lihtne ja kiiresti realiseeri

Andmeturve

X Window System tuntud kui: X11 X X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesugus

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

Word Pro - digiTUNDkaug.lwp

loeng2

loogikaYL_netis_2018_NAIDISED.indd

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a.

X Window System tuntud kui: X11, X, X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesug

Ruutvormid Denitsioon 1. P n Ütleme, et avaldis i;j=1 a ijx i x j ; kus a ij = a ji ; a ij 2 K ja K on korpus, on ruutvorm üle korpuse K muutujate x 1

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

19. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Arvridade koonduvustunnused Sisukord 19 Arvridade koonduvustunnused Vahelduvat

Sügis 2018 Kõrgema matemaatika 2. kontrolltöö tagasiside Üle 20 punkti kogus tervelt viis üliõpilast: Robert Johannes Sarap, Enely Ernits, August Luur

Microsoft Word - requirements.doc

SQL

Pangalingi spetsifikatsioon Pocopay pangalingilt makse algatamiseks tuleb kasutada teenust Kaupmees teeb päringu Pocopayle aadressile

DVD_8_Klasteranalüüs

MTAT Operatsioonisüsteemid - Turvalisus

Tõstuksed Aiaväravad Tõkkepuud Automaatika KÄIGUUKSED Käiguuksed on paigaldatavad kõikidele sektsioonuste tüüpidele. Käiguukse saab varustada kas tava

Projekt: Sööbik ja Pisik Tartu Lasteaed Piilupesa Koostajad: Merelle Uusrand ja Ülle Rahv Sihtgrupp: 4 5aastased lapsed Periood: veebruar märts 2017 P

Pealkiri

Pintsli otsade juurde tegemine Esiteks Looge pilt suurusega 64x64 ja tema taustaks olgu läbipaistev kiht (Transparent). Teiseks Minge kihtide (Layers)

PowerPointi esitlus

MTAT Operatsioonisüsteemid - Turvalisus

raamat5_2013.pdf

MTAT Loeng 2 ( )

SQL

Tartu Kutsehariduskeskus Teksti sisestamine Suurem osa andmetest saab sisestatud klaviatuuril leiduvate sümbolite abil - tähed, numbrid, kirjavahemärg

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

vv05lah.dvi

ma1p1.dvi

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

ITI Loogika arvutiteaduses

Mining Meaningful Patterns

G aiasoft Programmi VERP ja Omniva Arvekeskuse liidese häälestamine ja arvete saatmine-lugemine VERP 6.3 ja VERP 6.3E Versioon ja hilisemad K

Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Kuu Õpitulemus Õppesisu Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppet

Kom igang med Scratch

12. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Algfunktsioon ja määramata integraal Sisukord 12 Algfunktsioon ja määramata integraal 1

VL1_praks2_2009s

Automaatjuhtimise alused Automaatjuhtimissüsteemi kirjeldamine Loeng 2

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier

Microsoft Word - 56ylesanded1415_lõppvoor

Matemaatilised meetodid loodusteadustes. I Kontrolltöö I järeltöö I variant 1. On antud neli vektorit: a = (2; 1; 0), b = ( 2; 1; 2), c = (1; 0; 2), d

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

Skriptid ja käsud

Maksu- ja Tolliamet MAKSUKOHUSTUSLANE Vorm KMD INF Nimi Registri- või isikukood A-osa ANDMED VÄLJASTATUD ARVETE KOHTA. Esitatakse koos käibedeklaratsi

PowerPoint Presentation

XV kursus

Microsoft Word - RM_ _17lisa2.rtf

Funktsionaalne Programmeerimine

Microsoft Word - Lisa 27.rtf

PRESENTATION HEADER IN GREY CAPITALS Subheader in orange Presented by Date Columbus is a part of the registered trademark Columbus IT

Loeng03

Juhend nutiterminali seadistamiseks ja kaardimaksete vastuvõtmiseks Ingenico Link/2500 ja icmp

Rakenduste loomise ja programmeerimise alused

6

TALLINNA PAE GÜMNAASIUMI AINEKAVAD GÜMNAASIUM AINEVALDKOND: MATEMAATIKA

MATEMAATILINE ANALÜÜS I. ESIMESE KONTROLLTÖÖ NÄITEÜLESANDED (1) Leida funktsiooni y = sin x + ln(16 x 2 ) määramispiirkond. (2) Leida funktsiooni y =

KAASAV PROGRAMMEERIMINE ETTEVÕTETELE JA TEADUSASUTUSTELE 1

EIK-OSadmin-Edmund

+/- 7(chomsky???) Deduktiivne jama 1.Hulkade spetsifitseerimine. Hulk on samalaadsete objektide järjestamata kogum, mida käsitlet

Operatsioonisüsteemide ehitus

AINE NIMETUS: MATEMAATIKA AINEKAVA I-III KOOLIASMTES ÜLDOSA Põhikooli riiklik õppekava: Õppe- ja kasvatuseesmärgid Õppeaine kirjeldus Kooliastmete õpi

Microsoft Word - Referaat.docx

Microsoft Word - Toetuste veebikaardi juhend

Programmi Pattern kasutusjuhend

Linux süsteemi administreerimine

Peafail3_2.dvi

Skriptimiskeeli, mida ei käsitletud Perl Python Visual Basic Script Edition (VBScript) MS DOS/cmd skriptid Windows PowerShell midagi eksootilisemat: G

Microsoft Word - Vx610 EMV KASUTUSJUHEND.doc

Kfloppy vormindamistööriista käsiraamat

8.klass 4 tundi nädalas, kokku 140 tundi Hulkliikmed ( 45 tundi) Õppesisu Hulkliige. Hulkliikmete liitmine ja lahutamine ning korrutamine ja jagamine

untitled

Võistlusülesanne Vastutuulelaev Finaal

Caterpillar Inc. 100 NE Adams Street, Peoria, IL USA Meedianumber U9NE8460 Tegevusdokument Lisateave GRADE süsteemi komponentide nõuetele vastav

lvk04lah.dvi

1. AKE Ajalise keerukuse empiiriline hindamine

Väljavõte:

Programmeerimiskeel APL Raivo Laanemets 17. mai 2009. a.

Sissejuhatus I APL - A Programming Language I Kenneth E. Iverson (1920-2004) I Elukutselt matemaatik I Uuris matemaatilist notatsiooni I 1960 - läks tööle IBM-i I IBM-s kohtus Adin Falkoga, kes huvitus tema notatsiooni kasutamisest algoritmide kirjeldamisel I 1964 - IBM/360 arhitektuuri kirjeldamiseks I 1965 - APL keele esimene realisatsioon I 1989 - APL standard (süntaks ja semantika) - ISO8485 I 1992 - A+ (http://www.aplusdev.org) APL realisatsioon UNIX-tüüpi süsteemidele (tööjaamadele)

Sissejuhatus I APL realisatsioonid on interpretaatori kujul I Programmeerija ning kasutaja töötavad programmiga interaktiivselt I Interpretaatorile antakse APL avaldis, mille tulemusena väärtustatakse muutuja v~oi/ja väljastatakse midagi ekraanile I APL avaldised kasutavad notatsiooni, mis sisaldab rohkelt mitte-ascii tähemärke I É, Å, Ï, «, Õ, û, ð jpt. I Programmiga töötamiseks vaja eriklaviatuuri I Unikaalne keel - ei ole v~orreldav teiste vähegi levinud keeltega

Sissejuhatus Näide: (~XÅ!XÊ.«X)/Xû2ÕÉN How to Shoot Yourself In the Foot: You shoot yourself in the foot; then spend all day guring out how to do it in fewer characters.

Sissejuhatus Näide:

APL konstruktsioonid I Süntaks baseerub Iversoni matemaatilisel notatsioonil I A Programming Language, Kenneth E. Iverson, 1962 I Notation as a Tool of Thought, Kenneth E. Iverson, 1980 I Primitiivsed lekseemid sarnased teistele keeltele (tähemärgid, stringid, arvud) I APL süntaks formaliseeritav BNF formalismis (vähemalt osaliselt) I The Syntax of APL, an Old Approach Revisited, Jean J. Girardot, Florence Rollin

APL konstruktsioonid I Andmeühikuks on massiivid I Andmetele rakendatakse funktsioone I Funktsioonidele rakendatakse operaatoreid I Tavalised aritmeetilised operaatorid on APL kontekstis funktsioonid! I Avaldisi loetakse vasakult paremale: 3«4+5 väärtus on 27 I Muutujad käituvad sarnaselt imperatiivsete keelte muutujatele I Väärtuse omistamise: xû3«4+5 I Ei vaja deklareerimist I Omistamise väärtus on omistatava avaldise väärtus

Massiivid I K~oik APL väärtused on massiivid (sh. numbrid, tähemärgid, funktsioonid) I Massiivid v~oivad olla mitmem~o~otmelised I Mitmem~o~otmelist massiivi iseloomustab tema kuju (shape) I Kuju esitab massiivi m~o~otmete vektor (2 3 tabeli korral 2 3) I Ühem~o~otmelised masiivid esitavad vektoreid, liste ja stringe I Masiivi elementideks v~oivad olla teised massiivid (nested array) I Sama massiiv v~oib sisaldada erinevat tüüpi andmeid (täisarvud, ujupunktarvud, tähemärgid) I Massiivi elemente/alamosi saab kasutada indeksavaldiste abil

Massiivid Massiivide esitamine: I 3-elemendiline ühem~o~otmeline massiiv: 10 2.3 34 I 5-elemendiline s~onede massiiv: `sym1`sym2`sym3`sym4`sym5 I 6-elemendiline tähemärkide massiiv (string): 'axrtvw' I Nestitud 6-elemendiline massiiv: (`sym1;+;1 2 3 4;1.7 3.14;'example';) I Kahem~o~otmeline massiiv: 2 3Ò'axrTVw' - moodustatud kaheargumendilise funktsiooni Ò (rho) abil (vektor 2 3 määrab tulemuse kuju)

Massiivid Massiivi genereerimine (intervallfunktsioon) É (iota): I Vektor numbritest 0; 1; : : : ; 9: É10 I Kolmem~o~otmeline massiiv: É2 3 5 I 2 tasandit I igal tasandil 3 rida I igal real 5 elementi

Massiivid Massiivi elementide indekseerimine: I Ühe elemendi selekteerimine: 'axrtvw'[4] I Mitme elemendi selekteerimine: 'axrtvw'[5 0 1] I Mitmem~o~otmelisest massiivist selekteerimine: (É2 3 5)[0;1;3] I Veeru selekteerimine: (É2 3 5)[0;;4] - väljastab 4 9 14

Funktsioonid I APL funktsioonid tavaliselt ühe v~oi kahe argumendiga I Ühe argumendiga f.-ni rakendamine: argument funktsionaalsümbolist vahetult paremal: f x I f - funktsioonisümbol, x - argument I Kahe argumendiga f.-ni rakendamine: üks argument vasakul, teine paremal (inks-kuju): y f x I f - funktsioonisümbol, x - esimene argument, y - teine argument

Funktsioonid Kuna avaldisi loetakse paremalt vasakule, siis: I f1 f 2 x f 1 (f 2 x ) - f 1 ja f 2 üheargumendilised I f1 y f 2 x f 1 (y f 2 x ) - f 1 üheargumendiline, f 2 - kaheargumendiline I y f1 f 2 x y f 1 (f 2 x ) - f 1 kaheargumendiline, f 2 - üheargumendiline I y f1 x f 2 z y f 1 (x f 2 z ) - f 1 ja f 2 kaheargumendilised Annab lihtsa viisi avaldiste parsimiseks ja interpreteerimiseks, töödeldes avaldist vasakult paremale

Funktsioonid Näiteid ühe argumendiga aritmeetilistest funktsioonidest: Í absoluutväärtus vastandarv Ó ülemine täisosa ~ eitus Ä alumine täisosa Ï korrutamine -ga * eksponent ß pöördarv + samasusfunktsioon? juhuarvu genereerimine ð naturaallogaritm «signum Näited: I 2 alumise täisosa arvutamine: ÄÏÏ1

Funktsioonid Näiteid kahe argumendiga aritmeetilistest funktsioonidest: + liitmine Ä miinimum ^ konjuktsioon «korrutamine Ï trigonomeetriline f. disjunktsioon ß jagamine * astendamine =,,,>,<, v~ordlemine Í jääk ð logaritm - lahutamine Ó maksimum Trigonomeetrilise funktsiooni vasakpoolseks argumendiks on soovitud konkreetne trigonomeetrilise funktsiooni nimi v~oi sellele vastav number. Näiteks 2ÏÏ1 arvutab cos väärtuse.

Funktsioonid Funktsioone saab rakendada ka massiividele: I Kahe vektori elemendikaupa liitmine: 1 2+3 4 I Vektori elementide absoluutväärtuste vektor: Í3 4 I Vektori elementide läbikorrutamine 2-ga: 2«3 4 Väljund interpretaatorist:

Funktsioonid Näiteid mittearitmeetilistest funktsioonidest: I Vektorite konkateneerimine: (É3),3 4 I Elementide valik: 1 1 #3 4 5 I Juhusliku 3-elemendilise vektori genereerimine: 3?10 I 2 esimese elemendi eemaldamine vektorist: 2ÕÉ10 Väljund interpretaatorist:

Operaatorid I Operaatoreid kasutatakse funktsioonide käitumise laiendamiseks I Näiteks summafunktsiooni abil k~oigi masiivi elementide summa leidmiseks I Operaatorid jagunevad Näiteid: I Ühe funktsiooni-argumendiga (monadic) I Kahe funktsiooni-argumendiga (dyadic) I Elementide summa leidmine (reduce-operaator /): +/É100

Operaatorid Massiivide otsekorrutis (outer product Ê.f): I f - kahekohaline funktsioon Näide: 10 10 korrutustabel

Tagasivaade Slaidide alguses oli näide (~XÅ!XÊ.«X)/Xû2ÕÉN I Leiab k~oik algarvud väiksemad kui N Kuidas? 1. ÉN genereerib vektori arvudest 0,...,N-1

Struktuurne programmeerimine I Esialgne APL struktuurprogrammeerimise vahendeid ei omanud I Hilisemad realisatsioonid on need juurde lisanud I if-then konstruktsioon I Tsüklid I Funktsioonide deneerimine I Siin m~oned näited A+ baasil

Struktuurne programmeerimine Faktoriaali arvutamise rekursiivse funktsiooniga: Faktoriaali arvutamine while-tsükliga:

A+ kasutamine I Tarvis on aplus keskkonda ja sobivaid fonte I Ubuntu I apt-get install aplus-fsf-dev I apt-get install xfonts-kapl I xset fp rehash I xset fc cache I Terminali käivitamine: xterm -fn *-kapl-*iso8859-1 -en 'ISO 8859-1' I A+ interpretaatori käivitamine: a+

A+ klaviatuur I APL Union Keyboard I Standardne APL paigutus

Kokkuv~ote APL: I Andmemassiividel (array) programmeerimisele orienteeritud I Üks vanemaid programmeerimiskeeli I Realisatsioonid interpretaatori kujul I Kasutab matemaatilist notatsiooni ja palju erimärke I Arendusprotsess interaktiivses keskkonnas I Suuremad APL programmid on loetamatud (write-once-read-never) I Sobiv kasutamiseks statistika- ja nantsrakendustes