Lab6-cpcs-203

22
Lab Manual CPCS203 KING ABDULAZIZ UNIVERSITY Faculty of Computing & Information Technology Department of Computer Science

description

Lab6-cpcs-203.doc

Transcript of Lab6-cpcs-203

Page 1: Lab6-cpcs-203

Lab Manual

CPCS203

Programming II

KING ABDULAZIZ UNIVERSITYFaculty of Computing & Information Technology

Department of Computer Science

Page 2: Lab6-cpcs-203

(Object-oriented)

1432/1433H

Lab - 6

Learning Procedure

1) Stage J (Journey inside-out the concept)

2) Stage a1 (apply the learned)

3) Stage v (verify the accuracy)

4) Stage a2 (assess your work)

CPCS203 – The Lab Note Lab-6 1

Term I2011 Lab-6: Repetition Statements

Page 3: Lab6-cpcs-203

Laboratory 6:

Statement Purpose:

This lab will give you practical implementation of different types of Repetition Statements (loops) and defining custom class in java.

Activity Outcomes:

This lab teaches you the following topics:

Implement repetition control in a program using (while, do while, for loop structure) and break statement.

Nest a loop repetition statement inside another repetition statement. Describe how the reserved word this is used Define overloaded methods and constructors Describe how the arguments are passed to the parameters using the

pass-by-value scheme.

Instructor Note:

As pre-lab activity, read Chapter 6 and 7 from the book (An Introduction to Object-Oriented Programming with Java, 4th Edition by C. THOMAS WU (Book’s website www.mhhe.com/wu), and also as given by your theory instructor.

Names I.D.

1. .……………..………………………………. ………………………………

2. ..…………………………………………….. ………………………………

3. .……………………………………………... ………………………………

4. .…………………………………………….. ..…………………………….

CPCS203 – The Lab Note Lab-6 1

Term I2011 Lab-6: Repetition Statements

Page 4: Lab6-cpcs-203

CPCS203 – The Lab Note Lab-6 2

Term I2011 Lab-6: Repetition Statements

Page 5: Lab6-cpcs-203

1) Stage J (Journey)

Introduction

One of the great virtues of computers is that they will repeat mindless tasks without complaint. To facilitate such repetition, Java includes statements types called loops, which allow a program to specify some sequence of instructions that should be repeated.

Within an instance method or a constructor, this is a reference to the current object — the object whose method or constructor is being called. You can refer to any member of the current object from within an instance method or a constructor by using this.

In Java it is possible to define two or more methods within the same class that share the same name, as long as their parameter declarations are different. When this is the case, the methods are said to be overloaded, and the process is referred to as method overloading. Method overloading is one of the ways that Java implements polymorphism.

2) Stage a1 (apply)

Lab Activities:

Activity 1:Java Palindrome Number Example, This Java Palindrome Number Example shows how to find if the given number is palindrome number or not. For example 7887 is a Palindrome number because the number is remains same either your read it from left to right or from right to left.

Solution: A. Create Java Main Class and named it PalindromeNumberExample B. Copy the Code and test it by running the application

