Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Similar documents
Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Page 1 of 16. Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Page 1 of 16. Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Systems Programming. Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid

Page 1 of 16. Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

SampleApp.java. Page 1

CSIS 10A Assignment 7 SOLUTIONS

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

The Islamic University Gaza Department of Electrical & Computer Engineering. Midterm Exam Spring 2012 Computer Programming II (Java) ECOM 2324

COMP16121 Sample Code Lecture 1

17 GUI API: Container 18 Hello world with a GUI 19 GUI API: JLabel 20 GUI API: Container: add() 21 Hello world with a GUI 22 GUI API: JFrame: setdefau

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Goals. Lecture 7 More GUI programming. The application. The application D&D 12. CompSci 230: Semester JFrame subclass: ListOWords

Dr. Hikmat A. M. AbdelJaber

Queen s University Faculty of Arts and Science School of Computing CISC 124 Final Examination December 2004 Instructor: M. Lamb

CMP 326 Midterm Fall 2015

CSCI 201L Midterm Written Summer % of course grade

Building a GUI in Java with Swing. CITS1001 extension notes Rachel Cardell-Oliver

DM503 Programming B. Peter Schneider-Kamp.

Overview. Lecture 7: Inheritance and GUIs. Inheritance. Example 9/30/2008

Graphical User Interfaces in Java - SWING

Midterm assessment - MAKEUP Fall 2010

CSCI 201L Midterm Written SOLUTION Summer % of course grade

Final Examination Semester 2 / Year 2010

Example: Building a Java GUI

Datenbank-Praktikum. Universität zu Lübeck Sommersemester 2006 Lecture: Swing. Ho Ngoc Duc 1

1.00/ Introduction to Computers and Engineering Problem Solving. Quiz 2 / November 5, 2004

Example: Building a Java GUI

Object-Oriented Software Engineering Re-exam, 2012 (Also Object-Oriented Analysis, Design and Programming, Re-exam, 2012)

CS 134 Programming Exercise 7:

Java Programming Lecture 6

Swing I CHAPTER EVENT-DRIVEN PROGRAMMING 921 Events and Listeners 921

Swing I Event-Driven Programming Buttons, Events, and Other Swing Basics Containers and Layout Managers 946

Multiple Choice Questions: Identify the choice that best completes the statement or answers the question. (15 marks)

Queens College, CUNY Department of Computer Science. CS 212 Object-Oriented Programming in Java Practice Exam 2. CS 212 Exam 2 Study Guide

RAIK 183H Examination 2 Solution. November 10, 2014

Starting Out with Java: From Control Structures Through Objects Sixth Edition

Introduction to Graphical User Interfaces (GUIs) Lecture 10 CS2110 Fall 2008

CMP-326 Exam 2 Spring 2018 Solutions Question 1. Version 1. Version 2

Window Interfaces Using Swing Objects

Window Interfaces Using Swing Objects

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

UTM CSC207: Midterm Examination October 28, 2011

69 Section 7: Example:Single times table with exception catching 70 Aim 74 Single times table with exception catching

CS Exam 3 - Spring 2010

Introduction. Introduction

Example 3-1. Password Validation

Graphical User Interface

Object-Oriented Software Engineering (Re-exam for Object-Oriented Analysis, Design and Programming)

Midterm Test II Object Oriented Programming in Java Computer Science, University of Windsor Fall 2014 Time 2 hours. Answer all questions

Java Never Ends MULTITHREADING 958 Example: A Nonresponsive GUI 959

To gain experience using GUI components and listeners.

Parts of a Contract. Contract Example. Interface as a Contract. Wednesday, January 30, 13. Postcondition. Preconditions.

Java Never Ends CHAPTER MULTITHREADING 1100 Example: A Nonresponsive GUI 1101

APPENDIX. public void cekroot() { System.out.println("nilai root : "+root.data); }

Hanley s Survival Guide for Visual Applications with NetBeans 2.0 Last Updated: 5/20/2015 TABLE OF CONTENTS

Multimedia Programming

Final Examination Semester 2 / Year 2011

CS Exam 3 - Spring 2010

JRadioButton account_type_radio_button2 = new JRadioButton("Current"); ButtonGroup account_type_button_group = new ButtonGroup();

State Application Using MVC

