480 likes | 633 Views
SOFTWARE AND PROGRAMMING 1. Lecture: GOR B04 7:30-9:00 (10&17.01.07 – from 6:00) Lab: SH 131, BBK536 6:00-7:30 (from 24.01.07) EACH student must have obtained access to Birkbeck computing by 24.01.07 – otherwise no use in the lab Instructor: Prof. Boris Mirkin
E N D
SOFTWARE AND PROGRAMMING 1 Lecture: GOR B04 7:30-9:00 (10&17.01.07 – from 6:00) Lab: SH 131, BBK536 6:00-7:30 (from 24.01.07) EACH student must have obtained access to Birkbeck computing by 24.01.07 – otherwise no use in the lab Instructor: Prof. Boris Mirkin SCSIS, room 111, tel. 020 7631 6746 E-mail: mirkin@dcs.bbk.ac.uk Course Assistant: Lab/WebCT/Tests/Assignments: Marie-Helene Ng SCSIS, room NG26, tel. 0207 631 6550 E-mail: marie-helene@dcs.bbk.ac.uk
Webpage The course web page is currently at my open web-site, with lecture notes and other relevant materials: www.dcs.bbk.ac.uk/~mirkin/sp105
Texts • Quentin Charatan & Aaron Kans [CK] • JAVA in Two Semesters, 2nd Edition, McGraw-Hill, 2006, ISBN-10 0077108892 • David J. Barnes & Michael Kölling [BK]Objects First with Java: A Practical Introduction using BlueJ, 2nd edition, Pearson Education, 2005, ISBN 0-13-124933-9 • The publisher supplies a helpline in installing related software • 3. I. Pohl, C. McDowell [PM] • Java by dissection, Addison-Wesley, 2000, ISBN 0201751585 • 4.J. Farrell [F] • Java Programming, 2nd edition, Course Technology, Thompson, 2003, ISBN 0-619-21500-3 • 5. Free: ON-LINE text by D. Eck (on my web site); other URLs
Teaching Goal: Coding in Real FRAMEWORK: • the work of a compiler and an interpreter; • classes and instances; • variables and static variables; • data and number types in Java; • arithmetic and Boolean expressions; • for/while and if…elseif…else structures; • processing strings; • elements of input/output in Java; • methods and constructors; • arrays and their usage.
Teaching Goal PRACTICE: To have developed skills in practical programming of small but real-world problems e.g. keeping transaction records, assigning seats to customers, managing a bus schedule, etc.
Control • Final exam: 75% of mark • Course-work: 25% of mark • 2 open-book in-class tests, 8.02 & 8.03, • 2 assignments for home work via WebCT Composition of CW 25% mark: T1 5% T2 7% A1 5% A2 8%
Control: Example • Let marks of a student be as follows: • Exam: 50 • T1 12 • T2 65 • A1 100 • A2 0 (hasn’t submitted) • The total mark will be 48 because it rounds up the result: 50*0.75 + 12*0.05 + 65*0.07 + 100*0.05 + 0*0.08= =37.5 + 0.6 + 4.55 + 5 + 0 = 47.65
Teaching Philosophy (extracts) • Huge respect for part-time students • The bulk of students to get taught • No student’s question is stupid • Simple things to be learnt well: rather than complex things not learnt well • Instructor’s small errors - a teaching device for activation of learning process • Learning a language in a college differs from consuming a lunch in a diner in many ways (e.g., cognitive systems are individual) • Fast feedback on students’ issues if raised
Why Java • Object-oriented (a program is a set of classes sending messages to each other with methods within to process inputs), which is useful for code transfer and maintenance • Network-oriented (server-to-clients) • Works within Internet browsers [devices viewing HTML (hyper-text markup-language) documents via HTTP (hyper-text transfer protocol) links]
Fundamental concepts • How a Java program works • Java as is and Java with BlueJ • Object • Class • Method • Parameter • Variable • Data type
High-language code to machine code translated A compiler takes a high-level-language program and translates it as a whole into an executable machine-language program. Once the translation is done, the machine-language program can be run any number of times, but of course it can only be run on one type of computer. Thus, each type of computer requires a specific translator. An interpreter is a program that runs in a loop in which it repeatedly reads one instruction from the program, decides what is necessary to carry out of that instruction, and then performs the appropriate machine-language commands to do so. This is slow but universal.
Java edit-compile-interpret-execute cycle 011010 110101 1001 10 source file class file 011010 110101 010001 1 1 1 0111 0110110 compiler (javac) virtual machine(java interpreter) editor
Java Developer Kit JDK (currently, J2SE) (Conventional) Blue J (A public project to make JAVA coding easier) Both available in Birkbeck Two JAVA environments
A source code can be edited in any text editor: Notepad, emacs, PFE, ... MS Wordcaveat: by default, Word does not save in ASCII text format Make sure to save the code before compiling! The file name: the same as that of the class, with extension: say, class NicTe{…} must be saved as file NicTe.java, case sensitive Conventional JDK: Editing
compilation and execution of Java in JDK are done from a command line On Microsoft systems: DOS shell On Unix: Unix shell Must make sure that the commands for compiler and runtime (JVM) are in the command path. Command line invocation
Name of the JDK compiler: javac To invoke:javac <source name> compiles <source name> and all classes it depends on into an executable on JVM file <source name>.class Example: javac NicTe.java produces file NicTe.class Compiling with JDK
“java” starts the Java virtual machine: java NicTe The named class is loaded and execution is started. Other classes are loaded as needed. Only possible if class has been compiled into a file, say, NicTe.class Execution
How does the system know which of the methods to execute? JDK Problem: Execute what?
The JDK java system always executes a method called main, it should have a certain signature: Signature _______________________public static void main(String[ ] args){ ...} To work with JDK, such a method must be present in your program! The main method in JDK
A simple program /* HelloWorld.java Purpose: printing a message to the screen */ class HelloWorld { // Each program is organised as a class public static void main(String[] args) { System.out.println("Hello World!"); } } // end of class HelloWorld /* Always Three Types of Element s ONLY: -comments -class (with modifiers) -methods (with modifiers & parameters/arguments) */
BlueJ coding • BlueJ programs are organised in the so-called projects • A BlueJ project is stored in a project-specific directory on disk • Some files store the source code, some store the compiled code, some store additional BlueJ related information.
The BlueJ directory structure c:\bluej\calculator\ project: calculator bluej.pkg bluej.pkh Calculator.java Calculator.class Calculator.ctxt UserInterface.java UserInterface.class UserInterface.ctxt CalcEngine.java CalcEngine.class CalcEngine.ctxt Calculator UserInterface CalcEngine
The BlueJ file structure • bluej.pkg - the package file. Contains information about classes in the package. One per package. • bluej.pkh - backup of the package file. • *.java - standard Java source file (text). One per class. • *.class - standard Java code file. One per class • *.ctxt - BlueJ context file. Contains extra information for a class. One per class.
Software is free • Available on BBK’s network • Java JDK (which allows you to compile and execute your program) • BlueJ (Preferred editor) • Installing BlueJ (for home use) • First download the Java JDK from http://java.sun.com/j2se/1.5.0/download.jsp • Then download BlueJ from http://www.bluej.org/download/download.html • Run “bluejsetup-202.exe” and follow the given instructions
Objects and classes • Classes: program templates • represent all objects of a kind (example: “student”) • Objects = instances • A template copy to represent a specific element of the class (“an individual student”) • Instances are created with the so-called constructors, explicitly in JDK or somewhat easier in BlueJ
Variables, methods and parameters • classescontain data stored in the so-called variables and operations which can be invoked (they are called methodsin Java) • methods may have inputs (they are called parameters in Java) to get additional data needed to get them executed
Remarks • Many instances can be created from a single class • An object has attributes/variables: values stored in fields (memory locations). • The class defines what fields any its object has (a template), but each object may store its own set of values (the state of the object) • A variable is initialised with assigning it a value, an object – with a constructor
More on Method Method in Java is a named set of instructions that transforms some input into an output. This is, actually, a machine implementation of the concept of algorithm which itself is a computational analogue to the mathematical concept of function. Static method: is shared by all instances.
Example of a method (1) Square function y = x2 x y 1 1 2 4 5 25 11 121 The table can be used for invoking a specific value, like, 72 = 49 or 102 = 100.
Example of a method (2) A Java method to calculate the square function: public int sq(int x){ return xx;} To make it work, variables are needed: int sevs=sq(7); //puts 49 into sevs int tens=sq(10);// puts 100 into tens
Structure of a method Output’s type Inputs modifiers return-type name ( parameter-list ) { statements; return variable/expression; //if return type is not void } Modifiers: • static - method/variable that belongs to class as whole and is shared by all • public - method/variable that is accessible from anywhere • private - method/variable that is accessible from only within the class
HelloWorld with a method // Hello-world program to demonstrate BlueJ class Hello{ // Method that does the work of printing public void go() { System.out.println("Hello, world"); } // main method for working outside BlueJ public static void main(String[] args) { Hello hi = new Hello(); //instance hi.go(); //method in instance hi } }
Fields • Fields store values for an object. • They are also known as instance variables. • Use the Inspect option to view an object’s fields. • Fields define the state of an object. public class TicketMachine { private int price; private int balance; private int total; Constructor and methods omitted. } visibility modifier type variable name private int price;
Assigning values • Values are stored into fields (and other variables) via assignment statements: • variable = expression; • price = ticketCost; • The value on the right is assigned to a variable on the left. • A variable stores a single value, so any previous value is lost.
Variable • It provides for multiple uses of the same program • A variable is a name for a location in memory that can hold data. • Variables are declared and/or initialisedA variable declaration includes the following: • A data type that identifies the type of data that is stored in the variable • An identifier that is the variable’s name • An optional assigned initial value
In memory: int p; p = 4; p 4
Scope of a variable: The range of statements that can access the variable. It stretches from the declaration point to the end of the block containing the declaration Q: WHAT is BLOCK ? (part within curly braces{…} ) Q: WHAT is DECLARATION? (type name ; 3-part command)
HelloWorld N times BlueJ public class HelloN { int number; \\ variable declared public void go() { System.out.println("Hello, world"); } public HelloN(int howmany) {number=howmany; } \\constr to initialise object public void prrt() \\printing number times { for(int i=1;i<=number;i++) \\loop go(); System.out.println("ok"); } }
Loop for for(int var=1;var<=st;var++){do operation depending on var} • Two types of parentheses: () and {} • The expression in () consists of three different items: initialising a variable,variable update, and stop-condition • Given a value of var, {} is executed, after which varis updated, then stop-condition checked and, if yes, {} is executed again; if no, the program proceeds further on
No { } in for-loop in HelloN Why? Let us add { }: where? Is there any difference between before and after “ok”?
Arithmetic Operators • * 53=15 • / 36/9=4, 39/9=4, 39/50=0 (integers) • / 36.0/9=4.0, 39.0/9=4.33333333, 39.0/50=0.78 (reals) • % 36%9=0, 39%9=3, 39%50=39 • + 5 + 3 = 8 • - 5 – 3 = 2 • Other operators such as Abs or exp are in class Math of Java (to be later)
Arithmetic Expressions • 2 * 6 / 4 + 5 – 2 * 3 = 3 + 5 – 6 = 2 • 2 * 6.0 / (4 + 5) – 2 * 3 = 12.0/9 – 6 = – 4.67 (note: reals, not integers) • 2 * 6 / 4 + (5 – 2) * 3 = 12 There is a natural precedence structure of arithmetic operations. If you are not sure, use parentheses!!!
Basic class structure The outer wrapper of TicketMachine public class TicketMachine { Inner part of the class omitted. } public class ClassName { Variables Constructors Methods } The contents of a class
Concepts considered • Compiler & interpreter • JDK/JDS and BlueJ environments • Method • Variable; declaration and intialisation • Primitive variable types • Class type • Arithmetic operators and expressions • Class and instance • HelloWorld class in three versions