4. Funktioner

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
m (flyttade 4. Filhantering till 4. Funktioner)
(Tar bort sidans innehåll)
Rad 1: Rad 1:
-
==Filer==
 
-
<p>Information som man vill ha kvar p&aring; en dator sparas p&aring; fil. Det kan t&nbsp;ex r&ouml;ra sig om ett brev som har skapats med hj&auml;lp av ett ordbehandlingsprogram, en bild som har skapats av ett ritningsprogram eller en kamera osv. Filer sparas p&aring; l&aring;ngtidsminnen som t ex datorns skivminne (h&aring;rddisken). N&auml;r man sparat en fil p&aring; h&aring;rddisken kommer filen att finnas kvar d&auml;r &auml;ven n&auml;r man har startat om datorn eller t&nbsp;ex n&auml;r det blir str&ouml;mavbrott. D&auml;rf&ouml;r &auml;r det bra att spara den programkod man skriver p&aring; en fil f&ouml;r senare bearbetning. Dels f&ouml;r att det s&auml;llan blir r&auml;tt f&ouml;rsta g&aring;ngen, dels f&ouml;r att n&auml;r man v&auml;l provk&ouml;rt kommer man p&aring; fler saker man &ouml;nskar av programmet. </p>
 
- 
-
<p>Filer delas upp i tre sorter:</p>
 
- 
-
<p><ol>
 
-
<li>Vanliga filer: som inneh&aring;ller data (t ex text eller bildinformation).
 
-
<li>Katalog eller mapp: som inneh&aring;ller andra filer.
 
-
<li>L&auml;nkar, genv&auml;gar eller alias: En fil som refererar till en fil.
 
-
</ol></p>
 
- 
-
<p>Kataloger anv&auml;nds f&ouml;r att organisera filer och program. Kataloger kan inneh&aring;lla andra kataloger. T ex kan man spara alla filer som har skapats i samband med sommarkursen under katalogen &rdquo;sommarkurs&rdquo;. Strukturen kallas i datorsammanhang ofta f&ouml;r ett filtr&auml;d.</p>
 
- 
-
<p>L&auml;nkar anv&auml;nds t ex f&ouml;r att man ska kunna hitta samma fil p&aring; flera st&auml;llen. En bildfil kan ta stor plats och en popul&auml;r bild kan man vilja ha med p&aring; m&aring;nga st&auml;llen. F&ouml;r att slippa kopiera bilden l&auml;gger man d&aring; ist&auml;llet l&auml;nkar till den. L&auml;nkarna tar n&auml;stan ingen plats alls.</p>
 
- 
-
==Filhantering==
 
- 
-
<p>P&aring; n&auml;stan alla datorer finns det ett grafiskt anv&auml;ndargr&auml;nssnitt (det du ser p&aring; sk&auml;rmen) som kan anv&auml;ndas f&ouml;r att organisera filer mha musen, kortkommandon eller ett filhanteringsprogram.</p>
 
- 
-
<p>Filer, kataloger och l&auml;nkar har d&aring; grafiska symboler som kallas f&ouml;r ikoner. F&ouml;ljande bilder visar hur olika ikoner ser ut i ett Mac/OS X operativsystem:</p>
 
- 
-
[[Bild:800176.jpg]] [[Bild:800177.jpg]] [[Bild:800178.jpg]]
 
- 
-
<p>I programmeringssammanhang &auml;r det v&auml;ldigt vanligt att anv&auml;nda tangentbordskommandon f&ouml;r filhanteringen, t ex för att utföra:</p>
 
- 
-
<p><ol>
 
-
<li>F&ouml;rflyttning i filtr&auml;det.
 
-
<li>Kopiering av filer.
 
-
<li>Radering av filer.
 
-
</ol></p>
 
- 
-
<p>Ofta &auml;r den grafiska filhanteringen enklare, men i programmeringssammanhang vill man anv&auml;nda tangentbordskommandon s&aring; mycket som m&ouml;jligt eftersom det g&aring;r snabbare (n&auml;r man v&auml;l kan det).</p>
 
- 
-
==F&ouml;rflyttning i filtr&auml;d==
 
- 
-
<p>Tangentbordskommandon anv&auml;nder man i ett terminalf&ouml;nster. För att öppna ett terminalfönster på en Windowsdator: tryck först på windows-tangenten, håll den nere och tryck därefter på R. I det fönster som öppnas, skriv in CMD och tryck retur. Har du Macintosh OS X kan du se Python-tolk-instruktionerna i avsnitt 1.9 om villkor om du gl&ouml;mt hur man &ouml;ppnar ett s&aring;dant. Vi b&ouml;rjar med kommandot cd (som st&aring;r f&ouml;r <b>c</b>hange <b>d</b>irectory - byt katalog) anv&auml;nds f&ouml;r att f&ouml;rflytta sig i filtr&auml;det.</p>
 
