1. Programmeringsintro

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
(Vad är en dator?)
Nuvarande version (10 september 2014 kl. 15.34) (redigera) (ogör)
 
(124 mellanliggande versioner visas inte.)
Rad 1: Rad 1:
-
==Vad är bra med datorer?==
+
{| border="0" cellspacing="0" cellpadding="0" height="30" width="100%"
-
<p>Datorer &auml;r bra p&aring; att g&ouml;ra saker upprepade g&aring;nger. Ska du skicka ett brev till en person g&aring;r det bra att g&ouml;ra f&ouml;r hand, men ska du skicka till tusen personer kommer du att uppskatta all hj&auml;lp du kan f&aring; av en dator. Datorer &auml;r ocks&aring; bra p&aring; att organisera, spara och s&ouml;ka information. Ett bibliotek med alla dina CD-skivor kan t ex sparas i en dator och d&auml;refter g&aring;r det enkelt och snabbt att s&ouml;ka efter artister och l&aring;ttitlar. I det fallet kan man dessutom g&ouml;ras sig av med utrymmeskr&auml;vande plastfodral.</p>
+
| style="border-bottom:1px solid #797979" width="5px" | &nbsp;
 +
{{Mall:Vald flik|[[1. Programmeringsintro|Teori]]}}
 +
{{Mall:Ej vald flik|[[1. Kom igång med Python|Kom igång med Python]]}}
 +
{{Mall:Ej vald flik|[[1. Övningar|Övningar]]}}
 +
| style="border-bottom:1px solid #797979" width="100%"| &nbsp;
 +
|}
-
<p>Datorers egenskaper utnyttjas f&ouml;r att ers&auml;tta manuellt arbete i en f&ouml;rhoppning om att s&auml;nka kostnader och ibland f&ouml;r att f&aring; en j&auml;mnare kvalit&eacute;t. En dator som t ex styr en svets g&ouml;r det exakt likadant varje g&aring;ng. En svetsare som &auml;r bakfull p&aring; m&aring;ndagar &auml;r inte lika exakt den dagen.</p>
 
-
<span style="color:red">[FRÅGOR]</span>
+
==Vad är att programmera?==
-
==Vad är dåligt med datorer?==
+
Programmering är ett hantverk, där programmeraren är i en ständig lärandeprocess.
-
<p>Datorer kan inte tolka t ex k&auml;nslor, naturligt tal eller bilder. Det finns forskare som f&ouml;rs&ouml;ker komma fram till olika s&auml;tt att g&ouml;ra detta, men det &auml;r mycket komplicerat. Idag fungerar det endast i speciella fall, t ex att tolka talade siffror i en telefondialog.</p>
+
-
<p>Arbete med datorer medf&ouml;r ofta ett stillasittande som t&auml;r p&aring; bland annat ryggar, axlar och h&auml;nder.</p>
+
-
<p>N&auml;r datorer inf&ouml;rs &auml;r det ofta f&ouml;r att automatisera en process, dvs ers&auml;tta m&auml;nniskor med maskiner. Alltf&ouml;r ofta g&ouml;rs detta utan att ta h&auml;nsyn till alla kostnader f&ouml;r t ex underh&aring;ll av det nya systemet, hantering av undantag som uppst&aring;r i alla system. Detta &auml;r dock inte ett fel hos datorerna, utan hos personerna som tar besluten utan att t&auml;nka p&aring; konsekvenserna.</p>
+
-
<span style="color:red">[FRÅGOR]</span>
+
När man lär sig programmera är det främst tre olika saker man lär sig:
 +
* Man lär sig ett programmeringsspråk och därigenom mer om hur datorer fungerar.
 +
* Man lär sig ord för att beskriva program så att man kan tala med andra programmerare.
 +
* Man lär sig problemlösning samt att dela upp problem i lagom stora bitar.
 +
 
 +
Det första känns ganska naturligt för de flesta att man ska lära sig (även om det kan vara svårt att lära sig programspråket), men det andra är något som många missar att det ingår: man kan inte diskutera program utan att lära sig språket om programmering.
 +
 
 +
