8 Tiedostot, dokumentit, tieto (&h-media)

Koko: px
Aloita esitys sivulta:

Download "8 Tiedostot, dokumentit, tieto (&h-media)"

Transkriptio

1 8 Tiedostot, dokumentit, tieto (&h-media) Tietokoneet käsittelevät tietoa tiedostojen muodossa Tietokoneiden yhteydessä dokumentilla tarkoitetaan tiedosto(je)n avulla esitettävää asiakokonaisuutta, joka jäsennetään kokonaisuudeksi joko käyttäjän tai tietoa käsittelevät ohjelmiston näkökulmasta Jokaiseen dokumenttiin liittyy - sisältö, rakenne ja esitystapa (enemmän tai väh. toisiinsa sekoittuneina) Tietokoneiden tapauksessa nämä voidaan teknisesti erottaa (ainakin osittain) toisistaan, esim. seuraavasti 1) dokumentin sisältö kirjoitetaan suomen kielellä ja esitetään tekstimuotoisena 2) dokumentin looginen rakenne (otsikot, kappaleet, lainaukset, ) koodataan HTML-elementeiksi HTML-koodauksen avulla 3) dokumentin ulkoasu (esitystapa) valitaan määrittelemällä em.elementeille ulkoasu esim. CSS-sääntöjen muodossa, WYSIWYG-tyyliin formatointiohjeina tai jätetään kokonaan dokumenttia esittävän ohjelman huoleksi HYPERMEDIAN PERUSTEET (syksy 2002) 207

2 Esimerkki: HTML-dokumentti Seuraava dokumentti koostuu kolmesta tiedostosta esim.html (sisältö & rakenne), kuva.gif (dokumenttiin upotettu kuva) ja esim.css (ulkoasun määrittely): tiedosto esim.css BODY { background: white; } H1 { color: black; font-size: 20px; font-weight: bold; } P { color: blue; font-size: 12px; } tiedosto esim.html: <HTML> <HEAD> <TITLE>Moi maailma</title> <LINK REL="stylesheet" TYPE="text/css" HREF="esim.css"> </HEAD> <BODY> <H1>Esimerkki</H1> <P><IMG SRC="kuva.gif">Dokumenttien kirjoittaminen on oikeastaan aika helppoa.</p> </BODY> </HTML> HYPERMEDIAN PERUSTEET (syksy 2002) 208

3 Dokumentit, tiedon "mallintaminen" ja "esittäminen" Karkeasti sanottuna: dokumentti on väline tiedon esittämiselle. "Dokumentti" ("käsitteellinen kokonaisuus") voi "teknisesti" tosin olla esitettynä useassa tiedostossa, tietokannassa tai jopa tietokoneohjelman "sisällä" tulostusohjeina "Tieto"-käsitteen hankaluuteen ei tässä yhteydessä ole syytä syvällisemmin puuttua - tiedon akseli: tietämys - tieto - informaatio - data - kohina - klassinen näkemys ~ tieto on tosi perusteltu uskomus (tämä näkemys on yleisesti liian rajoittava [mitkä asiat "oikeasti" ovat tosia?]) - käytännöllinen näkemys ~ tieto on tavalla tai toisella merkityksellistä informaatiota (tässä taas ei oteta kantaa "totuuteen", vaan yhteys käyttöön) Tiedon esittäminen perustuu johonkin tiedon esitysmuotoon ollen sidoksissa tietyn kuvausmenetelmän käyttöön Tiedon kuvausmenetelmiä on olemassa lukuisia erilaisia ja eritasoisia, esim. - käsitekartat, semanttiset verkot, predikaattilogiikka, formaalit teoriat, ERdiagrammit, UML-kaaviot, HTML, XML, CSS, XSL, MathML, SMIL, HYPERMEDIAN PERUSTEET (syksy 2002) 209

4 Kuvausmenetelmä valitaan sen perusteella, mistä tiedon piirteistä ollaan kiinnostuneita ja mitä tiedolla halutaan tehdä Erilaisten kuvausmenetelmien välillä voidaan löytää seuraavat ääripäät: - tiedon kuvaaminen tai "jäsentäminen" asiasisällön itsensä näkökulmasta ~ tiedon käsitteellinen rakenne ([content]) - tiedon kuvaaminen tai "koodaaminen" asiasisällön esittämisen näkökulmasta ~ tiedon esitysrakenne ([presentation]) Esimerkki: kakkureseptin rakenteen kuvailu - taso 1: käsiterakenteen termeihin ja relaatioihin liittyvien sopimusten esittäminen - taso 2: tiedon tiedostoksi koodaamiseen (elementtien rakenne ja sisältö) liittyvien sopimusten esittäminen - tämän lisäksi sama "asia" voidaan vielä "kertoa välillisesti" jonkin yleisen tekstin esitysrakenteen puitteissa (esim. muunnoksen tuloksena) Sisällön ymmärtävän lukijan näkökulmasta em. kolme tapaa voivat hyvinkin välittää "saman tiedon", mutta esim. tietokoneiden näkökulmasta tiedon eri esitysrakenteet ovat hyvinkin erilaisia HYPERMEDIAN PERUSTEET (syksy 2002) 210

5 Esimerkki kakkureseptin erityyppisistä esitysmuodoista "idea" "tiedon jäsentäminen" Kakkuresepti? kakkuresepti on resepti osa ainekset "TIETO IHMISEN MIELESSÄ" osa valmistusohje "tiedon mallintaminen" "tiedon esittäminen tai tiedosta kertominen" resepti ainesosa työvaihe #PCDATA #PCDATA resepti otsikko luku #PCDATA kplotsikko #PCDATA kpl #PCDATA "TIETO TIETOKONEESSA" "luettavissa oleva dokumentti" HYPERMEDIAN PERUSTEET (syksy 2002) 211

6 Esimerkki: matemaattisen kaavan x + a / b kuvailu MathML-merkkauskielellä: tapa 1: käsitteellinen merkkaus ([content]): <apply><plus/> <ci> x </ci> <apply><times/> <ci> a </ci> <apply><power/> <ci> b </ci> <cn> -1 </cn> </apply> </apply> </apply> tapa 2: esittämiseen liittyvä merkkaus ([presentation]): <mrow> <mi> x </mi> <mo> + </mo> <mrow> <mi> a </mi> <mo> / </mo> <mi> b </mi> </mrow> </mrow> HYPERMEDIAN PERUSTEET (syksy 2002) 212

7 Tieto ja metatieto Tieto-käsitteeseen liittyy läheisesti metatiedon käsite. Metatiedolla tarkoitetaan tietoa tiedosta Tieto ja metatieto ovat suhteellisia, informaation käytöstä riippuvia käsitteitä Tietojenkäsittelyssä metatiedolla tarkoitetaan annetun tieto-objektin tietyn kiinteän mallin mukaista kuvausta (vrt. kirjastokortti) kirja lomake kirjastokortti Metatietoa on kärjistetysti kahdenlaista: tiedon semanttiseen kuvailuun & luokitteluun liittyvää metatietoa (esim. "tämä on kirje") ja tiedon esitysrakenteeseen liittyvää rakenteellista metatietoa (tämän dokumentin rakenneosia ovat "otsikko, leipäteksti ja kuva") HYPERMEDIAN PERUSTEET (syksy 2002) 213

8 Dokumentteihin sisältyy useantyyppistä tietoa Dokumentteihin liittyy oikeastaan siis aina useita eritasoisia ja -tyyppisiä koodauksia, esim. - sisällön koodaus (suomen kielen sanojen kirjoittaminen ASCII-merkkeinä, kuvien esittäminen bittikarttoina tai vektorigrafiikkana) - rakenteen koodaus (elementtien alku- ja lopputagit HTML:n mukaisesti) - ulkoasun koodaus (esim. elementtien ulkoasun määrittäminen CSSformatointiominaisuuksien mukaisesti) - toiminnallisuuden koodaus (esim. linkin seuraaminen, skriptit, ) joihin puolestaan saattaa sisältyä omia koodauksia, rakenteita & yms. sopimuksia, joista ei "dokumentin yhteydessä" välttämättä erikseen mainita (esim. suomen kielen kielioppi & dokumenttiin sisältyvien objektien koodaus, HTML-kielioppi, kuvien pakkaus, skriptien syntaksi, jne.) Tietokoneiden myötä dokumentteihin voi siis liittyä myös toiminnallisuutta (esim. linkin seuraaminen, animaatiot & dokumenttiin upotettavat ohjelmat) HYPERMEDIAN PERUSTEET (syksy 2002) 214

9 Tiedon kuvaaminen tekstimuodossa (tietokoneet) Erityyppiset tiedon esitystavat voidaan yleensä palauttaa tekstimuotoon Esimerkki: kakkureseptin käsitteellisen rakenteen palauttaminen logiikkaan part-of(ainekset,resepti) part-of(valmistusohje,resepti) is-a(kakkuresepti,resepti) Esimerkki: reseptin tiedon esitysrakenteen palauttaminen XML-säännöiksi: <!ELEMENT resepti <!ATTLIST resepti nimi <!ELEMENT aineosa <!ELEMENT työvaihe (aineosa+, työvaihe+)> CDATA #IMPLIED> (#PCDATA)> (#PCDATA)> Sääntöjä noudattava dokumentti voisi olla esim. seuraavanlainen <resepti nimi="suklaakakku"> <aineosa>jauhoja 3 desiä</aineosa> <aineosa>loput aineet</aineosa> <työvaihe>sekoita osat keskenään</työvaihe> <työvaihe>paista uunissa 200 asteen lämmössä</työvaihe> </resepti> HYPERMEDIAN PERUSTEET (syksy 2002) 215

10 Käytännön suunnittelussa eri näkökulmien tulisi tukea toisiaan - aluksi tietoa analysoidaan & jäsennetään, jotta tiedettäisiin "mistä on kyse" - tämän jälkeen tieto mallinnetaan käytännöllisten tietorakenteiden muodossa, jotta tiedettäisiin "mitä tietoa sovelluksessa esitetään ja miten?" - lopuksi näistä tietorakenteista voidaan sitten rakentaa erilaisia esityksiä ("minkälainen hyperdokumentti asiasta kertomiseen tai asian näyttämiseen tarvitaan?") Eli aluksi mietitään mitä halutaan esittää, sitten suunnitellaan minkälaisten tietorakenteiden varaan tieto rakentuu ja lopuksi valitaan missä muodossa asiat (lukijalle) esitetään Huom!: jos tiedon X esitysrakenne valitaan sen perusteella, miten asiasisältö esitettäisiin esim. HTML-sivuna, esitysvaiheessa "hukataan" (abstraktia) tietoa: - kirjoittaja saattaa (ainakin kirjoitusvaiheessa) "ymmärtää" tai "muistaa" mistä oli kyse, mutta myöhemmin dokumenttia lukiessa "idea" on rivien välissä; konkreettisena pulmana tiedon koneellisen käsittelyn hankaloituminen - ratkaisu: tiedon esittämiseen käytetään "riittävän rikkaita" kuvausmenetelmiä (esim. XML-pohjaisia sanastoja joista tieto kuvataan HTML-muotoon tarvittaessa) HYPERMEDIAN PERUSTEET (syksy 2002) 216

