BJ30A1000 Kemiantekniikan tietotekniikka Fortran

Koko: px
Aloita esitys sivulta:

Download "BJ30A1000 Kemiantekniikan tietotekniikka Fortran"

Transkriptio

1 BJ30A1000 Kemiantekniikan tietotekniikka Fortran Kimmo Klemola April 18, 2008 Kimmo Klemola 1 Fortran johdatusta Fortran-ohjelmointiin Materiaalina käytetty mm. CSC:n Fortran 90/95 opasta (Haataja, Rahola, Ruoholainen) April 18, 2008 Kimmo Klemola 2 Fortran 1

2 Fortran Fortran on vanhin, tärkein ja käytetyin ohjelmointikieli tieteellisessä ja teknisessä laskennassa (numeerisessa laskennassa). Fortran-kielen kehitys lähti käyntiin IBM:llä vuonna 1954, jolloin esiteltiin suunnitelma ohjelmointikielestä nimeltä FORmula TRANslator eli FORTRAN. Fortranin käytetyimpiä versioita ovat olleet FORTRAN IV, FORTRAN 66 ja FORTRAN 77. Fortran oli myös ensimmäinen ohjelmointikieli, josta luotiin standardi (FORTRAN 66 vuonna 1966). Vuonna 1978 valmistui vielä nykyäänkin yleisesti käytetty vaikkakin jo vanhahtava FORTRAN 77 -standardi. Fortran 95 on kielen uusin ANSI- ja ISO-standardi, joka on vakiinnuttamassa asemansa tieteellisen ja teknisen laskennan valtakielenä. Fortran 95 on pienehkö päivitys Fortran 90 -standardiin. Fortran 95 on uusin kielen versio. Se hyväksyttiin vuonna 1997 kansainväliseksi standardiksi. Vanha Fortran-kielen standardi (FORTRAN 77) muodostaa Fortran 90/95:n osajoukon, joten kieli on yhteensopiva vanhojenkin koodien kanssa. Fortran-kieltä kehitetään edelleen aktiivisesti. April 18, 2008 Kimmo Klemola 3 Tietokone ja ohjelmointi Tietokoneen ymmärtämä kieli koostuu joukosta konekäskyjä, joita suorittamalla tietokone saadaan tekemään haluttuja asioita. Tietokoneet pystyvät suorittamaan miljardeja konekäskyjä sekunnissa. Erityyppiset tietokoneet ymmärtävät kukin omaa konekieltään, joten konekielisen ohjelman siirto koneesta toiseen on hankalaa ellei peräti mahdotonta. Lisäksi ohjelmointi konekäskyjen avulla on aikaa vievää ja virhealtista puuhaa. Tietokoneen ohjaaminen hoidetaan konekielen sijaan yleensä ohjelmointikielen avulla. Tämä mahdollistaa konekieltä paremman ohjelmistojen siirrettävyyden. Ohjelmointikielen kääntäjä (compiler) hoitaa automaattisesti konekäskyjen tuottamisen ohjelmakoodista. Täten ohjelmointikielen käyttö helpottaa huomattavasti tehtävien ratkaisua tietokoneella. Eri ohjelmointikielet on suunniteltu erilaisiin tehtäviin. Ohjelmointikieliä on kehitetty tuhansia, mutta vain muutamat niistä ovat laajassa käytössä. April 18, 2008 Kimmo Klemola 4 Fortran 2

3 Tietokone ja ohjelmointi Tietokoneen keskusyksikkö toimii ohjelmakoodin sisältämien käskyjen mukaisesti. Ohjelma lukee tavallisesti joukon syöttötietoja, jotka vaihtelevat ohjelman ajokerrasta toiseen. Ohjelma lukee syöttötiedot sisään esimerkiksi tiedostoista tai käyttäjän näppäimistöltä. Syöttötietoja voisivat olla esimerkiksi säähavaintopisteistä kerätyt mittausarvot kuten lämpötila, ilmanpaine ja kosteus. Sääennusteen laskemiseen kehitetty ohjelma voisi näiden syöttötietojen perusteella laskea ja tulostaa ennusteen seuraavien 48 tunnin ajaksi. Tietokoneen keskusyksikkö käsittelee keskusmuistissa sijaitsevaa dataa. Esimerkiksi sääennusteen laskennan eri vaiheissa tarvittava data voidaan pitää tietokoneen keskusmuistissa. Keskusyksikkö voi myös kirjoittaa ja lukea tiedostoja, jotka mahdollistavat tiedon säilyttämisen ohjelman suorittamisen loppuessa: kun ohjelman suoritus päättyy, käytetään vapautunut keskusmuisti seuraavien ohjelmien ajamiseen. Tätä ennen tulee laskentatulokset tallettaa tiedostoihin, sillä pysyvien tiedostojen sisältö säilyy ohjelman suorittamisen loputtuakin. April 18, 2008 Kimmo Klemola 5 Tietokone ja ohjelmointi Tiedostojen käsittely on yleensä hitaampaa kuin keskusmuistin käyttö. Keskusyksikkö voi tiedostoihin tallettamisen lisäksi tulostaa tietoa käyttäjän laitteen (päätteen, mikron tai työaseman) kuvaruudulle. Tietokoneen toiminnan periaate: April 18, 2008 Kimmo Klemola 6 Fortran 3

4 Ohjelmointikielet Ohjelmointikielten tulee olla: täysin yksiselitteisiä (toisin kuin esimerkiksi suomen kielen) helppokäyttöisiä käytännöllisiä kääntäjän tulee kyetä helposti kääntämään ohjelman käskyt konekielelle Kaikilla ohjelmointikielillä on erittäin tarkka syntaksi ja kielioppi, jotta ohjelman käskyt olisivat yksiselitteisiä. April 18, 2008 Kimmo Klemola 7 Ohjelmoinnin eri vaiheet Kun kehität ohjelmistoa annettuun tehtävään, pidä mielessä seuraavat ohjelmoinnin vaiheet: 1. tehtävän tavoitteen määrittely 2. tehtävän analyysi ja ohjelmakoodin suunnittelu 3. ohjelmakoodin kirjoittaminen 4. testaaminen ja virheiden korjaaminen 5. dokumentointi 6. ohjelmiston käyttö ja ylläpitäminen. April 18, 2008 Kimmo Klemola 8 Fortran 4

