SlideShare a Scribd company logo
Cpp tutorial
 This tutorial offers several things.
 You’ll see some neat features of the language.
 You’ll learn the right things to google.
 You’ll find a list of useful books and web pages.
 But don’t expect too much!
 It’s complicated, and you’ll learn by doing.
 But I’ll give it my best shot, okay?
 Basic syntax
 Compiling your program
 Argument passing
 Dynamic memory
 Object-oriented programming
#include <iostream>
using namespace std;
float c(float x) {
return x*x*x;
}
int main() {
float x;
cin >> x;
cout << c(x) << endl;
return 0;
}
 Includes function definitions
for
console input and output.
 Function declaration.
 Function definition.
 Program starts here.
 Local variable declaration.
 Console input.
 Console output.
 Exit main function.
Cpp tutorial
// This is main.cc
#include <iostream>
#include “mymath.h”
using namespace std;
int main() {
// ...stuff...
}
// This is mymath.h
#ifndef MYMATH
#define MYMATH
float c(float x);
float d(float x);
#endif
Functions are declared in mymat h. h, but not defined.
They are implemented separately in mymat h. cc.
main.cc mymath.cc mydraw.cc
g++ -c main.cc g++ -c mymath.cc g++ -c mydraw.cc
↓ ↓ ↓
↓ ↓ ↓
↓ ↓ ↓
g++ -o myprogram main.o mathstuff.o drawstuff.o
main.o mymath.o mydraw.o
↓
myprogram →
// This is main.cc
#include <GL/glut.h>
#include <iostream>
using namespace std;
int main() {
cout << “Hello!” << endl;
glVertex3d(1,2,3);
return 0;
}
 Include OpenGL functions.
 Include standard IO
functions.
 Long and tedious
explanation.
 Calls function from standard
IO.
 Calls function from OpenGL.
 Make object file.
 Make executable, link GLUT.
 Execute program.
% g++ -c main.cc
% g++ -o myprogram –lglut main.o
% ./myprogram
 Software engineering reasons.
 Separate interface from implementation.
 Promote modularity.
 The headers are a contract.
 Technical reasons.
 Only rebuild object files for modified source files.
 This is much more efficient for huge programs.
INCFLAGS = 
-
I/afs/csail/group/graphics/courses/6.837/public/includ
e
LINKFLAGS = 
-L/afs/csail/group/graphics/courses/6.837/public/lib 
-lglut -lvl
CFLAGS = -g -Wall -ansi
CC = g++
SRCS = main.cc parse.cc curve.cc surf.cc camera.cc
OBJS = $(SRCS:.cc=.o)
PROG = a1
all: $(SRCS) $(PROG)
$(PROG): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $@ $(LINKFLAGS)
.cc.o:
$(CC) $(CFLAGS) $< -c -o $@ $(INCFLAGS)
depend:
makedepend $(INCFLAGS) -Y $(SRCS)
clean:
rm $(OBJS) $(PROG)
main.o: parse.h curve.h tuple.h
# ... LOTS MORE ...
Most assignments include
makef i l es, which describe
the files, dependencies, and
steps for compilation.
You can just type make.
So you don’t have to know
the stuff from the past few
slides.
But it’s nice to know.
Cpp tutorial
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
float f[n];
for (int i=0; i<n; i++)
f[i] = i;
return 0;
}
Arrays must have known
sizes at compile time.
This doesn’t compile.
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
float *f = new float[n];
for (int i=0; i<n; i++)
f[i] = i;
delete [] f;
return 0;
}
Allocate the array during
runtime using new.
No garbage collection, so
you have to delete.
Dynamic memory is
useful when you don’t
know how much space
you need.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<float> f(n);
for (int i=0; i<n; i++)
f[i] = i;
return 0;
}
STL vector is a resizable
array with all dynamic
memory handled for you.
STL has other cool stuff,
such as strings and sets.
If you can, use the STL
and avoid dynamic
memory.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<float> f;
for (int i=0; i<n; i++)
f.push_back(i);
return 0;
}
An alternative method
that does the same thing.
Methods are called with
the dot operator (same as
Java).
vector is poorly named,
it’s actually just an array.
float twice1(float x) {
return 2*x;
}
void twice2(float x) {
x = 2*x;
}
int main() {
float x = 3;
twice2(x);
cout << x << endl;
return 0;
}
 This works as expected.
 This does nothing.
 The variable is
