CSE 251 Dr. Charles B. Owen Programming in C1 Functions.

Slides:



Advertisements
Similar presentations
Classes & Objects INTRODUCTION : This chapter introduces classes ; explains data hiding, abstraction & encapsulation and shows how a class implements these.
Advertisements

Copyright © 2002 Pearson Education, Inc. Slide 1.
Etter/Ingber Engineering Problem Solving with C Fundamental Concepts Chapter 4 Modular Programming with Functions.
Spring Semester 2013 Lecture 5
Chapter Five Functions
Modular Programming With Functions
BBS514 Structured Programming (Yapısal Programlama)1 Functions and Structured Programming.
Chapter 5 C Functions The best way to develop and maintain a large program is to divide it into several smaller program modules, each of which is more.
C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program Modules in C 5.3Math Library Functions 5.4Functions.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
1 Modularity In “C”. 2 What is Modularity?  Modularity, is the heart of the high level, structured languages.  Means breaking down a big problem into.
FunctionsFunctions Systems Programming. Systems Programming: Functions 2 Functions   Simple Function Example   Function Prototype and Declaration.
TK1913-C Programming1 TK1913-C Programming 1 C Library Functions C provides a collection of library functions for programmers If these library functions.
 2007 Pearson Education, Inc. All rights reserved C Functions.
1 Modularity In “C”. 2 General Syntax data_type function_Name (parameter list) { … return expression; // return output } Body of the function is a compound.
CS 201 Functions Debzani Deb.
1 CSC 1401 S1 Computer Programming I Hamid Harroud School of Science and Engineering, Akhawayn University
The switch Statement Selection Revisited. Problem Using OCD, design and implement a program that allows the user to perform an arbitrary temperature conversion.
Introduction to Functions Intro to Computer Science CS1510 Dr. Sarah Diesburg.
Chapter 6 Functions -- QuickStart. "The Practice of Computing Using Python", Punch & Enbody, Copyright © 2013 Pearson Education, Inc. What is a function?
C Functions Programmer-defined functions – Functions written by the programmer to define specific tasks. Functions are invoked by a function call. The.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. C How To Program - 4th edition Deitels Class 05 University.
 2007 Pearson Education, Inc. All rights reserved C Functions.
Chapter 06 (Part I) Functions and an Introduction to Recursion.
 2007 Pearson Education, Inc. All rights reserved C Functions -Continue…-
Functions, Procedures, and Abstraction Dr. José M. Reyes Álamo.
CPS120: Introduction to Computer Science Functions.
CPS120: Introduction to Computer Science Lecture 14 Functions.
Chapter 5 - Functions Outline 5.1Introduction 5.2Program Modules in C 5.3Math Library Functions 5.4Functions 5.5Function Definitions 5.6Function Prototypes.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Extended Prelude to Programming Concepts & Design, 3/e by Stewart Venit and.
Basics of Most C++ Programs // Programmer: Clayton Price date: 9/4/ // File: fahr2celc.cpp 03. // Purpose:
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Functions Outline 5.1Introduction 5.2Program Modules.
KIC/Computer Programming & Problem Solving 1.  Introduction  Program Modules in C  Math Library Functions  Functions  Function Definitions  Function.
Computer programming Outline Functions [chap 8 – Kochan] –Defining a Function –Arguments and Local Variables Automatic Local.
CCSA 221 Programming in C CHAPTER 8 – PART 1 WORKING WITH FUNCTIONS 1.
More on Functions Intro to Computer Science CS1510 Dr. Sarah Diesburg.
CSE 251 Dr. Charles B. Owen Programming in C1 Functions.
CSIS 113A Lecture 5 Functions. Introduction to Functions  Building Blocks of Programs  Other terminology in other languages:  Procedures, subprograms,
CHAPTER 4 FUNCTIONS Dr. Shady Yehia Elmashad. Outline 1.Introduction 2.Program Components in C++ 3.Math Library Functions 4.Functions 5.Function Definitions.
Dale Roberts CSCI N305 Functions Declarations Department of Computer and Information Science, School of Science, IUPUI.
 2000 Prentice Hall, Inc. All rights reserved Program Components in C++ Function definitions –Only written once –These statements are hidden from.
More on Functions Intro to Computer Science CS1510 Dr. Sarah Diesburg.
Python Programming Module 3 Functions Python Programming, 2/e1.
Functions Course conducted by: Md.Raihan ul Masood
Dr. Shady Yehia Elmashad
C Functions -Continue…-.
Lesson #6 Modular Programming and Functions.
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Lesson #6 Modular Programming and Functions.
Deitel- C:How to Program (5ed)
Dr. Shady Yehia Elmashad
CSCI 161: Introduction to Programming Function
Chapter 5 - Functions Outline 5.1 Introduction
Chapter 5 - Functions Outline 5.1 Introduction
Functions.
Chapter 5 - Functions Outline 5.1 Introduction
Lesson #6 Modular Programming and Functions.
Dr. Shady Yehia Elmashad
Functions Declarations CSCI 230
Functions, Procedures, and Abstraction
Chapter 6 - Functions Outline 5.1 Introduction
Lesson #6 Modular Programming and Functions.
In C Programming Language
Introduction to Problem Solving and Programming
CPS125.
Functions, Procedures, and Abstraction
Presentation transcript:

CSE 251 Dr. Charles B. Owen Programming in C1 Functions

CSE 251 Dr. Charles B. Owen Programming in C2 Moon Landings

CSE 251 Dr. Charles B. Owen Programming in C3 Triangle Area Computation p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) a c b How would you write this program?