11 Automaattisen tietojenkäsittelyn idea Koska tietokoneet eivät ymmärrä koodatun datan merkitystä, pitää tiedon esitystapa valita käytössä olevien käsittelymenetelmien ehdoilla Keskeinen idea on ATK:n tuominen osaksi informaation käsittelyprosessia pelkän informaation tallettamisen sijaan (tästä on puhuttu ennenkin ) ohjelmallinen käsittely siirrettävyys keskitetty ylläpito sovellukset ja käyttö informaatio, tieto ja näkemykset esittäminen tiedon sähköinen esitystapa salaus varmennettavuus pakkaus Tavoite: tietokone = (10 4 FIM maksava) muistilehtiö & lipasto tietokone = tiedon hallintajärjestelmä Keskeinen virhe on luulla, että tieto on (yleisesti) käyttökelpoisessa muodossa "kunhan se vain jotenkin saadaan tietokoneelle koodattua" (tavoitteet?!) HYPERMEDIAN PERUSTEET (syksy 2002) 217

12 Tiedon esitysrakenteista: hierarkkiset rakenteet Tiedon intuitiivisista esitysrakenteista tärkeimpiä ovat kurssilla jo aikaisemmin esitellyiksi tulleet graafit ja puut Juurelliset puut ovat havainnollisuutensa ansiosta erityisen käyttökelpoisia pienten hierarkkisten dokumenttirakenteiden esittämisessä (esim. HTML) Esimerkki: Yksinkertaisen HTML-dokumentin eri osat voidaan kätevästi jäsentää dokumentin rakennepuun (eli jäsennyspuun) avulla seuraavasti: HTML HEAD BODY TITLE Esimerkki BGCOLOR="white" H1 Johdanto P Tämä on tyypillinen HTML-dokumentti HYPERMEDIAN PERUSTEET (syksy 2002) 218

13 Sama dokumentti näyttää HTML-koodattuna esim. seuraavalta: <HTML> <HEAD> <TITLE>Esimerkki</TITLE> </HEAD> <BODY BGCOLOR="white"> <H1>Johdanto</H1> <P>Tämä on tyypillinen HTML-dokumentti</P> </BODY> </HTML> Paitsi analysoida ja jäsentää annettuja dokumentteja, merkattujen puurakenteiden avulla voidaan intuitiivisesti myös määritellä dokumenttiluokkia Esimerkki: Seuraava ELM-puudiagrammi määrittelee yksinkertaisen dokumenttiluokan geneerisen elementtirakenteen (XML DTD yhteensopivasti) RESEPTI AINES + * OHJE #PCDATA #PCDATA HYPERMEDIAN PERUSTEET (syksy 2002) 219