unchanged.
vector<float>
twice(vector<float> x) {
int n = x.size();
for (int i=0; i<n; i++)
x[i] = 2*x[i];
return x;
}
int main() {
vector<float>
y(9000000);
y = twice(y);
return 0;
}
There is an incredible
amount of overhead here.
This copies a huge array
two times. It’s stupid.
Maybe the compiler’s
smart. Maybe not. Why
risk it?
void twice3(float *x) {
(*x) = 2*(*x);
}
void twice4(float &x) {
x = 2*x;
}
int main() {
float x = 3;
twice3(&x);
twice4(x);
return 0;
}
 Pass pointer by value
and
access data using
asterisk.
 Pass by reference.
 Address of variable.
 The answer is 12.
 You’ll often see objects passed by reference.
 Functions can modify objects without copying.
 To avoid copying objects (often const references).
 Pointers are kind of old school, but still useful.
 For super-efficient low-level code.
 Within objects to handle dynamic memory.
 You shouldn’t need pointers for this class.
 Use the STL instead, if at all possible.
Cpp tutorial
 Classes implement objects.
 You’ve probably seen these in 6.170.
 C++ does things a little differently.
 Let’s implement a simple image object.
 Show stuff we’ve seen, like dynamic memory.
 Introduce constructors, destructors, const, and
operator overloading.
 I’ll probably make mistakes, so some debugging too.
Live Demo!
 The C++ Programming Language
 A book by Bjarne Stroustrup, inventor of C++.
 My favorite C++ book.
 The STL Programmer’s Guide
 Contains documentation for the standard template library.
 http://www.sgi.com/tech/stl/
 Java to C++ Transition Tutorial
 Probably the most helpful, since you’ve all taken 6.170.
 http://www.cs.brown.edu/courses/cs123/javatoc.shtml

More Related Content

What's hot (20)

DOC
Program(Output)
princy75
 
PDF
C++ Programming - 2nd Study
Chris Ohk
 
PPTX
Wcbpijwbpij new
Hanokh Aloni
 
PDF
Rcpp11 genentech
Romain Francois
 
DOCX
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp
 
PDF
C++ Programming - 3rd Study
Chris Ohk
 
PDF
Git avançado
Jean Carlo Machado
 
PDF
2016 gunma.web games-and-asm.js
Noritada Shimizu
 
PDF
Functional php
Jean Carlo Machado
 
PDF
20151224-games
Noritada Shimizu
 
PDF
Implementing string
mohamed sikander
 
PPTX
Type Driven Development with TypeScript
Garth Gilmour
 
PDF
C++ Programming - 11th Study
Chris Ohk
 
PDF
When RV Meets CEP (RV 2016 Tutorial)
Sylvain Hallé
 
PDF
JavaScript - Agora nervoso
Luis Vendrame
 
PDF
C++ Programming - 14th Study
Chris Ohk
 
PPT
Cquestions
mohamed sikander
 
PPT
C questions
mohamed sikander
 
ODP
Functors, applicatives, monads
rkaippully
 
Program(Output)
princy75
 
C++ Programming - 2nd Study
Chris Ohk
 
Wcbpijwbpij new
Hanokh Aloni
 
Rcpp11 genentech
Romain Francois
 
Jarmo van de Seijp Shadbox ERC223
Jarmo van de Seijp
 
C++ Programming - 3rd Study
Chris Ohk
 
Git avançado
Jean Carlo Machado
 
2016 gunma.web games-and-asm.js
Noritada Shimizu
 
Functional php
Jean Carlo Machado
 
20151224-games
Noritada Shimizu
 
