Lab 7: Functions
Lab 7: Functions
Lab 7: Functions
Lab 7: Functions
This lab accompanies Chapter 6 of Starting Out with Programming Logic & Design.
Critical Review
You have been coding with modules in pseudocode and functions when using Python.
A function is a special type of module that returns a value back to the part of the program
that called it.
Library functions are built into the programming language and you can call them as
needed. They are commonly performed tasks.
Step 2: In the following space, write a function call to your function from Step 1.
Starting Out with Programming Logic and Design 2
Return d. answer
Step 2: In the following space, write a function call to your function from Step 1.
a. Declare a variable named subtotal, a constant variable named tax set to the rate
of .06, and a variable named total.
b. Ask the user to enter the subtotal. Store the input in subtotal.
c. Calculate the total as subtotal + subtotal * tax.
d. Make a call to the currencyFormat function and pass it total. Since you are not
displaying it on this line, simply set the return value to total.
e. Display the total to the screen.
Critical Review
When creating a flowchart for a program that has functions, draw a separate flowchart for
each function.
The starting terminal symbol usually shows the name of the function, along with any
parameters that the function has.
The ending terminal symbol reads Return, followed by the value or expression being
returned.
In Raptor, there are built-in procedures and functions that perform a wide variety of tasks
on the programmer's behalf, saving development time and reducing the chance for errors.
Raptor's buily-in functions can return values, but modules made by the user do not have
that ability.
If you want to learn what each of these functions do, use the Help menu in Raptor and
search for the function name.
While ceiling and floor round a number to the nearest integer, there is no function
in Raptor that will round a number just to two decimal places.
The random function in Raptor takes no arguments. To generate a random integer from
1 to n, use floor((random*n) + 1). For example, you can simulate the roll of a
die (random number from 1 to 6) with floor((random * 6) + 1).
This lab requires you to create the flowchart from page 222 on Using Random Numbers
using the RANDOM function. Use an application such as Raptor or Visio.
Step 1: Start by reading the pseudocode on page 221 and 222 of your textbook on Using
Random Numbers. In addition to simply displaying the random values, your program
will also meet the following requirements:
Allow the two players of the dice game to enter their names in variables named
playerOne and playerTwo.
Based on the random roll of the dice, your program will determine which value is
higher or if they tie and declare one player a winner.
Create structure in your program by creating the following modules:
Starting Out with Programming Logic and Design 5
o An inputNames( ) module that will ask the players to enter their names
o A rollDice( ) module that will call the RANDOM function and determine
the winner. This will be done with a decision statement.
o A displayInfo( ) module that will print the winners name to the screen.
Additionally, your program should allow the same players to play as many times
as they want.
Step 2: Start Raptor and save your document as Lab 7-2. The .rap file extension will be
added automatically.
Step 4: Add your loop to run multiple times and your module calls in the main module.
Your flowchart might look as follows:
//Declare Variables
Start
string playerOne
string playerTwo
inputNames string winnerName
string endGame
integer p1number //player 1's number from dice roll
integer p2number //player 2's number from dice roll
Loop
rollDice
displayInfo
endGame = "yes"
Yes
No
End
Step 5: Code the inputNames( ) module so both players can enter their name into the
appropriate variable.
Starting Out with Programming Logic and Design 6
Step 7: Add a second assignment statement and do the same for p2number.
Step 8: Add a selection statement that will determine which number is larger, or if there
is a tie. The best way to do this is to create a nested if else where you first check to see if
p1number is equal to p2number. If so, assign winnerName equal to “TIE”. If not, create
a second decision to see if p1number is greater than p2number. If so, then winnerName
should be set equal to playerOne and if not then winnerName should be set equal to
playerTwo.
Step 9: Go to the displayInfo( ) module and print the winners name to the screen.
//Declare Variables
Start
string playerOne
string playerTwo
inputNames
string winnerName
string endGame
integer p1number //player 1's number from dice roll
integer p2number //player 2's number from dice roll
Loop
rollDice
displayInfo
endGame = "yes"
Yes
No
End
Start
End
Starting Out with Programming Logic and Design 8
Start
p1number ← floor((random * 6) + 1)
p2number ← floor((random * 6) + 1)
p1number = p2number
Yes No
End
Start
End
Starting Out with Programming Logic and Design 9
Critical Review
A value-returning function is a function that returns a value back to the part of the program that
called it. In Python, you have been using value-returning functions and those that do not.
Recall the function calls from Lab 6-4. The first call returns number back to the number variable.
The second call just displays a value and there is no need to return a value.
One of the functions in the random library is the random.random.int( ) module. This module
accepts two arguments with the first being the starting number and the second being the ending
number. The following is how you would get a random number between 1 and 6.
p1number = random.randint(1, 6)
However, you can also return more than one value in Python. The function call might look as
follows:
playerOne, playerTwo = inputNames(playerOne, playerTwo)
The goal of this lab is to convert the Dice Game in Lab 7.2 to Python code.
Step 1: Start the IDLE Environment for Python. Prior to entering code, save your file by
clicking on File and then Save. Select your location and save this file as Lab7-3.py. Be
sure to include the .py extension.
Step 2: Document the first few lines of your program to include your name, the date, and
a brief description of what the program does.
Step 3: Start your program with the following code for main:
#call to inputNames
#initialize variables
#call to rollDice
#call to displayInfo
# calls main
main()
Starting Out with Programming Logic and Design 11
Step 4: Under the documentation for adding libraries, add the following statement:
import random
Step 5: Under the documentation for initialize variables, set endProgram to ‘no’ and
playerOne and playerTwo to ‘NO NAME’.
Step 6: Under the documentation for making a call to inputNames, set the function call
to both playerOne and playerTwo and pass both variables to the function as arguments.
This must be done because both values need to be returned from the function. This is
done as follows:
Step 7: Inside your while loop, set winnersName to ‘NO NAME’ and p1number and
p2number to 0.
Step 8: Make a call to rollDice and pass the necessary variables needed in this function.
This function should be set to the winnerName as that variable will be returned from the
function. This is done as follows:
Step 10: The next step is to write the function that will allow both players to enter their
names. Write a function heading that matches your function call in Step 6, making sure
to accept two arguments. The body of this function will use the raw_input function to
take in both players names, and one return statement that returns both playerOne and
playerTwo variable The return statement should look as follows:
Step 11: The next function to code is the rollDice function. Write the function header to
match the function call in Step 8. This function body will call the random function to
determine p1number and p2number. The code should look as follows:
p1number = random.randint(1, 6)
p2number = random.randint(1, 6)
Step 12: Next, inside this function write a nested if else statement that will set
winnerName to either playerOne name, playerTwo name, or “TIE”.
Step 14: The final function to code is the displayInfo function. Write the function
header to match the call made in Step 9. The body of the function should simply print the
winnerName variable to the screen.
Step 15: Execute your program so that all loops work and paste the final code below
#call to inputNames
playerOne, playerTwo = inputNames(playerOne, playerTwo)
#initialize variables
p1number = 0
p2number = 0
winnerName = 'NO NAME'
#call to rollDice
winnerName = rollDice(p1number, p2number, playerOne, playerTwo,
winnerName)
#call to displayInfo
displayinfo(winnerName)
Starting Out with Programming Logic and Design 13
endProgram = raw_input('Do you want to end program? (Enter yes or no): ')
if p1number == p2number:
winnerName = "TIE"
elif p1number>p2number:
winnerName=playerOne
else:
winnerName=playerTwo
return winnerName
# calls main
main()
Starting Out with Programming Logic and Design 14
Write the Flowchart and Python code for the following programming problem based on
the pseudocode below.
Help Video for Raptor: Double click the file to view video
Help Video for Python: Double click the file to view video
Write a program that will allow a student to enter their name and then ask them to solve
10 mathematical equations. The program should display two random numbers that are to
be added, such as:
247
+ 129
The program should allow the student to enter the answer. The program should then
display whether the answer was right or wrong, and accumulate the correct values. After
the 10 questions are asked, calculate the average correct. Then display the student name,
the number correct, and the average correct in both decimal and percentage format.
In addition to any system functions you may use, you might consider the following
functions:
A function that allows the student to enter their name.
A function that gets two random numbers, anywhere from 1 to 500.
A function that displays the equation and asks the user to enter their answer.
A function that checks to see if the answer is right and accumulates the number
right.
A function that calculates the results.
A function that displays the student name, the number right, and the average right.
Your sample output might look as follows (random numbers will be different):
Right
Etc…(through 10 iterations)
The Pseudocode
Module main()
//Declare local variables
Declare Integer counter = 0
Declare String studentName = “NO NAME”
Declare Real averageRight = 0.0
Declare Real right = 0.0
Declare Integer number1 = 0
Declare Integer number2 = 0
Declare answer = 0.0
Function Integer checkAnswer(Integer number1, Integer number2, Integer answer, Integer right)
If answer == number1 + number2 then
Display “Right”
Set right = right + 1
Else
Display “Wrong”
End If
Return right
End Function
The Flowchart
Starting Out with Programming Logic and Design 17
//Declare Variables
Start Integer count = 1
string studentName = "No Name"
Real averageRight = 0
inputNames
Real right = 0
Integer number1 = 0
Integer number2 = 0
counter ← 1 Integer answer = 0
right ← 0
averageRight ← 0
Loop
counter >=10
Yes
No
getNumbers
getAnswer
checkAnswer
counter ← counter + 1
results
displayInfo
End
Starting Out with Programming Logic and Design 18
Start
End End
Start
"What is the answer to " +number1 + " plus " + number2 GET answer
End
Starting Out with Programming Logic and Design 19
Start
PUT "Right"¶
End
Start
End End
import random
#call to inputNames
studentName = inputNames()
def getNumbers():
number1 = random.randint(1, 500)
number2 = random.randint(1, 500)
main()
Starting Out with Programming Logic and Design 21