Functions Exercise 5. Functions a group of declarations and statements that is assigned a name  effectively, a named statement block  usually has a.

Slides:



Advertisements
Similar presentations
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.
Advertisements

BBS514 Structured Programming (Yapısal Programlama)1 Functions and Structured Programming.
1 ICS103 Programming in C Lecture 5: Introduction to Functions.
Lecture 2 Introduction to C Programming
Introduction to C Programming
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.
Chapter 6: User-Defined Functions I
TK1913-C Programming1 TK1913-C Programming 1 C Library Functions C provides a collection of library functions for programmers If these library functions.
Guidelines for working with Microsoft Visual Studio.Net.
Guidelines for working with Microsoft Visual Studio 6.
Programming Functions. A group of declarations and statements that is assigned a name  effectively, a named statement block  usually has a value A sub-program.
1 Agenda - Loops while for for & while Nested Loops do-while Misc. & Questions.
1 Gentle Introduction to Programming Session 2: Functions.
Chapter 6: Functions.
Functions Lecture 4 – Section 2: 9/21/05 Section 4: 9/22/05.
Chapter 6: User-Defined Functions I Instructor: Mohammad Mojaddam
Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission.
Lecture 6 – Functions (2). Outline Recall - sample application functions that return no value functions that return a value Recall – global variable vs.
Incremental operators Used as a short-hand i++ or ++i  ==  i = i + 1 i-- or --i  ==  i = i – 1 i += a  ==  i = i + a i -= a  ==  i = i - a i *=
1 ICS103 Programming in C Lecture 7: Introduction to Functions.
CPS120: Introduction to Computer Science Functions.
Functions Top-down design Breaking a complex problem into smaller parts that we can understand is a common practice. The process of subdividing a problem.
FUNCTIONS AND STRUCTURED PROGRAMMING CHAPTER 10. Introduction A c program is composed of at least one function definition, that is the main() function.
1 C Programming Week 2 Variables, flow control and the Debugger.
CPS120: Introduction to Computer Science Lecture 14 Functions.
Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission.
C++ Programming Lecture 9 Functions – Part I By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
UniMAP SemI-09/10EKT120: Computer Programming1 Week 5 – Functions (1)
Chapter 9 Functions Dept of Computer Engineering Khon Kaen University.
Algorithms and Programming Functions Lecture 28. Summary of Previous Lecture while statement for statement break statement Nested loops.
CHAPTER 10 ARRAYS AND FUNCTIONS Prepared by: Lec. Ghader Kurdi.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 6: User-Defined Functions I.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 6: User-Defined Functions I.
Functions  A Function is a self contained block of one or more statements or a sub program which is designed for a particular task is called functions.
Functions. Why use functions? They can break your problem down into smaller sub-tasks (modularity).  easier to solve complex problems They make a program.
Chapter 3: User-Defined Functions I
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 6: User-Defined Functions I.
1 More on Arrays. 2 Review: Passing Arrays to Functions Passing an array: what goes on in the memory? Why isn’t it the same as when passing primitives?
Programming Fundamentals Enumerations and Functions.
Functions Dr. Sajib Datta Functions A function is a self-contained unit of program code designed to accomplish a particular task. Some functions.
1 Today: Functions. 2 Some General Tips on Programming Write your code modularly Compile + test functionality in the process.
Announcements. Practice questions, with and without solutions will be uploaded by Friday 5 th November, make sure to check them before the weekend \\netstorage\Subjects\ITCA-b\Exam.
Tarik Booker CS 242. What we will cover…  Functions  Function Syntax  Local Variables  Global Variables  The Scope of Variables  Making Functions.
C Programming.
UMBC CMSC 104 – Section 01, Fall 2016
C++ Laboratory Instructor: Andrey Dolgin
EKT120: Computer Programming
Chapter 6: User-Defined Functions I
Programming Functions.
Functions, Part 2 of 2 Topics Functions That Return a Value
Testing and Debugging.
Functions and Structured Programming
Functions Dr. Sajib Datta
C-language Lecture By B.S.S.Tejesh, S.Neeraja Asst.Prof.
Functions Department of Computer Science-BGU יום רביעי 12 ספטמבר 2018.
Functions.
User-Defined Functions
Formatted and Unformatted Input/Output Functions
Week 2 Variables, flow control and the Debugger
Chapter 6: User-Defined Functions I
Function.
In C Programming Language
Introduction to Problem Solving and Programming
Functions Department of Computer Science-BGU יום שישי 26 אפריל 2019.
Function.
CPS125.
Functions that return a value
Presentation transcript:

Functions Exercise 5

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…

Example - Square #include double square(double a) { return a*a; } 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

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 don’t 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

Characteristics of Functions return-type name(arg_type1 arg_name1, arg_type2 arg_name2, …) { function body; return value; } double square(double a) { return a*a; } int main(void) { … }

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)

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)

Solution is_prime_func.c

The Great Void Sometimes there’s 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

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)

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 (choice==‘h’) ShowHelp(); else if /* Program continues … */ }

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

add_one – step by step int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; } ab 341 main() memory state

ab 341 int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; } main() memory state add_one – step by step

ab 341 b 1 add_one memory state main() memory state int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; }

int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; } ab 341 add_one – step by step b 2 add_one memory state main() memory state

ab 341 add_one – step by step b 2 add_one memory state main() memory state int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; }

add_one – step by step ab 21 main() memory state int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; }

add_one – step by step ab 21 main() memory state int add_one(int b) { b=b+1; return b; } int main(void) { int a=34,b=1; a = add_one(b); printf("a = %d, b = %d\n", a, b); return 0; }

Riddle me this #include int factorial(int n) { int fact = 1; while (n>1) { fact *= n; n--; } return fact; } 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; }

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

Wrong way to do it int add_one(int b) { a=b+1; } int main(void) { int a=34,b=1; add_one(b); printf("a = %d, b = %d\n", a, b); return 0; }

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

Function Declaration For this reason, the function must be declared in every file in which it’s called, before it’s called for the first time the declaration contains: return_type Function_name(argument types);

Function Declaration #include 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 <= a; i++) b = b*i; return b; }

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

The math library A collection of mathematical functions Need to include the header file math.h ( #include ) Use functions of the library, e.g. double s,p; s = sqrt(p); Declared in math.h : double sqrt (double x);

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

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.

Solution pi.c

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.

Solution pi_eps.c

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.

The debugger’s 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->start debug->go or F5. The program will run and stop at the first breakpoint.

The debugger’s common features (cont.) Stopping at a specific line: Bringing the cursor to the line and press ctrl+F10, or Build->start debug->go 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.