5 Ohjelman kääntäminen ja linkitys Käytännössä Fortran-koodista saa ajokelpoisen ohjelman seuraavasti: 1. kirjoita suunnitelman mukainen ohjelmakoodi yhteen tai useampaan tiedostoon 2. käännä lähdekooditiedostot objektikooditiedostoiksi 3. linkitä objektikooditiedostot ja mahdolliset aliohjelmakirjastot suorituskelpoiseksi ohjelmaksi 4. aja syntynyt ohjelma ja tarkista tulokset. April 18, 2008 Kimmo Klemola 9 Fortran-kääntäjä ja linkittäjä esimerkkinä Compaq Visual Fortran (keten mikroluokka) Lasketaan yksinkertainen lasku 7*52+1: 1. Avataan Compaq Visual Fortran, ikoni DFDEV 2. File New Files Fortran free format source file. Avautuvaan ikkunaan kirjoitetaan seuraava teksti: PROGRAM laskuesimerkki WRITE (*,*) 7*52+1 END PROGRAM laskuesimerkki 3. Tallennetaan tiedosto esimerkiksi nimellä laskuesimerkki. Tiedosto on laskuesimerkki.f90. f90-pääte tarkoittaa Fortran 90 -muotoista Free format source -tiedostoa. 4. Käännetään tiedosto konekielelle: Build Compile laskuesimerkki.f90 tai ikonista työkaluriviltä tai Ctrl+F7. 5. Linkitetään: Build Build laskuesimerkki.exe tai ikonista työkaluriviltä tai F7. 6. Ajetaan ohjelma: Build Execute laskuesimerkki.exe tai ikonista työkaluriviltä tai Ctrl-F5. 7. Näytölle tulostuu vastaus 365. April 18, 2008 Kimmo Klemola 10 Fortran 5

6 esimerkki PROGRAM laskuesimerkki WRITE (*,*) 7*52+1 END PROGRAM laskuesimerkki Pääohjelma aloitettiin PROGRAM-lauseella. Ohjelmakoodi lopetettiin lauseella END PROGRAM. Jokaisessa ajokelpoisessa ohjelmassa on vain yksi pääohjelma. Ohjelman tunnus oli ensimmäisessä esimerkissä laskuesimerkki. Tunnuksen pituus saa olla korkeintaan 31 merkkiä, ja tunnukseen kelpaavat kirjaimet A... Z, alaviiva _ sekä numerot. WRITE-lausetta käytetään tulostukseen. Merkintä 7*52 tarkoittaa kertolaskua ja merkki + yhteenlaskua. Lause WRITE (*,*) 7* tulostaa laskutoimituksen tuloksen kuvaruudulle. WRITE (*,*) pitempi muoto on WRITE (UNIT=*,FMT=*): Ensimmäinen tähti vastaa oletusarvoista tulostuskanavaa (unit), joka on yleensä käyttäjän laitteen näyttö. Toinen tähti tarkoittaa, että kääntäjä valitsee tulostettavalle datalle sopivan oletusarvoisen tulostusasun (format). April 18, 2008 Kimmo Klemola 11 esimerkki Muutetaan edellistä ohjelmaa: PROGRAM laskuesimerkki WRITE (*,'(A9,F9.4)') 'Vastaus: ',7* END PROGRAM laskuesimerkki Ohjelman tuloste ruudulle on seuraava: Vastaus: Merkkijonovakio tulostettiin yhdeksän merkin levyiseen kenttään (muotoilukoodi A9). Laskutoimitus tulostettiin yhdeksän merkin levyiseen kenttään siten, että desimaalipisteen oikealla puolella oli neljä numeroa (F9.4). Huom! Voit kopioida copy-paste tämän esityksen ohjelmakoodia kääntäjälle ja tallettaa koodin *.f90-muotoon. Yläpilkun merkit saattaa joutua vaihtamaan manuaalisesti ä:n oikealla puolella olevaan. Näitä esimerkkejä kannattaa testata. April 18, 2008 Kimmo Klemola 12 Fortran 6

7 Muotoilukoodit Muotoilukoodi määrää, miten tieto pitää syötön tai tulostuksen yhteydessä muotoilla. Muotoilukoodi siis ilmaisee, kuinka leveään kenttään ja miten muotoiltuna kukin muuttuja tulisi kirjoittaa. Muotoilukoodi voidaan antaa eri tavoin: merkkijonovakiona, merkkijonolausekkeena, merkkijonomuuttujana tai FORMAT-lauseen lausenumerona. Aikaisemmissa esimerkeissä muotoilukoodi korvattiin symbolilla *, jolloin valittiin listan ohjaama muotoilu. Seuraavassa esimerkissä on muotoilukoodi I5 ilmaistu kolmella eri tavalla. Tämä koodi tulostaa kokonaisluvun (Integer) n viisi merkkiä leveään kenttään. PROGRAM tulosta INTEGER :: n = 34 CHARACTER(LEN=*), PARAMETER :: form = (I5) WRITE (*, (I5) ) n! Merkkivakio muotoilukoodina WRITE (*, form) n! Merkkijonomuuttuja (tässä vakio) WRITE (*, 30) n! FORMAT-lauseen käyttö 30 FORMAT (I5) END PROGRAM tulosta April 18, 2008 Kimmo Klemola 13 Muotoilukoodit - yhteenveto Yhteenveto eri tietotyypeille sopivista muotoilukoodeista. Merkintä w tarkoittaa kentän leveyttä, d desimaaliosan pituutta ja e eksponentin pituutta. April 18, 2008 Kimmo Klemola 14 Fortran 7

