This chapter focuses on functions as modules of code. Almost any program uses functions, and that is why it is essential to understand how to define and use them, and more importantly, how to share data between them. Modularization is a key concept in programming. Not only it is one of the basic features of Structured Programming, but it is also the key for defining and understanding other programming paradigms such as Object-Oriented Programming and Functional Programming. This chapter shows how to define and use functions and also how to share data between functions in a program. This data sharing involves passing data to a function and receiving data from it.