Digitaalisen median tekniikat JavaScript

Samankaltaiset tiedostot
Digitaalisen median tekniikat JavaScript Harri Laine 1

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

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

Digitaalisen median tekniikat. Luento 4: JavaScript

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

Java-kielen perusteet

Java-kielen perusteet

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

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.

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

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

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ä

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

Harjoitustyö: virtuaalikone

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

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

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

JavaScript alkeet. Intro Muuttujat Dialogi boxit. Metropolia 2011

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();

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

Olio-ohjelmointi Syntaksikokoelma

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

JavaScript alkeet Esimerkkikoodeja moniste 2

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

5/20: Algoritmirakenteita III

12. Monimuotoisuus 12.1

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

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

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

P e d a c o d e ohjelmointikoulutus verkossa

Ohjelmoinnin perusteet Y Python

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

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Java kahdessa tunnissa. Jyry Suvilehto

ITKP102 Ohjelmointi 1 (6 op)

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

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)

Ehto- ja toistolauseet

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

6. Muuttujat ja Java 6.1

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)

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Loppukurssin järjestelyt

815338A Ohjelmointikielten periaatteet

811120P Diskreetit rakenteet

Groovy. Niko Jäntti Jesper Haapalinna Group 31

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

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

Tutoriaaliläsnäoloista

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

16. Ohjelmoinnin tekniikkaa 16.1

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ä

Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

Harjoitus 4 (viikko 47)

1. Omat operaatiot 1.1

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

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Transkriptio:

Digitaalisen median tekniikat JavaScript 5.4.2004 Harri Laine 1 JavaScript 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 2 Harri Laine 1

JavaScript 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 5.4.2004 Harri Laine 3 JavaScript JavaScriptillä ei voi tuottaa grafiikka käsitellä paikallisia tiedostoja tehdä verkko-operaatioita 5.4.2004 Harri Laine 4 Harri Laine 2

JavaScript syntaksi perusrakenteeltaan C:n ja Javan kaltainen case sensitive sijoitusoperaatio (=) esim. a=b; lauseet erotetaan toisistaan puolipisteellä, mutta rivin loppu toimii myös erottimena function sample( ) { var a = 1; var b = 2; var c = 3; return a + b + c; 5.4.2004 Harri Laine 5 JavaScript syntaksi perusrakenteeltaan C:n ja Javan kaltainen case sensitive sijoitusoperaatio (=) esim. a=b; lauseet erotetaan toisitaan puolipisteellä, mutta rivin loppu toimii myös erottimena function sample( ) { var a = 1; var b = 2; var c = 3; return a + b + c; = function sample( ) { var a = 1; var b = 2; var c = 3; return; a + b + c; 5.4.2004 Harri Laine 6 Harri Laine 3

JavaScript syntaksi Rivin loppumisen toimiminen erottimena vaikuttaa myös siihen miten lausekkeet on kirjoitettava: teksti= ensimmäinen rivi + toinen rivi + kolmas rivi ; ei toimi teksti= ensimmäinen rivi + toinen rivi + kolmas rivi ; toimii 5.4.2004 Harri Laine 7 JavaScript syntaksi Kommentit: /* monirivinen..*/ // yksirivinen <!-- tunnistetaan yksirivisen kommentin alkumerkiksi, mutta --> ei tunnistu loppumerkiksi, siksi koodin piilotus vanhoilta selaimilta: <script type= text/javascript > <!-- JavaScriptiä tähän väliin // --> </script> 5.4.2004 Harri Laine 8 Harri Laine 4

JavaScript syntaksi Merkkijono ei voi jakautua monelle riville teksti= ensimmäinen rivi toinen rivi kolmas rivi ; väärin 5.4.2004 Harri Laine 9 JavaScript syntaksi Vakiot: Numeeriset vakiot: 123 Merkkijonovakiot jonkinlaisten lainausmerkkien sisässä kunhan kummallakin puolella samanlainen merkkijono, merkkijono, `merkkijono 5.4.2004 Harri Laine 10 Harri Laine 5

JavaScript 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) 5.4.2004 Harri Laine 11 JavaScript 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 12 Harri Laine 6

JavaScript 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 abc[1] [2] 0 1 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 Harri Laine 7

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; 5.4.2004 Harri Laine 15 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 16 Harri Laine 8

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 5.4.2004 Harri Laine 17 // 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 18 Harri Laine 9

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ä 5.4.2004 Harri Laine 19 var item1 = 'global'; function testthescope( ) { item1 = 'local'; document.write(item1); testthescope( ); document.write(item1); tulostaa: local local 5.4.2004 Harri Laine 20 Harri Laine 10

var item1 = 'global'; function testthescope( ) { var item1 = 'local'; document.write(item1); testthescope( ); document.write(item1); tulostaa: local global 5.4.2004 Harri Laine 21 JavaScript operaattorit JavaScriptin 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 22 Harri Laine 11

JavaScript operaattorit binäärinen + on kuormitettu yhteenlasku, katenaatio jos molemmat osapuolet lukuja niin yhteenlasku muuten katenaatio typeof(muuttuja) antaa muuttujan tyypin 5.4.2004 Harri Laine 23 JavaScript lauseet 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 24 Harri Laine 12

JavaScript 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; 5.4.2004 Harri Laine 25 JavaScript lauseet 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 26 Harri Laine 13

JavaScript funktiot JavaScriptissä 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; 5.4.2004 Harri Laine 27 JavaScript 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 28 Harri Laine 14

JavaScript 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 15