8 Muotoilukoodit - esimerkki PROGRAM muotoilukoodit WRITE (*,*) 42, 42.0, 0.42E2 WRITE (*,'(I10)') 42 WRITE (*,'(F12.8)') 42.0 WRITE (*,'(E12.4)') 42.0 WRITE (*,'(EN12.4)') 42.0 WRITE (*,'(ES12.4)') 42.0 WRITE (*,'(G9.4)') 42.0 END PROGRAM muotoilukoodit antaa ruudulle E E E Viimeisen desimaaliosa on kaventunut kahdella (E-koodin eksponenttiosan verran). April 18, 2008 Kimmo Klemola 15 Peruslaskutoimitukset Fortranin ymmärtämät peruslaskutoimitukset ovat +, -, *, / ja **. Nämä operaatiot vastaavat yhteen-, vähennys-, kerto- ja jakolaskua sekä potenssiin korottamista. Esimerkiksi lausekkeen 2**3 arvo on 2 3 = 2*2*2 = 8. Laskutoimitusten tulos riippuu argumenttien tyypistä. Lause WRITE (*,*) 52.0/7.0 =, 52.0/7.0,, 52/7 =, 52/7 tulostaa seuraavaa: 52.0/7.0 = , 52/7 = 7 Siis kokonaislukujen jakolaskun 52/7 tulos on myös kokonaisluku, ja murto-osa jätettiin huomiotta. Tarkista siis aina jakolaskun argumenttien tyypit! Jos jakolaskun argumenteista toinen on reaalilukutyyppiä, on tuloskin reaaliluku. Siten lausekkeen 52.0/7 arvoksi saadaan April 18, 2008 Kimmo Klemola 16 Fortran 8

9 Muuttujat Edellisissä esimerkeissä käytettiin pelkästään ohjelmakoodiin sijoitettuja vakioita. Jos ohjelman halutaan laskevan jotain muuta, joudutaan tällöin muuttamaan ohjelmakoodia ja kääntämään ohjelma uudestaan. Muun muassa tämän takia ohjelmoinnissa käytetään muuttujia, jotka voivat saada eri arvoja ohjelman ajokerrasta toiseen. Esimerkki: 1. pyydetään syöttämään kaksi kokonaislukua 2. luetaan lukuarvot näppäimistöltä 3. tulostetaan syötetyt luvut ja niiden tulo. PROGRAM kertolasku! Ohjelma lukee kaksi kokonaislukua sekä! laskee ja tulostaa niiden tulon. INTEGER :: i, j WRITE (*,*) 'Syota luku i:' READ (*,*) i WRITE (*,*) 'Syota luku j:' READ (*,*) j WRITE (*,*) 'Luku i:', i WRITE (*,*) 'Luku j:', j WRITE (*,*) 'Tulo i*j:', i*j END PROGRAM kertolasku April 18, 2008 Kimmo Klemola 17 Muuttujat Huutomerkillä (!) alkavat rivit ovat kommentteja ja ne on tarkoitettu ohjeeksi ohjelman lukijalle ja käyttäjälle. Ohjelma ei siis ota huomioon huutomerkin jälkeen tulevaa tekstiä. Määrittely parantaa kääntäjän tekemiä virheentarkistuksia ja se on syytä laittaa jokaiseen ohjelmayksikköön otsikkolauseen (PROGRAM tms.) jälkeen! Tämä lause poistaa käytöstä tunnuksen ensimmäiseen kirjaimeen perustuvan tyyppimäärittelyn. Ohjelmassa määritellään kokonaislukumuuttujat i ja j rivillä INTEGER :: i, j Ohjelman toiminta voisi olla seuraavaa: April 18, 2008 Kimmo Klemola 18 Fortran 9

10 Muuttujat ja alkukirjainsääntö Vanhoissa Fortran-koodeissa on käytetty hyväksi muuttujien alkukirjainsääntöä (implicit typing), jolloin muuttujan tyypin määräsi tunnuksen ensimmäinen kirjain. Muuttujat, joiden ensimmäinen kirjain oli I... N, olivat kokonaislukuja. Kaikki muut muuttujat olivat reaalilukuja. Lause kytkee alkukirjainsäännön pois käytöstä. Tällöin kääntäjä tarkistaa, että jokainen tunnus on määritelty. Väärin kirjoitetut muuttujien nimet paljastuvat siten usein jo käännösaikana. April 18, 2008 Kimmo Klemola 19 Muuttujien tyypit Edellä määrittelimme kokonaislukutyyppisiä (INTEGER) muuttujia. Kokonaislukujen lisäksi voimme määritellä reaalilukutyypin (REAL) muuttujia: PROGRAM potenssi! Ohjelma laskee ja tulostaa numeerisen lausekkeen arvon. REAL :: k, x INTEGER :: n WRITE (*,*) Syötä lausekkeen k*x**n luvut k, x ja n: READ (*,*) k, x, n WRITE (*,*) Luku k:, k, Luku x:, x, Luku n:, n WRITE (*,*) Arvo k*x**n:, k*x**n END PROGRAM potenssi Muuttujat k ja x ovat reaalilukuja ja muuttuja n on kokonaisluku. Ohjelma lukee muuttujien arvot, tulostaa ne sekä laskee lausekkeen kx n arvon. April 18, 2008 Kimmo Klemola 20 Fortran 10

11 Fortranin perustyypit Tietokoneohjelmilla käsitellään tieto-olioita, jotka rakentuvat luvuista ja merkkijonoista sekä näiden yhdistelmistä. Fortran sisältää viisi perustyyppiä (intrinsic type): kokonaisluvut (INTEGER) reaaliluvut (REAL) kompleksiluvut (COMPLEX) totuusarvot (LOGICAL) merkkijonot (CHARACTER). Näitä tietotyyppejä käsitellään Fortran-kielen operaatioilla, proseduureilla ja lauseilla. April 18, 2008 Kimmo Klemola 21 Kompleksiluvut Kompleksilukutyyppi vastaa matemaattista kompleksiluvun käsitettä. Siten kompleksiluku z koostuu reaaliosasta x ja imaginääriosasta y eli z = x+iy, missä i = Kompleksilukuvakiot kirjoitetaan sulkujen sisään: WRITE (*,*) (0, -1)*(1.2345E-2, 8) Tässä lasketaan kompleksilukujen 1.0i ja i tulo. Tulostus voisi näyttää tältä: ( , E-02) 1 April 18, 2008 Kimmo Klemola 22 Fortran 11

12 Totuusarvot Fortranissa voidaan esittää totuusarvot tosi ja epätosi vakioilla.true. ja.false.. Vakioiden alussa ja lopussa olevat pisteet ovat tarpeen! Totuusarvoja voi käsitellä loogisilla operaatioilla.not.,.and.,.or.,.eqv. ja.neqv.. Loogiset operaattorit: April 18, 2008 Kimmo Klemola 23 Loogiset lausekkeet Loogisia lausekkeita käytetään IF-lauseen ja muiden ohjausrakenteiden yhteydessä, ja niillä siis toteutetaan ohjelman logiikka. Loogisiin lausekkeisiin kuuluvat lukujen ja merkkijonojen vertailuoperaattoreiden lisäksi loogiset operaattorit. Taulukossa on annettu Fortran-kielen vertailuoperaattorit ja myös vanhat FORTRAN 77:n mukaiset operaattorit (.EQ. jne.). April 18, 2008 Kimmo Klemola 24 Fortran 12