Programmering är ofta en social aktivitet (parprogrammering, stora utvecklingsteam, open source-utveckling, etc.) där det är viktigt att kunna tala med de som är i samma projekt och även med beställarna som ofta har endast en vag uppfattning om de möjligheter som finns. Även om man inte arbetar som programmerare så är det bra att kunna tala språket för att kunna kommunicera med programmerare för att på ett rätt och riktigt sätt kunna beställa olika IT-lösningar.
 +
 
 +
Att lära sig grunderna i programmering ger även en uppfattning om vilka möjligheter och begränsningar som finns i tekniken för att kunna sätta rimliga kravspecifikationer på nya system.
==Vad är en dator?==
==Vad är en dator?==
-
<p>En dator i dagligt tal best&aring;r v&auml;sentligen av ett tangentbord, en mus och en sk&auml;rm som ibland sitter i samma l&aring;da som sj&auml;lva datorn. I tekniska sammanhang menar man ibland l&aring;dan med datorn och ibland endast processorn som sitter i l&aring;dan. </p>
+
 
 +
När man i vardagligt tal pratar om en dator så avses oftast en persondator, d.v.s. en dator avsedd för en mänsklig användare och som är antingen stationär eller bärbar. Den består väsentligen av ett tangentbord, en mus och en skärm som ibland sitter i samma låda som själva datorn. I mer tekniska sammanhang menar man ibland lådan med datorn och ibland endast processorn som sitter i lådan.
<table>
<table>
<tr><td>
<tr><td>
-
[[Bild:797710.jpg]]
+
[[Bild:797711.jpg]]
</td></tr>
</td></tr>
<tr><td>
<tr><td>
-
''Löstagen processor (i svart) med sex rader med kontakter runt om.''
+
''Minneskort med minnen (RAM) i svart''
</td></tr>
</td></tr>
</table>
</table>
-
<p>Processorn sitter fast p&aring; en kretskort, ofta kallat moderkortet och &auml;r kopplat till flera olika minnen. Viktigaste minnena &auml;r registren i processorn, d&auml;r alla ber&auml;kningar och tolkningar (t ex om 5 &auml;r st&ouml;rre &auml;n 4) sker, RAM-minnet (Rapid Access Memory) d&auml;r program ligger n&auml;r de k&ouml;rs, och skivminnet (ofta kallat h&aring;rddisk) d&auml;r program och dokument lagras f&ouml;r att vara kvar &auml;ven n&auml;r datorn har st&auml;ngts av (till skillnad fr&aring;n RAM-minnet som t&ouml;ms varje g&aring;ng str&ouml;mmen st&auml;ngs av). </p>
+
Uppgifter som man brukar se i annonser om datorer är t.ex.
 +
* Datorhastighet som mäts i GHz (GigaHertz), dvs miljarder operationer per sekund
 +
* RAM-storlek som mäts i GB (GigaByte), dvs miljarder byte
 +
 
 +
En bit är den minsta minnesenheten på en dator och innehåller en etta eller en nolla. En byte består av en sekvens av bitar, vanligen åtta, och kan t.ex. lagra ett tal mellan 0 och 255. Bitar grupperas i bytes för att öka effektiviteten i datorns hårdvara.
<table>
<table>
<tr><td>
<tr><td>
-
[[Bild:797711.jpg]]
+
[[Bild:797710.jpg]]
</td></tr>
</td></tr>
<tr><td>
<tr><td>
-
''Minneskort med minnen (RAM) i svart''
+
''Löstagen processor (i svart) med sex rader med kontakter runt om.''
</td></tr>
</td></tr>
</table>
</table>
-
<p>Uppgifter som man brukar se i annonser om datorer &auml;r t ex datorhastighet m&auml;ts i MHz (MegaHertz), dvs miljoner operationer per sekund eller tom GHz (GigaHertz), dvs miljarder operationer per sekund. RAM-storlek som m&auml;ts i MB (MegaByte), dvs miljoner byte. En byte best&aring;r av vanligen &aring;tta bitar och kan t ex lagra ett tal mellan 0 och 255. En bit &auml;r den minsta minnesenheten p&aring; en dator och inneh&aring;ller en etta eller en nolla. Skivminnet m&auml;ts ocks&aring; i byte och &auml;r n&aring;got hundratal g&aring;nger st&ouml;rre &auml;n RAM-minnet.</p>
+
Processorn sitter fast på ett kretskort, ofta kallat
 +
