Functions: Difference between revisions

From Computer Science Wiki
No edit summary
 
(9 intermediate revisions by the same user not shown)
Line 2: Line 2:


==Introduction==
==Introduction==
We can control the flow of a program by calling a function. If we call a function, it executes, returns a value, and then resumes the program where it was called.


In programming, a named section of a program that performs a specific task is called a function. In this sense, a function is a type of procedure or routine. Some programming languages make a distinction between a function, which returns a value, and a procedure, which performs some operation but does not return a value.
In programming, a named section of a program that performs a specific task is called a function. In this sense, a function is a type of procedure or routine. Some programming languages make a distinction between a function, which returns a value, and a procedure, which performs some operation but does not return a value.
Line 13: Line 15:
<iframe width="560" height="315" src="https://www.youtube.com/embed/Pi0Yf-jn7O8" frameborder="0" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Pi0Yf-jn7O8" frameborder="0" allowfullscreen></iframe>
</html>
</html>
Content gratefully used with permission :  <ref>http://cs50.tv/2015/fall/#license,psets</ref>


== The difference between returning and printing ==
== The difference between returning and printing ==
Line 21: Line 22:


<code>return</code>: gives the value to the program. Callers of the function then have the actual data and data type (bool, int, etc...) return 3 would have the value 3 put in place of where the function was called.<ref>http://stackoverflow.com/questions/3881434/difference-between-returns-and-printing-in-python</ref>
<code>return</code>: gives the value to the program. Callers of the function then have the actual data and data type (bool, int, etc...) return 3 would have the value 3 put in place of where the function was called.<ref>http://stackoverflow.com/questions/3881434/difference-between-returns-and-printing-in-python</ref>
In general, you should <code>return</code> a value from a function and not directly print from a function.


==Example of a function==
==Example of a function==
Line 26: Line 29:
<syntaxhighlight lang="python" line="1" >
<syntaxhighlight lang="python" line="1" >
#
#
# this is a simple function
# this is a simple function that remembers who like hamburgers and who doesn't like hamburgers.
#
#


Line 60: Line 63:


== Some decent videos about functions in Python ==
== Some decent videos about functions in Python ==
In the video to the left, the programmer uses a different [[IDE]] than we do (we use canopy). The programmer also uses [[tests]] in this video, which we haven't covered yet. The video on the right is pretty good example of what a function is, and also discusses [[variable scope]]
 


<html>
<html>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Qa5DDqzHh3g" frameborder="0" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Qa5DDqzHh3g" frameborder="0" allowfullscreen></iframe>
<br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/qO4ZN5uZSVg" frameborder="0" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/qO4ZN5uZSVg" frameborder="0" allowfullscreen></iframe>
</html>
</html>


== Do you understand functions? ==  
== See Also ==  
 
=== Beginning level functions ===
 
# Write a function which accepts one parameter (a string) and returns the parameter (string) in uppercase
# Write a function which accepts a string and returns the string capitalized
# Write a function that accepts 2 numbers and returns the sum
# Write a function that accepts 2 numbers and returns the quotient
# Write a function that accepts 2 numbers and returns the product
# Write a function that accepts 2 numbers and returns the difference
 
=== Average level difficulty ===
 
1. Write a function that accepts two arguments. A name (as string) and a nice greeting (as a string). Your function should return a full sentence.
for example print my_function("joe","happy birthday")
returns -> Joe, I'd like to wish you a very happy birthday!
 