- 
-
<p>Antag att man befinner sig i katalogen "sommarkurs" och man vet att i katalogen finns en annan katalog med namnet "test". D&aring; kan man skriva f&ouml;ljande kommando f&ouml;r att flytta sig till katalogen "test":</p>
 
- 
- 
-
<div class="codebox"><div class="title">Terminalfönster</div>&gt;cd test</div>
 
- 
- 
-
<p>Det finns tv&aring; speciella namn "." och ".." som har stor betydelse f&ouml;r systemet.</p>
 
- 
-
<p>"." betyder aktuella katalogen.</p>
 
- 
-
<p>".." betyder katalogen som inneh&aring;ller aktuella katalogen (dvs katalogen ovanför den aktuella katalogen).</p>
 
- 
-
<p>"." och ".." kommer att automatiskt finnas i varje katalog.</p>
 
- 
-
<p>Vad begreppet "aktuell katalog" betyder brukar framg&aring; efter ett tags användning, men en analogi &auml;r rum i ett hus. Om du g&aring;r in i ett rum, t ex ditt sovrum så är sovrummet det aktuella rummet. R&auml;knar du upp alla m&ouml;bler där, så får du ett annat resultat än om du r&auml;knar upp m&ouml;blerna i t ex k&ouml;ket. En niv&aring; upp (katalogen ovanf&ouml;r) kan du j&auml;mst&auml;lla med huset (om du tänkte på en villa) eller l&auml;genheten. En niv&aring; ner (en katalog i rummet) skulle kunna motsvaras av en garderob. I en dator finns det inga begr&auml;nsningar på antalet niv&aring;er man kan ha, men det gör det f&ouml;rst&aring;s i verkligheten.</p>
 
- 
-
<p>I samband med kommandot "cd" f&ouml;rekommer ofta tv&aring; andra viktiga kommandon "ls" och "pwd". Kommandot "ls" (som st&aring;r f&ouml;r list, lista) eller "dir" i dos anv&auml;nds f&ouml;r att lista vilka filer finns i katalogen och "pwd" (som st&aring;r f&ouml;r print working directory, skriv aktuellt katalognamn) (motsvarande pwd finns inte i dos, ist&auml;llet skrivs katalognamnet alltid ut) anv&auml;nds f&ouml;r att ta reda p&aring; namn p&aring; den aktuella katalogen. Betrakta f&ouml;ljande bild:</p>
 
- 
-
[[Bild:795530.jpg]]
 
- 
-
<p>I forts&auml;ttningen visas anv&auml;ndarens inmatning i fet stil, resten av texten skrivs av datorn. N&auml;r den aktuella katalogen &auml;r sommarkurs och man skriver f&ouml;ljande kommandon i tur och ordning f&aring;r man dessa svar av datorn:</p>
 
- 
-
<div class="codebox-divided">
 
-
<div class="codecolumn1">
 
-
<div class="title">Unix/Mac OS X</div>
 
-
<pre>&gt;pwd
 
-
sommarkurs
 
-
&gt;ls
 
-
programkod&nbsp;test
 
-
&gt;cd programkod
 
-
&gt;pwd
 
-
sommarkurs/programkod
 
-
&gt;ls
 
-
Prog.py&nbsp;Prog2.py
 
-
&gt;cd Prog.py
 
-
Prog.py: Not a directory
 
-
&gt;cd ..
 
-
&gt;pwd
 
-
sommarkurs
 
-
&gt;cd test/Katalog1
 
-
&gt;pwd
 
-
sommarkurs/test/katalog1
 
-
&gt; </pre></div>
 
-
<div class="codecolumn2">
 
-
<div class="title">DOS</div>
 
-
<pre>C:\sommarkurs>dir
 
-
06-05-01 11.45 &lt;DIR&gt; programkod
 
-
06-05-02 20:23 &lt;DIR&gt; test
 
-
C:\sommarkurs&gt;cd programkod
 
-
C:\sommarkurs\programkod&gt; dir
 
-
06-06-01 &lt;DIR&gt; .
 
-
06-06-01 &lt;DIR&gt; ..
 
-
06-06-02 10.45 1024 PROG.PY
 
-
06-05-11 11.11 2048 PROG2.PY
 
-
C:\sommarkurs\programkod&gt; cd prog.py
 
-
The directory name is invalid
 
-
C:\sommarkurs\programkod&gt; cd ..
 
-
C:\sommarkurs&gt; cd test/Katalog1
 
-
C:\sommarkurs\test\Katalog1&gt;</pre></div></div>
 
- 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Kopiera filer==
 
