Upload
jadon
View
56
Download
3
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
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
Int x = 5;
Variabelns typ.Int : heltal
Variabelns namn
Variabelns värde
Vi säger att variabeln x som är av typen heltal har tilldelats värdet 5
Talar om för kompilatorn att
instruktionen slutar här
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å exempelSå här? x = 2;NästanNu 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 exempelx = x + 2;Om vi läser det som en ekvation får vi att0 = 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 = 3Vad blev y?y = 6
Räkneoperationer för heltal Division
• Exempel
Int x = 7/2;
Vad blir det?
1. 3.5
2. 3
3. Det går inte därför 7/2 är inget heltal
Räkneoperationer för heltal Division
• Rättsvar : 3
1. 3.5 är inget heltal.
2. Dividerar vi heltal med heltal sparas bara heltalsdelen
3. 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];
En fältvariabel av typen heltal
Reservera plats för 10st värden
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;
0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 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..)
Metoder
Kan vi göra egna metoder?
JA!
Metoder
• Ex.
Vi konstruerar en metod som ger oss arean av en cirkel.
Men först måste vi förstå hur en metod använder sig av in- och utparametrar
Metoder
• inparametrar (frivilligt): variabler metoden kan använda sig av från ”utsidan”
• Utparametrar (frivilligt): det metoden returnerar när den är klar
• En metod kan bara använda sig av variabler definierade i sig själv, sina in-parametrar och andra metoder.
• *med frivilligt menas att det är tillåtet för metoder att vara utan inparametrar och eller även utparametrar.
Metoder
public double cirkelArea(int radie){return 3.141*radie*radie;
}
Returtyp
Namn
inparameter
utparameter
Metoder
• Hur använder vi areametoden vi just gjorde?
double r = 2;
double area = cirkelArea( r );