Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 31 Discussion, Week 4 Faisal Alquaddoomi, Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)

Similar presentations


Presentation on theme: "CS 31 Discussion, Week 4 Faisal Alquaddoomi, Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)"— Presentation transcript:

1 CS 31 Discussion, Week 4 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)

2 What is this? double bodyMassIndex(double height, double weight) { return weight/(height*height); }

3 Functions Review: Parts double bodyMassIndex(double height, double weight) { return weight/(height*height) * 703.0; } A function has a name, parameters, and a return type The return value of the function must be the same type as the return type

4 double bodyMassIndex(double height, double weight) { return weight/(height*height) * 703.0; } int main() { double myBMI = bodyMassIndex(5*12 + 11, 150); cout << “My BMI: “ << myBMI; return 0; } Functions Review: Calling Functions are called from other code, which executes them and produces a value of the same type as the function

5 double bodyMassIndex(double height, double weight) { return weight/(height*height) * 703.0; } int main() { double myBMI = bodyMassIndex(5*12 + 11, 150); cout << “My BMI: “ << myBMI; return 0; } Functions Review: Arguments When called, the values passed to the function are called arguments Each argument must match the type of its corresponding parameter

6 Functions Calling Functions double bmiMetric(double height, double weight) { return weight/(height*height); } double bmiEnglish(double height, double weight) { double weightKg = weight * 0.453592; double heightM = height * 0.0254; return bmiMetric(weightKg, heightM); } Note that they are defined separately, even though bmiEnglish() calls bmiMetric() What’s the advantage of having one call the other?

7 Functions and Modularity What’s wrong with having giant do-all functions? They’re not modular Modularity is the property of being reusable – Achieved by being self-contained and operating for a variety of inputs The many advantages to writing modular code: – Easier to reuse existing code – Easier to understand what code does – Easier to test A bug in a module can usually be constrained to just that module

8 No Modularity int main() { double height, weight; cout << “Enter your height(m), weight (kg): “ cin >> height >> weight; cout << “BMI : “ << weight/(height*height) << endl; cout << “Enter your height(in), weight (lbs): “ cin >> height >> weight; weight *= 0.453592; height *= 0.0254; cout << “BMI (from English): “; cout << weight/(height*height) * 703.0 << endl; }

9 Poor Modularity void bmiMetric(double height, double weight) { cout << “BMI : “ << weight/(height*height); } void bmiEnglish(double height, double weight) { weight *= 0.453592; height *= 0.0254; cout << “BMI: “; cout << weight/(height*height) * 703.0; } The functions have redundant code They’re also not self-contained: they print to the screen, which assumes something about the caller (e.g. that they want stuff on the screen)

10 Good Modularity double bmiMetric(double height, double weight) { return weight/(height*height); } double bmiEnglish(double height, double weight) { double weightKg = weight * 0.453592; double heightM = height * 0.0254; return bmiMetric(weightKg, heightM) * 703.0; } They share the same basic calculation They’re appropriately named and can be used in any program that requires BMI calculation They return a value versus printing to the screen; the value could be used for anything, not just printing (storing to a file, comparisons, etc.)


Download ppt "CS 31 Discussion, Week 4 Faisal Alquaddoomi, Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)"

Similar presentations


Ads by Google