CISC103 E02 07F Short Answer—Reference Handout

JavaScript calculations based on HTML forms

(References: lab08, lab09, lectures 10/30, 11/01, 11/06)

Suppose that we want to build a web page that can do a simple calculation—how much tickets to the upcoming Jon Stewart performance will cost. Tickets for students are $30 each, and tickets for others are $65 each.

Here is the form we will use:

We might first develop a JavaScript function that can take the number of student tickets
and the number of other tickets, and determine the total price.

For example, here is a "stub" for the ticketCalc function:

// ticketCalcStub.js P. Conrad for CISC103 Midterm Exam 2, 11/08/2007
// define a stub for a function that determines the price of a certain
// number of tickets to the Jon Stewart concert.
//
// Consumes:
// numST a number, how many student tickets you want ($30 each)
// numOT a number, how many other tickets you want ($65 each)
// Produces:
// totalPrice: the total price for all your tickets
// Examples:
// js> ticketCalc(1,0)
// 30
// js> ticketCalc(0,1)
// 65
// js> ticketCalc(0,2)
// 130
// js> ticketCalc(2,1)
// 125

function ticketCalc(numST, numOT) { return (-42); }


And here is a test script, and the result of running the test script on both a stub function, and a correct function:

// testTicketCalc.js   test script for ticketCalc.js
// P. Conrad for CISC103  Midterm Exam 2, 11/08/2007

// test the function ticketCalc()
function testTicketCalc() {

  //=======================================
  // define the tolerance 
  //=======================================
  
  // Tolerance is small because calculation is simple--
// because we expect results to be very accurate var tolerance = 0.0001; //=================== // Run the tests //=================== // Test 1 var expected = 125; var actual = ticketCalc(2,1); var diff = Math.abs(expected-actual); if (diff < tolerance) { print('test 1 passed'); } else { print('test 1 failed'); print('expected=' + expected); print('actual=' + actual); } // Test 2 expected = 160; actual = ticketCalc(1,2); diff = Math.abs(expected-actual); if (diff < tolerance) { print('test 2 passed'); } else { print('test 2 failed'); print('expected=' + expected); print('actual=' + actual); } } // function testTicketCalc
js> load("ticketCalcStub.js");
js> load("testTicketCalc.js"); 
js> testTicketCalc()
test 1 failed
expected=125
actual=-42
test 2 failed
expected=160
actual=-42
js> 
js> load("ticketCalc.js");     
js> load("testTicketCalc.js");
js> testTicketCalc()
test 1 passed
test 2 passed
js> ticketCalc(0,1)
65
js> ticketCalc(1,0) 
30
js> ticketCalc(2,0) 
60
js> ticketCalc(0,2) 
130
js> ticketCalc(1,2)  
160
js> ticketCalc(2,1) 
125
js>