1 introduction to computers ii lecture 4 dr. mehmet demirer dr. seniha esen yuksel
TRANSCRIPT
![Page 1: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/1.jpg)
1
Introduction to Computers IILecture 4
Dr. Mehmet Demirer
Dr. Seniha Esen Yuksel
![Page 2: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/2.jpg)
2
• Contents: Utilizing the existing information Top-down design
– Start with the broadest statement of the problem
– Works down to more detailed sub-problems.
Modular programming
![Page 3: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/3.jpg)
3
Existing Information
• Programmers seldom start from scratch when writing a program.
• Typically, you will reuse work that has been done by yourself or others For example, using printf and scanf
• You start with your algorithm, and then implement it piece by piece When implementing these pieces, you can save
effort by reusing functionality.
![Page 4: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/4.jpg)
4
Utilizing existing information
• Generated system documents Problem description (data requirement) Solution algorithm
• Strategy Editing the data requirements to conform constant
and variable definitions Using initial algorithm and its refinements
(formulas) as the program comments.
![Page 5: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/5.jpg)
5
Case Study
• Problem:
get the radius of a circle, compute and display the circle’s area and circumference.
![Page 6: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/6.jpg)
6
Analysis
• Data requirements: Constant
PI = 3.14159 Input
radius Output
areacircumference
Relevant formulasarea of a circle = PI * radius2
circumference = 2 * PI * radius
![Page 7: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/7.jpg)
7
Design
• Algorithm Get the circle radius Calculate the area and circumference Display the results
• Refinements: Assign PI * radius * radius to area Assign 2 * PI * radius to circumference
![Page 8: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/8.jpg)
8
/* * Calculate and display the area and circumference of a circle */#include <stdio.h>#define PI 3.14159 /* constant PI */
int main(void){ double radius; /* input – radius of a circle */ double area; /* output – area of a circle */ double circum; /* output – circumference */ /* Get the radius */ /* Calculate the area */ /* Assign PI * radius * radius to area */
/* Calculate the circumference */ /* Assign 2 * PI * radius to circumference */
/* Display the area and circumference */ return (0);}
![Page 9: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/9.jpg)
9
/* * Calculate and display the area and circumference of a circle */#include <stdio.h>#define PI 3.14159 /* constant PI */
int main(void){ double radius; /* input – radius of a circle */ double area; /* output – area of a circle */ double circum; /* output – circumference */ /* Get the radius */ printf(“Enter radius> “); scanf(“lf”, &radius);
/* Calculate the area */ area = PI*radius*radius;
/* Calculate the circumference */ circum = 2*PI*radius;
/* Display the area and circumference */ printf(“The area is %.4f\n”, area); printf(“The circumference is %.4f\n”, circum);
return (0);}
![Page 10: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/10.jpg)
Case Study Computing the Weight of a Batch of
Flat WashersStep 1: Problem
You work for a hardware company that manufactures flat washers. To estimate shipping costs, your company needs a program that computes the weight of a specified quality of flat washers.
11
![Page 11: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/11.jpg)
12
Case Study
• Problem: computes the weight of a specified quantity of flat washers.
Rim area = PI(d2/2)2 - PI(d1/2)2
d1d2
![Page 12: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/12.jpg)
13
Data requirement
• Problem constant
PI 3.14159
• Problem input
double hole_diameter, edge_diameter
double thickness, density, quantity
• Problem output
double weight
![Page 13: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/13.jpg)
14
Data requirement (Cont.)
• Program variables
double hole_radius, edge_radius
double rim_area, unit_weight• Relevant formulas
area of a circle = PI * radius2
radius of a circle = diameter / 2
rim area = area(outer) – area(inner)
unit weight = rim area * thickness * density
![Page 14: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/14.jpg)
15
Design
1. Get the diameters, thickness, density and quantity
2. Compute the rim area3. Compute the weight of one flat washer4. Compute the weight of the batch of washers5. Display the weight of the batch of washers
![Page 15: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/15.jpg)
16
Refinement• 3.1 compute radius
• 3.2 rim_area is PI * edge_radius * edge_radius – PI * hole_radius * hole_radius
• 4.1 unit_weight is rim_area * thickness * density
![Page 16: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/16.jpg)
17
![Page 17: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/17.jpg)
18
![Page 18: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/18.jpg)
19
Library Functions
• Predefined Functions and Code Reuse
• C Library Functions
• A Look at Where We Are Heading
![Page 19: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/19.jpg)
20
Library functions
• Code-reuse
benefits: avoid redevelopment.
avoid errors.
• C providing many predefined functions that can be used to perform certain tasks.
• For example, mathematic computations.
sqrt(x)
![Page 20: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/20.jpg)
21
Example
• Display the square root of two numbers provided as the input data (first and second) and the square root of their sum.
![Page 21: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/21.jpg)
22
/* * Perform three square root computation */#include <stdio.h>#include <math.h>
int main(void){ double first, second, /* input – two data value */ double first_sqrt; /* output – square root of first */ double second_sqrt; /* output – square root of second */ double sum_sqrt; /* output – square root of sum */ /* Get first number and display its square root */ printf(“Enter the first number> “); scanf(“lf”, &first); first_sqrt = sqrt(first); printf(“The square root of the first number is %.2f\n”, first_sqrt);
/* Get second number and display its square root */ printf(“Enter the first number> “); scanf(“lf”, &second); second_sqrt = sqrt(second); printf(“The square root of the second number is %.2f\n”, first_sqrt);
/* display the square root of the sum */ sum_sqrt = sqrt(first+second); printf(“The square root of the sum is %.2f\n”, sum_sqrt); return (0);}
![Page 22: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/22.jpg)
23
![Page 23: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/23.jpg)
3-24
Table 3.1 Some Mathematical Functions(1/3)
Function
Standard Header File
Example Argument(s)
Result
abs(x) <stdio.h>
x=-5abs(x)=5
int int
ceil(x) <math.h>
x=45.23ceil(x)=46
double double
cos(x) <math.h>
x=0.0cos(x)=1.0
double(radians)
double
exp(x) <math.h>
x=1.0exp(x)=2.71828
double double
![Page 24: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/24.jpg)
3-25
Table 3.1 Some Mathematical Functions (2/3)
Function
Standard Header File
Example Argument(s)
Result
fabs(x) <math.h> x=-8.432fab(x)=8.432
double double
floor(x) <math.h> x=45.23floor(x)=45
double double
log(x) <math.h> x=2.71828log(x)=1.0
double double
log10(x)
<math.h> x=100.0log10(x)=2.0
double double
![Page 25: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/25.jpg)
3-26
Table 3.1 Some Mathematical Functions (3/3)
Function
Standard Header File
Example Argument(s)
Result
pow(x,y)
<math.h>
x=0.16 y=0.5pow(x,y)=0.4
doubledouble
double
sin(x) <math.h>
x=1.5708sin(x)=1.0
double(radians)
double
sqrt(x) <math.h>
x=2.25sqrt(x)=1.5
double double
tan(x) <math.h>
x=0.0tan(x)=0.0
double(radians)
double
![Page 26: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/26.jpg)
27
Standard math functions in C
• Comments: Type conversion
int double, no problem
double int, lost fractional part Other restrictions
arguments for log and log10 must be positive
arguments for sqrt can not be negative
![Page 27: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/27.jpg)
28
Example
• Using pow and sqrt functions to compute the roots of equation: ax2 + bx + c = 0
• disc= pow(b,2) – 4 * a * c
root_1 = ( -b + sqrt(disc)) / (2 * a)
root_2 = ( -b - sqrt(disc)) / (2 * a)
• a2 = b2 + c2 – 2bc cos α
2 4
2
b b acroot
a
2 0ax bx c
![Page 28: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/28.jpg)
29
Using your own functions
• find_area(r) returns the area
find_circum(r) returns the circumference
• rim_area = find_area(edge_radius) -
find_area(hole_radius)
![Page 29: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/29.jpg)
30
Predefined Functions and Code Reuse
• The primary goal of software engineering is to write error-free code.
• Reusing code that has already been written & tested is one way to achieve this. ”Why reinvent the wheel?”
• C promotes reuse by providing many predefined functions. e.g. Mathematical computations. Input/Output: e.g. printf, scanf
• C’s standard math library defines a function named sqrt that performs the square root computation. It is called like:y = sqrt(x)
• This passes the argument x to the function sqrt. After the function executes, the result is assigned to the left hand side variable y.
![Page 30: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/30.jpg)
31
Function sqrt.
Function sqrt as a black box.
first_sqrt = sqrt(25.0);
second_sqrt = sqrt(second);
third_sqrt = sqrt(first+second);
Z = 5.7 + sqrt(num);
![Page 31: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/31.jpg)
32
C Library Functions• The next slide lists some commonly used mathematical
functions (Table 3.1 in the text)• In order to use them you must use #include with the
appropriate library. Example, to use function sqrt you must include math.h.
• If one of the functions in the next slide is called with a numeric argument that is not of the argument type listed, the argument value is converted to the required type before it is used. Conversion of type int to type double cause no problems Conversion of type double to type int leads to the loss of any
fractional part.• Make sure you look at documentation for the function so you
use it correctly.
![Page 32: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/32.jpg)
33
Some Mathematical Library FunctionsFunction Header File Purpose Arguments Result
abs(x) <stdlib.h> Returns the absolute value of its integer
argument x.
int int
sin(x), cos(x), tan(x)
<math.h> Returns the sine, cosine, or tangent of
angle x.
double
(in radians)
double
log(x) <math.h> Returns the natural log of x.
double (must be positive)
double
pow(x,y) <math.h> Returns xy double, double double
sqrt(x) <math.h> double (must be positive)
doublex
![Page 33: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/33.jpg)
34
Function we have seen so far
• We’ve seen a few other I/O library functions– printf, scanf– fprintf, fscanf– fopen, fclose
To use them, have to use #include <stdio.h>
• Mathematical Functions– sqrt, pow, sin, cos etc.
To use them, have to use #include <math.h>
• We use C’s predefined functions as building blocks to construct a new program.
![Page 34: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/34.jpg)
35
Where We are Heading?• C also allows us to write our own functions.• We could write our own functions to find area and
find circumference of a circle. Function find_area(r) returns the area of a circle with
radius r. Function find_circum(r) returns the circumference of a
circle with radius r. The following statements can be used to find these values.
area = find_area(r);
circum = find_circum(r);
![Page 35: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/35.jpg)
36
Top Down Design
• Use the top-down approach for analyzing all complex problems.
• The solution to any complex problem is conceptually simpler if viewed hierarchically as a tree of subproblems.
• It is more convenient to design your solution first with rough blocks, and then refine them gradually.
• You first break a problem up into its major subproblems and then solve those subproblems to derive the solution to the original problem.
![Page 36: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/36.jpg)
37
Example: Top-down approach
• Drawing a Stick Figure in the screen as an example of problem solving with Top-down design approach.
• We can draw this figure with the basic three components Circle Intersecting lines Base line
![Page 37: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/37.jpg)
38
Structure Chart for Drawing Stick Figure
• Structure chart is an software engineering documentation tool.
![Page 38: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/38.jpg)
39
Function main for Stick Figure
![Page 39: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/39.jpg)
40
Void Functions without Arguments
• Functions that do not have arguments and return no values. Output is normally placed in some place else (e.g. screen)
• Why would you want to do these? They can help with top down design of your program. Instead of writing all of your code in your main function,
separate it into separate functions for each subproblem.
![Page 40: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/40.jpg)
41
Void Functions Without Arguments
• Function Prototypes
• Function Definitions
• Local variables.
• Placement of Functions in a Program
• Program Style
• Advantages of Using Function Subprograms Procedural Abstraction Reuse of Functions.
![Page 41: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/41.jpg)
42
Function Prototype (1)/* This program draws a circle in the screen */
#include <stdio.h>
/* Function prototypes */void draw_circle(void); /* Draws a circle */
int main(void){ draw_circle(); return (0);}
/* Draws a circle */void draw_circle(void) { printf(“ * *\n”); printf(“ * *\n”); printf(“ * *\n”);}
![Page 42: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/42.jpg)
43
Function Prototype (2)• Like other identifiers in C, a function must be declared
before it can be referenced.• To do this, you can add a function prototype before main
to tell the compiler what functions you are planning to use.• A function prototype tells the C compiler:
1. The data type the function will return– For example, the sqrt function returns a type of double.
2. The function name3. Information about the arguments that the function
expects.– The sqrt function expects a double argument.
• So the function prototype for sqrt would be:double sqrt(double);
![Page 43: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/43.jpg)
44
More on void Functions• void draw_circle(void); is a void function
Void function - does not return a value– The function just does something without
communicating anything back to its caller. If the arguments are void as well, it means the
function doesn’t take any arguments.• Now, we can understand what our main function
means:
int main(void)
• This means that the function main takes no arguments, and returns an int
![Page 44: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/44.jpg)
45
Function Definition (1)/* This program draws a circle in the screen */
#include <stdio.h>
/* Function prototypes */void draw_circle(void); /* Draws a circle */
int main(void){ draw_circle(); return (0);}
/* Draws a circle */void draw_circle(void) { printf(“ * *\n”); printf(“ * *\n”); printf(“ * *\n”);}
![Page 45: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/45.jpg)
46
Function Definition (2)• The prototype tells the compiler what arguments the function
takes and what it returns, but not what it does.• We define our own functions just like we do the main
function Function Header – The same as the prototype, except it is
not ended by the symbol ; Function Body – A code block enclosed by {}, containing
variable declarations and executable statements.• In the function body, we define what actually the function
does In this case, we call printf 3 times to draw a circle. Because it is a void function, we can omit the return
statement.• Control returns to main after the circle has been drawn.
![Page 46: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/46.jpg)
47
Placement of Functions in a program
• In general, we will declare all of our function prototypes at the beginning (after #include or #define)
• This is followed by the main function• After that, we define all of our functions.• However, this is just a convention.• As long as a function’s prototype appears before it is
used, it doesn’t matter where in the file it is defined.• The order we define them in does not have any impact
on how they are executed
![Page 47: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/47.jpg)
48
Execution Order of Functions• Execution order of functions is determined by the
order of execution of the function call statements.• Because the prototypes for the function subprograms
appear before the main function, the compiler processes the function prototypes before it translates the main function.
• The information in each prototype enables the compiler to correctly translate a call to that function.
• After compiling the main function, the compiler translates each function subprogram.
• At the end of a function, control always returns to the point where it was called.
![Page 48: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/48.jpg)
49
Figure 3.15 Flow of Control Between the main Function and a Function Subprogram
![Page 49: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/49.jpg)
50
Program Style
• Each function should begin with a comment that describes its purpose.
• If the function subprograms were more complex, we would include comments on each major algorithm step just as we do in function main.
• It is recommended that you put prototypes for all functions at the top, and then define them all after main.
![Page 50: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/50.jpg)
51
Advantages of Using Function Subprograms
• There are two major reasons:1. A large problem can be solved easily by breaking it
up into several small problems and giving the responsibility of a set of functions to a specific programmer.
• It is easer to write two 10 line functions than one 20 line one and two smaller functions will be easier to read than one long one.
2. They can simplify programming tasks because existing functions can be reused as the building blocks for new programs.
• Really useful functions can be bundled into libraries.
![Page 51: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/51.jpg)
52
Procedural Abstraction• Procedural Abstraction – A programming technique in
which a main function consists of a sequence of function calls and each function is implemented separately.
• All of the details of the implementation to a particular subproblem is placed in a separate function.
• The main functions becomes a more abstract outline of what the program does. When you begin writing your program, just write out your algorithm in
your main function. Take each step of the algorithm and write a function that performs it
for you.
• Focusing on one function at a time is much easier than trying to write the complete program at once.
![Page 52: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/52.jpg)
53
Reuse of Function Subprograms
• Functions can be executed more than once in a program. Reduces the overall length of the program and the
chance of error.• Once you have written and tested a function, you can
use it in other programs or functions.
![Page 53: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/53.jpg)
54
A good use of void functions – A separate function to display instructions for the user.
![Page 54: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/54.jpg)
3-55
Void Functions with Input Arguments
• void function does not return a result
• Actual argument an expression used inside the parentheses of a
function call
• Formal parameter an identifier that represents a corresponding actual
argument in a function definition
![Page 55: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/55.jpg)
3-56
Figure 3.18 Function print_rboxed and Sample Run
![Page 56: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/56.jpg)
3-57
Figure 3.18 Function print_rboxed and Sample Run (cont’d)
![Page 57: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/57.jpg)
3-58
Figure 3.19 Effect of Executing print_rboxed
(135.68);
![Page 58: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/58.jpg)
3-59
Function with Input Argument and a Single Result
• (Figure 3.20) & (Figure 3.21) & (Figure 3.22) shows how to write functions with input arguments
that return a single results.
![Page 59: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/59.jpg)
3-60
Figure 3.20 Function with Input Arguments and One Result
![Page 60: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/60.jpg)
3-61
Figure 3.21 Functions find_circum and find_area
![Page 61: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/61.jpg)
3-62
Figure 3.22 Effect of Executing circum = find_circum (radius);
![Page 62: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/62.jpg)
3-63
Function Definition (Input Argument and Single Result)
• Syntax : function interface comment
ftypefname (formal parameter declaration
list){
local variable declarationsexecutable statements
}
![Page 63: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/63.jpg)
3-64
Example
• Example :/* * Finds the cube of its argument. * Pre: n is defined. */
intcube(int n){
return(n * n * n) ;}
![Page 64: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/64.jpg)
3-65
Function Interface Comment
• Precondition a condition assumed to be true before a function
call
• Postcondition A condition assumed to be true after a function
executes
![Page 65: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/65.jpg)
3-66
Functions with Multiple Arguments
• Example 3.6 Function scale multiplies its first argument by 10
raised to the power indicated by its second argument. (Figure 3.23)
![Page 66: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/66.jpg)
3-67
Figure 3.23 Function scale
![Page 67: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/67.jpg)
3-68
Example: Testing Function Scale
Actual Argument
num_1
num_2
Formal Parameter
x
n
![Page 68: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/68.jpg)
3-69
Figure 3.24 Testing Function scale
![Page 69: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/69.jpg)
3-70
Figure 3.24 Testing Function scale (cont’d)
![Page 70: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/70.jpg)
3-71
Argument List Correspondence(The not rules)
• The number of actual arguments used in a call to a function must be the same as the number of formal parameters listed in the function prototype.
• The order of arguments in the lists determines correspondence.
• Each actual argument must be of a data type that can be assigned to the corresponding formal parameter.
![Page 71: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/71.jpg)
3-72
The Function Data Area
• Function call : an area of memory is allocated for storage of
function data
• Function terminates : function data area lost
• Local variable : initially undefined the execution of the function body changes the value
of this variable
![Page 72: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/72.jpg)
3-73
Figure 3.25 Data Areas After Call scale(num_1, num_2);
![Page 73: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/73.jpg)
3-74
Testing Functions Using Drivers
• Driver A short function written to test another function by
defining its arguments, calling it, and displaying its result
![Page 74: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/74.jpg)
3-75
3.6 Common Programming Errors
• Using functions you must Place prototypes for your own function
subprograms in the source file preceding the main function
Place the actual function definitions after the main function
• Syntax or run-time errors may occur when you use functions.
![Page 75: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/75.jpg)
76
25 /* Function maximum definition */
26 /* x, y and z are parameters */
27 int maximum( int x, int y, int z )
28 {
29 int max = x; /* assume x is largest */
30
31 if ( y > max ) { /* if y is larger than max, assign y to max */
32 max = y;
33 } /* end if */
34
35 if ( z > max ) { /* if z is larger than max, assign z to max */
36 max = z;
37 } /* end if */
38
39 return max; /* max is largest value */
40
41 } /* end function maximum */ Enter three integers: 22 85 17 Maximum is: 85 Enter three integers: 85 22 17 Maximum is: 85 Enter three integers: 22 17 85 Maximum is: 85
Function definition
![Page 76: 1 Introduction to Computers II Lecture 4 Dr. Mehmet Demirer Dr. Seniha Esen Yuksel](https://reader035.vdocuments.mx/reader035/viewer/2022070408/56649e6f5503460f94b6c441/html5/thumbnails/76.jpg)
77
1 /*
2 Finding the maximum of three integers */
3 #include <stdio.h>
4
5 int maximum( int x, int y, int z ); /* function prototype */
6
7 /* function main begins program execution */
8 int main( void )
9 {
10 int number1; /* first integer */
11 int number2; /* second integer */
12 int number3; /* third integer */
13
14 printf( "Enter three integers: " );
15 scanf( "%d%d%d", &number1, &number2, &number3 );
16
17 /* number1, number2 and number3 are arguments
18 to the maximum function call */
19 printf( "Maximum is: %d\n", maximum( number1, number2, number3 ) );
20
21 return 0; /* indicates successful termination */
22
23 } /* end main */
24
Function prototype
Function call