05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Samankaltaiset tiedostot
Digitaalisen median tekniikat JavaScript Harri Laine 1

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat, s2007 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Digitaalisen median tekniikat. Luento 4: JavaScript

Java-kielen perusteet

Java-kielen perusteet

Ohjelmointiharjoituksia Arduino-ympäristössä

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Kielioppia: toisin kuin Javassa

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

7. Näytölle tulostaminen 7.1

4. Luokan testaus ja käyttö olion kautta 4.1

Java-kielen perusteita

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ehto- ja toistolauseet

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Harjoitustyö: virtuaalikone

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Osoitin ja viittaus C++:ssa

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmoinnin perusteet Y Python

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

7. Oliot ja viitteet 7.1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Hohde Consulting 2004

Loppukurssin järjestelyt C:n edistyneet piirteet

15. Ohjelmoinnin tekniikkaa 15.1

Tietueet. Tietueiden määrittely

17. Javan omat luokat 17.1

Java-kielen perusteet

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olio-ohjelmointi Syntaksikokoelma

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

12. Monimuotoisuus 12.1

5/20: Algoritmirakenteita III

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

811120P Diskreetit rakenteet

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

17. Javan omat luokat 17.1

JavaScript alkeet. Intro Muuttujat Dialogi boxit. Metropolia 2011

Ohjelmoinnin perusteet Y Python

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Java kahdessa tunnissa. Jyry Suvilehto

ITKP102 Ohjelmointi 1 (6 op)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

P e d a c o d e ohjelmointikoulutus verkossa

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

13. Loogiset operaatiot 13.1

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

Makrojen mystinen maailma lyhyt oppimäärä

15. Ohjelmoinnin tekniikkaa 15.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Ohjelmoinnin peruskurssien laaja oppimäärä

11. Javan valintarakenteet 11.1

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Ehto- ja toistolauseet

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

16. Ohjelmoinnin tekniikkaa 16.1

Harjoitus 5 (viikko 41)

JavaScript alkeet Esimerkkikoodeja moniste 2

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Loppukurssin järjestelyt

811120P Diskreetit rakenteet

Groovy. Niko Jäntti Jesper Haapalinna Group 31

815338A Ohjelmointikielten periaatteet

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Tutoriaaliläsnäoloista

16. Ohjelmoinnin tekniikkaa 16.1

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Harjoitus 4 (viikko 47)

C++11 lambdat: [](){} Matti Rintala

1. Omat operaatiot 1.1

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Transkriptio:

Digitaalisen median tekniikat ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat hiemankin edistyneemmissä nyk. ECMAScript (standardi) selaimessa toimiva tapahtumaperustainen skriptikieli ei mitään tekemistä Javan kanssa paitsi, että molempien lähtökohtana on C-kielen syntaksi 5.4.2004 Harri Laine 1 5.4.2004 Harri Laine 2 Tulkattava kieli Toimii selainympäristössä (client side) pääsy vain dokumentin dataan Ohjelmat ovat enimmäkseen erilaisiin tapahtumiin (käyttäjätoimintoihin tai dokumentin käsittelyvaiheisiin) liittyviä käsittelijöitä, joilla toteutetaan tarkistuksia esittämisen ohjausta dynaamista HTML:ää, dokumentin näkyvään muotoon voidaan tehdä muutoksia sen jälkeen kun dokumentti on ladattu selaimeen dokumentti itsessään ei kuitenkaan muutu sivuja tai niiden osia voidaan tuottaa ohjelmallisesti (js_esim1.html) vuorovaikutusta illä ei voi tuottaa grafiikka käsitellä paikallisia tiedostoja tehdä verkko-operaatioita 5.4.2004 Harri Laine 3 5.4.2004 Harri Laine 4 perusrakenteeltaan C:n ja Javan kaltainen case sensitive sijoitusoperaatio (=) esim. a=b; lauseet erotetaan toisistaan puolipisteellä, mutta rivin loppu toimii myös erottimena perusrakenteeltaan C:n ja Javan kaltainen case sensitive sijoitusoperaatio (=) esim. a=b; lauseet erotetaan toisitaan puolipisteellä, mutta rivin loppu toimii myös erottimena return return = return; 5.4.2004 Harri Laine 5 5.4.2004 Harri Laine 6 Harri Laine 1

