• No results found

av str¨angarna ¨ar “path” vilket anger de redan existerande s¨okv¨agarna, addpath(STR¨ANG1) l¨agger till STR ¨ANG1 f¨ore de s¨okv¨agar som redan existerar. Du kommer s¨akert att finna att det oftast ¨ar v¨aldigt bekv¨amt att se till att ditt SU-konto finns i den definierade s¨okv¨agen.

Ett annat s¨att att se hur s¨okv¨agen ser ut ¨ar att klicka p˚a fliken “Path” l¨angst ned i ComsolScripts desktop. D¨ar ser du alla kataloger som finns med i s¨okv¨agen och i vilken ordning. Om du vill ¨andra p˚a ordningen s˚a klicka p˚a en katalog i f¨onstret. Genom att klicka p˚a antingen “Move Up” eller “Move Down” kan du sedan flytta den givna katalogen upp eller ner i s¨okv¨agen. Klickar du p˚a “Save” sparas den aktuella inst¨allningen s˚a att ComsolScript automatiskt l¨aser in den n¨asta g˚ang programmet startar. Det h¨ar fungerar dock bara s˚a l¨ange som man arbetar p˚a samma dator, om man byter till en annan dator s˚a finns inte l¨angre dessa inst¨allningar tillg¨angliga. Man kan komma runt detta genom att skapa en m-fil, setmypath.m som s¨atter alla de s¨okv¨agar man vill ha. Exempel p˚a hur denna fil kan se ut:

% setmypath.m

% S¨atter s¨okv¨agen till dina filer.

% S¨att s¨okv¨agarna

path(’Z:\expmet\funktionsfiler’,path);

path(’Z:\expmet\labb1’,path);

path(’Z:\expmet\labb2’,path);

path(’Z:\expmet\datorovningar’,path);

%Skriv ut s¨okv¨agarna p˚a sk¨armen path

Byt ut funktionsfiler, labb1, etc mot namnen p˚a dina kataloger. Spara filen i din topp-katalog (allts˚a precis under abcd1234 ). S¨att s¨okv¨agen till dina filer genom att skriva i Com-solScrips prompt:

cd Z:\

setmypath

2.6 M-filer

Det absolut smidigaste s¨attet att anv¨anda ComsolScript ¨ar att konsekvent jobba med s˚a kallade ”m-filer”. I en m-fil kan man skriva in alla kommandon man kan skriva i ComsolScripts kommandof¨onster och spara dessa till h˚arddisken. N¨ar man sedan skriver namnet p˚a m-filen i ComsolScripts kommandof¨onster s˚a utf¨ors alla kommandon som st˚ar i filen och resultatet visas i ComsolScripts kommandof¨onster. Genom att utnyttja m-filer kan vi spara en otrolig m¨angd arbete. Vi kan till exempel skriva in alla r˚adata fr˚an en laboration i en m-fil, sedan steg f¨or steg skriva in alla operationer f¨or att g¨ora m¨atv¨ardesbehandling p˚a laborationen.

D¨arefter skriver vi in de kommandon som kr¨avs f¨or att producera de grafer vi skall redovisa i laborationsredog¨orelsen. Vi kan n¨ar som helst i den h¨ar processen ta paus, spara filen till disk och forts¨atta vid ett senare tillf¨alle. Det ¨ar ocks˚a enkelt att ¨andra ett enstaka kommando om man har f˚att n˚agon formel om bakfoten, eller om man vill ¨andra n˚agon detalj i ett histogram.

Det b¨asta man kan g¨ora som student ¨ar att bygga upp ett f¨orr˚ad av sm˚a m-filer som g¨or avgr¨ansade uppgifter, till exempel en anpassning till en andragradskurva eller en ber¨akning av chi-kvadrat. Eftersom en m-fil kan inneh˚alla kod-avsnitt som kallar en annan m-fil kan filer som utf¨or klart definierade uppgifter enkelt ˚ateranv¨andas n¨ar liknande problem skall l¨osas.

2.6.1 Editera m-filer

