1. Programmeringsintro

Programmeringsteknik

Hoppa till: navigering, sök

Innehåll

Vad är bra med datorer?

Datorer är bra på att göra saker upprepade gånger. Ska du skicka ett brev till en person går det bra att göra för hand, men ska du skicka till tusen personer kommer du att uppskatta all hjälp du kan få av en dator. Datorer är också bra på att organisera, spara och söka information. Ett bibliotek med alla dina CD-skivor kan t ex sparas i en dator och därefter går det enkelt och snabbt att söka efter artister och låttitlar. I det fallet kan man dessutom göras sig av med utrymmeskrävande plastfodral.

Datorers egenskaper utnyttjas för att ersätta manuellt arbete i en förhoppning om att sänka kostnader och ibland för att få en jämnare kvalitét. En dator som t ex styr en svets gör det exakt likadant varje gång. En svetsare som är bakfull på måndagar är inte lika exakt den dagen.

Vad är dåligt med datorer?

Datorer kan inte tolka t ex känslor, naturligt tal eller bilder. Det finns forskare som försöker komma fram till olika sätt att göra detta, men det är mycket komplicerat. Idag fungerar det endast i speciella fall, t ex att tolka talade siffror i en telefondialog.

Arbete med datorer medför ofta ett stillasittande som tär på bland annat ryggar, axlar och händer.

När datorer införs är det ofta för att automatisera en process, dvs ersätta människor med maskiner. Alltför ofta görs detta utan att ta hänsyn till alla kostnader för t ex underhåll av det nya systemet, hantering av undantag som uppstår i alla system. Detta är dock inte ett fel hos datorerna, utan hos personerna som tar besluten utan att tänka på konsekvenserna.

Vad är en dator?

En dator i dagligt tal 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 tekniska sammanhang menar man ibland lådan med datorn och ibland endast processorn som sitter i lådan.

[BILD]

Processorn sitter fast på en 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 5 är större än 4) sker, RAM-minnet (Rapid 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).

[BILD]

Uppgifter som man brukar se i annonser om datorer är t ex datorhastighet mäts i MHz (MegaHertz), dvs miljoner operationer per sekund eller tom GHz (GigaHertz), dvs miljarder operationer per sekund. RAM-storlek som mäts i MB (MegaByte), dvs miljoner byte. En byte består av vanligen åtta bitar och kan t ex lagra ett tal mellan 0 och 255. En bit är den minsta minnesenheten på en dator och innehåller en etta eller en nolla. Skivminnet mäts också i byte och är något hundratal gånger större än RAM-minnet.

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. Vill du imponera ska du alltså använda uttrycken som slanguttryck, inte som om det verkligen hette så.

[KOLLA LÄNKEN, ligger nu via bilda, wiki stödjer ej pdf]

Om du glömmer bort vad ett visst ord betyder kan du slå upp det i ordlistan som alltid finns tillgänglig under mappen "Dokument" i menyn till vänster.

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 (t ex text, diagram, bilder) på skärmen.

[BILD1] [BILD2]

En analogi är t ex 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.

[BILD1] [BILD2]

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, 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 Python krävs det att man översätter (kompilerar, tolkar, interpreterar) det till datorns eget språk.

För just Python finns det två sätt: antingen skriver man programmet först med ett redigeringsprogram (liknar ett ordbehandlingsprogram som t ex Word) och sparar det på en fil. Därefter låter man Python-tolken översätta och köra programmet.

Det andra sättet är att man först startar Python-tolken och därefter skriver programkod direkt i den. Tolken kommer då att utföra programkoden allteftersom du skriver den.

Fördelen med det första sättet är att det blir enklare att gå tillbaka och ändra programmet om det inte blev riktigt rätt eller när man kommer på roliga tillägg till det. När man skriver större program gör man det på detta vis.

Fördelen med det andra sättet är att man direkt kan se vad som inte fungerar. Det används därför mest för att testa saker.

Eftersom tolken bara är ett dumt program kräver den att texten på programfilen (eller det du skriver i tolken) mycket strikt följer bestämda regler. Ett väldigt litet pythonprogram som kan kompileras och köras utan fel ser ut så här:


Python
print "Hej!"

Om man skriver någonting som kompilatorn inte kan översätta kommer den att tala om var det är fel och vägra att översätta allt. Lyckas översättningen så går programmet att köra. I det här fallet kommer texten Hej! att skrivas ut.

Om man skriver ovanstående minimala program på en fil och kallar filen för ”MittProgram.py” kan det se ut så här i terminalfönstret (fetstil markerar inmatning från den som programmerar:


Unix/Mac OS X/DOS
> python MittProgram.py
Hej!
> 

Där > är en prompt från datorn (ett tecken som visar att den är redo för fler kommandon).

Gör man samma sak genom att starta tolken först kan det se ut så här i terminalfönstret:

[strong-taggarna funkar inte]

Python
<strong>> 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 "help", "copyright", "credits" or "license" for more information.
<strong>>>> print "Hej!"</strong>
Hej!
<strong>>>> </strong>

Där >>> är prompten från Python-tolken, som visar att den är redo för nya kommandon.

Vill du redan nu testa att programmera på detta sätt kan du hitta instruktioner i avsnitt 1.9.

Tilldelning

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:


Python
age = 18
length = 180
weight = 80

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:


Python
my_cousins_age = age

Då tilldelas my_cousins_age samma värde som age har. Alla variabelnamn i Python måste börja med en (engelsk) bokstav (inte åäö), men efter den kan man blanda bokstäver och siffror.

Högerledet kan innehålla uträkningar som behöver utföras innan tilldelningen sker:


Python
a = 3
b = a + 15

Ovanstående två rader ser till att b får värdet 18.

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.

Olika slags värden

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).


Python
namn1 = 'Oskar'
namn2 = "Kajsa"

För att skilja på variabelnamn och strängar omsluter man strängar med apostrofer eller citattecken.


Python
namn3 = 'Sima'
namn4 = namn3

I exemplet ovan får namn4 värdet 'Sima'. Hade man skrivit apostrofer runt namn3 hade namn4 istället fått värdet 'namn3'.

Uppräkning

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


Python
my_age = 19
my_age += 1

får my_age värdet 20. Den första raden ger my_age värdet 19 och den andra raden räknar upp my_age 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.

Man kan åstadkomma samma sak med satserna:


Python
my_age = 19
my_age = my_age +1

Men så många tecken orkar få programmerare att skriva. Anledningen att variabeln heter my_age istället för min_ålder är att åäö inte fungerar i variabelnamn.

Om variabeln innhåller en sträng läggs den nya strängen till den gamla. Efter satserna:


Python
husdjur = "hund "
husdjur += "och katt"

Kommer husdjur att vara "hund och katt"

Utskrifter

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.

<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>

För att skriva ut värden på skärmen använder man instruktionen print. Prova att skriva följande rader


Python
x = 15
print x
print 1001
print 14

Genom att använda ett kommatecken så kan man skriva ut flera saker på samma rad. Exempelvis skriver


Python
print "Charles is", 19, "years old"

ut "Charles is 19 years old" på samma rad. Precis samma sak skrivs ut på samma sätt av:


Python
age = 19
print "Charles is", age, "years old"

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:


Python
print "Charles is",
age = 2006-1987
print age, "years old"

Ovanstående skriver också ut samma sak som tidigare.

Slutprov 1