1 / 27

SOFTWARE AND PROGRAMMING 1

O. SOFTWARE AND PROGRAMMING 1. Lecture: MB33 7:30-9:00 (except 11&18.01.06) Lab: B43, MB321, MB536 6:00-7:30 (from 25.01.05) [each student must have obtained access to Birkbeck computing] Lab MB536: students whose family names fall in A-F Instructor: Mr Zheng Zhu

eshana
Télécharger la présentation

SOFTWARE AND PROGRAMMING 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. O SOFTWARE AND PROGRAMMING 1 Lecture: MB33 7:30-9:00 (except 11&18.01.06) Lab: B43, MB321, MB536 6:00-7:30 (from 25.01.05) [each student must have obtained access to Birkbeck computing] Lab MB536: students whose family names fall in A-F Instructor: Mr Zheng Zhu LKL, tel. 020 7763 2115 E-mail: zheng@dcs.bbk.ac.uk Lab G03 Clore Centre: students whose family names fall in G-Ka Instructor: Mrs Jenny Hu SCSIS, room NG26, tel. 020 7631 6726 E-mail: jennychhu@yahoo.com Lab 12 Gordon Sq. 43: students whose family names fall in Ke -Y Instructor: Prof.Boris Mirkin SCSIS, room 111, tel. 020 7631 6746 E-mail: mirkin@dcs.bbk.ac.uk

  2. Subjects • TicketMachine • TextIO and Scanner class to key in data • String class • Math class

  3. Test1 8/2/6 awareness Test1 will be carried out in MB33 during the lecture time (not lab time) from 7:30, 8/2/06 Subjects: • Variable: type, declaration, initialisation • Expression: arithmetic, Boolean • Loop for • Loop while • if( )… else if( ) ... else • Simple method

  4. What we want of a Ticket Machine TicketMachine code: to model a ticket machine that issues flat-fare tickets. The functionality: - accepting fare - calculating the amount to pay back - calculating the cumulative pay • issuing tickets • informing of the price and accumulated pay Instances may have different prices

  5. Coding Ticket Machine Principle: EACH function should be done with a specific variable/method Functions: - differing instances (constructor) - different pricing (var: price) - accepting fare (var: balance) • calculating the cumulative pay (var: total) • calculating the money back (diff = balance-price) • issuing tickets (method for printing a ticket) • informing of the price and accumulated pay (methods for each)

  6. Ticket Machine (1) /* * TicketMachine models a ticket machine that issues * flat-fare tickets. */ public class TicketMachine{ private int price; private int balance; private int total; public TicketMachine(int ticketCost) //constructor { price = ticketCost; balance = 0; total = 0; } public int getPrice() { return price; } public int getBalance() { return balance; } public int getTotal() { return total; }// see next page for continuation

  7. Ticket Machine (2) // TicketMachine’s continuation public void insertMoney(int amount) { if(amount > 0) balance = balance + amount; else { System.out.println("Use a positive amount: " + amount); } } public int refundBalance() { int amountToRefund; amountToRefund = balance; balance = 0; return amountToRefund; } // continued on the next page

  8. Ticket Machine (3) // TicketMachine’s end public void printTicket() { if(balance >= price) { // Simulate the printing of a ticket. System.out.println("##################"); System.out.println("# The BlueJ Line"); System.out.println("# Ticket"); System.out.println("# " + price + " pence."); System.out.println("##################"); System.out.println(); total = total + price; // Update the total balance = balance - price; // Update the balance } else { System.out.println("You must insert at least: " + (price - balance) + " more pence."); } } }//end of class

  9. Example of branching(1) Problem: calculate income tax Algorithm (Input: Income, Output: Tax): When the salary is less than 10000, there is no tax. The tax is 15% on the amount earned over 10000 up to 50000. Any money earned over 50000 are taxed at 40%, that is, they pay 6000, the tax at 50000, plus the 40% added from the earnings over 50000.

  10. Example of branching(2) If()… : int Salary; int Tax=0; TextIO.putln("Input your salary "); Salary=TextIO.getInt(); //TextIO – a class to be // put into the class’ directory if ((Salary > 10000)&&(Salary<=50000)) Tax=(Salary-10000)*15/100; if (Salary>50000) Tax=(Salary-50000)*40/100 + 6000;

  11. Example of branching(3) If()…else if()…else (preferable): int Salary; int Tax; if (Salary<=10000)              Tax=0; else if (Salary<=50000)              Tax=(Salary-10000)*15/100;    else              Tax=(Salary-50000)*40/100 + 6000; • Q: What this would produce for Salary=15777?

  12. Method for Tax calculation Method TC with input/parameter – Salary; output - Tax   public float TC(int Salary) { float Tax; if (Salary<=10000)              Tax=0; else if (Salary<=50000)              Tax=(Salary-10000)*15/100;    else              Tax=(Salary-50000)*40/100 + 6000; return Tax;} Application: int mywages=15777; float mytax=TC(mywages); // would assign 866.55 to mytax

  13. Input/Output TextIO class TextIO.java, added to the directory that contains your class, eases input of data from the keyboard To input an integer:   int UsInput = TextIO.getInt(); Computer will wait for the user to type in an integer value to UsInput.

  14. Input/Output TextIO class (2) public class PrintSquare { public static void main(String[] args) {               int uInput;               // the number to be input by the user int Squared;                  // the userInput, multiplied by itself System.out.print("Please type a number: ");     uInput = TextIO.getInt();      Squared = uInputuInput; //why product? System.out.print("The square is "+Squared); }// end of main()     } //end of class PrintSquare

  15. Input/Output TextIO class (3) Other TextIO methods: b = TextIO.getByte(); // value read is a byte i = TextIO.getShort(); // value read is a short j = TextIO.getInt(); // value read is an int k = TextIO.getLong(); // value read is a long x = TextIO.getFloat(); // value read is a float y = TextIO.getDouble(); // value read is a double a = TextIO.getBoolean(); // value read is a boolean c = TextIO.getChar(); // value read is a char w = TextIO.getWord(); // value read is a String s = TextIO.getln(); // value read is a String

  16. Input with Scanner in Java The TextIO class contains static member methods TextIO.put() and TextIO.putln(), the same as System.out.print() and System.out.println(). TextIO can only be used in a program if TextIO is available to that program. It is not built into Java. From Java 1.5.0 version on, there is a similar class in Systems.in: Scanner

  17. Input with Scanner class(1) From Java 1.5.0 version on, there is a similar class in System.in. Scanner(System.in): - import the java.util package - declare an instance of Scanner - use it for prompting the user to key in data (of a specified data type, preferably int or double or String) with a method: nextInt() or nextDouble() or next()

  18. Input with Scanner class (2) import java.util.*; class PrintDot{ int num=0; public static void main(String[ ] args){ Scanner scap = new Scanner(System.in); System.out.println(“How many dots to print? “); num=scap.nextInt(); for (ik=0; ik<num; ik++) System.out.print(‘.’); System.out.println(); } \\end of main } \\end of class

  19. Using method with Scanner import java.util.*; class PrintDot{ int number=0; public static void main(String[ ] args){ Scanner scap = new Scanner(System.in); System.out.println(“How many ampersands to print? “); number=scap.nextInt(); ppp(number); }\\end of main void ppp(nnn) { for (ik=0; ik<nnn; ik++) System.out.print(‘&’); System.out.println(); } \\end of ppp } \\end of class

  20. Strings(1) Declaring a String Object String variable •      An object of the class String –    The class String is defined in java.lang.String and is automatically imported into every program      Create a String object by using the keyword new and the String constructor method •      String aGreeting = new String(“Hello”); or String aGreeting = “Hello”;

  21. Strings(2) Comparing String Values •     Strings are never actually changed; instead new Strings are created and String variables hold the new addresses; A part of the Java system called the garbage collector will discard the unused strings •     It is impossible to make a simple comparison of Strings; thus a number of methods are: –   equals() method   if s1 and s2 are declared and initialised as String: s1.equals(s2) true if s1 and s2 are exactly the same sequences of characters NEVER s1==s2 !!! This is wrong, == applies to numbers only.

  22. Strings(3) Comparing String Values •   Try  "HaHaHa ” "haHaHa" (2 differences) s1.length() number of characters in s1 •      charAt() method requires an integer argument which indicates the position of the character that the method returns s1.charAt(N) N-th character in s1 (starting from N=0) String ss= “Look at you!”; What is ss.charAt(3)? ss.charAt(7)? ss.charAt(17)? [In respect, ‘k’, ‘ ’ , and error]

  23. Strings(4) s1.substring(N,M) part of s1 in positions N, N+1, ..., M-1 (positions are numbered from 0) String ss= “Look at you!”; What is ss.substring(3,7)? Concatenation     Concatenation - Joining strings, can be done with symbol + “45” + “36” = “4536”

  24. Class Math Math.pi  =3.14…, the ratio of the circumference to its diameter Math.abs(a) a if a >= 0, or -a if a < 0 Math.log(a) the natural logarithm (base e) of a Math.sqrt(a) square root of a Math.pow(a,b) ab , if b is integer then ab =aa…a (b times) Math.random() pseudorandom number: double within interval [0.0, 1.0) (zero included, unity not) How to use it to generate a random integer between 1 and 6 (inclusive), to mimic casting a dice? double aa=Math.random(); //aa, a real number between 0 and 1 int an= 6*aa; //a real number between 0 and 6 int rand=(int) an; // whole number between 0 and 5 int randw=rand+1;// whole number betw. 1 and 6 Casting in Java: converting from higher number types to lower types int randw= (int) (6*Math.random()+1); How to generate a random integer between 10 and 20 inclusive? Answer: int rdt= (int) (11*Math.random()+10);

  25. Math.random() pseudorandom number: double within interval [0.0, 1.0) (zero included, unity not) How to use it to generate a random integer between 1 and 6 (inclusive), to imitate casting a dice?

  26. Casting a dice double aa=Math.random(); //aa, a real number between 0 and 1 int an= 6*aa;//a real number between 0 and 6 int rand=(int) an; // whole number between 0 and 5 int randw=rand+1; // whole number between 1 and 6 The same in one line: int randw= (int) (6*Math.random()+1);

  27. Casting a dice question How to generate a random integer between 10 and 20 inclusive? Answer: int rdt= (int) (11*Math.random()+10);

More Related