360 likes | 520 Views
By Benito Mendoza. Department of Computer Science & Engineering. Benito Mendoza. 1. Calculator. Goal: create a calculator that determines the area and perimeter of a rectangle Need: Input fields for width and length Output fields for area and perimeter Ability to perform calculations
E N D
By Benito Mendoza Department of Computer Science & Engineering Benito Mendoza Benito Mendoza 1
Calculator • Goal: create a calculator that determines the area and perimeter of a rectangle • Need: • Input fields for width and length • Output fields for area and perimeter • Ability to perform calculations • Ability to invoke calculation function Benito Mendoza
Calculator • Mathematical operators • + Addition • - Subtraction • * Multiplication • / Division Benito Mendoza
Calculator • Math with constants var result1, result2, result3 result1 = 5.1 + 6.23 result2 = 2 * 4 result3 = 21 / 7 Benito Mendoza
Calculator • Math with variables var result1, result2, result3 result1 = 1 + 3 result2 = 4 * result1 Benito Mendoza
Calculator • Changes are not retroactive var x, y, z x = 12 y = 5 z = x + y What’s the value of z at this point? x = 6 Now what’s the value of z? Benito Mendoza
Equivalent Calculator • Spaces ignored x=3*4 x = 3*4 x = 3* 4 x = 3 * 4 Benito Mendoza
Calculator • Problems: • Text box values are stored as strings • Can’t do mathematical operations on strings • To convert a string into a real numeric value use the parseFloat() function • Use parseInt() to convert a string into an integer value Benito Mendoza
Calculator var xStr = “75.2”, yStr=“10.1” var xNum=parseFloat(xStr) var yNum=parseFloat(yStr) var z = xNum + yNum • Ch11-Ex-01 Benito Mendoza
Calculator • Running totals var x x = 0 … x = x + 1 Benito Mendoza
Then store result here Calculator • Remember order of operations in an assignment statement x = x + 1 Do this first Benito Mendoza
Calculator var x … x = 35 … x = x + 15 … Value of x before the next statement is executed? Value of x just after the previous statement is executed? Benito Mendoza
Calculator • Increment operator ++ x = 4 x = 4 x = x + 1 x++ (result 5) • Ch11-Ex-02 Benito Mendoza
Calculator • Decrement operator – x = 4 x = 4 x = x - 1 x-- (result 3) Benito Mendoza
Calculator • Equivalent forms: x++ and ++x x-- and --x • Unless used in an assignment statement… Benito Mendoza
Calculator • If operator follows variable then • Assignment first • Increment second x = 5 y = x++ • Result: y = 5, x = 6 Benito Mendoza
Calculator • If operator precedes variable then • Increment first • Assignment second x = 5 y = ++x • Result: y = 6, x = 6 Benito Mendoza
Calculator • Combination assignment operators x += 5 (x = x + 5) x -= 5 (x = x – 5) x *= 5 (x = x * 5) x /= 5 (x = x / 5) Benito Mendoza
Calculator • Problem: decrement operator has specific use in XHTML syntax • Can’t use in JavaScript and stay compliant with XHTML • Solution: put JavaScript code in an external JavaScript file (filename.js) • Include only JavaScript, not <script> elements • Call by <script src=“filename.js” type=“text/javasacript”> </script> Benito Mendoza
Calculator • Precedence of operations (order of operations) • Increment and decrement • Multiplication and division • Addition and subtraction • Combination • Left to right for multiples of the same operation • Use parentheses to override Benito Mendoza
Calculator 9 + 2 * 4 9 + ( 2 * 4 ) 9 + 8 17 Benito Mendoza
Calculator 9 + 2 * 4 - 7 * 8 9 + ( 2 * 4 ) – ( 7 * 8 ) 9 + 8 – ( 7 * 8 ) 9 + 8 – 56 17 – 56 -39 Benito Mendoza
Calculator (9 + 2) * 4 - 7 * 8 (9 + 2) * 4 – ( 7 * 8 ) (9 + 2) * 4 – 56 (11 * 4) – 56 44 – 56 -12 Benito Mendoza
Calculator • The Math object Math.methodname(…) • Math methods: • Square root – Math.sqrt(x) • Power – Math.pow(x,n) • Round – Math.round(x) [if .5 round up, else down] • Floor – Math.floor(x) [truncates decimal portion] • PI – Math.PI [as in Math.PI*radius] • Random – Math.random() [value between 0 and 1] • Ch11-Ex-03 Benito Mendoza
Returning Values from Functions • Scope of a variable • Global – can be used anywhere in the source document • Local – can be used only within a specific function Benito Mendoza
Returning Values from Functions • Ch11-Ex-04 Benito Mendoza
Known only within the testVar function Returning Values from Functions <head> <title>Ch11-Ex-05</title> <script type="text/javascript"> var firstAnswer = 93.7 var secondAnswer = "New York" alert("Answer #1 is "+firstAnswer) alert("Answer #2 is "+secondAnswer) function testVar() { var secondAnswer="Florida" alert("Answer #2 in testVar is "+secondAnswer) } </script> </head> <body> <script type="text/javascript"> alert("Answer #1 is "+firstAnswer) alert("Answer #2 is "+secondAnswer) testVar() alert("Answer #2 is "+secondAnswer) </script> </body> Benito Mendoza
Returning Values from Functions • Declaring the variable (using var) makes it local • Local variables can’t be changed outside their function • That means other programming team members won’t write code that changes your variables • Ch11-Ex-05 Benito Mendoza
Returning Values from Functions • Rules of Thumb • Use var keyword to make a variable local • Declare all global variables in <head> section • Declaring a variable without using var makes it global no matter where the declaration occurs • Variables are known only to the web page where they are used, i.e., you can’t use variables from one page, load a new page, and expect those variable values to still be there – they won’t be. Benito Mendoza
Returning Values from Functions • Similar to using parameters except… • The function itself has a value x = 2 x = sqrt(4) • The sqrt function is equivalent to the number 2 when called with a parameter of 4. Benito Mendoza
Returning Values from Functions • So far we’ve used functions to do things and store the results in variables • Now, we’re going to make the functions themselves have value. Benito Mendoza
Returning Values from Functions • Declaration: function calcAvg(n1, n2, n3) { var average average = (n1 + n2 + n3) / 3 alert(“The average is “+average) } • Call: calcAvg(1, 2, 3) Benito Mendoza
Returning Values from Functions • Declaration: function calcAvg(n1, n2, n3) { var average average = (n1 + n2 + n3) / 3 return average } • Call: x = calcAvg(1, 2, 3) Benito Mendoza
Returning Values from Functions • Declaration: function calcAvg(n1, n2, n3) { return (n1 + n2 + n3) / 3 } • Call: x = calcAvg(1, 2, 3) • Ch11-Ex-06 Benito Mendoza
Finally, the calculator • Goal: create a calculator that determines the area and perimeter of a rectangle • Need: • Input fields for width and length • Output fields for area and perimeter • Ability to perform calculations • Ability to invoke calculation function Benito Mendoza
Debugging <head> <title>Rectangle Calculator</title> <script type="text/javascript"> function calcArea(l, w) { var area = l*w } function calcPerim(l, w) { var perimeter = 2*(l+w) } function calc(f) { var width = parseFloat(widthBox) var length = parseFloat(lengthBox) area = calcArea(length.value, width.value) areaBox.value = area perimeterBox.value = calcPerim(length.value, width.value) } </script> </head> <body> <p><strong>Area and Perimeter Calculator</strong></p> <form id="calcForm" name="calcForm"> Enter the width of the rectangle: <input type="text" name="widthBox" size="6" /><br /> Enter the length of the rectangle: <input type="text" name="lengthBox" size="6" /> <p><input type="button" value="Calculate" onclick="calc(document.calculatorForm)" /></p> The area is: <input type="text" name="areaBox" size="12" /><br /> The perimeter is: <input type="text" name="perimeterBox" size="12" /> </form> </body> Benito Mendoza