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