4. Lausekielinen ohjelmointi 4.1



Samankaltaiset tiedostot
4. Lausekielinen ohjelmointi 4.1

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

14. Hyvä ohjelmointitapa 14.1

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

13. Hyvä ohjelmointitapa (osa 1) 13.1

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

12. Näppäimistöltä lukeminen 12.1

7. Näytölle tulostaminen 7.1

Java-kielen perusteet

Java-kielen perusteet

Harjoitus 5 (viikko 41)

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Ohjelmoinnin perusteet, syksy 2006

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

12. Javan toistorakenteet 12.1

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

12. Javan toistorakenteet 12.1

Harjoitus 5 (viikko 48)

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

Harjoitus 3 (viikko 39)

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Harjoitus 5 (viikko 41)

Harjoitus 2 (viikko 45)

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

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

Ohjelmointi 1. Kumppanit

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

15. Ohjelmoinnin tekniikkaa 15.1

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

OHJELMOINNIN TYYLISÄÄNTÖJÄ

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

Ohjelmointi 1 / syksy /20: IDE

MITÄ JAVASCRIPT ON?...3

1. Omat operaatiot 1.1

Luento 1 Tietokonejärjestelmän rakenne

OPPITUNTI 3 Ensimmäinen skripti

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

11. Javan valintarakenteet 11.1

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Harjoitus 4 (viikko 47)

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Ohjelmoinnin perusteet Y Python

3. Muuttujat ja operaatiot 3.1

11. Javan toistorakenteet 11.1

TIE Johdatus ohjelmointiin

Tutoriaaliläsnäoloista

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

16. Ohjelmoinnin tekniikkaa 16.1

ITKA203 Käyttöjärjestelmät, kesä Kesäkurssi Opettaja: Paavo Nieminen

Apuja ohjelmointiin» Yleisiä virheitä

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42)

Luento 5. Timo Savola. 28. huhtikuuta 2006

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

16. Ohjelmoinnin tekniikkaa 16.1

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

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Tekstinkäsittely 1. Peruskäyttö. Tietotekniikan perusteet Metropolia Ammattikorkeakoulu Vesa Ollikainen

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

ITKP102 Ohjelmointi 1 (6 op)

Java-kielen perusteita

Ohjelmoinnin perusteet Y Python

Johdatus Ohjelmointiin

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

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

Korpusten käsittely clt131, P Luento 5

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Johdatus ohjelmointiin

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

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

6. Muuttujat ja Java 6.1

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Käännös, linkitys ja lataus

Toinen harjoitustyö. ASCII-grafiikkaa

Seuraavassa on esimerkki for-, while- ja do-while -lauseesta:

.NET ajoympäristö. Juha Järvensivu 2007

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

15. Ohjelmoinnin tekniikkaa 15.1

Transkriptio:

4. Lausekielinen ohjelmointi 4.1

Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen, tulkinta ja Java. 4.2

Konekieli ja symbolinen konekieli Aluksi ohjelmoitiin tietokoneiden sellaisenaan ymmärtämällä konekielellä (machine language), jossa suorittimen komennot ja niiden parametrit esitetään binäärilukuina. Symbolisessa konekielessä (assembly language) komennoille on annettu lyhyet nimet. Erästä suoritinta voitaisiin käskeä sijoittamaan akkuun (suorittimen rekisteri) luku yksi seuraavasti: 10101001 00000001 tai LDA #$01. Tällaisten kielten käyttö on vaikeaa ja eikä ohjelmia voi ajaa toisen tyyppisellä suorittimella. 4.3

Lausekieli Abstraktimpi kieli, hieman luonnollisen kielen kaltainen. Luonnollisella kielellä ohjelmointi vaikeaa kieliopin monimutkaisuuden sekä lauseiden ja sanojen moniselitteisyyden vuoksi. Lausekielinen ohjelmointi on mahdollista rajatun kieliopin ja sanaston sekä kääntäjä- ja tulkkiohjelmien ansiosta. Ohjelmat pitkälti suoritinriippumattomia ja hyvin tehtyinä siirrettävissä käyttöjärjestelmien välillä. Kielimuurin yli lausekielellä: Lausekieli konekieleksi kääntäjällä ja/tai tulkilla. 10101010111 00010... Kasvatetaan laskurimuuttujaa i yhdellä.... i = i + 1;... Ajatus ohjelmaksi. 4.4

