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

Post on 22-Mar-2020

19 views 0 download

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

Introduction to programming in Java

Practical session #3Language Basics

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

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

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.

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:

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

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)}

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++; } }}

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

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

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);

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); }}

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)}

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.

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

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.

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}

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.

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);

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);

}

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).

Loops exercises#3 - double loop

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

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();}

}

Loops exercises#4 - reverse number

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

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);

}

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.

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

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.

● 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

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

Text Comparison

● 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.

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

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.

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.

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.

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

Eclipse - output to file

Next Lecture● Arrays● Submission System● Homework overview