cs 31 discussion, week 4 faisal alquaddoomi, [email protected]@cs.ucla.edu office hours: bh...
TRANSCRIPT
![Page 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)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/1.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/2.jpg)
What is this?double bodyMassIndex(double height, double weight) {
return weight/(height*height);}
![Page 3: 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)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/3.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/4.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/5.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/6.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/7.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/8.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/9.jpg)
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 Faisal Alquaddoomi, faisal@cs.ucla.edufaisal@cs.ucla.edu Office Hours: BH 2432, MW 4:30-6:30pm, F 12:30-1:30pm (today)](https://reader036.vdocument.in/reader036/viewer/2022080223/56649dbe5503460f94ab2279/html5/thumbnails/10.jpg)
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.)