Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Relevanta dokument
Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

DD1314 Programmeringsteknik

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Extramaterial till Matematik Y

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Klassdeklaration. Metoddeklaration. Parameteröverföring

Uppgifter teknik HT17 (uppdaterad v. 40)

Enkla datatyper minne

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Grundläggande datalogi - Övning 1

Programmeringsteknik med C och Matlab

729G04 Programmering och diskret matematik. Föreläsning 7

Användarhandledning Version 1.2

Föreläsning 1 & 2 INTRODUKTION

Planering Programmering grundkurs HI1024 HT 2014

i LabVIEW. Några programmeringstekniska grundbegrepp

Programmering A. Johan Eliasson

v. 42 Python HT17 En introduktion Oscar Bergqvist

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Tentamen i Introduktion till programmering

Introduktion till programmering och Python Grundkurs i programmering med Python

SMD 134 Objektorienterad programmering

Planering av ett större program, del 2 - for och listor. Linda Mannila

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

*Pekarvärden *Pekarvariabler & *

Ordlistor, filhantering och ut på webben. Linda Mannila

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

v. 43 Python HT17 En introduktion Oscar Bergqvist

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Språket Python - Del 2 Grundkurs i programmering med Python

Extramaterial till Matematik Y

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Planering Programmering grundkurs HI1024 HT data

Besiktningsprotokollet

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Parameteröverföring. Exempel. Exempel. Metodkropp

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Laboration: Whitebox- och blackboxtesting

Chapter 3: Using Classes and Objects

JavaScript del 2 DocumentWrite, Prompt och ParseInt

Objektorienterad Programmering (TDDC77)

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Föreläsning 2 Programmeringsteknik och C DD1316

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Introduktion till programmering SMD180. Föreläsning 8: Listor

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Övning2. Variabler. Data typer

Tilpro Övning 1. Per-Anders Staav (föredrar att kallas Pa) Kan nås via epost: (fast de flesta frågor besvaras nog bäst av Alexander)

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Planering Programmering grundkurs HI1024 HT TIDAA

TDIU01 - Programmering i C++, grundkurs

Språket Python - Del 1 Grundkurs i programmering med Python

JavaScript del 3 If, Operatorer och Confirm

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Introduktion till användning av linux-servern sledge och några övningsuppgifter

F4. programmeringsteknik och Matlab

Visual Basic, en snabbgenomgång

Övningsuppgifter kapitel 8

Föreläsning 10. Pekare (Pointers)

Extramaterial till Matematik Y

Sätt att skriva ut binärträd

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

HI1024 Programmering, grundkurs TEN

TDDC77 Objektorienterad Programmering

Programmering i C, 7,5 hp

Funktioner. Linda Mannila

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Grundläggande programmering med C# 7,5 högskolepoäng

Imperativ programmering. Föreläsning 2

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

C++ Lektion Tecken och teckenfält

Föreläsning 3.1: Datastrukturer, en översikt

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Föreläsningsmaterial (Syntax och variabler)

JavaScript del 5 Funktioner

Objektorienterad programmering Föreläsning 4

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Datalogi, grundkurs 1

Så fungerar en dator