14 Vastaava (vaikeampilukuinen?) XML dokumentin tyyppimääritys olisi muotoa <!ELEMENT RESEPTI <!ELEMENT AINES <!ELEMENT OHJE (AINES+, OHJE*)> (#PCDATA)> (#PCDATA)> On syytä huomata, että "sama asiasisältö" voidaan esittää useita erilaisia dokumenttirakenteita käyttämällä Esimerkki: Kotisivuilta löytyvä asia voidaan kertoa HTML-dokumenttina siten, että käytetään monipuolisesti eri HTML-elementtejä (esim. H1, H2, P & ADDRESS) tai siten, että sama asia kuvataan sanallisesti yhden ainoan P- elementin sisällä Dokumentin rakenteisuuden mitta on dokumenttiin koodattujen rakenneelementtien runsaus eli granulariteetti - suuri granulariteetti eli "pienet rakeet" ~ rikas rakenne - pieni granulariteetti eli "suuret rakeet" ~ yksinkertainen (köyhä) rakenne Jos dokumentin rakenne on valittu systemaattisesti, sisällön merkitystä kuvaillen, parantuvat mahdollisuudet tiedonkäsittelyn automatisointiin tiedon "arvo" kasvaa (suurta tietomäärää voidaan "hallita pienellä käsityön määrällä") HYPERMEDIAN PERUSTEET (syksy 2002) 220

15 Hierarkiat ja virrat Kaikki tiedon "luontevat" esitysmuodot eivät aina ole luonteeltaan hierarkkisia (joskin kaikki tieto voidaan ilmeisesti kuvata myös hierarkkisina rakenteina) Virta on jono tietoalkioita (merkkejä) ja kontrollialkioita (kontrollimerkkejä, ohjausmerkkejä tai tapahtumia) Virrassa tieto esitetään siis "pötkössä", jonka seassa on ohjaustietoa Esimerkki: Tyypillisiä virtoja ovat esim. ääninäytteet ja videoleikkeet Virtojen kontrollimerkkejä ei siis tulkita elementtien lohko tms. -merkeiksi, koska koko elementin käsitettä ei (välttämättä) ole Esimerkki: Myös ohjelmointikielestä C tuttu merkkijonojen käsittely tapahtuu virtojen muodossa printf("tulosta minut\r\nkahdelle riville!"); Tietoa käsitellään virtojen muodossa lähinnä silloin kun - rakenne "ei kiinnosta", ts. tiedolla ei (sovelluksen näkökulmasta) ole tarpeellista rakennetta HYPERMEDIAN PERUSTEET (syksy 2002) 221

16 - tietoa saadaan haltuun vähän kerrallaan, mutta se on käsiteltävä heti - tiedon rakenteen merkitseminen on kohtuuttoman hankalaa Kun hierarkkiset ja virtamaiset tietorakenteet yhdistetään, puhutaan ns. komposiittirakenteista - hierarkkiset rakenteet "virran vietävänä" ja päinvastoin Käytännössä useat dokumenttirakenteet ovat itse asiassa komposiittirakenteita, vaikka niistä puhutaankin hierarkkisina - "rakenteisissa dokumenteissa" toimitaan tyypillisesti siten, että dokumentin elementtien perusrakenne on puumainen (hierarkkinen) ja lehtielementtien sisältötekstin rakenne on tulkinnaltaan virtamainen (esim. HTMLstandardissa elementin BR käyttö) - vrt. CSS-tyylin display-ominaisuudet block and inline HYPERMEDIAN PERUSTEET (syksy 2002) 222

17 Hypertekstin rakenne Hypertekstin idea on erittäin yleinen (yksinkertainen); hyperteksti on solmuista rakentuva suunnattu graafi, jonka sisällä käyttäjä navigoi linkkejä seuraamalla Hypertekstin "teorian" kehittäminen (ja sovellusten systemaattinen rikastaminen) edellyttää ilmeisesti hypertekstin määrittelemistä tätä täsmällisempänä rakennelmana - luonnollinen (moderni) kehityssuunta on hypertekstin solmujen tarkastelu rakenteisina dokumentteina (á la HTML) Hypertekstin (teknisenä) perustana ovat tällöin nimetyt tai viitattavissa olevat dokumenttirakenteet (eksplisiittisesti tai implisiittisesti nimetyt elementit) - viitattavissa olevat dokumentit muodostavat hyperavaruuden, jossa hyperdokumentin solmurakenne voidaan valita; viittaaminen solmuihin tapahtuu näiden resurssinimien perusteella (esim. URI) - solmujen (dokumenttien) sisäiset viittaukset perustuvat taas johonkin dokumentin osien nimeämis- ja viittauskäytäntöön (esim. nimetty elementti HTML-kielessä tai sijainti DOM-puussa) HYPERMEDIAN PERUSTEET (syksy 2002) 223

18 WWW-hyperteksti Perusrakenne on dokumentti- ja elementtirakenteiden varaan rakentuva (esim. assosiatiivinen) linkitysrakenne jonka ytimenä ovat WWW-resurssit Linkkien kohteina ovat WWW-resurssit (dokumentit tai dokumenttien osat) HYPERMEDIAN PERUSTEET (syksy 2002) 224

19 Seuraavassa hypertekstin perusominaisuuksia peilataan seuraavassa kolmen "erilaisen" hypertekstijärjestelmän näkökulmasta: HTML:n, Dexterin ja XLinkin. Vain HTML-linkitys käsitellään (on käsitelty) kurssilla täsmällisesti - on kuitenkin hyvä tietää "muustakin". Kiinnostuneille löytyy verkosta lisätietoa, ks. - HTML (ks. ) - Dexter Hypertext Reference Model (ks. ) - XLink (ks. ) Hypertekstin verkkomainen rakenne toteutetaan hyperlinkkien avulla ( ) - yksisuuntaiset linkit (esim. HTML A-elementti) - kaksisuuntaiset linkit (Dexter & XLink) - monensuuntaiset linkit (Dexter & XLink) Linkin alkupistettä kutsutaan linkin lähdeankkuriksi ja loppupistettä linkin kohdeankkuriksi (joskus molempia kutsutaan lyhyesti vain ankkureiksi tai lähteiksi ja kohteiksi, vastaavasti) HYPERMEDIAN PERUSTEET (syksy 2002) 225

20 Hyperlinkkien mekanismeista Toteutuksesta riippuen hypertekstin linkit esitetään eri tavoin ( ) - Dexter mallintaa linkin omana komponentteinaan joihin viittaukset koodataan lähde- ja kohdedokumentteihin (monensuuntaisia linkkejä) - HTML-koodaa linkit kiinteästi lähdedokumenttiin (vain yhdensuuntaisia linkkejä) kaksisuuntaiset linkit - XML-standardiperheen linkitys tarjoaa em. mahdollisuudet, sekä lisäksi mahdollisuuden assosioida dokumenttiin linkkejä (sekä lähde- että kohdeankkureita) ilman että linkit näkyvät ko. dokumenttien koodauksessa millään tavalla (!) Hyperlinkin avulla voidaan (rakenteisessa dokumentissa) periaatteessa viitata ( ) - dokumenttiin kokonaisuudessaan, - dokumentissa löytyvään elementtiin - dokumentista löytyvään pistemäiseen tunnisteeseen (esim. nimettyyn ankkuriin tai tekstisolmuun) HYPERMEDIAN PERUSTEET (syksy 2002) 226

21 Viittaaminen elementtiin voidaan suorittaa - elementin nimen perusteella 8 Tiedostot, dokumentit, tieto (&h-media) - elementin sijainnin perusteella (asema dokumentin jäsennyspuussa) - elementin attribuuttien perusteella - elementin sisältämän merkkidatan (tekstin) perusteella - elementin muun sisällön perusteella (esim. lapsielementtien) Hyperlinkkiviittausten keskeisiä ongelmia ovat: - resurssien löytyminen ja saatavuus (miten kohdesolmut nimetään & miten saadaan tieto näiden olemassaolosta) - viittaamiskäytännön raskaus (esim. viittaukset tekstisisällön perusteella saattavat olla laskennallisesti raskaita) - linkkien ylläpito (rikkoutuvatko linkit jos resursseja liikutellaan tai uudelleenjärjestellään?) HYPERMEDIAN PERUSTEET (syksy 2002) 227

22 Linkkien saatavuuteen liittyvien pulmien ratkaisumenetelmä vaihtelee vastaavasti: - HTML- ja XML-linkkien kohdeankkurit pitää "jostain vain" tietää (esim. arvata & kokeilla) - Dexter-sovelluksen kaikki mahdolliset linkit voidaan täsmällisesti etsiä & luetteloida universaalin hakufunktion avulla (koska linkit ovat komponentteja) Linkkiviittausten raskauteen liittyviä ratkaisuja: - HTML-linkit eivät sisällä hakumahdollisuutta, joten HTML-linkit ovat teknisesti kevyt toteuttaa (hakujen teknisiä toteutusmahdollisuuksia käsitellään tuonnempana formaalien kielten esittelyn yhteydessä) - Dexter-linkit voivat sisältää koko hyperavaruuden kaikkien komponenttien sisäisiä hakuja, mikä saattaa tarkoittaa erittäin raskasta prosessointia linkin kohteen selvittämiseksi - XML-linkit sisältävät hakumahdollisuuden, mutta vain yhden (XML-) resurssin sisällä; linkin kohteen selvittämisen raskaus riippuu dokumenttien koosta HYPERMEDIAN PERUSTEET (syksy 2002) 228

23 Linkkien eheyteen liittyviin ongelmiin eri järjestelmät ottavat kantaa eri tavoin: - HTML-linkit voivat mennä reilusti rikki, kun taas Dexter-linkit ovat aina ehjiä - XML-linkit voivat mennä rikki (samaan tapaan kuin HTML-linkitkin), mutta linkkien eheyden ylläpitoa voidaan helpottaa ns. ulkoisten linkkien ylläpidon suunnittelulla (näin toimivat erityisesti ns. linkkikannat ([linkbase])) - WWW:hen tosin puuhataan mekanismia, joka nimeäisi linkkejä (vähän Dexterin tapaan, ks. URN / ) WWW-hypertekstissä on hyvä huomata esim. linkkien eheyteen liittyvä suhteellisuus WWW:n mekanismien ja yksittäisten selainohjelmien toiminnan välillä; voitaisiinhan hyvin esim. määritellä (!), että kaikki A-elementillä merkatut WWW-linkit ovat aina ehjiä ja että selainten toimintaan kuulu olla näyttämättä rikkoutuneita linkkejä (tällöin selaimen esim. validoisi kaikki dokumentin linkit juuri ennen niiden näyttämistä - tavallaan kuvat käsitellään juuri näin!) Oletuksen mukaisesti hypertekstin linkit ovat assosiatiivisia. Linkkejä voidaan kuitenkin tarkastella yleisinä (muinakin kuin binäärisinä) relaatioina ja tarkastella sen mukaisesti (tällöin ongelman saattaa muodostaa "sopivan" käyttöliittymämetaforan suunnittelu & toteuttaminen) - esitieto, osa-, ryhmä-, jne. relaatiot HYPERMEDIAN PERUSTEET (syksy 2002) 229

24 Hyperlinkkien toiminnallisuus On syytä huomata, että hyperlinkeille voidaan periaatteessa asettaa myös toiminnalliseen semantiikkaan liittyviä "epästandardeja" määrityksiä Esimerkki: XLink-spesifikaation hyperlinkeiltä löytyy attribuutti actuate, arvot: - onload (linkki ladataan välittömästi - toiminnan järkevyys selviää kohta) - onrequest (perinteinen "odotetaan kunnes käyttäjä klikkaa, tms.") - other (selain päättää käyttäytymisen) Linkin seuraamistapahtuma voidaan periaatteessa valita mielivaltaisesti Esimerkki: XLink-spesifikaation määrittelemillä hyperlinkeillä voi olla attribuutti show, joka voi saada arvot - new (linkin kohde-elementti(!) avataan uudessa käyttöliittymätason ikkunassa) - replace (selain korvaa koko nykyisen dokumentin linkin osoittamalla kohdeelementillä) HYPERMEDIAN PERUSTEET (syksy 2002) 230

25 - embed (se elementti, johon linkki viittaa, upotetaan linkkiviittauksen kohtaan siten, että se elementti, joka toimii linkkinä(!), korvataan linkin kohdeelementillä) - other (selain päättää käyttäytymisen) Huomaa, että osa edellisistä voidaan osin toteuttaa HTML-linkkien avulla (ainakin skriptikielellä terästettynä). Edelleen on syytä huomata, että selain voisi periaatteessa tehdä mitä tahansa muutakin (tosin "mikä tahansa" ei käyttäjän odotuksien näkökulmasta ole sovelluksissa järkevää) Vastaavasti voidaan luokitella myös solmuja (luokittelusta voi edelleen seurata esim. "perittävyyteen" liittyviä piirteitä hypertekstin tulkintaan, vrt. hypertekstin visualisointia käsittelevä prujun osa) Rakenteisiin dokumentteihin liittyvälle ("modernille") hypertekstille voidaan siis esittää (jo edellä esitelty) luonnehdinta - rakenteisen hypermedian perustan muodostaa nimetyistä dokumenteista koostuva hyperavaruus; jokaisen hyperavaruuden dokumentin sisäinen rakenne on hierarkkinen, mikä tarjoaa perustan elementteihin viittaamiseen - hyperlinkit ovat tämän dokumenttiperheen ja dokumenttien elementtienvälisiä relaatioita (teknisesti itsekin dokumentteja tai näiden elementtejä) HYPERMEDIAN PERUSTEET (syksy 2002) 231

26 Dokumenttirakenteiden määrittely (Rakenteisten) dokumenttien ja tietorakenteiden käytön yhteydessä (hypermediaan liittyviä) keskeisiä kysymyksiä ovat: - miten tietorakenne se-ja-se on määritelty? Ts., millaisia "kaikki" sovelluksen oikeantyyppiset tietorakenteen ovat? - kuinka dokumentista voidaan valita ankkurin kohteita dokumentin rakenneelementtien nimiä tai (yksityiskohtaisia rakenteitakaan) tuntematta? Rakenteisten dokumenttien, esim. HTML-merkkauksella merkityn tekstitiedoston tapauksessa samantyyppinen kysymys on: miten todella tiedämme, että esim. dokumentti <title>esimerkki</title> <h1>kappaleotsikko</h1> <p>tämä kappale on oikein muodostettu</p> on "oikein muodostettu", mutta seuraava dokumentti ei ole? <title>esimerkki</title> <h1>kappaleotsikko<p></h1> Tämä kappale on oikein muodostettu</p> HYPERMEDIAN PERUSTEET (syksy 2002) 232

27 Vastaus piilee tavassa, jolla tietorakenne (dokumenttirakenne) määritellään; määrittelyn on oltava luonteeltaan sellainen, että se tarjoaa täsmällisen kuvauksen (tai mallin) kaikista "sallitunmuotoisista" tietorakenteista Edellä eräs tällainen kuvaustapa on edellä esitetty elm-puudiagrammi, joka täsmällisesti luonnehti kaikkia RESEPTI-tyyppisiä rakenteisia dokumentteja: DOKUMENTIN TYYPPIMÄÄRITTELY DOKUMENTTILUOKAN KÄSITE RESEPTI + * AINES OHJE #PCDATA #PCDATA Tietokoneet eivät kuitenkaan operoi kuvilla, vaan merkkijonoilla (eikä em. puudiagrammien avulla ole mahdollista määritellä kaikkia tietorakenteita) Yleisessä tapauksessa, kun halutaan täsmällisesti luonnehtia tai poimia tietorakenteita viittausten avulla, tietorakenteet assosioidaan merkkijonoiksi joiden rakenteen käsittely tietokoneilla on tehokasta (ja johon löytyy valmiiksi määritelmiä ja tuloksia) Tällöin viime kädessä päädytään (formaalisten) kielten käsitteisiin; idea on, että määriteltävän tietorakenteen "malli" vastaa kielen määrittelyä ja mallin mukaiset tietorakenteet vastaavat kielen yksittäisiä sanoja HYPERMEDIAN PERUSTEET (syksy 2002) 233

28 Formaalisista kielistä Pyrittäessä syntaktisesti yksikäsitteisiin kieliin päädytään ns. formaalisten kielten (formaalien kielten) käsitteisiin; tavoitteena on tällöin lähinnä (objektikieleen liittyvän) kielenkäytön ja päättelyn täsmentäminen Koska kielet ovat sanojen joukkoja, käytetään kielille tuttuja joukko-opin merkintöjä ja operaatioita (sisältyminen, yhdiste, leikkaus, komplementti jne.) Kieliin liittyviä peruskäsitteitä: aakkosto (merkistö), sana, tyhjä sana λ, kielioppi Äärellisen kielen ilmoittaminen onnistuu aina periaatteessa kielen sanat luettelemalla - äärettömille kielille tämä ei ilmeisestikään onnistu Esimerkki: eräs kieli aakkostossa Σ={a,b,c} on joukko L={a, ab, aaab, bab, ba} Äärettömän formaalisen kielen L ilmoittaminen voidaan tehdä usein eri tavoin (oleellisesti ominaisuusmääreiden tai tuottolausekkeiden avulla): - esim. säännöllisen lausekkeen avulla (jos L säännöllinen) - yleisessä tapauksessa kielen ilmoittaminen on usein tarkoituksenmukaista tehdä kielen sanat tuottavan kieliopin avulla HYPERMEDIAN PERUSTEET (syksy 2002) 234

29 Säännölliset kielet ja säännölliset lausekkeet Tärkeä formaalisten kielten erikoistapaus ovat ns. säännölliset kielet Säännöllisen kielen määrittely tehdään ns. säännöllisen lausekkeen avulla (voidaan toki tehdä myös muuten, esim. kieliopin tai automaatin avulla) Säännöllisiä lausekkeita rakennetaan seuraavasti: 1. λ on Σ :n säännöllinen lauseke. 2. Jokainen merkki σ Σ on Σ :n säännöllinen lauseke. 3. Jos R ja S ovat Σ :n säännöllisiä lausekkeita, niin niitä ovat myös (R S), (RS) ja (R)*. Esimerkki: Säännöllisiä lausekkeita merkistössä {1,2,3,4,5} ovat esim. λ, 1, 4, 123, , 1*, (123)*, (12 34), (4* (12 34)) Merkintöjä sievennetään (kuten edellisessä esimerkissä tehtiin) sopimalla operaattoreiden sitovuus: *, katenaatio ja, ellei suluilla "()" toisin määrätä HYPERMEDIAN PERUSTEET (syksy 2002) 235

30 Säännöllisten lausekkeiden avulla määritellään säännöllisiä kieliä. Tyydytään seuraavassa luonnehtimaan säännöllisen lausekkeiden R i määräämiä kieliä L(R i ) esimerkkien varassa (voitaisiin tehdä myös täsmällisesti) Esimerkki: Valitaan merkistö Σ={a,b,c}. Olkoon R 0 = a, tällöin L(R 0 ) = {a} Olkoon R 1 = ba*, tällöin L(R 1 ) = {b,ba,baa,baaa, } = {ba n n=0,1,2,3, } Olkoon R 2 = (ba)*, tällöin L(R 2 ) = {λ,ba,baba,baba,bababa, } = {(ab) n n=0,1,2,3, } Olkoon R 3 = (a b), tällöin L(R 3 ) = {a,b} Olkoon R 4 = (a b c)*c, tällöin L(R 4 ) = {kaikki merkeistä Σ muodostettavissa olevat sanat, joiden viimeinen merkki on c} HYPERMEDIAN PERUSTEET (syksy 2002) 236

31 Olkoon R 5 = (a b c)*, tällöin L(R 5 ) = {kaikki merkeistä Σ muodostettavissa olevat sanat (myös tyhjä sana)} merkitään merkistön Σ kaikkien sanojen joukkoa symbolilla W(Σ) On olemassa myös kieliä, jotka eivät ole säännöllisiä (esim. kieli L={ a n b n n = 0,1,2,3, } ei ole säännöllinen - se voidaan tosin varsin helposti määritellä yleisen kieliopin avulla) Säännölliset lausekkeet ovat keskeisiä tietojenkäsittelyssä, koska niiden avulla voidaan helposti paitsi määrittää, myös poimia joukosta merkkijonoja annetun säännön mukaisia merkkijonoja (tai "sovittaa" [match])). Säännöllisten lausekkeiden syntaksi tosin vaihtelee järjestelmissä (Perl-regexp yleistymässä) Esimerkki: Komentokieleen perustuvassa käyttöliittymässä halutaan listata aktiivisen hakemiston kaikki tiedostot, jotka alkavat merkkijonolla "com" DOS: UNIX: dir com* ls com* Edellä esitettyjen säännöllisten lausekkeiden syntaksin mukaan com* vastaa säännöllistä lauseketta com(kaikki sallitut merkit yhdistettynä :lla)*, missä "sallitut" merkit on valittu sopivasti tiedostojärjestelmän mukaisesti HYPERMEDIAN PERUSTEET (syksy 2002) 237