Rivin loppumisen toimiminen erottimena vaikuttaa myös siihen miten lausekkeet on kirjoitettava: teksti= ensimmäinen rivi + toinen rivi + kolmas rivi ; teksti= ensimmäinen rivi + toinen rivi + kolmas rivi ; ei toimi toimii Kommentit: /* monirivinen..*/ // yksirivinen <!-- tunnistetaan yksirivisen kommentin alkumerkiksi, mutta --> ei tunnistu loppumerkiksi, siksi koodin piilotus vanhoilta selaimilta: <script type= text/javascript > <!-- iä tähän väliin // --> </script> 5.4.2004 Harri Laine 7 5.4.2004 Harri Laine 8 Merkkijono ei voi jakautua monelle riville teksti= ensimmäinen rivi toinen rivi kolmas rivi ; väärin Vakiot: Numeeriset vakiot: 123 Merkkijonovakiot jonkinlaisten lainausmerkkien sisässä kunhan kummallakin puolella samanlainen merkkijono, merkkijono, `merkkijono 5.4.2004 Harri Laine 9 5.4.2004 Harri Laine 10 tietotyypit luvut kokonaisluvut, liukuluvut 3.14, 1.2e3 = 1.2*10 3 =1200, erikoisarvo: NaN = not a number merkkijonot erikoismerkit kuten Javassa \b (backspace),\t (tab),\n (rivinvaihto),\, \, \\, \x99 (ascii merkki hexana), \u9999 (unicode) totuusarvot: true/false (laskennassa 1/0) tietotyypit oliot (object) kokoelma nimettyjä ominaisuuksia ominaisuudella nimi ja arvo ominaisuuden arvoon viitataan joko pistenotaatiolla olio.ominaisuus (esim. image.scr) tai assosiatiivisen taulukon tapaan olio[ ominaisuus ] (esim. image[ src ] ) mahdollistaa ominaisuuden nimen antamisen muuttujana Olion ominaisuuden arvona voi olla olio. Sen ominaisuuden arvoon viitataan olio.ominaisuus.ominaisuuden_ominaisuus esimdocument.form1.action olioilla voi olla metodeja esim document.write( text ) valmiiksi määritellyt oliot olioiden sijoitus kuten Javassa, eli viite samaan olioon 5.4.2004 Harri Laine 11 5.4.2004 Harri Laine 12 Harri Laine 2

tietotyypit Taulukot (array) taulukko on kokoelma alkioita, joihin voi viitata järjestysnumeron avulla array [index], indeksointi alkaa nollasta taulukon alkiona voi olla taulukko array [outer_index] [inner_index] abc 0 1 abc[1] [2] 5.4.2004 Harri Laine 13 Muuttujanimet: alkavat kirjaimella tai _ tai $ -merkillä muut merkit ascii merkkejä, ei operaatiosymboleja varatut sanat eivät käy muuttujina Muuttujat tyypittömiä, toisin kuin esim. Javassa muuttujan tyyppiä ei määritellä esittelyssä tyyppi määräytyy käytön mukaan, jos muuttujaan sijoitetaan luku muuttuja tulee tyypiltään lukuarvoiseksi tyyppi voi muuttua 5.4.2004 Harri Laine 14 automaattiset tyyppimuunnokset // set item1 to string '10' var item1 = '10'; // set item2 to string '20' var item2 = '20'; // item1 set equal to number 10 // by multiplication, a numbers only process item1 = item1 *1; // item2 set equal to string '2010' // item1 converted to string and concatenated // concatenation wins over addition item2 = item2 + item1; // item2 set equal to number 201 // division is a numbers only process item2 = item2 / item1; Eksplisiittiset tyyppimuunnokset parseint(string), parsefloat(string) merkkijonon alusta maksimipituinen kyseiseksi lukutyypiksi tulkittavissa oleva luku var string1 = '3.1417 is the value of Pi'; var string2 = 'The value of Pi is 3.1417'; Int_1 = parseint(string1); // value of Int_1 is 3 Int_2 = parseint(string2); // value of Int_1 is NaN Int_3 = parsefloat(string1); // value of Int_1 is 3.1417 Int_4 = parsefloat(string2); // value of Int_1 is NaN 5.4.2004 Harri Laine 15 5.4.2004 Harri Laine 16 Muuttuja esitellään var avainsanan jälkeen Samassa var-lauseessa voi esitellä monta muuttujaa Muuttujalle voidaan antaa esittelyn yhteydessä alkuarvo, ellei alkuarvoa ole annettu on muuttujan arvona undefined On sallittua esitellä muuttuja toistuvasti (potentiaalinen virhelähde) jos myöhemmässä esittelyssä asetetaan alkuarvo se korvaa aiemman arvon jos myöhemmässä esittelyssä ei anneta alkuarvoa säilyy aiempi arvo // simple declaration var item1; // declaration of multiple variables var item1, item2, item3; // declaration with assignment var item1 = 7; // multiple variables with assignment var item1 = 7, item2 = 'cat', item3 = 3.17; 5.4.2004 Harri Laine 17 5.4.2004 Harri Laine 18 Harri Laine 3