- 
-
<p>Kommandot cp (som st&aring;r f&ouml;r copy, kopiera) eller copy i DOS anv&auml;nds f&ouml;r att kopiera filer. Anta att aktuella katalogen &auml;r sommarkurs&nbsp;och vi vill kopiera filen Prog.py som finns i katalogen sommarkurs/programkod till katalogen Katalog1.</p>
 
- 
-
<p>Efter kopieringen kommer vi att f&aring; f&ouml;ljande filstruktur:</p>
 
- 
-
[[Bild:795531.jpg]]
 
- 
-
<div class="codebox-divided" style="width: 565px;"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;pwd
 
-
sommarkurs
 
-
&gt;cp programkod/Prog.py test/Katalog1/
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt;copy programkod\Prog.py test\Katalog1\
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
<p>Första kommandot pwd är för att säkerställa att vi är i rätt katalog, detta kommando är alltså inte nödvändigt om man vet att aktuella katalogen är sommarkurs.<br />
 
-
Den andra kommandoraden består av följande tre delar:<br />
 
-
Själva kommandot: cp (copy i dos)<br />
 
-
Sökvägen till källan (dvs den fil man vill kopiera)<br />
 
-
Sökvägen till destinationen (dvs den katalog man vill kopiera filen till)</p>
 
- 
-
<p>Om man vill kopiera en hel katalog med alla filer den innehåller måste man även ange flaggan r , (i dos finns ett eget kommando för detta xcopy med flaggan /s får man nästan samma effekt). Anta att vi vill kopiera hela katalogen test med alla filer som finns i den till programkod. Detta gör vi med följande kommando om den aktuella katalogen är sommarkurs:</p>
 
- 
-
<div class="codebox-divided" style="_width: 480px;"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>cp -r test programkod</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs>xcopy /s test programkod</pre></div></div>
 
- 
-
<p>Efter kopieringen får vi följande struktur:</p>
 
- 
- 
-
[[Bild:795532.jpg]]
 
- 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Radera filer==
 
-
<p><strong>Varning:</strong> Det finns en viktig skillnad mellan terminalf&ouml;nsterbaserad filhantering och grafisk filhantering n&auml;r det g&auml;ller borttagning av filer. N&auml;r man tar bort en fil med hj&auml;lp av den grafiska filhanteraren kommer filen hamna i en speciell katalog som brukar kallas f&ouml;r papperskorg, allts&aring; filen &auml;r inte riktigt borttagen fr&aring;n datorn (vill man ta bort filen s&aring; m&aring;ste man t&ouml;mma papperskorgen). N&auml;r man anv&auml;nder terminalf&ouml;nsterbaserad filhantering f&ouml;rsvinner alla filer som tas bort f&ouml;r gott. D&auml;rf&ouml;r ska man vara v&auml;ldigt f&ouml;rsiktig n&auml;r man ta bort filer i terminalf&ouml;nstret.</p>
 
- 
-
<p><span class="code">rm</span> (som st&aring;r f&ouml;r <b>r</b>e<b>m</b>ove) eller del i DOS &auml;r kommandot som anv&auml;nds f&ouml;r att ta bort filer. Anta att aktuella katalogen &auml;r sommarkurs och man vill ta bort filen <span class="code">Prog2.py</span>. F&ouml;ljande kommando tar bort filen <span class="code">Prog2.py</span>:</p>
 
- 
-
<div class="codebox-divided" style="_width:470px;"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;rm programkod/Prog2.py
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt;del programkod\prog2.py
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
<p>S&aring; h&auml;r kommer filstrukturen se ut efter borttagningen:</p>
 
- 
- 
-
[[Bild:795533.jpg]]
 
- 
-
<p>Om man vill ta bort en hel katalog med alla filer i ska man i UNIX-baserade operativystem &aring;terge flaggan r till kommandot <span class="code">rm</span>.</p>
 
- 
-
<p>I Windows är det däremot annorlunda - kommandot <span class="code">del</span> som vi använde oss av ovan fungerar bara på filer, inte mappar. Istället är kommandot <span class="code">rmdir</span> det som gäller. Om mappen inte är tom måste man även ange flaggan S.</p>
 
- 
-
<p>Antag att den aktuella katalogen &auml;r sommarkurs och man vill ta bort katalogen test som finns under katalogen programkod med f&ouml;ljande kommando:</p>
 
- 
-
<div class="codebox-divided"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;rm -r programkod/test
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt;rmdir /S programkod\test
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
<p>Bilden nedan visar filstrukturen efter borttagning:</p>
 
- 
-
[[Bild:795534.jpg]]
 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Flytta filer==
 
- 
-
<p>Om man vill flytta en fil fr&aring;n en katalog till en annan katalog kan man anv&auml;nda sig av kommandot <span class="code">mv</span> (som st&aring;r f&ouml;r move) eller <span class="code">move</span> i DOS. Anta nu att den aktuella katalogen &auml;r sommarkurs och man vill flytta filen <span class="code">prog.py</span> fr&aring;n katalogen <span class="code">programkod</span> till katalogen <span class="code">test</span>. Detta g&ouml;rs med hj&auml;lp av f&ouml;ljande kommandorad:</p>
 
- 
-
<div class="codebox-divided" style="_width: 500px;"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;mv programkod/Prog.py test/
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt;move programkod\prog.py test
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
<p>Ovanst&aring;ende kommando best&aring;r av tre f&ouml;ljande delar:</p>
 
- 
-
<p><ol>
 
-
<li>Sj&auml;lva kommandot: <span class="code">mv</span>
 
-
<li>Hela s&ouml;kv&auml;gen till k&auml;llan: <span class="code">programkod/prog.py</span>
 
-
<li>Hela s&ouml;kv&auml;gen till destinationen: <span class="code">test/</span>
 
-
</ol></p>
 
- 
-
<p>S&aring; h&auml;r ser fil-strukturen ut:</p>
 
- 
-
[[Bild:795536.jpg]]
 
- 
-
<p>Observera att om man f&ouml;rs&ouml;ker flytta en fil till en plats d&auml;r det redan finns en fil med samma namn s&aring; kommer kommandot mv skriva &ouml;ver filen som finns i destinationen. Man f&aring;r bekr&auml;fta eller makulera kommandot genom att svara p&aring; en fr&aring;ga n&auml;r det &auml;r DOS men i Unix/Mac OS X kommer att filen skrivas &ouml;ver utan n&aring;gra varningar. T ex om man k&ouml;r f&ouml;ljande kommando:</p>
 
- 
-
<div class="codebox-divided" style="width: 600px;"><div class="codecolumn1" style="_width: 180px;"><div class="title">Unix/Mac OS X</div><pre>&gt;mv test/prog.py test/Katalog1/
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt;move test\&gt;Prog.py test\Katalog1\
 
-
Overwrite C:\sommarkurs\test\Katalog1\Prog.py? (Yes/No/All): Yes
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
[[Bild:795537.jpg]]
 
- 
-
<p>D&aring; kommer filen <span class="code">test/Katalog1/prog.py</span> ers&auml;ttas med filen <span class="code">test/prog.py</span></p>
 
- 
-
<p>Man kan ocks&aring; anv&auml;nda kommandot <span class="code">mv</span> f&ouml;r att byta namn p&aring; en fil. Anta att man vill byta namn p&aring; filen <span class="code">prog.py</span> som finns under katalogen <span class="code">test/Katalog1</span> till <span class="code">prog3.py</span>, f&ouml;ljande kommando g&ouml;r detta om aktuella katalogen &auml;r <span class="code">sommarkurs</span>:</p>
 
- 
-
<div class="codebox-divided" style="width: 700px;"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;mv test/Katalog1/prog.py test/Katalog1/prog3.py
 
-
&gt; </pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt;move test/Katalog1/prog.py test/Katalog1/prog3.py
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
[[Bild:795538.jpg]]
 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Skapa kataloger==
 
- 
-
<p>Om man vill skapa nya kataloger kan man anv&auml;nda sig av kommandot <span class="code">mkdir</span> (som st&aring;r f&ouml;r make directory, skapa katalog).</p>
 
- 
-
<p>Anta att aktuella katalogen &auml;r sommarkurs och man vill skapa en katalog med namnet <span class="code">lab1</span> i katalogen programkod, f&ouml;ljande kommando g&ouml;r detta:</p>
 
- 
-
<div class="codebox-divided"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;mkdir programkod/lab1
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs&gt; mkdir programkod\lab1
 
-
C:\sommarkurs&gt;</pre></div></div>
 
- 
-
<p>Hade aktuella katalogen varit <span class="code">programkod</span> s&aring; hade f&ouml;ljande kommando skapat katalogen <span class="code">lab1</span>:</p>
 
- 
-
<div class="codebox-divided"><div class="codecolumn1"><div class="title">Unix/Mac OS X</div><pre>&gt;mkdir lab1
 
-
&gt;</pre></div><div class="codecolumn2"><div class="title">DOS</div><pre>C:\sommarkurs\programkod&gt;mkdir lab1
 
-
C:\sommarkurs\programkod&gt;</pre></div></div>
 
- 
-
<p>s&aring; h&auml;r ser filstrukturen ut efter skapandet av katalogen lab1:</p>
 
- 
-
[[Bild:795539.jpg]]
 
- 
-
==Slutprov 4==
 

Versionen från 26 juni 2007 kl. 09.53