Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java...

38
Introduction to programming in Java Practical session #3 Language Basics

Transcript of Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java...

Page 1: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Introduction to programming in Java

Practical session #3Language Basics

Page 2: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

This session● Control Flow Statements

○ Decision making (continue if-then-else)■ switch

○ Looping statements■ for■ while■ do-while

○ Branching statements■ break■ continue

● Text Comparison program● Eclipse - output to file

Page 3: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The switch Statement● can have a number of possible execution paths● works with the

○ byte, short, char, and int primitive data types○ enumerated types (maybe letter in the course)○ String class (from Java 7)

● a switch block - body of a switch statement● can be labeled with one or more case or default labels● evaluates its expression, then executes all statements that follow the

matching case label● tests expressions based only on a single integer, enumerated value, or

String object● each break statement terminates the enclosing switch statement● control flow continues with the first statement following the switch block● The break statements are necessary because without them, statements in

switch blocks fall through: All statements after the matching case label are executed in sequence, regardless of the expression of subsequent case labels, until a break statement is encountered

Page 4: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The switch Statement● Technically, the final break is not required because flow falls out of the

switch statement.● Using a break is recommended so that modifying the code is easier and

less error prone.● The default section handles all values that are not explicitly handled by one

of the case sections.

Page 5: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The switch StatementThe following code example, SwitchDemo2, shows how a statement can have multiple case labels. The code example calculates the number of days in a particular month:

Page 6: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The switch Statementclass SwitchDemo2 { public static void main(String[] args) {

int month = 2; int year = 2000; int numDays = 0;

switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break;

case 2: if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) numDays = 29; else numDays = 28; break; default: System.out.println("Invalid month."); break; } System.out.println("Number of Days = " + numDays); }}

This is the output from the code:Number of Days = 29

Page 7: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The while and do-while StatementsThe while statement continually executes a block of statements while a particular condition is true. Its syntax can be expressed as:

while (expression) { statement(s)}

Page 8: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The while and do-while StatementsUsing the while statement to print the values from 1 through 10 can be accomplished as in the following WhileDemo program:

class WhileDemo { public static void main(String[] args){ int count = 1; while (count < 11) { System.out.println("Count is: " + count); count++; } }}

Page 9: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The while and do-while Statements● You can implement an infinite loop using the while statement as follows:

while (true){ // your code goes here}

Page 10: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The while and do-while Statements● The Java programming language also provides a do-while statement,

which can be expressed as follows:

do { statement(s)} while (expression);

Page 11: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The while and do-while Statements● The difference between do-while and while is that do-while evaluates its

expression at the bottom of the loop instead of the top.● Therefore, the statements within the do block are always executed at least

once, as shown in the following DoWhileDemo program:

class DoWhileDemo { public static void main(String[] args){ int count = 1; do { System.out.println("Count is: " + count); count++; } while (count < 11); }}

Page 12: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The for Statement● a compact way to iterate over a range of values● the general form of the for statement can be expressed as follows:

for (initialization; termination; increment) { statement(s)}

Page 13: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The for StatementWhen using this version of the for statement, keep in mind that:● The initialization expression initializes the loop; it's executed once, as the

loop begins.● When the termination expression evaluates to false, the loop terminates.● The increment expression is invoked after each iteration through the loop;

it is perfectly acceptable for this expression to increment or decrement a value.

Page 14: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The for StatementThe following program, ForDemo, uses the general form of the for statement to print the numbers 1 through 10 to standard output:

class ForDemo { public static void main(String[] args){ for(int i=1; i<11; i++){ System.out.println("Count is: " + i); } }}

The output of this program is:

Count is: 1Count is: 2Count is: 3Count is: 4Count is: 5Count is: 6Count is: 7Count is: 8Count is: 9Count is: 10

Page 15: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The for Statement● The scope of the declared variable extends from its declaration to the end

of the block governed by the for statement.● If the variable that controls a for statement is not needed outside of the

loop, it's best to declare the variable in the initialization expression.● The names i, j, and k are often used to control for loops

○ declaring them within the initialization expression limits their life span and reduces errors.

Page 16: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The for StatementThe three expressions of the for loop are optional; an infinite loop can be created as follows:

// infinite loopfor ( ; ; ) { // your code goes here}

Page 17: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#1 - same logic, different loops

Write a program that get two positive integers, x and y, from user and calculate the xy.

Example:x = 2y = 3xy = 8

Write two versions of the program: one with for and one with while.

Page 18: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#1 - same logic, different loopsScanner sc = new Scanner(System.in);System.out.print("Enter the first number:");int x = sc.nextInt();System.out.print("Enter the second number:");int y = sc.nextInt();int result = 1;for (int i = 0; i < y; i++) result *= x;System.out.println(x + "^" + y + " is: " + result);

Scanner sc = new Scanner(System.in);System.out.print("Enter the first number:");int x = sc.nextInt();System.out.print("Enter the second number:");int y = sc.nextInt();int result = 1, i = 0;while (i < y){ result *= x; i++;}System.out.println(x + "^" + y + " is: " + result);

Page 19: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#2 - control flow following

Follow the program control flow and try to understand what this program done:

public static void main(String[] args) { int x, y, something = 0; Scanner sc = new Scanner(System.in); System.out.println("Enter two numbers: "); x = sc.nextInt(); y = sc.nextInt(); while (x-- > 0) something++; for (; y > 0; y--, something--); System.out.println(something);

}

Page 20: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#2 - control flow following

Follow the program control flow and try to understand what this program done:

public static void main(String[] args) { int x, y, something = 0; Scanner sc = new Scanner(System.in); System.out.println("Enter two numbers: "); x = sc.nextInt(); y = sc.nextInt(); while (x-- > 0) something++; for (; y > 0; y--, something--); System.out.println(something);

}

Yep, the code do (x - y).

Page 21: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#3 - double loop

Write a program that get positive integer from user as input and prints n*n square of asterisks.

Page 22: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#3 - double loop

Write a program that get positive integer from user as input and prints n*n square of asterisks.

public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("Please enter dimension");int n = sc.nextInt();for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++)System.out.print('*');