Implementing string
mohamed sikander
 
Type Driven Development with TypeScript
Garth Gilmour
 
C++ Programming - 11th Study
Chris Ohk
 
When RV Meets CEP (RV 2016 Tutorial)
Sylvain Hallé
 
JavaScript - Agora nervoso
Luis Vendrame
 
C++ Programming - 14th Study
Chris Ohk
 
Cquestions
mohamed sikander
 
C questions
mohamed sikander
 
Functors, applicatives, monads
rkaippully
 

Viewers also liked (9)

PPTX
Computational Complexity
Kasun Ranga Wijeweera
 
PDF
Computational Complexity and the Evolution of Homo Sapiens
Institute of Arctic and Alpine Research, University of Colorado Boulder
 
PPT
Divide and conquer
Vikas Sharma
 
PDF
Divide and Conquer
Mohammed Hussein
 
PPTX
Divide and Conquer - Part 1
Amrinder Arora
 
PPT
Algorithm.ppt
Tareq Hasan
 
PPTX
Divide and Conquer - Part II - Quickselect and Closest Pair of Points
Amrinder Arora
 
PDF
The Future of Organization
Philip Sheldrake
 
PPTX
WTF - Why the Future Is Up to Us - pptx version
Tim O'Reilly
 
Computational Complexity
Kasun Ranga Wijeweera
 
Computational Complexity and the Evolution of Homo Sapiens
Institute of Arctic and Alpine Research, University of Colorado Boulder
 
Divide and conquer
Vikas Sharma
 
Divide and Conquer
Mohammed Hussein
 
Divide and Conquer - Part 1
Amrinder Arora
 
Algorithm.ppt
Tareq Hasan
 
Divide and Conquer - Part II - Quickselect and Closest Pair of Points
Amrinder Arora
 
The Future of Organization
Philip Sheldrake
 
WTF - Why the Future Is Up to Us - pptx version
Tim O'Reilly
 
Ad

Similar to Cpp tutorial (20)

PPT
CppTutorial.ppt
HODZoology3
 
PPT
C++ tutorial
sikkim manipal university
 
PPT
C++totural file
halaisumit
 
PDF
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
kinan keshkeh
 
PDF
Refactoring to Macros with Clojure
Dmitry Buzdin
 
PPTX
Things about Functional JavaScript
ChengHui Weng
 
PDF
Emerging Languages: A Tour of the Horizon
Alex Payne
 
PDF
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Chris Adamson
 
PDF
ES6: The Awesome Parts
Domenic Denicola
 
PDF
All I know about rsc.io/c2go
Moriyoshi Koizumi
 
PPTX
C++ Overview PPT
Thooyavan Venkatachalam
 
PPTX
Oops presentation
sushamaGavarskar1
 
PDF
C++ manual Report Full
Thesis Scientist Private Limited
 
PDF
Effective Object Oriented Design in Cpp
CodeOps Technologies LLP
 
PPTX
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
supriyaharlapur1
 
PPTX
ppl unit 3.pptx ppl unit 3 usefull can understood
divasivavishnu2003
 
PPTX
ES6 is Nigh
Domenic Denicola
 
PPTX
Intro to Javascript
Anjan Banda
 
PDF
Performance measurement and tuning
AOE
 
CppTutorial.ppt
HODZoology3
 
C++totural file
halaisumit
 
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
kinan keshkeh
 
Refactoring to Macros with Clojure
Dmitry Buzdin
 
Things about Functional JavaScript
ChengHui Weng
 
Emerging Languages: A Tour of the Horizon
Alex Payne
 
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Chris Adamson
 
ES6: The Awesome Parts
Domenic Denicola
 
All I know about rsc.io/c2go
Moriyoshi Koizumi
 
C++ Overview PPT
Thooyavan Venkatachalam
 
Oops presentation
sushamaGavarskar1
 
C++ manual Report Full
Thesis Scientist Private Limited
 
Effective Object Oriented Design in Cpp
CodeOps Technologies LLP
 
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
supriyaharlapur1
 
