(Redirected from () * () (block))
- "Times" redirects here. For other uses, see Time (disambiguation).
() * () | |
(() * ()) | |
Category | Operators |
Type | Reporter |
Introduced in | 11Oct03 (0.x) |
The () * () block is an Operators Block and a Reporter Block. It multiplies the numbers in its two given arguments together and reports the result.
Example Uses
The block is mainly used for calculations where multiplication is needed.
Some common uses for the () * () block include:
- Scripts that require calculations
set [result v] to ((a) * (b))
- Score multipliers
set [score v] to ((score) * (2))
- Switching positive and negative values around.
set [my variable v] to ((my variable) * (-1))
- Math formulas
([sqrt v] of ((((y1) - (y2)) * ((y1) - (y2))) + (((x1) - (x2)) * ((x1) - (x2))))) //Pythagorean Theorem
- Multiplying lists of numbers
set [result v] to (1) set [item v] to (1) repeat (length of [numbers v]) set [result v] to ((result) * (item (item) of [numbers v])) change [item v] by (1) end
when gf clicked set [velocity v] to [0] forever if <key (space v) pressed?> then change [velocity v] by (2) set [velocity v] to ((velocity) * (0.87)) //simulates friction slowdown
- 3D Projects
- Calculating factorials
when gf clicked ask (Number) and wait set [counter v] to (answer) repeat ((answer) - (1)) change [counter v] by [-1] set [output v] to ((output) * (counter))
Workaround
- Main article: List of Block Workarounds
A workaround can be made for the () * () block by instead diving by the reciprocal.
set [product v] to ((a) / ((1) / (b)))
With natural numbers, this block can be replicated with the following code, assuming a is the first whole number and b is the second whole number:
set [product v] to [0] repeat (b) // where b should be a whole number (not negative and does not have a decimal) change [product v] by (a) end
The following code accepts negative numbers with decimals:
delete all of [num1 numbers v] delete all of [num2 numbers v] delete all of [product digits v] set [dec pos 1 v] to [0] set [count v] to [0] repeat (length of (a)) change [count v] by (1) if <not<(letter (count) of (a)) = [-]>> then if <(letter (count) of (a)) = [.]> then set [dec pos 1 v] to ((length of (a)) - (count)) else add (letter (count) of (a)) to [num1 numbers v] end end end set [dec pos 2 v] to (0) set [count v] to (0) repeat (length of (b)) change [count v] by (1) if <not <(letter (count) of (b)) = [-]>> then if <(letter (count) of (b)) = [.]> then set [dec pos 2 v] to ((length of (b)) - (count)) else add (letter (count) of (b)) to [num2 numbers v] end end end set [num1 v] to (num1 numbers) set [num2 v] to (num2 numbers) set [product v] to [0] repeat (num1) change [product v] by (num2) end set [decimal position v] to ((dec pos 1) + (dec pos 2)) set [count v] to [0] repeat (length of (product)) change [count v] by (1) add (letter (count) of (product)) to [product digits v] end repeat until <[0] < ((length of [product digits v]) - ((decimal position) - (1)))> insert (0) at (1) of [product digits v] end insert [.] at ((length of [product digits v]) - ((decimal position) - (1))) of [product digits v] if <not <<(a) < [0]> = <(b) < [0]>>> then insert [-] at (1) of [product digits v] end set [product v] to ((product digits) + (0))
See Also
() + () • () - () • () * () • () / () • Pick Random () to () • () < () • () = () • () > () • () and () • () or () • Not () • Join ()() • Letter () of () • Length of () • () Mod () • Round () • () of ()More blocks...
|