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

CS 31 Discussion, Week 4

Embed Size (px)

DESCRIPTION

CS 31 Discussion, Week 4. Faisal Alquaddoomi, [email protected] Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today). What is this?. double bodyMassIndex (double height, double weight) { return weight/(height*height); }. Functions Review: Parts. - PowerPoint PPT Presentation

Citation preview

Page 1: CS 31 Discussion, Week  4

CS 31 Discussion, Week 4

Faisal Alquaddoomi, [email protected]

Office Hours: BH 2432,MW 4:30-6:30pm,

F 12:30-1:30pm (today)

Page 2: CS 31 Discussion, Week  4

What is this?double bodyMassIndex(double height, double weight) {

return weight/(height*height);}

Page 3: CS 31 Discussion, Week  4

Functions Review: Partsdouble 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

Page 4: CS 31 Discussion, Week  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

Page 5: CS 31 Discussion, Week  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: Arguments

• When called, the values passed to the function are called arguments

• Each argument must match the type of its corresponding parameter

Page 6: CS 31 Discussion, Week  4

Functions Calling Functionsdouble 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?

Page 7: CS 31 Discussion, Week  4

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

Page 8: CS 31 Discussion, Week  4

No Modularityint 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;

}

Page 9: CS 31 Discussion, Week  4

Poor Modularityvoid 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)

Page 10: CS 31 Discussion, Week  4

Good Modularitydouble 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.)