# ICSE 2012 Computer Application

## ICSE 2012 COMPUTER APPLICATION

Answer to this ICSE 2012 Computer Application ICSE Board Paper must be written on the paper provided separately. You will not be allowed to write during the first 15 minutes. This time is to be spent in reading the question paper. The time given at the head is the time allowed for writing the answer.
——– ——– ——– ——– ——- ——- ——– ——- ——-
This paper is divided into two Sections. Answer all Questions from Section A and any four questions from Section B. The intended marks for questions or parts of questions are given in [].
——– ——– ——– ——– ——- ——- ——– ——- ——-

SECTION A(40 Marks)
Attempt all questions.

Question 1

(a) Give one example each of a primitive data type and a composite data type. 
Ans. Primitive Data Types – byte, short, int, long, float, double, char, boolean
Composite Data Type – Class, Array, Interface

(b) Give one point of difference between unary and binary operators. 
Ans. A unary operator requires a single operand whereas a binary operator requires two operands.
Examples of Unary Operators – Increment ( ++ ) and Decrement ( — ) Operators
Examples of Binary Operators – +, -, *, /, %

(c) Differentiate between call by value or pass by value and call by reference or pass by reference. 
Ans. In call by value, a copy of the data item is passed to the method which is called whereas in call by reference, a reference to the original data item is passed. No copy is made. Primitive types are passed by value whereas reference types are passed by reference.

(d) Write a Java expression for (under root of 2as+u2) 
Ans. Math.sqrt ( 2 * a * s + Math.pow ( u, 2 ) )
( or )
Math.sqrt ( 2 * a * s + u * u )

(e) Name the types of error (syntax, runtime or logical error) in each case given below:
(i) Division by a variable that contains a value of zero.
(ii) Multiplication operator used when the operation should be division.
(iii) Missing semicolon. 
Ans.
(i) Runtime Error
(ii) Logical Error
(iii) Syntax Error

Question 2

(a)Create a class with one integer instance variable. Initialize the variable using:
(i) default constructor
(ii) parameterized constructor. 
Ans.
1
public class Integer {
2

3
int x;
4

5
public Integer() {
6
x = 0;
7
}
8

9
public Integer(int num) {
10
x = num;
11
}
12
}

(b)Complete the code below to create an object of Scanner class.
Scanner sc = ___________ Scanner( ___________ ) 
Ans. Scanner sc = new Scanner ( System.in )

(c) What is an array? Write a statement to declare an integer array of 10 elements. 
Ans. An array is a reference data used to hold a set of data of the same data type. The following statement declares an integer array of 10 elements –
int arr[] = new int;

(d) Name the search or sort algorithm that:
(i) Makes several passes through the array, selecting the next smallest item in the array each time and placing it where it belongs in the array.
(ii) At each stage, compares the sought key value with the key value of the middle element of the array. 
Ans. (i) Selection Sort
(ii) Binary Search

(e) Differentiate between public and private modifiers for members of a class. 
Ans. Variables and Methods whwith the public access modie the class also.

Question 3

(a) What are the values of x and y when the following statements are executed? 
1
int a = 63, b = 36;
2
boolean x = (a < b ) ? true : false; int y= (a > b ) ? a : b ;

Ans. x = false
y = 63

(b) State the values of n and ch 
1
char c = ‘A’:
2
int n = c + 1;

Ans. The ASCII value for ‘A’ is 65. Therefore, n will be 66.

(c) What will be the result stored in x after evaluating the following expression? 
1
int x=4;
2
x += (x++) + (++x) + x;

Ans. x = x + (x++) + (++x) + x
x = 4 + 4 + 6 + 6
x = 20

(d) Give the output of the following program segment: 
1
double x = 2.9, y = 2.5;
2
System.out.println(Math.min(Math.floor(x), y));
3
System.out.println(Math.max(Math.ceil(x), y));

Ans.
2.0
3.0
Explanation : Math.min(Math.floor(x), y) = Math.min ( 2.0, 2.5 ) = 2.0
Math.max(Math.ceil(x), y)) = Math.max ( 3.0, 2.5 ) = 3.0

(e) State the output of the following program segment. 
1
String s = “Examination”;
2
int n = s.length();
3
System.out.println(s.startsWith(s.substring(5, n)));
4
System.out.println(s.charAt(2) == s.charAt(6));

Ans.
false
true
Explanation : n = 11
s.startsWith(s.substring(5, n)) = s.startsWith ( “nation” ) = false
( s.charAt(2) == s.charAt(6) ) = ( ‘a’== ‘a’ ) = true

(f) State the method that:
(i) Converts a string to a primitive float data type
(ii) Determines if the specified character is an uppercase character 
Ans. (i) Float.parseFloat(String)
(ii) Character.isUpperCase(char)

(g) State the data type and values of a and b after the following segment is executed.
1
String s1 = “Computer”, s2 = “Applications”;
2
a = (s1.compareTo(s2));
3
b = (s1.equals(s2));

