Lektion 1 - Programmeringsteknik F1, ht 2003 Daniel Deogun danield@it.uu.se 8 september 2003
Innehåll 1 När är ICA öppet? 3 1.1 Problem................................ 3 1.2 Lösning................................ 3 1.3 Output................................ 3 1.4 Alternativ Lösning?......................... 3 2 Delbarhet 4 2.1 Problem................................ 4 2.2 Lösning................................ 4 2.3 Output................................ 4 3 Binary to decimal 5 3.1 Problem................................ 5 3.2 Lösning................................ 5 3.3 Output................................ 5 3.4 Alternativ Lösning?......................... 5 4 Adressbok 6 4.1 Problem................................ 6 4.2 Lösning................................ 6 4.3 Output................................ 7
1 När är ICA öppet? 1.1 Problem Hur kan vi avgöra om ICA är öppet en viss tid på dygnet? 1.2 Lösning Store ica = new Store(8,22); Std.out.println("Är ICA öppet kl 18:15? " + ica.openat(18.15)); Std.out.println("Är ICA stängt kl 7.59? " + ica.closedat(7.59)); Std.out.println("Är ICA stängt kl 21.45? " + ica.closedat(21.45)); Std.out.println("Är ICA öppet kl 23.56?" + ica.openat(23.56)); public class Store { private double open; private double close; private boolean isopen = true; private boolean isclosed = true; public Store(double t1, double t2) { open = t1; close = t2; } //end constuctor public boolean openat(double time) { if(time >= open && time < close) return isopen; else return!isopen; } //end openat public boolean closedat(double time) { if(time < open time >= close) return isclosed; else return!isclosed; } //end closedat 1.3 Output Är ICA öppet kl 18:15? true Är ICA stängt kl 7.59? true Är ICA stängt kl 21.45? false Är ICA öppet kl 23.56? false 1.4 Alternativ Lösning? Hint: Bara en metod behövs.
2 Delbarhet 2.1 Problem Hur avgör vi om ett heltal är delbart med ett annat heltal? 2.2 Lösning Compute comp = new Compute(); Std.out.println("Är 100 delbart med 2? " + comp.div(100,2)); Std.out.println("Är 17 delbart med 7? " + comp.div(17,7)); Std.out.println("Är 51 delbart med 17? " + comp.div(51,17)); Std.out.println("Är 19692 delbart med 36? " + comp.div(19692,36)); public class Compute { public boolean div(int a, int b) { return a % b == 0; } //end div 2.3 Output Är 100 delbart med 2? true Är 17 delbart med 7? false Är 51 delbart med 17? true Är 19692 delbart med 36? true
3 Binary to decimal 3.1 Problem Hur konverterar vi ett binärt tal till ett decimaltal (bas 10)? 3.2 Lösning Compute comp = new Compute(); Std.out.println("101 = " + comp.convert("101")); Std.out.println("11001 = " + comp.convert("11001")); Std.out.println("0010101 = " + comp.convert("0010101")); Std.out.println("11111111 = " + comp.convert("11111111")); public class Compute { public int convert(string binarynumber) { int exp = binarynumber.length() - 1; int res = 0; int i = 0; while(exp > -1) { if(binarynumber.charat(i)== 1 ) res = (int)(res + Math.pow(2,exp)); exp--; i++; } //end while return res; } //end convert 3.3 Output 101 = 5 11001 = 25 0010101 = 21 11111111 = 255 3.4 Alternativ Lösning? Hint: Titta i klassen Long i Java s API.
4 Adressbok 4.1 Problem Hur skapar vi en adressbok där vi kan spara namn, adress, telefonnummer och coolhetsfaktor? 4.2 Lösning AddressBook entry1 = new AddressBook("Bill Gates","Redmont,WA,USA", 100101,-999); AddressBook entry2 = new AddressBook("Apan","Skansen, Stockholm", 987654, 150); AddressBook entry3 = new AddressBook("Zlatan","Ajaxroad, Holland", 1, 500); AddressBook entry4 = new AddressBook("Kalle Anka","Ankeborg",12345, 999); entry1.printinfo(); entry2.printinfo(); entry3.printinfo(); entry4.printinfo(); public class AddressBook { private String name; private String address; private int phone; private long coolfactor; public AddressBook(String n, String a, int p, long cf) { name = n; address = a; phone = p; coolfactor = cf; } //end constuctor public void printinfo() { Std.out.println("Namn: " + getname()); Std.out.println("Adress: " + getaddress()); Std.out.println("Telefon: " + getphone()); Std.out.println("Coolhetsfaktor: " + getcoolfactor()); Std.out.println(""); } //end printinfo private String getname(){ return name; } //end getname private String getaddress(){ return address; } //end getaddress
private int getphone(){ return phone; } //end getphone private long getcoolfactor(){ return coolfactor; } //end getcoolfactor 4.3 Output Namn: Bill Gates Adress: Redmont,WA,USA Telefon: 100101 Coolhetsfaktor: -999 Namn: Apan Adress: Skansen, Stockholm Telefon: 987654 Coolhetsfaktor: 150 Namn: Zlatan Adress: Ajaxroad, Holland Telefon: 1 Coolhetsfaktor: 500 Namn: Kalle Anka Adress: Ankeborg Telefon: 12345 Coolhetsfaktor: 999