paikalliset muuttujat funktioiden sisällä määritellyt muuttujat ovat paikallisia eli voimassa vain funktion sisällä funktioiden ulkopuolella määritellyt muuttujat ovat globaaleja globaaleja muuttujia voi käyttää funktioissa ellei paikallisesti ole määritelty samannimistä muuttujaa, jolloin käytetään sitä var item1 = 'global'; function testthescope( ) { item1 = 'local'; testthescope( ); tulostaa: local local 5.4.2004 Harri Laine 19 5.4.2004 Harri Laine 20 operaattorit var item1 = 'global'; function testthescope( ) { var item1 = 'local'; testthescope( ); tulostaa: local global in matemaattiset, vertailu- ja loogiset operaattorit ovat pääasiassa samat kuin Javassa merkittävimpiä eroja: merkkijonojen arvoja verrataan samoilla operaattoreilla kuin lukuja (==,!=,>, ) tavallisten vertailujen yhteydessä tehdään tyyppimuunnos, jos verrattavat ovat eri tyyppiä 1== 1, 1==true 11 < 3 mutta 11 >3 tiukkojen operaatioiden === ja!== yhteydessä ei tyyppimuunnosta ts 1!== 1 null==undefined, null==null 5.4.2004 Harri Laine 21 5.4.2004 Harri Laine 22 operaattorit lauseet binäärinen + on kuormitettu yhteenlasku, katenaatio jos molemmat osapuolet lukuja niin yhteenlasku muuten katenaatio typeof(muuttuja) antaa muuttujan tyypin ehtolauseet if (ehto) { lauselohko if (ehto) { lauselohko else {lauselohko if (ehto1) { lauselohko else if (ehto2) {lauselohko switch (lauseke) { case arvo: lauselohko case default: lauselohko break kuten Javassa 5.4.2004 Harri Laine 23 5.4.2004 Harri Laine 24 Harri Laine 4

lauseet lauseet switch (parseint(xyz)) { // each of these three cases // will process the same statement case NaN: case 0: case 10: window.alert(xyz + ' is not a value I can work with!'); break; default: window.alert(xyz + ' is ready for processing!'); abc = somefunc(xyz); break; Toistolauseet while, do ja for kuten Javassa Lisäksi: for (muuttuja in objekti) {lauselohko käy läpi taulukon alkiot tai olion ominaisuudet for (elname in navigator) { document.write(elname); document.write(" = "); document.write(navigator[elname]); document.write("<br />"); 5.4.2004 Harri Laine 25 5.4.2004 Harri Laine 26 funktiot issä voidaan määritellä funktioita. Toisin kuin Javassa: voidaan määritellä myös irrallisia funktioita, jotka eivät ole minkään olion metodeja funktioiden paluuarvon tyyppiä ei voi määritellä funktion esittelyssä ja kutsussa voi olla eri määrä argumentteja (puuttuvilla arvo undefined, ylimääräisiin pääsee käsiksi taulukon arguments kautta) return:n perässä voidaan antaa paluuarvo, ellei anneta palautetaan undefined - taulukot ja objektit viiteparametreja, muut argumentit arvoparametreja function functionname(arguments) { statements; return; taulukot Taulukon luonti var taulu= new Array(); alkioiden määrää ei ole annettu taulukot ovat dynaamisia, joten alkioita voidaan sijoittaa ylärajan ulkopuolellekin taulu[0]=1; taulukkoa voi käyttää myös assosiatiivisena (vrt hashtable) taulu[ uusialkio ]=2; (jos taulukossa oli aiemmin 1 alkio, niin uusialkio assosioidaan arvoon 1.) var taulu1= new Array(6); // 6 alkiota, undefined var taulu2= new Array(1,20, abc,200); tauluko jossa 4 alkiota var taulu3 = [1,20, abc,200]; ominaisuus lenght ilmoittaa taulukon koon, taulu3.lenght==4 5.4.2004 Harri Laine 27 5.4.2004 Harri Laine 28 taulukot Taulukon koko määräytyy sen todellisen koon mukaan ei esittelyn var pikkutaulu= Array(5); pikkutaulu[200]=1; pikkutaulu.length==201 Taulukkometodeja, esim: taulukko.concat(taulukko1) liittää taulukon loppuun toisen taulukon alkiot taulukko.sort() järjestää alkiot 5.4.2004 Harri Laine 29 Harri Laine 5