13 Merkkijonot Merkkijonotyypillä voidaan esittää merkkijonoja. Merkkijonovakio sijoitetaan ohjelmakoodiin yksinkertaisten tai kaksinkertaisten lainausmerkkien sisään: WRITE (*,*) "Äkkiä eräänä päivänä..." WRITE (*,*) Äkkiä eräänä päivänä... April 18, 2008 Kimmo Klemola 25 Loogiset lausekkeet ja merkkijonomuuttuja CHARACTER esimerkki Annetaan kokonaisluku, jonka neliö lasketaan. Annetun kokonaisluvun on oltava välillä [1 5]. PROGRAM nelio INTEGER :: i, j CHARACTER (LEN=30) :: virhe = 'Virhe: i ei ole valilla [1, 5]' CHARACTER (LEN=10) :: pot2 = 'i**2:' WRITE (*,*) 'Luku i:' READ (*,*) i IF (i < 1.OR. i > 5) THEN WRITE (*,*) virhe ELSE j=i**2 WRITE (*,*) pot2, j END IF END PROGRAM nelio Merkkijonomuuttujissa on 30 ja 10 merkkiä. April 18, 2008 Kimmo Klemola 26 Fortran 13

14 Vakioiden määrittely Vakioiksi voidaan määrittää INTEGER, REAL, COMPLEX, CHARACTER tyyppejä. Seuraavassa on kolme tapaa määrittää INTEGER- ja CHARACTER-tyyppiset vakiot. PROGRAM vakiot INTEGER :: lkm CHARACTER (LEN=20) teksti lkm = 120 teksti = 'lukumaara on: ' WRITE (*,*) teksti, lkm END PROGRAM vakiot PROGRAM vakiot INTEGER, PARAMETER :: lkm = 120 CHARACTER (LEN=20), PARAMETER :: teksti = 'lukumaara on: ' WRITE (*,*) teksti, lkm END PROGRAM vakiot PROGRAM vakiot INTEGER :: lkm = 120 CHARACTER (LEN=20) :: teksti = 'lukumaara on: ' WRITE (*,*) teksti, lkm END PROGRAM vakiot April 18, 2008 Kimmo Klemola 27 Sijoituslauseet Sijoituslauseella voimme antaa muuttujalle arvon. Seuraavassa on pieni esimerkkiohjelma: PROGRAM neliojuuri! Ohjelma laskee neliöjuurilausekkeen arvon. REAL :: x, y WRITE (*,*) Syota luku x: READ (*,*) x y = x**2 + 1 WRITE (*,*) Luku x:, x WRITE (*,*) Arvo x**2 + 1:, y WRITE (*,*) Arvo SQRT(x**2 + 1):, SQRT(y) END PROGRAM neliojuuri Tässä ohjelmassa määrittelimme kaksi reaalilukumuuttujaa rivillä REAL :: x, y Lauseella INTRINSIC SQRT (mahdollinen) voidaan kertoa, että ohjelmassa käytetään Fortranin standardifunktiota SQRT, joka laskee luvun neliöjuuren arvon. Muuttujaan x luetaan arvo näppäimistöltä, ja tämän jälkeen sijoitetaan lausekkeen x**2 + 1 arvo muuttujaan y rivillä y = x**2 + 1 April 18, 2008 Kimmo Klemola 28 Fortran 14

15 Omien funktioiden määrittely ja käyttö Edellä käytimme Fortranin standardifunktiota SQRT neliöjuuren laskemiseksi. Myös omien funktioiden määritteleminen on mahdollista. Seuraavassa ohjelmakoodissa määrittelemme funktion f, joka vastaa matemaattista määritelmää f(a) = a 2 + 1: PROGRAM funktio_esimerkki! Ohjelma lukee reaaliluvun x ja tulostaa! funktion f arvon tässä pisteessä. REAL :: x WRITE (*,*) 'Syota luku x:' READ (*,*) x WRITE (*,*) 'Luku x:', x WRITE (*,*) 'Arvo f(x):', f(x) CONTAINS FUNCTION f(a) RESULT(f_arvo) REAL :: a, f_arvo f_arvo = a**2 + 1 END FUNCTION f END PROGRAM funktio_esimerkki Funktion f arvo lasketaan funktiokutsulla f(x). Funktio f on määritelty pääohjelman sisäisenä funktiona CONTAINS-lauseen jälkeen. April 18, 2008 Kimmo Klemola 29 Toistorakenteet Fortranissa hoidetaan lauseiden toistaminen DO-silmukkojen avulla. Laskemme esimerkkinä lausekkeen (luonnollisen luvun yhä tarkempi likiarvo) arvot, kun x on 2 1, 2 2,..., 2 10 eli 2, 4,..., Seuraava ohjelmakoodi tulostaa halutut arvot: PROGRAM silmukka REAL :: x INTEGER :: i DO i = 1, 10 x = 2**i WRITE (*,*) 'arvot:', x, (1 + 1/x)**x END DO END PROGRAM silmukka April 18, 2008 Kimmo Klemola 30 Fortran 15

16 Toistorakenteet Muuttuja x on määritelty REAL-tyyppiseksi, jolloin lausekkeessa 1/x vältetään kokonaislukujen jakolasku. Funktiokutsu REAL(2**i) muuttaa puolestaan kokonaislukulausekkeen 2**i reaalilukutyyppiseksi. DO-silmukka määritellään seuraavasti: Silmukkamuuttuja käy järjestyksessä läpi arvot alaraja, alaraja + 1, alaraja + 2,..., yläraja. Tulostus (tarkka arvo e = ): April 18, 2008 Kimmo Klemola 31 Fortran-kielen INCLUDE-lause Fortran 90/95:ssä voidaan ohjelmakoodiin sisällyttää toisessa tiedostossa olevia määrittelyjä käyttämällä INCLUDE-lausetta. Esimerkiksi: PROGRAM sisalto INCLUDE 'vakiot.inc' REAL :: x = pii WRITE (*,*) 'Piin arvo: ', x END PROGRAM sisalto Tiedoston vakiot.inc sisältö voisi olla seuraava: REAL, PARAMETER :: pii = Edellinen siis tulostaa piin arvon April 18, 2008 Kimmo Klemola 32 Fortran 16