Transkript:

Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis som du sparar din bästa kompis telefonnummer i ditt minne, kan du spara information i datorns minne. Variabler är ett sätt att komma åt informationen som finns i datorns minne. Nu som då behöver du göra ändringar i ditt minne. Din kompis kanske flyttar utomlands och får en helt ny telefonnummer. Då måste du byta ut det gamla telefonnumret i ditt minne mot det nya. På samma sätt kommer ditt minne att förändras med tiden, i och med att du får nya kompisar, vars telefonnummer du behöver komma ihåg. På samma sätt kan en dators minne ändra med tiden, när än du ber om det genom att ändra på variablernas värden. Därav kommer också uttrycket variabel: en variabels värde kan variera. Olika typer av värden Heltal, flyttal och komplexa tal är alla tal, eller hur? Man kan ändå inte säga att ett heltal är det samma som ett flyttal, utan de olika talen är olika typer av tal. Med andra ord utgör heltal en mängd tal, medan flyttalen utgör en annan mängd. Med enbart tal skulle man inte komma speciellt långt i programmeringen, utan man behöver andra sorters data också. Exempelvis är text inte en typ av tal, varför text behöver få en egen typ; vi kallar text för strängar. Dessa olika typer kallas i programmeringssammanhang för datatyper. Förutom siffror och strängar finns det en mängd andra datatyper som du kommer att stöta på framöver. Variabler och minnet Variablerna hör till de verkliga grundstenarna i ett datorprogram. Utan variabler skulle vi inte ha så stor nytta av datorer. Låt oss ta ett exempel. Anta att du har ett program som ber användaren mata in två tal och sedan summerar dem och skriver ut resultatet. Det låter enkelt, eller hur? Men låt oss fundera lite närmare på vad datorn måste göra för att köra ett sådant programmet. För att göra det riktigt enkelt att förstå skall vi se på det som en diskussion mellan två personer, i stället för mellan en dator och en person. Lisa: Hallå där Frank, jag har just lärt mig hur man adderar två tal. Frank: Häftigt! Lisa: Ge mig det första talet. Frank: 2. Lisa: Ok! Ge mig nu det andra talet. Frank: 5. Lisa: Ok! Här är svaret: 2 + 5 = 7. Frank: Wow, du är ju helt otrolig! När Frank har sagt "2" måste Lisa komma ihåg det för att kunna använda det senare på

nytt; hon måste alltså lagra det i sitt minne, innan Frank säger det andra talet. På samma sätt måste datorn spara undan informationen: först måste det första talet lagras i en variabel, sedan det andra talet i en annan variabel. Slutligen måste den addera värdena i de två variablerna och lagra summan i ytterligare en variabel för att inte glömma bort den. Okej, det finns alltså stora likheter mellan det mänskliga minnet och datorns minne. Men, det finns också stora skillnader. Du kan tänka på datorns minne som ett postkontor med en vägg full av postfack. Varje fack har en adress så att postmannen skall kunna del ut rätt post till rätt person. Flera lådor kan inte heller ha samma adress, eftersom det skulle rådda bort postmannen totalt. På samma sätt är datorns minne uppbyggt som en mängd lådor, så kallade celler, som var och en har en unik adress. FLASH-EXAMPEL För att kunna lagra saker i datorns minne måste du "reservera" utrymme där: du kan inte bara kasta in informationen hur som helst, utan du måste säga vad du vill spara och med vilket namn. Det här kallas att tilldela en variabel, och innebär att du sätter in ett värde i en cell i minnet, som du sedan kan komma åt med hjälp av det variabelnamn du valt: Därefter kan datorn enkelt addera ihop de två talen och lagra resultatet i ännu en variabel: summa = tal1 + tal2 Vad händer om man ändrar en variabels värde? Tilldelning a = 7 b = a Omtilldelning a = 9 Vad händer med b? Viktigt! Ett variablenamn motsvaras av en plats i datorns minne. När du sätter in ett nytt värde i en variabel byter den ut det gamla värdet; det gamla värdet försvinner ur minnet Att läsa information om en variabel från minnet ändrar inte variabelns innehåll på något sätt

Exempel (film) Anta att du skriver ett program som använder din månadslön, 1000 å flera ställen. Du skriver gladeligen in lönebeloppet 1000 på alla dessa ställen, och ditt program fungerar precis som du vill. Så en dag när du kommer till jobbet kallar chefen in dig på sitt rum och ger dig en helt fenomenal nyhet; du har fått en 100-euros löneförhöjning! Visst, glada nyheter i alla andra sammanhang än vad ditt program beträffar; för att du skall få programmet att fungera korrekt igen, måste du gå igenom varje kodrad för att ändra värdet 1000 som representerar din gamla lön till det nya beloppet, 1100. I ett stort program innebär en sådan ändring ett stort arbete som kräver mycket tid. Dessutom är risken för att du missar att ändra en eller ett par förekomster i koden rätt stor, och på det sättet introducerar allvarliga buggar (fel) i ditt program. Det är i sådana här situationer som vi har nytta av variabler! I ditt program, kunde du t.ex. välja namnet lön för att representera det aktuella lönebeloppet. Likhetstecknet innebär att ordet på vänstra sidan härefter pekar på värdet på högra sidan, i detta fall så att lön får värdet 1100. Genast efter att du har tilldelat en variabel kan du skriva om alla kodrader som innehåller det felaktiga beloppet 1000 så att du i stället för 1000 nu använder lön. Nästa gång du får en löneförhöjning behöver du bara ändra på raden så att den motsvarar den nya lönen för att ändringen skall gälla i hela programmet. Varför kallas nu då de här namnen för variabler? Jo, en variabel är ett värde som kan variera medan programmet körs; dess värde är inte konstant. Tänk tillbaka på ditt löneprogram och anta att det innehåller följande kodrader: skatt = lön * 0.15 I den här kodsnutten finns två variabler; lön och skatt. 0.15 representerar här din skatteprocent. En av orsakerna till varför variabler är bra att ha är alltså att lagra resultatet från en beräkning. Du kan här tänka på variabeln skatt som en slags låda i vilken programmet kastar ner resultatet av beräkningen. När du behöver komma åt värdet som lagras variablerna, kan du bara lägga ner handen i lådan och lyfta upp det; bildligt talat förstås. Om du t.ex. vill räkna ut vad du får i handen, efter att du betalat skatt, kan du skriva så här.

