From 53f918858da8aa6bd98ced053e9715578f987b82 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sat, 11 Oct 2025 22:14:19 +0100 Subject: [PATCH 01/21] new work space in vscode --- Sprint-1/1-key-exercises/1-count.js | 4 ++++ Sprint-1/1-key-exercises/2-initials.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6..a5f73d281 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,7 @@ count = count + 1; // Line 1 is a variable declaration, creating the count variable with an initial value of 0 // Describe what line 3 is doing, in particular focus on what = is doing +Answer +// Line 3; when we the right side first count in the right side is considerd as 0 so 0+1 will be 1. +// But the = sign does not mean the mathimatical equal, its function is to take the result on the right and store it on the left. +// Therfore if we write the same code in next line the result is not one but 2 \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index 47561f617..4a09edec5 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,7 @@ let lastName = "Johnson"; // Declare a variable called initials that stores the first character of each string. // This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. -let initials = ``; +let initials = `${firstName[0]}${middleName[0]}${lastName[0]}`; // https://www.google.com/search?q=get+first+character+of+string+mdn From a825bf7a5a914d02b03fe59a2c255781d0c75cd4 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Mon, 13 Oct 2025 07:49:27 +0100 Subject: [PATCH 02/21] correctin and updating the exercise --- Sprint-1/1-key-exercises/1-count.js | 6 +++--- Sprint-1/1-key-exercises/3-paths.js | 6 ++++-- Sprint-1/1-key-exercises/4-random.js | 19 +++++++++++++++++++ Sprint-1/2-mandatory-errors/0.js | 4 ++-- Sprint-1/2-mandatory-errors/1.js | 3 ++- Sprint-1/2-mandatory-errors/2.js | 3 ++- 6 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index a5f73d281..684b66fcb 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -5,6 +5,6 @@ count = count + 1; // Line 1 is a variable declaration, creating the count variable with an initial value of 0 // Describe what line 3 is doing, in particular focus on what = is doing Answer -// Line 3; when we the right side first count in the right side is considerd as 0 so 0+1 will be 1. -// But the = sign does not mean the mathimatical equal, its function is to take the result on the right and store it on the left. -// Therfore if we write the same code in next line the result is not one but 2 \ No newline at end of file +// Line 3; when we the right side first count in the right side is considered as 0 so 0+1 will be 1. +// But the = sign does not mean the mathematical equal, its function is to take the result on the right and store it on the left. +// Therefore if we write the same code in next line the result is not one but 2 \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28..cbe18ba20 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,7 +17,9 @@ console.log(`The base part of ${filePath} is ${base}`); // Create a variable to store the dir part of the filePath variable // Create a variable to store the ext part of the variable -const dir = ; -const ext = ; +const dir = filePath.slice(0, lastSlashIndex); +const lastDotIndex = base.lastIndexOf("."); +const ext = base.slice(lastDotIndex + 1); + // https://www.google.com/search?q=slice+mdn \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js index 292f83aab..526f7c468 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,3 +7,22 @@ const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; // Try breaking down the expression and using documentation to explain what it means // It will help to think about the order in which expressions are evaluated // Try logging the value of num and running the program several times to build an idea of what the program is doing + +// Answer + +// 1. +// The num in this scenario represent any integer between 1 and 100 + +// 2. +// Math.floor: rounds the number down to the nearest whole number which means it ignores the number to the right of the point. eg. 4.7=4 +// Math.random is a js code that returns any random number that is greater than or equal to 0 and less than 1 +//* is multiplication +// maximum is the maximum given number, in this case 100 +//- is a subtraction +// minimum is the minimum given number, in this case 1 +//(maximum - minimum +1) this is subtracting the minimum number from the maximum and add 1, in this case (100-1+1)=100 +//+ minimum: this turns the value by adding 1 to the whole equation. + +//3. + +console.log(num) diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f..65ad3030d 100644 --- a/Sprint-1/2-mandatory-errors/0.js +++ b/Sprint-1/2-mandatory-errors/0.js @@ -1,2 +1,2 @@ -This is just an instruction for the first activity - but it is just for human consumption -We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file +//This is just an instruction for the first activity - but it is just for human consumption +//We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js index 7a43cbea7..c3714c46a 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,5 @@ // trying to create an age variable and then reassign the value by 1 -const age = 33; +let age = 33; age = age + 1; +console.log(age) diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831..ae2731079 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,6 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? -console.log(`I was born in ${cityOfBirth}`); + const cityOfBirth = "Bolton"; +console.log(`I was born in ${cityOfBirth}`); From d873260b5e5316c20cc0360089ef83bc8f095770 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Wed, 15 Oct 2025 08:17:41 +0100 Subject: [PATCH 03/21] Answering each question with in the file by puting // to separate from the code --- Sprint-1/2-mandatory-errors/3.js | 10 +++++++ Sprint-1/2-mandatory-errors/4.js | 5 +++- .../1-percentage-change.js | 27 +++++++++++++++++++ .../3-mandatory-interpret/2-time-format.js | 7 +++++ Sprint-1/3-mandatory-interpret/3-to-pounds.js | 12 ++++++++- 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884d..54901d1d7 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -7,3 +7,13 @@ const last4Digits = cardNumber.slice(-4); // Then run the code and see what error it gives. // Consider: Why does it give this error? Is this what I predicted? If not, what's different? // Then try updating the expression last4Digits is assigned to, in order to get the correct value + +//Answer + +// This code is not working because slice() is working with "string" or "arrays" but not with numbers. and cardNumber is a number. +// So the error is "TypeError:cardNumber.slice is not a function"\ +// slice() didn't recognize the number as I expected before. + +const cardNumber = 4533787178994213; +const last4Digits = String(cardNumber).slice(-4); +console.log(last4Digits) diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 21dad8c5d..148952cbc 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,5 @@ const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; \ No newline at end of file +const 24hourClockTime = "08:53"; +// the 12 and 24 are changing position +const 24HourClockTime = "20:53"; +const 12hourClockTime = "08:53"; \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js index e24ecb8e1..4a1858990 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -13,10 +13,37 @@ console.log(`The percentage change is ${percentageChange}`); // a) How many function calls are there in this file? Write down all the lines where a function call is made +// There are five functions calls. +//carPrice.replaceAll(",", "") +//Number(carPrice.replaceAll(",", "")) +//priceAfterOneYear.replaceAll("," "") +//Number(priceAfterOneYear.replaceAll("," "")) +//console.log(`The percentage change is ${percentageChange}`) + // b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem? +// When I run the code the error is "syntaxError: missing ) after argument list. +// The error comes from line 5 +// The error occurs due to the missing coma between the two strings in the replaceAll() call. +// Add coma between the two strings "priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", ""));" + // c) Identify all the lines that are variable reassignment statements +// there are to lines that state variable reassignment +// carPrice = Number(carPrice.replaceAll(",", "")); +// priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); + // d) Identify all the lines that are variable declarations +// There are fore variable declarations (line 1, line 2, line 7, line 8) +// let carPrice = "10,000"; +// let priceAfterOneYear = "8,543"; +// const priceDifference = carPrice - priceAfterOneYear; +// const percentageChange = (priceDifference / carPrice) * 100; + + // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? + +// carprice at line 1 is a string in order to calculate for the next line of codes you have to change the string ti number. +// carPrice.replaceAll(",","")). delete the coma in between the number (e.g from "10,000" to "10000") +// number() change the string to number ("10000" to 10000) diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d239558..d2fa9711c 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -12,14 +12,21 @@ console.log(result); // For the piece of code above, read the code and then answer the following questions // a) How many variable declarations are there in this program? +// There are 6 variable declaration. "line1, line3, line4, line6, line7, line9" // b) How many function calls are there? +// There is only one function call in this program "console.log(result);" // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +// % is called remainder. There fore movieLength % 60 represents the remainder of the movie length after dividing by 60. // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +// totalMinutes are calculated by subtracting the remaining seconds from movie length and divided by 60 to get full minutes. this helps to get a number which divided by 60 with out reminder. // e) What do you think the variable result represents? Can you think of a better name for this variable? +// result represents the total length of the movie in the form of Hour: minute: second +// moveDurationFormatted can be a better name to replace result. // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +// Yes it works for all value. the only thing that is concerning is the validation of movieLength as the negative integer also gives value which is unrealistic. diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69..7934f9a8e 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -1,4 +1,4 @@ -const penceString = "399p"; +onst penceString = "399p"; const penceStringWithoutTrailingP = penceString.substring( 0, @@ -25,3 +25,13 @@ console.log(`£${pounds}.${pence}`); // To begin, we can start with // 1. const penceString = "399p": initialises a string variable with the value "399p" +// 2. const penceStringWithoutTrailingP = penceString.substring( 0, penceString.length - 1); +// This remove the p and left the string with only 399 +// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); +// this code make sure that the string has 3 character. since one pound is equal 100 pence. +// 4. const pounds = paddedPenceNumberString.substring( 0, paddedPenceNumberString.length - 2); +// This code takes the number leaving the last 2 digits "in this case it takes 3 and leave 99" +// 5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2) .padEnd(2, "0"); +// This code takes the last digit from the string and also make sure that it has only two digits this gives a "99" value. +// 6. console.log(`£${pounds}.${pence}`); +// his gives a result with £ sign and separated by . " in this case it gives £3.99 " From 872131a73f7e3b3179abb9706f7b578b52995822 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sat, 25 Oct 2025 15:28:02 +0100 Subject: [PATCH 04/21] solution for sprint 2 --- Sprint-2/1-key-errors/0.js | 22 +++++++++++++++---- Sprint-2/1-key-errors/1.js | 16 +++++++++++--- Sprint-2/1-key-errors/2.js | 11 +++++++++- Sprint-2/2-mandatory-debug/0.js | 11 ++++++++-- Sprint-2/2-mandatory-debug/1.js | 13 ++++++++--- Sprint-2/2-mandatory-debug/2.js | 20 +++++++++++++++-- Sprint-2/3-mandatory-implement/1-bmi.js | 7 ++++-- Sprint-2/3-mandatory-implement/2-cases.js | 6 +++++ Sprint-2/3-mandatory-implement/3-to-pounds.js | 11 ++++++++++ Sprint-2/4-mandatory-interpret/time-format.js | 6 +++++ Sprint-2/5-stretch-extend/format-time.js | 22 ++++++++++++++++++- 11 files changed, 127 insertions(+), 18 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a0..06d225c66 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,13 +1,27 @@ // Predict and explain first... // =============> write your prediction here + +// The code will capitalize the first word of the str which gives "Str" // call the function capitalise with a string input // interpret the error message and figure out why an error is occurring -function capitalise(str) { - let str = `${str[0].toUpperCase()}${str.slice(1)}`; - return str; -} +// The error occurs in line 13 and it says "SyntaxError: Identifier 'str' has already been declared" +// The error is informing us that the string str has already been declared in line 12 so we can not declare it again. + +//function capitalise(str) { +// let str = `${str[0].toUpperCase()}${str.slice(1)}`; +// return str; +//} // =============> write your explanation here + +// The code is written to capitalize the first letter of str which is expected to give the result Str. + // =============> write your new code here + +function capitalise(str) { + str = `${str[0].toUpperCase()}${str.slice(1)}`; + return str; +} +console.log(capitalise("str")) \ No newline at end of file diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index f2d56151f..4b783162f 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -2,19 +2,29 @@ // Why will an error occur when this program runs? // =============> write your prediction here +// This code is tend to be a code to convert decimal number in to %. I predict there will be an error because the call for the function has a bug. // Try playing computer with the example to work out what is going on -function convertToPercentage(decimalNumber) { +/*function convertToPercentage(decimalNumber) { const decimalNumber = 0.5; const percentage = `${decimalNumber * 100}%`; return percentage; -} +}/ -console.log(decimalNumber); +console.log(decimalNumber);*/ // =============> write your explanation here +// A syntaxError has been observed because the decimalNumber is already declared. +// if we delete line 10 anther error happen this time about calling the function in which decimalNumber is not defined in the global scope. // Finally, correct the code to fix the problem // =============> write your new code here +function convertToPercentage(decimalNumber) { + const percentage = `${decimalNumber * 100}%`; + + return percentage; +} + +console.log(convertToPercentage("0.5")); \ No newline at end of file diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index aad57f7cf..75b776f84 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -4,17 +4,26 @@ // this function should square any number but instead we're going to get an error // =============> write your prediction of the error here +/* There is a problem in the function parameter. we can not use number in parameter. +even though line 12 by it self has no coding problem but the num is not declared before.*/ +/* function square(3) { return num * num; } +*/ // =============> write the error message here - +/* unexpected number // =============> explain this error message here +we can not use number in a parameter so 3 is not used as identifier */ // Finally, correct the code to fix the problem // =============> write your new code here +function square(num) { + return num * num; +} +console.log(square("3")) diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index b27511b41..01b167f42 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,14 +1,21 @@ // Predict and explain first... // =============> write your prediction here +/*the function doesn't return any thing so there will be an error. */ -function multiply(a, b) { +/*function multiply(a, b) { console.log(a * b); } -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);*/ // =============> write your explanation here +/* As predicted the function does not return any thing. But the first call gives 320. and the second undefine. */ // Finally, correct the code to fix the problem // =============> write your new code here +function multiply(a, b) { + return a * b; +} + +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 37cedfbcf..4a234a779 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,13 +1,20 @@ // Predict and explain first... // =============> write your prediction here +/* The code will give us the sum of 10 and 32 which will be " The sum of 10 and 32 is 42" */ -function sum(a, b) { +/*function sum(a, b) { return; a + b; } -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);*/ // =============> write your explanation here +/* the call of the function gives undefine result. the reason for this is the semicolon after return which shouldn't be placed there. // Finally, correct the code to fix the problem -// =============> write your new code here +// =============> write your new code here */ +function sum(a, b) { + return a + b; +} + +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); \ No newline at end of file diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 57d3f5dc3..d16337c65 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -2,8 +2,12 @@ // Predict the output of the following code: // =============> Write your prediction here +/* I predict that the three call are giving +The last digit of 42 is 2 +The last digit of 105 is 5 +The last digit of 806 is 6 */ -const num = 103; +/*const num = 103; function getLastDigit() { return num.toString().slice(-1); @@ -12,13 +16,25 @@ function getLastDigit() { console.log(`The last digit of 42 is ${getLastDigit(42)}`); console.log(`The last digit of 105 is ${getLastDigit(105)}`); console.log(`The last digit of 806 is ${getLastDigit(806)}`); - + */ // Now run the code and compare the output to your prediction // =============> write the output here +/* The last digit of 42 is 3 + The last digit of 105 is 3 + The last digit of 806 is 3 */ // Explain why the output is the way it is // =============> write your explanation here +/* because the num is determined at fires and 103 is given to the num. as a result we see the same result.*/ // Finally, correct the code to fix the problem // =============> write your new code here +function getLastDigit(num) { + return num.toString().slice(-1); +} + +console.log(`The last digit of 42 is ${getLastDigit(42)}`); +console.log(`The last digit of 105 is ${getLastDigit(105)}`); +console.log(`The last digit of 806 is ${getLastDigit(806)}`); + // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 17b1cbde1..6cc7f80a1 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -14,6 +14,9 @@ // Then when we call this function with the weight and height // It should return their Body Mass Index to 1 decimal place -function calculateBMI(weight, height) { +function calculateBMI(weight, height) { + const bmi= weight/ (height*height) + return bmi.toFixed(1); // return the BMI of someone based off their weight and height -} \ No newline at end of file +} +console.log(calculateBMI(86,1.70)); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 5b0ef77ad..86e3f83cf 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,3 +14,9 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +function toUpperCase(text) { + return text.toUpperCase(); +} + +console.log(toUpperCase("hello there")); +console.log(toUpperCase("lord of the ring")); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index 6265a1a70..a05873299 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,3 +4,14 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs +function toPounds(pennies) { + const pounds = pennies / 100; + return pounds.toFixed(2); +} + +// calling the function to make sure it works +console.log(toPounds(32391)); +console.log(toPounds(3239)); +console.log(toPounds(323)); +console.log(toPounds(32)); +console.log(toPounds(3)); diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 7c98eb0e8..4fdb1c9fb 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -10,6 +10,7 @@ function formatTimeDisplay(seconds) { return `${pad(totalHours)}:${pad(remainingMinutes)}:${pad(remainingSeconds)}`; } +console.log(formatTimeDisplay(61)); // You will need to play computer with this example - use the Python Visualiser https://pythontutor.com/visualize.html#mode=edit // to help you answer these questions @@ -18,17 +19,22 @@ function formatTimeDisplay(seconds) { // a) When formatTimeDisplay is called how many times will pad be called? // =============> write your answer here +/* pad will be called 3 times. one for totalHours, one for remainingMinutes and one for remainingSeconds.*/ // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? // =============> write your answer here +/* when I run the code the result is 00:01:01 there for the value assigned to num is "0". // c) What is the return value of pad is called for the first time? // =============> write your answer here +/* the return value is "00". this comes 0 changed to string and then padstart(2,0) changes it to "00" */ // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here +/* The value assigned to num when the pad is called for the last time is "1". */ // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here +/* The return value is 1. The code 1.toString() changes the num 1 to string "1" then the code .padStart(2, "0"); changes "1" to "01" */ \ No newline at end of file diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index 32a32e66b..b1a580a47 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,10 +4,17 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); + if (hours===0) { + return`12:00 am` + } + if (hours===12) { + return `12:00 pm` + } if (hours > 12) { return `${hours - 12}:00 pm`; } - return `${time} am`; + if (hours > 0 && hours < 12) + return `${String(hours).padStart(2, "0")}:00 am`; } const currentOutput = formatAs12HourClock("08:00"); @@ -22,4 +29,17 @@ const targetOutput2 = "11:00 pm"; console.assert( currentOutput2 === targetOutput2, `current output: ${currentOutput2}, target output: ${targetOutput2}` + +); +const currentOutput3 = formatAs12HourClock("00:00"); +const targetOutput3 = "12:00 am"; +console.assert( + currentOutput3 === targetOutput3, + `current output: ${currentOutput2}, target output: ${targetOutput2}` +); +const currentOutput4 = formatAs12HourClock("12:00"); +const targetOutput4 = "12:00 pm"; +console.assert( + currentOutput4 === targetOutput4, + `current output: ${currentOutput2}, target output: ${targetOutput2}` ); From d139163fb1125fbdddebc95e98d7f0f9ccf48754 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:44:09 +0000 Subject: [PATCH 05/21] Delete Sprint-1/1-key-exercises/1-count.js --- Sprint-1/1-key-exercises/1-count.js | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 Sprint-1/1-key-exercises/1-count.js diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js deleted file mode 100644 index 684b66fcb..000000000 --- a/Sprint-1/1-key-exercises/1-count.js +++ /dev/null @@ -1,10 +0,0 @@ -let count = 0; - -count = count + 1; - -// Line 1 is a variable declaration, creating the count variable with an initial value of 0 -// Describe what line 3 is doing, in particular focus on what = is doing -Answer -// Line 3; when we the right side first count in the right side is considered as 0 so 0+1 will be 1. -// But the = sign does not mean the mathematical equal, its function is to take the result on the right and store it on the left. -// Therefore if we write the same code in next line the result is not one but 2 \ No newline at end of file From 14f6ab7d525642e607f4ef5195fcfed8e08ec732 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:45:24 +0000 Subject: [PATCH 06/21] Delete Sprint-1/1-key-exercises/2-initials.js --- Sprint-1/1-key-exercises/2-initials.js | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 Sprint-1/1-key-exercises/2-initials.js diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js deleted file mode 100644 index 4a09edec5..000000000 --- a/Sprint-1/1-key-exercises/2-initials.js +++ /dev/null @@ -1,11 +0,0 @@ -let firstName = "Creola"; -let middleName = "Katherine"; -let lastName = "Johnson"; - -// Declare a variable called initials that stores the first character of each string. -// This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. - -let initials = `${firstName[0]}${middleName[0]}${lastName[0]}`; - -// https://www.google.com/search?q=get+first+character+of+string+mdn - From 3ea986ce32c7782f1742c646ce28ca947e6dc6ca Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:46:39 +0000 Subject: [PATCH 07/21] Delete Sprint-1/1-key-exercises/3-paths.js --- Sprint-1/1-key-exercises/3-paths.js | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 Sprint-1/1-key-exercises/3-paths.js diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js deleted file mode 100644 index cbe18ba20..000000000 --- a/Sprint-1/1-key-exercises/3-paths.js +++ /dev/null @@ -1,25 +0,0 @@ -// The diagram below shows the different names for parts of a file path on a Unix operating system - -// ┌─────────────────────┬────────────┐ -// │ dir │ base │ -// ├──────┬ ├──────┬─────┤ -// │ root │ │ name │ ext │ -// " / home/user/dir / file .txt " -// └──────┴──────────────┴──────┴─────┘ - -// (All spaces in the "" line should be ignored. They are purely for formatting.) - -const filePath = "/Users/mitch/cyf/Module-JS1/week-1/interpret/file.txt"; -const lastSlashIndex = filePath.lastIndexOf("/"); -const base = filePath.slice(lastSlashIndex + 1); -console.log(`The base part of ${filePath} is ${base}`); - -// Create a variable to store the dir part of the filePath variable -// Create a variable to store the ext part of the variable - -const dir = filePath.slice(0, lastSlashIndex); -const lastDotIndex = base.lastIndexOf("."); -const ext = base.slice(lastDotIndex + 1); - - -// https://www.google.com/search?q=slice+mdn \ No newline at end of file From 7688edc0338b285b848dd876e108cc414dcb262a Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:49:40 +0000 Subject: [PATCH 08/21] Delete Sprint-1/2-mandatory-errors/0.js --- Sprint-1/2-mandatory-errors/0.js | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 Sprint-1/2-mandatory-errors/0.js diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js deleted file mode 100644 index 65ad3030d..000000000 --- a/Sprint-1/2-mandatory-errors/0.js +++ /dev/null @@ -1,2 +0,0 @@ -//This is just an instruction for the first activity - but it is just for human consumption -//We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file From a00d344dd8c23080bf0a3c382e919acb1603e9fb Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:50:15 +0000 Subject: [PATCH 09/21] Delete Sprint-1/1-key-exercises/4-random.js --- Sprint-1/1-key-exercises/4-random.js | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 Sprint-1/1-key-exercises/4-random.js diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js deleted file mode 100644 index 526f7c468..000000000 --- a/Sprint-1/1-key-exercises/4-random.js +++ /dev/null @@ -1,28 +0,0 @@ -const minimum = 1; -const maximum = 100; - -const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; - -// In this exercise, you will need to work out what num represents? -// Try breaking down the expression and using documentation to explain what it means -// It will help to think about the order in which expressions are evaluated -// Try logging the value of num and running the program several times to build an idea of what the program is doing - -// Answer - -// 1. -// The num in this scenario represent any integer between 1 and 100 - -// 2. -// Math.floor: rounds the number down to the nearest whole number which means it ignores the number to the right of the point. eg. 4.7=4 -// Math.random is a js code that returns any random number that is greater than or equal to 0 and less than 1 -//* is multiplication -// maximum is the maximum given number, in this case 100 -//- is a subtraction -// minimum is the minimum given number, in this case 1 -//(maximum - minimum +1) this is subtracting the minimum number from the maximum and add 1, in this case (100-1+1)=100 -//+ minimum: this turns the value by adding 1 to the whole equation. - -//3. - -console.log(num) From d336e2467fbf05af6f931c26330d1ccfe98857d9 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:50:41 +0000 Subject: [PATCH 10/21] Delete Sprint-1/2-mandatory-errors/1.js --- Sprint-1/2-mandatory-errors/1.js | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 Sprint-1/2-mandatory-errors/1.js diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js deleted file mode 100644 index c3714c46a..000000000 --- a/Sprint-1/2-mandatory-errors/1.js +++ /dev/null @@ -1,5 +0,0 @@ -// trying to create an age variable and then reassign the value by 1 - -let age = 33; -age = age + 1; -console.log(age) From 5b0207b8a4c9c2819a6f1c726964a7ee21b045f3 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:51:01 +0000 Subject: [PATCH 11/21] Delete Sprint-1/2-mandatory-errors/2.js --- Sprint-1/2-mandatory-errors/2.js | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 Sprint-1/2-mandatory-errors/2.js diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js deleted file mode 100644 index ae2731079..000000000 --- a/Sprint-1/2-mandatory-errors/2.js +++ /dev/null @@ -1,6 +0,0 @@ -// Currently trying to print the string "I was born in Bolton" but it isn't working... -// what's the error ? - - -const cityOfBirth = "Bolton"; -console.log(`I was born in ${cityOfBirth}`); From 73b25cc7760f42e9f9c8622e491a8badd73bd1f4 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:51:21 +0000 Subject: [PATCH 12/21] Delete Sprint-1/2-mandatory-errors/3.js --- Sprint-1/2-mandatory-errors/3.js | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 Sprint-1/2-mandatory-errors/3.js diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js deleted file mode 100644 index 54901d1d7..000000000 --- a/Sprint-1/2-mandatory-errors/3.js +++ /dev/null @@ -1,19 +0,0 @@ -const cardNumber = 4533787178994213; -const last4Digits = cardNumber.slice(-4); - -// The last4Digits variable should store the last 4 digits of cardNumber -// However, the code isn't working -// Before running the code, make and explain a prediction about why the code won't work -// Then run the code and see what error it gives. -// Consider: Why does it give this error? Is this what I predicted? If not, what's different? -// Then try updating the expression last4Digits is assigned to, in order to get the correct value - -//Answer - -// This code is not working because slice() is working with "string" or "arrays" but not with numbers. and cardNumber is a number. -// So the error is "TypeError:cardNumber.slice is not a function"\ -// slice() didn't recognize the number as I expected before. - -const cardNumber = 4533787178994213; -const last4Digits = String(cardNumber).slice(-4); -console.log(last4Digits) From 3c5555c63cf86004ca492ab558028d61e65ea975 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:51:51 +0000 Subject: [PATCH 13/21] Delete Sprint-1/3-mandatory-interpret/1-percentage-change.js --- .../1-percentage-change.js | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 Sprint-1/3-mandatory-interpret/1-percentage-change.js diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js deleted file mode 100644 index 4a1858990..000000000 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ /dev/null @@ -1,49 +0,0 @@ -let carPrice = "10,000"; -let priceAfterOneYear = "8,543"; - -carPrice = Number(carPrice.replaceAll(",", "")); -priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); - -const priceDifference = carPrice - priceAfterOneYear; -const percentageChange = (priceDifference / carPrice) * 100; - -console.log(`The percentage change is ${percentageChange}`); - -// Read the code and then answer the questions below - -// a) How many function calls are there in this file? Write down all the lines where a function call is made - -// There are five functions calls. -//carPrice.replaceAll(",", "") -//Number(carPrice.replaceAll(",", "")) -//priceAfterOneYear.replaceAll("," "") -//Number(priceAfterOneYear.replaceAll("," "")) -//console.log(`The percentage change is ${percentageChange}`) - -// b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem? - -// When I run the code the error is "syntaxError: missing ) after argument list. -// The error comes from line 5 -// The error occurs due to the missing coma between the two strings in the replaceAll() call. -// Add coma between the two strings "priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", ""));" - -// c) Identify all the lines that are variable reassignment statements - -// there are to lines that state variable reassignment -// carPrice = Number(carPrice.replaceAll(",", "")); -// priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); - -// d) Identify all the lines that are variable declarations - -// There are fore variable declarations (line 1, line 2, line 7, line 8) -// let carPrice = "10,000"; -// let priceAfterOneYear = "8,543"; -// const priceDifference = carPrice - priceAfterOneYear; -// const percentageChange = (priceDifference / carPrice) * 100; - - -// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? - -// carprice at line 1 is a string in order to calculate for the next line of codes you have to change the string ti number. -// carPrice.replaceAll(",","")). delete the coma in between the number (e.g from "10,000" to "10000") -// number() change the string to number ("10000" to 10000) From 920fa0f01a7a909b29f3210e709cf0529a4788bd Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:52:41 +0000 Subject: [PATCH 14/21] Delete Sprint-1/2-mandatory-errors/4.js --- Sprint-1/2-mandatory-errors/4.js | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 Sprint-1/2-mandatory-errors/4.js diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js deleted file mode 100644 index 148952cbc..000000000 --- a/Sprint-1/2-mandatory-errors/4.js +++ /dev/null @@ -1,5 +0,0 @@ -const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; -// the 12 and 24 are changing position -const 24HourClockTime = "20:53"; -const 12hourClockTime = "08:53"; \ No newline at end of file From eb5face2bf653e238af7f7e21298e19df5fb373a Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:53:24 +0000 Subject: [PATCH 15/21] Delete Sprint-1/3-mandatory-interpret/2-time-format.js --- .../3-mandatory-interpret/2-time-format.js | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 Sprint-1/3-mandatory-interpret/2-time-format.js diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js deleted file mode 100644 index d2fa9711c..000000000 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ /dev/null @@ -1,32 +0,0 @@ -const movieLength = 8784; // length of movie in seconds - -const remainingSeconds = movieLength % 60; -const totalMinutes = (movieLength - remainingSeconds) / 60; - -const remainingMinutes = totalMinutes % 60; -const totalHours = (totalMinutes - remainingMinutes) / 60; - -const result = `${totalHours}:${remainingMinutes}:${remainingSeconds}`; -console.log(result); - -// For the piece of code above, read the code and then answer the following questions - -// a) How many variable declarations are there in this program? -// There are 6 variable declaration. "line1, line3, line4, line6, line7, line9" - -// b) How many function calls are there? -// There is only one function call in this program "console.log(result);" - -// c) Using documentation, explain what the expression movieLength % 60 represents -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators -// % is called remainder. There fore movieLength % 60 represents the remainder of the movie length after dividing by 60. - -// d) Interpret line 4, what does the expression assigned to totalMinutes mean? -// totalMinutes are calculated by subtracting the remaining seconds from movie length and divided by 60 to get full minutes. this helps to get a number which divided by 60 with out reminder. - -// e) What do you think the variable result represents? Can you think of a better name for this variable? -// result represents the total length of the movie in the form of Hour: minute: second -// moveDurationFormatted can be a better name to replace result. - -// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer -// Yes it works for all value. the only thing that is concerning is the validation of movieLength as the negative integer also gives value which is unrealistic. From f3f4e0b8b6436df0bca3ad9ddbbf836047dcdadc Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sun, 26 Oct 2025 06:53:48 +0000 Subject: [PATCH 16/21] Delete Sprint-1/3-mandatory-interpret/3-to-pounds.js --- Sprint-1/3-mandatory-interpret/3-to-pounds.js | 37 ------------------- 1 file changed, 37 deletions(-) delete mode 100644 Sprint-1/3-mandatory-interpret/3-to-pounds.js diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js deleted file mode 100644 index 7934f9a8e..000000000 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ /dev/null @@ -1,37 +0,0 @@ -onst penceString = "399p"; - -const penceStringWithoutTrailingP = penceString.substring( - 0, - penceString.length - 1 -); - -const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); -const pounds = paddedPenceNumberString.substring( - 0, - paddedPenceNumberString.length - 2 -); - -const pence = paddedPenceNumberString - .substring(paddedPenceNumberString.length - 2) - .padEnd(2, "0"); - -console.log(`£${pounds}.${pence}`); - -// This program takes a string representing a price in pence -// The program then builds up a string representing the price in pounds - -// You need to do a step-by-step breakdown of each line in this program -// Try and describe the purpose / rationale behind each step - -// To begin, we can start with -// 1. const penceString = "399p": initialises a string variable with the value "399p" -// 2. const penceStringWithoutTrailingP = penceString.substring( 0, penceString.length - 1); -// This remove the p and left the string with only 399 -// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); -// this code make sure that the string has 3 character. since one pound is equal 100 pence. -// 4. const pounds = paddedPenceNumberString.substring( 0, paddedPenceNumberString.length - 2); -// This code takes the number leaving the last 2 digits "in this case it takes 3 and leave 99" -// 5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2) .padEnd(2, "0"); -// This code takes the last digit from the string and also make sure that it has only two digits this gives a "99" value. -// 6. console.log(`£${pounds}.${pence}`); -// his gives a result with £ sign and separated by . " in this case it gives £3.99 " From 8448e94c0cd328b39d9a9567ec8bd6fbae69103b Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Mon, 27 Oct 2025 07:26:14 +0000 Subject: [PATCH 17/21] restor sprint 1 from cyf main --- Sprint-1/1-key-exercises/1-count.js | 6 +++++ Sprint-1/1-key-exercises/2-initials.js | 11 ++++++++ Sprint-1/1-key-exercises/3-paths.js | 23 ++++++++++++++++ Sprint-1/1-key-exercises/4-random.js | 9 +++++++ Sprint-1/2-mandatory-errors/0.js | 2 ++ Sprint-1/2-mandatory-errors/1.js | 4 +++ Sprint-1/2-mandatory-errors/2.js | 5 ++++ Sprint-1/2-mandatory-errors/3.js | 9 +++++++ Sprint-1/2-mandatory-errors/4.js | 2 ++ .../1-percentage-change.js | 22 +++++++++++++++ .../3-mandatory-interpret/2-time-format.js | 25 +++++++++++++++++ Sprint-1/3-mandatory-interpret/3-to-pounds.js | 27 +++++++++++++++++++ 12 files changed, 145 insertions(+) create mode 100644 Sprint-1/1-key-exercises/1-count.js create mode 100644 Sprint-1/1-key-exercises/2-initials.js create mode 100644 Sprint-1/1-key-exercises/3-paths.js create mode 100644 Sprint-1/1-key-exercises/4-random.js create mode 100644 Sprint-1/2-mandatory-errors/0.js create mode 100644 Sprint-1/2-mandatory-errors/1.js create mode 100644 Sprint-1/2-mandatory-errors/2.js create mode 100644 Sprint-1/2-mandatory-errors/3.js create mode 100644 Sprint-1/2-mandatory-errors/4.js create mode 100644 Sprint-1/3-mandatory-interpret/1-percentage-change.js create mode 100644 Sprint-1/3-mandatory-interpret/2-time-format.js create mode 100644 Sprint-1/3-mandatory-interpret/3-to-pounds.js diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js new file mode 100644 index 000000000..117bcb2b6 --- /dev/null +++ b/Sprint-1/1-key-exercises/1-count.js @@ -0,0 +1,6 @@ +let count = 0; + +count = count + 1; + +// Line 1 is a variable declaration, creating the count variable with an initial value of 0 +// Describe what line 3 is doing, in particular focus on what = is doing diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js new file mode 100644 index 000000000..47561f617 --- /dev/null +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -0,0 +1,11 @@ +let firstName = "Creola"; +let middleName = "Katherine"; +let lastName = "Johnson"; + +// Declare a variable called initials that stores the first character of each string. +// This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. + +let initials = ``; + +// https://www.google.com/search?q=get+first+character+of+string+mdn + diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js new file mode 100644 index 000000000..ab90ebb28 --- /dev/null +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -0,0 +1,23 @@ +// The diagram below shows the different names for parts of a file path on a Unix operating system + +// ┌─────────────────────┬────────────┐ +// │ dir │ base │ +// ├──────┬ ├──────┬─────┤ +// │ root │ │ name │ ext │ +// " / home/user/dir / file .txt " +// └──────┴──────────────┴──────┴─────┘ + +// (All spaces in the "" line should be ignored. They are purely for formatting.) + +const filePath = "/Users/mitch/cyf/Module-JS1/week-1/interpret/file.txt"; +const lastSlashIndex = filePath.lastIndexOf("/"); +const base = filePath.slice(lastSlashIndex + 1); +console.log(`The base part of ${filePath} is ${base}`); + +// Create a variable to store the dir part of the filePath variable +// Create a variable to store the ext part of the variable + +const dir = ; +const ext = ; + +// https://www.google.com/search?q=slice+mdn \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js new file mode 100644 index 000000000..292f83aab --- /dev/null +++ b/Sprint-1/1-key-exercises/4-random.js @@ -0,0 +1,9 @@ +const minimum = 1; +const maximum = 100; + +const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; + +// In this exercise, you will need to work out what num represents? +// Try breaking down the expression and using documentation to explain what it means +// It will help to think about the order in which expressions are evaluated +// Try logging the value of num and running the program several times to build an idea of what the program is doing diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js new file mode 100644 index 000000000..cf6c5039f --- /dev/null +++ b/Sprint-1/2-mandatory-errors/0.js @@ -0,0 +1,2 @@ +This is just an instruction for the first activity - but it is just for human consumption +We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js new file mode 100644 index 000000000..7a43cbea7 --- /dev/null +++ b/Sprint-1/2-mandatory-errors/1.js @@ -0,0 +1,4 @@ +// trying to create an age variable and then reassign the value by 1 + +const age = 33; +age = age + 1; diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js new file mode 100644 index 000000000..e09b89831 --- /dev/null +++ b/Sprint-1/2-mandatory-errors/2.js @@ -0,0 +1,5 @@ +// Currently trying to print the string "I was born in Bolton" but it isn't working... +// what's the error ? + +console.log(`I was born in ${cityOfBirth}`); +const cityOfBirth = "Bolton"; diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js new file mode 100644 index 000000000..ec101884d --- /dev/null +++ b/Sprint-1/2-mandatory-errors/3.js @@ -0,0 +1,9 @@ +const cardNumber = 4533787178994213; +const last4Digits = cardNumber.slice(-4); + +// The last4Digits variable should store the last 4 digits of cardNumber +// However, the code isn't working +// Before running the code, make and explain a prediction about why the code won't work +// Then run the code and see what error it gives. +// Consider: Why does it give this error? Is this what I predicted? If not, what's different? +// Then try updating the expression last4Digits is assigned to, in order to get the correct value diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js new file mode 100644 index 000000000..21dad8c5d --- /dev/null +++ b/Sprint-1/2-mandatory-errors/4.js @@ -0,0 +1,2 @@ +const 12HourClockTime = "20:53"; +const 24hourClockTime = "08:53"; \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js new file mode 100644 index 000000000..e24ecb8e1 --- /dev/null +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -0,0 +1,22 @@ +let carPrice = "10,000"; +let priceAfterOneYear = "8,543"; + +carPrice = Number(carPrice.replaceAll(",", "")); +priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); + +const priceDifference = carPrice - priceAfterOneYear; +const percentageChange = (priceDifference / carPrice) * 100; + +console.log(`The percentage change is ${percentageChange}`); + +// Read the code and then answer the questions below + +// a) How many function calls are there in this file? Write down all the lines where a function call is made + +// b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem? + +// c) Identify all the lines that are variable reassignment statements + +// d) Identify all the lines that are variable declarations + +// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js new file mode 100644 index 000000000..47d239558 --- /dev/null +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -0,0 +1,25 @@ +const movieLength = 8784; // length of movie in seconds + +const remainingSeconds = movieLength % 60; +const totalMinutes = (movieLength - remainingSeconds) / 60; + +const remainingMinutes = totalMinutes % 60; +const totalHours = (totalMinutes - remainingMinutes) / 60; + +const result = `${totalHours}:${remainingMinutes}:${remainingSeconds}`; +console.log(result); + +// For the piece of code above, read the code and then answer the following questions + +// a) How many variable declarations are there in this program? + +// b) How many function calls are there? + +// c) Using documentation, explain what the expression movieLength % 60 represents +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators + +// d) Interpret line 4, what does the expression assigned to totalMinutes mean? + +// e) What do you think the variable result represents? Can you think of a better name for this variable? + +// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js new file mode 100644 index 000000000..60c9ace69 --- /dev/null +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -0,0 +1,27 @@ +const penceString = "399p"; + +const penceStringWithoutTrailingP = penceString.substring( + 0, + penceString.length - 1 +); + +const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); +const pounds = paddedPenceNumberString.substring( + 0, + paddedPenceNumberString.length - 2 +); + +const pence = paddedPenceNumberString + .substring(paddedPenceNumberString.length - 2) + .padEnd(2, "0"); + +console.log(`£${pounds}.${pence}`); + +// This program takes a string representing a price in pence +// The program then builds up a string representing the price in pounds + +// You need to do a step-by-step breakdown of each line in this program +// Try and describe the purpose / rationale behind each step + +// To begin, we can start with +// 1. const penceString = "399p": initialises a string variable with the value "399p" From 76ab3c73146dc3867f0b867cd5b5baa238cdb8a4 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Wed, 29 Oct 2025 08:16:14 +0000 Subject: [PATCH 18/21] correcting the errors based on your valuable comments --- Sprint-2/1-key-errors/0.js | 8 ++++---- Sprint-2/1-key-errors/1.js | 10 ++++++---- Sprint-2/3-mandatory-implement/1-bmi.js | 3 ++- Sprint-2/3-mandatory-implement/2-cases.js | 4 ++-- Sprint-2/3-mandatory-implement/3-to-pounds.js | 13 ++++++------- Sprint-2/4-mandatory-interpret/time-format.js | 2 +- Sprint-2/5-stretch-extend/format-time.js | 16 +++++----------- 7 files changed, 26 insertions(+), 30 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 06d225c66..510bc7fce 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -20,8 +20,8 @@ // =============> write your new code here -function capitalise(str) { - str = `${str[0].toUpperCase()}${str.slice(1)}`; - return str; +function capitalise(firstLetters) { + firstLetters = `${firstLetters[0].toUpperCase()}${firstLetters.slice(1)}`; + return firstLetters; } -console.log(capitalise("str")) \ No newline at end of file +console.log(capitalise("hello")) \ No newline at end of file diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index 4b783162f..2be1daf55 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -6,14 +6,16 @@ // Try playing computer with the example to work out what is going on -/*function convertToPercentage(decimalNumber) { - const decimalNumber = 0.5; +const decimalNumber = 0.5; + +function convertToPercentage(decimalNumber) { + const percentage = `${decimalNumber * 100}%`; return percentage; -}/ +} -console.log(decimalNumber);*/ +console.log(convertToPercentage(decimalNumber)); // =============> write your explanation here // A syntaxError has been observed because the decimalNumber is already declared. diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 6cc7f80a1..d5f72862e 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -16,7 +16,8 @@ function calculateBMI(weight, height) { const bmi= weight/ (height*height) - return bmi.toFixed(1); + //return bmi.toFixed(1); // return the BMI of someone based off their weight and height + return Numberbmi.toFixed(1); } console.log(calculateBMI(86,1.70)); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 86e3f83cf..ab2157a37 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -15,8 +15,8 @@ // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase function toUpperCase(text) { - return text.toUpperCase(); + return text.replace(" ", "_").toUpperCase(); } console.log(toUpperCase("hello there")); -console.log(toUpperCase("lord of the ring")); \ No newline at end of file +console.log(toUpperCase("lord_of_the_ring")); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index a05873299..bc69519c2 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -5,13 +5,12 @@ // You should call this function a number of times to check it works for different inputs function toPounds(pennies) { - const pounds = pennies / 100; + const pounds = (parseInt(pennies.replace("p", ""), 10)) / 100; return pounds.toFixed(2); } - // calling the function to make sure it works -console.log(toPounds(32391)); -console.log(toPounds(3239)); -console.log(toPounds(323)); -console.log(toPounds(32)); -console.log(toPounds(3)); +console.log(toPounds("32391p")); +console.log(toPounds("3239p")); +console.log(toPounds("323p")); +console.log(toPounds("32p")); +console.log(toPounds("3p")); diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 4fdb1c9fb..c15aac252 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -33,7 +33,7 @@ console.log(formatTimeDisplay(61)); // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here -/* The value assigned to num when the pad is called for the last time is "1". */ +/* The value assigned to num when the pad is called for the last time is 1. */ // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer // =============> write your answer here diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index b1a580a47..0b042a43b 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,19 +4,13 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); - if (hours===0) { - return`12:00 am` - } - if (hours===12) { - return `12:00 pm` - } - if (hours > 12) { - return `${hours - 12}:00 pm`; - } - if (hours > 0 && hours < 12) - return `${String(hours).padStart(2, "0")}:00 am`; + const minutes = time.slice(3, 5); + const ampm = hours >= 12 ? "pm" : "am"; + const Hour = String(hours % 12 === 0 ? 12 : hours % 12).padStart(2, "0") + return `${Hour}:${minutes} ${ampm}`; } + const currentOutput = formatAs12HourClock("08:00"); const targetOutput = "08:00 am"; console.assert( From 644248fd4dc0fef01dc94fcea548d70f50385e7e Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Thu, 30 Oct 2025 20:50:26 +0000 Subject: [PATCH 19/21] communicating the valuable comments --- Sprint-2/3-mandatory-implement/2-cases.js | 2 +- Sprint-2/5-stretch-extend/format-time.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index ab2157a37..3767c2a85 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -15,7 +15,7 @@ // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase function toUpperCase(text) { - return text.replace(" ", "_").toUpperCase(); + eturn text.replace(/ /g, "_").toUpperCase(); } console.log(toUpperCase("hello there")); diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index 0b042a43b..05a750dfe 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -4,10 +4,10 @@ function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); - const minutes = time.slice(3, 5); + const minutes = time.slice(-2); const ampm = hours >= 12 ? "pm" : "am"; - const Hour = String(hours % 12 === 0 ? 12 : hours % 12).padStart(2, "0") - return `${Hour}:${minutes} ${ampm}`; + const hour = String(hours % 12 === 0 ? 12 : hours % 12).padStart(2, "0") + return `${hour}:${minutes} ${ampm}`; } From ae53e31f16f0c3ba207cc7125b538b07ad4a39b0 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Fri, 31 Oct 2025 08:20:39 +0000 Subject: [PATCH 20/21] changing firstLetter with str --- Sprint-2/1-key-errors/0.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 510bc7fce..06d225c66 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -20,8 +20,8 @@ // =============> write your new code here -function capitalise(firstLetters) { - firstLetters = `${firstLetters[0].toUpperCase()}${firstLetters.slice(1)}`; - return firstLetters; +function capitalise(str) { + str = `${str[0].toUpperCase()}${str.slice(1)}`; + return str; } -console.log(capitalise("hello")) \ No newline at end of file +console.log(capitalise("str")) \ No newline at end of file From f4a96ca4fbff24791c8be1c0bb94d9429fc17c22 Mon Sep 17 00:00:00 2001 From: Abrsh100 Date: Sat, 1 Nov 2025 23:58:39 +0000 Subject: [PATCH 21/21] correcting some typos --- Sprint-2/3-mandatory-implement/1-bmi.js | 4 ++-- Sprint-2/3-mandatory-implement/2-cases.js | 2 +- Sprint-2/3-mandatory-implement/3-to-pounds.js | 3 +++ Sprint-2/5-stretch-extend/format-time.js | 5 +++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index d5f72862e..24b207471 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -17,7 +17,7 @@ function calculateBMI(weight, height) { const bmi= weight/ (height*height) //return bmi.toFixed(1); - // return the BMI of someone based off their weight and height - return Numberbmi.toFixed(1); + // return the BMI of someone based on their weight and height + return Number (bmi.toFixed(1)); } console.log(calculateBMI(86,1.70)); \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 3767c2a85..e0dc2d3d7 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -15,7 +15,7 @@ // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase function toUpperCase(text) { - eturn text.replace(/ /g, "_").toUpperCase(); + return text.replace(/ /g, "_").toUpperCase(); } console.log(toUpperCase("hello there")); diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index bc69519c2..13d6dc06f 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -14,3 +14,6 @@ console.log(toPounds("3239p")); console.log(toPounds("323p")); console.log(toPounds("32p")); console.log(toPounds("3p")); + + + diff --git a/Sprint-2/5-stretch-extend/format-time.js b/Sprint-2/5-stretch-extend/format-time.js index 05a750dfe..4a16fe75b 100644 --- a/Sprint-2/5-stretch-extend/format-time.js +++ b/Sprint-2/5-stretch-extend/format-time.js @@ -11,8 +11,9 @@ function formatAs12HourClock(time) { } -const currentOutput = formatAs12HourClock("08:00"); -const targetOutput = "08:00 am"; + +const currentOutput = formatAs12HourClock("08:30"); +const targetOutput = "08:30 am"; console.assert( currentOutput === targetOutput, `current output: ${currentOutput}, target output: ${targetOutput}`