Download presentation
Presentation is loading. Please wait.
Published byDana Sims Modified over 8 years ago
2
Course outline/course web page “Quiz” using your clicker Start Chap. 1 2
3
Reminder: Course Website at https://www.myconcordia.ca/ https://www.myconcordia.ca/ Any questions on course outline? ENCS login 3
4
My last name is? A. Aceman B. Acemin C. Acemain D. Acemian E. Don’t know! 4
5
My office hours are on which days? A. Mon to Wed B. Mon to Thur C. Mon – Wed – Fri D. You have office hours? University students don’t need office hours! E. Don’t know! 5
6
How many assignments are there? A. Assignments? None – We don’t need any B. 3 C. 4 D. 5 E. Don’t know 6
7
How many term tests are there? A. 1 B. 2 C. 3 D. 4 E. Don’t know! 7
8
How much of the course grade is the final exam worth? A. 60% B. 55% C. 45% D. 30% E. Don’t know! 8
9
Where can I get help/advise if I need it? A. From my teacher B. From my tutors C. help4u D. All of the above E. I’m in University now! I’m on my own 9
10
Which animal can be found in the course web page? A. Dog B. Elephant C. Cat D. Panda E. How should I know? 10
11
Keep up as material is cumulative Program the examples in the slides and ‘play’ with them Study in groups You don’t understand something get help right away from your teacher, tutor, study group member as soon as possible. 11
12
12 = the slides will be completed in class = clicker question
13
Chapter 1: A First Program
14
Humans communicate in a natural language Large vocabulary (10 000s words) Complex syntax Semantic ambiguity The chair’s leg is broken. The man saw the boy with the telescope. Machines communicate in binary code / machine language Small vocabulary (2 words… 1, 0) Simple syntax No semantic ambiguity 14
15
Programming language Ex: ??? Vocabulary: restricted Syntax: small and restricted Semantic: no ambiguity (almost) 15 Humans -- natural language Large vocabulary Complex syntax Semantic ambiguity Machines -- binary language Small vocabulary Simple syntax No semantic ambiguity Programming (COMP 248 + COMP 249) Compiler + Interpreter
16
Created by Sun Microsystems (1991) Originally designed for programming home appliances Introduced in 1995 and its popularity has grown quickly since Is an object-oriented programming (OOP) language 16
17
A compiler: is a software tool which translates source code into another language Usually (ex. C, C++) The compiler translates directly into machine language But each type of CPU uses a different machine language … so same executable file will not work on different platforms … need to re-compile the original source code on different platforms Java is different… 17
18
Java compiler: Java source code --> bytecode A machine language for a fictitious computer called the Java Virtual Machine Java interpreter: Executes the Java Virtual Machine (JVM) Java bytecode --> into machine language and executes it Translating byte-code into machine code is relatively easy compared to the initial compilation step So the Java compiler is not tied to any particular machine Once compiled to byte-code, a Java program can be used on any computer, making it very portable 18
19
19 Java source Code MyProg.java Machine Code Java Bytecode MyProg.class Java Interpreter java MyProg Java Compiler javac MyProg.java
20
Algorithm: A step-by-step process for solving a problem Expressed in natural language Pseudocode: An algorithm expressed in a more formal language Code-like, but does not necessarily follow a specific syntax Program: An algorithm expressed in a programming language Follows a specific syntax 20
21
The purpose of writing a program is to solve a problem The general steps in problem solving are: 1.Understand the problem 2.Design a solution (find an algorithm) 3.Implement the solution (write the program) 4.Test the program and fix any problems 21
22
A java program: is made up of one or more classes (collection of actions) a class contains one or more methods (action) a method contains program statements/instructions A Java program always contains a method called main 22
23
23 public class MyProgram {}{} // comments about the class class header class body MyProgram.java
24
24 public class MyProgram {}{} public static void main (String[] args) {}{} // comments about the class // comments about the method method header method body MyProgram.java
25
//******************************************************************** // Author: L. Kosseim // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Hello { //----------------------------------------------------------------- // Prints a message on the screen //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("Hello World!!!"); } 25 Java is case sensitive! You will type and run this program in tutorial 1 Hello.java extension of java programs
26
Syntax rules define how we can put together symbols, reserved words, and identifiers to make a valid program Semantics define what a statement means A program that is syntactically correct is not necessarily logically (semantically) correct. 26
27
Compile-time (syntax) errors The compiler will find syntax errors and other basic problems An executable version of the program is not created Ex: ?? Run-time errors A problem can occur during program execution Causes the program to terminate abnormally Ex: ?? 27
28
Logical (semantic) errors… aka a bug A mistake in the algorithm Compiler cannot catch them A program may run, but produce incorrect results Ex: ?? The process of eliminating bugs is called debugging (who found the first bug?) 28 Grace Hooper (1906-1992) American Computer Scientist & US Navy Admiral
29
The hardest kind of error to detect in a computer program is a: A) Syntax error B) Run-time error C) Logic error D) All of the above 29
30
30 Compilation errors Run-time & logical errors Edit and save program Compile program Execute program and evaluate results
31
Basic compiler & interpreter Sun Java Development Kit (JDK) -- download from Sundownload from Sun Compiler: javac Hello.java The result is a byte-code program called: Hello.class Interpreter: java Hello 31
32
IDE (Integrated Development Environment) Eclipse JCreator Borland JBuilder Microsoft Visual J++ … see course Web site to download them In tutorial 1, you will edit, compile and run Hello.java Hello.java 32
33
In Java, we have 2 types of programs: 1.applications "autonomous applications" or stand-alone program executed by the local OS (through the Java Virtual Machine) can use graphics and GUI or just plain console I/O must have a main method what we will see in COMP 248 ex: FirstProgram.java FirstProgram.java 33
34
2.applets "internet applications" executed by a Web browser (through the Java Virtual Machine) must be inserted into an HTML page must use a GUI ex: PocketCalc.java + Calculator.html PocketCalc.java Calculator.html 34
35
COMP 248: Object Oriented Programming I
36
1. Comments 2. Identifiers 3. Indentation 4. Primitive Types 5. Variables 6. Output 7. Assignment 8. Arithmetic Expressions 9. More Assignment Operators 10. Assignment Compatibility 11. Strings 36
37
//************************************************** // comments on the program (authors, purpose, …) //************************************************** public class SomeIdentifier { //----------------------------------------------- // comments on the main method //----------------------------------------------- public static void main (String[] args) { // declarations of variables and constants // statements of the main method } 37 SomeIdentifier.java
38
also called inline documentation used to explain the purpose of the program and describe processing steps (the algorithm) do not affect how a program works (are ignored by the compiler) can take 3 forms: 38 // this comment runs to the end of the line /* this comment runs to the terminating symbol, even across line breaks */ /** this is a javadoc comment */
39
are the words a programmer uses in a program to name variables, classes, methods, … Rules to create an identifier: can be made up of: letters, digits, the underscore character (_), and the dollar sign ($) cannot begin with a digit cannot be a reserved word no limit on length 39
40
Which of the following is not a valid identifier? A) abc B) ABC C) Abc D) aBc E) a bc 40
41
Which of the following is not a valid identifier? A) a_bc B) A$BC C) _Abc D) 1AbC E) $abc 41
42
Guidelines: give a significant name! avoid '$‘ by convention: class names --> use title case ex: MyClass, Lincoln constants --> use upper case ex: MAXIMUM variables, methods, … --> start with lowercase ex: aVar, a_var 42
43
Avoid Predefined identifiers: Although they can be redefined, it is confusing and dangerous System String println Remember: Java is case sensitive 43
44
44 abstract assert boolean break byte case catch char class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while
45
45 IdentifierCorrect or not? GST PriceBeforeTax Student_3 student#3 Shipping&HandlingFee Class __123 the account 1floor
46
Spaces, blank lines, and tabs are called white space White space is used to separate words and symbols in a program Extra white space is ignored Programs should be formatted to enhance readability, using consistent indentation 46
47
//****************************************************** // Lincoln2.java // Demonstrates a poorly formatted, though valid, // Program. //****************************************************** public class Lincoln2{public static void main(String[]args){ System.out.println("A quote by Abraham Lincoln:"); System.out.println("Whatever you are, be a good one.");}} 47
48
//******************************************************************** // Lincoln3.java // Demonstrates another valid program that is poorly formatted. //******************************************************************** public class Lincoln3 { public static void main ( String [] args ) { System.out.println ( "A quote by Abraham Lincoln:" ) ; System.out.println ( "Whatever you are, be a good one." ) ; } 48
49
//***************************************************** // Lincoln3.java // Demonstrates a properly formatted program. //***************************************************** public class Lincoln3 { public static void main(String[]args) { System.out.println("A quote by Abraham Lincoln:"); System.out.println("Whatever you are, be a good one."); } 49
50
8 primitive data types in Java Numeric 4 types to represent integers (ex. 3, -5): byte, short, int, long 2 types to represent floating point numbers (ex. 3.5): float, double Characters (ex. 'a' ) char Boolean values (true/false) boolean 50
51
The difference between: byte, short, int, long AND float, double is their size (so the values they can store) 51
52
The difference between: byte, short, int, long AND float, double is their size (so the values they can store) 52
53
Floating point numbers are only approximate quantities Mathematically, the floating-point number 1.0/3.0 is equal to 0.3333333... A computer may store 1.0/3.0 as something like 0.3333333333 53
54
A char stores a single character delimited by single quotes: 'a' 'X' '7' '$' ',' '\n' characters are ordered according to a character set each character corresponds to a unique number code Java uses the Unicode character set 16 bits per character, so 65,536 possible characters Unicode is an international character set, containing symbols and characters from languages with different alphabets 54
55
The ASCII character set is older and smaller than Unicode, but is still popular The ASCII characters are a subset of the Unicode character set, including: 55 uppercase letters lowercase letters punctuation digits special symbols control characters ’A’, ’B’, ’C’, … ’a’, ’b’, ’c’, … ’. ’, ’; ’, … ’0’, ’1’, ’2’, … ’&’, ’|’, ’\’, … ’\n’, ’\t’, …
56
A boolean value represents a true or false expression The reserved words true and false are the only valid values for a boolean type NOT… 0 and 1 56
57
a name for a location in memory used to store information (ex. price, size, …) must be declared before it is used indicate the variable's name indicate the type of information it will contain declaration can be anywhere in the program (but before its first access) 57 int total; int count, temp, result; Multiple variables can be created in one declaration data type variable name
58
A variable that has been declared but has not yet been given a value is said to be uninitialized In certain cases an uninitialized variable is given a default value It is best not to rely on this Explicitly initialized variables have the added benefit of improving program clarity 58
59
A variable can be given an initial value in the declaration 59 When a variable is used in a program, its current value is used int sum = 0; int base = 32, max = 149;
60
//************************************************************ // PianoKeys.java // // Demonstrates the declaration and initialization of an // integer variable. //*********************************************************** public class PianoKeys { // Prints the number of keys on a piano. public static void main (String[] args) { int keys = 88; System.out.println("A piano has" + keys + "keys."); } 60 ??? Output filename??
61
similar to a variable but can only hold one value while the program is active the compiler will issue an error if you try to change the value of a constant during execution use the final modifier Constants: give names to otherwise unclear literal values facilitate updates of values used throughout a program prevent inadvertent attempts to change a value 61 final int MIN_AGE = 18;
62
Examples: 62 System.out.print Displays what is in parenthesis System.out.println Displays what is in parenthesis Advances to the next line System.out.print("hello"); System.out.print("you"); System.out.println("hello"); System.out.println("you"); System.out.println(); int price = 50; System.out.print(price); char initial = 'L'; System.out.println(initial); Output
63
63 System.out.println("hello" + "you"); double price = 9.99; int nbItems = 5; System.out.println("total = " + price*nbItems + "$"); int x = 1, y = 2; System.out.println("x+y="+x+y); System.out.println("x+y="+(x+y)); in print and println, + is the concatenation… you need parenthesis for the + to be addition ??? Output
64
64 cannot cut a string over several lines System.out.println("this is a long string"); // error! System.out.println("this is a" + "long string"); // ok
65
to print a double quote character Use an escape sequence sequence is a series of characters that represents a special character begins with a backslash character ( \ ) considered as 1 single character 65 System.out.println ("I said "Hi" to her."); System.out.println ("I said \"Hi\" to her."); ??? Output ??? Output
66
Some Java escape sequences: 66 Escape Sequence \b \t \n \" \' \\ Meaning backspace tab newline double quote single quote backslash
67
What will the following statement output? A)one two three B) one\ntwo\nthree\n C) "one\ntwo\nthree\n" D) one two three E)onetwothree 67 System.out.print("one\ntwo\nthree\n");
68
What statement will result in the following output? System.out.print A) ( " Read the file " c:\windows\readme.txt "); B) ( " Read the file " c:\windows\readme.txt ""); C) ( " Read the file " c:\\windows\\readme.txt "); D) ( " Read the file \ " c:\\windows\\readme.txt\ ""); E) ( " Read the file \ " c:\windows\readme.txt\ ""); 68 Read the file " c:\windows\readme.txt "
69
Used to change the value of a variable The assignment operator is the = sign 69 total = 55; Syntax: Variable = Expression; Semantics: 1. the expression on the right is evaluated 2. the result is stored in the variable on the left (overwrite any previous value) 3. The entire assignment expression is worth the value of the RHS
70
public class Geometry { // Prints the number of sides of several geometric shapes. public static void main (String[] args) { int sides = 7; // declaration with initialization System.out.println("A heptagon has " + sides + " sides."); sides = 10; // assignment statement System.out.println("A decagon has " + sides + " sides."); sides = 10+2; System.out.println("A dodecagon has " + sides + " sides."); } 70 ??? Output filename???
71
In Java, = is an operator In math, = is an equality relation 71 In math… a+6 = 10 ok In Java… a+6 = 10; In math… a = a+1 always false In Java… a = a+1; In math… a = b and b = a same thing! In Java… a = b; and b = a;
72
Declarations: Statements : 72 int x; int y = 10; char c1 = ’a’; char c2 = ’b’; x = 20+5; y = x; c1 = ’x’; c2 = c1;
73
Write a series of declarations & statements to swap the value of 2 variables… int x = 10; int y = 20; A) x = y; y = x; B) y = x; x = y; C) Both A) & B) will work D) Neither A) nor B) will work 73
74
An expression is a combination of one or more operands and their operators Arithmetic operators: 74 Addition+ Subtraction- Multiplication* Division/ Remainder%
75
the division operator ( / ) can be: Integer division if both operands are integers Real division otherwise 75 10 / 8 equals? 8 / 12 equals? 1 0 10.0 / 8 equals? 8 / 12.0 equals? 1.25 0.6667
76
76 the remainder operator (%) returns the remainder after the integer division 10 % 8 equals? 8 % 12 equals? 2 (10÷8 = 1 remainder 2) 8
77
Operators can be combined into complex expressions precedence determines the order of evaluation 1 st : expressions in parenthesis 2 nd : unary + and - 3 rd : multiplication, division, and remainder 4 th : addition, subtraction, and string concatenation 5 th : assignment operator 77 result = total + count / max - offset;
78
Unary operators of equal precedence are grouped right-to- left +-+rate is evaluated as +(-(+rate)) Binary operators of equal precedence are grouped left-to- right base + rate + hours is evaluated as (base + rate) + hours Exception: A string of assignment operators is grouped right-to-left n1 = n2 = n3; is evaluated as n1 = n2 = n3; 78
79
What is the order of evaluation in the following expressions? 79 a + b + c + d + e a + b * c - d / e a / (b + c) - d % ea / (b * (c + (d - e)))
80
The assignment operator has a lower precedence than the arithmetic operators 80 First the expression on the RHS is evaluated Then the result is stored in the variable on the LHS answer = sum / 4 + MAX * lowest; 1432
81
What is stored in the integer variable num1 after this statement? num1 = 2 + 3 * 5 - 5 * 2 / 5 + 10 ; A) 0 B) 18 C) 25 D) 10 81
82
Purpose: Conversion of degrees Fahrenheit in degrees Celsius Algorithm: 1. Assign the temperature in Fahrenheit (ex. 100 degrees) 2. Calculate the temperature un Celsius (1 Celsius = 5/9 (Fahr – 32) 3. Display temperature in Celsius Variables and constants: 82 DataIdentifierTypevar or const? Temperature in Fahrenheit fahrdouble
83
//********************************************************** // Temperature.java Author: your name // A program to convert degrees Fahrenheit in degrees Celsius. //********************************************************** public class Temperature { public static void main (String[] args) { // Declaration of variables and constants float temperature; Scanner sc = new Scanner(System.in); // step 1: Assign the temperature in Fahrenheit (100) System.out.println("Enter temperatue in Fahrenheit = "); temperature = sc.nextInt(); // OR temperature = 100; // step2: Calculate the temperature un Celsius temperature = ((temperature - 32)*5)/9; // step3: Display temperature in Celsius System.out.println("Temperatue in Celsius = " + temperature); } 83 filename???
84
in addition to = often we perform an operation on a variable, and then store the result back into that variable Java has shortcut assignment operators: variable = variable operator expression; variable operator= expression; 84 Operator += -= *= /= %= Example x += y x -= y x *= y x /= y x %= y Equivalent To x = x + y x = x - y x = x * y x = x / y x = x % y
85
Example:Equivalent To: count += 2;count = count + 2; sum -= discount;sum = sum – discount; bonus *= 2;bonus = bonus * 2; time /= rushFactor;time = time / rushFactor; change %= 100;change = change % 100; amount *= count1 + count2;amount = amount * (count1 + count2); 85
86
The behavior of some assignment operators depends on the types of the operands ex: the += If the operands are strings, += performs string concatenation The behavior of += is consistent with the behavior of the "regular" + 86
87
int amount = 10; amount += 5; System.out.println(amount); double temp = 10; temp *= 10; System.out.println(temp); String word = "hello"; word += "bye"; System.out.println(word); word *= "bye"; // ??? 87 Output
88
In Java, we often add-one or subtract-one to a variable… 2 shortcut operators: The increment operator ( ++ ) adds one to its operand The decrement operator ( -- ) subtracts one from its operand The statement: count++; is functionally equivalent to: count = count+1; The statement: count--; is functionally equivalent to: count = count-1; 88
89
The increment and decrement operators can be in: 1. in prefix form - ex: ++count; 1. the variable is incremented/decremented by 1 2. the value of the entire expression is the new value of the variable (after the incrementation/decrementation) 2. in postfix form: - ex: count++; 1. the variable is incremented/decremented by 1 2. the value of the entire expression is the old value of the variable (before the incrementation/decrementation) 89
90
90 int nb = 50; ++nb; int nb = 50; int x; x = ++nb; int nb = 50; nb++; int nb = 50; int x; x = nb++; int nb = 50; int x; x = nb++ + 10; value of nb value of nb & x
91
What is stored in the integer variables num1, num2 and num3 after the following statements? int num1 = 1, num2 = 0; int num3 = 2 * num1++ + - -num2 * 5; A)num1 = 1, num2 = 0, num3 = 2 B) num1 = 1, num2 = 0, num3 = -1 C) num1 = 2, num2 = -1, num3 = 2 D) num1 = 2, num2 = -1, num3 = -3 E) num1 = 2, num2 = -1, num3 = -1 91
92
What is stored in the integer q after the following statements? int x = 1, y = 10, z = 3; int q = ++x * y- - + z++; A)13 B) 20 C) 23 D) No idea??? 92
93
What is stored in the integers a and c after the following statements? int a = 1; int c = a++ + a- - ; A)a = 1, c = 2 B) a = 1, c = 3 C) a = 3, c = 3 D) No idea??? 93
94
What is stored in the integer c after the following statements? int a = 1, b = 2; int c = a++ + a + 2*(- - b) + 3/b- - ; A)7 B) 8 C) 8.5 D) No idea??? 94
95
95 Expression count++ ++count count-- --count Operation add 1 subtract 1 Value Used in Expression old value new value old value new value
96
In general, the value of one type cannot be stored in a variable of another type int intVariable = 2.99; //Illegal However, there are exceptions to this double doubleVariable = 2; For example, an int value can be stored in a double type 96
97
an expression has a value and a type the type of the expression depends on the type of its operands In Java, type conversions can occur in 3 ways: arithmetic promotion assignment conversion casting 97 2 / 4 (value = 0, type = int) 2 / 4.0 (value = 0.5, type = double)
98
happens automatically, if the operands of an expression are of different types operands are promoted so that they have the same type promotion rules: if 1 operand is of type… the others are promoted to…double floatfloat (double)long short, byte and char are always converted to int 98 aLong + anInt * aDouble
99
value and type of these expressions? 99 2 / 4 int / int 2/4 int 0 (aByte + anotherByte) --> int (aLong + anInt * aDouble) --> ?? (aFloat - aBoolean) --> ??
100
What is the value and type of this expression? 2 / 4 * 1.0 A) 0 (int) B) 0.0 (double) C) 0.5 (int) D) 0.5 (double) 100
101
What is the value and type of this expression? 1.0 * 2 / 4 A) 0 (int) B) 0.0 (double) C) 0.5 (int) D) 0.5 (double) 101
102
102 occurs when an expression of one type is assigned to a variable of another type widening conversion if the variable has a wider type than the expression then, the expression is widened automatically integral & floating point types are compatible boolean are not compatible with any type long aVar; aVar = 5+5; byte aByte; int anInt; anInt = aByte; double aDouble; int anInt = 10; aDouble = anInt; var = expression;
103
103 int aVar; aVar = 3.7; ok? int aVar; aVar = 10/4; ok? int aVar; aVar = 10.0/4; ok? narrowing conversion if the variable has a smaller type than the expression then, compilation error, because possible loss of information
104
104 the programmer can explicitly force a type conversion syntax: (desired_type) expression_to_convert Casting can be dangerous! you better know what you're doing… double d; d = 2/4; // d is 0 d = (double)2/4; // d is 0.5 // 2.0 / 4 d = (double)(2/4); // d is 0.0 int aVar; aVar = (int)3.7; (aVar is 3… not 4!) byte aByte; int anInt = 75; aByte = anInt; // ok? aByte = (byte)anInt; // ok?
105
Which of the following assignment statements are valid? byte b1 = 1, b2 = 127, b3; b3 = b1 + b2; // statement a) b3 = 1 + b2 // statement b) b3 = (byte)1 + b2 // statement c) A) Statements a), b) and c) are valid B) Only statements a) and b) are valid C) Only statements b) and c) are valid D) Only statements a) and c) are valid E) None of the Java statements are valid 105
106
so far we have seen only primitive types a variable can be either: a primitive type ex: int, float, boolean, … or a reference to an object ex: String, Array, … A character string: is an object defined by the String class delimited by double quotation marks ex: "hello", "a" System.out.print("hello"); // string of characters System.out.print('a'); // single character 106
107
1. declare a reference to a String object 2. declare the object itself (the String itself) 107 String title; title = new String("content of the string"); This calls the String constructor, which is a special method that sets up the object
108
Because strings are so common, we don't have to use the new operator to create a String object These special syntax works only for strings 108 String title; title = new String("content of the string"); String title; title = "content of the string"; String title = new String("content of the string"); String title = "content of the string";
109
once a string is created, its value cannot be modified (the object is immutable) cannot lengthen/shorten it cannot modify its content the String class offers: the + operator (string concatenation) ex: String solution = "The answer is " + "yes"; many methods to manipulate strings, a string variable calls … length() // returns the nb of characters in a string concat(str) // returns the concatenation of the string and str toUpperCase() // returns the string all in uppercase replace(oldChar, newChar) // returns a new string // where all occurrences of character oldChar have been replaced by character newChar … see p. 38 … 109
110
110
111
public class StringTest { public static void main (String[] args) { String string1 = new String ("This is a string"); String string2 = ""; String string3, string4, string5; System.out.println("Content of string1: \"" + string1 + "\""); System.out.println("Length of string1: " + string1.length()); System.out.println("Content of string2: \"" + string2 + "\""); System.out.println("Length of string2: " + string2.length()); 111 Content of string1:"This is a string" Length of string1: 16 Content of string2: "" Length of string2: 0 Output
112
// String string1 = new String ("This is a string"); // String string2 = ""; string2 = string1.concat(" hello"); string3 = string2.toUpperCase(); string4 = string3.replace('E', 'X'); string5 = string4.substring(3, 10); System.out.println(string2); System.out.println(string3); System.out.println(string4); System.out.println(string5); } } 112 This is a string hello THIS IS A STRING HELLO THIS IS A STRING HXLLO S IS A Output
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.