1 CSC 201: Computer Programming I B. S. Afolabi
Introduction 3 unit course 2 hours of lecture/week Thursdays 4.00pm – 6.00pm Mondays 4.00pm – 6.00pm 3 hours of practical/week To be determined next week Course Lecturers: 2 Dr. A. O. Ajayi Dr. F. O. Asaiah Mrs. H. O. Odukoya Dr. B. S. Afolabi (Coordinator) Dr. P. A. Idowu Dr. A. R. Iyanda Mr. I. P. Gambo Mr. Okegbile Miss Lawal
Textbooks No textbook is required For programming beginners: Java Software Solutions: Foundations of Program Design, John Lewis and William Loftus, Publisher: Addison Wesley, 2002 For experienced programmers: — Learning the Java TM Language at / / — Thinking in Java, Bruce Eckel, Prentice Hall
Software is required Download Java onto your home machine /index.html /index.html Follow the instructions to install it Then, follow the instructions to install Eclipse
Functional versus imperative languages Functional languages are ideal for expressing the functional (the problem to be solved) component of any problem however... at least 50% of all programs deal with input/output rather than a problem and functional languages aren’t very good at input/output. Think of the programs you use now: editor mail language translator() web browser Functional programming should have taught you to appreciate concise elegant programs.
The Computer Central Processing Unit (CPU) Memory Input / Output Devices
CPU Instructions z = x + y Read location x Read location y AddWrite to location z
Programming Languages Easier to understand than CPU instructions Needs to be translated for the CPU to understand it
JAVA “Most popular” language Runs on a “virtual machine” (JVM) More complex than some (eg. Python) Simpler than others (eg. C++)
Compiling Java Source Code (.javac ) javac Byte Code (.class) java
First Program class Hello { public static void main(String[] arguments){ //Program execution begins here System.out.println("Hello world."); }
Program Structure class CLASSNAME public static void main(String[] arguments){ STATEMENTS }
Output System.out.println(some String) outputs to the console Example: System.out.println(“output”);
Second Program class Hello2 { public static void main(String[] arguments){ //Program execution begins here System.out.println("Hello world."); //Print once System.out.println(“Line number 2."); // Again }
Types Kinds of values that can be stored and manipulated. boolean: Truth value (true or false). int: Integer (0, 1, -47). double: Real number (3.14, 1.0, -2.1). String: Text (“hello”, “example”).
Variables Named location that stores a value of one particular type. Form: TYPE NAME; Example: String foo;
Assignment Use “=“ to give variables a value. Example: String foo; foo = “IAP 6.092”;
Assignment Can be combined with a variable declaration. Example: double badPi = 3.14; boolean isJanuary = true;
class Hello3 { public static void main(String[] arguments){String foo = "IAP 6.092"; System.out.println(foo);foo = "Something else"; System.out.println(foo); }
Operators Symbols that perform simple computations Assignment: = Addition: + Subtraction: - Multiplication: * Division: /
Order of Operations Follows standard math rules: Parentheses Multiplication and division Addition and subtraction
class DoMath { public static void main(String[] Arguments){ double score = * 3.0; System.out.println(score); score = score / 2.0; System.out.println(score); }
class DoMath { public static void main(String[] Arguments){ double score = * 3.0; System.out.println(score); double copy = score; copy =copy/ 2.0; System.out.println(copy); System.out.println(score); }
String Concatenation (+) String text = "hello" + " world"; text = text + " number " + 5; // text = "hello world number 5"
Examples 1 class Comment { // This is a one-line comment; it extends to the end of the line /* This is a delimited comment, extending over several lines */ int /* A delimited comment, extending over part of a line */ x = 117; } 25
Examples 2 class Layout { // Class declaration int a; Layout(int a) { this.a = a; } // One-line constructor body int sum(int b) { // Multi-line method body if (a > 0) // If statement return a + b; // Single statement else if (a < 0) { // Nested if-else, block statement int res = -a + b; return res * 117; } else { // a == 0 // Terminal else, block statement int sum = 0; for (int i=0; i<10; i++) // For loop sum += (b - i) * (b - i); return sum; } 26
…Examples 2 static boolean checkdate(int mth, int day) { int length; switch (mth) { // Switch statement case 2: // Single case length = 28; break; case 4: case 6: case 9: case 11: // Multiple case length = 30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: length = 31; break; default: return false; } return (day >= 1) && (day <= length); } 27
Example 4 class Scope {... // void m1(int x) { // declaration of parameter x (#1)... // x #1 in scope } //... // void m2(int v2) { //... // x #5 in scope } //... // void m3(int v3) { //... // x #5 in scope int x; // declaration of variable x (#2)... // x #2 in scope } //... // 28
…Example 4 void m4(int v4) { //... // x #5 in scope { // int x; // declaration of variable x (#3)... // x #3 in scope } //... // x #5 in scope { // int x; // declaration of variable x (#4)... // x #4 in scope } //... // x #5 in scope } //... // int x; // declaration of field x (#5)... // x #5 in scope } 29
30