Simo K. Kivelä / 15.05.2003

Ohjelmoinnin alkeet

In[1]:=

Remove["Global`*"]

•Skriptit

Skripti tarkoittaa yksikertaista ohjelmointirakennetta, jossa suoritettavat käskyt kirjoitetaan peräkkäin. Kun tämä ajetaan, ts. käskyt suoritetaan, saadaan kerralla tehdyksi ehkä hyvinkin monimutkainen asia. Seuraava on Mathematica-skripti, joka piirtää kolmion, sen korkeusjanat ja ympäri piirretyn ympyrän.

In[2]:=

a = {-2, 5} ; b = {4, 3} ; c = {3, 5} ; ab = b - a ; bc = c - b ; ca = a - c ; abkp = a + ab/2 ... bkp, kp}], Line[{bckp, kp}], Line[{cakp, kp}], Circle[kp, sade]}], AspectRatio -> Automatic] ;

[Graphics:HTMLFiles/luento6_3.gif]

Piirrettävää kuviota on helppoa muuttaa antamalla skriptin alussa jotkin toiset kolmion kärkipisteet ja ajamalla skripti uudelleen.

Skripti voidaan sijoittaa myös tekstitiedostoon, jonka tyyppinä on .m . Jos tiedoston koko nimi on vaikkapa skripti.m, se ajetaan Mathematican muistikirjasta seuraavalla komennolla:

In[17]:=

<< skripti.m

[Graphics:HTMLFiles/luento6_5.gif]

•Funktiot

Ohjelmointi voidaan viedä hieman pidemmälle kirjoittamalla laskentarutiini funktioksi, joka saa argumenteikseen kolmion kärkipisteet. Rutiini voidaan sijoittaa tiedostoon, joka ladataan ennen sen käyttöä.

Jos tiedoston nimi on fktskripti.m, sen sisältö voidaan tulostaa muistikirjaan seuraavasti:

In[18]:=

!! fktskripti.m

kolmio[a_,b_,c_]:=Module[{},
ab=b-a;
bc=c-b;
ca=a-c;
abkp=a+ab/2;
bckp=b+bc/2;
cakp=c+ca/2;
abkohtis={ab[[2]],-ab[[1]]};
bckohtis={bc[[2]],-bc[[1]]};
ratk=Solve[abkp+u*abkohtis==bckp+v*bckohtis,{u,v}];
kp=abkp+u*abkohtis/.ratk[[1]];
sade=Sqrt[(kp-a).(kp-a)];
Show[Graphics[{
  Line[{a,b,c,a}],
  Line[{abkp,kp}],
  Line[{bckp,kp}],
  Line[{cakp,kp}],
  Circle[kp,sade]
  }],AspectRatio->Automatic]
]
p1={0,5};
p2={5,1};
p3={2,5};

Kun tiedosto ladataan, saadaan siinä määritelty funktio käyttöön:

In[19]:=

<< fktskripti.m

In[20]:=

kolmio[{0, 0}, {0, 8}, {10, 7}]

[Graphics:HTMLFiles/luento6_9.gif]

Out[20]=

-Graphics -

Kuten tiedoston listauksesta ilmenee, se voi sisältää muutakin kuin funktionmäärittelyn: arvoja muuttujille, useita funktiomäärittelyjä jne.

In[21]:=

kolmio[p1, p2, p3]

[Graphics:HTMLFiles/luento6_12.gif]

Out[21]=

-Graphics -

•Paketit (Packages)

Määrittelytiedostolla voi olla myös mutkikkaampi rakenne. Se voi sisältää erilaisia mekanismeja käytössä olevien muuttujien suojaamiseen (jos ladataan kaksi tiedostoa, niissä olevat mahdollisesti samanimiset muuttujat eivät häiritse toisiaan yms.), opastuksen antamiseen jne. Tällaista rakennetta kutsutaan nimellä Package. Yksityiskohtiin ei tässä kuitenkaan puututa.


Converted by Mathematica  (May 16, 2003)