2. write a function that returns an ascii-art number ([http://patorjk.com/software/taag/#p=testall&f=Graffiti&t=1234567890 please click here to get the ascii numbers])
  for example: print my_number(132)
  would return:
 
                                       
                        .--,-``-.   
      ,---,      ,----,  /  /    '. 
  ,`--.' |    .'  .' \/ ../        ; 
  /    /  :  ,----,'    \ ``\  .`-    '
:    |.' '  |    :  .  ;\___\/  \  :
`----':  |  ;    |.'  /      \  :  |
    '  ' ;  `----'/  ;      /  /  / 
    |  | |    /  ;  /        \  \  \ 
    '  : ;  ;  /  /-,  ___ /  :  |
    |  | '  /  /  /.`|  /  /\  /  :
    '  : |./__;      : / ,,/  ',-    .
    ;  |.'|  :    .'  \ ''\        ; 
    '---'  ;  | .'      \  \    .' 
          `---'          `--`-,,-'
 
3. Write a function that takes a string and returns the letters shifted 2 spaces to the right.
  for example: encode("abcdefg")
  would return: cdefghi
 
 
4. Write a function that takes an integer and RETURNS a word which corresponds to that integer.
  for example description_of_monster(1)
  would return: Fluffy
 
<syntaxhighlight lang="python">
def description_of_monster(value):
    if value == 1:
        return "fluffy"
    elif value == 2:
        return "spikey"
    elif value == 3:
        return "slimy"
    else:
        return "scary"
       
                   
print("One day, as I was walking along, I saw a " + description_of_monster(2) + " monster!")
print("As you peek around the dark corner, you see a  " + description_of_monster(6) + " monster!")
print("I don't really like " + description_of_monster(1) + " monsters.")
</syntaxhighlight>
 
=== Expert level difficulty ===
 
[[File:Dice.jpeg|right|frame|Dice]]
 
 
A common mechanic in computer games is to simulate a dice roll. Please write a function that rolls dice for you and RETURNS the result.
 
  for example: roll_dice(d6,3) <-- would roll a six sided die 3 times and return the result
  for example: roll_dice(d12,1) <-- would roll a 12 sided dice 1 and return the result
  for example: roll_dice(d20,4)  <-- would roll a 20 sided die 4 times and return the result.
 
  You should model a 4 sided, 6 sided, 8 sided, 10 sided, 12 sided, 20 sided, and 100 sided die.


  As extra-credit, you might want to return the result of each roll and then the final total.
* [[Lambda functions]]
  for example: roll_dice(d6,3) <-- might return 6 3 1 10


==References==
==References==

Latest revision as of 13:14, 23 September 2020

A function f takes an input x, and returns a single output f(x). One metaphor describes the function as a "machine" or "black box" that for each input returns a corresponding output.[1]

Introduction

We can control the flow of a program by calling a function. If we call a function, it executes, returns a value, and then resumes the program where it was called.

In programming, a named section of a program that performs a specific task is called a function. In this sense, a function is a type of procedure or routine. Some programming languages make a distinction between a function, which returns a value, and a procedure, which performs some operation but does not return a value.

Most programming languages come with a prewritten set of functions that are kept in a library. You can also write your own functions to perform specialized tasks. [2]

We use function so we don't need to repeat ourselves. Please watch the video below and remember the content.


The difference between returning and printing

Students often print from within a function. Please understand the difference between printing a result from a function and returning a result from a function.

print: gives the value to the user as an output string. print(3) would give a string '3' to the screen for the user to view. The program would lose the value.

return: gives the value to the program. Callers of the function then have the actual data and data type (bool, int, etc...) return 3 would have the value 3 put in place of where the function was called.[3]

In general, you should return a value from a function and not directly print from a function.

Example of a function

#
# this is a simple function that remembers who like hamburgers and who doesn't like hamburgers. 
#

def likesHamburgers(name):
    if name == "Alisher":
        likes_hamburgers ="yes"
    else:
        likes_hamburgers="no"
    return likes_hamburgers
    
print likesHamburgers("Bill")
print likesHamburgers("Alisher")    
print likesHamburgers("foo")

Another classic example of a function

#
# this is a simple function
#

def calculator(number1, number2):
    answer = number1 + number2
    return answer
    
print calculator(12,43)
print calculator(91,673)
print calculator(1,3)
print calculator(87,1098)

Some decent videos about functions in Python



See Also

References