Lausekieli Sanasto koostuu pääosin tunnuksista (identifier), esimerkiksi muuttujille ja operaatioille annettuja nimiä ja varattuista sanoista (reserved word), joita käytetään muun muassa muuttujien tyyppien esittämiseen. Valittu usein englannin kielestä (esimerkiksi int ja double). Ei voi käyttää tunnuksina. Algoritmin vaiheet esitetään lauseina (statement). Lause vastaa vuokaavion toimintoa. Päätöksen ja silmukan kuvaavat lauseet aloitetaan tietyillä varatuilla sanoilla (esimerksi if ja while). Päätökseen tai silmukkaan liittyvät lauseet kootaan yhteen kieliopillisella merkinnällä ja ohjelman ulkoasua muotoilemalla. 4.5

Lausekieli Kirjoitetun luonnollisen kielen yksiköitä: Virke sisältää yhden tai useamman lauseen. Alkaa isolla alkukirjaimella ja päättyy isoon välimerkkiin. Lause ilmaisee ajatuksen. Rakentuu verbin ympärille. Lauseke muodostuu lauseen läheisesti yhteenkuuluvista sanoista. Lauseohjelmointikielissä virkkeet ovat lauseen mittaisia ja välimerkki on usein puolipiste (;). Ohjelmointikielissä lausekkeet (expression) ovat lauseiden arvon tuottavia osia. Esimerkiksi Java-kielen lause i = i + 1; kasvattaa laskurin arvoa yhdellä. Yhteenlasku i + 1 on lauseke. 3.6

Hyvä ohjelmointitapa Ohjelman tulisi olla helposti ymmärrettävä, koska ohjelmia ei tehdä vain omaan käyttöön. Lausekielisen ohjelman toimintaa voi selkeyttää pienellä vaivalla käyttämällä kuvaavia nimiä, kommentoimalla ja koodin rivejä sisentämällä. Kommentit ovat luonnollisella kielellä kirjoitettuja, ohjelman toimintaa selventäviä lauseita, joita ei suoriteta. Usein kahdella kauttamerkillä (/) alkava rivi on kommentti. Kommentti liittyy yleensä seuraavaan lauseeseen. Esimerkki: // Tulostetaan merkkijono näytölle. System.out.println( Javan tulostusoperaation nimi on pitkä... ); 3.7

