Functions - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Functions

Description:

Exercise 5. Functions. a group of declarations and statements that ... Exercise. Write a program that gets a positive integer from the user and prints all the ... – PowerPoint PPT presentation

Number of Views:30
Avg rating:3.0/5.0
Slides: 36
Provided by: mrl8
Category:
Tags: functions

less

Transcript and Presenter's Notes

Title: Functions


1
Functions
  • Exercise 5

2
Functions
  • a group of declarations and statements that is
    assigned a name
  • effectively, a named statement block
  • usually has a value
  • a sub-program
  • when we write our program we always define a
    function named main
  • inside main we can call other functions
  • which can themselves use other functions, and so
    on

3
Example - Square
  • include ltstdio.hgt
  • double square(double a)
  • return aa
  • int main(void)
  • double num
  • printf("enter a number\n")
  • scanf("lf",num)
  • printf("square of g is g\n",num,square(num))
  • return 0

This is a function defined outside main
Here is where we call the function square
4
Why use functions?
  • they can break your problem down into smaller
    sub-tasks
  • easier to solve complex problems
  • generalize a repeated set of instructions
  • we dont have to keep writing the same thing over
    and over
  • printf and scanf are good examples
  • they make a program much easier to read and
    maintain

5
Characteristics of Functions
  • return-type name(arg_type1 arg_name1, arg_type2
    arg_name2, )
  • function body
  • return value

int main(void)
double square(double a) return aa
6
Return Statement
  • Return causes the execution of the function to
    terminate and returns a value to the calling
    function
  • The type of the value returned must be the same
    as the return-type defined for the function (or a
    lower type)

7
Exercise
  • Write a program that gets a positive integer from
    the user and prints all the prime numbers from 2
    up to that integer.
  • (Use a function that returns 1 if its parameter
    is prime, 0 otherwise)

8
Solution
  • is_prime_func.c

9
The Great Void
  • Sometimes theres no reason for a function to
    return a value
  • In these cases, the function return type should
    be void
  • If the return keyword is used within such a
    function it exits the function immediately. No
    value needs be specified

10
The Great Void
  • Calling return in a function returning void is
    not obligatory
  • If the function receives no parameters, the
    parameter list should be replaced by void (or
    just nothing)

11
Example
  • void ShowHelp(void)
  • printf("This function explains what this program
    does\n")
  • printf("Yadayadayada")
  • / ... /
  • int main(void)
  • char choice
  • printf("Please enter your selection ")
  • scanf("c", choice)
  • if (choiceh)
  • ShowHelp()
  • else if / Program continues /

12
Pass-by-value
  • Function arguments are passed to the function by
    copying their values rather than giving the
    function direct access to the actual variables
  • A change to the value of an argument in a
    function body will not change the value of
    variables in the calling function
  • Example add_one.c

13
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
34
1
14
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
34
1
15
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
34
1
add_one memory state
b
1
16
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
34
1
add_one memory state
b
2
17
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
34
1
add_one memory state
b
2
18
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
2
1
19
add_one step by step
  • int add_one(int b)
  • bb1
  • return b
  • int main(void)
  • int a34,b1
  • a add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

main() memory state
a
b
2
1
20
Riddle me this
int main(void) int n printf("enter a
number\n") scanf("d",n)
printf("d!d\n", n,
factorial(n)) / What will this print? /
printf("n d\n", n) return 0
  • include ltstdio.hgt
  • int factorial(int n)
  • int fact 1
  • while (ngt1)
  • fact n
  • n--
  • return fact

21
Scope of variables
  • A variable declared within a function is
    unrelated to variables declared elsewhere, even
    if they have the same name
  • A function cannot access variables that are
    declared in other functions
  • Example scope.c

22
Wrong way to do it
  • int add_one(int b)
  • ab1
  • int main(void)
  • int a34,b1
  • add_one(b)
  • printf("a d, b d\n", a, b)
  • return 0

23
Function Declaration
  • Most software projects in C are composed of more
    than one file
  • We want to be able to define the function in one
    file, and to use it in all files

24
Function Declaration
  • For this reason, the function must be declared in
    every file in which its called, before its
    called for the first time
  • the declaration contains

return_type Function_name(argument types)
25
Function Declaration
  • include ltstdio.hgt
  • int factorial(int a) / Function Declaration! /
  • int main(void)
  • int num
  • printf("enter a number\n")
  • scanf("d", num)
  • printf("d ! d\n", num, factorial(num))
  • return 0
  • int factorial(int a)
  • int i, b 1
  • for(i 1 I lt a i)
  • b bi

26
Function Declaration
  • stdio.h actually contains a large set of function
    declarations
  • The include directive tells the compiler to
    insert these declarations into the file, so that
    these functions could be called

27
The math library
  • A collection of mathematical functions
  • Need to include the header file math.h (include
    ltmath.hgt)
  • Use functions of the library, e.g.
  • double s,p
  • s sqrt(p)
  • Declared in math.h
  • double sqrt (double x)

28
The math library
  • sin(x), cos(x), tan(x)
  • x is given in radians
  • asin(x), acos(x), atan(x)
  • log(x)
  • sqrt(x)
  • pow(x,y) raise x to the yth power.
  • ceil(x), floor(x) and more

29
Exercise
  • Write a function that uses the formula
  • in order to approximate ?. The function should
    accept
  • an argument n which determines the number of
    terms in
  • the formula. It should return the approximation
    of ?.
  • Write a program that gets an integer n from the
    user,
  • and approximate ? using n terms of the above
    formula.

30
Solution
  • pi.c

31
Exercise
  • Modify the previous function that approximates
  • ?. The function should accept an argument
  • specifying the desired accuracy, and keep
  • adding terms until the contribution of the next
  • term drops below this level.
  • Write a program that gets a (small) double
  • epsilon from the user, and approximates ?
  • within this function.

32
Solution
  • pi_eps.c

33
The debugger
  • Some programs may compile correctly, yet not
    produce the desirable results.
  • These programs are valid and correct C programs,
    yet not the programs we meant to write!
  • The debugger can be used to follow the program
    step by step and may help detecting bugs in an
    already compiled program.

34
The debuggers common features
  • Setting breakpoints (a point where the execution
    stops) bring the cursor to desired line and
    press the palm icon or F9. A dark red dot appears
    near the line.
  • Executing a debugged run Build-gtstart debug-gtgo
    or F5. The program will run and stop at the first
    breakpoint.

35
The debuggers common features (cont.)
  • Stopping at a specific line Bringing the cursor
    to the line and press ctrlF10, or Build-gtstart
    debug-gtgo to cursor. The program will stop at
    that point.
  • Stepping to the next line F10.
  • Entering a function F11.
  • Seeing variable values quickwatch and/or debug
    window at the bottom.
  • The yellow arrow indicates our whereabouts at any
    given moment.
Write a Comment
User Comments (0)
About PowerShow.com