Ans. Data type of a is int and b is boolean.
ASCII value of ‘C’ is 67 and ‘A’ is 65. So compare gives 67-65 = 2.
Therefore a = 2
b = false

(h) What will the following code output? 
1
String s = “malayalam”;
2
System.out.println(s.indexOf(‘m’));
3
System.out.println(s.lastIndexOf(‘m’));

Ans.
0
8

(i) Rewrite the following program segment using while instead of for statement 
1
int f = 1, i;
2
for (i = 1; i <= 5; i++) {
3
f *= i;
4
System.out.println(f);
5
}

Ans.
1
int f = 1, i = 1;
2
while (i <= 5) {
3
f *= i;
4
System.out.println(f);
5
i++;
6
}

(j) In the program given below, state the name and the value of the
(i) method argument or argument variable
(ii) class variable
(iii) local variable
(iv) instance variable 
1
class myClass {
2

3
static int x = 7;
4
int y = 2;
5

6
public static void main(String args[]) {
7
myClass obj = new myClass();
8
System.out.println(x);
9
obj.sampleMethod(5);
10
int a = 6;
11
System.out.println(a);
12
}
13

14
void sampleMethod(int n) {
15
System.out.println(n);
16
System.out.println(y);
17
}
18
}

Ans. (i) name = n value =5
(ii) name = y value = 7
(iii) name = a value = 6
(iv) name = obj value = new MyClass()

SECTION B (60 MARKS)

Attempt any four questions from this Section.
The answers in this Section should consist of the Programs in either Blue J environment or any program environment with Java as the base. Each program should be written using Variable descriptions/Mnemonic Codes so that the logic of the program is clearly depicted.
Flow-Charts and Algorithms are not required.

Question 4

Define a class called Library with the following description:
Instance variables/data members:
Int acc_num – stores the accession number of the book
String title – stores the title of the book stores the name of the author
Member Methods:
(i) void input() – To input and store the accession number, title and author.
(ii)void compute – To accept the number of days late, calculate and display and fine charged at the rate of Rs.2 per day.
(iii) void display() To display the details in the following format:
Accession Number Title Author
Write a main method to create an object of the class and call the above member methods. [ 15]

Ans.
1
public class Library {
2

3
int acc_num;
4
String title;
5
String author;
6

7
public void input() throws IOException {
8
9
System.out.print(“Enter accession number: “);
10
11
System.out.print(“Enter title: “);
12
13
System.out.print(“Enter author: “);
14
15
}
16

17
public void compute() throws IOException {
18
19
System.out.print(“Enter number of days late: “);
20
21
int fine = 2 * daysLate;
22
System.out.println(“Fine is Rs ” + fine);
23
}
24

25
public void display() {
26
System.out.println(“Accession Number\tTitle\tAuthor”);
27
System.out.println(acc_num + “\t” + title + “\t” + author);
28
}
29

30
public static void main(String[] args) throws IOException {
31
Library library = new Library();
32
library.input();
33
library.compute();
34
library.display();
35
}
36
}

Question 5

Given below is a hypothetical table showing rates of Income Tax for male citizens below the age of 65 years:
Taxable Income (TI) in     Income Tax in
Does not exceed 1,60,000     Nil
Is greater than 1,60,000 and less than or equal to 5,00,000     ( TI – 1,60,000 ) * 10%
Is greater than 5,00,000 and less than or equal to 8,00,000     [ (TI – 5,00,000 ) *20% ] + 34,000
Is greater than 8,00,000     [ (TI – 8,00,000 ) *30% ] + 94,000

Write a program to input the age, gender (male or female) and Taxable Income of a person.If the age is more than 65 years or the gender is female, display “wrong category*.
If the age is less than or equal to 65 years and the gender is male, compute and display the Income Tax payable as per the table given above. 
Ans.
1
import java.util.Scanner;
2

3
public class IncomeTax {
4

5
public static void main(String[] args) {
6
Scanner scanner = new Scanner(System.in);
7
System.out.print(“Enter age: “);
8
int age = scanner.nextInt();
9
System.out.print(“Enter gender: “);
10
String gender = scanner.next();
11
System.out.print(“Enter taxable income: “);
12
int income = scanner.nextInt();
13
if (age > 65 || gender.equals(“female”)) {
14
System.out.println(“Wrong category”);
15
} else {
16
double tax;
17
if (income <= 160000) {                 tax = 0;             } else if (income > 160000 && income <= 500000) {                 tax = (income – 160000) * 10 / 100;             } else if (income >= 500000 && income <= 800000) {
18
tax = (income – 500000) * 20 / 100 + 34000;
19
} else {
20
tax = (income – 800000) * 30 / 100 + 94000;
21
}
22
System.out.println(“Income tax is ” + tax);
23
}
24
}
25
}