This exam is closed textbook(s) and closed notes. Use of any electronic device (e.g., for computing and/or communicating) is NOT permitted.

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch

COMP16121 Notes on Mock Exam Questions

encompass a group of features for building Graphical User Interfaces (GUI).

Part I: Learn Common Graphics Components

AppBisect > PrBisect > class Functie. AppBisect > PrBisect > class Punct. public class Functie { double x(double t) { return t;

Agenda. Container and Component

This exam is open book. Each question is worth 3 points.

CS 1316 Exam 3 Fall 2009

Graphic User Interfaces. - GUI concepts - Swing - AWT

Final Exam CS 251, Intermediate Programming December 13, 2017

COURSE DESCRIPTION. John Lewis and William Loftus; Java: Software Solutions; Addison Wesley

Calculator Class. /** * Create a new calculator and show it. */ public Calculator() { engine = new CalcEngine(); gui = new UserInterface(engine); }

// autor igre Ivan Programerska sekcija package mine;

Lecture 5: Java Graphics

University of Cape Town Department of Computer Science Computer Science CSC1017F

RAIK 183H Examination 2 Solution. November 11, 2013

DAFTAR LAMPIRAN. Source Code Java Aplikasi Keyword to Image Renamer Split

Answer on question #61311, Programming & Computer Science / Java

MIT AITI Swing Event Model Lecture 17

Chapter 13 Lab Advanced GUI Applications

GUI (Graphic User Interface) Programming. Part 2 (Chapter 8) Chapter Goals. Events, Event Sources, and Event Listeners. Listeners

Building Java Programs Bonus Slides

Transcription:

SOLUTION HAND IN Answers Are Recorded on Question Paper QUEEN'S UNIVERSITY SCHOOL OF COMPUTING CISC212, FALL TERM, 2008 FINAL EXAMINATION 7pm to 10pm, 17 DECEMBER 2008, Grant Hall Instructor: Alan McLeod If the instructor is unavailable in the examination room and if doubt exists as to the interpretation of any problem, the candidate is urged to submit with the answer paper a clear statement of any assumptions made. Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written. Please write your answers in the boxes provided. Extra space is available on the last page of the exam. The back of any page can be used for rough work. This exam is three hours long and refers exclusively to the use of the Java language. Comments are not required in the code you write. For full marks, code must be efficient as well as correct. This is a closed book exam. No computers or calculators are allowed. Student Number: Problem 1: / 10 Problem 4: / 40 Problem 2: / 10 Problem 5: / 10 Problem 3: / 10 TOTAL: / 80

Student Number: Page 2 of 17 Problem 1) [10 marks] In lecture we found that the machine epsilon for a float is 5.9604645e-8. Also, Float.MAX_VALUE is 3.4028235e38. Write the output of the following program for each println() statement. Remember that a float literal has a capital F appended to the number. public class Problem1 { public static void main(string[] args) { System.out.println(1.0F / 0.0F); System.out.println(0.0F / 0.0F); Infinity NaN System.out.println(2.0F + Float.MAX_VALUE > Float.MAX_VALUE); false System.out.println(Math.sqrt(-4.0F)); System.out.println(1.0F + 6.0E-8 == 1.0F); NaN false System.out.println (2.0F / 3.0F - 0.666666666661F == 0.0F); true System.out.println(1.0F + 1.0e-12F == 1.0F); System.out.println(1.0F - 1.0e-12F == 1.0F); System.out.println(1.0 + 1.0e-12 == 1.0); System.out.println(1.0e12F + 1.0F == 1.0F); true true false false // end main // end Problem1

Student Number: Page 3 of 17 Problem 2) [10 marks] The main method for this program is on the next page. In the box provided on the next page, complete the console output of this program. The output of the first call to printtwod() is given so you can see how this method works. public class Problem2 { public static int attr = 0; public static int method1(int[][] twod, int[] oned, int nod) { int max = 0; for(int i = 0; i < twod.length; i++) if (sumrow(twod[i]) > max) { max = sumrow(twod[i]); nod = i; // end if for(int i = 0; i < twod[nod].length; i++) { oned[i] = twod[nod][i]; twod[nod][i] = 0; // end for return max; // end method1 public static int sumrow(int[] oned) { int sum = 0; for(int i = 0; i < oned.length; i++) sum = sum + oned[i]; attr = attr + sum; return sum; // end sumrow public static void printoned(int[] oned) { for(int i = 0; i < oned.length; i++) System.out.print(oneD[i] + " "); // end printoned public static void printtwod(int[][] twod) { for(int i = 0; i < twod.length; i++) { printoned(twod[i]); System.out.print("\n"); // end for // end printtwod

Student Number: Page 4 of 17 Problem 2, Cont.) public static void main(string[] args) { int[][] test2d = {{0, 0, 0, 1, {0, 0, 1, 1, {1, 1, 1, 1, {1, 0, 1, 1; int[] test1d = {2, 1, 2, 1; int anum = 0; printtwod(test2d); // This output is supplied System.out.println(method1(test2D, test1d, anum)); printtwod(test2d); printoned(test1d); System.out.println("\naNum = " + anum); System.out.println("attr = " + attr); // end main // end Problem2 Complete the output from here down: 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 4 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 anum = 0 attr = 17

Student Number: Page 5 of 17 Problem 3) [10 marks] In lecture we saw a summation example that used one of the Ramanujan formulae. This summation should converge exactly to zero. It does not, if coded as shown on the next page, because the summation is storing small differences between two relatively large numbers. 0 k 0 1 or,0 2 2k 1 2k 1 1 k 2 1 0! 3 3 2 3 1! k! 3 5 2 3 5 2! 3 7 3!... You need to change how the method on the next page operates so that the sum will properly converge to zero. Delete code by crossing it out if necessary, and add code where needed. Do not add any other methods. 7 2 3

Student Number: Page 6 of 17 Problem 3, Cont.) public static double summation () { int k = 0; double sum = 0; double prevsum; double kfactorial = 1; int sign = 1; int twokplusone, twokplusonesquared, twokplusonecubed; double term; double negsum = 0; double possum = 0; double prevnegsum; double prevpossum; do { prevnegsum = negsum; prevpossum = possum; prevsum = sum; twokplusone = 2 * k + 1; twokplusonesquared = twokplusone * twokplusone; twokplusonecubed = twokplusonesquared * twokplusone; if (k > 0) kfactorial *= (double)k; term = (twokplusonesquared + twokplusonecubed) / kfactorial; if (sign > 0) possum += term; else negsum += term sum = sum + sign * term; sign = -sign; k++; while (!(negsum == prevnegsum && possum == prevpossum)); while (sum!= prevsum); return sum; return possum negsum; // end summation

Student Number: Page 7 of 17 Problem 4) [40 marks] For this problem you need to build a partial hierarchy of classes to hold information about fuels. Here is a verbal description of the hierarchy containing all the required class names in bold: Diesel is a Fuel Gasoline is a Fuel FuelOil is a Fuel BronzeGas is a Gasoline GoldGas is a Gasoline You must also write and use an Exception class called IllegalFuel. All Fuels have the following attributes: priceperlitre Legal range is $0.50 to $2.00 per litre, exclusive. sourceid A string name of the fuel s vendor. Cannot be empty or null. In addition, a Gasoline object also has an attribute, ethanolcontent, which must lie between 0 and 20%, inclusive. Each attribute must have an accessor, but no mutators are required. Objects must have a tostring() method, but do not need equals(), compareto() or clone() methods. The Fuel class must contain the following abstract method declaration: public abstract double getcostforweight(double weightkg); A concrete implementation of this method returns the cost for a supplied weight of the fuel. Use the following densities for your calculations (temperature dependencies are ignored!): Fuel: Diesel Bronze Gas Gold Gas Fuel Oil Density (kg/litre) 0.85 0.72 0.78 0.893 Consider carefully where you declare your attributes and methods to minimize the volume of code you must write. On the next page is a complete program listing that illustrates how this hierarchy must behave. Write your classes on the following pages. You will see a partial class header like public class Gasoline for each object that you must complete. Finish the headers and write the balance of the code for each object following that class header.

Student Number: Page 8 of 17 Problem 4, Cont., Demo Code) public class TestFuelHierarchy { public static void main(string[] args) { Fuel fail1, fail2; try { double illegalprice = 3.00; // dollars per litre! fail1 = new BronzeGas(illegalPrice, "Esso", 10); catch (IllegalFuel e) { System.out.println(e.getMessage()); // end test1 try { String illegalsource = ""; // empty string fail2 = new BronzeGas(0.762, illegalsource, 10); catch (IllegalFuel e) { System.out.println(e.getMessage()); // end test2 Fuel[] testfuels = new Fuel[100]; // For simplicity all instantiations are in a single try/catch block. // Rather poor form! But all are legal. try { testfuels[0] = new Diesel(1.016, "Petro1"); testfuels[1] = new BronzeGas(0.817, "Petro1", 0); testfuels[2] = new BronzeGas(0.796, "ElCheapo", 10); testfuels[3] = new GoldGas(0.911, "Petro2", 0); testfuels[4] = new FuelOil(0.876, "HomeHeatingCo"); catch (IllegalFuel e) { System.out.println(e.getMessage()); for(int i = 0; i < 5; i++) { System.out.println("\n" + testfuels[i]); System.out.printf("Cost of 20 kg: $%.2f", testfuels[i].getcostforweight(20)); // end for // end main // end TestFuelHiearchy /* OUTPUT: Illegal price: 3.0 Illegal source ID. Diesel fuel, source: Petro1, $1.016 per litre. Cost of 20 kg: $23.91 Bronze gasoline, with 0.0% ethanol, source: Petro1, $0.817 per litre. Cost of 20 kg: $22.69 Bronze gasoline, with 10.0% ethanol, source: ElCheapo, $0.796 per litre. Cost of 20 kg: $22.11 Gold gasoline, with 0.0% ethanol, source: Petro2, $0.911 per litre. Cost of 20 kg: $23.36 Fuel oil, source: HomeHeatingCo, $0.876 per litre. Cost of 20 kg: $19.62 */

Student Number: Page 9 of 17 Problem 4, Cont., Your Code) public abstract class Fuel { private double priceperlitre; private String sourceid; public Fuel (double ppl, String source) throws IllegalFuel { if (ppl < 0.5 ppl > 2.0) throw new IllegalFuel("Illegal price: " + ppl); if (source == null source.length() == 0) throw new IllegalFuel("Illegal source ID."); priceperlitre = ppl; sourceid = source; public double getpriceperlitre() { return priceperlitre; public String getsourceid() { return sourceid; public String tostring() { return "source: " + sourceid + ", $" + priceperlitre + " per litre."; public double getcostforweight(double sg, double weightkg) { double volume = weightkg / sg; return priceperlitre * volume; public abstract double getcostforweight(double weightkg); // end Fuel

Student Number: Page 10 of 17 Problem 4, Cont., Your Code) public class IllegalFuel extends Exception { public IllegalFuel() { super("attempt to create an illegal Fuel."); public IllegalFuel(String msg) { super(msg); public abstract class Gasoline extends Fuel { private double ethanolcontent; public Gasoline(double ppl, String source, double ethanol) throws IllegalFuel { super(ppl, source); if (ethanol < 0 ethanol > 20) throw new IllegalFuel("Illegal ethanol level."); ethanolcontent = ethanol; public double getethanolcontent() { return ethanolcontent; public String tostring() { return "gasoline, with " + ethanolcontent + "% ethanol, " + super.tostring(); // end Gasoline

Student Number: Page 11 of 17 Problem 4, Cont., Your Code) public class BronzeGas extends Gasoline { public BronzeGas(double ppl, String source, double ethanol) throws IllegalFuel { super(ppl, source, ethanol); public String tostring() { return "Bronze " + super.tostring(); public double getcostforweight(double weightkg) { return getcostforweight(0.72, weightkg); // end BronzeGas public class GoldGas extends Gasoline { public GoldGas(double ppl, String source, double ethanol) throws IllegalFuel { super(ppl, source, ethanol); public String tostring() { return "Gold " + super.tostring(); public double getcostforweight(double weightkg) { return getcostforweight(0.78, weightkg); // end GoldGas

Student Number: Page 12 of 17 Problem 4, Cont., Your Code) public class Diesel extends Fuel { public Diesel(double ppl, String source) throws IllegalFuel { super(ppl, source); public String tostring() { return "Diesel fuel, " + super.tostring(); public double getcostforweight(double weightkg) { return getcostforweight(0.85, weightkg); // end Diesel public class FuelOil extends Fuel { public FuelOil(double ppl, String source) throws IllegalFuel { super(ppl, source); public String tostring() { return "Fuel oil, " + super.tostring(); public double getcostforweight(double weightkg) { return getcostforweight(0.893, weightkg); // end FuelOil

Student Number: Page 13 of 17 Problem 5) [10 marks] Here is a complete GUI program, sprawling over this and the next two pages: import javax.swing.jframe; import javax.swing.jbutton; import javax.swing.jpanel; import javax.swing.jlabel; import javax.swing.jtextfield; import java.awt.event.actionlistener; import java.awt.event.actionevent; import java.awt.borderlayout; import java.awt.flowlayout; import java.awt.font; public class Problem5 extends JFrame { private final int WINDOW_WIDTH = 300; private final int WINDOW_HEIGHT = 140; private JTextField txtwidth = new JTextField(8); private JTextField txtheight = new JTextField(8); private JLabel lblwidtherror = new JLabel("Illegal Width!"); private JLabel lblheighterror = new JLabel("Illegal Height!"); private JLabel lblresult = new JLabel("Area ="); public Problem5() { super(); setlayout(new BorderLayout()); settitle("problem 5"); setdefaultcloseoperation(jframe.exit_on_close); setsize(window_width, WINDOW_HEIGHT); setresizable(false); setlocation(200, 200); Font myfont = new Font("Arial", Font.BOLD, 16); JPanel toppanel = new JPanel(new FlowLayout()); JPanel centrepanel = new JPanel(new FlowLayout()); JLabel lblwidth = new JLabel("Width:"); lblwidth.setfont(myfont); JLabel lblheight = new JLabel("Height:"); lblheight.setfont(myfont); txtwidth.setfont(myfont); txtheight.setfont(myfont); lblwidtherror.setfont(myfont); lblwidtherror.setvisible(false); lblheighterror.setfont(myfont); lblheighterror.setvisible(false);

Student Number: Page 14 of 17 Problem 5, Cont.) toppanel.add(lblwidth); toppanel.add(txtwidth); toppanel.add(lblwidtherror); centrepanel.add(lblheight); centrepanel.add(txtheight); centrepanel.add(lblheighterror); add(toppanel, BorderLayout.NORTH); add(centrepanel, BorderLayout.CENTER); JPanel bottompanel = new JPanel(new BorderLayout()); lblresult.setfont(myfont); JButton calculatebutton = new JButton("Calculate"); calculatebutton.setfont(myfont); calculatebutton.addactionlistener(new CalculateListener()); JButton exitbutton = new JButton("Close"); exitbutton.setfont(myfont); exitbutton.addactionlistener(new EndingListener()); bottompanel.add(calculatebutton, BorderLayout.WEST); bottompanel.add(lblresult, BorderLayout.CENTER); bottompanel.add(exitbutton, BorderLayout.EAST); add(bottompanel, BorderLayout.SOUTH); // end Problem5 constructor private class EndingListener implements ActionListener { public void actionperformed(actionevent e) { System.exit(0); // end actionperformed method // end EndingListener class

Student Number: Page 15 of 17 Problem 5, Cont.) private class CalculateListener implements ActionListener { public void actionperformed(actionevent e) { boolean widthok, heightok; double width = 0, height = 0, area; lblwidtherror.setvisible(false); lblheighterror.setvisible(false); lblresult.settext(""); widthok = true; try { width = Double.parseDouble(txtWidth.getText()); if (width <= 0) widthok = false; catch(numberformatexception except) { widthok = false; heightok = true; try { height = Double.parseDouble(txtHeight.getText()); if (height <= 0) heightok = false; catch(numberformatexception except) { heightok = false; if (!widthok) lblwidtherror.setvisible(true); if (!heightok) lblheighterror.setvisible(true); if (widthok && heightok) { area = width * height; lblresult.settext("area = " + area); // end actionperformed method // end CalculateListener class public static void main(string[] args) { Problem5 gui = new Problem5(); gui.setvisible(true); // end main // end Problem5

Student Number: Page 16 of 17 Problem 5, Cont.) Sketch the appearance of this window for each of the three following cases. Use the following key to draw your components: A Label: A Text Box A Button a) As the window first appears, without any user entry or actions: b) If the user enters 2 for the width and 3 for the height and clicks on Calculate : c) If the user enters Happy for the width and Holidays! for the height and clicks on Calculate :