Tähtitieteen käytännön menetelmiä: I

Koko: px
Aloita esitys sivulta:

Download "Tähtitieteen käytännön menetelmiä: I"

Transkriptio

1 Kevät 2011

2 1- Johdanto

3 Luennot Luennoija Yleistä Paikka: Physicum D211 Maanantaisin kello : Aikataulun muutokset ilmoitetaan luennoilla ja kurssin kotisivulla. Merkki luentomuistiinpanoissa kertoo linkistä www:hen Paljon linkkejä itseopiskeluun sopivaan materiaaliin

4 Kurssin suorittaminen Suorittaminen Laajuus 5 op Paljon harjoittelua luentojen aikana Läsnäolo vapaaehtoista (s.o. jos perusteet hallussa) Suoritus tapahtuu lopputyöllä, joka määrää arvosanan Lopputyön teko aloitetaan parin viikon sisällä Joka tunnin alussa samat rutiinit Jokainen oppii varmasti perusteet. Määrä ei korvaa laatua. Parempi oppia vähän, mutta perusteellisesti. Kiire ei merkitse tuloksellisuutta. Lähtökohta: törmäätte tähän ensi kertaa Lähtökohta: aloitetaan aivan alusta Lähtökohta: keskitytään tekemiseen. Vaara: Saman kurssin vaatimukset kasvavat sitä mukaan, kun luennoitsija itse ymmärtää asioita.

5 Suorituksen tavoite Tavoite Oppia laatimaan tieteellinen dokumentti Linux perusteet Latex perusteet Python perusteet Tieteellisen tiedon hankinnan perusteet Kaikkia sovellettu lopputyössä, koska osaamisen arvioiminen kynällä ja paperilla hankalaa Lopputyön laadinnassa käytetään Linux, emacs, Python ja www-taitoja Lopputyössä laaditaan LAT E X dokumentti (Teksti, kuvat ja taulukot) Lopputyössä analysoidaan fotometrisiä havaintoja Lopputyössä ohjelmoidaan tehospektri (Power Spectrum) ja havaintojen mallinnus (Least squares fit)

6 Yleistä kurssista Esitellään tutkijan tarvitsemat käytännön työkalut Tähtitieteessä koulutetaan tutkijoita FM-tutkinto FT-tutkinto Tutkija tarvitsee työssään huomattavan määrän erilaisia taitoja ja työkaluja Osaa näistä taidoista tarvitaan heti opintojen alussa. Perusteet näistä on hallittava viimeistään Luk-työtä laadittaessa. Parusteet helpottavat opinnäytetöiden laadintaa Opittuaan perusteet voi valita oman tiensä Kokemus: en ole koskaan tarvinnut yli 50% luennoilla esitetyistä asioista. Esimerkiksi: IDL (20 vuotta) Python (muutama kuukausi) Johtopäätös: esittelen ainakin sen, mitä olen tarvinnut. Opetettaviin asioihin on tarjolla omia kurssejaan (ohjelmointi, statistiikka) Käsitellään siis Linux, LAT E X ja Python perusteita, sekä tieteellisen tiedon etsintää, tulkintaa ja esittämistä. Käytännön harjoittelu ja itseopiskelu luennoilla annetuista linkeistä suositeltavaa

7 Tutkijan työ Mitä tutkija tekee? Tutkii (asiantuntijataidot, koulutustaso, kokemus) Julkaisee tutkimustuloksia (tieteellinen kirjoittaminen, tiedonhankinta) Opettaa (pedagogiset taidot, esiintyminen) Ohjaa (pedagogiset taidot, sosiaaliset taidot) Hankkii rahoitusta (kirjoittaminen, viestintätaidot) Johtaa ja suunnittelee (yksiköitä, ihmisiä, projekteja, prosesseja) Viestii (esiintymistaidot, popularisoi, kirjoittaminen) Tutkijan ura LuK-tutkinto vuotta FM-tutkinto vuotta lisää FT-tutkinto vuotta lisää Tutkijatohtori eli Postdoc vuotta lisää Yliopistonlehtori/Vanhempi Tutkija seuraavat n 35 vuotta Professori/Tutkimusjohtaja seuraavat n + m 30 vuotta

8 Miksi suurin osa työajasta tietokoneen ääressä? Tietokoneita tarvitaan esimerkiksi: Havaintojen teossa ja suunnittelussa Havaintojen käsittelyssä ja simuloinnissa Havaintojen mallintamisessa Teorioiden mallintamisessa Julkaisujen laadinnassa Oppimateriaalien laadinnassa Tiedon hankinnassa Harva ongelma selviää päässä laskulla tai paperilla laskettuna Käyttöympäristön (= Linux) perusteet tunnettava Julkaisun laadinnan (= LAT E X) perusteet tunnettava Ainakin yhden ohjelmointikielen (esim. Python) perusteet tunnettava

9 Linux Mikä Linux? Kehittynyt Unix-käyttöjärjestelmästä. Linux on ilmainen. Säästää rahaa, aikaa ja vaivaa. Suosittu luonnontieteissä Ilmaiset ohjelmointityökalut oletusasennuksessa Supertietokoneet pyorivät Linux- ja Unix-järjestelmin, mikä on tärkeää jos haluaa ajaa omia ohjelmiaan. Haittaohjelmia on vähän. Monia tähtitieteessä tarvittavia ohjelmia ei saa Windows-puolelle. Tämän on luokkahuoneen tietokoneiden käyttöjärjestelmä on Linux.

10 L A T E X Mikä L A T E X? Ladontaohjelma Käyttäjä hoitaa asiasisällön, L A T E X hoitaa ulkonäön Tuottaa mm. Postscript ja PDF muotoa Käytetään julkaisujen, hakemusten, raporttien ja materiaalin kirjoittamiseen Suurimmat tähtietieteen julkaisusarjat käyttävät L A T E X:ia Helposti ammattimainen dokumentti: julkaisu, kirja, pro-gradu Monimutkaisetkin yhtälöt suhteellisen helposti Taulukot ja kuvat suhteellisen helposti Paljon (tuhansia) valmiita paketteja eri tehtäviin

11 Python Mikä Python? Tulkattu, vuorovaikuttava olio-ohjelmointikieli Ilmainen Saatavilla kaikille yleisille käyttöjärjestelmille (Linux, Mac, Windows) Suhteellisen helppo oppia Hyvin monipuolinen Suosittu tähtitieteessä ja luonnontieteissä Paljon valmiita paketteja mitä erilaisimpiin tehtäviin. Monissa tähtitieteen ohjelmistoissa on Python-rajapinta. Voidaan yhdistää muihin kieliin: mahdollista kirjoittaa vaativaa laskentaa tarvitsevat osat tehokkaammalla käännetyllä kielellä (C,FORTRAN)

12 Astronomy in World Wide Web WWW:ssä esimerkiksi: Tämä ja monet muut kurssit: Esimerkiksi TSA I Julkaisutietokannat: Lopputyössä käytettävä ADS Kohdetietokannat: Lopputyössä käytettävä SIMBAD Tieteelliset julkaisut: Esimerkiksi Astronomy & Astrophysics Rahoitus: Esimerkiksi Suomen Akatemia Työpaikkoja: Esimerkiksi AAS Job Register Havaintodataa, työkaluja, ohjelmistoja, havaintolaitteiden manuaaleja, konferensseja,...

13 2- Linux

14 Linux Mikä on Linux? Tavoite: Tutustuttaa Linuxin perusteisiin. Tavoite: Kaikki oppivat. Linuxin perusteet ovat jo tutut jne... Lähdekoodi vapaasti saatavilla ja sitä kehitetään jatkuvasti Nykyisin standardiin pohjautuvat monien valmistajien käyttöjärjestelmät Suosittu luonnontieteissä Yleinen mm. yliopistoissa, yrityksissä, supertietokoneissa Samalla koneella voi olla monta yhtäaikaista käyttäjää Turvallinen: Käyttäjä ei pääse käsiksi järjestelmän tai muiden käyttäjien tiedostoihin Ei juuri haittaohjelmia Ohjelmoijaystävällinen: Ilmaisia ohjelmointiympäristöjä ja paljon valmiita kirjastoja. Tarkempaa tietoa esimerkiksi osoitteesta: Linux info