Question 6

Write a program to accept a string. Convert the string to uppercase. Count and output the number of double letter sequences that exist in the string.
Sample Input: “SHE WAS FEEDING THE LITTLE RABBIT WITH AN APPLE
Sample Output: 4 [ 15]

Ans.
1
import java.util.Scanner;
2

3
public class StringOperations {
4

5
public static void main(String[] args) {
6
Scanner scanner = new Scanner(System.in);
7
System.out.print(“Enter a String: “);
8
String input = scanner.nextLine();
9
input = input.toUpperCase();
10
int count = 0;
11
for (int i = 1; i < input.length(); i++) {
12
if (input.charAt(i) == input.charAt(i – 1)) {
13
count++;
14
}
15
}
16
System.out.println(count);
17
}
18
}

Question 7

Design a class to overload a function polygon() as follows:
(i) void polygon(int n, char ch) : with one integer argument and one character type argument that draws a filled square of side n using the character stored in ch.
(ii) void polygon(int x, int y) : with two integer arguments that draws a filled rectangle of length x and breadth y, using the symbol ‘@’
(iii)void polygon( ) : with no argument that draws a filled triangle shown below.

Example:
(i) Input value of n=2, ch=’O’
Output:
OO
OO
(ii) Input value of x=2, y=5
Output:
@@@@@
@@@@@
(iii) Output:
*
**
*** 

Ans.
1
2

3
public void polygon(int n, char ch) {
4
for (int i = 1; i <= n; i++) {
5
for (int j = 1; j <= n; j++) {
6
System.out.print(ch);
7
}
8
System.out.println();
9
}
10
}
11

12
public void polygon(int x, int y) {
13
for (int i = 1; i <= x; i++) {
14
for (int j = 1; j <= y; j++) {
15
System.out.print(“@”);
16
}
17
System.out.println();
18
}
19
}
20

21
public void polygon() {
22
for (int i = 1; i <= 3; i++) {
23
for (int j = 1; j <= i; j++) {
24
System.out.print(“*”);
25
}
26
System.out.println();
27
}
28
}
29
}

Question 8

Using the switch statement, writw a menu driven program to:
(i) Generate and display the first 10 terms of the Fibonacci series 0,1,1,2,3,5….The first two Fibonacci numbers are 0 and 1, and each subsequent number is the sum of the previous two.
(ii)Find the sum of the digits of an integer that is input.
Sample Input: 15390
Sample Output: Sum of the digits=18
For an incorrect choice, an appropriate error message should be displayed 

Ans.
1
import java.util.Scanner;
2

3
4

5
public static void main(String[] args) {
6
Scanner scanner = new Scanner(System.in);
7
8
System.out.println(“1. Fibonacci Sequence”);
9
System.out.println(“2. Sum of Digits”);
10
System.out.print(“Enter choice: “);
11
int choice = scanner.nextInt();
12
switch (choice) {
13
case 1:
14
int a = 0;
15
int b = 1;
16
System.out.print(“0 1 “);
17
for (int i = 3; i <= 10; i++) {                     int c = a + b;                     System.out.print(c + ” “);                     a = b;                     b = c;                 }                 break;             case 2:                 System.out.print(“Enter a number: “);                 int num = scanner.nextInt();                 int sum = 0;                 while (num > 0) {
18
int rem = num % 10;
19
sum = sum + rem;
20
num = num / 10;
21
}
22
System.out.println(“Sum of digits is ” + sum);
23
break;
24
default:
25
System.out.println(“Invalid Choice”);
26
}
27
}
28
}

Question 9

Write a program to accept the names of 10 cities in a single dimension string array and their STD (Subscribers Trunk Dialing) codes in another single dimension integer array. Search for a name of a city input by the user in the list. If found, display “Search Successful” and print the name of the city along with its STD code, or else display the message “Search Unsuccessful, No such city in the list’. 

Ans.
1
import java.util.Scanner;
2

3
public class Cities {
4

5
public static void main(String[] args) {
6
Scanner scanner = new Scanner(System.in);
7
String[] cities = new String;
8
int[] std = new int;
9
for (int i = 0; i < 10; i++) {
10
System.out.print(“Enter city: “);
11
cities[i] = scanner.next();
12
System.out.print(“Enter std code: “);
13
std[i] = scanner.nextInt();
14
}
15
System.out.print(“Enter city name to search: “);
16
String target = scanner.next();
17
boolean searchSuccessful = false;
18
for (int i = 0; i < 10; i++) {
19
if (cities[i].equals(target)) {
20
System.out.println(“Search successful”);
21
System.out.println(“City : ” + cities[i]);
22
System.out.println(“STD code : ” + std[i]);
23
searchSuccessful = true;
24
break;
25
}
26
}
27
if (!searchSuccessful) {
28
System.out.println(“Search Unsuccessful, No such city in the list”);
29
}
30
}
31
}