ppl unit 3.pptx ppl unit 3 usefull can understood
divasivavishnu2003
 
ES6 is Nigh
Domenic Denicola
 
Intro to Javascript
Anjan Banda
 
Performance measurement and tuning
AOE
 
Ad

More from Vikas Sharma (8)

PPT
Coloring graphs
Vikas Sharma
 
PPT
Backtracking
Vikas Sharma
 
PPT
Backtracking
Vikas Sharma
 
PPT
Knapsack problem
Vikas Sharma
 
PPT
Rules and steps for developing a software product (rsfsp) by vikas sharma
Vikas Sharma
 
PPT
Office automation system for scholl (oasfs) by vikas sharma
Vikas Sharma
 
PPT
Library and member management system (lamms) by vikas sharma
Vikas Sharma
 
PPT
Website optimization by vikas sharma
Vikas Sharma
 
Coloring graphs
Vikas Sharma
 
Backtracking
Vikas Sharma
 
Backtracking
Vikas Sharma
 
Knapsack problem
Vikas Sharma
 
Rules and steps for developing a software product (rsfsp) by vikas sharma
Vikas Sharma
 
Office automation system for scholl (oasfs) by vikas sharma
Vikas Sharma
 
Library and member management system (lamms) by vikas sharma
Vikas Sharma
 
Website optimization by vikas sharma
Vikas Sharma
 

Recently uploaded (20)

PPTX
SPINA BIFIDA: NURSING MANAGEMENT .pptx
PRADEEP ABOTHU
 
PPTX
How to Handle Salesperson Commision in Odoo 18 Sales
Celine George
 
PPTX
I AM MALALA The Girl Who Stood Up for Education and was Shot by the Taliban...
Beena E S
 
PDF
Isharyanti-2025-Cross Language Communication in Indonesian Language
Neny Isharyanti
 
PDF
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
PDF
Exploring the Different Types of Experimental Research
Thelma Villaflores
 
PDF
The Different Types of Non-Experimental Research
Thelma Villaflores
 
PDF
QNL June Edition hosted by Pragya the official Quiz Club of the University of...
Pragya - UEM Kolkata Quiz Club
 
PDF
Lesson 2 - WATER,pH, BUFFERS, AND ACID-BASE.pdf
marvinnbustamante1
 
PDF
The dynastic history of the Chahmana.pdf
PrachiSontakke5
 
PPTX
How to Set Up Tags in Odoo 18 - Odoo Slides
Celine George
 
PPT
Talk on Critical Theory, Part II, Philosophy of Social Sciences
Soraj Hongladarom
 
PDF
Dimensions of Societal Planning in Commonism
StefanMz
 
PDF
ARAL-Orientation_Morning-Session_Day-11.pdf
JoelVilloso1
 
PPTX
How to Convert an Opportunity into a Quotation in Odoo 18 CRM
Celine George
 
PDF
community health nursing question paper 2.pdf
Prince kumar
 
PDF
Generative AI: it's STILL not a robot (CIJ Summer 2025)
Paul Bradshaw
 
PPTX
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
PPTX
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
PPTX
How to Manage Large Scrollbar in Odoo 18 POS
Celine George
 
SPINA BIFIDA: NURSING MANAGEMENT .pptx
PRADEEP ABOTHU
 
How to Handle Salesperson Commision in Odoo 18 Sales
Celine George
 
I AM MALALA The Girl Who Stood Up for Education and was Shot by the Taliban...
Beena E S
 
Isharyanti-2025-Cross Language Communication in Indonesian Language
Neny Isharyanti
 
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
Exploring the Different Types of Experimental Research
Thelma Villaflores
 
The Different Types of Non-Experimental Research
Thelma Villaflores
 
QNL June Edition hosted by Pragya the official Quiz Club of the University of...
Pragya - UEM Kolkata Quiz Club
 
Lesson 2 - WATER,pH, BUFFERS, AND ACID-BASE.pdf
marvinnbustamante1
 