32 Esimerkki: Määritellään päivämäärämerkinnän (suurin piirtein) oikea rakenne merkistössä {1,2,3,4,5,6,7,8,9,0,-} Valitaan A = {1,2,3}, N = ( ) ja asetetaan R = (N AN)-(N (10) (11) (12))-NNNN Tällöin kieli L(R) sisältää kaikki "suurin piirtein" oikean muotoiset päivämääriä kuvaavat merkkijonot esim , , mukana on tosin myös (semanttisesti) ilmeisen virheellisiä ("mielettömiä") merkkijonoja, esim , , jne. (Miten määritystä voisi parantaa?) Edellinen esimerkki esittelee luontevan tavan merkintöjen sieventämiseen merkkiluokkien käsitteen avulla - käytännölliset säännöllisiä lausekkeita hyödyntävät järjestelmät esittelevät useita hyödyllisiä merkkiluokkia (esim. Perlissä "numerot" \d, "sana-merkit" \w, "tyhjämerkit" \s, jne.) Säänn.lausekk. syntaksia on eri sovelluksissa standardoitu (ohjelmointikielistä löytyy omat notaationsa, suurin "globaali" standardi [Perlin ohella] lienee POSIXin sisältä löytyvä säännöllisten lausekkeiden syntaksimäärittely) HYPERMEDIAN PERUSTEET (syksy 2002) 238

33 Esimerkki: Perl-esimerkkejä säännöllisten lausekkeiden käytöstä etsi/korvaa - tehtävissä KUN $a = "kissa kalasti kissakalan"; TULOSTUS print "$a\n"; $a =~ s/kissa/koira/; KOIRA kalasti kissakalan $a =~ s/kissa/koira/g; KOIRA kalasti KOIRAkalan $a =~ s/[^ks\s]/_/g; k_ss_ k s k_ss_k Esimerkki: Perl-esimerkkejä säännöllisten lausekkeiden käytöstä osamerkkijonojen etsimisessä KUN $a = "kissa kalasti kissakalan"; if ($a =~ /(kissa)/) { print "$1\n"; } if ($a =~ /(k...a)/) { print "$1\n"; } if ($a =~ /(k.*a)/) { print "$1\n"; } if ($a =~ /(k[^\s]*a)/) { print "$1\n"; } if ($a =~ /\s(.*)\s/) { print "$1\n"; } if ($a =~ /\s(\w*)/) { print "$1\n"; } TULOSTUS kissa kissa kissa kalasti kissakala kissa kalasti kalasti Yleisemmällä tasolla säännöllisillä lausekkeilla voidaan viitata tai valita myös kokonaisten dokumenttien osia (esim. linkkiviittauksissa) HYPERMEDIAN PERUSTEET (syksy 2002) 239

34 Säännöllisten lausekkeiden hyödyt tietojenkäsittelyssä perustuvat siis kykyyn määrittää viittauksia säännöllisen lausekkeen "mallin mukaisiin" objekteihin Rakenteisten (hyper)dokumenttien yhteydessä säännöllisillä lausekkeilla on lisäksi oma erityinen merkityksensä: säännöllisten lausekkeiden avulla (yhdessä rakenteisen dokumentin käsitteistön kanssa) voidaan viitata esim. dokumentin rakenne-elementteihin ja elementtijoukkoihin ja luoda näin hyperlinkkejä ilman viitattavien solmujen nimiä tms. Esimerkki: XML-hyperlinkkien taustalla oleva XLink-spesifikaatio tarjoaa XPathspesifikaation (huh?) avulla keinon rakenteisen dokumentin osiin viittamiseen esim. seuraavasti (mainittakoon, että Xlink otettaneen käyttöön tulevaisuudessa myös XHTML-kielen yhteydessä jo nyt käytössä esim. XSLT:ssä) Notaatio child::* valitsee kaikki kontekstisolmun lapsielementit Notaatio child::text() attribute::* valitsee kaikki kontekstisolmun lapsitekstisolmut tai attribuutit Notaatio descendant::para valitsee kaikki kontekstisolmun para-tyyppiset jälkeläiset (elementit) XML-linkkien olemusta ei tässä yhteydessä kannata syvällisemmin murehtia; oleellista on ymmärtää, että säänn. lausekkeilla voidaan rakentaa myös hyperlinkkien osumakohtia (ts. valita rakenteisen dokumentin osia) HYPERMEDIAN PERUSTEET (syksy 2002) 240

35 9 Monimutkaiset hyperdokumentit 9 Monimutkaiset hyperdokumentit Kuten kirjakin, myös hyperdokumentti voi olla tylsä, mielenkiintoinen, yksinkertainen tai monimutkainen, kirjan sisällöstä, rakenteesta, kirjoitustyylistä ja ulkoasusta riippuen Hyperdokumenttien konkreettisen epälineaarisen rakenteen ja koko lähestymistavan "uutuuden" ansiosta monimutkaisuus nousee kuitenkin nyt tarkastelussa korostettuun asemaan Hypermedian monimutkaisuuteen vaikuttavat useat tekijät, joista osalle ei löydy suoraa analogista vastinetta "kirjojen maailmasta" (tosin "kirjastojen maailmasta" saattaa jo löytyäkin). Hyvän hypermedian tekemisen edellytyksiä ovat ilmeisestikin hypermedian lukuprosessin perusteiden ymmärtäminen Tietokoneiden tuoma tuki voi olla passiivista (esim. kartat) tai aktiivista (esim. linkkien "tilan" esittäminen tai jopa käyttäjämallinnus) HYPERMEDIAN PERUSTEET (syksy 2002) 241

36 9 Monimutkaiset hyperdokumentit Kirjan lukuprosessi vs. hypermedian lukuprosessi Hypermediaan liittyviä pulmia helpottaa luku- ja kirjoitusprosessien perusteiden ymmärtäminen (Sekventiaalisen) tekstin kirjoitusprosessi: 1) tutkimustyö ja suunnittelu, ideointi 2) sisällön jäsentäminen tekstimuotoiseksi, sen rakenteistaminen ja hallinta 3) kirjoittaminen (tekstin tuottaminen) ja lukuprosessi (edelliselle käänteinen): 1) lukeminen (tekstin tunnistaminen) 2) tekstin jäsentäminen ja tekstielementtien merkityksen tunnistaminen 3) sisällön tulkitseminen ja ymmärtäminen Lukeminen on helppoa, koska: tuttu tapa välittää tietoa, kirjan hallitseminen kokonaisuutena on helppoa (fyysinen objekti) ja sekventiaalisen tekstin kirjoittamista harjoitellaan paljon HYPERMEDIAN PERUSTEET (syksy 2002) 242

37 9 Monimutkaiset hyperdokumentit Sekventiaalisen tekstin lukeminen on erikoistapaus epälineaarisen tekstin tai hypertekstin lukemisesta (ongelmia: lukemisen alku- ja loppukohdan löytäminen, työmuistin kuormitus, aineiston koon hahmottaminen, oman "sijainnin" hahmottaminen) Hypertekstin lukemisessa korostuu lukustrategian merkitys (ääripäät: ylhäältä alas vs. alhaalta ylös) Hypermedian lukuprosessi pelkistettynä 1) alkukohdan löytäminen (esim. haulla) 2) sivun (solmun) silmäileminen & lukeminen 3) linkin valinta, jne. Laajojen hyperdokumenttien lukeminen on yleensä aina yhdistelmä hakuja ja linkin seuraamista (itse asiassa hypertekstiä voidaan pitää hakuihin perustuvan tietokannan käyttöliittymämetaforana, vrt. Dexter) HYPERMEDIAN PERUSTEET (syksy 2002) 243

38 9 Monimutkaiset hyperdokumentit Hypermedian monimutkaisuuden syyt Monimutkaisuuden syyt liittyvät paljolti ihmisen muistin ja ymmärryksen rajoittuneisuuteen Puhekielessä monimutkaisuus tai kompleksisuus ovat suhteellisia käsitteitä; hyperdokumenttien tapauksessa monimutkaisuudesta voidaan puhua kolmesta näkökulmasta 1) sisällön laajuuden näkökulmasta 2) solmujen geneeristen rakenteiden monimutkaisuuden näkökulmasta 3) hyperdokumenttien "teknisen lukemisen" hankaluuden (kokonaisuutena) näkökulmasta. Ensimmäinen näkökulma liittyy siis siihen, "miten paljon tietoa esitetään ja mitä (sisällöllisiä) esitietoja tämä vaatii", toinen siihen "miten erilaisten elementtien ja hypertekstirakenteiden varaan tiedon esittäminen perustuu" ja kolmas siihen "miten hankalaa esim. selaimen käyttö on" HYPERMEDIAN PERUSTEET (syksy 2002) 244

39 9 Monimutkaiset hyperdokumentit Ongelmia aiheuttavat yleensä käytännössä (asian "sisällöllisen vaikeuden" ohella): 1) hypertekstin (graafin) suuri koko 2) solmujen sisäisen rakenteen monimutkaisuus 3) hypertekstijärjestelmän käyttöliittymän ongelmat Ensimmäisiin ongelmiin syynä ovat yleensä: - aineiston ja kohdeyleisön puutteellinen rajaaminen ("tästäkin joku saattaa olla kiinnostunut") - sisällön rakenteistaminen yksinomaan esim. teknisistä lähtökohdista käsin ("hei, käytetäänkin X-formaattia suoraan dokumenttimallina") - aineistoon ja käyttäjille soveltumaton käyttöliittymämetafora ("mikä ihmeen metafora? - mehän tarvitsemme vain ikkunoita ja nappuloita!") HYPERMEDIAN PERUSTEET (syksy 2002) 245

