lecture 2
-
Upload
geomanjeri -
Category
Documents
-
view
11 -
download
3
description
Transcript of lecture 2
-
Lecture 2
Elementary Programming Primitive data types Identifiers and variables Assignment statements Arithmetic expressions
This image is from the Wikimedia Commons.
-
Example Problem Statement
Compute the final grade as a weighted sum of the scores obtained in exam, lab and homework
Problem Analysis Input:
Scores for Examination, lab and homework Output:
Final grade Additional information:
Pre-determined weights for examination, lab and homework
-
Example: Initial Algorithm
1. Determine the weights for each assessed components. 2. Obtain the input for exam, lab and homework scores. 3. Compute the final score:
3.1 Compute the weighted exam score 3.2 Compute the weighted lab score 3.3 Compute the weighted homework score 3.4 Compute the sum of the above weighted scores
4. Output the final score.
-
/** * CourseGrade determines the final grade which is computed as * the weighted sum of the grades obtained in exam, lab and homework */ public class CourseGrade { public static void main(String[] args) { int examWeight = 70; // Percentage weight given to examination int labWeight = 20; // Percentage weight given to lab work int hwWeight = 10; // Percentage weight given to homework assignment double examScore; // Examination score obtained by student double labScore; // Lab score obtained by student double hwScore; // Homework score obtained by student double finalGrade; // Final grade obtained by student
-
// Ask student to input scores for exam, lab and nomework IO.output("Enter your exam grade: "); examScore = IO.inputDouble( ); IO.output("Enter your lab grade: "); labScore = IO.inputDouble( ); IO.output("Enter your homework grade: "); hwScore = IO.inputDouble( ); // Computer final grade as the weighted sum of exam, lab and homework scores examScore = examScore * (examWeight / 100.0); labScore = labScore * (labWeight / 100.0); hwScore = hwScore * (hwWeight / 100.0); finalGrade = examScore + labScore + hwScore; // Output the final grade IO.outputln("Your final grade is " + finalGrade); } }
-
Identifiers An identifier is a sequence of characters
consisted of Letters (a-z, A-Z) Underscores ( _ ) Dollar signs ( $ ) Digits (0-9, the first character cannot be a digit)
Identifiers are case-sensitive. For example: Hello, hello, WHOAMI, WhoAmI, whoami are different identifiers.
An identifier can be of any length, but cannot be one of the reserved words
(What is a reserved word?)
// valid identifiers int examWeight = 10; double examScore; double exam_Score; int perfect_score_100; // Invalid identifiers int perfect score 100; //WRONG int today2-7-2014; //WRONG int 2014y; // WRONG! int int; // WRONG!
-
Reserved Words
Example in our daily lives Some vehicle registration plates are
reserved for special purpose
Internet domain names, e.g. .gov, .edu
Similarly, in Java, there are some reserved words Examples of
reserved words in our daily lives
-
Reserved words
This list is incomplete, but covers most of the reserved words in this course
-
Naming Conventions
Meaningful names should be used Avoid using x, y, z, var1, var2. Uses meaningful names such as
radius, center, area, score MixedCase can be used for
lengthy variables by separating words using upper case letters Lower camelCase: starts with a
lower case letter, e.g. variables and methods
Upper CamelCase: starts with a upper case letter, e.g. classes
/* Try to avoid meaningless identifiers */ int x; double var1;
/* Meaningful identifiers with camelCase are preferrable */ double examScore; double areaOfCircle; public class BankAccount
-
What is a variable?
A variable is kind of identifier A variable represents a piece of
computer memory that can store a value
Typically such memory is requested by the program, and can be modified by the program
The value of a variable can be changed so that a program would be more flexible for handling different inputs
Examples: examScore, labScore, hwScore and finalGrade
A trunk of computer memory that can be used by a program to store values
A piece of computer memory
-
What is a variable?
T.C. Wallace Tony Leo
An analogy is the use of mailbox, each mailbox is labeled by its owner (identifier) and different kinds of mails (values) can be put into the mailbox.
-
How is a Variable created?
A variable is created through a declaration process A variable declaration in a program consists of
three major parts The data type, identifier and semi-colon
The data type of the variable. It has to be specified as Java has different data types
int examWeight ; The name of the variable. Also known as the identifier
A trunk of computer memory that can be used by a Java program to store values
examWeight
-
/** * CourseGrade determines the final grade which is computed as * the weighted sum of the grades obtained in exam, lab and homework */ public class CourseGrade { public static void main(String[] args) { int examWeight = 70; // Percentage weight given to examination int labWeight = 20; // Percentage weight given to lab work int hwWeight = 10; // Percentage weight given to homework assignment double examScore; // Examination score obtained by student double labScore; // Lab score obtained by student double hwScore; // Homework score obtained by student double finalGrade; // Final grade obtained by student
-
Initializing a variable After we have created a variable,
we need to initialize the variable (i.e. give it an initial value):
int examWeight = 70;
Declaration and initialization can be done in separate steps:
int examWeight ; examWeight = 70;
A trunk of computer memory that can be used by a Java program to store values 70
examWeight
-
Changing the Value of a Variable
After a variable is declared and initialized, its value can be modified by an assignment statement:
examWeight = 50;
A trunk of computer memory that can be used by a Java program to store values 70 90
examWeight
50
-
Retrieve a Value from a variable The current value of a variable can
be retrieved by referring to its name:
int labWeight = examWeight ;
A trunk of computer memory that can be used by a Java program to store values
examWeight
50 50 50
labWeight
-
Finalizing a variables value
Sometimes we want to keep a variables value unchanged throughout the program, for example: Mathematical constants, e.g. PI ( = 3.14159) examWeight, labWeight, hwWeight in the CourseGrade program
We can prevent accidental changes to the value by finalizing a variables value Adding the keyword final when declaring the variable Such variables are also referred to as constants.
-
We can assign value to a final variable only once
int examWeight = 70;
Re-assigning a final variable creates a compilation error
examWeight = 50;
A trunk of computer memory that can be used by a Java program to store values 70
examWeight
Finalizing a variables value
final
-
Introduction to Data Types
Data types is a very important concept in high level programming language. The way to define a variable is by specifying a
type All variables and names referred in a Java
program must be defined before it can be used. Each data type has its own properties and
memory space requirements
-
Jave Primitive Data Types A type defines a set of values and a set of operations
that can be applied on those values. The set of values for each type is known as the
domain for the type. Java supports eight primitive data types:
byteshort
intlong
floatdouble
char boolean
PrimitiveData Types
-
Java Primitive Data Types Integers
Data types byte, short, int, long
Values stored are exact without any approximation
Floating-point numbers Data types
float, double
Values stored are approximated
Booleans Data types
boolean
There are only 2 possible values: true and false
Characters Data types
char
They are used to store symbols
-
Data types: Integers
Name Range
byte -27 to 27-1 (-128 to 127)
short -215 to 215-1 (-32768 to 32767)
int -231 to 231-1
long -263 to 263-1
Advantages: Represents the exact numerical value without approximation Disadvantages: Cannot represent floating-point values
-
Data types: floating-point numbers
Name Range
float Negative range: -3.4028235E+38 to -1.4E-45 Positive range: 1.4E-45 to 3.4028235E+38
double Negative range: -1.7976931348523157E+308 to -4.9E-324 Positive range: 4.9E-324 to 1.7976931348523157E+308
(for reference ONLY, you are not required to memorize them)
The range is much larger than integers (long) (~263 only)
-
Expressions
In writing programs, we use expressions as building blocks, which typically describe actions the program should take
Two types of expressions Arithmetic expressions Boolean expressions
Examples: Computing final grade as a weighted sum of some
scores Check if a student received a passing grade
-
Arithmetic Expression
An arithmetic expression is a sequence of variables, constants, literals connected by arithmetic operators
Examples An arithmetic expression 2+3 has two literals (2 and 3)
connected by a + operator An arithmetic expression celsius*9/5+32 has one
variable (celsius), three literals (9, 5 and 32) connected by three operators (*, / and +)
-
Numeric literals
A literal is a constant value that appears directly in the program
There are two types of numeric literals Integer literals Floating-point literals
A compilation error occurs if the literal is too large to fit into a variable
// Integer literals byte aByte = 10; int aInt = 10;
// floating point literals float aFloat = 10.0f; double aDouble = 10.0;
// Compilation error examples float aFloat2 = 10.0; // without suffix f byte aByte2 = 1000; // too large for byte
-
Arithmetic operators
Some commonly used arithmetic operators: Operator Examples Result (+) Addition 2 + 3 5 (-) Subtraction 2 3 -1 (*) Multiplication 2 * 3 6 (/) Division 2 / 3 0 (Integer division) (%) Modulus
2 % 3 2 (The remainder of 2 / 3) Would work on floating point numbers too!
-
Example: Division and Modulus
104 3 102
34
2
b a (a/b)
(a%b)
-
Integer division and floating-point division
For data types storing numerical values, we have integers (int) and floating point numbers (double)
The results for integer and floating numbers are different on division: Integer division
Division between two ints: the result is the integral part of the division, the decimal part of the number would be discarded.
Examples: 2/3 results in 0, 3/2 results in 1 Floating-point division
Division between one or two doubles results in a double Examples: 2/3.0 results in 0.66666 (integer divided by double) 3.0/2 results in 1.5 (double divided by integer) 10.0/2.0 results in 5.0 (double divided by double)
-
Operators and Precedence Which of the following is it equivalent to mx + b?
(m * x) + b m * (x + b)
Operator precedence tells the order in which different operators in an expression are evaluated.
Standard precedence order ( ) Evaluated first, if nested then evaluate
the innermost first. * / % Evaluated second. If there are several,
then evaluate from left-to-right. + - Evaluate third. If there are several,
then evaluate from left-to-right.
-
Associativity Associativity is used to determine the order in
which operators with the same precedence are evaluated in an expression.
Example: 3 * 8 / 4 % 4 * 5 is the same as ( ( ( ( 3 * 8 ) / 4 ) % 4 ) * 5 ) Parentheses can be inserted if you are not sure
about (or want to enforce) the evaluation order
2 1 3 4
-
Assignment statements
Syntax of an assignment statement: Variable = Expression;
It means to assign the value evaluated from an expression to the variable
The original value stored in that variable (if any) will be replaced
Example: int one = 1; // variable one is initialized to 1 one = one + 1; // Now, the variable one has a value of 2
-
Type Conversions Type conversion changes the value of one data type to another. Type conversion can be done in two different ways: implicit and
explicit Implicit conversion is done without any special directive from the
programmer. For examples, to assign an int to a float Basic rule: The conversion is allowed if the range of values of the first
type is a subset of the second (widening conversion). Explicit conversion is done by type casting.
The name of the target type, in parentheses, is placed in front of the data type to be converted.
Example: double dValue = 100.0; int ivalue = (int) dValue; float fValue = (float) dValue;
-
/** * CourseGrade determines the final grade which is computed as * the weighted sum of the grades obtained in exam, lab and homework */ public class CourseGrade { public static void main(String[] args) { int examWeight = 70; // Percentage weight given to examination int labWeight = 20; // Percentage weight given to lab work int hwWeight = 10; // Percentage weight given to homework assignment double examScore; // Examination score obtained by student double labScore; // Lab score obtained by student double hwScore; // Homework score obtained by student double finalGrade; // Final grade obtained by student
-
Declaration of Data Type
examWeight
70
labWeight hwWeight labScore hwScore examScore finalGrade
20 10
int examWeight = 70;
int labWeight = 20;
int hwWeight = 10;
double examScore;
double labScore;
double hwScore;
double finalGrade;
? ? ? ?
-
// Ask student to input scores for exam, lab and nomework IO.output("Enter your exam grade: "); examScore = IO.inputDouble( ); IO.output("Enter your lab grade: "); labScore = IO.inputDouble( ); IO.output("Enter your homework grade: "); hwScore = IO.inputDouble( ); // Computer final grade as the weighted sum of exam, lab and homework scores examScore = examScore * (examWeight / 100.0); labScore = labScore * (labWeight / 100.0); hwScore = hwScore * (hwWeight / 100.0); finalGrade = examScore + labScore + hwScore; // Output the final grade IO.outputln("Your final grade is " + finalGrade); } }
-
Assignment of Values to Variables
examWeight
70
labWeight hwWeight labScore hwScore examScore finalGrade
20 10
examScore = IO.inputDouble( ) ;
labScore = IO.inputDouble( ) ;
hwScore = IO.inputDouble( ) ;
? ? ? ?
90.0
85.0
80.5
-
// Ask student to input scores for exam, lab and nomework IO.output("Enter your exam grade: "); examScore = IO.inputDouble( ); IO.output("Enter your lab grade: "); labScore = IO.inputDouble( ); IO.output("Enter your homework grade: "); hwScore = IO.inputDouble( ); // Computer final grade as the weighted sum of exam, lab and homework scores examScore = examScore * (examWeight / 100.0); labScore = labScore * (labWeight / 100.0); hwScore = hwScore * (hwWeight / 100.0); finalGrade = examScore + labScore + hwScore; // Output the final grade IO.outputln("Your final grade is " + finalGrade); } }
-
90.0
Changing value of a variable
examWeight
70
labWeight hwWeight labScore hwScore examScore finalGrade
20 10
examScore = examScore * (examWeight / 100.0 ) ;
70
0.7
90.0 85.0 80.5 90.0
63.0
?
-
90.0
Changing value of a variable
examWeight
70
labWeight hwWeight labScore hwScore examScore finalGrade
20 10
examScore = examScore * (examWeight / 100.0 ) ;
70 85.0 80.5 63.0 ?
labScore = labScore * (labWeight / 100.0 ) ; 17.0
hwScore = hwScore * (hwWeight / 100.0 ) ; 8.05
finalGrade = examScore + labScore + hwScore ; 88.05
-
/** * CourseGrade determines the final grade which is computed as * the weighted sum of the grades obtained in exam, lab and homework */ public class CourseGrade { public static void main(String[] args) { final int examWeight = 70; // Percentage weight given to examination final int labWeight = 20; // Percentage weight given to lab work final int hwWeight = 10; // Percentage weight given to homework assignment double examScore; // Examination score obtained by student double labScore; // Lab score obtained by student double hwScore; // Homework score obtained by student double finalGrade; // Final grade obtained by student
-
Declaration of Constants
examWeight
70
labWeight hwWeight labScore hwScore examScore finalGrade
20 10
final int examWeight = 70;
final int labWeight = 20;
final int hwWeight = 10;
examWeight = 50; labWeight = 40;
-
Simple I/O A program interacts with users through input and output devices Console output: System.out.println and System.out.print
Example: System.out.println("Hello, world!");
Console input using the Scanner class will be discussed later
I/O class for output: IO.outputln and IO.output Examples: IO.output("Enter your exam grade: "); IO.outputln("Your final grade is " + finalGrade);
I/O class for input: IO.inputInteger and IO.inputDouble Examples: double examScore = IO.inputDouble( ); int intValue = IO.inputInteger( );
Add the following statement at the beginning of your program: import comp102x.IO;
-
User Interface for Input
Computers are not very good in reading handwritten/printed words or understanding speech
Need user interface for inputting numbers and test to a computer Keyboard Visual input, e.g. barcode Voice input, e.g. Siri
-
Barcode A barcode is a machine readable representation of data Linear (or 1-D) Barcodes represent data by varying the
widths and spacings of a set of parallel lines
Developed in the 1960s and became a commercial success due to its widespread use in automated checkout systems.
-
Barcode Example import comp102x.IO; // This program demonstrates simple arithmetic on values represented by barcodes public class BarcodeDemo { public static void main (String[ ] args) { // Declare and initialize two long variables long value1 = IO.inputBarcode(); // Read a barcode from an existing file long value2 = IO.inputBarcode(); // Read another barcode from an existing file // Output the values represented by the two barcodes IO.outputln("The value of the 1st barcode is: " + value1); IO.outputln("The value of the 2nd barcode is: " + value2); // Add and multiply two barcodes long addResult = value1 + value2; long mulResult = value1 * value2; // Output the calculation results IO.outputln("The result of adding the two barcodes values is: " + addResult); IO.outputln("The result of multiplying the two barcodes values is: " + mulResult); // Output the calculation results as images on the file system IO.outputBarcode(addResult); }
long value1 = IO.inputInteger(); long value2 = IO.inputInteger();
Lecture 2 Example Example: Initial AlgorithmSlide Number 4Slide Number 5IdentifiersReserved WordsReserved wordsNaming ConventionsWhat is a variable?What is a variable?How is a Variable created?Slide Number 13Initializing a variableChanging the Value of a VariableRetrieve a Value from a variableFinalizing a variables valueFinalizing a variables value Introduction to Data TypesJave Primitive Data TypesJava Primitive Data TypesData types: IntegersData types: floating-point numbersExpressionsArithmetic ExpressionNumeric literalsArithmetic operators Example: Division and ModulusInteger division and floating-point division Operators and PrecedenceAssociativityAssignment statements Type ConversionsSlide Number 34Declaration of Data TypeSlide Number 36Assignment of Values to VariablesSlide Number 38Changing value of a variableChanging value of a variableSlide Number 41Declaration of ConstantsSimple I/OUser Interface for InputBarcodeBarcode Example
/ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 150 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile (None) /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False
/CreateJDFFile false /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice