Kemian tekniikan kandidaattiohjelman ohjelmointikurssi (5 op)

Samankaltaiset tiedostot
Kemiantekniikan ohjelmointikurssi CHEM-A2600 (5 op)

Kemiantekniikan ohjelmointikurssi CHEM-A2600 (5 op)

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

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

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

Python-ohjelmointi Harjoitus 2

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

7/20: Paketti kasassa ensimmäistä kertaa

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Tähtitieteen käytännön menetelmiä Kevät 2009

Tutoriaaliläsnäoloista

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

Ohjelmoinnin perusteet Y Python

20. Javan omat luokat 20.1

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

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

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

TIE Johdatus ohjelmointiin

Ohjelmoinnin peruskurssi Y1

Harjoitus 2 (viikko 45)

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

Ohjelmointi 1. Kumppanit

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

T Ohjelmoinnin perusteet Y (Python)

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

4. Lausekielinen ohjelmointi 4.1

Harjoitus 3 (viikko 39)

17. Javan omat luokat 17.1

Ohjelmoinnin perusteet Y Python

T Ohjelmoinnin perusteet Y (Python) Opetusmoniste kevät 2010

Palautetta viime luennosta

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

4. Lausekielinen ohjelmointi 4.1

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Ohjelmoinnin perusteet Y Python

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1 Huom: Istukaa joka paikalle sali tulee täyteen!

C-ohjelmointikielen perusteet, osa 1

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

5/20: Algoritmirakenteita III

Ohjelmoinnin peruskurssi Y1

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

Java-kielen perusteita

Opiskelijan pikaopas STACK-tehtäviin. Lassi Korhonen, Oulun yliopisto

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

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

811120P Diskreetit rakenteet

Kielioppia: toisin kuin Javassa

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

Johdatus ohjelmointiin

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Ohjelmoinnin peruskurssi Y1

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

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

T Ohjelmoinnin perusteet Y (Python)

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

Ohjelmoinnin peruskurssi Y1

Harjoitus 5 (viikko 48)

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

6. Muuttujat ja Java 6.1

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

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

Ohjelmointi 1 / syksy /20: IDE

Harjoitus 6 (viikko 42)

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

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Java-kielen perusteita

Ohjelmoinnin perusteet, syksy 2006

Harjoitustyö: virtuaalikone

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

5. HelloWorld-ohjelma 5.1

Ohjelmoinnin perusteet Y Python

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Transkriptio:

Kemian tekniikan kandidaattiohjelman ohjelmointikurssi (5 op) Antti Karttunen ja Juhani Teeriniemi Osa 1 Ohjelmoinnin peruskäsitteitä, Python, Spyder-kehitysympäristö, tulostaminen, syötteen lukeminen, muuttujat, perusoperaatiot.

Kurssisuunnitelma Luennot/harjoitukset 12 luentokertaa (tiistaisin ja perjantaisin) Alustus päivän aiheeseen ja käytännön ohjelmointitehtäviä Luentotehtävät: MyCourses Tavoitteena tehdä luentotehtävät (jos ei ehdi, voi jatkaa omalla ajalla) Opastusta tehtäviin paikan päällä (Antti ja Juhani) Viikkoharjoitukset MyCourses (ohjelmointitehtäviä ja mahdollisesti muita kysymyksiä) Ohjelmointitehtävät tarkistetaan MyCoursesin Coderunner-toiminnon avulla Projektityö Kemiaan ja kemian tekniikkaan kytkeytyvä pieni projektityö Viimeinen palautuspäivä 22.12. Arvostelu Luentotehtävät 33.3% Viikkotehtävät 33.3% Projektityö 33.3% 2

Kurssikalenteri Aika: 13.00-15.00. Sali: R011 (CHEM tietokoneluokka 3) # Päivä Teema 1 Ti 1.11. Ohjelmoinnin peruskäsitteitä. Pythonin perusteet (tulkki, IDE). Tulostaminen, syötteen lukeminen, muuttujat, perusoperaatiot. 2 Pe 4.11. Kontrollirakenteet (if-elif-else, for, while), vertailuoperaattorit 3 Ti 8.11. Tietorakenteet (lists, tuples, dictionary) 4 Pe 11.11. Tietorakenteet (lists, tuples, dictionary) 5 Ti 15.11. Funktiot, erityyppiset argumentit, moduulit, math-moduuli 6 Pe 18.11. Tiedostojen käsittely 7 Ti 22.11. Datan käsittely yleisemmin, virheenkäsittely 8 Pe 25.11. Numpy (matriisit) + Scipy + Matplotlib 9 Ti 29.11. Numpy (matriisit) + Scipy + Matplotlib 10 Pe 2.12. Olio-ohjelmointi 11 Ke 7.12. Sovellukset kemian tekniikassa 12 Pe 9.12. Klo 9-11! Sovellukset kemian tekniikassa 3