15 Linux Komentotulkki Komentotulkki suorittaa käyttäjän terminaalilta kirjoittamia komentoja Jokainen komento tekee yhden asian hyvin: tulostus, tiedon siirtäminen, verkkoyhteys,.. Hyvin riippuu käyttäjästä, koska valinnanvaraa loputtomiin Asioita ei tarvitse keksiä uudelleen Suuri määrä komentoja: Osa opeteltava ulkoa sujuvaa käyttöä ajatellen Käytännössä komennot opeteltava yksi kerrallaan, s.o. mitä milloinkin sattuu tarvitsemaan Käytännössä monimutkaisemmat komennot kannattaa kirjoittaa ylös, koska vie aikansa ymmärtää ne ja saada ne toimimaan Yksi esimerkki alkeisopaasta

16 Tiedostorakenteista Kotihakemisto Terminaalissa komento: ssh -Y -lusername sky.astro.helsinki.fi Poistuminen komennolla: exit Käyttäjillä on kotihakemisto muotoa /home/username/ Sen alle luodut hakemistot ja tiedostot kuuluvat oletuksena käyttäjälle. Kotihakemisto on käyttäjän henkilökohtainen tila koneella. Oikeudet hakemistopuussa kotihakemiston ulkopuolella oleviin tiedostoihin ovat pääosin rajoitettuja. Linuxin tiedostorakenne on puumainen. Sen juurihakemisto on /. Kokeile komentoa: cd /. Erilliset kiintolevyt ja muut vastaavat ovat osa tätä puuta, eivätkä käyttäjälle ulkoisesti eroa hakemistoista.

17 Hakemistot Hakemistotermejä Tiedostot ja hakemistot on siis tallennettu puumaiseen rakenteeseen (directory tree) Juuri (root, /) Käyttäjän kotihakemisto (/home/) (home directory) Voidaan lyhentää ~ Työhakemisto (/home/username/) (work directory) Näkyy komentorivillä./ Ylähakemisto (/home/username/nimi/) (parent directiory) Hakemistoja luodaan komennolla mkdir Komennoissa isot ja pienet kirjaimet merkittäviä (case sensitive) Kokeile komentoja: MKDIR tai Mkdir Ei kaikkia tiedostoja kotihakemistoon Käytä hakemistoja tiedon järjestelemiseen, esim. aiheittain.

18 Perustermejä Absoluuttinen polku Ilmaisee tiedoston tai hakemiston sijainnin hakemistopuussa juuresta lähtien. Esimerkkipolku: /home/username/kurssit/ Suhteellinen polku Ilmaisee tiedoston tai hakemiston sijainnin hakemistopuussa siitä hakemistosta lähtien, missä työskentelet. Esimerkiksi../kurssit/ komento cd.. vaihtaa hakemistoa alaspäin (aina juureen asti) Kokeile: Toista komentoa cd.. kunnes olet juuressa Kokeile: komentoa ls.. Kokeile: komentoa ls../home/

19 Tiedosto ja hakemisto peruskomentoja Peruskomennot mkdir nimi luo hakemiston nimi Kokeile komentoa mkdir tkm pwd tulosta nykyinen työhakemisto cd nimi vaihda hakemistoa cd palaa kotihakemistoon /home/username/ ls listaa hakemiston sisältö ls *.dat tulosta kaikki.dat loppuiset tiedostot (* merkki on jokeri ) cp nimi1 nimi2 kopioi tiedoston mv nimi1 nimi2 siirtää tiedoston rm nimi tuhoaa tiedoston touch nimi luo tyhjän tiedoston nimi rmdir nimi tuhoaa hakemiston nimi

20 Hakemistojen idea Esimerkki hakemistoista Luodaan nyt tälläinen hakemistorakenne /home/username/ /home/username/tkm/ /home/username/jotainmuuta/ /home/username/tkm/ohjelmat/ /home/username/tkm/lahteet/ /home/username/tkm/lopputyo/ Harjoitellaan nyt edellisen sivun komentoja

21 Tietoa komennoista Kuinka ottaa selvää kommennoista Käyttö: komento -opt1 --opt2 argumentti Esimerkiksi: Mitä tiedostoja tai hakemistoja on hakemistossa /home/username/ mukaan lukien. merkillä alkavat tiedostot? ls -a /home/username/ Komento man arg näyttää komennon arg manuaalisivut Komento info arg näyttää komennon arg infosivut Tarvitaan tietoa siitä, kuinka tiedostoja tai hakemistoja kopioidaan Käytetään komentoja man cp tai info cp Poistuminen näiltä sivuilta komennolla q Kokeillaan komentoa cp -i

22 Komentotulkki Komentotulkin käyttö Komentoja voi täydentää sarkaimella (tabulator) Esimerkiksi ho tabulator tuottaa host Myös tiedoston tai hakemiston nimiä voi täydentää Annetut komennot tallentuvat komentopinoon Nuolinäppäimillä voi selata komentopinoa Nuolinäppäimillä voi editoida komentoa Esimerkiksi komento history 10 tulostaa näytölle 10 viimeiksi annettua komentoa:

