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 df tulostaa sekä vapaan että käytetyn levytilan. Käytännöllinen alias on alias Tila= df -h /home/username/ Käyttäjillä rajatut oikeudet suorittaa komentoja ja käsitellä tiedostoja linux:ssa käyttäjä kuuluu ainakin yhteen ryhmään. groups kertoo mihin Käyttäjälle: u, Ryhmälle: g & Muille: o on erilaiset oikeudet seuraaviin: Luku: r, Kirjoitus: w & Suoritus: x Listaa tiedostosi komennolla ls -ls linux: käyttäjän oikeudet Esimerkiksi -rwxr-x- -x tarkoittaa: käyttäjällä on rwx oikeudet ryhmällä on r-x oikeudet muilla on - -x oikeudet d:llä alkava tulostus (Esim: drwxr-x- -x) tarkoittaa, että kyseessä on hakemisto Oikeuksia voi muuttaa komennolla chmod [ugoa] (+-) [rwx] nimi (u)ser, (g)roup, (o)thers, (a)ll ( a on kaikki u, g ja o yhdessä) + lisää ja - poistaa oikeuksia (r)ead, (w)rite, e(x)ecute Esimerkkki 1: chmod g+rwx nimi lisää ryhmällä rwx-oikeudet tiedostoon tai hakemistoon nimi Esimerkkki 2: chmod go-wx nimi poistaa ryhmältä ja muilta wx-oikeudet tiedostoon tai hakemistoon nimi
1.0 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 1.0 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 L6 L6: latex L A T E X: kuvat L A T E X: kuvat Dokumentin alussa ladataan paketti. Esim: \usepackage[dvips]{graphicx} jossa kuvan lataus \includegraphics[]{tiedosto} [] sisään optioita: width, height,... Tässä luentojen LAT E X ympäristössä syöte \includegraphics[width=5.0cm, height=1.5cm]{sinecurves.pdf} tuottaa tämän kuvan L A T E X: kuvat Tässä luentojen LAT E X ympäristössä syöte \begin{figure} \caption[]{kuvan teksti} \includegraphics[width=1.0cm, height=1.0cm]{sinecurves.pdf} \label{ef} \end{figure} Kuvan \ref{ef} sini-käyrät tuottaa Kuva:1 Kuvan teksti \figure (leveys yksi kolumni) ja \figure* (leveys kaksi kolumnia) ympäristöt: numero, teksti ( caption) ja viittaus tunniste ( label) Kuvan 1 sini-käyrät Kuvat numeroituvat automaattisesti... latex: kuvat ps- tai eps muodossa pdflatex: kuvat jpg-, png- tai pdf
: Ohjauskomento try catch (kuva:@sheriframadan.com) Ohjauskomennon try catch rivi päättyy merkkiin : Lohkon sisennys Käytetään koodin korjaamiseen try antaa mahdollisuuden kokeilla komentoa joka ei toimi, s.o. ohjelma ei kaadu vaikka komento ei toimi catch antaa mahdollisuuden tunnistaa syy miksi komento ei toimi Tästä ei laskuharjoitusta Esimerkki: ohjelma Trymalli.py seuraavalla sivulla
ohjauskomento try catch (kuva:@www.howtogeek.com) # Komen ttirivi : Tama on ohjelmani Trymalli. py import os ; os. system ( clear ) # Tyhjennetaan naytto a = [ 1, 2 ] # a [0]=1,a [1]=2 mutta alkiota a [ 2 ] ei ole! # # " p r i n t a [ 2 ] " komennon v i r h e v i e s t i o l i s i n o r m a a l i s t i # " IndexError : l i s t index out of range " # Esimerkki 1 try : # t r y alkaa p r i n t ( a [ 2 ] ) # Komento y r i t y s except : # Jos ei onnistu, print ( " Ei onnistu. " ) # p r i n t a t a a n tama # Esimerkki 2 try : # t r y alkaa p r i n t ( a [ 2 ] ) # Komento y r i t y s except IndexError : # Jos virhetyyppi IndexError, print ( " Virhe t u n n i s t e t t u " ) # n i i n p r i n t a t a a n tama. except : # Jos virhetyyppi ei IndexError, print ( " Virhe t u n n i s t a m a t t a " ) # n i i n p r i n t a t a a n tama. # Esimerkki 3 try : # Ohjauskomento alkaa p r i n t ( a [ 2 ] ) # Sisennys except TypeError : # Jos virhetyyppi TypeError, print ( " Virhe t u n n i s t e t t u " ) # n i i n p r i n t a t a a n tama. except : # Jos virhetyyppi ei TypeError, print ( " Virhe t u n n i s t a m a t t a " ) # n i i n p r i n t a t a a n tama. 3 Trymalli.py tulostaa Ei onnistu. Virhe tunnistettu Virhe tunnistamatta
Aliohjelmat Funktio/Aliohjelma 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.. Funktio voi myös muokata input tietoa Funktioiden tarkoitus on jakaa ja jäsentää ohjelmaa, sekä vähentää koodin toistoa Funktiot on loogisinta määritellä ohjelman alussa, mutta yleensä toimivat muuallakin Muuallakin = Funktio pitää olla määritetty ennen kuin sitä kutsutaan/käytetään Kopioidaan kotisivulta ohjelmat AliOhjelmamalli1.py, AliOhjelmamalli2.py ja AliOhjelmamalli3.py aliohjelman rakenne def funktio(a,b,..): Sisennys: Aliohjelman komennot... Sisennys: return A,B,.. Input: muuttujat a,b,... Output: muuttujat A,B,... # Tama on ohjelmani # AliOhjelmamalli1. py # A l i o h j e l m a alkaa ==== def p u o l i t a ( a ) : puolet=a / 2. 0 return a, p u o l e t # A l i o h j e l m a loppuu === b=4.0 c, d= p u o l i t a ( b ) p r i n t ( I n p u t : b =, b ) p r i n t ( Output : c =, c ) p r i n t ( Output : d =, d ) Tämä on oikea aliohjelman rakenne Muutamia selventäviä esimerkkejä
kuva: @www.pinterest.com # Tama on ohjelmani # AliOhjelmamalli2. py # A l i o h j e l m a alkaa ==== def p u o l i t a ( a ) : puolet=a / 2. 0 return a, p uolet # A l i o h j e l m a loppuu === b=4.0 e= p u o l i t a ( b ) # Kokeilu 1 p r i n t ( I n p u t : b =, b ) p r i n t ( Output : e =, e ) p r i n t ( Output : e [0] =, e [ 0 ] ) p r i n t ( Output : e [1] =, e [ 1 ] ) p r i n t ( type ( e) =, type ( e ) ) Kohdassa Kokeilu 1 on korvattu kaksi output a,puolet muuttujaa yhdellä muuttujalla c Ohjelma ei kaadu! e sisältää muuttujat a ja puolet e on tuple eli sitä ei voi muuttaa 3 AliOhjelmamalli2.py tulostaa Input: b = 4.0 Output:e = (4.0, 2.0) Output:e[0] = 4.0 Output:e[1] = 2.0 type(e) = <class tuple >
# Tama on ohjelmani # AliOhjelmamalli3. py # A l i o h j e l m a alkaa ==== def p u o l i t a ( a ) : puolet=a / 2. 0 a=a 9 # Kokeilu 2 j o t a i n =a / 9. # Kokeilu 3 return a, p uolet # A l i o h j e l m a loppuu === b=4.0 c, d= p u o l i t a ( b ) p r i n t ( I n p u t : b =, b ) p r i n t ( Output : c =, c ) p r i n t ( Output : d =, d ) p r i n t ( j o t a i n =, j o t a i n ) 3 AliOhjelmamalli3.py Input: b = 4.0 Output:c = -5.0 Output:d = 2.0 Traceback (most recent call last): File "AliOhjelmamalli3.py", line 15, in <module> print( jotain =, jotain) NameError: name jotain is not defined Kohdassa Kokeilu 2 muutetaan output muuttujaa a Muuttujan b arvo ei muutu Muuttujan c arvo muuttuu Älä muuta input muuttujien arvoja aliohjelman sisällä! Kohdassa Kokeilu 3 muuttuja jotain määritellään aliohjelman sisällä jotain ei ole rivillä return,... Pääohjelmassa ei ole muuttujaa jotain Voit käyttää aliohjelmissa mitä tahansa muuttujia. Ne päätyvät pääohjelmaan vain riviltä return, s.o. output riviltä
Aliohjelmat Kuva: @www2.ess.ucla.edu Laadi aliohjelma, joka laskee Rayleigh n testi parametrin ( n ) z(f ) = 1 2 ( n ) 2 cos θ i + sin θ i n i=1 i=1 aikapisteille t 1, t 2,..t n frekvenssillä f = 1, missä vaihekulmat ovat θ i = 2πft i, sekä antaa aikapisteiden määrän n. Oleta, että aikapisteet ovat jakautuneet satunnaisesti välille [0, 10]. Input: t = t 1, t 2,..., t n = aikapisteet Input: f = f = Frekvenssi Output: z= z(f ) = Testi parametri Output: n= Aikapisteiden määrä Random Walk: z = R 2 /n, missä R = r i ja r i = [cos Θ i, sin Θ i ] Kuvassa L = 1 ja D = R Kopioi kotisivulta RayleighAliOhjelma1.py
Aliohjelmat # K o m e n t t i r i v i : Tama on ohjelmani RayleighAliOhjelma1. py import numpy as np # numpy i m p o r t o i t u def r a y l e i g h t e s t ( t, f ) : # Funktio alkaa p i =np. p i ; x=2.0 p i f t ; n=len ( t ) z = ( 1. 0 / n ) (sum( np. cos ( x )) 2+sum( np. s i n ( x )) 2) return n, z # import os ; os. system ( clear ) # Tyhjennetaan n aytto t =10. np. random. sample ( 1 0 ) # Satunnaisajat 0 < t _ i < 1 0 ( n=10) f = 1. # Frekvenssi on f =1. n, z= r a y l e i g h t e s t ( t, f ) # Aliohjelman soveltaminen p r i n t ( n=, n ) # n p r i n t ( z=, z ) # z np.random.sample(10) tulostaa satunnaislukuja väliltä [0, 1] Kerrotaan 10* Luvut t väliltä [0, 10] Tulos on aina erilainen, koska aina arvotaan uudet aikapisteet t n= 10 z= 0.949631396598 Käytä tätä ohjelmaa RayleighAliOhjelma1.py mallina seuraavalla sivulla kuvatussa laskuharjoituksessa
Laskuharjoitusten aliaohjelmat, kuva: @www.pinterest.com Laskuharjoitus: Tee ensin aliohjelma tau=aliohjelma1(t,f) joka laskee τ = 1 [ n 4πf atan i=1 sin (4πft ] i) n i=1 cos (4πft i) Input ( aliohjelma1) Havaintoajat t, jotka ovat t 1 = 1, t 2 = 2 ja t 3 = 3 ( n = 3) Frekvenssi on f = f = 1.41 Output ( aliohjelma1) Arvo muuttujalle tau = τ 0.0496 Tee sitten aliohjelma z1,z2=aliohjelma2(t,ydot,f,tau) joka laskee n z 1 (f ) = { y i cos [2πf (t i τ)]} 2 i=1 n z 2 (f ) = { y i sin [2πf (t i τ)]} 2 i=1 Input ( aliohjelma2) Havaintoajat t, jotka ovat t 1 = 1, t 2 = 2 ja t 3 = 3 ( n = 3) Havaintoarvot ydot, jotka ovat y 1 = 4, y 2 = 5 ja y 3 = 6 ( n = 3) Frekvenssi on f = f = 1.41 Muuttuja tau = τ 0.0496 Output ( aliohjelma2) Arvo muuttujalle z1 = z 1 (f ) 1.148 Arvo muuttujalle z2 = z 2 (f ) 11.856 On siis laadittava aliohjelma rakenne, jossa on oikeassa järjestyksessä def, sisennys, return, Output