17 Fortran-kielen moduulit Kun ohjelma on vähänkin laajempi, kannattaa ohjelma jakaa moduuleihin, joissa kussakin lasketaan jokin tarkasti rajattu laskentatehtävän osa. Moduulissa voidaan määritellä mm. nimettyjä vakioita, muuttujia, rakenteisia tyyppejä ja proseduureja. Samaa moduulia voidaan usein käyttää hyväksi muissakin yhteyksissä, joten ohjelmoijan työmäärä vähenee. Yleensä INCLUDE-lauseiden sijaan kannattaa käyttää moduuleita ja USElausetta. Etuna tästä on mm. parempi käännösaikainen virheiden tarkistus. Seuraavassa on esimerkki moduulin vakiot käytöstä (& jatkaa riviä): MODULE vakiot REAL, PARAMETER :: & pii = , & e = END MODULE vakiot PROGRAM sisalto USE vakiot! Tärkeitä matematiikan vakioita REAL :: x = pii WRITE (*,*) 'Piin arvo: ', x END PROGRAM sisalto April 18, 2008 Kimmo Klemola 33 Ohjelman perusrakenne Fortran-kääntäjä käsittelee ohjelmakoodia sisältäviä lähdekooditiedostoja. Fortran-ohjelma koostuu jonosta lauseita. Lauseet kirjoitetaan riveille, joiden pituus voi olla merkkiä. Lausetta voi jatkaa seuraavalle riville käyttämällä jatkorivin merkkiä & seuraavasti: kk_era = kk_korko*lainasumma/ & (1 - (1 + kk_korko)**(-laina_aika)) Jos merkkijono halutaan jatkaa usealle riville, voi jatkorivin alkuun sijoittaa välilyöntejä sekä merkin &, jolloin merkkijono jatkuu vasta tästä kohtaa: WRITE (*,*) "Tämä on todella pitkä & monimutkainen& & merkkijono." Riville voi laittaa useamman lauseen erottamalla ne puolipisteellä (;): x = 1.0; b = 1.0 Rivin lopussa ei tarvita puolipistettä, koska rivin loppu automaattisesti lopettaa lauseen. Puolipisteen käyttöä kannattaa välttää, sillä turha tiivistäminen (rivimäärän minimointi) johtaa vaikeasti luettavaan koodiin. Sen sijaan tyhjiä rivejä kannattaa käyttää ryhmittelemään ohjelmayksikön eri osia. April 18, 2008 Kimmo Klemola 34 Fortran 17

18 Ohjelman perusrakenne Ohjelmakoodiin kannattaa sijoittaa ohjelman toimintaa kuvaavia kommentteja, jotka aloitetaan huutomerkillä (!): PROGRAM mahtava! Tämä ohjelma ratkaisee maailmankaikkeuden perusyhtälöt! käyttäen 10-ulotteista supersäieteoriaa. Kommentteja voi sijoittaa myös jatketun rivin loppuun: REAL :: nopeus = 0.0, &! raketin nopeus alussa (m/s) kiihtyvyys = 24.0! raketin kiihtyvyys (m/s**2) Seuraavassa on lueteltu Fortran 90/95:n erikoismerkit: April 18, 2008 Kimmo Klemola 35 Ohjelman perusrakenne Muuttujien ja vakioiden nimet Muuttujien ja vakioiden nimien tulee alkaa kirjaimella, ja nimen maksimipituus on 31 merkkiä. Seuraavassa on esimerkkejä laillisista nimistä: a, a2, a_2, a_b_c. Sen sijaan seuraavat nimet eivät käy: 2a, _a, a b. Fortran-kielessä ei ole ns. varattuja sanoja, joten myös Fortranin tunnukset voi määritellä vaikkapa omien muuttujien nimiksi. Tämä ei kuitenkaan ole suositeltavaa! Esimerkiksi jos muuttujan nimeksi valitaan sin, ei SIN-funktio ole enää käytettävissä. April 18, 2008 Kimmo Klemola 36 Fortran 18

19 Ohjelman perusrakenne Ohjelmakoodin lauseiden järjestys Tärkeimmät Fortran-kielen lauseet voidaan jakaa seuraaviin tyyppeihin: ohjelmayksikön otsikkolauseet: PROGRAM, FUNCTION, SUBROUTINE ja MODULE kommentit USE-lauseet lause tyyppien, muuttujien ja nimettyjen vakioiden määrittelyt kutsumuodon määrittelyt INTERFACE-lohkossa muut määrittelylauseet: EXTERNAL, INTRINSIC, OPTIONAL jne. FORMAT-lauseet suoritettavat lauseet ja rakenteet CONTAINS-lause ohjelmayksikön lopettava END-lause. Kukin ohjelmayksikkö alkaa otsikkolauseella (PROGRAM, FUNCTION jne.) ja päättyy vastaavaan END-lauseeseen. April 18, 2008 Kimmo Klemola 37 Ohjelman perusrakenne Ohjelmakoodin lauseiden järjestys Ohjelmayksikön sisällä lauseet voivat esiintyä kuvan havainnollistamassa järjestyksessä. April 18, 2008 Kimmo Klemola 38 Fortran 19

