Programming Basics using Real-life examples Activities • • • • Recipe Assembly instructions for a toy Map out the plan at amusement park A busy day schedule What is the common idea for all these activities? Programming problem: Using sequence structure • Compute the weighted score based on individual assignments’ scores. Let us say there are only 3 assignments & 2 exams, each with max score of 100. Respective weights are (10%, 10%, 10%, 35% and 35%) • Sample input & output: Input: 100 100 100 95 95 Output: 96.5% Pseudocode Prompt & get the score for assignment1 Prompt & get the score for assignment2 Prompt & get the score for assignment3 Prompt & get the score for exam1 Prompt & get the score for exam2 weightedScore = (assignment1 + assignment2 + assignment3) * 0.1 + (exam1 + exam2) * .35 output weightedScore Activities • Drive car or take DART bus? • Party or study? • Fly or drive? What is the common idea for all these activities? Programming problem: using decision structure Get hourly pay rate & # of hours, compute the weekly pay, but do not pay for hours beyond 50. Sample inputs: Input: Pay Rate 150 Input: Hours 30 Output 150 60 Rs. 7500 Rs. 4500 Pseudocode Prompt & get hourly pay rate & # of hours IF hours <= 50 pay = hours * payRate; ELSE pay = 50 * payRate; ENDIF output pay C code Prompt & get hourly pay rate & # of hours if (hours <= 50) pay = hours * payRate; else pay = 50 * payRate; output pay Programming problem: using decision structure V2: Get hourly pay rate & # of hours, compute the weekly pay, but do not pay for >50 hours. Also, pay 1.5 times regular pay for overtime hours (that is, # of hours beyond regular 40 hours). First 40 hours: payRate Next 10 hours: payRate * 1.5 Beyond 50 hours: 0 pseudocode IF hours <= 40 pay = payRate * hours; ELSE IF hours <= 50 pay = payRate * 40 + payRate * 1.5 * (hours – 40); ELSE pay = payRate * 40 + payRate * 1.5 * 10; pseudocode #2 overHours = hours – 40; IF hours <= 40 pay = payRate * hours; ELSE IF hours <= 50 pay = payRate * 40 + payRate * 1.5 * overHours; ELSE pay = payRate * 40 + payRate * 1.5 * 10; pseudocode #3 hours = (hours > 50 ? 50 : hours); IF hours <= 40 pay = payRate * hours; ELSE pay = payRate * 40 + payRate * 1.5 * (hours – 40); pseudocode #4 hours = (hours > 50 ? 50 : hours); IF hours <= 40 pay = payRate * hours; ELSE basePay = payRate * 40; overPay = payRate * 1.5 * (hours – 40); pay = basePay + overPay; Activities • Bring in tons of purchased items from car to house • Load up uhaul truck when cleaning up apartment • Eat cookies from a box • Taking an exam that has several questions What is the common idea for all these activities? Programming problem: Using repetition structure Compute the average score for the whole class. Are we ready to code it? Guessing game • Guess a number between 1 and 100 in your mind. Write a program so that the computer will ask you a series of questions and determine that number based on your answers. Repeat the following steps as many times as needed: • Computer asks, “Is it NN?” • User responds with <, =, or > Pseudocode Range – 2 variables: low = 1 and high = 100 • compute mid = (low + high) / 2 • Ask the user: Is it mid? • Get user response • adjust low or high based on response • repeat as needed Detailed pseudocode Initialize range – 2 variables: low = 1 and high = 100 do { compute mid = (low + high) / 2 Ask the user: Is it mid? Get user response if (response == ‘<‘) high = mid-1; else if (response == ‘>’) low = mid+1; while (response != ‘=‘); Are we ready to code it? Are we ready to code it? • Google for “Java random number generation” Guessing game V2 – Role reversal • Let the computer guess a number between 1 and 100. Write a program so that the computer will answer a series of your questions and you will determine the number based on computer’s responses. Pseudocode • Generate a random number between 0 and 100: assign rand() % 101 to a variable. • then enter the loop – get a guess from the user – output <, >, or = repeat until user enters = Are we ready to code it? • How to make the computer guess a number? Summary • All programs have only 3 control structures: Sequence, decision & repetition • Problem description High level idea Detailed Pseudocode Implement in specific language Executable program C++ strings • Similar functionality to hangman game • Write a method to return # of tries to guess all the letters in a given word. • Sample run: Guess the letters in *******: s letters in s******: Pseudocode for guessWord() • bool guessed[100]; initialize to false using loop • int exposedCount = 0; • int len = word.length(); for(int i = 0; i < len ; i++) guessed[i] = false; do { for(int i = 0; i < len ; i++) cout << (guessed[i] ? word[i] : “*”); include code for getting next guess from the user and updating guessed[] array and exposedCount. } while (exposedCount < len);