Det finns inget som s¨ager att du m˚aste skapa de m-filer du kommer att anv¨anda inne i ComsolScript. I princip kan du starta vilken editor som helst och i den skapa en m-fil som du sedan sparar p˚a disk, i text-format. Du kan sedan k¨ora den inifr˚an ComsolScript, f¨orutsatt att filen sparas n˚agonstans i ComsolScripts s¨okv¨ag. Oftast ¨ar det naturligtvis enklast att starta editeringen inifr˚an ComsolScript. Detta kan g¨oras p˚a tv˚a s¨att, antingen genom att i kommandof¨onstret skriva edit, eller genom att i menyn File v¨alja “New Editor”. I b¨agge fallen ¨oppnas ett editor-f¨onster h¨ogst upp i ComsolScripts desktop (om du bara ser en rad och inte ett helt f¨onster s˚a klicka p˚a “f¨onstersymbolen” l¨angst till h¨oger p˚a raden).

2.6.2 ComsolScripts inbyggda editor

Den inbyggda editorn fungerar p˚a ungef¨ar samma s¨att som de flesta andra editorer. I “Edit”-menyn har du tillg˚ang till kommandona “cut”, “copy” and “paste” som har de vanliga funktionerna av att klippa ut, kopiera och klistra in. Du kan ocks˚a s¨oka och byta ut text. I menyn “File” kan du sedan v¨alja mellan

• New - ¨oppnar ett nytt tomt editorf¨onster

• Open - ¨oppnar en redan existerande fil i ett nytt editorf¨onster.

• Close - st¨anger editorf¨onstret.

• Save - sparar inneh˚allet i editorf¨onstret till en fil p˚a disken.

• Save As - sparar inneh˚allet i editor-f¨onstret till en nyd¨opt fil p˚a disken.

• Save all -sparar alla ¨oppna editor-f¨onster i varsin fil.

• Print - skriver ut inneh˚allet i editor-f¨onstret.

F¨or att t ex skapa en fil som s¨ager hej till oss n¨ar vi k¨or den skriver vi edit. Du f˚ar d˚a upp ett nytt f¨onster med titeln “Untitled”.

Du kan nu b¨orja skriva in din ComsolScript-kod i f¨onstret, skriv t ex disp(‘Hello World’) och sedan spara filen som Hej.m.

2.6.3 Att spara en m-fil p˚a disk

Hela po¨angen med att skapa en m-fil ¨ar ju att den skall sparas p˚a h˚arddisk. F¨or att g¨ora det g˚ar vi, oavsett vilken editor vi arbetar i, in i ”File” menyn och v¨aljer ”Save”. Om filen vi vill spara ¨ar nyskapad och inte har n˚agot namn s˚a kommer editorn att ¨oppna en dialogruta d¨ar vi kan ange filens namn och i vilken katalog den skall ligga. Har vi ¨andrat i en redan existerande fil s˚a sparas den ¨andrade versionen med samma namn som den ursprungliga.

Observera att det h¨ar inneb¨ar att den ursprungliga versionen ¨ar f¨orlorad f¨or gott. Det kan d¨arf¨or vara klokt, s¨arskilt om man vill ¨andra i en komplicerad redan fungerande fil, att ist¨allet f¨or att spara den med samma namn som tidigare spara en kopia med ett annat namn s˚a att den ursprungliga, of¨or¨andrade versionen av filen finns kvar p˚a h˚arddisken. Detta g¨or man genom att ist¨allet f¨or att ange ”Save” v¨aljer ”Save as...” under ”File”-menyn. Vi f˚ar ¨aven i det h¨ar fallet upp dialogrutan d¨ar vi kan v¨alja namn och katalog f¨or filen. N¨ar man v¨al har introducerat alla ¨andringar och f˚att dem att fungera som man ¨onskar kan man sl¨anga den gamla filen och d¨opa om den nya till det gamla namnet om man s˚a ¨onskar.

2.6. M-FILER 19 2.6.4 L¨asa in och k¨ora en m-fil

Enklaste s¨attet att k¨ora en m-fil ¨ar att bara skriva dess namn i kommandof¨onstret. Om filen finns antingen i den aktuella katalogen eller i n˚agon katalog i s¨okv¨agen (se avsnitt 2.2.3)5 s˚a kommer de kommandon som finns i filen att utf¨oras. Prova:

C Hej

Hello World

2.6.5 Kommentarer

I princip ¨ar det ingen skillnad p˚a hur ComsolScript hanterar kommandon som skrivs in i kommandof¨onstret och kommandon som l¨ases in via en m-fil. Det finns ¨and˚a ett antal kommandon som man knappast anv¨ander i kommandof¨onstret men som spelar en stor roll n¨ar vi jobbar med m-filer. Viktigast av dessa ¨ar kommentarer.

