Grundläggande programmering

Grundläggande
programmering
Innehåll
•
•
•
•
•
•
•
•
Problemen
Variabler
Villkorssatser
Problem 1
Upprepningar
Problem 2
Vektorer
Problem 3
Introduktion
Problem
•
•
•
Problem 1: Vi får göra ett uttag som är mellan
100 och 2000 men endast om uttaget är samma
som eller mindre än beloppet på kontot
Problem 2: Beräkna fakulteter (10! = 10*9*8.. )
Problem 3: Hitta det största talet i en mängd
För att lösa problem 1
• Vi behöver veta något om:
• Variabler
• Villkorssatser
Variabler
x = 5;
Variabelns värde
Variabelns namn
Vi säger att variabeln x har
tilldelats värdet 5
Variabler
Olika värden:
x = 3;
x = 2.01;
x = true;
En kompilator (Tolk) läser varje instruktion
radvis och börjar med den översta.
Räkneoperationer för tal
•
•
•
•
+ Addition
- Subtraktion
* Multiplikation
/ Division
Räkneoperationer för heltal
• Exempel på addition:
x = 5;
Hur skriver vi för att x ska ha tilldelats värdet
7 (vi måste addera till 2)?
Så här? x + 2;
NEJ
För att x ska ha tilldelats värdet 7. måste vi
använda tilldelningstecknet =
Räkneoperationer för heltal
• Fortsättning på exempel
Så här? x = 2;
Nästan
Nu tilldelade vi x värdet 2.
Men hur gör vi då?
x = x + 2;
Rätt
Vi hämtar x sedan tidigare och lägger till 2 och
sparar resultatet i x.
Räkneoperationer för heltal
• Slutsats?
Här skiljer sig matematik och programmering!
Från föregående exempel
x = x + 2;
Om vi läser det som en ekvation får vi att:
0=2!
OBS! Tilldelningstecknet är inte samma sak som
matematikens likhetstecken
Räkneoperationer för heltal
• Testa din förståelse!
x = 4;
y = 3;
x = y;
y = y + x;
Vad blev x?
x=3
Vad blev y?
y=6
Division
• 1/3 = 0.33333… fortsätter med 3:or i all
oändlighet.
• Exempel:
x = 1/3
Innehåller vår variabel ett oändligt antal
3:or?
Nej! För att lagra ett oändligt antal 3:or
behöver vi ett oändligt stort minne att lagra
de i.
Fler begränsningar
• Datorn har ett största tal
• Datorn har ett minsta tal
Vad gör det?
Detta påverkar ens beräkningar och ger
upphov till en del fenomen. Vilket tas upp
i beräkningsvetenskap I.
Villkorssatser
• När vi vill att något ska ske efter att ett
villkor har uppfyllts använder vi en
villkorssats (kallas även if-sats)
Villkorssatser
• Exempel:
Om lampknappen är nertryckt så tänd lyset.
Lampknappen är nertryckt.
Modell:
lampknapp = true;
if lampknapp är true
%kod som tänder lyset
end
Villkorssatser
• Det finns olika sätt att göra jämförelser på.
• I vårt fall var vi intresserade av att se om lampknappens
värde var samma som true.
• Det hade vi skrivit så här:
if lampknapp == true
%kod som tänder lyset
end
Villkorssatser
a >b
a<b
a >= b
a <= b
a == b
a != b
a är större än b
a är mindre än b
a är större än eller samma som b
a är mindre än eller samma som b
a är samma som b
a är inte samma som b
Villkorssatser
• Om vi vill göra något endast om ett villkor
inte är uppfyllt kan vi bygga vidare på vår
if-sats. Vi utökar föregående exempel:
if lampknapp == true
%kod som tänder lyset
else
%kod som släcker lyset
end
Villkorssatser
• Exempel: Vi vill tanka bilen om det ryms
bensin i bensintanken
• Vi vill veta hur mycket bensin som vi har
fyllt tanken med
Villkorssatser
•
•
•
•
•
Vilka variabler har vi? Vi gissar på…
maxtank
%Maxvolym i tanken
bensintank
%Volym i tanken
önskadtank
%Önskad volym
giventank
%Bensinen macken ger
oss
Villkorssatser
• Vilka scenarion finns?
1. Vi försöker stoppa i för mycket bensin
2. Vi stoppar in tillåten mängd bensin
• Kan flera scenarion inträffa samtidigt?
Nej. Vi kan inte ha en överfull tank samtidigt
som det finns plats kvar i den!
Villkorssatser
1. Vi stoppar in tillåten mängd bensin
(Lättaste först)
• Sökt: hur mycket bensin tanken fylls med
• Det måste vara samma mängd som den
vi bad om! alltså:
giventank = önskadtank
Villkorssatser
•
•
•
•
•
•
Vi försöker stoppa i för mycket bensin
Sökt: hur mycket bensin tanken fylls med
Vi stoppar i för mycket bensin om:
Bensintank + önskadtank > maxtank
Bensin vi fyller på med är då:
giventank = maxtank - bensintank
Villkorssatser
• Sätter vi ihop allt har vi:
• if bensintank + önskadtank > maxtank
giventank = maxtank –bensintank
else
giventank = önskadtank
end
Villkorssatser
• Vi kan sätta ihop flera villkor
• Exempel:
if anv == 1234 && password == 4321
• på svenska: om användarnamnet är 1234
och lösenordet är 4321 så är villkoret
uppfyllt
• eller skrivs med |
Problem 1
• Problem 1: Vi får göra ett uttag som är
mellan 100 och 2000 men endast om
uttaget är samma som eller mindre än
beloppet på kontot
• Vilka variabler behövs?
• Hur ser villkoren ut som beskriver
uttagen?
Upprepningar
• Vi vill upprepa kod så länge ett villkor är
uppfyllt
Upprepningar
• Exempel:
1+2+3+..+10 = ..
i
i1
10
• Vad gäller?
• Upprepningsvillkor: Vi börjar på 1 och
slutar efter 10, vi ökar med 1
per steg.
Under varje upprepning lagrar vi
summan
Upprepningar
summa = 0;
for i går från 1 till 10
%ändra summan
end
Upprepningar
summa = 0;
for i=1:1:10
summa = summa + i;
end
Upprepningar
• Vad gör vi om vi vill stega så länge a > b,
eller nåt liknande?
• Vi behöver något annat än for, vi behöver
while
While
while villkor
%gör det här så länge villkoret är uppfyllt
%Se till så att variablerna i villkoret ändras
end
• While används när vi vill ha större kontroll
över stegningen.
Problem 2
• Beräkna fakulteter
• 10! = 10*9*8*7*6*5*4*3*2*1
• 0! = 1
• Prova beräkningen åt båda hållen. 1*2*3*..
• Sen 10*9*8*..
Vektorer
• En vektor är en variabel med en lista av
värden
Vektorer
• Exempel:
a = (1,0,0,0,0);
1
0
0
0
0
Vektorer
• För att komma åt ett
element måste vi tala
om vektorns index.
• Kod:
a(1) = 2
1
0
0
0
0
0
0
index: 2
värde: 0
2
0
0
Vektorer
• Exempel:
• Vi vill beräkna medelvärdet (Totala
summan delat på antalet element) givet
mängden = {1,0,0,1}
• Medelvärde : 0.25 * (1+0+0+1) = 0.5
Vektorer
• Vad blir koden?
a = [1,0,0,1];
summa = 0;
for i=1:1:4
summa = summa + a(i);
end
medelvärde = summa/4;
Problem 3
• Hitta det största talet i mängden:
{2,9,8,11,6}