System.out.println();}

}

Page 23: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#4 - reverse number

Write a program that get integer number as input from the user, reverse it and prints as output.

Page 24: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Loops exercises#4 - reverse number

Write a program that get integer number as input from the user, reverse it and prints as output.

public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("Enter number: ");int reversed_num = 0, sign = 1, num = sc.nextInt();// Treat negative number as positive and remember signif (num < 0){

sign = -1;num = -num;

{// Reverse the numberwhile (num > 0){

reversed_num = reversed_num * 10 + num%10;num /= 10;

}reversed_num *= sign;System.out.println("Reversed = " + reversed_num);

}

Page 25: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The continue Statement

● The continue statement skips the current iteration of a for, while , or do-while loop.

● The following program, ContinueDemo , steps through a String, counting the occurrences of the letter "p". If the current character is not a p, the continue statement skips the rest of the loop and proceeds to the next character. If it is a "p", the program increments the letter count.

Page 26: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

class ContinueDemo { public static void main(String[] args) {

String searchMe = "peter piper picked a " + "peck of pickled peppers"; int max = searchMe.length(); // length of string searchMe int numPs = 0;

for (int i = 0; i < max; i++) { // interested only in p's if (searchMe.charAt(i) != 'p') // char at index i in string searchMe continue;

// process p's numPs++; } System.out.println("Found " + numPs + " p's in the string."); }}

The continue Statement

Page 27: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

The continue Statement● The output of this program: Found 9 p's in the string.● To see this effect more clearly, try removing the continue statement and

recompiling. When you run the program again, the count will be wrong, saying that it found 35 p's instead of 9.

Page 28: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

● Your homeworks will be programs● How we going to check your homework?

○ We will take particular inputs for your homework program and run on:■ our implementation of the assignment with this input and will

output it to file - name it classOutput.txt■ your implementation of the assignment with this input and will

output it to file - name it homeOutput.txt○ The two output files will be compared for difference○ In case the outputs EXACTLY the same - you get 100 points for the

task, any difference - you will get 0 for the task.● You will be provided with some example input and outputs, so it is possible

to compare your output at home with our output.● For that reason we will se how to compare two text files.● Eclipse IDE have its own text comparison feature - so we will use Eclipse.

Text Comparison

Page 29: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Text ComparisonComparison example - how-to:● Open Eclipse● Create new Java project (of course you can use your existing project)● Create new text file and name it classOutput.txt● Create second text file and name it homeOutput.txt

Page 30: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Text Comparison

Page 31: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

● Enter some text in the classOutput.txt file, for example (that way, four lines of text):

"Luck is what happenswhenpreparation meets opportunity."- Seneca

● Now, copy the text to the second file and change it a little bit.● Save both files.

Page 32: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Text Comparison● In the package explorer window of the IDE select one of the files with the

pointer;● Press shift button on the keyboard;● Without release the control (or command on Mac) button click on the

second file;● Now you have two selected files, the classOutput.txt and the homeOutput.

txt

Page 33: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Text Comparison● Right click (control

click on Mac) your mouse/trackpad when the pointer on one of the two files and both still selected to bring the context menu up;

● Choice the Compare With context menu item, and the Each Other sub-item.

Page 34: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Text Comparison● As you can see in the following snapshot, you can see all the differences

between those two files.● The buttons in the right upper corner of the window can help you to

navigate between the differences.

Page 35: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Eclipse - multi-input by one step● In your homework you'll be asked to work with some massive input● To not enter every execution of your code many inputs manually you can

do the following:○ For example, we have a program that sum two integers, so the user

input will be: [first integer] [enter] [second integer] [enter]○ Instead of entering manually each one of the numbers prepare text file

with user input beforehand○ Run your program○ Copy/Paste the whole user input from the prepared file to the console○ For example, your input to your program that sums up to integers is 5

& 7, so you need to enter the digit 5, the "enter" keyboard button, the digit 7 and again "enter" keyboard button. So prepare input file like that:■ 5■ 7■

○ Pay attention, the file have three line, because each "enter" button press creates new line.

Page 36: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Eclipse - output to file● Another thing you will need for you homework is to redirect/add your output

to file instead of console window.● Lets see how to redirect/add the standard output (snapshot on the next

slide)○ Before execution of your project go to menu bar and choose Run |

Run Configurations... (same for debug)○ In the opened configuration window choose your project from the left

sided list○ In the right side choice the Common tab○ In the opened tab seek for Standard Input and Output region○ In the region mark the File: option with V and use the File System

button to choose where and what the name of your output file will be○ Press Apply button in the low left part of the window○ Press Run to execute your project

Page 37: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Eclipse - output to file

Page 38: Introduction to programming in Javaipc132/wiki.files/PracticalSession3.pdf · programming in Java Practical session #3 ... This session Control Flow Statements Decision making (continue

Next Lecture● Arrays● Submission System● Homework overview