Hyvä ohjelmointitapa Ohjelman lukijan tulee nähdä vaivatta mitkä lauseet liittyvät päätökseen tai silmukkaan. Ulkoasun muotoilu sisentämällä on vakiintunut tapa avustaa lukijaa. Sisentäminen tarkoittaa muutaman välilyönnin sijoittamista koottujen lauseiden rivien alkuun siten, että rivit alkavat samalta tasalta. Rivejä voidaan sisentää tabulaattorilla, mutta tällöin sisennyksen syvyyden määrää tabulaattorille asetettu pituus. Välilyöntejä ja tabulaattoreja ei saa käyttää sekaisin! Lauseiden kieliopillinen yhteenkuuluvuus ilmaistaan usein aaltosuljeparilla ({ }). Esimerkki: if (lkm > 0) { // Tämän kootun lauseen // sisällä jokaisen rivin // alussa on kolme välilyöntiä. ka = summa / lkm; System.out.println(ka); } Kommenteissa voi säätellä, sisennystä ei saa koskaan jättää tekemättä. 3.8

Lausekielestä konekieleksi Aluksi algoritmi kirjoitetaan eli koodataan lausekielinen ohjelmaksi eli lähdekoodiksi (source code). Kirjoitustyö tapahtuu yksinkertaisella tekstinkäsittelyohjelmalla eli tekstieditorilla. Lähdekoodi tallennetaan tiedostoon. Lähdekoodi on tietokoneelle liian monimutkaista. Koodi on siksi muutettava apuohjelmalla tietokoneen ymmärtämään muotoon, konekielelle. Kieliraja voidaan ylittää luonnollisen kielen tapaan lähdekoodia konekieleksi kääntämällä (compile) ja tulkitsemalla (interpret). lähdekoodi lähdekooditiedosto lähdekoodi muunnos konekieli suoritin 3.9

Lähdekoodi ja tekstitiedosto Lähdekoodi, samoin kuin lähdekoodin sisältävä tekstitiedosto (text file), koostuu kirjaimista, numeroista, välimerkeistä ja näkymättömistä ohjausmerkeistä (muun muassa rivinvaihto- ja tabulaattori). Lähdekoodiin ei voi sijoittaa kursivoinnin tai lihavoinnin tapaisia muotoiluja tai kuvia. Käyttöjärjestelmien merkistöt ovat erilaisia, jolloin järjestelmästä toiseen siirretyn lähdekooditiedoston merkkejä saattaa näkyä eri merkkeinä ja muunnos konekieleksi ei aina onnistu. Joskus lähdekoodin siirrettävyyttä parannetaan käyttämällä tunnuksissa vain alkuperäistä ASCII-merkistöä, joka on osa useampia muita merkistöjä. Näin toimien å-, ö-, ä-, Å-, Ä- ja Ö- merkkejä voi käyttää vain kommenteissa. 4.10

Tekstieditorit Kurssilla riittää hyvin yksinkertainen editori. Tärkeintä on, että editori osaa kertoa monennellako rivillä editorin kursori on, jolloin koodissa olevien virheiden korjaaminen on helpompaa. Esimerkiksi Notepad eli Muistio (Windows) tai nano (UNIX). Kurssin kotisivuilla linkkejä parempiin editoreihin ja ohjeita Notepad++:n (Windows) ja TextWranglerin (Mac) käyttöön. Haasteita kaipaavat käyttävät Emacs-editoria. Laajempien ohjelmien tekoon löytyy ohjelmointi-ympäristöjä (esimerkiksi Eclipse ja NetBeans). Microsoft Word -ohjelma ei ole tarkoitettu ohjelmointiin vaan monipuoliseen tekstinkäsittelyyn. Ohjelmia ei kannata edes yrittää tehdä Wordillä! 4.11

Kääntäminen ja tulkinta Kääntäjäohjelma muuttaa lähdekoodin suoraan konekieliseksi tiedostoksi eli suoritettavaksi ohjelmaksi. lähdekooditiedosto Tulkittavan kielen lähdekoodi suoritetaan erillisellä ohjelmalla eli tulkilla, joka muuttaa ajonaikaisesti lähdekoodin konekieleksi. lähdekoodi lähdekooditiedosto konekieli konekielinen tiedosto kääntäjä lähdekoodi konekieli tulkki konekieli suoritin suoritin 4.12

Kääntäminen ja tulkinta Ohjelman oltava kieliopillisesti täysin oikein, jotta tulkkaus tai kääntäminen onnistuisi: Kielioppivirheistä ilmoitetaan yleensä virheen tyyppi ja virheen aiheuttaneen rivin numero. Käännetty koodi on yleensä tulkattavaa koodia nopeampaa, mutta tulkattavalla kielellä on helpompi tehdä pieniä testejä. Käännettäviä lausekieliä ovat esimerkiksi Pascal, C ja C++ ja tulkattavia kieliä muun muassa Basicin jotkut versiot. 4.13

Kääntäminen, tulkinta ja Java Javassa lähdekoodi käännetään ensin tavukoodiksi (bytecode). Tavukoodi suoritetaan sitten tulkin avulla virtuaalikoneessa (virtual machine). Tavukoodin ansiosta Javasovellukset ovat siirrettäviä. Sama tavukoodi voidaan suorittaa kaikkialla missä on tarjolla virtuaalikone (esim. Windows, Linux ja Mac). lähdekooditiedosto lähdekoodi kääntäjä tavukoodi tavukooditiedosto tavukoodi konekieli tulkki suoritin 4.14