The dynastic history of the Chahmana.pdf
PrachiSontakke5
 
How to Set Up Tags in Odoo 18 - Odoo Slides
Celine George
 
Talk on Critical Theory, Part II, Philosophy of Social Sciences
Soraj Hongladarom
 
Dimensions of Societal Planning in Commonism
StefanMz
 
ARAL-Orientation_Morning-Session_Day-11.pdf
JoelVilloso1
 
How to Convert an Opportunity into a Quotation in Odoo 18 CRM
Celine George
 
community health nursing question paper 2.pdf
Prince kumar
 
Generative AI: it's STILL not a robot (CIJ Summer 2025)
Paul Bradshaw
 
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
How to Manage Large Scrollbar in Odoo 18 POS
Celine George
 

Cpp tutorial

  • 2.  This tutorial offers several things.  You’ll see some neat features of the language.  You’ll learn the right things to google.  You’ll find a list of useful books and web pages.  But don’t expect too much!  It’s complicated, and you’ll learn by doing.  But I’ll give it my best shot, okay?
  • 3.  Basic syntax  Compiling your program  Argument passing  Dynamic memory  Object-oriented programming
  • 4. #include <iostream> using namespace std; float c(float x) { return x*x*x; } int main() { float x; cin >> x; cout << c(x) << endl; return 0; }  Includes function definitions for console input and output.  Function declaration.  Function definition.  Program starts here.  Local variable declaration.  Console input.  Console output.  Exit main function.
  • 6. // This is main.cc #include <iostream> #include “mymath.h” using namespace std; int main() { // ...stuff... } // This is mymath.h #ifndef MYMATH #define MYMATH float c(float x); float d(float x); #endif Functions are declared in mymat h. h, but not defined. They are implemented separately in mymat h. cc.
  • 7. main.cc mymath.cc mydraw.cc g++ -c main.cc g++ -c mymath.cc g++ -c mydraw.cc ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ g++ -o myprogram main.o mathstuff.o drawstuff.o main.o mymath.o mydraw.o ↓ myprogram →
  • 8. // This is main.cc #include <GL/glut.h> #include <iostream> using namespace std; int main() { cout << “Hello!” << endl; glVertex3d(1,2,3); return 0; }  Include OpenGL functions.  Include standard IO functions.  Long and tedious explanation.  Calls function from standard IO.  Calls function from OpenGL.  Make object file.  Make executable, link GLUT.  Execute program. % g++ -c main.cc % g++ -o myprogram –lglut main.o % ./myprogram
  • 9.  Software engineering reasons.  Separate interface from implementation.  Promote modularity.  The headers are a contract.  Technical reasons.  Only rebuild object files for modified source files.  This is much more efficient for huge programs.
  • 10. INCFLAGS = - I/afs/csail/group/graphics/courses/6.837/public/includ e LINKFLAGS = -L/afs/csail/group/graphics/courses/6.837/public/lib -lglut -lvl CFLAGS = -g -Wall -ansi CC = g++ SRCS = main.cc parse.cc curve.cc surf.cc camera.cc OBJS = $(SRCS:.cc=.o) PROG = a1 all: $(SRCS) $(PROG) $(PROG): $(OBJS) $(CC) $(CFLAGS) $(OBJS) -o $@ $(LINKFLAGS) .cc.o: $(CC) $(CFLAGS) $< -c -o $@ $(INCFLAGS) depend: makedepend $(INCFLAGS) -Y $(SRCS) clean: rm $(OBJS) $(PROG) main.o: parse.h curve.h tuple.h # ... LOTS MORE ... Most assignments include makef i l es, which describe the files, dependencies, and steps for compilation. You can just type make. So you don’t have to know the stuff from the past few slides. But it’s nice to know.
  • 12. #include <iostream> using namespace std; int main() { int n; cin >> n; float f[n]; for (int i=0; i<n; i++) f[i] = i; return 0; } Arrays must have known sizes at compile time. This doesn’t compile.
  • 13. #include <iostream> using namespace std; int main() { int n; cin >> n; float *f = new float[n]; for (int i=0; i<n; i++) f[i] = i; delete [] f; return 0; } Allocate the array during runtime using new. No garbage collection, so you have to delete. Dynamic memory is useful when you don’t know how much space you need.
  • 14. #include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<float> f(n); for (int i=0; i<n; i++) f[i] = i; return 0; } STL vector is a resizable array with all dynamic memory handled for you. STL has other cool stuff, such as strings and sets. If you can, use the STL and avoid dynamic memory.
  • 15. #include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<float> f; for (int i=0; i<n; i++) f.push_back(i); return 0; } An alternative method that does the same thing. Methods are called with the dot operator (same as Java). vector is poorly named, it’s actually just an array.
  • 16. float twice1(float x) { return 2*x; } void twice2(float x) { x = 2*x; } int main() { float x = 3; twice2(x); cout << x << endl; return 0; }  This works as expected.  This does nothing.  The variable is unchanged.
  • 17. vector<float> twice(vector<float> x) { int n = x.size(); for (int i=0; i<n; i++) x[i] = 2*x[i]; return x; } int main() { vector<float> y(9000000); y = twice(y); return 0; } There is an incredible amount of overhead here. This copies a huge array two times. It’s stupid. Maybe the compiler’s smart. Maybe not. Why risk it?
  • 18. void twice3(float *x) { (*x) = 2*(*x); } void twice4(float &x) { x = 2*x; } int main() { float x = 3; twice3(&x); twice4(x); return 0; }  Pass pointer by value and access data using asterisk.  Pass by reference.  Address of variable.  The answer is 12.
  • 19.  You’ll often see objects passed by reference.  Functions can modify objects without copying.  To avoid copying objects (often const references).  Pointers are kind of old school, but still useful.  For super-efficient low-level code.  Within objects to handle dynamic memory.  You shouldn’t need pointers for this class.  Use the STL instead, if at all possible.
  • 21.  Classes implement objects.  You’ve probably seen these in 6.170.  C++ does things a little differently.  Let’s implement a simple image object.  Show stuff we’ve seen, like dynamic memory.  Introduce constructors, destructors, const, and operator overloading.  I’ll probably make mistakes, so some debugging too.
  • 23.  The C++ Programming Language  A book by Bjarne Stroustrup, inventor of C++.  My favorite C++ book.  The STL Programmer’s Guide  Contains documentation for the standard template library.  http://www.sgi.com/tech/stl/  Java to C++ Transition Tutorial  Probably the most helpful, since you’ve all taken 6.170.  http://www.cs.brown.edu/courses/cs123/javatoc.shtml