i_handen = lön - skatt Här introducerar vi ännu en variabel; i_handen. Efter att datorn har utfört subtraktionen lön - skatt, kommer variabeln i_handen att innehålla värdet... Ja, vad blir det? Testa nu att skriva in hela koden i Python-tolken och se vad du kommer till för resultat. INTERAKTION [Kolla] (Rätt svar 935) Bra! Kan du se något annat ändamål där variabler behövs? Jo, hur är det med skatteprocenten? Borde inte den också vara en variabel, i stället för att skrivas in som siffror i koden - skatteprocenten kan ju ändras den också, precis som din lön, och då är det mycket behändigare att bara behöva ändra på ett ställe i stället för på flera. Hur skulle det vara med att introducera en ny variabel, t.ex. skatteprocent. Då får vi följande program: skatteprocent = 0.15 skatt = lön * skatteprocent i_handen = lön - skatt Kolla gärna att den här kodsnutten ger samma resultat som den tidigare. Okej, nu har du kanske fått en bild av hur pass nyttiga variabler verkligen är. Vad skall man kalla sina variabler? Vad tror du meningen med följande kodsnutt är? a = 1100 b = 0.15 c = a * b d = a - c Hmm, inte helt enkelt att förstå vad som är meningen, eller hur? Det här är faktiskt ditt löneprogram, enda skillnaden är att variabelnamnen är ändrade. Om du kör programmet ser du att det ger samma resultat. Här ser du hur viktigt det är att ge variablerna bra namn; namn som inte betyder något ger inte den som läser koden någon som helst idé om vad de olika variablerna representerar; vad står namnen a, b, c och d för? Genom att välja bra variabelnamn, eller identifierare, kan du få dina program självdokumenterande, vilket betyder att kodraderna i sig förklarar för läsaren vad programmet gör. När du namnger dina variabler, kan du inte bara skriva in en rad tecken på tangentbordet och förvänta dig att Python skall godkänna vad som helst; det finns en del regler som du måste följa. För det första måste en identifierare i Python börja med något av följande tecken:

A-Z a-z _ De följande tecknena kan bestå av följande: A-Z a-z _ 0-9 Dessutom har Python en del egna ord, sk. nyckelord, som Python har monopol på och vi som programmerar inte får använda som identifierare. and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def finally in print FLASH-EXEMPEL Observera att det är skillnad på små och stora bokstäver i variabelnamn: vikt och Vikt är två olika namn, liksom antalet_elever och Antalet_Elever. Sammanfattning Alla datorer måste manipulera data för att producera ett resultat. Precis som andra programmeringsspråk, ger Python dig många olika datatyper som du kan använda i dina program. Datatyperna gör det möjligt att hantera bland annat siffror och text. Det finns mycket att lära om variabler och det är helt okej om du känner dig lite vimsig just nu. Men oroa dig inte; när du har sovit på saken och börjar programmera och verkligen använda variablerna i praktiken kommer allt att vara helt vettigt. Att fundera på: Vad är en variabel? Hur gör variabler det lättare att skriva program? Anta att du skall skriva ett program som beräknar en anställds lön för ett givet antal timmar i veckan. Vilka variabler behöver du? Skriv programmet som beräknar lönen med hjälp av dessa variabeldeklarationer.