20 Ohjelman perusrakenne Ohjelmakoodin lauseiden järjestys Seuraava ohjelma havainnollistaa Fortranin pääohjelman omaohjelma ja sisäisen funktion f rakennetta: PROGRAM omaohjelma! Ohjelma laskee lausekkeen a**i + b**j arvon. REAL :: a, b INTEGER :: i, j WRITE (*,*) Anna a ja b: READ (*,*) a, b WRITE (*,*) Anna i ja j: READ (*,*) i, j WRITE (*,*) f(x) =, f(a, i, b, j) CONTAINS FUNCTION f(x, x_potenssi, y, y_potenssi) RESULT(f_arvo) REAL :: x, y INTEGER :: x_potenssi, y_potenssi REAL :: f_arvo f_arvo = x**x_potenssi + y**y_potenssi END FUNCTION f END PROGRAM omaohjelma April 18, 2008 Kimmo Klemola 39 Lukujen tarkkuus Tietokoneiden prosessorit mahdollistavat laskemisen usean eri tarkkuuden kokonais- ja reaaliluvuilla. Tarkkuuksia on käytettävissä yleensä kaksi tai kolme erilaista. Fortran-kielen lajiparametrien avulla on helppo valita ohjelmassa käytettävä laskentatarkkuus. Lisäksi lajiparametrit mahdollistavat laskentatarkkuuden säilymisen siirrettäessä ohjelma toiseen koneeseen. Fortranin perustyyppeihin voidaan liittää lajimääre (kind), joka kertoo, millaisen version tyypistä haluamme käyttöön esimerkiksi mikä on reaalilukujen haluttu esitystarkkuus ja lukualue. Lajiparametri annetaan osana muuttujan määrittelyä esimerkiksi seuraavasti: REAL (KIND=lajiparametri) :: x INTEGER (KIND=lajiparametri) :: i COMPLEX (KIND=lajiparametri) :: z LOGICAL (KIND=lajiparametri) :: testi CHARACTER (LEN=80, KIND=lajiparametri) :: rivi Lajiparametri on Fortran-kääntäjästä riippuva positiivinen kokonaislukuvakio, joka kannattaa selvittää tarkoitukseen varatuilla funktiokutsuilla (esimerkiksi SELECTED_INT_KIND). April 18, 2008 Kimmo Klemola 40 Fortran 20

21 Lukujen tarkkuus Esimerkki piin arvon laskeminen: PROGRAM kind INTEGER, PARAMETER :: suuritarkkuus = SELECTED_REAL_KIND(12) REAL :: pi1 REAL (KIND=suuritarkkuus) :: pi2 pi1 = 4*ATAN(1.0) pi2 = 4*ATAN(1.0) WRITE (*,*) 'pii: ', pi1, pi2 END PROGRAM kind Tulostus ruudulle on: pii: April 18, 2008 Kimmo Klemola 41 Lukujen tarkkuus Esimerkki: sarjan summa Seuraava ohjelmakoodi tekee tarvittavat laskut: April 18, 2008 Kimmo Klemola 42 Fortran 21

22 Lukujen tarkkuus Esimerkki: sarjan summa PROGRAM summaus REAL :: s = 0.0 INTEGER :: i, n WRITE (*,*) 'Anna termien lukumäärä:' READ (*,*) n WRITE (*,*) 'Termejä: ', n DO i = 1, n s = s + 1/(REAL(i)**2) END DO WRITE (*,*) 'Summa on:', s END PROGRAM summaus April 18, 2008 Kimmo Klemola 43 Lukujen tarkkuus Esimerkki: sarjan summa Jos ohjelmalle annetaan n:n arvoksi , saadaan summan arvoksi 1, (oikea 1, ). Miljoonalla termillä lasketussa tuloksessa on vain 3 desimaalia oikein, samoin kuin termin tapauksessa. Ohjelmakoodimme näyttäisi siis tuottavan epätarkkoja tuloksia. Tulosten huonous johtuu siitä, että summauksessa häviää liikaa informaatiota pyöristysvirheiden takia. Laskennan tarkkuutta lisätään April 18, 2008 Kimmo Klemola 44 Fortran 22

23 Lukujen tarkkuus Esimerkki: sarjan summa PROGRAM summaus INTEGER, PARAMETER :: tarkkuus = SELECTED_REAL_KIND(12) REAL (KIND=tarkkuus) :: s = 0.0 INTEGER :: i, n WRITE (*,*) 'Anna termien lukumäärä:' READ (*,*) n WRITE (*,*) 'Termejä: ', n DO i = 1, n s = s + 1/(REAL(i, KIND=tarkkuus)**2) END DO WRITE (*,*) 'Summa on:', s END PROGRAM summaus 1, (oikea 1, ) eli tarkkuus parani viiteen desimaaliin. April 18, 2008 Kimmo Klemola 45 Varoituksia kokonaisluvuista Esimerkiksi seuraava ohjelma antaa tulokseksi E+00 PROGRAM murtoluku INTEGER :: a, b REAL :: c a = 2 b = 4 c = a/b WRITE (*,*) c END PROGRAM murtoluku April 18, 2008 Kimmo Klemola 46 Fortran 23

24 Varoituksia kokonaisluvuista Funktiokutsu REAL(i) Seuraava ohjelma antaa tulokseksi PROGRAM murtoluku INTEGER :: a, b REAL :: c a = 2 b = 4 c = REAL(a)/REAL(b) WRITE (*,*) c END PROGRAM murtoluku April 18, 2008 Kimmo Klemola 47 Ohjausrakenteet IF, SELECT CASE, DO Ohjausrakenteiden avulla voimme toistaa laskutoimituksia niin usein kuin on tarpeen tai suorittaa ne vain halutun ehdon toteutuessa. Erityisesti IF- ja SELECT CASE -rakenteet sekä DOsilmukka mahdollistavat monimutkaisenkin ohjelmalogiikan selkeän toteuttamisen. April 18, 2008 Kimmo Klemola 48 Fortran 24

25 Ehdollinen suoritus: IF-rakenne Edellä oli jo esimerkki IF-rakenteesta: PROGRAM nelio INTEGER :: i, j CHARACTER (LEN=30) :: virhe = 'Virhe: i ei ole valilla [1, 5]' CHARACTER (LEN=10) :: pot2 = 'i**2:' WRITE (*,*) 'Luku i:' READ (*,*) i IF (i < 1.OR. i > 5) THEN WRITE (*,*) virhe ELSE j=i**2 WRITE (*,*) pot2, j END IF END PROGRAM nelio April 18, 2008 Kimmo Klemola 49 Tapausten käsittely: SELECT CASE -rakenne Ohjelma kysyy kokonaislukua ja kertoo onko se negatiivinen, positiivinen vai nolla: PROGRAM merkki INTEGER :: i CHARACTER (LEN=20) :: mark WRITE (*,*) 'Anna kokonaisluku :' READ (*,*) i SELECT CASE(i) CASE (:-1) mark='negatiivinen' CASE (0) mark='nolla' CASE (1:) mark='positiivinen' END SELECT WRITE (*,*) mark END PROGRAM merkki April 18, 2008 Kimmo Klemola 50 Fortran 25