23 Komentotulkin käyttö Komentotulkin käyttö Komennon ulosanti voidaan ohjata suoraan toiseen komentoon tai tiedostoon Esimerkki komennosta tiedostoon käytöstä: ls > aaa tulostaa hakemiston sisällön tiedostoon aaa Komento cat aaa tulostaa näyttöön syntyneen tiedoston aaa Komennosta komentoon esimerkki: grep abc /home/username/* sort - komento grep abc etsii ne tiedostot * hakemistossa /home/username/ joissa esiintyy merkkirivi abc ja sort - tulostaa löydetyt tiedostot aakkosjärjestykseen Komennoille voidaan siis putkittaa (pipe, ) toisen komennon tuloksia Putkeen voi liimata peräkkäin useita komentoja Putkia en ole juurikaan tarvinnut

24 Alias Alias Komennoilla on normaalisti oletuskäyttäytyminen (mm. oletusflagit) Oletuskäyttäytymistä voidaan muuttaa Komennoista saadaan useita eri muunnelmia Komento cp file1 file2 kopioi tiedoston file1 sisällön tiedostoon file2 Jos file2 on olemassa, kirjoitetaan mitään kysymättä tiedoston päälle Komento cp -i kysyy ensin, haluatko varmasti? alias cp= cp -i määrittelee uuden komennon cp, joka käyttäytyy kuten cp -i Pitkät usein käytetyt komennot kannattaa lyhentää alias nimi= pitkä_komento --ja --flagit Aliaksia on ikävä määritellä joka kerta erikseen Aliakset kannattaa laittaa tiedostoon /home/username/.bashrc /home/username/.bashrc on alustustiedosto, joka luetaan joka kerta kun komentotulkki käynnistyy

25 Alias Alustustiedosto Esimerkki (teillä samanlainen) alustustiedostosta /home/username/.bashrc #.bashrc # User specific aliases and functions alias c= clear alias cp= cp -i alias rm= rm -i export HISTSIZE=50 alias psp0= lpr -PHewlett-Packard-HP-Laserjet-1200 # Source global definitions if [ -f /etc/bashrc ]; then. /etc/bashrc fi Komento clear kommennoksi c Komento cp kommennoksi cp -i Komento rm kommennoksi rm -i Komento psp0 helpottaa printtaamista printterille Hewlett-Packard-HP-Laserjet-1200

26 Ympäristömuuttujat Ympäristömuuttujat tallentavat: Komentotulkin tarvitsemaa tietoa, lyhenteitä, polkuja,... Komento env kertoo, mitä ympäristömuuttujia on asetettu Ympäristömuuttujia ja asetuksia voi muuttaa alustustiedostossa.bashrc Kokeilkaa esimerkiksi alias emacs= emacs -fg black -bg yellow -cr black Esimerkiksi export HISTSIZE=50 Muuta tietoa alustustiedostoista Jos käytössä bash (kuten nyt): alustustiedosto.bashrc Jos käytössä chs: alustustiedosto.cshrc Kirjoittakaa www:hen what is bash in Linux ja jos kiinnostaa, yrittäkää ymmärtää loputtomat selitykset. Sen sijaan, jatketaan kohti lopputyön aloittamista.

27 Tekstin selaus komentoja less Käytetään tekstitulosteiden selaamiseen. less tiedosto Kokeile less.bashrc Kokeile ls -a less grep Käytetään tekstin etsimiseen tekstitulosteesta. grep sana tiedosto Kokeile grep a.bashrc Kokeile ls -a grep c head Tulostaa n riviä tiedoston alusta. head -n tiedosto Kokeile head -5.bashrc tail Tulostaa n riviä tiedoston lopusta. tail -n tiedosto Kokeile tail -4.bashrc wc Laskee rivit, sanat ja merkit tiedostosta. wc tiedosto Kokeile wc.bashrc Kokeile wc -m.bashrc (merkit) Kokeile wc -l.bashrc (rivit)

28 Muita Linux komentoja whatis Kertoo lyhyesti mitä komento tekee. whatis komento Kokeile whatis wc man Näyttää komennon manuaalisivut. man komento Kokeile man wc Ulos komennolla q info Näyttää komennon infosivut. info komento Kokeile info wc Ulos komennolla q help Tulostaa komennon opasteen. komento -h / --help Kokeile ls -h / --help version Tulostaa komennon version. komento -v / --version Kokeile ls -v / --version En ole... which Näyttää komennon sijainnin hakemistopuussa. which komento Kokeile which ls En ole...

29 Muita Linux komentoja clear Tyhjentää näytön Kokeile komentoa clear df Tulostaa vapaan levytilan. df df -h tulostaa ihmisystävällisessä muodossa. Kokeile komentoa df -h /home/username/ du Tulostaa levytilan käytön. du Kokeile komentoa df -h /home/username/tkm/ Kokeile komentoa du -h --summarize

30 Aloitetaan lopputyö, vaikka... Terroristit ja Marxin Pääoma : Mitä me tätä luetaan? Mennään ja... joku? Vaikka Linux, Python ja Latex ei hallussa, edioidaan emacs:lla tiedosto kokeilu1.tex % LATEX tiedoston kommenttirivit alkavat merkillä "%" \documentclass{article} % \documentclass[12pt,finnish]{article} % Ja näitähän riittää % \textwidth=16.5cm % Hyödyllisiä komentoja % \textheight=25.0cm % -"- % \voffset=-2.0cm % -"- % \hoffset=-2.0cm % -"- % \usepackage[utf8]{inputenc} % Näillä onnistuu skandit % \usepackage[finnish]{babel} % -"- % \usepackage[t1]{fontenc} % -"- % \usepackage{graphics} % Tällä onnistuu kuvien käyttö \newcommand{\apj}{apj} % 1. itse luotu LATEX-komento \begin{document} \section{olipa kerran} Tästä se lähtee \cite{app92} jne.. \cite{kra80} \cite{kui60} \bibliographystyle{plain} %\bibliographystyle{alpha} % Ja näitähän riittää... \bibliography{lahteet} \end{document} Selkeitä esimerkkejä bibliography komennon käytöstä löytyy vaikkapa täältä

31 Aloitetaan lopputyö, vaikka... Vaikka Linux, Python ja Latex... edioidaan emacs:lla toinenkin tiedosto title={{a mechanism for orbital period modulation in close binaries}}, author={applegate, J.H.}, journal={\apj}, volume={385}, pages={ }, year={1992} title={{mean-field magnetohydrodynamics and dynamo theory}}, author={krause, F. and R{\"a}dler, K.-H.}, publisher={pergamon Press}, address={oxford}, year={1980} title={{tests concerning random points on a circle}}, author={kuiper, N.H.}, booktitle={proc. Koningkl. Nederl. Akad. Van Wettenschappen, Ser. A}, volume={63}, pages={38--47}, year={1960} }

32 Aloitetaan lopputyö, vaikka... Vaikka Linux, Python ja Latex ei... kokeillaan komentoja: latex kokeilu1 bibtex kokeilu1 latex kokeilu1 latex kokeilu1 dvips kokeilu1 -o evince kokeilu1.ps Vaikka Linux, Python ja Latex ei... kokeillaan komentoja: pdflatex kokeilu1 bibtex kokeilu1 pdflatex kokeilu1 pdflatex kokeilu1 evince kokeilu1.pdf Vaikka... ei... Voitte nyt aloittaa lopputyön tekemisen! Kaikki (nämäkin) asiat selkenevät kyllä tulevien luentojen aikana.

33 Tiedostojen käyttöoikeudet Käyttäjät ja ryhmät Linuxissa jokainen käyttäjä (user) kuuluu yhteen tai useampaan ryhmään Eri ryhmillä on erilaisia oikeuksia suorittaa komentoja ja käsitellä tiedostoja, joten käyttäjän oikeudet tehdä asioita riippuvat siitä, mihin ryhmiin käyttäjä kuuluu. Komento groups kertoo mihin ryhmiin käyttäjä kuuluu. Jokaisella tiedostolla ja hakemistolla on omistaja muotoa käyttäjä ja/tai ryhmä. Käyttäjille (u), ryhmille (g), ja muille (o) on eri luku- (r) ja kirjoitus- (w) ja suoritusoikeudet (x). Listaa tiedostosi komennolla ls -ls Esimerkiksi -rwxr-x--x tarkoittaa: käyttäjällä on rwx oikeudet ryhmällä on r-x oikeudet muilla on --x oikeudet Tulos d-w-r-x--x tarkoittaa, että kyseessä on hakemisto (directory), koska alussa on d.

34 Tiedostojen käyttöoikeudet chmod Tiedoston omistaja voi muuttaa käyttöoikeuksia Sopiva komento on chmod [ugoa] (+-) [rwx] tiedosto (u)ser käyttäjä, (g)roup ryhmä, (o)thers muut, (a)ll kaikki (s.o. u, g ja o yhdessä) + lisää, - poista (r)ead lue, (w)rite kirjoita, e(x)ecute suorita Esimerkiksi komento chmod g+rwx nimi antaa ryhmällä luku-, kirjoitus- ja suoritusoikeudet tiedostoon tai hakemistoon nimi Esimerkiksi komento chmod go-rwx nimi poistaa ryhmällä ja muilta luku-, kirjoitus- ja suoritusoikeudet tiedostoon tai hakemistoon nimi

35 Prosessit Prosessit Jokainen komento käynnistää vähintään yhden prosessin. Jokaiselle prosessilla tunniste (pid), jolla prosessiin voidaan viitata. Jokaisella proseesilla on prioriteetti, joka kertoo kuinka paljon prosessi voi käyttää koneen resursseja muihin prosesseihin nähden. Normaalisti komento käynnistää prosessin aktiiviseksi. Komento komento & käynnistää komennon prosessin saman tien taustalle Esimerkiksi komento emacs nimi & siirtää editorin taustalle ja terminaalissa voi antaa muita komentoja. ctrl-z vie käynnissä olevan komennon taustalle. Esimerkiksi komento emacs nimi avaa editorin, mutta terminaalissa ei voi antaa käskyjä. Komento ctrl-z vie prosessin taustalle ja terminaalissa voi taas antaa muita komentoja. ps tulostaa käynnissä olevat aktiiviset prosessit top listaa tietoa käynnissä olevista prosesseista järjestettynä prosessorin käytön mukaan. kill pid lopettaa prosessin, jonka tunniste on pid, jos tähän on oikeudet.

36 Prosessit ctrl-c lopettaa aktiivisen prosessin. jobs tulostaa käynnissä olevat työt Jos kommento jobs esimerkiksi tulostaa [3]- Running acroread tiedosto1.pdf & [5]+ Running emacs tiedosto2.dat & niin tässä tilanteessa komento fg 5 palauttaa taustalla olevan komennon emacs tiedosto2.dat aktiiviseksi Taustalla olevat prosessit saattavat joskus pysähtyä bg ajaa taustalla olevia prosesseja Jos kommento jobs esimerkiksi tulostaa tiedon, että ohjelma nimisen tiedoston ajo on pysähtynyt [4]+ Stopped source ohjelma & niin tässä tilanteessa komento bg 4 aktivoi komennon source ohjelma. Jos tämän jälkeen annetaan uudelleen komento jobs, tulostus on [4]+ Running source ohjelma &

37 Prosessit Komennon suorittamisen prioriteetti on välillä 20 ja +19. Prioriteetin oletusarvo 0. Mitä pienempi prioriteetin arvo on, sitä tärkeämpi on prosessi. Käyttäjä voi muuttaa prosessin prioriteetin arvoa suuremmaksi, eli vähemmän tärkeäksi. (Ainoastaan käyttöjärjestelmän hoidosta vastaavat voivat muuttaa prosessien prioriteettia pienemmäksi.) Jos tietää prosessin vaativan aikaa, on hyvä muistaa muita käyttäjiä säätämällä prioriteettia ylöspäin, 19 on hyvä tunteja vaativiin ajoihin. nice arvo komento käynnistää komennon prioriteetilla arvo. renice arvo pid muuttaa prosessin pid prioriteetiksi arvo. Esimerkiksi komento nice -n +3 python käynnistää Python istunnon prioriteetilla +3. Jos tässä tilanteessa komento ps tulostaa pts/0 00:00:00 python muuttaa komento renice prioriteetin arvoon 5.

38 Linux: tar tar komennolla voi liittää useampia tiedostoja yhteen samaan arkistoon (engl. archive). Komento tar cvf arkisto.tar *.DAT tekee arkiston nimeltä arkisto.tar, joka sisältää kaikki.dat loppuiset tiedostot Tämän arkiston voi purkaa komennolla tar -xvf arkisto.tar takaisin yksittäisiksi tiedostoiksi. Komento tar cvzf arkisto.tar.gz *.DAT tekee suoraan kompressoidun (engl. compress) arkiston, jolloin se vie vähemmän levytilaa. Tämän kompressoidun arkiston voi purkaa komennolla tar -xvzf arkisto.tar.gz takaisin yksittäisiksi tiedostoiksi. Kaikkien komentojen kaikkia vaihtoehtoja ei tarvitse (eikä kannata!) opetella ulkoa, koska hyviä esimerkkejä tämänkin komennon käytöstä löytyy vaikkapa täältä Esimerkiksi tuon www-sivun alalaidassa ovat ohjeet gzip komennosta (kts. kompresssoi mutta samalla deletoi jne...)

39 Linux: kopiointi koneelta toiselle Komennoilla scp ja rcp voi siirtää tiedostoja ja hakemistoja koneelta toiselle. Esimerkiksi jos työskentelet koneella nimeltä sky hakemistossa /home/username/. Voit kopioida kaikki tämän hakemiston.dat päätteiset tiedostosi toisen koneen sky1 hakemistoon /home/username/hakemisto1/ komennolla scp *.DAT sky1:/home/username/hakemisto1/ Tämän komennon jälkeen täytyy vielä antaa koneen sky1 salasana. Esimerkiksi jos työskentelet koneella nimeltä sky hakemistossa /home/username/. Voit kopioida kaikki koneen sky1 hakemistossa home/username/hakemisto1/ olevat.pro loppuiset tiedostot koneen sky hakemistoon /home/username/hakemisto2/komennolla rcp /home/username/hakemisto2/ Tämän komennon jälkeen täytyy vielä antaa koneen sky1 salasana. Komennoissa on paljon vaihtoehtoja (s.o. to, from and between hosts ). Komennon rcp voi vaikkapa korvata scp komennolla, kuten tässä ohjeessa. Kopioitessa/siirrettäessä suuria määriä dataa/tietoa, kannattaa käyttää ensin tar komentoa.

40 3- Python

41 Ohjelmointi - perusteet Ohjelmoinnissa tarvitaan Tekstieditori ohjelmien laadintaa varten Tällä kurssilla opetetaan emacs teksti editorin käytön alkeet. Yksi monista sähköisistä emacs referenssiopaista. Kääntäjä tai tulkki, joka kääntää ohjelman lähdekoodin koneen ymmärtämään muotoon. Tällä kurssilla opetetaan Python ohjelmoitikielen alkeet. Yksi monista sähköisistä Python referenssiopaista

42 emacs:n alkeet emacs emacs nimi komento aloittaa tiedoston nimi editoinnin. Tällä komento valinnalla terminaaliin ei voi antaa uusia komentoja. Kokeile komentoa emacs nimi & Nyt terminaaliin voi antaa uusia komentoja, sekä editointi-ikkunaan lisätä tekstiä. Tiedostoon tehdyt muutokset voit tallentaa ikkunan valikosta kohdasta File valitsemalla Save Tallenna aina välillä editoidessa. Miksi? Voit tallentaa editoinnin tulokset ja poistua editorista ikkunan valikon kohdasta File valitsemalla Quit. Ohjelma kysyy tallennetaanko muutokset. Vastauksesi voi olla y tai n. Mieti, miksi voit joskus joutua vastaamaan n ja kokeile, mitä silloin tapahtuu. Tarjolla on loputtomasti komentoja. Kokeile esimerkiksi komentoa etsimiskomentoa ctrl s Usein käytettyjä ovat erityisesti cut ja paste Loput oppii pikku hiljaa editoidessa. Tulet pian huomaamaan, miksi emacs on Python ystävällinen editori.

43 Seuraava emacs sovellutus Seuraava emacs sovellutus Teillä pitäsi olla jokseenkin tämän tyyppinen alustustiedosto /home/username/.bashrc #.bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then. /etc/bashrc fi Ennen editointi komentoa emacs.bashrc & kannattaa antaa komento cp.bashrc.bashrcold. Miksi? Sen jälkeen edioidaan alustustiedostoon.bashrc rivin # User specific... alle omat alias määritelmä rivit. alias c= clear alias cp= cp -i alias rm= rm -i

44 Ohjelmoinnin peruskäsitteitä Lähdekoodi koostuu: - Muuttujista - Funktioista, aliohjelmista - Ohjausrakenteista Muuttuja Symboloi muuttuvaa suuretta, kuten lukua tai tekstinpätkää. Funktio, aliohjelma Tekee jonkin tietyn asian. Funktio ottaa vastaan muuttujan (tai useita), tekee jotain annetuilla muuttujilla, ja palauttaa tuloksen uutena muuttujana. Aliohjelma ottaa vastaan muuttujia, tekee jotain, ja muuttaa annettuja muuttujia. Ohjausrakenne Ohjaa ohjelman toimintaa. Voi mm. käskeä toistamaan tiettyä ohjelman kohtaa useita kertoja, tai valita useista mahdollisista suorituspoluista yhden.

45 Pythonin alkeet Python on Vapaaseen lähdekoodiin perustuva ilmainen tulkattu kieli Saatavilla Linuxille, Macille ja Windosille Tehokas oikein käytettynä Jatkuvasti kehittyvä python komento käynnistää Python tulkin >>> Python tulkista >>> pääsee ulos komennolla ctrl d 1. Käyttötapa: komentotulkissa komento: python tiedosto 2. Käyttötapa: Python komentotulkissa komento: >>>execfile( tiedosto ) 3. Käyttötapa: Ohjelman tiedosto ensimmäinen rivi kirjoitetaan muotoon #!/usr/bin/python/ Silloin ohjelma voidaan ajaa komennolla./tiedosto 1. Käyttötapa yleisin näiden luentomuistiinpanojen esimerkeissä

46 Ensimmäinen Python ohjelma Laadi emacs:lla seuraavanlainen ohjelma/tiedosto harjoitus1.py # komenttirivi: Tama on ohjelmani harjoitus1.py print "Hello world!" # ohjelmani paattyy tahan Käyttö suoraan komentotulkista: python harjoitus1.py Käyttö Python tulkista: >>> execfile( harjoitus1.py ) Tulos on sama jos annat Python tulkissa komennon >>>print "Hello world" Tulos on sama jos annat Python tulkissa komennon >>>print Hello world eli molemmat merkit ja toimivat. Editoi sana Tama muotoon Tämä ja aja ohjelma. Ohjelma ei toimi. Opetus: älä käytä skandeja tai erikoismerkkejä. Editoi yksi tyhjä merkki komennon print "Hello world!"eteen ja aja ohjelma. Ohjelma ei toimi. Opetus: rivien alussa ei saa olla tyhjää. Rivien sisennyksessä on omat sääntönsä. Kommenttirivit alkavat merkillä #. Python ohittaa ne. Kommenttirivejä kannattaa käyttää ohjelman selventämiseen.

47 Toinen Python ohjelma Laadi emacs:lla seuraavanlainen ohjelma/tiedosto harjoitus2.py # komenttirivi: Tama on ohjelmani harjoitus2.py from math import cos a = 1.0 b = 2.0 c = a + cos(c) print c # ohjelmani paattyy tahan Kun ajat ohjelman, saat virheilmoituksen File "harjoitus2.py", line 5, in <module> c = a + cos(c) NameError: name c is not defined Editoi rivi 5 muotoon c = a + cos(b) ja aja ohjelma uudelleen. Huomaa, että emacs-editorin alalaidassa näkyy rivin numero (tällä kertaa L5 ).

48 Python muuttujien alkeet Muuttuja Muuttuja on jokin olio koneen muistissa. Yksinkertaisin tapa luoda uusi muuttuja on sijoittaa tunnukseen halutun tyyppinen olio. Komento x = 1 luo kokonaislukumuuttujan arvolla 1 ja tunnuksella x. Komento x = int() luo tyhjän kokonaislukumuuttujan. Merkillä ; voi yhdistellä useita komentoja samalle riville. Kokeile Python tulkissa komentoa >>>a=1 ; b= abc ; print a ; print b Se tulostaa 1 abc Muuttujan voi myös halutessaan tuhota funktiolla del(muuttuja) Muuttujan tyyppi Muuttujan tyyppi määrittää minkälaista tietoa muuttuja pitää sisällään. Toisin kuin monissa muissa kielissä, muuttujan tyyppiä ei Pythonissa tarvitse erikseen määritellä ennen muuttujan käyttöönottoa, vaan tyyppi määräytyy automaattisesti luontivaiheessa. Muuttuja tyyppi saadaan selville funktiolla komennolla type(muuttuja)

49 Kokeile komentoa a=1 ; b=1.0; c="abc" ; print type(a),type(b),type(c) Se tulostaa <type int > <type float > <type str > Muuttujat ovat tyyppiä: a kokonaisluku (int), b reaaliluku (float) ja c merkkijono (str) Kokeile komentoa a=[1,1.0,"abc"] ; print a,type(a),type(a[0]),type(a[1]),type(a[2]) Se tulostaa [1, 1.0, abc ] <type list > <type int > <type float > <type str > Muuttuja a on tyyppiä lista (list). Listan alkiot ovat tyyppiä: ensimmäinen alkio a[0] kokonaisluku, toinen alkio a[1] reaaliluku ja kolmas alkio a[2] merkkijono. Tunnus Tunnus toimii osoittimena muuttujaan eli muuttujan nimenä. Yhteen muuttujaan voi osoittaa monta tunnusta. Tunnuksen voi vaihtaa osoittamaan johonkin toiseen muuttujaan kesken ohjelman. Toisin kuin monessa muussa kielessä, tunnus ei ole sidottu mihinkään tiettyyn muuttujatyyppiin.

50 Laadi emacs:lla seuraavanlainen ohjelma/tiedosto harjoitus3.py # komenttirivi: Tama on ohjelmani harjoitus3.py a = [1, ab ] ; b = a print Tassa vaiheessa I :, a=,a, ja, b=,b a[1]=1.0 # Muutetaan a:n toinen alkio reaaliluvuksi print Tassa vaiheessa II:, a=,a, ja, b=,b # ============= Yksi tapa valttaa tama ongelma: c = [1, cd ] ; d=tuple(c) # tuple tyyppista muuttujaa d ei voi muuttaa print Tassa vaiheessa III:, c=,c, ja, d=,d c[1]=2.0 # Muutetaan c:n toinen alkio reaaliluvuksi print Tassa vaiheessa IV:, c=,c, ja, d=,d # ============= Toinen tapa valttaa tama ongelma: e = [1, ef ] ; f=e[:] # Eli kopioidaan e:n kaikki alkiot muuttujaan f print Tassa vaiheessa V:, e=,e, ja, f=,f e[1]=3.0 # Muutetaan e:n toinen alkio reaaliluvuksi print Tassa vaiheessa VI:, e=,e, ja, f=,f

51 Kokeile komentoa python harjoitus3.py. Tulostus on Tassa vaiheessa I : a= [1, ab ] ja b= [1, ab ] Tassa vaiheessa II: a= [1, 1.0] ja b= [1, 1.0] Tassa vaiheessa III: c= [1, cd ] ja d= (1, cd ) Tassa vaiheessa IV: c= [1, 2.0] ja d= (1, cd ) Tassa vaiheessa V: e= [1, ef ] ja f= [1, ef ] Tassa vaiheessa VI: e= [1, 3.0] ja f= [1, ef ] Tunnukset a ja b viittasivat samaan muuttujaan, joten a:n toisen alkion arvon ja tyypin muutos a[1]=1.0 muutti myös b[1] arvon ja tyypin. Muuttujaan d kopioitiin c:n alkioiden arvot, mutta komento d=tuple(c) teki listan, jonka alkioita ei voi muuttaa. joten c:n toisen alkion muutos ei muuta ja d[1]= cd arvoa. Muuttujaan f kopioitiin e:n kaikki alkiot, jolloin e:n toisen alkion muutos ei muuta ja f[1]= ef arvoa. Käytännössä tämä tarkoittaa, että Python ohjelmat pitää laatia ja tarkastaa huolellisesti. Turha pohtia tätäkään liikaa. Jatketaan kohti lopputyön aloittamista.

52 Python modulit ja Ipython Pythonissa on paljon erilaisia valmiita moduleja Matemaattiset funktiot,... Numpy importoidaan komennolla import numpy Tieteellinen laskenta,... Scipy. importoidaan komennolla import scipy Tulosten visualisointi,... Pylab. importoidaan komennolla import pylab Pythonista on olemassa interaktiivinen versio IPython Kokeile suoraan komentotulkissa komentoa ipython -pylab Kun näyttöön ilmestyy In [1], Kokeile komentoa a=numpy.ones(3) ; print a Kokeile sen jälkeen komentoa a. SARKAIN, missä SARKAIN on näppäin Ipython kertoo interaktiivisesti, mitä kaikkea voit tehdä muuttujalle a, kun aloitat komennon muodolla a. Ipythonin sisällä voi vaikkapa kokeilla erilaisia komentoja ennen kuin kirjoittaa ne editoimansa ohjelman sisään

53 Numeeristen muuttujien tyypit Numeeriset tyypit pitävät sisällään lukuarvoja. Olennaisena tekijänä tyypin valinnassa on, halutaanko käsitellä kokonais- vai reaalilukuja. Kokonaisluvuissa pitää lisäksi valita kuinka suuria arvoja halutaan käsitellä. int - kokonaisluku a=4 long - pitkä kokonaisluku a=\long() float - reaaliluku a=3.45 complex - kompleksiluku a=complex(3,4) or a=3.+4j Kokeile a=1 ; b=1 ; print type(a),type(b),type(a+b),a,b Kokeile a=1 ; b=long() ; print type(a),type(b),type(a+b),a,b Kokeile a=1 ; b=2.2 ; print type(a),type(b),type(a+b),a,b Kokeile a=1 ; b=2e3 ; print type(a),type(b),type(a+b),a,b Tyyppi muuttuu tarkkuuden mukaan

54 Laskutoimitukset numeerisille tyypeille Peruslaskutoimitukset + summa - erotus * kertolasku ** potenssiin korotus / jakolasku Vertailuoperaattorit == yhtä suuri kuin < pienempi kuin > suurempi kuin >= suurempi tai yhtä suuri kuin <= pienempi tai yhtä suuri kuin Matemaattiset funktiot Hyödyllisiä funktioita saadaan käyttöön math-moduulista käskyllä from math import * cos() sin() tan() pow() sqrt() exp() log() radians() degrees() kosini sini tangentti potenssi neliöjuuri eksponentti logaritmi aste -> rad rad -> aste

55 Kokeiluja numeerisille tyypeille Laadi emacs:lla ohjelma # komenttirivi: Tama on ohjelmani harjoitus4.py from math import cos # math-modulista vain cos() funktio import math a=3.14 ; print cos(a) ; print sin(a) Jotta komento sin(a) toimisi, pitäisi lisätä rivi from math import sin # math-modulista vain sin() funktio Laadi emacs:lla ohjelma # komenttirivi: Tama on ohjelmani harjoitus5.py import math as mt # importoidaan koko math-moduli # aletaan kayttaa "math" sijasta lyhennetta "mt" a=3.14 ; print mt.cos(a) ; print mt.sin(a) b=mt.tan(a) ; print b c=mt.pow(2.,3.) ; print c d=mt.sqrt(2.) ; print d Mitään ei tarvitse muistaa ulkoa. Kokeile vaikka Googlessa hakua radians() in Python. Taidot lisääntyvät pikku hiljaa yritys ja erehdys periaatteella.

56 Sarja tyyppiset muuttujat Sarja tyyppinen (sequence types) muuttuja osoittaa listaan muita muuttujia. Sarja tyyppiset muuttujat voidaan jakaa muutettaviin (list) ja ei-muutettaviin (tuple) luokkiin sen mukaan, voidaanko tyypin yksittäisiä alkioita/elementtejä muuttaa. Merkkijonot (str) sisältävät vain merkkejä Listat voivat sisältää mitä tahansa pythonin olioita, kuten toisia listoja. str - merkkijono Esimerkiksi a = "jihuu" list - lista Esimerkiksi a = [1., 2, abc ] tuple - vakiolista Esimerkiksi a = (1., 2, abc )

57 Sarjatyypit - käsitteleminen Listan alkioihin viitataan hakasuluilla. Listan numerointi alkaa nollasta. a[0] = 1.0 asettaa listan ensimmäiseksi alkioksi liukuluvun 1.0. a[1:] = 2.0 asettaa listan alkiot lähtien toisesta listan loppuun. Kokeile a=[5.,1.] ; print a ; a[1]= jotain ; print a Kokeile a=(5.,1.) ; print a ; a[1]= jotain Ei onnistunut, koska kyseessä on tuple. Kokeile a=[5.,1.] ; b=[ jaaha, aha ] ; c=[a,b] ; print c ; print c[0] ; print c[1] Listan c ensimmäinen alkio c[0] on siis myös lista.

58 4- Python ohjelmoinnista

59 Ohjelman peruselementit Python-ohjelman peruselementtejä ovat muuttujat (int, float, list,...) operaattorit (+,-,*,/,...) funktiot (cos(), exp(),...) ohjausrakenteet (if, for,...) kommentit Lisäksi moduulit (math, numpy,...) luokat (numpy.array,...) metodit (string.find(),...) Esimerkki koodin pätkästä # komenttirivi: Tama on ohjelmani harjoitus6.py import math as mt # Modulin importointi import numpy as np # Modulin importointi s = "Meita odotellaan" # Merkkijono t = "Mina olen myyra" # Merkkijono a = np.array([1.0, 2.0]) # Numpy vektori b = 1.0 # Reaaliluku c = np.cos(a) + b # Numpy vektori if s.find("meita") >= 0: # Ohjaus komento ja metodi try: # Ohjaus komento: sisennys print c # toinen sisennys except: # Ohjaus komento: Ei suorita print "Virhe!" # toinen sisennys if t.find("myyra") >= 0: # Ohjaus komento ja metodi try: # Ohjaus komento print c[2] # Huom: ohjelma ei kaadu! except: # Ohjaus komento: Suorittaa print "Virhe!" #

60 Elementtien käyttö Sijoitusoperaattorit a [=, +=, -=, *=, /=] b Kokeile a=4 ;b=2 ; a*=b; print a Siis lyhennys komennosta a=a*b Laskuoperaattorit a = b [+, -, *, /, **] c Kokeile a=10. ;b=4. ; print a**b Ohjausrakenteet Esimerkiksi if for while try Funktio a = funktio(arg1, arg2,...) Metodi a = b.metodi(arg1, arg2,...) Moduuli import moduuli < as modu > from moduuli import [*, nimi] Merkintä [] tarkoittaa pakollinen Merkintä <> tarkoittaa valinnainen Esimerkkejä ohjausrakenteista, funktioista, metodeista ja moduleista seuraavilla sivuilla.

61 Koodin kommentointi Komentit Kommentit ovat tekstiä jonka tulkki jättää huomiotta. Kaikki # merkin jälkeen tuleva teksti lasketaan kommentiksi. Kommentit auttavat muita ymmärtämään koodin toimintaa. Kommentit auttavat koodin laatijaa ymmärtämään oman koodin toimintaa pitkänkin tauon jälkeen. Käytännössä vähemmän käytetyt komennot yms unohtuvat ja ne täytyy tarkistaa koodin kommenteista, mikäli edes enää löytyvät Kommentointi vähentää tulevaa työtä, kun ei tarvitse keksiä pyörää aina uudelleen. Tulevissa esimerkeissä on pyritty selkeään ja opastavaan kommentointiin

62 Koodin lohkorakenne Lohkot Ohjauskomentojen käyttö ja funktioiden määrittely vaativat tavan erottaa rakenteeseen kuuluvan osan muusta koodista. Ohjausrakenteen aloittava komentorivi päättyy merkkin : Ohjausrakenteet aloittavat aina uuden sisennetyn koodilohkon. Lohkot määräytyvät koodin sisennyksen perusteella. Sisennys on neljä tyhjää merkkiä. emacs tekee sisennyksen automaattisesti sarkaimella. Editoi koodi # komenttirivi: Tama on ohjelmani harjoitus7.py a=2 ; b=1 ; d=4 # Muuttujat a ja b print a=,a, b=,b, D=,d # Tulostetaan a, b, d if(a > b): # If ohjaus rakenne # Huomaa: Ohjaus rakenne paattyy merkkiin ":" c = 2.5 * (a + b) # 1. sisennys # Huomaa: Ohjaus rakenne paattyy merkkiin ":" if(c > d): # If ohjaus rakenne print c=,c # 2. sisennys alkaa a += 1.0 # 2. sisennyt jatkuu print a=,a # 2. sisennys jatkuu

63 Ohjausrakenne if on muotoa: if (looginen lause): lause elif (looginen lause): lause else: lause Editoi seuraava esimerkki if ohjausrakenteesta (Esimerkissä ylimääräistä: Modulilla sys yhteys komentotulkkiin, jotta annettua astelukua voidaan vaihtaa suoraan komentotulkissa): # komenttirivi: Tama on ohjelmani harjoitus8.py import sys # sys-modulilla luodaan yhteys komentotulkkiin. print sys.argv[0] # Printtaa komentotulkin 1. merkkijono a=float(sys.argv[1]) # Tulkin 2. merkkijono (str) reaaliluvuksi (float) import math as mt ; b=mt.radians(a) # math-moduli ja asteet radiaaneiksi if (mt.cos(b) >=0 and mt.sin(b)>=0): # Ohjaus rakenne print "1 neljannes" # Sisennys elif (mt.cos(b) <0 and mt.sin(b)>0): # Ohjaus rakenne print "2 neljannes" # Sisennys elif (mt.cos(b) <=0 and mt.sin(b)<=0): # Ohjaus rakenne print "3 neljannes" # Sisennys else: # Ohjaus rakenne print "4 neljannes" # Sisennys Kokeile python harjoitus8.py 179 tulostaa 2 neljannes Kokeile python harjoitus8.py tulostaa 1 neljannes

64 Ohjausrakenne for on muotoa for muuttuja in lista: lause 1 lause 2 Tällä ohjausrakenteella voidaan suorittaa sama koodi halutuille listan elementeille tai toistaa sen alla olevat komentorivit toivotun monta kertaa. Editoi ohjelma # Komenttirivi: Tama on ohjelmani harjoitus9.py for i in range(3): # - Yksinkertaisin for print looppi 1:, i=,i # looppi indekseilla. a=[ opetellaan, pythonia, koko, kevat ]# - Mika tahansa lista for b in a: # sopii for looppi print looppi 2:, b=,b # indeksiksi. k=0 # - Mika tahansa luku for j in range(2): # - Kaksi for looppia # sisakkain for c in a: # print c.find("a")=,c.find("a") # etsi c:sta kirjain "a" print k=,k # k:n nykyinen arvo k=k+1 # k=k+1 sisemmassa loopissa print j=,j ; print k=,k # printtaa ulommassa loopissa

65 Ohjausrakenne while on muotoa while (looginen lause): lause 1 lause 2 Ehdollista toistoa käytetään koodilohkon suorittamiseen niin kauan kun annettu ehto on tosi. Editoi ohjelma # Komenttirivi: Tama on ohjelmani harjoitus10.py k=20 # jokin muuttuja while (k >=9): # ohjausrakenne print 1. ehdolla jatketaan ja k=,k # 1. sisennys k-=3.2 # vahenna 3.2 while (k>-10.5 and k <=10): # ohjausrakenne print 2. ehdolla jatketaan ja k=,k # 2. sisennys k-=2.8 # vahenna 2.8 Jos jokin while looppi jää pyörimään loputtomiin, sen voi lopettaa komennolla ctrl c

66 Ohjauskomento try on muotoa try: lause(-ita) except errortype: lause(-ita) except: lause(-ita) Try yrittää suorittaa annetun lohkon. Käytännössä ohjauskomento try sopii erityisesti koodin virheiden etsintään. Jos lohkosta tulee virheilmoitus, sitä voi käsitellä exceptillä. Esimerkiksi ZeroDivisionError: tarkoittaa, että on jaettu nollalla. Kokeile a= abc ; import math ; print math.cos(a) ja tulosteessa on mukana tieto... TypeError... Virheiden koodaus vaihtoehtoja loputtomiin, joten seuraavan sivun esimerkin jälkeen jatketaan kohti lopputyön suorittamista.

67 Editoi ohjelma # Komenttirivi: Tama on ohjelmani harjoitus11.py a = [1,2] # a[0]=1,a[1]=2 mutta alkiota a[2] ei ole! # Esimerkki 1 try: # Ohjauskomento alkaa print a[2] # Sisennys except: # Jos komento ei onnistu, print "Ei onnistu." # niin printtaa tama teksti. # Esimerkki 2 try: # Ohjauskomento alkaa print a[2] # Sisennys except IndexError: # Jos virhetyyppi IndexError print "Indeksi virhe." # niin printtaa taman teksti, except: # jolloin tata printtaus print "Virhe tunnistamatta" # komentoa ei toteuteta # Esimerkki 3 try: # Ohjauskomento alkaa print a[2] # Sisennys except TypeError: # Jos virhetyyppi TypeError print "Arvo virhe." # niin printtaa taman teksti, except: # jolloin tata printtaus print "Virhe tunnistamatta" # komentoa ei toteuteta

68 Funktioista Funktio on aliohjelma. Funktio syö jotain sisäänsä. Tämä input voi olla muuttujia, tiedostoja, jne.. Funktio palauttaa jotain syömänsä perusteella. Tämä output voi olla muuttujia, jne.. Funktion voi myös muokata annettua input tietoa. Funktioden tarkoitus on jakaa ja jäsentää ohjelmaa, sekä vähentää ohjelmakoodin toistoa. Funktion aloitetaan def funktionimi(argumenttilista): Kaikki funktion seuraavien rivien komennot on sisennetty. Funktio palauttaa muuttujan (tai useita) käskyllä return muuttuja1, muuttuja2,..., muuttuja_n Seuraava esimerkki auttaa lopputyön suorittamisessa, koska tehospektrin kaava on vain hiukan monimutkaisempi. Esimerkin aliohjelma laskee Rayleigh n testi parametrin z(f ) = 1 [( n ) 2 ( n ) 2 ] cos θ i + sin θ i, n i=1 i=1 aikapisteille t 1, t 2,..t n, kun testattu frekvenssi on f ja vaihekulmat ovat θ i = 2πft i.

69 Funktion määrittely Editoi tämä ALIOHJELMA, joka laskee Rayleigh n testi parametrin z(f ) arvon, kun t i = i 1 (i = 1,..., 10) ja testattu frekvenssi on f = 1. # Komenttirivi: Tama on ohjelmani harjoitus12.py # import numpy as np # numpy importoitu import math as mt # math importoitu def rayleightest( t, f): # Funktio alkaa """ Input: t = aikapisteet, f = frekvenssi Output: z(f) = Rayleigh n testi parametri Tama teksti nakyy komennolla "help(rayleightest)" ja poistuu komennolla "q". """ pi=mt.pi ; x=2.0*f*pi*t z=(1.0/len(t))*(sum(np.cos(x))**2+sum(np.sin(x))**2) return z # f=1. ; print f=,f # Frekvenssi on f=1. t=np.arange(10.) ; print t=,t # Aikapisteet t=0,1,...,9 z=rayleightest(t,f) ; print z=,z # Rayleigh testin z(f) help(rayleightest) # Helpista ulos komento:"q"

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

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

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python 7. helmikuuta 2009 Ohjelmoinnista Ohjelman peruselementtejä Koodin kommentointi Lohkorakenne Ohjausrakenteet If For While Try Funktiot Käyttö

Lisätiedot

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia L6: linux linux linux: käyttäjän oikeudet Käyttäjällä, username, on käyttöoikeus rajattuun levytilaan du -h /home/username/ tulostaa käytetyn levytilan. Yhteenvedon antaa du -h /home/jetsu/ - -summarize

Lisätiedot

linux: komennoista linux linux

linux: komennoista linux linux L4: linux linux: komennoista linux Komentojen käyttö komento -opt1 -opt2 argumentti Esimerkiksi ls -s *.dat tulostaa työtiedoston.dat loppuiset tiedostot ja niiden koon Esimerkiksi ls -l *.dat tulostaa

Lisätiedot

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia L6: linux linux linux: käyttäjän oikeudet Käyttäjällä, username, on käyttöoikeus rajattuun levytilaan du -h /home/username/ tulostaa käytetyn levytilan. Yhteenvedon antaa du -h /home/jetsu/ - -summarize

Lisätiedot

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 2: Linux

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 2: Linux Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 2: Linux 2009-01-19 Lähtökohdat Mikä Linux? Linux on Ilmainen Unix-tyylinen käyttöjärjestelmä Perusajatuksena lähdekoodin vapaus (=ilmaisuus, luotettavuus,

Lisätiedot

linux: Ympäristömuuttujat

linux: Ympäristömuuttujat L5: linux linux: Ympäristömuuttujat linux: Ympäristömuuttujat linux komentotulkkki toimii asetettujen ympäristömuuttujien mukaan env kertoo asetetut ympäristömuuttujat Yksi tulostuvista riveistä on tyypillisesti

Lisätiedot

linux: komennoista linux linux

linux: komennoista linux linux L4: linux linux: komennoista linux Komentojen käyttö komento -opt1 -opt2 argumentti Esimerkiksi ls -s *.dat tulostaa työtiedoston.dat loppuiset tiedostot ja niiden koon Esimerkiksi ls -l *.dat tulostaa

Lisätiedot

Tieteellinen laskenta I (Scientific Computing I)

Tieteellinen laskenta I (Scientific Computing I) Tieteellinen laskenta I (Scientific Computing I) koodi: 53398, laajuus: 5 op Johdanto Johdanto (kuva:@work.chron.com) Klikkaa tätä www merkkiä Pääset siinä mainitun aiheen www-sivulle Kurssin kotisivu

Lisätiedot

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux L7: linux linux: Prosessit linux: Prosessit Jokainen komento käynnistää vähintään yhden prosessin Jokaiselle prosessilla tunniste PID, jolla prosessiin voidaan viitata. Jokaisella prosesilla on prioriteetti

Lisätiedot

L2: linux linux: Komentotulkki

L2: linux linux: Komentotulkki (kuva:@www.glasbergen.com) Tavoite: Kaikki oppivat linux:n perusteet Perusteet jo tutut Luennoille ja laskuharjoituksiin osallistuminen vapaaehtoista Monia linux alkeisoppaita www linux: Komentotulkki

Lisätiedot

linux: Ympäristömuuttujat

linux: Ympäristömuuttujat L5: linux linux: Ympäristömuuttujat linux: Ympäristömuuttujat linux komentotulkkki toimii asetettujen ympäristömuuttujien mukaan env kertoo asetetut ympäristömuuttujat Yksi tulostuvista riveistä on tyypillisesti

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

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

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux L7: linux linux: Prosessit linux: Prosessit Jokainen komento käynnistää vähintään yhden prosessin Jokaiselle prosessilla tunniste PID, jolla prosessiin voidaan viitata. Jokaisella prosesilla on prioriteetti

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

Luento 4. Timo Savola. 21. huhtikuuta 2006

Luento 4. Timo Savola. 21. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 4 Timo Savola 21. huhtikuuta 2006 Osa I Shell Lausekkeet Komentoriville kirjotettu komento on lauseke echo "foo" echo $USER MUUTTUJA=1 ls -l Rivinvaihto

Lisätiedot

Luento 3. Timo Savola. 7. huhtikuuta 2006

Luento 3. Timo Savola. 7. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 3 Timo Savola 7. huhtikuuta 2006 Osa I Käyttöoikeudet Käyttöoikeudet Monen käyttäjän järjestelmä Prosessit kuuluvat eri käyttäjille Tiedostot kuuluvat

Lisätiedot

Metropolia Ammattikorkeakoulu

Metropolia Ammattikorkeakoulu Metropolia Ammattikorkeakoulu UNIX-käyttöjärjestelmä TX00BW20 Sami Sainio sami.sainio@metropolia.fi Kurssin rakenne ja arvostelu 7 x luennot ja laboratorioharjoitukset Pieni projekti? Kurssin lopussa tentti

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

Hieman linkkejä: http://cs.stadia.fi/~kuivanen/linux/kom.php, lyhyt ohje komentoriviohjelmointiin.

Hieman linkkejä: http://cs.stadia.fi/~kuivanen/linux/kom.php, lyhyt ohje komentoriviohjelmointiin. Linux-harjoitus 9 Linuxin mukana tulevat komentotulkit (mm. bash, tcsh, ksh, jne ) sisältävät ohjelmointikielen, joka on varsin tehokas ja ilmaisuvoimainen. Tähän yhdistettynä unix-maailmasta tutut tehokkaat

Lisätiedot

linux: koneelta toiselle

linux: koneelta toiselle L8: linux linux: arkistointi tar liittää useampia tiedostoja yhteen samaan arkistoon (engl. archive) Esimerkki 1 tar cvf arkisto.tar *.DAT luo arkiston arkisto.tar, joka sisältää kaikki.dat loppuiset tiedostot

Lisätiedot

Kieliteknologian ATK-ympäristö Toinen luento

Kieliteknologian ATK-ympäristö Toinen luento Kieliteknologian ATK-ympäristö Toinen luento Miikka Silfverberg Nykykielten laitos 12. syyskuuta 2011 Miikka Silfverberg (Helsingin yliopisto) Kieliteknologian ATK-ympäristö: Luento 2 12. syyskuuta 2011

Lisätiedot

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

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

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 perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Komentotulkki. Kysymyksiä

Komentotulkki. Kysymyksiä Komentotulkki Komentotulkki ja avustustoiminnot Tux-pingviinin kuva: Larry Ewing, Simon Budig ja Anja Gerwinski Kysymyksiä 1. Miten työskentelen komentotulkilla? 2. Miten komennot annetaan ja käsitellään?

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

Korpusten käsittely clt131, P Luento 4

Korpusten käsittely clt131, P Luento 4 Korpusten käsittely clt131, P2 2006 Luento 4 Nicholas Volk 24.11.2006 Humanistinen tiedekunta Säännölliset lausekkeet: ryhmittely Sulkujen avulla voidaan osoittaa määrällistäjille

Lisätiedot

Luento 2. Timo Savola. 31. maaliskuuta 2006

Luento 2. Timo Savola. 31. maaliskuuta 2006 UNIX-käyttöjärjestelmä Luento 2 Timo Savola 31. maaliskuuta 2006 Osa I Prosessit Prosessien hierarkia Jokaisella prosessilla on numero (process ID, pid) Jokaisella prosessilla on

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

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

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

Julkaiseminen verkossa

Julkaiseminen verkossa Julkaiseminen verkossa H9T1: Tiedostojen vienti internetiin Yliopiston www-palvelin, kielo Unix käyttöjärjestelmästä hakemistorakenne etäyhteyden ottaminen unix-koneeseen (pääteyhteys) komentopohjainen

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

[Jnix näyttökoe. o ei ole sallittua käyttää mitään verkkolevyjakoa tai mitään siihen rinnastettavaa järjestelmdä.

[Jnix näyttökoe. o ei ole sallittua käyttää mitään verkkolevyjakoa tai mitään siihen rinnastettavaa järjestelmdä. v1 081213 DTEK 1043 Opiskelun ja työelämän tietotekniikka [Jnix näyttökoe Tärkeää Naytt«ikokee(ssa/n) o saa hakea ohjeita Internetistä. o ei saa käyttää kurssimateriaaleja. o ei saa käyttää kirjallisia

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Unix. Markus Norrena

Unix. Markus Norrena Unix Markus Norrena Kotitehtävä 1 Mikä on Unix? Kirjoittakaa lyhyesti 10 asiaa (väittämää) mitä Unix on, tai mitä Unix ei ole. Tehtävän 2. osa: Edellisen perusteella ryhmätyö jolla laajennatte Unix-tietämystänne

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

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

linux linux: rm, cp, mv ls Return listaa työhakemiston sisällön

linux linux: rm, cp, mv ls Return listaa työhakemiston sisällön L3: linux linux linux: rm, cp, mv (kuva:@funny-pictures.picphotos.net) ls Return listaa työhakemiston sisällön ls.dat Return tulostaa kaikki työhakemiston.dat loppuiset tiedostot merkki on jokeri cp nimi1

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

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

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

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

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

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

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

YHTEYDEN OTTAMINEN CSC:N KONEELLE HIPPU

YHTEYDEN OTTAMINEN CSC:N KONEELLE HIPPU Johdatus laskennalliseen kemiaan, Harjoitus 1 Harjoituksen tavoitteet ovat - Tutustua ab initio -laskuissa käytettävään laskentaympäristöön - Oppia ottamaan tietokoneluokan koneelta yhteys laskentakoneelle

Lisätiedot

Tieteellinen laskenta I (Scientific Computing I)

Tieteellinen laskenta I (Scientific Computing I) Tieteellinen laskenta I (Scientific Computing I) koodi: 53398, laajuus: 5 op Johdanto Johdanto (kuva:@work.chron.com) Klikkaa tätä www merkkiä Pääset siinä mainitun aiheen www-sivulle Kurssin kotisivu

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

13. Hyvä ohjelmointitapa (osa 1) 13.1 13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

SCI- A0000: Tutustuminen Linuxiin, syksy 2015

SCI- A0000: Tutustuminen Linuxiin, syksy 2015 SCI- A0000: Tutustuminen Linuxiin, syksy 2015 Sisältö SCI- A0000: Tutustuminen Linuxiin, syksy 2015... 1 1. Mikä Linux?... 1 2. Linuxin käyttö graafisesti... 1 3. Pari sanaa komentorivistä... 2 4. Kalapankki...

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

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

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

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

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

linux: arkistointi jjj

linux: arkistointi jjj L8: linux linux: arkistointi tar liittää useampia tiedostoja yhteen samaan arkistoon (engl. archive) Esimerkki 1 tar cvf arkisto.tar *.DAT luo arkiston arkisto.tar, joka sisältää kaikki.dat loppuiset tiedostot

Lisätiedot

Unix-perusteet. Tiedosto-oikeudet

Unix-perusteet. Tiedosto-oikeudet Unix-perusteet Tiedosto-oikeudet Tietoturvaan liittyviä seikkoja kulunvalvonta kellä oikeus päästä laitteiden luokse käyttöoikeudet käyttäjätunnus & salasana tiedostojärjestelmän oikeudet unixissa omistajan,

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

Ohjelmoinnin peruskurssi Y1

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

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

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

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

Komentotulkki (SHELL) C- "perhe" - csh, alkup. C shell. Komentokieli. kieltä. - tcsh - edellisen laajennettu versio

Komentotulkki (SHELL) C- perhe - csh, alkup. C shell. Komentokieli. kieltä. - tcsh - edellisen laajennettu versio UNIX/LINUX-PERUSKURSSI, MUUTTUJAT JA KOMENTOKIELI 1. Komentotulkki Tämä dokumentti kuvaa Unixin komentotulkkien ominaisuuksia sekä johdatuksen Unixin komentokieleen ja komentoskriptien luomisen. Skriptikielenä

Lisätiedot

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

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen CVS Versionhallintajärjestelmä Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen Käytetään komentoriviltä, myös graafisia käyttöliittymiä saatavilla CVS Kaikki tiedostot

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

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

Est.kand Kandidaatintyö ja seminaari: L A T E Xin käyttöönotto

Est.kand Kandidaatintyö ja seminaari: L A T E Xin käyttöönotto Est.kand Kandidaatintyö ja seminaari: L A T E Xin käyttöönotto Luis R.J. Costa Aalto-yliopisto Sähkötekniikan korkeakoulu Syksy 2015 Sisältö Yleistä Minimaalinen suomenkielinen esimerkki Tärkeimmät yksityiskohdat

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Sisällys. Johdatus Linuxiin/Unixiin: Osa 4. Arkistointi ja pakkaus. Hakemistojen ja tiedostojen arkistointi ja pakkaus.

Sisällys. Johdatus Linuxiin/Unixiin: Osa 4. Arkistointi ja pakkaus. Hakemistojen ja tiedostojen arkistointi ja pakkaus. Sisällys Johdatus Linuxiin/Unixiin: Osa 4 Tiedon arkistointi ja pakkaus Komentotulkki - tehokäyttöä Tekstin ladonta Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 9/12/2002 E. Hyvönen:

Lisätiedot

Unix-perusteet. Varmistaminen, tiedon pakkaaminen ja tiivistäminen

Unix-perusteet. Varmistaminen, tiedon pakkaaminen ja tiivistäminen Unix-perusteet Varmistaminen, tiedon pakkaaminen ja tiivistäminen Miksi varmistaminen on tärkeää? Levy menee rikki ongelmia voidaan vähentää mm. RAID-levyillä RAID 5-taso: data kolmella eri levyllä. Jos

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

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

Kieliteknologian ATK-ympäristö Neljäs luento

Kieliteknologian ATK-ympäristö Neljäs luento Kieliteknologian ATK-ympäristö Neljäs luento Miikka Silfverberg Nykykielten laitos 27. syyskuuta 2010 Miikka Silfverberg (Nykykielten laitos) Kieliteknologian ATK-ympäristö: Luento 3 27. syyskuuta 2010

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

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

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

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 9.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2011 1 / 46 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta. Tehtävänanto - Asenna ja testaa LAMP - Aiheuta vähintään 3 virhettä ja analysoi lokista - Tee nimipohjainen virtuaalipalvelin, joissa toimii myös www. (Karvinen, T. 23.09.2013) Työympäristö Tein tehtävän

Lisätiedot