Programming Games Credit cards. Forms. Homework: Catch up: dice game. Produce your own credit card...

Post on 17-Jan-2016

214 views 0 download

transcript

Programming Games

Credit cards. Forms.Homework: Catch up: dice game. Produce

your own credit card application or something else making use of a form with computations.

Formulas

• Mathematical expressions are combinations of operators and terms– examples of operators: +, -, *, /, ==, ===, !=, &&, …– examples of terms: variable name, constant

• Programming languages have features for expressing mathematical formulasdistance = velocity x time

Code, assume distance, velocity, time all variablesdistance = velocity * time;

multiplication

=== checks for datatype & value

Well-formed expression

• Show a NOT well-formed expression

A = B *

toss(a, b, c

Function expressing formula

function distance (velocity, time) { return velocity * time;}Give me velocity and time and I'll [the

function] will return the distance.

The function header indicates the [incoming] parameters (aka arguments). NOTE: in many languages, the function header also indicates the datatype of each parameter and the datatype of the returned value. This makes it possible to check that the programmer is NOT using the functions incorrectly…at least as far as datatype.

Expressions

• An expression is a combination of operators and terms, with the terms being variables or literals (for example, numbers)

• Examples:10 * scorebill + bill*.08now <= then + duration(day != "Saturday") ? 2200 : 2400xpos > xborder(xpos > leftwall) && (xpos <rightwall)

Note: && is logical AND operator WHICH does NOT evaluate the second term if the first is false.(gpa >3.0) || (credits >90)

Note: || is logical OR operator which does NOT evaluate the second term if the first one is true.

Temperature conversion

Tempfahrenheit = Tempcentigrade*(9/5)+32;

Check by putting in points

for boiling:

212 Fahrenheit and 100 Centigrade

For freezing

32 Fahrenheit and 0 Centigrade

What is formula for… the other direction?

Interlude: Computer jargon• A bit is a 1 or 0. Abbreviation b• A byte is made up of 8 bits. Abbreviation B.

– ASCII is a system for representing symbols, such as the letters, in 8 bits, which is 1 byte.

– Unicode uses 16 bits.

• How many different patterns of 1s and 0s can be held in 4 bits? 8 bits? 16 bits?– Hint: start with 1 bit and keep going and notice

the pattern.

Caution• Recall: Programming systems may store whole

numbers (0, 1, 2, -10, etc.) differently than numbers with fractions (0.5, 10.23, -2.3333333, etc.)

• Need to make sure that none of the intermediate steps are truncated to whole numbers!– One approach: write 9.0 and 5.0 and 32.0– Note: problems occurs with the division, not

multiplication or addition

• Extra credit opportunity: what does JavaScript do?

JavaScript program

function convertToFahrenheit(T) {var ans;ans = (9.0/5.0) * T + 32.0;return ans;}

ORfunction convertToFahrenheit(T) {

return (9.0/5.0) * T + 32.0;}

Precedence

• Many programming courses start off with rules of precedencea*b+cIs evaluated as (a*b)+c. The multiplication is

done first

The alternative is a* (b+c)

• Recommendation: put in parentheses!

• MAYBE: avoid long statements—use multiple lines

Conditionals

• Suppose a formula (for ticket price or score or …) involves a conditional test:– On Tuesdays, drinks are half priceLogic: if it is Tuesday, dcost = .5*dcost;

• Implementation: use if statement– Alternative: conditional operator. Show later.

• But how do we know if it is Tuesday?• Implementation: use Date

– Remember from first HTML example!

Date code• Suppose policy of half-price on Tuesdays

today = new Date();

dayofweek = today.getDay();

//encoding is 0 for Sunday, 1 for Mon.,

// 2 for Tuesday

if (dayofweek==2) {

dcost = .5 * dcost;

}

Conditional operator

• Operator with 3 operands condition ? value_if_true : value_if_false

dcost = (dayofweek==2) ? (.5*dcost) : dcost;

Comfortable_with_conditional ? Use_It : if_statement

A man walks into a bar…

See also: http://faculty.purchase.edu/jeanine.meyer/creditcard.html

Notes: http://faculty.purchase.edu/jeanine.meyer/credit.doc

Credit cards!!!!

• Calculation (as indicated by code)balance = old_balance + purchases

Subtract the payment:balance = balance – payment

Compute interest

Divide ANNUAL interest by 12.

REMEMBER DECIMAL POINT

balance = balance + (balance * interest)

Add fee if required: balance = balance + fee

Estimating

• 24% ANNUAL interest is 2% per month– 24/12 is 2!

• What is 2% of $50?– 2% of 100 is 2. So…2% of 50 would be 1– What is 10% of 50? 5, so 2% would be less

than that

• 15% ANNUAL interest. Monthly would be…more than 1 less than 2 (1.25)

Compounding• The interest is added to what you owe. • The new balance is what you haven't paid plus

the interest on what you haven't paid.• Next month, you will be paying interest on the

interest.• This doesn't include fees for not paying the

minimum • My program does not do compounding on a

daily basis. Actual rules mean you pay more!• NOTE: it still is a free loan if you pay off balance.

– There are charges to merchants.

Compounding

• is your friend, when you are saving (or investing)– You earn interest and then interest on the

interest.

• is your enemy if you owe money

• Interests are very low now, but they (probably) will rise!

Writing on image

• http://faculty.purchase.edu/jeanine.meyer/html5/addmessage.html

• Notice different types of input– Radio buttons– Range– Color– html

Braiding

• http://faculty.purchase.edu/jeanine.meyer/braidloosetightshake.html

• Again, notice different forms of input

• Aside: uses 2 ½ D technique of small canvas elements (more on this later)

What went wrong & why?

<html><head><title>test</title><script>

function addone () {

document.f.score.value = 1+document.f.score.value;

return false; }

</script></head><body>

<form name="f" onSubmit="return addone()">

Score: <input type="number" value="0" name="score"/>

<br/>

<input type="submit" value="Add 1"/></form></body></html>

Number theory examples

• http://faculty.purchase.edu/jeanine.meyer/numbertheory/

Hints• For slide show (and any other application

(program) with media,) you need to upload the image files along with the html file(s)

• One second for me is– One Mississippi

• Think about your player/customer/user…– What is expectation on controls, aka affordances

Recap today• “Same deal” meant owe interest on everything

owed. This included (original) interest + fee.• JavaScript forms support text input plus

URL,color, radio, other– Look it up!

• JavaScript also provides way to get input from user/player/customer clicking on canvas and code determines position– Code did a rotation for writing text on canvas.

Homework

• Take the credit card application and make it your own– add graphics?– change form?– ?

• OR create another application making use of input from a form and doing calculations

Recap• Catchup: if behind, do dice game and slide

show. We will start on virtual something next week.

• Keep up with taking notes, doing research– Form input– How to get time of day from Date object– JavaScript way of storing numbers– Ideas for projects

• Get help: office hours, Einstein’s Corner