550 likes | 787 Views
Grundläggande programmering. Problem. Problem1 : Omvandla sekunder till timmar, minuter och sekunder Problem 2: Beräkna fakulteter (10! = 10*9*8.. ) Problem 3: Hitta det största talet. För att lösa problem 1. Vad är en variabel? Olika variabeltyper Heltalsoperationer. Variabler.
E N D
Problem • Problem1 : Omvandla sekunder till timmar, minuter och sekunder • Problem 2: Beräkna fakulteter (10! = 10*9*8.. ) • Problem 3: Hitta det största talet
För att lösa problem 1 • Vad är en variabel? • Olika variabeltyper • Heltalsoperationer
Variabler Int x = 5; Variabelns värde Variabelns namn Variabelns typ. Int : heltal Talar om för kompilatorn att instruktionen slutar här Vi säger att variabeln x som är av typen heltal har tilldelats värdet 5
Variabeltyper Vi tar upp tre stycken olika typer: • Heltal • Flyttal • Booleans
Variabelnamn • Varje variabel måste ha ett (unikt) namn • Namnet måste börja med en bokstav • Namnet får endast innehålla bokstäver ,siffror och _ • Å,Ä,Ö bör undvikas • Bra namn beskriver variabeln
Variabelns värde • Variabelns värde beror av dess typ Exempel: Int x = 5.2; EJ kompatibelt , 5.2 är inget heltal Int x = 5; Kompatibelt, x har tilldelats värdet 5
Variabelns värde Ett till exempel: double x = 5; Kompatibelt , x har tilldelats värdet 5. Talet 5 kan ses som både ett heltal och ett flyttal. Men vi måste vara försiktiga! Mer strax.
Räkneoperationer för heltal • Det finns 5 stycken olika: • + • - • * • / • %
Räkneoperationer för heltal • Exempel på addition: Int 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 ! Tilldelningstecknet är inte samma sak som matematikens likhetstecken
Räkneoperationer för heltal • Testa din förståelse! Int x = 4; Int y = 3; x = y; y = y + x; Vad blev x? x = 3 Vad blev y? y = 6
Räkneoperationer för heltal Division • Exempel Int x = 7/2; Vad blir det? • 3.5 • 3 • Det går inte därför 7/2 är inget heltal
Räkneoperationer för heltal Division • Rättsvar : 3 • 3.5 är inget heltal. • Dividerar vi heltal med heltal sparas bara heltalsdelen • Divisionen retunerar ett heltal
Räkneoperationer för heltalModulo % • Modulo ger resten vid heltalsdivision • Exempel: x = 8%4; Vad blev x? x = 0; Ett till exempel: x = 4%8;
Problem 1 • Vi kan nu tillräckligt med programmering för att lösa första problemet! • Vi har 36540 s , vi vill skriva det på formen: hh : min : sek
Lösningsförslag till Problem 1 int allaSekunder = 36540; int timmar = allaSekunder/3600; int minuter = (allaSekunder%3600)/60; int sekunder = (allaSekunder%3600)%60;
Räkneoperationer för flyttalDivision • Exempel: double x = 1/3; Vilket värde har x tilldelats? 0 Divisionsoperatorn tror att vi är intresserade av heltalsdivsion.
Räkneoperationer för flyttalDivision • Hur gör vi en flyttalsdivision? double x = 1.0/3; 0.33333333…. • Eller: double x1 = 1; double x2 = x1/3; x2 = 0.33333333….
Flyttal • 1/3 = 0.33333… fortsätter med 3:or i all oändlighet. • 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.
Villkorssatser • Om vi vill utföra instruktioner efter att ett villkor är uppfyllt använder vi oss av en villkorssats. • Villkoren bygger på jämförelser mellan två värden
Villkorssatser • Exempel: Vi vill ta ut pengar från banken men bara om vi har tillräckligt på kontot • Låt uttag vara beloppet vi vill ta ut • Låt saldo vara hur mycket vi har på kontot
Villkorssatser • Int uttag = 100; • Int saldo = 2000; • If(uttag < saldo){ • //Ta ut pengar • }
Villkorssatser • Uttag < saldo : Jämförelsen som sker • Allting mellan { } är ett block. Här lägger vi in vad som ska ske om villkoret är uppfyllt
Villkorssatser • Hur gör vi om vi vill tillåta uttag som även är lika stora som saldot? If(uttag <= saldo){ //Ta ut pengar } { } , är onödigt om vi bara har en rad kod
Jämförelser a >b a är större än b a < b a är mindre än b a >= b a är större än eller samma som b a <= b a är mindre än eller samma som b a == b a är samma som b a != b a är inte samma som b
Jämförelser Ett väldigt vanligt programmeringsmisstag: If ( a = b){ a = 2; } Ser du något konstigt?
Jämförelser • = Ett likhetstecken betyder tilldelning, alltså var satsen alltid sann! • == Två likhetstecken används för att se om två variabler har samma värde
Jämförelser Ett till vanligt misstag: If (a == b); a = 2; Här avslutas villkorssatsen Det här ligger utanför villkorssatsen och sker oavsett om a == b
Flera jämförelser • Vi kan ha flera villkor samtidigt. • Exempel : Barn över sju år får gå på bio, och barn under sju år får gå på bio med vuxen • Hur kan en villkorssats se ut?
Flera jämförelser • If(barnAlder > 7 || barn_har_vuxen == true) • //Får gå på bio
Flera jämförelser • Vi kan kräva att två villkor, eller flera villkor ska vara uppfyllda • Om maten är god och dyr så äter jag den • Hur kan en villkorssats se ut?
Flera jämförelser If(isGod == true && isDyr == true) //ät
Else if, else Om vi vill göra något när if-satsen inte är uppfylld. Kan vi använda else if, eller else Else if Påbörjar en ny if-sats om föregående sats inte var sann Else inträffar när ingen if-sats är uppfylld.
Else if, else • Exempel: If ( a == b){ //a och b är samma }else if( a > b){ //a är större än b }else{ //Inget av ovanstående (a < b) }
Nästlade if-satser • Vi kan ha flera if-satser i varandra If( …. ){ If( ….){ } } • Tabba alltid koden!
Upprepningar • Upprepar ett block kod så länge ett villkor är uppfyllt • Olika sätt att upprepa: • for • while • do while
For • for(initiera variabel; villkor;stegning){ //kod som ska upprepas } Exempel: vi vill beräkna summan 1+2+3+4+5+6+7+8+9+10
For int summa = 0; for(int i = 1; i <= 10; i++){ summa += i; } i++;? samma som: i = i +1; summa += i; ? samma som:summa = summa + i;
While • Satshuvudet består endast av ett villkor while (villkor){ //gör det här så länge villkoret är uppfyllt //Se till så att variablerna i villkoret ändras } • 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 • Vi vill kunna beräkna en godtycklig fakultet
Lösningsförslag till Problem 2 int fakultet = 1; for(int i = 0; i < 0; i++){ fakultet *= i; }
Fältvariabler int[] a = new int[10]; Reservera plats för 10st värden En fältvariabel av typen heltal
Tilldelning av värden i fältvariabler • För tal tilldelas värdet noll om inget annat har angivits • Vi tilldelar värden genom att tala om vid vilket index värdet ska lagras • Index börjar på 0 a[0] =3; Index
Tilldelning av värden i fältvariabler Ett exempel: int[] a = new int[10]; • skapar en ny fältvariabel med 10 element, alla får värdet 0 a[0] =2; a[9] = 7;
Problem 3 • Hitta det största talet i mängden: {2,9,8,11,6}
Lösningsförslag till problem 3 int[] a = new int[5]; a[0] = 2; a[1] = 9; a[2] = 8; a[3] = 11; a[4] = 6; int max = a[0]; for(int i=1;i<5;i++){ if(a[i]>max){ max = a[i]; } }
Metoder • Metoder kan ses som små mindre program designade för att lösa en specifik uppgift
Metoder • Exempel: En metod talar om Dagens datum En annan metod ger dig Pi (3.1415..)