moderkortet och är kopplat till flera olika minnen. Viktigaste
 +
minnena är registren i processorn, där alla beräkningar och
 +
tolkningar (t ex om ett tal är större än ett annat) sker,
 +
RAM-minnet (Random Access Memory) där program ligger när de
 +
körs, och skivminnet (ofta kallat hårddisk) där program och
 +
dokument lagras för att vara kvar även när datorn har stängts
 +
av (till skillnad från RAM-minnet som töms varje gång strömmen
 +
stängs av).
-
<p>Ibland hör man också benämningen ”data”. I IT-sammanhang betyder data
+
Ibland hör man också benämningen ”data”. I IT-sammanhang betyder data endast information. Personer som använder data (eller ännu värre: ”datan”) för att referera till själva datorn upplevs ofta som mindre kunniga (se t ex Maria Bloms film Masjävlar) av de som skiljer på datorer och informationen som datorerna behandlar. De kunniga kan också använda uttryck som ”datan” och ”min data”, men då som slanguttryck. Tänk på det som att en dator hanterar data.
-
endast information. Personer som använder data (eller ännu värre:
+
-
”datan”) för att referera till själva datorn upplevs ofta som mindre
+
-
kunniga (se t ex Maria Bloms film Masjävlar) av de som skiljer på
+
-
datorer och informationen som datorerna behandlar. De kunniga kan
+
-
också använda uttryck som ”datan” och ”min data”, men då som
+
-
slanguttryck. Vill du imponera ska du alltså använda uttrycken som
+
-
slanguttryck, inte som om det verkligen hette så.</p>
+
-
<span style="color:red"><p>Om du glömmer bort vad ett visst ord betyder kan du slå upp det i [[ordlista.pdf|ordlistan]] som alltid finns tillgänglig under mappen "Dokument" i menyn till vänster.</p></span>
+
Om du glömmer bort vad ett visst ord betyder kan du slå upp det
-
 
+
i vår [[ordlista]] över pythontermer.
-
<span style="color:red">[FRÅGOR]</span>
+
==Vad är ett program?==
==Vad är ett program?==
-
<p>Ett (dator-) program &auml;r en upps&auml;ttning instruktioner som styr vad datorn ska g&ouml;ra. Vanligen finns det indata (t ex knapp- eller mustryckningar) som behandlas av datorn enligt instruktionerna i programmet vilket resulterar i utdata (t ex text, diagram, bilder) p&aring; sk&auml;rmen.</p>
 
-
[BILD1]
+
Ett (dator)program är en uppsättning instruktioner som styr vad datorn ska göra. Vanligen finns det indata (t.ex. knapp- eller mustryckningar) som behandlas av datorn enligt instruktionerna i programmet vilket resulterar i utdata (text, diagram, bilder) på skärmen.
-
[BILD2]
+
-
<p>En analogi &auml;r t ex stickning d&auml;r samma indata (garn) med ett program kan bli till utdata i form av ett par sockor och med ett annat program till en tr&ouml;ja.</p>
+
[[Bild:791439.jpg]]<br/>
 +
[[Bild:791440.jpg]]
-
[BILD1]
+
En analogi är stickning där samma indata (garn) med ett program
-
[BILD2]
+
kan bli till utdata i form av ett par sockor och med ett annat
 +