Kommentarer inleds med ett procenttecken ”%” och f¨oljs av godtycklig text. N¨ar ComsolScript utf¨or kommandon ignorerar programmet procenttecknet och vad som f¨oljer efter det. Syftet med kommentarer ¨ar att g¨ora det enklare att titta i en m-fil och kunna f¨olja med vad pro-grammet g¨or, och hur. Detta ¨ar anv¨andbart b˚ade om man anv¨ander program skrivna av andra, men ocks˚a n¨ar man ett ˚ar senare (kom ih˚ag att ni skall spara alla era gamla m-filer!)

˚aterv¨ander till filer man sj¨alv har skrivit, det kan vara nog s˚a sv˚art att minnas vad man sj¨alv t¨ankt och gjort! Kommentarer anv¨ands

1. som en varudeklaration i b¨orjan av ett program (i det h¨ar sammanhanget ¨ar en m-fil att betrakta som ett program) f¨or att beskriva vad programmet g¨or, vad det heter, vem som har skrivit det och n¨ar, samt om programmet beh¨over n˚agon speciell typ av indata eller levererar n˚agon speciell typ av ut-data.

2. f¨or att beskriva vad de viktigaste variablerna st˚ar f¨or

3. vad de olika programstegen utf¨or

Det g˚ar n¨astan alltid att med ett snabbt ¨ogonkast skilja ett program skrivet av en van pro-grammerare fr˚an ett skrivet av en nyb¨orjare, ¨aven om man inte begriper ett skvatt av vad programmet g¨or. Eftersom en av skillnaderna ofta ¨ar m¨angden kommentarer - en duktig programmerare skriver mycket kommentarer - s˚a kan man ibland frestas att skriva en kom-mentar ¨aven f¨or triviala steg, vilket inte underl¨attar l¨asningen. Exakt hur mycket och vilka avsnitt som skall kommenteras kan vara en smaksak, men ett exempel som f¨orfattaren tycker

¨

ar rimligt kan vara:

5Om det finns fler filer med samma namn i olika kataloger som finns i s¨okv¨agen s˚a v¨aljer ComsolScript den som kommer f¨orst. Om resultatet inte blir vad man t¨ankt sig kan det bero p˚a att det finns en namne till den fil vi egentligen vill k¨ora, och att den hamnar f¨ore i k¨on.

%---% Volume.m

% Beraknar volymen for cylindrar baserat pa

% matt radie och angiven hojd

% Sten Hellman 2002-03-03

%---Radie = [10.2 14.5 17.6 25.3 30.6 43.5]

Hojd = [12.5 22.4 44.5 47.6 54.4 88.4]

Volym = pi*Radie.^2 .* Hojd

% Felet i radien ar konstant 0.3, felet i hojden

% ar 10% av matetalet

DeltaRadie = 0.3 * ones(1,6) DeltaHojd = 0.1 * Hojd

DeltaVolym = Volym .* sqrt( (DeltaRadie ./ ...

(2*Radie) ).^2 +(DeltaHojd ./ Hojd).^2) D¨aremot vore till exempel

% Volymen ar pi * r-kvadrat * hojden Volym = pi*Radie.^2 .* Hojd

en ¨overdrift som knappast g¨or det enklare att f¨olja koden.

Ett annat anv¨andningsomr˚ade f¨or kommentarer ¨ar att man vid fels¨okning genom att kom-mentera kan f˚a programmet att “hoppa ¨over” delar av koden. Man kan helt enkelt kom-mentera bort olika delar av ett program som inte fungerar tills felet f¨orsvinner. D˚a vet man i alla fall i vilket avsnitt felet finns.

2.6.6 In- och utmatning av data till M-filer

En annan skillnad mellan att skriva m-filer och ge kommandon direkt i kommandof¨onstret

¨

ar hur data matas in i ComsolScript och hur de presenteras f¨or den som utf¨or ett kommando.

Kommandot disp ¨ar ju till exempel oftast inte s¨arskilt meningsfullt i kommandof¨onstret.