Editor's Notes

  • #5: about as simple as it gets – just get a feel for the syntax but you’ll have more complicated programs so you want to organize better first way to do that is by separating into multiple files
  • #7: same program, but we’ve pulled c functions out we put it in a separate file … or rather, two separate files header file (you see on the right) declares the functions – that is, gives name, parameters, return type. but doesn’t include the implementation, which is done in a separate file. so when you code up the main program file, you can include the header file, and call the functions because in c++ you can only call functions that are declared.
  • #8: so here’s the basic setup you write a bunch of cc files that implement functions (or objects, as we’ll see later) the headers include the declarations of functions (or objects) include the headers in the cc files if you’re using those functions compile to object files link all object files together get program make graphics
  • #9: almost all c++ will make use of libraries bunch of convenient functions that you can use two libraries you’ll be using for almost assignments are glut (exp) and iostream (exp) so main here actually calls functions defined in both these libraries and here’s how we might compile
  • #13: why? examples of purely functional programming languages… haskell, basic scheme…
  • #14: why? examples of purely functional programming languages… haskell, basic scheme…
  • #15: why? examples of purely functional programming languages… haskell, basic scheme…
  • #16: why? examples of purely functional programming languages… haskell, basic scheme…
  • #17: So why don’t we just use the first function?
  • #18: So why don’t we just use the first function?
  • #19: So why don’t we just use the first function?