CSE 251 Dr. Charles B. Owen Programming in C4 Variables int main() { double x1=0, y1=0; double x2=17, y2=10.3; double x3=-5.2, y3=5.1; double a, b, c; /* Triangle side lengths */ double p; /* For Heron's formula */ double area;

CSE 251 Dr. Charles B. Owen Programming in C5 Lengths of Edges a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3)); c = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)); p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) a c b

CSE 251 Dr. Charles B. Owen Programming in C6 Area p = (a + b + c) / 2; area = sqrt(p * (p - a) * (p - b) * (p - c)); printf("%f\n", area);

CSE 251 Dr. Charles B. Owen Programming in C7 Whole Program int main() { double x1=0, y1=0; double x2=17, y2=10.3; double x3=-5.2, y3=5.1; double a, b, c; /* Triangle side lengths */ double p; /* For Heron's formula */ double area; a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3)); c = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)); p = (a + b + c) / 2; area = sqrt(p * (p - a) * (p - b) * (p - c)); printf("%f\n", area); } What if I made a mistake on the edge length equation?

CSE 251 Dr. Charles B. Owen Programming in C8 Functions Functions are subprograms that perform some operation and return one value They “encapsulate” some particular operation, so it can be re-used by others (for example, the abs() or sqrt() function)

CSE 251 Dr. Charles B. Owen Programming in C9 Characteristics Reusable code – code in sqrt() is reused often Encapsulated code – implementation of sqrt() is hidden Can be stored in libraries – sqrt() is a built-in function found in the math library

CSE 251 Dr. Charles B. Owen Programming in C10 Writing Your Own Functions Consider a function that converts temperatures in Celsius to temperatures in Fahrenheit. – Mathematical Formula: F = C * – We want to write a C function called CtoF

CSE 251 Dr. Charles B. Owen Programming in C11 Convert Function in C double CtoF ( double paramCel ) { return paramCel* ; } This function takes an input parameter called paramCel (temp in degree Celsius) and returns a value that corresponds to the temp in degree Fahrenheit

CSE 251 Dr. Charles B. Owen Programming in C12 How to use a function? #include double CtoF( double ); /************************************************************************ * Purpose: to convert temperature from Celsius to Fahrenheit ************************************************************************/ int main() { double c, f; printf(“Enter the degree (in Celsius): “); scanf(“%lf”, &c); f = CtoF(c); printf(“Temperature (in Fahrenheit) is %lf\n”, f); } double CtoF ( double paramCel) { return paramCel * ; }

CSE 251 Dr. Charles B. Owen Programming in C13 Terminology Declaration: double CtoF( double ); Invocation (Call): Fahr = CtoF(Cel); Definition: double CtoF( double paramCel ) { return paramCel* ; }

CSE 251 Dr. Charles B. Owen Programming in C14 Function Declaration Also called function prototype: Declarations describe the function: – the return type and function name – the type and number of parameters return_type function_name (parameter_list) double CtoF(double)

CSE 251 Dr. Charles B. Owen Programming in C15 Function Definition return_type function_name (parameter_list) { …. function body …. } double CtoF(double paramCel) { return paramCel* ; }

CSE 251 Dr. Charles B. Owen Programming in C16 Function Invocation double CtoF ( double paramCel ) { return paramCel* ; } int main() { … f = CtoF(c); } 1. Call copies argument c to parameter paramCel 2. Control transfers to function “CtoF”

CSE 251 Dr. Charles B. Owen Programming in C17 double CtoF ( double paramCel ) { return paramCel* ; } int main() { … f = CtoF(c); } 3. Expression in “CtoF” is evaluated 4. Value of expression is returned to “main” Invocation (cont)

CSE 251 Dr. Charles B. Owen Programming in C18 Local Objects The parameter “paramCel” is a local object which is defined only while the function is executing. Any attempt to use “paramCel” outside the function is an error. The name of the parameter need not be the same as the name of the argument. Types must agree.

CSE 251 Dr. Charles B. Owen Programming in C19 Can we do better than this? int main() { double x1=0, y1=0; double x2=17, y2=10.3; double x3=-5.2, y3=5.1; double a, b, c; /* Triangle side lengths */ double p; /* For Heron's formula */ double area; a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3)); c = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)); p = (a + b + c) / 2; area = sqrt(p * (p - a) * (p - b) * (p - c)); printf("%f\n", area); }

CSE 251 Dr. Charles B. Owen Programming in C20 What should we name our function? a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); “Length” sounds like a good idea. ??? Length( ??? ) { }