Att f˚a ComsolScript att skriva ”Hello World” genom att sj¨alv skriva precis samma sak i argumentet till kommandot disp ¨ar ju m˚attligt intressant. I en m-fil som man k¨or ¨ar kom-mandot d¨aremot mycket nyttigt eftersom det kan anv¨andas f¨or att skriva information i kom-mandof¨onstret som kan ange resultat av ber¨akningar eller ange att vi skall mata in informa-tion till ComsolScript. Vi kommer snart att m¨arka att det finns ett behov av att kunna mata in data till en k¨orande m-fil och att skriva ut data fr˚an filen till kommandof¨onstret. Man kan till exempel t¨anka sig att m-filen i f¨oreg˚aende avsnitt ist¨allet f¨or att ber¨akna volymen av ett antal cylindrar d¨ar vi skriver in radie och h¨ojd i m-filen skriver en mer allm¨an m-fil som kan anv¨andas f¨or att ber¨akna volymen av en godtycklig cylinder. En s˚adan m-fil beh¨over d˚a ha en metod f¨or anv¨andaren att mata in ett godtyckligt v¨arde p˚a radien och h¨ojden, och en metod att mata ut resultatet fr˚an ber¨akningen i kommandof¨onstret. Vi kommer att l¨ara oss hur det g˚ar till i avsnitt 8.2 d¨ar vi g˚ar igenom s˚a kallad formaterad in- och utmatning. Men redan innan vi l¨art oss detta kan vi kommunicera med m-filer genom att utnyttja att m-filer och kommandof¨onstret anv¨ander samma workspace. Om vi till exempel k¨or m-filen ovan f¨or att ber¨akna cylindervolymer s˚a kommer variabeln Volym som inneh˚aller resultatet att finnas kvar i workspace. Vi kan allts˚a genom att skriva Volym i kommandof¨onstret se resultatet av ber¨akningen. Omv¨ant kan man t¨anka sig att ta bort raden

2.6. M-FILER 21 Radie = [10.2 14.5 17.6 25.3 30.6 43.5]

ur m-filen och ist¨allet innan vi k¨or m-filen tilldela v¨arden i kommandof¨onstret. Eftersom Radie d˚a existerar i workspace kommer m-filen att fungera precis som vanligt. P˚a det s¨attet g˚ar det enkelt att k¨ora om filen med olika v¨arden p˚a radien, det ¨ar bara att skriva in nya v¨arden p˚a Radie.

2.6.7 Paus i utskriften

Ibland vill man att en m-fil som k¨or skall stanna upp s˚a att man hinner se delresultat.

Speciellt om man visar fler plottar i samma figurf¨onster och vill hinna titta p˚a en plot innan programmet skriver ¨over den med n¨asta. D˚a kan vi anv¨anda kommandot pause. Ger vi kommandot utan argument i en m-fil s˚a g¨or exekveringen av filen halt n¨ar den kommer till pause-kommandot och programmet skriver ut ‘pause’ i kommandof¨onstret. Programmet forts¨atter att k¨ora n¨ar vi trycker ned en godtycklig tangent. Vi kan ocks˚a ge kommandot med ett sifferargument, programmet g¨or d˚a en paus i det antal sekunder som ges i argumentet.

2.6.8 Namngivning av M-filer

En viktig detalj att t¨anka p˚a ¨ar att en m-fil inte skall ha samma namn som en variabel som f¨orekommer i filen. Det ¨ar l¨att h¨ant att man ger b˚ade filen och den viktigaste variabeln ett namn - samma namn - som anknyter till den uppgift programmet skall l¨osa. Det h¨ar kan leda till mycket f¨orvirrning. Antag till exempel att vi i avsnitt 2.6.5 hade kallat m-filen volym. F¨orsta g˚angen vi k¨or filen g˚ar allt v¨al, men om vi d¨arefter ¨andrar n˚agon liten detalj i programmet och f¨ors¨oker k¨ora om s˚a ser vi antagligen inte alls det vi f¨orv¨antar oss. Orsaken

¨

ar att programmet sj¨alv skriver in vektorn volym i ComsolScripts workspace. N¨asta g˚ang vi f¨ors¨oker k¨ora programmet med samma namn kommer ComsolScript inte att tolka volym som en referens till programmet, utan till vektorn och som respons p˚a kommandot kommer den att skriva ut inneh˚allet i vektorn. Om ni n˚agon g˚ang sitter och f¨ors¨oker ¨andra i en m-fil men f¨or¨andringarna inte sl˚ar igenom kan det d¨arf¨or vara id´e att kontrollera om det finns en variabel med samma namn som m-filen.