40 9 Monimutkaiset hyperdokumentit Navigoinnin apuvälineitä Kun hypermedian lukemisen pulmat tiedostetaan, löydetään joihinkin niistä lääkkeitä, paitsi hyvän suunnittelun, myös erilaisten navigoinnin apuvälineiden avulla Tyypillisten navigoinnin apuvälineiden perusperiaate on vähentää muistin kuormitusta (vrt. HCI: recall recognition) Kartta ( ) Historialista, kirjanmerkki ja jälki ( ) Maamerkki ( ) Visuaalinen polku ( ) Kalansilmänäyttö ( ) Hämähäkki ( ) Menetelmien yhteiskäyttö on usein toimivin ratkaisu (vrt. WWW-selaimet) HYPERMEDIAN PERUSTEET (syksy 2002) 246

41 9 Monimutkaiset hyperdokumentit Kartta (map, overview diagram) Kuten termi navigointi jo itsessään vihjaa, navigointia helpottaa kartta Piirteitä (abstrakteja tai konkreettisia, tapauksesta riippuen) - kartta on todellisuuden pelkistetty (ja supistettu!) esitystapa - yleiskartta auttaa hahmottamaan kokonaisuuksia ja luo mielikuvan siitä kuinka laaja hyperteksti kokonaisuudessaan on - (lähi)aluekartta kertoo kontekstin ja esittää mitä mielenkiintoista "lähiympäristöstä" löytyy Tyypillinen käyttötapa: "roam & zoom" (yleiskartassa etsitään mistä karkeasti ottaen ollaan kiinnostuneita ja sitten zoomataan tästä lähialuekarttaan, sitten takaisin ylätasolle jne.) Kartta on yleiskäsite; dynaaminen kartan voi käytännössä toimia esim. kalansilmänäytön tekniikalla Selkeästi jäsennetty hypertekstin pääkohdat esittävä linkkisivu (teknisesti pelkkää tekstiä) voi hyvin toimia myös karttana HYPERMEDIAN PERUSTEET (syksy 2002) 247

42 9 Monimutkaiset hyperdokumentit Kartan termeistä Maamerkki on navigoinnin osa (esim. linkki) joka auttaa jäsentämään "missä hypertekstissä" ollaan. Maamerkki voi esim. tarjota oikopolun tutulle pääsivulle, josta käsin tutkimusmatkailu voidaan taas aloittaa Etusivu, jonne pääsee kaikilta muilta sivuilta (maamerkki) Muistiinpano Tässä kohtaa on virhe! Navigointihistorian jälki (henkilökohtainen) Historialista kertoo missä kaikkialla hypertekstissä on vierailtu, jälki on historialistan erikoistapaus joka kertoo mitä "viime aikoina" on tehty. Eräs tapa jälkien jättämiseen ovat muistiinpanojen tekeminen ja mielenkiintoisten solmujen myöhempää lukemista varten merkkaaminen kirjanmerkeillä HYPERMEDIAN PERUSTEET (syksy 2002) 248

43 9 Monimutkaiset hyperdokumentit Kalansilmä ja hämähäkki Kalansilmänäyttö on (dynaaminen) karttanäkymä joka korostaa kartan lähialueita esim. kertomalla näistä enemmän; vrt. kalansilmälinssi valokuvaamisessa (myös kalansilmänäyttö voi olla täysin tekstipohjainen) Hämähäkiksi kutsutaan näyttöä joka esittää valitun hypertekstisolmun linkitysrakennetta suhteessa "lähialueen" muihin solmuihin Esipuhe Johdanto Hyperteksti peruskäsitteet navigointi linkin seuraaminen peruuttaminen navigoinnin apuvälineet dynaaminen kontrolli ylikuormitus sovelluksia Multimedia Viittaukset Valitusta lähialueesta "enemmän" kertova kalansilmänäyttö Lähialueen linkeistä kertova hämähäkki Tekstisisällön osana kalansilmänäyttöä kutsutaan toisinaan nim. "stretch-text" HYPERMEDIAN PERUSTEET (syksy 2002) 249

44 9 Monimutkaiset hyperdokumentit Navigoinnin apuvälineiden luokittelukriteerejä: - linkin valitsemista helpottavat toiminnot - rakenteiden hahmottamista helpottavat toiminnot - työhistorian tai dokumentin sisällön hahmottamista helpottavat toiminnot Lisää menetelmien luokitteluperusteita: - teksti- tai grafiikkapohjaiset menetelmät - dynaamiset tai staattiset menetelmiin - käsiteavaruuden rakennetta vääristävät tai sen säilyttävät menetelmät Navigoinnin apuvälineet perustuvat esitettävän informaation tarkoituksenmukaiseen vähentämiseen tai pelkistämiseen Vaikka teknisesti ei välttämättä olisikaan lainkaan vaikeaa, esim. tiivistää koko hyperdokumentin rakennetta ruudulla esitettävän pikkuruisen ja tihruisen kartan muotoon, ei tästä välttämättä ole sisällöllisesti mitään hyötyä! Perusidea on kyky esittää käyttäjälle suuresta tietomäärästä kompaktisti juuri se olennainen, tarjoten siten helpotusta hyperdokumenttien lukemiseen HYPERMEDIAN PERUSTEET (syksy 2002) 250

45 9 Monimutkaiset hyperdokumentit Adaptiivinen hypermedia Samaan tapaan kuin esim. navigointia helpottava kalansilmänäyttö muuttuu navigoinnin myötä, myös varsinainen asiasisältö voidaan (periaatteessa) mukauttaa käyttäjän tarpeiden mukaisesti Adaptiivisella hypermedialla tarkoitetaan tilannetta jossa esim. - hypertekstin linkkejä piilotetaan tai näytetään käyttäjän navigointihistorian/navigointistrategian/toiveiden mukaisesti - solmuihin lisätään osia tai niitä piilotetaan - hypertekstiin luodaan dynaamisesti uusia karttoja (tms. näkymiä) - myös osa sisällöstä generoidaan dynaamisesti, jne. Käyttäjälle (lukijalle) välitettävän informaation tarkoituksenmukainen määrä on mitä ilmeisimmin käyttäjäkohtaista niinpä mielekäs aktiivinen adaptiivisuus edellyttää jotain tietoa käyttäjästä. Tiedon keruumekanismeja: - suorat kysymykset (Mitä haluat tehdä/nähdä? Mitä osaat?) - epäsuora päättely (esim. päättely navigointihistorian/tehtävien perusteella) HYPERMEDIAN PERUSTEET (syksy 2002) 251

46 9 Monimutkaiset hyperdokumentit Adaptiivisuuden tekn. toteutus tarvitsee taustalle käyttäjästä kertovan tietorakenteen eli käyttäjämallin ja mekanismin hypertekstin mukauttamiseen Rikas hypertekstirakenne Käyttäjämalli Käyttäjälle esitettävä hyperteksti Perusratkaisu (koska helppo toteuttaa!) käyttäjämallinnukseen on ns. overlaymallien käyttö (hypertekstin graafiin merkitään informaatiota käyttäjästä, esim. tietääkö esitiedot/milloin lukenut/ymmärsikö/mitä haluaisi tietää/jne.) HYPERMEDIAN PERUSTEET (syksy 2002) 252