26 Tapausten käsittely: SELECT CASE -rakenne Edellisessä Tapausta CASE (:-1) vastaavat negatiiviset kokonaisluvut { 1, 2,... }. Tapausta CASE (1:) vastaavat positiiviset kokonaisluvut {1, 2,... }. Jos i on nolla, saa muuttuja merkki arvon nolla. April 18, 2008 Kimmo Klemola 51 Toisto: DO-rakenne Edellä on ollut DO-esimerkkejä. Newtonin kaava etsii funktion f(x) nollakohtaa: Olkoon f(x) = e x + x - 5 PROGRAM newt CHARACTER(LEN=*), PARAMETER :: muoto = '(A,F9.6)' REAL :: x = 0.0 INTEGER :: i, n = 20 WRITE (*,'(A,I3)') 'iteraatioita:', n WRITE (*,muoto) 'x:n arvo alussa:', x DO i = 1, n x = x - (EXP(x) + x - 5)/(EXP(x) + 1) WRITE (*,muoto) 'x:n arvo:', x END DO END PROGRAM newt April 18, 2008 Kimmo Klemola 52 Fortran 26

27 Funktiot ja aliohjelmat Tehtävän jakaminen pienempiin osiin on yleensä paras lähestymistapa ratkaistaessa vähänkin suurempia tehtäviä. Fortran 90/95:n yhteydessä tarkoitetaan proseduurilla (procedure) joko funktiota (function) tai aliohjelmaa (subroutine). Proseduureja käyttämällä tehtävä voidaan jakaa pienempiin, nimettyihin osatehtäviin. Proseduurien käyttö paitsi helpottaa ohjelman hahmottamista myös parantaa ohjelman ylläpidettävyyttä: usein tarvitsee muuttaa vain osaa ohjelmakoodin proseduureista. Ohjelman jakaminen itsenäisiin proseduureihin helpottaa myös ohjelmakoodin testausta. Kutakin proseduuria voidaan testata erikseen, ja vian löytyessä se voidaan usein paikallistaa tiettyyn proseduuriin. Fortran-kieltä on käytetty jo vuosikymmeniä ohjelmistoteollisuuden välineenä. Ohjelmoijan käytettävissä onkin monipuolinen valikoima valmiita proseduureja. Saatavilla on esimerkiksi aliohjelmakirjastot IMSL ja NAG, jotka sisältävät kumpikin yli tuhat proseduuria tieteellisen ja teknisen laskennan perustehtäviin. April 18, 2008 Kimmo Klemola 53 Funktiot ja aliohjelmat Aliohjelman nimi määritellään SUBROUTINE-lauseessa, ja aliohjelmaa kutsutaan CALL-lauseella. Seuraavassa määrittelemme aliohjelman vaihda kahden reaaliluvun arvojen vaihtamiseksi keskenään, mikäli x > y: PROGRAM vaihtotesti REAL :: x, y WRITE (*,*) 'Anna x ja y: ' READ (*,*) x, y WRITE (*,*) 'x,y aluksi: ', x, y IF (x > y) THEN CALL vaihda(x,y) END IF WRITE (*,*) 'x,y lopuksi: ', x, y CONTAINS SUBROUTINE vaihda(a,b) REAL :: a, b REAL :: apu apu = a a = b b = apu END SUBROUTINE vaihda END PROGRAM vaihtotesti April 18, 2008 Kimmo Klemola 54 Fortran 27

28 Tiedostot ja Fortran Seuraavassa esimerkissä tulokset kirjoitetaan tiedostoksi eikä näytölle. Oletuskanavan sijasta käytetään kanavaa 10 (tiedostoon kirjoitus) PROGRAM newt CHARACTER(LEN=*), PARAMETER :: muoto = '(A,F9.6)' REAL :: x = 0.0 INTEGER :: i, n = 20 OPEN (10, FILE = 'esimerkki.txt') WRITE (10,'(A,I3)') 'iteraatioita:', n WRITE (10,muoto) 'x:n arvo alussa:', x DO i = 1, n x = x - (EXP(x) + x - 5)/(EXP(x) + 1) WRITE (10,muoto) 'x:n arvo:', x END DO CLOSE (10) END PROGRAM newt April 18, 2008 Kimmo Klemola 55 Tiedostot ja Fortran Esimerkki.txt näyttää tältä: iteraatioita: 20 x:n arvo alussa: x:n arvo: x:n arvo: x:n arvo: x:n arvo: April 18, 2008 Kimmo Klemola 56 Fortran 28

29 Tiedostot ja Fortran Seuraavassa esimerkissä tiedostosta datat.txt luetaan tiedot, jotka kirjoitetaan uuteen tiedostoon datauusi.txt. datat.txt-sisältö ja ohjelma sekä datauusi.txt: PROGRAM lue_taulukko REAL, ALLOCATABLE, DIMENSION(:) :: a INTEGER :: n OPEN (10, FILE='datat.txt') READ (10, *) n ALLOCATE (a(n)) READ (10, *) a CLOSE (10) OPEN (10, FILE='datauusi.txt') WRITE (10, *) a(n) CLOSE (10) END PROGRAM lue_taulukko April 18, 2008 Kimmo Klemola 57 Fortran 29

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3 Johdatus f90/95 ohjelmointiin H, R & R luvut 1-3 Fortran-kieli ( 3.1-3) IBM 1954, FORmula TRANslator ISO/ANSI standardit f90, f95, f2003 tieteellinen & teknillinen laskenta rinnakkaislaskenta (HPF, openmp)

Lisätiedot

Fortran 90/95. + sopii erityisesti numeriikkaan:

Fortran 90/95. + sopii erityisesti numeriikkaan: Fortran 90/95 + sopii erityisesti numeriikkaan: + optimoivat kääntäjät tehokas koodi + mukana valmiiksi paljon varusfunktioita + kompleksiluvut + taulukko-operaatiot + operaattorit laajennettavissa myös

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 28.1.2009 1 / 28 Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun.

Lisätiedot

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

Lisätiedot

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 26.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 26.9.2018 1 / 21 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa for-käskyn avulla ohjelman, joka toistaa haluttua

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Numeeriset menetelmät

