Jordi Cortadella, Ricard Gavaldà, Fernando Orejas

Slides:



Advertisements
Similar presentations
Pass by Value. COMP104 Pass by Value / Slide 2 Passing Parameters by Value * A function returns a single result (assuming the function is not a void function)
Advertisements

1 Lecture 16:User-Definded function I Introduction to Computer Science Spring 2006.
Introduction to Programming (in C++) Subprograms: procedures and functions Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science,
Functions CS 308 – Data Structures. Function Definition Define function header and function body Value-returning functions return-data-type function-name(parameter.
Functions Most useful programs are much larger than the programs that we have considered so far. To make large programs manageable, programmers modularize.
Functions:Passing Parameters by Value Programming.
1 9/25/06CS150 Introduction to Computer Science 1 Nested Ifs, Logical Operators, exit() Page 194.
Computer Science 1620 Reference Parameters. Parameters – Pass by Value recall that the parameter of a function is assigned the value of its corresponding.
Introduction to Programming (in C++) Vectors Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Introduction to Programming (in C++) Introduction Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
C++ Functions. 2 Agenda What is a function? What is a function? Types of C++ functions: Types of C++ functions: Standard functions Standard functions.
Introduction to Programming (in C++) Data types and visibility Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. Computer Science, UPC.
Introduction to Programming (in C++) Recursion Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Introduction to Programming (in C++) Data and statements Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Data types and their representation Jordi Cortadella Department of Computer Science.
Prime numbers Jordi Cortadella Department of Computer Science.
Introduction to Programming (in C++) Algorithms on sequences. Reasoning about loops: Invariants. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept.
Project 1 Due Date: September 25 th Quiz 4 is due September 28 th Quiz 5 is due October2th 1.
Sequences Jordi Cortadella Department of Computer Science.
Introduction to Programming (in C++) Loops Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
COMPUTER PROGRAMMING. Functions What is a function? A function is a group of statements that is executed when it is called from some point of the program.
CPS120: Introduction to Computer Science Functions.
First steps Jordi Cortadella Department of Computer Science.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 7 Clicker Questions September 22, 2009.
Section 4 - Functions. All of the programs that we have studied so far have consisted of a single function, main(). However, having more than one function.
Chapter 7 Selection Dept of Computer Engineering Khon Kaen University.
For loops, nested loops and scopes Jordi Cortadella Department of Computer Science.
Structure Programming Lecture 8 Chapter 5&6 - Function – part I 12 December 2015.
CS1201: PROGRAMMING LANGUAGE 2 FUNCTIONS. OVERVIEW What is a Function? Function Prototype Vs Decleration Highlight Some Errors in Function Code Parameters.
FUNCTIONS - What Is A Function? - Advantages Function Declaration
1 2/2/05CS250 Introduction to Computer Science II Pointers.
Parameter passing Jordi Cortadella Department of Computer Science.
Passing Function Arguments by Reference : A Sample Lesson for CS 1 using the C Programming Language Andy D. Digh Friday, May 29th, 1998.
Functions Jordi Cortadella Department of Computer Science.
1 09/10/04CS150 Introduction to Computer Science 1 What Actions Do We Have Part 2.
Intro Programming in C++ Computer Science Dept Va Tech August, 2001 © Barnette ND & McQuain WD 1 Pass-by-Value - default passing mechanism except.
Functions and Libraries. The idea of a function Functions in programming A function is a block of code that has been given a name. To invoke that code.
Chapter Topics The Basics of a C++ Program Data Types
CHAPTER 4 REPETITION CONTROL STRUCTURE / LOOPING
Chapter 1.2 Introduction to C++ Programming
生查子 ~ 歐陽修 去年元夜時,花市燈如晝, 月上柳梢頭,人約黃昏後; 今年元夜時,月與燈依舊, 不見去年人,淚濕春衫袖。
Basic Elements of C++.
For loops, nested loops and scopes
Pointers and Pointer-Based Strings
Basic Elements of C++ Chapter 2.
User-defined Functions
Multiple Files Revisited
User Defined Functions
Chapter 5 Function Basics
Functions A function is a “pre-packaged” block of code written to perform a well-defined task Why? Code sharing and reusability Reduces errors Write and.
Name: Rubaisha Rajpoot
User-defined Functions
CS150 Introduction to Computer Science 1
Pointers & Functions.
If Statements.
CS150 Introduction to Computer Science 1
CS150 Introduction to Computer Science 1
Engineering Problem Solving with C++ An Object Based Approach
Engineering Problem Solving with C++ An Object Based Approach
Jordi Cortadella Department of Computer Science
CS150 Introduction to Computer Science 1
Understanding Conditions
Pointers and Pointer-Based Strings
Arithmetic Operations
CS150 Introduction to Computer Science 1
CS150 Introduction to Computer Science 1
Life is Full of Alternatives
Predefined Functions Revisited
Pointers & Functions.
CS1201: Programming Language 2
Presentation transcript:

Introduction to Programming (in C++) Subprograms: procedures and functions Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC

Subprograms Programming languages, in particular C++, not only provide a set of basic operations and statements, but also a means to define our own operations and statements. We call the operations and statements that we define functions and procedures, respectively. Procedures and functions (subprograms) may have parameters. These represent the objects from our program that are used in the subprogram. Introduction to Programming © Dept. CS, UPC

It must include a return statement Subprograms Functions are defined as follows: Name of the function Type of result Parameters int times(int x, int y) { // Code } It must include a return statement Introduction to Programming © Dept. CS, UPC

Subprograms int times(int x, int y) { int p = 0; while (y > 0) { if (y%2 == 0) { y = y/2; x = x2; } else { p = p + x; y = y – 1; return p; Introduction to Programming © Dept. CS, UPC

Subprograms Procedures are defined similarly, but without delivering any result: No result void factors(int x) { // Code } Introduction to Programming © Dept. CS, UPC

Subprograms void factors(int x) { int f = 2; while (x != 1) { if (x%f == 0) { cout << f << endl; x = x/f; } else f = f + 1; Introduction to Programming © Dept. CS, UPC

Subprograms Subprogram definitions may appear before or after the main program. #include <iostream> using namespace std; int f() { // Code for f } int main() { // Code for the main program void p(int a) { // Code for p Introduction to Programming © Dept. CS, UPC

Subprograms A function can only be used if previously declared. A function can be declared and used before its code is defined. double volume_sphere(double radius); void some_geometry() { ... double V = volume_sphere(1.0); } double volume_sphere(double radius) { return 4Piradiusradiusradius/3; Introduction to Programming © Dept. CS, UPC

Subprograms Once a subprogram has been declared, it can be used. Functions are used as operations within expressions. Procedures are used as statements. i = times(3, i + 2) + 1; // function ... factors(i); // procedure Introduction to Programming © Dept. CS, UPC

Subprograms Appropriate use of subprograms: Increases readability: programs are better structured and easier to understand. Enables the use of abstraction in the program design. Facilitates code reuse. Introduction to Programming © Dept. CS, UPC

Subprograms Evaluating the expression times(3, i + 2) + 1 means executing the code of times over the arguments 3 and i+2 and then adding 1 to the result returned by the function. Introduction to Programming © Dept. CS, UPC

Subprograms Evaluating the statement factors(i); means executing the code of factors over the argument i. Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing When a subprogram is called, the arguments are passed to the subprogram, so that its code can be executed: times(3, i + 2) + ... int times(int x, int y) { … } Each argument must have the same type as its corresponding parameter. Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing In general, any expression can be the argument of a subprogram: double maximum(double a, double b); ... z = maximum(x, y); ... r = maximum(3, gcd(s - 4, i) + alpha); m = maximum(x, maximum(y + 3, 2Piradius)); Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing An object (a variable) is associated with a value and a memory location. In C++, there are two methods for parameter passing: Passing the value (call-by-value). This is denoted by just declaring the type and the name of the parameter. Passing the memory location (call-by-reference). This is denoted by adding the symbol & next to the parameter type. void p(int x, int& y) { ... } Call-by-value Call-by-reference Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing Call-by-value makes a copy of the argument at the beginning of the subprogram. It is equivalent to having, a statement that assigns the value of each argument to the corresponding parameter: times(3, i + 2) is equivalent to: int times(int x, int y) { x = 3; y = i + 2; int p = 0; ... } Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing The effect of call-by-reference is that the parameter becomes the same object (variable) as the argument, i.e., the parameter becomes an alias of the argument. Example: procedure to swap the value of two variables void exchange(int& x, int& y) { int z = x; x = y; y = z; } Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing exchange(a, b) Is equivalent to having: void exchange(int& x, int& y) { int z = a; a = b; b = z; } Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing // Pre: n >= 1 // Post: returns whether n is prime. // If it is not prime, d is a divisor. reference int x, divisor; bool p; ... cin >> x; p = is_prime(x + 3, divisor); bool is_prime(int n, int& d) { d = 2; bool prime = (n != 1); while (prime and d < n) { if (n%d == 0) prime = false; else d = d + 1; } return prime; n: 9 d: copy x: 6 prime: true false divisor: 3 2 p: false false Warning: we do not recommend the use of non-void functions with reference parameters in this course. Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing Use call-by-value to pass parameters that must not be modified by the subprogram. Use call-by-reference when the changes made by the subprogram must affect the variable to which the parameter is bound. In some cases, call-by-reference is used to avoid copies of large objects, even though the parameter is not modified. Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing To define a subprogram that, given two integers x and y, returns their quotient and remainder, we can write: void div(int x, int y, int& q, int& r) { q = x/y; r = x%y; } Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing For instance, if the parameters would be passed by reference in the function times, after the execution of the statements: int a = 4; int b = 2; int c = times(a, b); the value of a would be 0 and the value of b would be 8 (and the value of c would be 8). Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing For instance, after the definition: void exchange(int x, int y) { int z = x; x = y; y = z; } the statement exchange(a,b) would not have any effect on a and b. Introduction to Programming © Dept. CS, UPC

Subprograms: parameter passing A call-by-value parameter can receive any expression as an argument. A call-by-reference parameter can only be bound to variables. void exchange (int& a, int& b); ... exchange(a, b + 4); Incorrect parameter passing. Introduction to Programming © Dept. CS, UPC

The Least Common Multiple (LCM) Design a function that calculates the LCM of two numbers. Assume that we can use a function gcd(a,b) that calculates the greatest common divisor. // Pre: a>0, b>0 // Returns the LCM of a and b int lcm(int a, int b) { return (a/gcd(a,b))b; } Introduction to Programming © Dept. CS, UPC