public class PalindromeNumberExample { public static void main(String[] args) { //int number = use scanner to read the number from user int number=7887; int numbertemp=number; int reversedNumber = 0;

int temp=0; while (numbertemp > 0){

CPCS203 – The Lab Note Lab-6 3

Term I2011 Lab-6: Repetition Statements

Page 6: Lab6-cpcs-203

temp = numbertemp % 10; numbertemp = numbertemp / 10; reversedNumber = reversedNumber * 10 + temp; }// to check if the number is palindrome or not if (number == reversedNumber) System.out.println(number + " is a palindrome number"); else System.out.println(number + " is not a palindrome number"); }}

Activity 2:Example shows how to generate pyramid or triangle like given below using for loop based on the given size of pyramid.

1 12 123 1234 12345

Solution: A. Create Java Main Class and named it JavaPyramid1B. Copy the Code and test it by running the application

public class JavaPyramid1 {   public static void main(String[] args) {   for(int i=1; i<= 5 ;i++){   for(int j=0; j < i; j++){ System.out.print(j+1); }   System.out.println(""); }   } }

Break is often used in terminating for loop but it can also be used for terminating other loops as well such as while, do while etc. .

Break is a tool inside Java branching category.

CPCS203 – The Lab Note Lab-6 4

Term I2011 Lab-6: Repetition Statements

Page 7: Lab6-cpcs-203

Activity 3:The example below, how to terminate the while loop is demonstrated. In the program we breaking while loop when the user enter choice ==stop and value0 == true.

import javax.swing.JOptionPane;

public class Java_Break_While {

public static void main(String args[]) {

String str = "stop", choice = "", strb = "";boolean value = true;String value0 = "true";while (value) {

choice = JOptionPane.showInputDialog(null, "Type 'stop'", "Input box ", 1);strb = JOptionPane.showInputDialog(null, "Type boolean 'true'", "Input box ", 1);

if(choice.equals(str) && strb.equals(value0)){JOptionPane.showMessageDialog(null, "Well ! now you have

break the \n\t\twhile loop \n\t\tSuccessfully", "Congrats ", 1);

break ;}elseJOptionPane.showMessageDialog(null, "Type correct value", "Alert ", 1); } } }

Activity 4:

Practical Learning: Passing Arguments

1. Start NetBeans 2. Create a New Project as a Java Application and name it Geometry23. In the Projects window, under Geometry2, expand Sources Packages if

necessary.To create a new class, under the Geometry2 folder, right-click the Geometry2 sub-folder -> New -> Java Class...

4. Set the Name to Cylinder and click Finish

Change the file as follows: CPCS203 – The Lab Note Lab-6 5

Term I2011 Lab-6: Repetition Statements

Page 8: Lab6-cpcs-203

package geometry2;import java.util.Scanner;

public class Cylinder { double specifyRadius() { double rad; Scanner scnr = new Scanner(System.in);

System.out.print("Radius: "); rad = scnr.nextDouble();

return rad; }

double specifyHeight() { double h; Scanner scnr = new Scanner(System.in);

System.out.print("Height: "); h = scnr.nextDouble();

return h; }

double calculatebaseArea(double rad) { return rad * rad * 3.14159; }

double calculateLateralArea(double rad, double hgt) { return 2 * 3.14159 * rad * hgt; }

double calculateTotalArea(double rad, double hgt) { return 2 * 3.14159 * rad * (hgt + rad); }

double calculateVolume(double rad, double hgt) { return 3.14159 * rad * rad * hgt; }

void process() { double radius; double height; double baseArea; double lateralArea; double totalArea; double volume; System.out.println("Enter the dimensions of the cylinder"); radius = specifyRadius(); height = specifyHeight();

CPCS203 – The Lab Note Lab-6 6

Term I2011 Lab-6: Repetition Statements

Page 9: Lab6-cpcs-203

baseArea = calculatebaseArea(radius); lateralArea = calculateLateralArea(radius, height); totalArea = calculateTotalArea(radius, height); volume = calculateVolume(radius, height);

System.out.println("\nCylinder Characteristics"); System.out.printf("Radius: %g\n", radius); System.out.printf("Height: %g\n", height); System.out.printf("Base: %f\n", baseArea); System.out.printf("Lateral: %f\n", lateralArea); System.out.printf("Total: %f\n", totalArea); System.out.printf("Volume: %f\n", volume); }}

5. Access the Main.java file and change it as follows:

package geometry2;

public class Main { static void main(String[] args) { Cylinder cyl = new Cylinder();

cyl.process(); }}

6. Execute the application to test it. Here is an example:

Enter the dimensions of the cylinderRadius: 35.95Height: 30.25

Cylinder CharacteristicsRadius: 35.9500Height: 30.2500Base: 4060.198770Lateral: 6832.879710Total: 14953.277250Volume: 122821.012792

CPCS203 – The Lab Note Lab-6 7

Term I2011 Lab-6: Repetition Statements

Page 10: Lab6-cpcs-203

Activity 5:

Method Overloading

In Java it is possible to define two or more methods within the same class that share the same name, as long as their parameter declarations are different. When this is the case, the methods are said to be overloaded, and the process is referred to as method overloading.

// the following example demonstrate the method overloading in OOP (Java).

Step 1: Create a java class and name it OverloadDemo class OverloadDemo {void test() {

System.out.println("No parameters");}// Overload test for one integer parameter.void test(int a) {

System.out.println("a: " + a);}// Overload test for two integer parameters.void test(int a, int b) {

System.out.println("a and b: " + a + " " + b);}// overload test for a double parameterdouble test(double a) {

System.out.println("double a: " + a);return a*a;

}}

Step 2: Now create main java class and name it Overload

public class Overload {

public static void main(String args[]) {OverloadDemo ob = new OverloadDemo();double result;// call all versions of test()ob.test();ob.test(10);ob.test(10, 20);result = ob.test(123.2);System.out.println("Result of ob.test(123.2): " + result);}}

CPCS203 – The Lab Note Lab-6 8

Term I2011 Lab-6: Repetition Statements

Page 11: Lab6-cpcs-203

As you can see, test( ) is overloaded four times. The first version takes no parameters, the second takes one integer parameter, the third takes two integer parameters, and the fourth takes one double parameter. The fact that the fourth version of test( ) also returns a value is of no consequence relative to overloading, since return types do not play a role in overload resolution.

When an overloaded method is called, Java looks for a match between the arguments used to call the method and the method's parameters.

Activity 6:

Using the this Keyword:

Within an instance method or a constructor, this is a reference to the current object —

The most common reason for using the this keyword is because a field is shadowed by a method or constructor parameter.

You can also use the this keyword to call another constructor in the same class.

// the following example demonstrate the use of this and constructor overloading in OOP (Java).

Step 1: Create a java class and name it Rectangle class Rectangle{ int x,y,width,height; public Rectangle() { this(0, 0, 0, 0); } public Rectangle(int width, int height) { this(0, 0, width, height); } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; }

void show(int width, int height){ this.width = width;

CPCS203 – The Lab Note Lab-6 9

Term I2011 Lab-6: Repetition Statements

Page 12: Lab6-cpcs-203

this.height = height; } int calculate(){ return(width*height); }}

Step 2: Now create main java class and name it UseOfThisOperatorpublic class UseOfThisOperator{

public static void main(String[] args){

Rectangle rectangle=new Rectangle(); rectangle.show(5,6); int area = rectangle.calculate(); System.out.println("The area of a Rectangle is : " + area); }

3) Stage v (verify)

Home Activities:

1. Use nested loops that print the following patterns in three separate programs.

2. (Printing numbers in a pyramid pattern) Write a nested for loop that prints the following output:

CPCS203 – The Lab Note Lab-6 10

Term I2011 Lab-6: Repetition Statements

Page 13: Lab6-cpcs-203

1 1 2 1 1 2 4 2 1 1 2 4 8 4 2 1 1 2 4 8 16 8 4 2 1 1 2 4 8 16 32 16 8 4 2 1 1 2 4 8 16 32 64 32 16 8 4 2 11 2 4 8 16 32 64 128 64 32 16 8 4 2 1

3. Write a Java program to generate Fibonacci Series like given below using loop up to given number by user. If user enter number = 20, your output must be

Fibonacci Series upto 20 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 [Hint: add the last two number in the series to get new number of the series]

4. Write a program that prompts the user to enter the number of students and each student's name and score, and finally displays the student with the highest score.

5. Write a program that displays all the numbers from 100 to 1000, ten per line, that are divisible by 5 and 6.

6. Complete the first four constructors of the following class. Each of the four constructors calls the fifth one by using the reserved word this.

Class Cat{ private static final String DEFAULT_NAME = "No Name";private static final int DEFAULT_HGT = 6; private static final double DEFAULT_WGT = 10.0; private String name; private int height; private double weight;

public Cat() {// assign defaults to all data members }

public Cat(String name) {// assign the passed name to the data member// use defaults for height and weight }

public Cat(String name, int height) {// assign the passed name to the name and height// use defaults for weight

CPCS203 – The Lab Note Lab-6 11

Term I2011 Lab-6: Repetition Statements

Page 14: Lab6-cpcs-203

}

public Cat(String name, double weight) {// assign the passed name to the name and weight// use defaults for height }

public Cat(String name, int height, double weight) { this.name = name; this.height = height; this.weight = weight; }}

(Extra) Home Activities:

Some more Practical Learning: Overloading a Method:

Activity 7:

1. Start a new Java Application named MomentOfInertia1

2. Change the file as follows:

package momentofinertia1;import java.util.Scanner;

public class Main { // Rectangle static double calculateMomentOfInertia(double b, double h) {

return b * h * h * h / 3; } static void main(String[] args) {

CPCS203 – The Lab Note Lab-6 12

Term I2011 Lab-6: Repetition Statements

Page 15: Lab6-cpcs-203

double base, height; Scanner scnr = new Scanner(System.in);

System.out.println("Enter the dimensions of the Rectangle");

System.out.print("Base: "); base = scnr.nextDouble();System.out.print("Height: ");height = scnr.nextDouble();

System.out.println("\nMoment of inertia with " + "regard to the X axis: ");

System.out.printf("I = %.2fmm", calculateMomentOfInertia(base, height));

}}

3. Execute the application. Here is an example of running the program:

Enter the dimensions of the RectangleBase: 2.44Height: 3.58

Moment of inertia with regard to the X axis: I = 37.317939mm

Activity 8:

1. A circle, and thus a semi-circle, requires only a radius. Since the other version of the calculateMomentOfInertia() function requires two arguments, we can overload it by providing only one argument, the radius.To overload the above calculateMomentOfInertia() method, type the following in the file:

 package momentofinertia1;import java.util.Scanner;

CPCS203 – The Lab Note Lab-6 13

Term I2011 Lab-6: Repetition Statements

Page 16: Lab6-cpcs-203

public class Main { // Rectangle static double calculateMomentOfInertia(double b, double h) {

return b * h * h * h / 3; }

// Semi-Circle static double calculateMomentOfInertia(double R) {

final double PI = 3.14159;

return R * R * R * R * PI/ 8; } static void main(String[] args) {

double radius; double base, height; Scanner scnr = new Scanner(System.in);

System.out.println("Enter the dimensions of the Rectangle");

System.out.print("Base: "); base = scnr.nextDouble();System.out.print("Height: ");height = scnr.nextDouble();

System.out.println("\nMoment of inertia with " + "regard to the X axis: ");

System.out.printf("I = %fmm", calculateMomentOfInertia(base, height));

System.out.print("\nEnter the radius: ");radius = scnr.nextDouble();

System.out.println("Moment of inertia of a semi-circle " +

"with regard to the X axis: ");System.out.printf("I = %fmm",

calculateMomentOfInertia(radius)); }}

CPCS203 – The Lab Note Lab-6 14

Term I2011 Lab-6: Repetition Statements

Page 17: Lab6-cpcs-203

4) Stage a2 (assess)

Homework 6:For this lab you are requested to solve Lab homework and to submit it before the deadline.

Lab Homework:The laboratory homework of this lab (and also all the following labs in this manual) should include the following items/sections:

A cover page with your name, course information, lab number and title, and date of submission.

Programming: a brief description of the process you followed in conducting the coding of the homework solution.

Results obtained throughout the written code followed with brief analysis of these results.

A zip file including both the Java project folder and the work file contains all items/sections above.

Lab Report:The laboratory report of this lab (and also all the following labs in this manual) should include the following items/sections:

A cover page with your name, course information, lab number and title, and date of submission.

A summary of the addressed topic and objectives of the lab. Implementation: a brief description of the process you followed in

conducting the implementation of the lab scenarios. Results obtained throughout the lab implementation, the analysis of these

results, and a comparison of these results with your expectations. Answers to the given exercises at the end of the lab. If an answer

incorporates new graphs, analysis of these graphs should be included here. A conclusion that includes what you learned, difficulties you faced, and any

suggested extensions/improvements to the lab.

Note: only a softcopy is required for both homework and report, please do not print or submit a hard copy.

CPCS203 – The Lab Note Lab-6 15

Term I2011 Lab-6: Repetition Statements