program till en tröja.
-
<p>Precis som sj&auml;lva datorn best&aring;r ett datorprogram v&auml;sentligen av tv&aring; saker: minne och instruktioner. Minnet kallas f&ouml;r variabler, instruktionerna kallas ofta f&ouml;r satser. Satserna &auml;r det som avg&ouml;r hur variablerna manipuleras (dvs &auml;ndrar v&auml;rde).</p>
+
[[Bild:791441.jpg]]<br/>
 +
[[Bild:791442.jpg]]
-
<span style="color:red">[FRÅGOR]</span>
+
Precis som själva datorn består ett datorprogram väsentligen
 +
av två saker: minne och instruktioner. Minnet kallas för
 +
variabler, instruktionerna kallas ofta för satser. Satserna är
 +
det som avgör hur variablerna manipuleras (dvs ändrar värde).
==Vad är ett programspråk?==
==Vad är ett programspråk?==
-
<p>En dator f&ouml;rst&aring;r endast sitt eget datorspr&aring;k, maskinkod, som &auml;r mycket sv&aring;rf&ouml;rst&aring;eligt &auml;ven f&ouml;r de flesta erfarna programmerare. F&ouml;r att underl&auml;tta f&ouml;r alla som programmerar skriver man d&auml;rf&ouml;r vanligen program i ett programspr&aring;k som t ex Java, C++ eller som vi ska anv&auml;nda i denna kurs: Python. F&ouml;r att kunna f&aring; datorn att f&ouml;rst&aring; och utf&ouml;ra program skrivna i Python kr&auml;vs det att man &ouml;vers&auml;tter (kompilerar, tolkar, interpreterar) det till datorns eget spr&aring;k.</p>
 
-
<p>F&ouml;r just Python finns det tv&aring; s&auml;tt: antingen skriver man programmet f&ouml;rst med ett redigeringsprogram (liknar ett ordbehandlingsprogram som t ex Word) och sparar det p&aring; en fil. D&auml;refter l&aring;ter man Python-tolken &ouml;vers&auml;tta och k&ouml;ra programmet. </p>
 
-
<p>Det andra s&auml;ttet &auml;r att man f&ouml;rst startar Python-tolken och d&auml;refter skriver programkod direkt i den. Tolken kommer d&aring; att utf&ouml;ra programkoden allteftersom du skriver den.</p>
 
-
<p>F&ouml;rdelen med det f&ouml;rsta s&auml;ttet &auml;r att det blir enklare att g&aring; tillbaka och &auml;ndra programmet om det inte blev riktigt r&auml;tt eller n&auml;r man kommer p&aring; roliga till&auml;gg till det. N&auml;r man skriver st&ouml;rre program g&ouml;r man det p&aring; detta vis.</p>
 
-
<p>F&ouml;rdelen med det andra s&auml;ttet &auml;r att man direkt kan se vad som inte fungerar. Det anv&auml;nds d&auml;rf&ouml;r mest f&ouml;r att testa saker.</p>
 
-
<p>Eftersom tolken bara &auml;r ett dumt program kr&auml;ver den att texten p&aring; programfilen (eller det du skriver i tolken) mycket strikt f&ouml;ljer best&auml;mda regler. Ett v&auml;ldigt litet pythonprogram som kan kompileras och k&ouml;ras utan fel ser ut s&aring; h&auml;r:</p>
 
- 
- 
-
<div class="codebox">
 
-
<div class="title">Python</div>
 
-
<pre>print &quot;Hej!&quot;</pre>
 
-
</div>
 
- 
-
<p>Om man skriver n&aring;gonting som kompilatorn inte kan &ouml;vers&auml;tta kommer den att tala om var det &auml;r fel och v&auml;gra att &ouml;vers&auml;tta allt. Lyckas &ouml;vers&auml;ttningen s&aring; g&aring;r programmet att k&ouml;ra. I det h&auml;r fallet kommer texten Hej! att skrivas ut.</p>
 