Ohjelmointi & kemian tekniikka Tietotekniikan merkitys yhteiskunnassa näyttää kasvavan jatkossakin Etenkin teollisuudessa yhä useammat työtehtävät tullaan jatkossa automatisoimaan Asioiden automatisointi vaatii ohjelmointia Ohjelmointitaidoilla on jatkossa entistä suurempi merkitys Kemian tekniikassa ohjelmoinnilla merkittävä rooli jo nykypäivänä. Esimerkkejä: Kemian teollisuuden prosessien ohjaus Prosessien simulointi (mallinnus): kemiallinen prosessi mallinnetaan ensin tietokoneella ja siirrytään vasta sitten kalliimpaan kokeelliseen työhön Erilaisten kemiallisten tietokantojen tehokas käyttö vaatii ohjelmointia: materiaali- ja kemikaalitietokannat, rakenne-ominaisuustietokannat Mittausdatan edistynyt käsittely vaatii usein ohjelmointia (tai ainakin se on huomattavasti tehokkaampaa ohjelmoimalla kuin käsityönä Excelillä) Keksitkö lisää esimerkkejä? Kemiallisissa tieteissä ohjelmoinnilla keskeinen rooli monilla osa-alueilla Laskennallinen kemia, mittausdatan käsittely, spektroskopia, prosessimallinnus, tiedonlouhinta (data mining), koneoppiminen (machine learning), 4

Mitä ohjelmointi on Ohjelmoinnissa luodaan tarkka toimintaohje ( ohjelma ), jonka avulla tietokone suorittaa siltä pyydetyn tehtävän Luodaan, koska ohjelmointi on (toivottavasti) luovaa työskentelyä, ei mekaanista suorittamista Ohjelma täytyy kirjoittaa ohjelmointikielellä, joita on satoja Alkuaikoina ohjelmat kirjoitettiin keskusprosessorin konekielellä (esim. bittijonoina 011001 ) Nykyisin käytetään pääasiassa korkeamman tason lausekieliä (kuten Python, Java, C) Lausekielen käskyt muunnetaan konekieleksi Käännetyissä kielissä, kuten C, tämän tekee kääntäjä (compiler) ennen ohjelman suoritusta Tulkatuissa kielissä, kuten Python, tämän tekee tulkki (interpreter) suorituksen aikana Minkä ohjelmointikielen opettelen? Mikä tahansa moderni lausekieli on varsin hyvä valinta. Tärkeintä on oppia ohjelmoinnissa tarvittava ajattelutapa. Ajattelutavan opittuasi uusien ohjelmointikielten oppiminen on varsin helppoa Figure: AJK/wordclouds.com 5

Python-ohjelmointikieli Tällä kurssilla käytetään Python-ohjelmointikieltä. Sen etuja ovat Selkeä kielioppi (syntax). Pythonilla kirjoitettu ohjelma, koodi, on siis varsin luettavaa, ainakin jos hyviä ohjelmointikäytäntöjä on noudatettu Erittäin matala aloituskynnys. Aloittelijakin saa heti aikaan näkyviä tuloksia Python-tulkki itsessään on vapaa ohjelmisto, eli sen lähdekoodi on kaikkien saatavilla. Tämän seurauksena sen voi hankkia ilmaiseksi ja kuka tahansa voi ehdottaa siihen parannuksia. Erittäin vahva ja aktiivinen yhteisö kehittää Pythonia koko ajan Pythonille on saatavissa valtava määrä kirjastoja (library) joita voi hyödyntää omissa ohjelmissa Python soveltuu sekä pieniin että valtaviin ohjelmointiprojekteihin Pythonilla voi toteuttaa myös suurta laskentatehoa vaativia tieteellisiä ohjelmistoja, mutta tällöin raskas laskenta on parasta hoitaa erillisten tieteellisten kirjastojen avulla (NumPy / SciPy, hyödynnetään myös tällä kurssilla!) 6