47 9 Monimutkaiset hyperdokumentit "Yleensä" adaptiivisuus toteutetaan siten, että - toteutetaan yksi "maksimaalisen rikas" hyperteksti - mallinnetaan käyttäjiä suhteessa tähän (esim. rikkaan semanttisen verkon avulla overlay-periaatteella [verkon rakenne ~ hypertekstin rakenne]) - alustetaan käyttäjämalli stereotyyppien noviisi/peruskäyttäjä/ekspertti avulla esim. lyhyen alkukyselyn tms. perusteella; päivitetään käytön myötä - linkkejä ja solmujen yksityiskohtia (adapt. elementit) näytetään adaptiivisesti - epäsuora päättely tehdään käyttäjän lokitietojen perusteella; vaikeasti pääteltävät asiat kysytään suoraan käyttäjiltä epäsuoran päättelyn sijaan - adaptiivisuuden päähuomio on näkymien ja karttojen adaptiivisuudella Sisällön "todellinen" adaptiivisuus edellyttää astetta järeämpien tekoälytekniikoiden tapauskohtaista käyttöä (esim. tietämyskantoja, joista tietoa "kuvataan" hypermediasovellukseen) näissä taas törmätään tekoälytieteiden ongelmiin (tiedon esittäminen, kontekstin tunnistaminen, jne.) Toteutus vaatii sovelluskohtaisia ratkaisuja & ohjelmointia, ts. valmiita, yleisesti käytössä olevia alustoja ei prototyyppisovelluksia (esim. ELM ART, ks. lukuun ottamatta juuri ole HYPERMEDIAN PERUSTEET (syksy 2002) 253

48 10 Kohti seittiohjelmointia 10 Kohti seittiohjelmointia Kurssin lopuksi tarkastelemme "oikean" WWW-ohjelmoinnin perusteita. Tarkoituksena ei ole vankan WWW-ohjelmoinnin oppiminen, vaan lähinnä eri ratkaisumallien esittely jotta ohjelmoinnin perusperiaatteet tulisivat läpikäydyiksi ( näkemys ja tulevien opintojen perusta). WWW-ohjelmointia voi TTKK:lla yksityiskohtaisemmin opiskella esim. Seittiohjelmointi-kurssilla. Dynaamisen, käyttäjät tunnistavan tai helposti ylläpidettävän WWWhypermedian tekeminen edellyttää ohjelmointityötä. WWW:n asiakas-palvelin -mallista johtuen WWW-ohjelmointi suuntautuu kahteen erityyppisen ohjelmointiympäristöön - asiakas: WWW-selaimet (selaimen skriptiohjelmointi; esim. JavaScript, applettien ohjelmointi; käytännössä Javalla, komponenttiohjelmointi; esim. ActiveX-kehittimellä, plug-in-ohjelmointi; esim. C++:lla) - palvelin: WWW-palvelimet (CGI-ohjelmointi, Java-ohjelmointi; esim. Servletit, erilaisiin WWW-moduuleihin perustuva ohjelmointi, esim. PHP, yleinen palvelinohjelmointi, esim. Java/C/Python/Perl-kieliset palvelinohjelmat) HYPERMEDIAN PERUSTEET (syksy 2002) 254

49 10 Kohti seittiohjelmointia Ohjelmoinnin perusperiaatteet purevat tietenkin kaikkialla (suunnittelun ja dokumentoinnin merkitys, ohjelmien jako moduuleihin tai luokkiin, kehitysympäristön std-luokkien & rajapintojen käytön opettelu, jne.) Eri menetelmät vaativat kuitenkin erityistä erityisosaamistaan. Esimerkiksi WWW-selainohjelmien erot sekä selainten jatkuva kehitystyö yhdistettynä heikkoon dokumentaation on tehnyt asiakaspään ohjelmoinnista käytännössä työlästä (eri selainten/selainversioiden erityispiirteet pitää tietää kohtuutarkkaan) Erikoisia pulma aiheuttavat selainten päivityksistä aiheutuvat muutokset (se mikä toimii tänään ei ehkä toimikaan huomenna!) Nyrkkisääntö on kutakuinkin se, että asiakaspään ohjelmointi painottuu käyttöliittymäohjelmointiin ja tietoliikenteen asiakasohjelmointiin, palvelinpään ohjelmointi puolestaan prosessinhallintaan ja esim. tietokantojen käyttöön. WWW-ohjelmoinnin peruspiirteitä - asiakkaiden ohjelmistot ja verkkoyhteys vaihtelevat (selaimet, nopeus) - samanaikaisia asiakkaita voi olla useita (käyttäjien tunnistaminen, tiedon lukitseminen, rinnakkainen prosessointi, käyttöliittymässä tapaht. muutokset) - Internet on avoin ja laaja järjestelmä (tietoturvakysymykset, kansainvälisyys) - taustalla tiiviit kytkennät Internet- & WWW-spesifikaatioihin ja ohjelmistoihin HYPERMEDIAN PERUSTEET (syksy 2002) 255

50 10 Kohti seittiohjelmointia HTML-lomakkeet ja CGI-ohjelmointi Luonteva tapa aloittaa ohjelmointi on keksiä käyttöä HTML-lomakkeille. Eräs tapa on käyttää palvelimen Common Gateway Interface -toteutusta (CGI) Esimerkki: minilaskin joka laskee yhteen kokonaislukuja <title>minilaskin CGI/PERL</title> <form action=" method="get"> <input type="text" name="lukua"> + <input type="text" name="lukub"><br> <input type="submit" value="laske"> <input type="reset" value="tyhjennä"> </form> Toiminta: selain lukee input-kenttien arvot talteen ja submit-napin painalluksella lähettää koodatut tiedot count.pl-nimiselle (URL) ohjelmalle palvelimella HYPERMEDIAN PERUSTEET (syksy 2002) 256

51 10 Kohti seittiohjelmointia Palvelimella (HTTP-palvelimen cgi-ajo-oikeuksin varustettu) ohjelma count.cgi käynnistetään pyynnön johdosta ja se vastaanottaa koodatut tiedot (GET~ympäristömuuttuja/POST~stdin) #! /usr/bin/perl # HTTP-otsikko jotta stdout välittyy selaimelle oikein # voisi olla myös esim. text/plain tai image/gif printf "Content-type:text/html\n"; printf "\n"; printf "<title>cgi-ohjelman vastaus</title>\n"; # Kirjoitetaan näkyville asiakkaasta saatavia tietoja # (HTTP-palvelin kerää tiedot) printf $ENV{'REMOTE_HOST'}."<br>"; printf $ENV{'REMOTE_ADDR'}."<br>"; printf "[".$ENV{'QUERY_STRING'}."]<br>"; # Luetaan koodatut numerot (oletetaan syötteen muoto oikeaksi), # lasketaan ja tulostetaan vastaus (URL:ssa + erottelee parametrit, # % koodaa erikoismerkit heksoina) $ENV{'QUERY_STRING'} =~ /(\d+)[^\d]+(\d+)/; $v = $1 + $2; printf "<b>yhteenlaskun vastaus on ".$v."</b>"; HYPERMEDIAN PERUSTEET (syksy 2002) 257

52 10 Kohti seittiohjelmointia Ohjelma "tekee jotain" ja tulostaa stdouttiin tekstiä joka lähetetään takaisin asiakkaalle Esimerkki: Ajo koneelta pc.tut.fi ( ) syötteillä 3 ja 6 tuottaa tuloksen: pc.tut.fi [lukua=3&lukub=6] Yhteenlaskun vastaus on 9 Huomioita: - CGI-ohjelma on kirjoitettu Perl-ohjelmointikielellä (ts. CGI ei ole ohjelmointikieli vaan rajapinta) - CGI-ohjelman tuloste on HTML-tekstiä - ohjelman ajo tehtiin "kertakutsuna"; ts. "syöte-ajo-tuloste" - lomakkeen tiedot koodattiin GET-metodissa URI-kutsuun mukaan ( - lomakkeen tietojen dekoodaaminen on tarpeen (tähän on std-ratkaisuja) - jos Perl-skriptin koodirivi $v = $1 + $2; olisi kirjoitettu muodossa $v = eval($1 + $2); olisi ohjelmassa selvä tietoturva-aukko HYPERMEDIAN PERUSTEET (syksy 2002) 258

53 10 Kohti seittiohjelmointia HTML-lomakkeiden ohjelmointi JavaScriptillä Vastaava laskuohjelma voidaan toteuttaa myös asiakaspäässä esim. JavaScriptillä seuraavasti : <title>minilaskin JS</title> <script language="javascript"> <!-- function laske(a,b) { return 1.0*a+1.0*b; } --> </script> <form> <input type="text" name="lukua"> + <input type="text" name="lukub"> = <input type="text" name="ans"><br> <input type="button" value="laske" onclick="ans.value=laske(lukua.value,lukub.value);"> <input type="reset" value="tyhjennä"> </form> "CGI-toteutukset toimivat käytännössä varmemmin kuin JS-toteutukset" HYPERMEDIAN PERUSTEET (syksy 2002) 259

54 10 Kohti seittiohjelmointia HTML4:n lomake-elementit HTML 4 -lomakkeet voivat sisältää seuraavantyyppisiä elementtejä ( ) - erilaisia nappuloita (myös omalla grafiikalla) - checkboxeja - radiobuttoneita - menuja (monivalintakenttiä) - tekstin syöttökenttiä (yksi- tai monirivisiä, myös password-syöttökenttä) - piilotettuja kontrolleja (esim. muuttujien taltioimiseen HTTP on tilaton protokolla) - objekti-elementin avulla osoitettavia kontrolleja - tiedoston valintanappulan (toteuttaa myös valintadialogin tiedoston uploadtoimintoa varten) - lomakkeen kentät tyhjentävän reset-nappulan Lomakkeiden käyttäminen vaatii aina ohjelmointia ("HTML:n ulkopuolella") HYPERMEDIAN PERUSTEET (syksy 2002) 260

55 10 Kohti seittiohjelmointia XHTML ja lomakkeet XHTML sisältää käytännössä kaikki HTML4:n lomake-elementit Suositus XHTML:n sanaston modularisoinnista nostaa seuraavat lomakeelementit keskeiseen asemaan (ts. ne sisältyvät Basic Forms Moduleen): - form - input ( text password checkbox radio submit reset hidden ) - label - select - option - textarea Erityisesti pois "marginaalisina" elementteinä jäävät esim. - input (image) - button (omaa grafiikkaa sis. nappulat), HYPERMEDIAN PERUSTEET (syksy 2002) 261

56 10 Kohti seittiohjelmointia PHP Pienten (joskus myös suurten) WWW-ohjelmien kirjoittaminen on toisinaan kätevintä seuraavalla idealla: - HTML-sivuun ("lähdekoodiin") upotetaan elementinomainen prosessointiohje joka sisältää WWW-palvelinpäässä suoritettavan ohjelman tai skriptin - kun WWW-asiakas (selain) pyytää sivua, WWW-palvelin suorittaa skriptit ja sijoittaa näiden tulostaman tekstin osaksi HTML-dokumenttia joka sitten lähetetään asiakkaalle (jos tuloksena on HTML-sivu näkyy se selaimessa ongelmitta) - jos ja kun skriptillä on "sivuvaikutuksia" esim. tiedostojen kirjoittaminen, tietokannan käsittely jne., palvelin hoitaa myös ne pyynnön yhteydessä (tai välittää ohjelmat sopiville moduuleille edelleen suoritettaviksi) - tehtävästä huolehtiva WWW-palvelin (tai sen moduuli) voi jäsentää myös tietoliikenteessä liikkuvaa tietoa helposti käsiteltävään muotoon ja esim. piilottaa tilattoman HTTP-yhteysmuodon rajoituksia (tarjoamalla esim. mekanismin session tallettamiseen [esim. pipareiden avulla]) jne. Eräs tällainen (suosittu, ilmainen) ns. template-kieli on PHP HYPERMEDIAN PERUSTEET (syksy 2002) 262

57 10 Kohti seittiohjelmointia PHP:n käyttö PHP voidaan ottaa käyttöön esim. Apache-WWW-palvelinohjelman moduulina (asentaminen riippuu käyttöjärjestelmästä NT/Unix/Linux) PHP:n syntaksi muistuttaa suuresti Perliä (ja siten osin C:tä ja siten Javaa) Ohjelmointikielen perusrakenteiden ohella PHP:n (4) voima on sen sisältämien funktioiden määrä, esim. - tuttu syntaksi & säännönmukaiset lausekkeet - "riisuttu" olio-ohjelmointi - tiedostojenkäsittely - sessionhallinta, "matalan tason" soketti-ohjelmointi - eri tietokantojen käsittely SQL-kielellä - dynaamiset kuvat, jne. Parasta on se, että asiakaspään ei tarvitse tietää PHP:stä mitään Perus-PHP:n päälle on myös rakennettu sovelluskohtaisia template-alustoja HYPERMEDIAN PERUSTEET (syksy 2002) 263

58 10 Kohti seittiohjelmointia Esimerkki Toteutetaan taas minilaskin-lomake joka laskee kokonaisluvut yhteen: <title>minilaskin JS</title> <?php $v=$lukua+$lukub;?> <form action="<?php print $PHP_SELF;?>" method="get"> <input type="text" name="lukua" value="<?php print $lukua;?>"> + <input type="text" name="lukub" value="<?php print $lukub;?>"> = <input type="text" name="ans" value="<?php print $v;?>"><br> <input type="submit" value="laske"> <input type="reset" value="tyhjennä"> </form> Huomioita: - lomakkeen action-kentässä viittaus itseensä ($PHP_SELF) - yo. koodi ei ole HTML:ää, mutta prosessoinnin tulos on - muuttujien käsittely! (PHP dekoodaa lomakkeen muuttujat automaattisesti) HYPERMEDIAN PERUSTEET (syksy 2002) 264

59 10 Kohti seittiohjelmointia Esimerkki tiedostojen käsittelystä Toteutetaan astetta monimutkaisempi PHP-ohjelma joka tulostaa attribuuttina annetun tiedoston <title>tiedoston tulostaminen</title> <h1>pfile</h1> <p>työhakemistosta löytyvät seuraavat tiedostot:</p> <pre> <?php system('ls -al');?> </pre> <p>kirjoita tulostettavan tiedoston nimi:</p> <form action="<?php print $PHP_SELF;?>" method="get"> <input type="text" name="fn" value="<?php print $fn;?>"> <input type="submit" value="tulosta"> </form> <?php if (preg_match("/[^\w\.\-]/",$fn,$arr)) { print "Virhe tiedoston nimessä: hakemistoviittaukset tms. eivät ole sallittuja!"; exit; } HYPERMEDIAN PERUSTEET (syksy 2002) 265

60 10 Kohti seittiohjelmointia if (!file_exists($fn)) { print "Virhe: tiedostoa $fn ei löydy!"; exit; } print "<p>tulostus:</p><pre>\n"; $fp = fopen($fn,"r"); while(! feof($fp)) { $s = fgets($fp, 1024); $s = preg_replace("/\</","<",$s); print $s; } fclose($fp); print "</pre>\n";?> Huomioita: - lauserakenteet - tiedostonkäsittely, system-funktion käyttö, - PHP-funktioiden nimeämiskäytäntö (ei paketteja tms.) HYPERMEDIAN PERUSTEET (syksy 2002) 266

61 10 Kohti seittiohjelmointia Java Java on C/C++-tyyppinen olio-ohjelmointikieli joka soveltuu hyvin WWWohjelmointiin - kansainvälisyyden huomiointi (Unicode, lokaalit: käyttöliittymäelementtien tekstit, tekstin suunta, päivämäärät yms.) - suoraviivaiset välineet Internet-ohjelmointiin ja ohjelmien hajauttamiseen, rajapintoja tietokantojen käyttöön, tietoturvamallit yms. - aito olio-ohjelmointi (oikea perintä & kapselointi, paketit, rajapinnat) - laaja ja hyvin dokumentoitu luokkakirjasto, runsaasti rajapintatoteutuksia - yleisesti käytössä (applet-tuki tulevaisuudessa pulmallinen? [selainsodat]) Java-ohjelmat käännetään tavukoodiksi jota suoritetaan Java-virtuaalikoneessa (valmis tavukoodi siirtyy alustalta toiselle) Runsaasti ilmaisia työkaluja & ohjelmointioppaita saatavilla Useita eri versioita (läh. 1.0 / 1.1 / 1.2=Java 2 / + laajennuksia [Swing]) HYPERMEDIAN PERUSTEET (syksy 2002) 267

62 10 Kohti seittiohjelmointia Pavut (beans) tuovat mahdollisuuden kirjoittaa Java-ohjelmia esim. ikkunapohjaisen IDE-ympäristön tukemana ilman tietoa sovellusten yksityiskohdista (a la VB/Delphi); yleensä Java-ohjelmat kuitenkin kirjoitetaan tekstimuodossa ja käännetään skriptin avulla Gnu-makella tms. (pienet itse käsin) WWW-ohjelmoinnin näkökulmasta Javalla tehdään kolmenlaisia ohjelmistoja - sovellukset (täysverinen Java-ohjelma) - sovelmat eli appletit (selaimessa tms. rajoitetun oikeuksin ajettava ohjelma) - servletit (CGI-tyyppisesti palvelinpäässä ajettavia Java-ohjelmia) Kaikki Java-ohjelmat "kirjoitetaan samalla tavalla" olio-ohjelmoinnin perusfilosofian mukaisesti Java-ohjelman "tyyppi" määräytyy sen luokan mukaan, josta oma ohjelma peritään - sovellus voidaan periaatteessa kirjoittaa ilman perintää (tällöin piilotettu oletusperintä Object-luokasta) - perus-sovelma peritään Applet-luokasta - perus-servletti peritään HttpServlet-luokasta Jokainen ohjelmatyyppi tietenkin toteuttaa luokkansa edellyttämät metodit (ja rajapinnat) HYPERMEDIAN PERUSTEET (syksy 2002) 268

63 10 Kohti seittiohjelmointia Esimerkki: Java-sovelma Kirjoitetaan minimalistinen Java-applet (Java 1.1) joka laskee kaksi lukua yhteen ja näyttää vastauksen Java-ohjelma on varsin lyhyt (huom!: vaatii toimiakseen virtuaalikoneen & kirjastot ajettuna vaatii enemmän tilaa kuin tavukoodin 1.5 kb!): import java.awt.*; import java.awt.event.*; import java.applet.*; public class calc extends Applet { TextField ta,tb,tc; Button b; public void init() { HYPERMEDIAN PERUSTEET (syksy 2002) 269

13 Tiedostot, dokumentit, tieto (&h-media)

13 Tiedostot, dokumentit, tieto (&h-media) 13 Tiedostot, dokumentit, tieto (&h-media) Tietokoneet käsittelevät tietoa tiedostojen muodossa Tietokoneiden yhteydessä dokumentilla tarkoitetaan tiedosto(je)n avulla esitettävää asiakokonaisuutta, joka

Lisätiedot

10 Tiedostot, dokumentit, tieto (&h-media)

10 Tiedostot, dokumentit, tieto (&h-media) 10 Tiedostot, dokumentit, tieto (&h-media) Tietokoneet käsittelevät tietoa tiedostojen muodossa Tietokoneiden yhteydessä dokumentilla tarkoitetaan tiedosto(je)n avulla esitettävää asiakokonaisuutta, joka

Lisätiedot

13 Tiedostot, dokumentit, tieto (&h-media)

13 Tiedostot, dokumentit, tieto (&h-media) 13 Tiedostot, dokumentit, tieto (&h-media) Esimerkki: HTML-dokumentti Tietokoneet käsittelevät tietoa tiedostojen muodossa Tietokoneiden yhteydessä dokumentilla tarkoitetaan tiedosto(je)n avulla esitettävää

Lisätiedot

käyttäjän tai tietoa käsittelevät ohjelmiston näkökulmasta Jokaiseen dokumenttiin liittyy

käyttäjän tai tietoa käsittelevät ohjelmiston näkökulmasta Jokaiseen dokumenttiin liittyy 7LHGRVWRWGRNXPHQWLWWLHWR KPHGLD Tietokoneet käsittelevät tietoa WLHGRVWRMHQmuodossa Tietokoneiden yhteydessä GRNXPHQWLOODWDUNRLWHWDDQWLHGRVWRMHQDYXOOD HVLWHWWlYllDVLDNRNRQDLVXXWWD, joka jäsennetään kokonaisuudeksi

Lisätiedot

12 Kohti seittiohjelmointia

12 Kohti seittiohjelmointia 12 Kohti seittiohjelmointia Seuraavaksi tarkastelemme aidon WWW-ohjelmoinnin perusteita. Tarkoituksena ei ole vankan WWW-ohjelmoinnin oppiminen, vaan lähinnä eri ratkaisumallien esittely, jotta ohjelmoinnin

Lisätiedot

12 Johdanto seittiohjelmointiin

12 Johdanto seittiohjelmointiin 12 Johdanto seittiohjelmointiin Seuraavaksi tarkastelemme aidon WWW-ohjelmoinnin perusteita. Tarkoituksena ei ole vankan WWW-ohjelmoinnin oppiminen, vaan lähinnä eri ratkaisumallien esittely, jotta ohjelmoinnin

Lisätiedot

12 Johdanto seittiohjelmointiin

12 Johdanto seittiohjelmointiin Seuraavaksi tarkastelemme aidon WWW-ohjelmoinnin perusteita. Tarkoituksena ei ole vankan WWW-ohjelmoinnin oppiminen, vaan lähinnä eri ratkaisumallien esittely, jotta ohjelmoinnin perusperiaatteet tulisivat

Lisätiedot

5 Hypertekstin rakenne ja navigointi

5 Hypertekstin rakenne ja navigointi 5 Hypertekstin rakenne ja navigointi Laajennetaan näkökulmaa WWW:stä yleisen hypertekstin suuntaan. Hypermediasta ja hypertekstistä puhuttaessa on hyvä huomata, että samoja termejä käytetään eritasoisista

Lisätiedot

9 Kohti seittiohjelmointia

9 Kohti seittiohjelmointia 9 Kohti seittiohjelmointia Seuraavaksi tarkastelemme "oikean" WWW-ohjelmoinnin perusteita. Tarkoituksena ei ole vankan WWW-ohjelmoinnin oppiminen, vaan lähinnä eri ratkaisumallien esittely jotta ohjelmoinnin

Lisätiedot

6 Hypertekstin rakenne ja navigointi

6 Hypertekstin rakenne ja navigointi 6 Hypertekstin rakenne ja navigointi 6 Hypertekstin rakenne ja navigointi Laajennetaan näkökulmaa WWW:stä yleisen hypertekstin suuntaan. Hypermediasta ja hypertekstistä puhuttaessa on hyvä huomata, että

Lisätiedot

12 Kohti seittiohjelmointia

12 Kohti seittiohjelmointia 12 Kohti seittiohjelmointia Seuraavaksi tarkastelemme aidon WWW-ohjelmoinnin perusteita. Tarkoituksena ei ole vankan WWW-ohjelmoinnin oppiminen, vaan lähinnä eri ratkaisumallien esittely, jotta ohjelmoinnin

Lisätiedot

Johdatus rakenteisiin dokumentteihin

Johdatus rakenteisiin dokumentteihin -RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista

Lisätiedot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi

Lisätiedot

3 Verkkosaavutettavuuden tekniset perusteet

3 Verkkosaavutettavuuden tekniset perusteet 3 Verkkosaavutettavuuden tekniset perusteet Saavutettavuuden toteuttaminen edellyttää lähtökohtaisesti tietoa laitteista ja sovelluksista, käyttäjistä ja käyttötavoista, sekä tekniikasta. Tekniikasta on

Lisätiedot

Taustaa. CGI-ohjelmointi

Taustaa. CGI-ohjelmointi Taustaa CGI-ohjelmointi CGI = Common Gateway Interface Hyvin yksinkertainen ja helppo tapa toteuttaa dynaamisuutta ja interaktivisuutta htmldokumentteihin Kehitetty tiedon siirtoon palvelimen ja asiakasselaimen

Lisätiedot

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1 Digitaalisen median tekniikat xhtml - jatkuu 30.4.2004 Harri Laine 1 XHTML lomakkeet Lomakkeet mahdollistavat tiedon välityksen asiakkaalta (selaimesta) tiedon vastaanottajalle Vastaanottaja voi olla sähköpostiosoite

Lisätiedot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta. 3 HTML ja XHTML Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Lisätiedot

Digitaalisen median tekniikat xhtml - jatkuu

Digitaalisen median tekniikat xhtml - jatkuu Digitaalisen median tekniikat xhtml - jatkuu 26.3.2004 Harri Laine 1 Lomakkeet mahdollistavat tiedon välityksen asiakkaalta (selaimesta) tiedon vastaanottajalle Vastaanottaja voi olla sähköpostiosoite

Lisätiedot

ARVO - verkkomateriaalien arviointiin

ARVO - verkkomateriaalien arviointiin ARVO - verkkomateriaalien arviointiin Arvioitava kohde: Jenni Rikala: Aloittavan yrityksen suunnittelu, Arvioija: Heli Viinikainen, Arviointipäivämäärä: 12.3.2010 Osa-alue 1/8: Informaation esitystapa

Lisätiedot

ARVO - verkkomateriaalien arviointiin

ARVO - verkkomateriaalien arviointiin ARVO - verkkomateriaalien arviointiin Arvioitava kohde: Jenni Rikala: Aloittavan yrityksen suunnittelu, Arvioija: Heli Viinikainen, Arviointipäivämäärä: 12.3.2010 Osa-alue 8/8: Esteettömyys Edellinen osa-alue

Lisätiedot

9 Hypermediajärjestelmistä

9 Hypermediajärjestelmistä 9 Hypermediajärjestelmistä Lyhyt vilkaisu järjestelmätason hypermediaan. Hypermediasovellukseen liittyy aina kaksi näkökulmaa: lukijan ja laatijan näkökulma Hypertekstijärjestelmä (hypermediajärjestelmä)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

8. Kieliopit ja kielet

8. Kieliopit ja kielet 8. Kieliopit ja kielet Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää siipiään" on kieliopillisesti

Lisätiedot

Digitaalisen median tekniikat xhtml - jatkuu

Digitaalisen median tekniikat xhtml - jatkuu Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1 Kehykset IFRAME - elementti (inline frame) mahdollistaa kehysten upottamisen myös muihin kuin frameset.dtd:n mukaisiin dokumentteihin IFRAME toimii

Lisätiedot

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

Lisätiedot

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Luento 12: XML ja metatieto

Luento 12: XML ja metatieto Luento 12: XML ja metatieto AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XML ja metatieto Metatieto rakenne sanasto Resource Description Framework graafikuvaus XML Semanttinen Web agentit 2 1 Metatieto

Lisätiedot

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys WWW-OHJELMOINTI 1 WWW-ohjelmoinnin kokonaisuus SGML, XML, HTML WWW-selaimen sovellusohjelmointi WWW-palvelimen sovellusohjelmointi Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 26.10.2000

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML

Digitaalisen median tekniikat. JSP ja XML Digitaalisen median tekniikat JSP ja 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1 Digitaalisen median tekniikat JSP ja XML 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

XML johdanto, uusimmat standardit ja kehitys

XML johdanto, uusimmat standardit ja kehitys johdanto, uusimmat standardit ja kehitys Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: on W3C:n suosittama

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely. XML prosessointi Miten XML dokumentteja luetaan ja kirjoitetaan XML prosessori lukee ja välittää XML dokumentin sovellukselle. Se sisältää entieettikäsittelijän (mahdollisesti) XML jäsentimen Sovellus

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Teemana aikajanat Polku versio 0.2

Teemana aikajanat Polku versio 0.2 Teemana aikajanat Polku versio 0.2 UTA VT Polku-projekti Tekijä: J.M. Jokiniemi Tulostettu: Jakelu: Uteam, Polku Dokumentin tila: lopullinen versio Muokattu: 5.11.09 VERSIOHISTORIA Versio Päiväys Tekijät

Lisätiedot

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto Semanttinen Web Ossi Nykänen ossi.nykanen@tut.fi Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto Esitelmä "Semanttinen Web" Sisältö Konteksti: W3C, Web-teknologiat

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä.

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä. Lomakkeet Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä. Lomakkeen tyylit kannattaa määritellä omaan, eriliseen,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos. Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke

Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos. Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke Rakenteisuus kahdella tasolla Oppimisaihiot ( Learning Objects

Lisätiedot

Ohjelmointi 1 / syksy /20: IDE

Ohjelmointi 1 / syksy /20: IDE Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. tammikuuta 2012 Sisällys Sisällys Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4

Lisätiedot

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö)

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö) Tiedonlouhinta rakenteisista dokumenteista (seminaarityö) Miika Nurminen (minurmin@jyu.fi) Jyväskylän yliopisto Tietotekniikan laitos Kalvot ja seminaarityö verkossa: http://users.jyu.fi/~minurmin/gradusem/

Lisätiedot

SUOMEN KUNTALIITTO RY

SUOMEN KUNTALIITTO RY Karttaliittymä Versio: 18.10.2011 Julkaistu: 27.10.2011 Voimassaoloaika: Toistaiseksi Sisällys 1 Johdanto... 2 1.1 Suosituksen tausta... 2 1.2 Suosituksen rakenne... 2 2 Soveltamisala... 2 3 Lyhenteet...

Lisätiedot

10 Nykyaikainen WWW-arkkitehtuuri

10 Nykyaikainen WWW-arkkitehtuuri 10 Nykyaikainen WWW-arkkitehtuuri è è è 10 Nykyaikainen WWW-arkkitehtuuri WWW on ylivoimaisesti suosituin hypertekstijärjestelmä. Käydään seuraavaksi läpi nykyaikaisen WWW-arkkitehtuurin perusteet. Vuonna

Lisätiedot

17/20: Keittokirja IV

17/20: Keittokirja IV Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10 Tavoitteita

Lisätiedot

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002 , XHTML ja CSS T-111.361 Hypermediadokumentin laatiminen 2002 XHTML CSS XSL Sisältö EXtensible Markup Language W3C Recommendation helmikuu 1998 SGML:n osajoukko Standard Generalized Markup Language Kevyempi

Lisätiedot

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009 Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate

Lisätiedot

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Semanttinen Web Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: Semanttinen Web (SW) on

Lisätiedot

Code Camp for Girls. Sanna Nygård. Lokakuussa 2015 www.frantic.com/codecamp/

Code Camp for Girls. Sanna Nygård. Lokakuussa 2015 www.frantic.com/codecamp/ Code Camp for Girls Sanna Nygård Lokakuussa 2015 www.frantic.com/codecamp/ HTML? HTML? HyperText Markup Language Ei ole nettisivua ilman HTML:ää Rakenteinen, hierarkkinen dokumentti Vain rakenne ja sisältö,

Lisätiedot

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

Lisätiedot

Säännöllisten kielten sulkeumaominaisuudet

Säännöllisten kielten sulkeumaominaisuudet Säännöllisten kielten sulkeumaominaisuudet Osoitamme nyt, että säännöllisten kielten joukko on suljettu yhdisteen, konkatenaation ja tähtioperaation suhteen. Toisin sanoen jos A ja B ovat säännöllisiä,

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

8/20: Luokat, oliot ja APIt

8/20: Luokat, oliot ja APIt Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Kohti

Lisätiedot

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Hahmon etsiminen syotteesta (johdatteleva esimerkki) Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 1: Joukot 4.1 Joukot Matemaattisesti joukko on mikä tahansa hyvin määritelty kokoelma objekteja, joita kutsutaan joukon alkioiksi

Lisätiedot

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15 Ctl160 490160-0 Nicholas Volk Yleisen kielitieteen laitos, Helsingin yliopisto Ctl160 490160-0 p.1/15 Lisää säännöllisistä lausekkeista Aikaisemmin esityt * ja + yrittävät osua mahdollisimman pitkään merkkijonoon

Lisätiedot

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

uv n, v 1, ja uv i w A kaikilla

uv n, v 1, ja uv i w A kaikilla 2.8 Säännöllisten kielten rajoituksista Kardinaliteettisyistä on oltava olemassa (paljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituva määrä, säännöllisiä lausekkeita vain numeroituvasti. Voidaanko

Lisätiedot

Automaatit. Muodolliset kielet

Automaatit. Muodolliset kielet Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

1. Universaaleja laskennan malleja

1. Universaaleja laskennan malleja 1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

TIEDEJUTTUKURSSI 29.9.2011 FM VILLE SALMINEN

TIEDEJUTTUKURSSI 29.9.2011 FM VILLE SALMINEN TIEDEJUTTUKURSSI 29.9.2011 FM VILLE SALMINEN YLEISTÄ LUENNOT (8 H) & TYÖPAJA (2 H) YHTEYSTIEDOT ville.salminen@oulu.fi VÄLINEET Tekstieditori Mieluummin Windowsin Notepad kuin esimerkiksi Microsoft Word

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

ICT1TN004. Lomakkeet. Heikki Hietala

ICT1TN004. Lomakkeet. Heikki Hietala Lomakkeet Heikki Hietala Lomakkeet Lomakkeita käytetään keräämään tietoa käyttäjältä ja siirtämään se palvelimelle Lomakkeen luominen ei yksin riitä, vaan pitää luoda myös lomakkeenkäsittelijä Lomakkeen

Lisätiedot

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto FUNKTIONAALIANALYYSIN PERUSKURSSI 1. Johdanto Funktionaalianalyysissa tutkitaan muun muassa ääretönulotteisten vektoriavaruuksien, ja erityisesti täydellisten normiavaruuksien eli Banach avaruuksien ominaisuuksia.

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012 Tiedostot Uudet ominaisuudet: - Ei Tiedostot-kohtaa alueen sisällä, vaan tiedostonvalitsin, jolla tiedostot tuodaan alueelle siihen kohtaan missä ne näytetään - Firefox-selaimella voi työpöydältä raahata

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

Rekursiiviset palautukset [HMU 9.3.1]

Rekursiiviset palautukset [HMU 9.3.1] Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

6 Hypermediajärjestelmistä

6 Hypermediajärjestelmistä 6 Hypermediajärjestelmistä Lyhyt vilkaisu järjestelmätason hypermediaan. Hypermediasovellukseen liittyy aina kaksi näkökulmaa: lukijan ja laatijan näkökulma Hypertekstijärjestelmä (hypermediajärjestelmä)

Lisätiedot

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus 9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus XSL-muunnos voi tietenkin tuottaa myös tiettyyn nimiavaruuteen liittyviä kohdedokumentteja (tarvitaan aina jo esim. XHTML-sovelluksissa!) Helpoimmillaan

Lisätiedot

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne Kotisivuohjeet Tässä ohjeessa käydään läpi kotisivujen tekemisen perusteet keskittyen html-koodiin ja sen ominaisuuksiin. Sivupohjissa ulkoasu ja rakenne on pääasiassa jaettu erilliseen css-tyylitiedostoon,

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

The OWL-S are not what they seem

The OWL-S are not what they seem The OWL-S are not what they seem...vai ovatko? Verkkopalveluiden koostamisen ontologia OWL-S Seminaariesitelmä 15.4.2013 Emilia Hjelm Internet on hankala Nykyinternet on dokumenttien verkko Asiat, joita

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT MOBISITE-TYÖKALU MobiSite on työkalu matkapuhelimeen soveltuvan mobiilisivuston rakentamiseen. AIMO-järjestelmän jatkuvasti päivittyvä päätelaitetunnistus tunnistaa useimmat puhelinmallit ja mukauttaa

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki 13.9.2006

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki 13.9.2006 H T M L eli kuinka laadin itselleni päheät kotisivut Janne Käki 13.9.2006 Mikä ihmeen HTML? HyperText Markup Language hypertekstiä eli toisiinsa linkitettyjä dokumentteja merkintäkieli, perustuu erilaisiin

Lisätiedot

MatTaFi projektin HAKA-pilotti

MatTaFi projektin HAKA-pilotti projektin HAKA-pilotti Matti Harjula matti.harjula@hut.fi Matematiikan ja systeemianalyysin laitos Teknillinen korkeakoulu 15. tammikuuta 2008 1 2 Materiaalin tuottajat ongelmana 3 Uusien sovellusten yksinkertaisempi

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta. 1. Julkaisutoiminnan peruskysymyksiä a) Mieti kohderyhmät b) Mieti palvelut c) Mieti palvelujen toteutus Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta. PALVELUKOKONAISUUDET:

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot