4. Funktioner

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
Versionen från 26 juni 2007 kl. 09.50 (redigera)
KTH.SE:u1ndpe5c (Diskussion | bidrag)
m (flyttade 4. Filhantering till 4. Funktioner)
← Gå till föregående ändring
Versionen från 26 juni 2007 kl. 09.53 (redigera) (ogör)
KTH.SE:u1ndpe5c (Diskussion | bidrag)
(Tar bort sidans innehåll)
Gå till nästa ändring →
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

Personliga verktyg