Anaconda Kurssilla hyödynnämme Anaconda-nimistä Python-jakelupakettia (distribution) Paketti on asennettuna Kemian tekniikan rakennuksen mikroluokkaan 3 (R011) Jakelupaketti sisältää Python-tulkin ohjelmien ajamista varten Valtavan määrän kirjastoja joita voi hyödyntää omissa ohjelmissa Erityisen kattavan kirjastokokoelman tieteellistä ohjelmointia varten Graafisen Spyder-kehitysympäristön, joka helpottaa omien ohjelmien luomista Anacondan perusversio on ilmainen: https://www.continuum.io/downloads Saatavilla Windows-, Linux-, OSX-versiot. Paketin voi asentaa helposti omalle koneelleen Kannattaa ottaa 64-bittinen versio (Python 3.5 tai uudempi!) Tällä kurssilla käytetään Pythonin versiota 3.5. Myös vanhempaa 2.X sarjaa käytetään paljon. 3.X- ja 2.X-versiot eivät ole täysin yhteensopivia 7

Spyder-ohjelmointimpäristö Aja ohjelma tästä (tai paina F5) Vie kursori funktion päälle ja Ctrl+I näyttää ohjeen Ohjelma kirjoitetaan tähän Ohjelma pyörii konsolissa Sekä Console että IPython Console toimivat alkupään tehtävissä. Kun ajat ohjelman, Spyder tallentaa sen ennen ajamista Kannattaa tehdä kurssia varten hakemisto omalle verkkolevylle Kokoa jokaisen harjoituskerran materiaalit omaan alihakemistoonsa 8

Luentotehtävät (avaa MyCourses) Luennoilla tehdään luentotehtäviä, apua saatavilla! Alkuun lämmittelykysymys 9

Ensimmäinen ohjelma Ohjelmakoodi Ajon tulos (kokeile itse, tämä on myös luentotehtävä!) Kurssin ohjelmointitehtävät tarkistetaan tästä eteenpäin Coderunner-toiminnolla. Sitä voi harjoitella MyCoursesissa (sivun alalaidassa): print-funktio tulostaa arvoja konsoliin. Tässä esimerkissä tulostamme merkkijonon (string) Opimme lisää funktioista myöhemmin Ohjelmakoodiin voi lisätä kommentteja joko #-merkin jälkeen tai monirivisiä kommentteja kommentti merkinnällä. Ohjelmien huolellinen kommentointi on ensiarvoisen tärkeää! Muut ymmärtävät, mitä kirjoittamasi koodi tekee Muistat itse, mitä kirjoittamasi koodi tekee! 10

Tulostaminen (print) 11

Syötteen lukeminen (input) Puhutaan seuraavaksi lisää muuttujista 12

Muuttujat Ohjelmoidessa tallennamme tietoa muuttujiin (variable) Esim. input-funktio tallentaa käyttäjän syötteen merkkijonona nimi-muuttujaan: nimi = input( Anna nimesi\n ) Tavallisia muuttujatyyppejä Pythonissa ovat Merkkijonot, string, merkitään lainausmerkeillä ( hei! tai hei! ) Kokonaisluvut, int (2, -2, 1000000) Liukuluvut, float (1.0, -3.00003, 1258.941662) eli desimaaliluvut Kompleksiluvut, complex (2.0 + 3.0j) Totuusarvot, boolean, bool (True, False) HUOM! Älä käytä koodissa koskaan ääkkösiä (ä, ö, å)! 13

Tyyppimuunnokset Helpoin vaihtoehto lukujen lukemiseen input-funktiolla Puhutaan seuraavaksi pyöristämisestä Huh? 14

Kokonaisluvut ja liukuluvut round-funktion ohje (Ctrl+I) 15

Perusoperaatiot Operaatio Kokeile konsolissa + Yhteenlasku 5 + 5 - Vähennyslasku 1000 1 * Kertolasku 11 * 11 / Jakolasku 11 / 5 (tulos = 2.2 = float) // Katkaiseva jakolasku 11 // 5 (tulos = 2 = int) % Jakojäännös 11 % 5 (tulos = 1 = int) ** Potenssiin korotus 2 ** 4 abs(x) Itseisarvo abs(4-16) 16

Vielä print- ja input-funktioista 17

Muuttujat vs. vakiot Usein ohjelmissa on hyvä määritellä joitain kiinteitä arvoja, jotka eivät muutu ajon aikana. Tässä esimerkissä lounaan ja kahvin hintaa on helppo päivittää 18

Tärkeitä Python-resursseja https://docs.python.org/3/ Pythonin virallinen dokumentaatio https://docs.python.org/3/tutorial/index.html (tutorial) https://docs.python.org/3/reference/index.html ( kielioppi ) https://www.tutorialspoint.com/python3/ Varsin selkeä tutoriaali Google Valtavan käyttäjämäärän ansiosta netti on täynnä koodikysymyksiä ja vastauksia niihin (esim. http://stackoverflow.com/) MUISTUTUS! Älä käytä koodissa koskaan ääkkösiä (ä, ö, å)! 19