CSE 251 Dr. Charles B. Owen Programming in C21 What does our function need to know? a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); (x, y) for two different points: ??? Length(double x1, double y1, double x2, double y2) { }

CSE 251 Dr. Charles B. Owen Programming in C22 What does our function return? double Length(double x1, double y1, double x2, double y2) { } a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); A computed value which is of type double

CSE 251 Dr. Charles B. Owen Programming in C23 How does it compute it? double Length(double x1, double y1, double x2, double y2) { double len; len = sqrt(( x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); return(len); } a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); A computed value which is of type double

CSE 251 Dr. Charles B. Owen Programming in C24 Using This #include /* Declaration */ double Length(double x1, double y1, double x2, double y2); /* * Program to determine the area of a triangle */ int main() { double x1=0, y1=0; double x2=17, y2=10.3; double x3=-5.2, y3=5.1; double a, b, c; /* Triangle side lengths */ double p; /* For Heron's formula */ double area; a = Length(x1, y1, x2, y2); b = Length(x1, y1, x3, y3); c = Length(x2, y2, x3, y3); p = (a + b + c) / 2; area = sqrt(p * (p - a) * (p - b) * (p - c)); printf("%f\n", area); } /* Definition */ double Length(double x1, double y1, double x2, double y2) { double len; len = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); return(len); } Invocations Declaration Definition 1

CSE 251 Dr. Charles B. Owen Programming in C25 Potential Errors #include double convert( double ); int main() { double c, f; printf(“Enter the degree (in Celsius): “); scanf(“%lf”, &c); f= convert(c); printf(“Temp (in Fahrenheit) for %lf Celsius is %lf”, paramCel, f); } double CtoF( double paramCel) { return c * ; } Error! paramCel is not defined Error! C is not defined Scope – Where a variable is known to exist. No variable is known outside of the curly braces that contain it, even if the same name is used!

CSE 251 Dr. Charles B. Owen Programming in C26 Another Example #include double GetTemperature(); double CelsiusToFahrenheit( double ); void DisplayResult( double, double ); int main() { double TempC, // Temperature in degrees Celsius TempF; // Temperature in degrees Fahrenheit TempC = GetTemperature(); TempF = CelsiusToFahrenheit(TempC); DisplayResult(TempC, TempF); return 0; } Declarations Invocations

CSE 251 Dr. Charles B. Owen Programming in C27 Function: GetTemperature double GetTemperature() { double Temp; printf("\nPlease enter a temperature in degrees Celsius: "); scanf("%lf", &Temp); return Temp; }

CSE 251 Dr. Charles B. Owen Programming in C28 Function: CelsiusToFahrenheit double CelsiusToFahrenheit(double Temp) { return (Temp * ); }

CSE 251 Dr. Charles B. Owen Programming in C29 Function: DisplayResult void DisplayResult(double CTemp, double FTemp) { printf("Original: %5.2f C\n", CTemp); printf("Equivalent: %5.2f F\n", FTemp); return; }

CSE 251 Dr. Charles B. Owen Programming in C30 Declarations (Prototypes) double GetTemp( ); double CelsiusToFahrenheit( double ); void Display( double, double ); void means “nothing”. If a function doesn’t return a value, its return type is void

CSE 251 Dr. Charles B. Owen Programming in C31 Abstraction int main() { double TempC, // Temperature in degrees Celsius TempF; // Temperature in degrees Fahrenheit TempC = GetTemperature(); TempF = CelsiusToFahrenheit(TempC); DisplayResult(TempC, TempF); return 0; } 1.Get Temperature 2.Convert Temperature 3.Display Temperature We are hiding details on how something is done in the function implementation.

CSE 251 Dr. Charles B. Owen Programming in C32 Another Way to Compute Factorial Pseudocode for factorial(n) if n == 0 then result = 1 else result = n * factorial(n – 1) After all, 5! = 5 * 4 * 3 * 2 * 1 = 5 * 4!

CSE 251 Dr. Charles B. Owen Programming in C33 Factorial function contains an invocation of itself. We call this a: recursive call. Recursive functions must have a base case (if n == 0): why? int Factorial(int n) { if(n == 0) return 1; else return n * Factorial(n-1); } Recursive Functions This works much like proof by induction. if n == 0 then result = 1 else result = n * factorial(n – 1)

CSE 251 Dr. Charles B. Owen Programming in C34 Infinite Recursion int Factorial(int n) { return n * Factorial(n-1); } What if I omit the “base case”? This leads to infinite recursion! Factorial(3)= 3 * Factorial(2) = 3 * 2 * Factorial(1) = 3 * 2 * 1 * Factorial(0) = 3 * 2 * 1 * 0 * Factorial(-1) = … Input n: 5 Input k: 3 Segmentation fault

CSE 251 Dr. Charles B. Owen Programming in C35 Psuedocode and Function int Factorial(int n) { if(n == 0) return 1; else return n * Factorial(n-1); } if n == 0 then result = 1 else result = n * factorial(n – 1) Base Case 2 Declaration: int Factorial(int n); Invocation: f = Factorial(7); Definition: int Factorial(int n) { if(n == 0) return 1; else return n * Factorial(n-1); }