Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular...
-
Upload
blaze-alexander -
Category
Documents
-
view
218 -
download
0
Transcript of Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular...
![Page 1: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/1.jpg)
Solving Complex Problems
![Page 2: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/2.jpg)
Review
• A subroutine is a set of instructions to perform a particular computation – used to solve subproblems of more complex problems– used for computations performed more than once in a
single program or that are required in many different programs
• you only need to write it once• Subroutines have names, zero or more parameters,
return types, and a body of statements that perform the actual computations
![Page 3: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/3.jpg)
Syntax
• The return-type specifies the data type of the output • The parameter-list is a comma-separated list of the input
variables and their types– each list item has the form input-type variable-name
• A program refers to the subroutine by subroutine-name• The body consists of the statements between { }
return-type subroutine-name( parameter-list ){ … statements …}
![Page 4: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/4.jpg)
Add two integers
int add(int x, int y){
return x+y;}
![Page 5: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/5.jpg)
Minimum of two integers
int minimum(int x, int y){
if(x < y) return x;
elsereturn y;
}
![Page 6: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/6.jpg)
Sum of positive integers
int sum_integers(int n)
{
int k;
int sum=0;
for(k=1; k<=n; k++)
{
sum=sum+k;
}
return sum;
}
![Page 7: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/7.jpg)
Factorial
int factorial(int n)
{
int k;
int fn=1;
for(k=2; k<=n; k++)
{
fn=fn*k;
}
return fn;
}
![Page 8: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/8.jpg)
What about harder problems?
• Examples so far: add, minimum, sum, factorial– straightforward computation– small number of intermediate variables– single control structure
• How do we design algorithms for more complicated problems?– complex computation– many intermediate variables– multiple control structures
• Often difficult to visualize all the details of a complete solution to a problem
![Page 9: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/9.jpg)
Top-down design
• Top-down design– original problem is divided into simpler independent
subproblems– successive refinement: these subproblems may
require further division into smaller subproblems– continue until all subproblems can be easily solved or
you already have a method to solve them
![Page 10: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/10.jpg)
Solving complex problems
• Divide complex problem into subproblems • For each subproblem
– analyze the problem • do we already have a subroutine to solve it?• can we easily design an algorithm to solve it? • can it be divided further?
– solve the problem• Combine solutions of all subproblems to solve the
original problem
![Page 11: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/11.jpg)
Minimum of three integers
Problem: Find the minimum of three integers
![Page 12: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/12.jpg)
Minimum of three integers
• Analyze the problem– Inputs
•x first integer•y second integer•z third integer
– Output•min_xyz minimum of x, y and z
– How do we find the minimum?• we already have a subroutine to find the minimum
of two integers …
![Page 13: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/13.jpg)
Top-down design
Compute minimum of x, y, and z
Compute minimum
of x and y
Compute minimum of solution to
SUBPROBLEM1 and zSUBPROBLEM1
SUBPROBLEM2
![Page 14: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/14.jpg)
Calling subroutines
• A subroutine call statement has the following syntax:
subroutine-name( parameters );
• Calling a subroutine executes the statements in the body of the called subroutine using the specified parameters
• parameters is a comma-separated list of input values– the input values must be of the same type as those in
the subroutine’s parameter list • The subroutine call statement may be part of an
assignment statement or an return statement
![Page 15: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/15.jpg)
Minimum of three integers
• We can call our minimum subroutine twice to compute the minimum of three integers
int min_xy, min_xyz;
min_xy = minimum(x,y);
min_xyz = minimum(min_xy,z);
![Page 16: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/16.jpg)
Minimum of three integers - subroutine
int min3(int x, int y, int z)
{
int min_xy, min_xyz;
min_xy = minimum(x,y);
min_xyz = minimum(min_xy,z);
return min_xyz;
}
![Page 17: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/17.jpg)
Combination
Problem: Compute C(n,k)
![Page 18: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/18.jpg)
Definition: combination
• A combination C(n,k) is the number of ways to select a group of k objects from a population of n distinct objects
where n! is the factorial function
n! = n*(n–1)*(n-2) … 3*2*1
n!k!(n-k)!
C(n,k)=
![Page 19: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/19.jpg)
Top-down design
Compute k!Compute n! Compute (n-k)!
n!k!(n-k)!
Compute C(n,k)=
SUBPROBLEM3SUBPROBLEM2SUBPROBLEM1
![Page 20: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/20.jpg)
Combination - subroutine
• We can call our factorial subroutine three times to compute C(n,k)
int combination(int n, int k)
{
return factorial(n)/
(factorial(k)*factorial(n-k));
}
![Page 21: Solving Complex Problems. Review A subroutine is a set of instructions to perform a particular computation –used to solve subproblems of more complex.](https://reader035.fdocuments.net/reader035/viewer/2022062423/5697bfeb1a28abf838cb7e18/html5/thumbnails/21.jpg)
Exercises
1. We have a subroutine sum_integers that computes the sum of the first n positive integers
Write a subroutine named sum_between to compute the inclusive sum between two integers by making two calls to sum_integers
2. Write a subroutine named min4 to compute the minimum of four numbers