Numeeriset menetelmät Numeeriset menetelmät Luento 2 To 8.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 2 To 8.9.2011 p. 1/33 p. 1/33 Lukujen tallennus Kiintoluvut (integer) tarkka esitys aritmeettiset operaatiot

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo.

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo. 13 Luvun potenssi Kertolasku, jonka kaikki tekijät ovat samoja, voidaan merkitä lyhyemmin potenssin avulla. Potenssimerkinnässä eksponentti ilmaisee, kuinka monta kertaa kantaluku esiintyy tulossa. Potenssin

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 27.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 1 / 30 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

TIE 02100 Johdatus ohjelmointiin

TIE 02100 Johdatus ohjelmointiin TIE 02100 Johdatus ohjelmointiin syksy 2015 Kerttu Pollari-Malmi Copyright c Kerttu Pollari-Malmi Johdanto Tämä on opintojaksolla TIE 02100 Johdatus ohjelmointiin käytetty luentomoniste. Moniste on alunperin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

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

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Valitse ruudun yläosassa oleva painike Download Scilab.

Valitse ruudun yläosassa oleva painike Download Scilab. Luku 1 Ohjeita ohjelmiston Scilab käyttöön 1.1 Ohjelmiston lataaminen Ohjeet ohjelmiston lataamiseen Windows-koneelle. Mene verkko-osoitteeseen www.scilab.org. Valitse ruudun yläosassa oleva painike Download

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python 15. helmikuuta 2009 Merkkijonot Yleistä Käsittely Muotoiltu tulostus Tiedostot Käsittely Lukeminen Kirjoittaminen Modulit Käyttö Seuraava luento

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

Lisätiedot

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

Lisätiedot

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

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

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

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

Juha Haataja, Jussi Rahola ja Juha Ruokolainen

Juha Haataja, Jussi Rahola ja Juha Ruokolainen For t r an 95/2003 Juha Haataja, Jussi Rahola ja Juha Ruokolainen FORTRAN95_2003.indd 3 23.4.2007 12:48:23 Fortran 95/2003 Juha Haataja Jussi Rahola Juha Ruokolainen Tieteen tietotekniikan keskus CSC

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 3.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 3.10.2018 1 / 27 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten ohjelma voidaan jakaa pienempiin osiin käyttämällä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Makrojen mystinen maailma lyhyt oppimäärä

Makrojen mystinen maailma lyhyt oppimäärä Makrojen mystinen maailma lyhyt oppimäärä Makrot osana SAS-teknologiaa Yleiskuva Jouni Javanainen Aureolis lyhyesti Aureolis on jatkuvia Business Intelligence -palveluita tuottava asiantuntijaorganisaatio

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2009 1 / 43 Funktiot Tähän asti esitetyt ohjelmat ovat oleet hyvin lyhyitä. Todellisessa elämässä tarvitaan kuitenkin

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

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

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Python-ohjelmointi Harjoitus 5

Python-ohjelmointi Harjoitus 5 Python-ohjelmointi Harjoitus 5 TAVOITTEET Kerrataan silmukkarakenteen käyttäminen. Kerrataan jos-ehtorakenteen käyttäminen. Opitaan if else- ja if elif else-ehtorakenteet. Matematiikan sisällöt Tehtävät

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 2. Lukujen esittäminen ja aritmetiikka 2.1 Kantajärjestelmät ja lukujen esittäminen Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,... } Positiiviset kokonaisluvut

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä /+^2 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen / +^2 Kopioi molemmat matematiikka-alueet ja liiku alueen sisällä

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.2.2010 1 / 47 Sijoituksen arvokehitys, koodi def main(): print "Ohjelma laskee sijoituksen arvon kehittymisen."

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2009 1 / 33 Valintakäsky if syote = raw_input("kerro tenttipisteesi.\n") pisteet = int(syote) if pisteet >=

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset 815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 31.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 31.1.2011 1 / 41 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Aloitustunti MAA22 Starttikurssi pitkän matematiikan opiskeluun

Aloitustunti MAA22 Starttikurssi pitkän matematiikan opiskeluun Aloitustunti MAA22 Starttikurssi pitkän matematiikan opiskeluun 13. elokuuta 2015 Miksi matikkaa Erityisen tärkeää teknillisillä ja luonnontieteellisillä aloilla Ohjelmointi ja tietojenkäsittelytiede Lääketieteellinen

Lisätiedot

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa 9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.

Lisätiedot

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Muistutus aikatauluista

Muistutus aikatauluista Muistutus aikatauluista (Nämä eivät välttämättä koske avoimen yo:n opiskelijoita Erkki Kailan rinnakkaisella kurssilla) Luento 1: kotitehtävät sulkeutuvat 20.9 12:00, ennen tutoriaalia Tutoriaali 1 sulkeutuu

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014 PHP-kielen perusteet 3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. Heredoc on ominaisuus PHP-koodaamisessa, jolla voidaan kirjoittaa pitkiä tekstejä

Lisätiedot

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

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

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

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita. Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB Datatähti 2019 alku task type time limit memory limit A Kolikot standard 1.00 s 512 MB B Leimasin standard 1.00 s 512 MB C Taulukko standard 1.00 s 512 MB D Ruudukko standard 1.00 s 512 MB E Sanalista

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

Metropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3

Metropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3 : http://users.metropolia.fi/~pasitr/2014-2015/ti00aa43-3004/kt/03/ratkaisut/ Tehtävä 1. (1 piste) Tee ohjelma K03T01.cpp, jossa ohjelmalle syötetään kokonaisluku. Jos kokonaisluku on positiivinen, niin

Lisätiedot

4 Yleinen potenssifunktio ja polynomifunktio

4 Yleinen potenssifunktio ja polynomifunktio 4 Yleinen potenssifunktio ja polynomifunktio ENNAKKOTEHTÄVÄT 1. a) Tutkitaan yhtälöiden ratkaisuja piirtämällä funktioiden f(x) = x, f(x) = x 3, f(x) = x 4 ja f(x) = x 5 kuvaajat. Näin nähdään, monessako

Lisätiedot

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Numeeriset menetelmät

Numeeriset menetelmät Numeeriset menetelmät Luento 3 Ti 13.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 3 Ti 13.9.2011 p. 1/37 p. 1/37 Epälineaariset yhtälöt Newtonin menetelmä: x n+1 = x n f(x n) f (x n ) Sekanttimenetelmä:

Lisätiedot

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

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: 3. Pseudokoodi 3.1 Sisällys Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if-else-rakenteilla. Toisto while-, do-while- ja for-rakenteilla.

Lisätiedot