- 
-
<p>Om man skriver ovanst&aring;ende minimala program p&aring; en fil och kallar filen f&ouml;r &rdquo;MittProgram.py&rdquo; kan det se ut s&aring; h&auml;r i terminalf&ouml;nstret (fetstil markerar inmatning fr&aring;n den som programmerar:</p>
 
- 
- 
-
<div class="codebox">
 
-
<div class="title">Unix/Mac OS X/DOS</div>
 
-
<pre>&gt; python MittProgram.py
 
-
Hej!
 
-
&gt;&nbsp;</pre>
 
-
</div>
 
- 
-
<p>D&auml;r &gt; &auml;r en prompt fr&aring;n datorn (ett tecken som visar att den &auml;r redo f&ouml;r fler kommandon).</p>
 
- 
-
<p>G&ouml;r man samma sak genom att starta tolken f&ouml;rst kan det se ut s&aring; h&auml;r i terminalf&ouml;nstret:</p>
 
- 
-
<span style="color:red">[strong-taggarna funkar inte]</span>
 
-
<div class="codebox">
 
-
<div class="title">Python</div>
 
-
<pre>
 
-
<strong>&gt; python</strong>
 
-
Python 2.3.5 (#1, Aug 22 2005, 22:13:23)
 
-
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
 
-
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
 
-
<strong>&gt;&gt;&gt; print &quot;Hej!&quot;</strong>
 
-
Hej!
 
-
<strong>&gt;&gt;&gt;&nbsp;</strong></pre>
 
-
</div>
 
-
<p>D&auml;r &gt;&gt;&gt; &auml;r prompten fr&aring;n Python-tolken, som visar att den &auml;r redo f&ouml;r nya kommandon.</p>
 
- 
-
<p>Vill du redan nu testa att programmera p&aring; detta s&auml;tt kan du hitta instruktioner i avsnitt 1.9.</p>
 
- 
-
==Tilldelning==
 
-
<p>För att hålla reda på data i ett program används variabler. Alla variabler har ett namn för att kunna skilja dem åt. Du kan jämföra med minnet på en miniräknare. Enklare räknare har bara ett minne och behöver därför inte namnge det. Mer avancerade räknare har flera minnen som namnges med t ex ett nummer. Ett datorprogram kan hålla reda på en stor mängd data. När man programmerar kan man lägga in data som t ex längd vikt och ålder i datorns minne med hjälp av variabler. För att tilldela variablerna värden skriver man i Python t ex:</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>age = 18
 
-
length = 180
 
-
weight = 80</pre></div>
 
- 
-
<p>I vänsterledet (vänster om =) skriver man namnet på den variabel som ska få ett nytt värde och i högerledet (höger om =) värdet som tilldelas. Likhetstecknet kallas i programmeringssammanhang för tilldelning (eller tom tilldelningsoperator). Man kan också skriva variabler i högerledet:</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>my_cousins_age = age</pre></div>
 
- 
-
<p>Då tilldelas <span class="code">my_cousins_age</span> samma värde som <span class="code">age</span> har. Alla variabelnamn i Python måste börja med en (engelsk) bokstav (inte åäö), men efter den kan man blanda bokstäver och siffror. </p>
 
- 
-
<p>Högerledet kan innehålla uträkningar som behöver utföras innan tilldelningen sker:</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>a = 3
 
-
b = a + 15</pre></div>
 
- 
-
<p>Ovanstående två rader ser till att b får värdet 18.</p>
 
- 
-
<p>Ett bra sätt att förstå vad som händer i ett program är att stegvis går igenom det för hand och skriva upp alla variabelvärden. Varje variabel har endast ett värde åt gången och kommer inte ihåg vad för värde den haft tidigare.</p>
 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Olika slags värden==
 
-
<p>Det finns olika slags värden man tilldela variabler. Som vi tidigare sett kan man tilldela variabler värden i form av tal, men man kan också tilldela teckenföljder som t ex namn. I datalitteraturen kallas teckenföljderna för strängar (av engelskans string som bland annat betyder sträng och kedja).</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>namn1 = 'Oskar'
 
-
namn2 = "Kajsa"</pre></div>
 
- 
-
<p>För att skilja på variabelnamn och strängar omsluter man strängar med apostrofer eller citattecken.</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>namn3 = 'Sima'
 
-
namn4 = namn3</pre></div>
 
- 
-
<p>I exemplet ovan får namn4 värdet 'Sima'. Hade man skrivit apostrofer runt namn3 hade namn4 istället fått värdet 'namn3'.</p>
 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Uppräkning==
 
-
<p>Man kan öka värdet på variabler som tidigare har tilldelats ett värde med hjälp av uppräkningsoperatorn +=. Om variabeln innehåller en siffra räknas värdet upp. Efter följande rader</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>my_age = 19
 
-
my_age += 1</pre></div>
 
- 
-
<p>får <span class="code">my_age</span> värdet 20. Den första raden ger <span class="code">my_age</span> värdet 19 och den andra raden räknar upp <span class="code">my_age</span> med 1. När du trycker på pil upp eller ned i telefonnummerlistan på din mobil utför den en upp- eller nedräkning pss som andra raden.</p>
 
- 
-
<p>Man kan åstadkomma samma sak med satserna:</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>my_age = 19
 
-
my_age = my_age +1</pre></div>
 
- 
-
<p>Men så många tecken orkar få programmerare att skriva. Anledningen att variabeln heter <span class="code">my_age</span> istället för min_ålder är att åäö inte fungerar i variabelnamn. </p>
 
- 
-
<p>Om variabeln innhåller en sträng läggs den nya strängen till den gamla. Efter satserna:</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>husdjur = "hund "
 
-
husdjur += "och katt"</pre></div>
 
- 
-
<p>Kommer <span class="code">husdjur</span> att vara "hund och katt"</p>
 
- 
-
<span style="color:red">[FRÅGOR]</span>
 
- 
-
==Utskrifter==
 
-
<p>För att kunna provköra exemplen och egen kod behöver du en Python-tolk. Instruktioner för hur man öppnar eller installerar en sådan (beroende på operativsystem) hittar du via länken nedan. Vi rekommenderar att du provar på eftersom det är roligare.</p>
 
- 
- 
-
<span style="color:red">[POPUP-länk]<p><a href="#" onclick="window.open('object51476/python.html', 'poppage', 'toolbars=0, scrollbars=1, location=0, statusbars=0, menubars=0, resizable=0, width=500, height=550, left=200, top=100'); return false;">Länk till instruktioner för Python-tolk</a></p></span>
 
- 
-
<p>För att skriva ut värden på skärmen använder man instruktionen <em>print</em>. Prova att skriva följande rader</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>x = 15
 
-
print x
 
-
print 1001
 
-
print 14</pre></div>
 
- 
-
<p>Genom att använda ett kommatecken så kan man skriva ut flera saker på samma rad. Exempelvis skriver</p>
 
- 
- 
-
<div class="codebox"><div class="title">Python</div><pre>print "Charles is", 19, "years old"</pre></div>
 
- 
-
<p>ut "Charles is 19 years old" på samma rad. Precis samma sak skrivs ut på samma sätt av:</p>
 
- 
-
<div class="codebox"><div class="title">Python</div><pre>age = 19
+
En dator förstår endast sitt eget datorspråk (maskinkod, binärkod) som är mycket svårförståeligt även för de flesta erfarna programmerare. För att underlätta för alla som programmerar skriver man därför vanligen program i ett programspråk som t.ex. Java, C++ eller som vi ska använda i denna kurs: Python. För att kunna få datorn att förstå och utföra program skrivna i programspråk krävs det att man översätter (kompilerar, tolkar, interpreterar) det till datorns eget språk.
-
print "Charles is", age, "years old"</pre></div>
+
-
<p>Vill man att en senare utskrift (t ex en som görs av en print-sats några rader senare) ska göras på samma rad som den man just skriver ut låter man ett komma stå sist på raden:</p>
+
Kod skrivs vanligen i en editor (textredigerare) som t.ex. notepad++, emacs eller Vim. Till skillnad från ordbehandlare (som t.ex. Word) så hanterar en editor text som data, den innehåller inte formaterad text. Den har underlättande egenskaper så som automatisk färgsättning av texten (för att underlätta läsandet), autokomplettering (för att minska skrivandet och stavfel) och parentesmatchning.
 +
IDE's (Integrated Develop Environment, integrerade utvecklingsmiljöer) innehåller vanligtvis såväl editor som kompilator och avlusare (debugger, används för att hitta fel i program). Några vanliga är Eclipse, Netbeans, Microsoft Visual Studio, Xcode samt IDLE.
-
<div class="codebox"><div class="title">Python</div><pre>print "Charles is",
 
-
age = 2006-1987
 
-
print age, "years old"</pre></div>
 
-
<p>Ovanstående skriver också ut samma sak som tidigare.</p>
+
==Test 1==
 +
 +
Börja med att presentera dig genom att skriva ett
 +
inlägg under rubriken Intro i kursens forum. Om du inte har lust
 +
att berätta om dig själv så kan du alltid skriva ett kort inlägg:
 +
<pre>Hej, jag heter Stefan och har skostorlek 41.</pre>
 +
Du får gärna ljuga om skostorleken med det är bra om namnet stämmer!
-
<span style="color:red">[FRÅGOR]</span>
+
Nu är det dags att göra kursens första test.
 +
Under rubriken Examination på kursens förstasida hittar
 +
du samtliga test och inlämningsuppgifter.
 +
Testet rättas automatiskt och du har möjlighet att göra
 +
om testet flera gånger om du inte lyckas på första försöket.
-
==Slutprov 1==
+
Om det är något som du undrar över i det här avnsnittet eller
 +
i testet så är det fritt fram att fråga och diskutera i kursens forum.
 +
Men undvik att avslöja de rätta svaren på testfrågorna!

Nuvarande version

       Teori          Kom igång med Python          Övningar      


Innehåll

Vad är att programmera?

Programmering är ett hantverk, där programmeraren är i en ständig lärandeprocess.

När man lär sig programmera är det främst tre olika saker man lär sig:

  • Man lär sig ett programmeringsspråk och därigenom mer om hur datorer fungerar.
  • Man lär sig ord för att beskriva program så att man kan tala med andra programmerare.
  • Man lär sig problemlösning samt att dela upp problem i lagom stora bitar.

Det första känns ganska naturligt för de flesta att man ska lära sig (även om det kan vara svårt att lära sig programspråket), men det andra är något som många missar att det ingår: man kan inte diskutera program utan att lära sig språket om programmering.

Programmering är ofta en social aktivitet (parprogrammering, stora utvecklingsteam, open source-utveckling, etc.) där det är viktigt att kunna tala med de som är i samma projekt och även med beställarna som ofta har endast en vag uppfattning om de möjligheter som finns. Även om man inte arbetar som programmerare så är det bra att kunna tala språket för att kunna kommunicera med programmerare för att på ett rätt och riktigt sätt kunna beställa olika IT-lösningar.

Att lära sig grunderna i programmering ger även en uppfattning om vilka möjligheter och begränsningar som finns i tekniken för att kunna sätta rimliga kravspecifikationer på nya system.

Vad är en dator?

När man i vardagligt tal pratar om en dator så avses oftast en persondator, d.v.s. en dator avsedd för en mänsklig användare och som är antingen stationär eller bärbar. Den består väsentligen av ett tangentbord, en mus och en skärm som ibland sitter i samma låda som själva datorn. I mer tekniska sammanhang menar man ibland lådan med datorn och ibland endast processorn som sitter i lådan.

Bild:797711.jpg

Minneskort med minnen (RAM) i svart

Uppgifter som man brukar se i annonser om datorer är t.ex.

  • Datorhastighet som mäts i GHz (GigaHertz), dvs miljarder operationer per sekund
  • RAM-storlek som mäts i GB (GigaByte), dvs miljarder byte

En bit är den minsta minnesenheten på en dator och innehåller en etta eller en nolla. En byte består av en sekvens av bitar, vanligen åtta, och kan t.ex. lagra ett tal mellan 0 och 255. Bitar grupperas i bytes för att öka effektiviteten i datorns hårdvara.

Bild:797710.jpg

Löstagen processor (i svart) med sex rader med kontakter runt om.

Processorn sitter fast på ett kretskort, ofta kallat moderkortet och är kopplat till flera olika minnen. Viktigaste minnena är registren i processorn, där alla beräkningar och tolkningar (t ex om ett tal är större än ett annat) sker, RAM-minnet (Random Access Memory) där program ligger när de körs, och skivminnet (ofta kallat hårddisk) där program och dokument lagras för att vara kvar även när datorn har stängts av (till skillnad från RAM-minnet som töms varje gång strömmen stängs av).

Ibland hör man också benämningen ”data”. I IT-sammanhang betyder data endast information. Personer som använder data (eller ännu värre: ”datan”) för att referera till själva datorn upplevs ofta som mindre kunniga (se t ex Maria Bloms film Masjävlar) av de som skiljer på datorer och informationen som datorerna behandlar. De kunniga kan också använda uttryck som ”datan” och ”min data”, men då som slanguttryck. Tänk på det som att en dator hanterar data.

Om du glömmer bort vad ett visst ord betyder kan du slå upp det i vår ordlista över pythontermer.

Vad är ett program?

Ett (dator)program är en uppsättning instruktioner som styr vad datorn ska göra. Vanligen finns det indata (t.ex. knapp- eller mustryckningar) som behandlas av datorn enligt instruktionerna i programmet vilket resulterar i utdata (text, diagram, bilder) på skärmen.

Bild:791439.jpg
Bild:791440.jpg

En analogi är stickning där samma indata (garn) med ett program kan bli till utdata i form av ett par sockor och med ett annat program till en tröja.

Bild:791441.jpg
Bild:791442.jpg

Precis som själva datorn består ett datorprogram väsentligen av två saker: minne och instruktioner. Minnet kallas för variabler, instruktionerna kallas ofta för satser. Satserna är det som avgör hur variablerna manipuleras (dvs ändrar värde).

Vad är ett programspråk?

En dator förstår endast sitt eget datorspråk (maskinkod, binärkod) som är mycket svårförståeligt även för de flesta erfarna programmerare. För att underlätta för alla som programmerar skriver man därför vanligen program i ett programspråk som t.ex. Java, C++ eller som vi ska använda i denna kurs: Python. För att kunna få datorn att förstå och utföra program skrivna i programspråk krävs det att man översätter (kompilerar, tolkar, interpreterar) det till datorns eget språk.

Kod skrivs vanligen i en editor (textredigerare) som t.ex. notepad++, emacs eller Vim. Till skillnad från ordbehandlare (som t.ex. Word) så hanterar en editor text som data, den innehåller inte formaterad text. Den har underlättande egenskaper så som automatisk färgsättning av texten (för att underlätta läsandet), autokomplettering (för att minska skrivandet och stavfel) och parentesmatchning.

IDE's (Integrated Develop Environment, integrerade utvecklingsmiljöer) innehåller vanligtvis såväl editor som kompilator och avlusare (debugger, används för att hitta fel i program). Några vanliga är Eclipse, Netbeans, Microsoft Visual Studio, Xcode samt IDLE.


Test 1

Börja med att presentera dig genom att skriva ett inlägg under rubriken Intro i kursens forum. Om du inte har lust att berätta om dig själv så kan du alltid skriva ett kort inlägg:

Hej, jag heter Stefan och har skostorlek 41.

Du får gärna ljuga om skostorleken med det är bra om namnet stämmer!

Nu är det dags att göra kursens första test. Under rubriken Examination på kursens förstasida hittar du samtliga test och inlämningsuppgifter. Testet rättas automatiskt och du har möjlighet att göra om testet flera gånger om du inte lyckas på första försöket.

Om det är något som du undrar över i det här avnsnittet eller i testet så är det fritt fram att fråga och diskutera i kursens forum. Men undvik att avslöja de rätta svaren på testfrågorna!