Home HTML Data Types DOM JavaScript JS Debugging

College Board Big Idea 1

Identifying and Correcting Errors (Unit 1.4)

Become familiar with types of errors and strategies for fixing them

  • Review CollegeBoard videos and take notes on blog
  • Complete assigned MCQ questions if applicable

Code Segments

Practice fixing the following code segments!

Segment 1: Alphabet List

Intended behavior: create a list of characters from the string contained in the variable alphabet

Code:

%%js

var alphabet = "abcdefghijklmnopqrstuvwxyz";
var alphabetList = [];

for (var i = 0; i < 10; i++) {
	alphabetList.push(alphabet[i]);
}

console.log(alphabetList);
<IPython.core.display.Javascript object>

What I Changed

I changed the target where the push function is outputting the numbers into the console. Instead of [i], which is number corresponding with each letter, I specified it by adding (alphabet to [i]).

Segment 2: Numbered Alphabet

Intended behavior: print the number of a given alphabet letter within the alphabet. For example:

"_" is letter number _ in the alphabet

Where the underscores (_) are replaced with the letter and the position of that letter within the alphabet (e.g. a=1, b=2, etc.)

Code:

%%js
//Original Code
// Copy your previous code to built alphabetList here
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var alphabetList = [];

let letterNumber = 5

for (var i = 0; i < alphabetList; i++) {
	if (i + 1 === letterNumber) {
		console.log(" is letter number 1" + letterNumber + "in the alphabet")
		break;
	}
}

// Should output:
// "e" is letter number 5 in the alphabet
<IPython.core.display.Javascript object>
%%js
// Copy your previous code to build alphabetList here
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var alphabetList = alphabet.split(""); // Convert the alphabet string to an array

let letterNumber = 5;

for (var i = 0; i < alphabetList.length; i++) {
	if (i + 1 === letterNumber) { // Adjusted the condition to compare with the correct letter number
		console.log(alphabetList[i] + " is letter number " + letterNumber + " in the alphabet");
		break; 
	}
}
<IPython.core.display.Javascript object>

What I Changed

I added the letternumber variable in the code so the number shows up in the message, converted the variable alphabet to an array so later in the output, it shows the letter e. Lastly, I added a break because everytime I ran the unedited program, it always runs forever and nothing shows up in the console.

Segment 3: Odd Numbers

Intended behavior: print a list of all the odd numbers below 10

Code:

%%js

let odds = [];
let i = 1;

while (i <= 10) {
  odds.push(i);
  i += 2;
}

console.log(odds);
<IPython.core.display.Javascript object>

What I Changed

I changed the variable to odds, then set i = 1 so it displays all the odd numbers accordingly.

BELOW NOT EDITED

The intended outcome is printing a number between 1 and 100 once, if it is a multiple of 2 or 5

  • What values are outputted incorrectly. Why? It is printing out 0 twice, which is not a multiple of 2 or 5. It did that because the sequence starts at 0.
  • Make changes to get the intended outcome.
%%js

var numbers = []
var newNumbers = []
var i = 1

while (i < 100) {
    numbers.push(i)
    i += 1
}
for (var i of numbers) {
    if (numbers[i] % 5 === 0)
        newNumbers.push(numbers[i])
    if (numbers[i] % 2 === 0)
        newNumbers.push(numbers[i])
}
if (100 % 5 === 0) {
    newNumbers.push(100);
}
console.log(newNumbers) 


<IPython.core.display.Javascript object>

Challenge

This code segment is at a very early stage of implementation.

  • What are some ways to (user) error proof this code?
  • The code should be able to calculate the cost of the meal of the user

Hint:

  • write a “single” test describing an expectation of the program of the program
  • test - input burger, expect output of burger price
  • run the test, which should fail because the program lacks that feature
  • write “just enough” code, the simplest possible, to make the test pass

Then repeat this process until you get program working like you want it to work.

%%js

var menu =  {"burger": 3.99,
         "fries": 1.99,
         "drink": 0.99}
var total = 0

//shows the user the menu and prompts them to select an item
console.log("Menu")
for (var item in menu) {
    console.log(item + "  $" + menu[item].toFixed(2)) //why is toFixed used?
}
//ideally the code should support mutliple items
var item = "burger"

//code should add the price of the menu items selected by the user 
console.log(total)

Hacks

  • Fix the errors in the first three segments in this notebook and say what you changed in the code cell under “What I Changed” (Challenge is optional)