C/C++ Programming
Language
CS205 Spring
Feng Zheng
2020.02.20
Content
• Brief Biography
• About This Course
• Getting Started with C++
• Setting Out to C++
Brief Biography
China
• Shenzhen Institutes of Advanced Technology (SIAT), CAS,
Jul. 2009 - Sep. 2012
United Kingdom
• The University of Sheffield, UK, Oct. 2012 - Otc. 2016
United States
• The University of Texas, at Arlington, Texas, USA, Dec.
2016 - Aug. 2017
• University of Pittsburgh, Pittsburgh, USA, Sep. 2017 - July
2018
China
• Youtu Lab, Tencent, Shanghai, China, Aug. 2018 - Oct. 2018
• Southern University of Science and Technology, Shenzhen,
China, Nov. 2018 - present
Research Interests
• Research Area
Human-Computer Interaction
Computer Vision
Machine Learning
http://faculty.sustech.edu.cn/fengzheng/
Services
• Associate Editor:
IET Image Processing
• Program Committee for Conference :
CVPR, ICLR, AAAI, IJCAI, ICML, NIPS, KDD, UAI.
• Journal Reviewer:
IEEE TNNLS, IEEE TCSVT, IEEE TMM, IEEE Access, Neurocomputing,
Information Sciences, IET Computer Vision, IET Image Processing etc..
Office
• Office : Room 602, Building 10, Innovation Park
• Phone: 0755-88015178
• Email : [email protected]
About This Course
Structure
Now
• C related part in C++
pointer (指针)
reference (引用)
C 1-7 Lectures
• Class types related part
C++ 9-15 Lectures
End of Term
Target Student
• Average ability of programming
Expectations
• Good understanding of C/C++
• Ability to write reasonably complex programs
• Professional attitude and habits
• Programming thinking
Exams test you on
• General knowledge (why) about C/C++
• Being able to tell (read) what a program does
• Ability to write pseudo-code for a moderately complex
algorithm
• Finding errors in a program
Grade Component
Grades
• Mid-Term Exam 20%
• Final Exam 30% 10%
10% 20%
Mid-term exam
• Labs 30% Final exam
Labs
30%
• Quiz: 10% 30%
Quiz
Projects
• Projects: 10%
• LABS are VERY IMPORTANT – Simple exercises and
assignments
Honesty
• Get code from the internet for labs/assignments is
perfectly OK
When you borrow, just say it.
You don't need to reinvent the wheel
• DON’T pretend that you are the author of something that
you didn't write
Groups for CS205 Spring
• Quick Response Code
• Sakai
CS205-Spring2020
• Blackboard:
C/C++ Program Design CS205-30006647-2020SP
• Useful websites:
http://cpp.sh/
https://www.onlinegdb.com/
http://live.bilibili.com/21878391
Getting Started with C++
Content
• The history and philosophy of C and of C++
• Procedural versus object-oriented programming
• How C++ adds object-oriented concepts to the C language
• The mechanics of creating a program
Computer Languages
• Machine language
Only computer (??) understands; Defined by hardware design;
Strings of numbers (01); Cumbersome for humans
Instruct computers to perform elementary operations;
Example:
• Assembly language
English-like abbreviations representing elementary computer
operations; Clearer to humans; Incomprehensible to computers
Example: LOAD BASEPAY
High-level Languages
• High-level languages Programmer = translator
Similar to English, use common mathematical notations
Single statements accomplish substantial tasks: Assembly language
requires many instructions to accomplish simple tasks
Translator programs (compilers): Convert to machine language
Interpreter programs: Directly execute it
Example:
grossPay = basePay + overTimePay
• C/C++, JAVA, PYTHON, MATLAB,……
History of C
• Evolved from two other programming languages
BCPL and B: “Typeless” languages
• Dennis Ritchie (Bell Laboratories)
Added data typing, other features
• Development language of UNIX
• Hardware independent
Portable programs
BCPL: Basic Combined Programming Language C
https://www.unixmen.com/dennis-m-ritchie-father-c-programming-language/
C Programming Philosophy
• Branching statements
Hard: earlier procedural programming
Easy: structured programming
• Top-down
Divide large tasks into smaller tasks
C Programming Philosophy
• Procedural programming --- Compared to OOP
More algorithms but data
Interaction between procedures
History of C++
• Extension of C
• Early 1980s: Bjarne Stroustrup (Bell Laboratories)
• Provides capabilities for Object-Oriented Programming
Objects: reusable software components: Model items in real world
Object-oriented programs: Easy to understand, correct and modify
• Hybrid language
C-like style
Object-oriented style
C++ Philosophy
• Fit the language to the problem
• A class is a specification describing such a new data form
What data is used to represent an object
The operations that can be performed on that data
• An object is a particular data constructed according to that plan
• Emphasizes the data
• Bottom-up programming
Class definition to program design
Features of C++
• Binding
• Reusable (可重用的)
• Protectability (可保护的)
• Polymorphism (多态性)- multiple definitions for operators and functions
• Inheritance (继承性)
• Portable (可移植性)
Comparison
• Procedural versus Object-oriented (Encapsulated: 封装的)
Class definition Object declaration
Program Phase Editor Disk
Program is created in
the editor and stored
on disk.
Preprocessor Disk Preprocessor program
• Edit
processes the code.
Compiler creates
Compiler Disk object code and stores
it on disk.
• Preprocess (how to organize)
Linker links the object
Linker Disk code with the libraries,
creates an executable
• Compile Primary
Memory
file and stores it on disk
• Link
Loader
Loader puts program
in memory.
Disk ..
..
• Load
..
• Execute
Primary
Memory
CPU
CPU takes each
instruction and
executes it, possibly
storing new data
..
.. values as the program
..
executes.
Creating the Source Code File
• Integrated development environments
Microsoft Visual C++, VSCODE
QT
Apple Xcode
• Any available text editor
Debuggers: GDB: The GNU Project Debugger
Command prompt
Compiler
Proper Extensions
• Suffix
Software Build Process
• Start with C++ source code files (.cpp, .hpp)
• Compile: convert code to object code stored in object file (.o)
• Link: combine contents of one or more object files (and possibly
some libraries) to produce executable program
GNU Compiler Collection (GCC)
C++ Compiler (编译器)
• g++ command provides both compiling and linking functionality
• Command-line usage:
g++ [options] input file . . .
• Compile C++ source file file.cpp to produce object code file file.o:
g++ -c file.cpp
• Link object files file 1.o, file 2.o, . . . to produce executable file
executable_name:
g++ -o executable_name file 1.o file 2.o . . .
• Tools for windows: MinGW, MSYS2, Cygwin, Windows Subsystem
Common g++ Command-Line
Options
• Web site: http://www.gnu.org/software/gcc
• C++ standards support in GCC: https://gcc.gnu.org/projects/cxx-status.html
Windows Compilers
• Choose windows applications: MFC Windows application, dynamic link library, ActiveX
control, DOS or character-mode executable, static library, or console application
• Choose 64-bit or 32-bit versions
• Actions: Compile, Build, Make, Build All, Link, Execute, Run, and Debug
Compile: the code in the file that is currently open
Build or Make: all the source code files in the project.
Build All: all the source code files from scratch
Link: combining the compiled source code with the necessary library code
Execute or Run: running the program (may do the earlier steps)
Debug: containing extra code that increases the program size, slows program execution, but
enables detailed debugging features
• http://en.wikipedia.org/wiki/List_of_compilers
Summary
• C Programming Philosophy
• C++ Programming Philosophy
• Tools
• Compilers
Setting Out to C++
Content
• Creating a C++ program
• The #include directive
• The main() function
• Placing comments in a C++ program
• Declaring and using variables
• Using the cout object for output
• How and when to use endl
• Using the cin object for input
• Defining and using simple functions
C++ Program Sample
• A program example
Noting: C++ is case sensitive
Comments Argument list Namespace Statements
Preprocessor
Function header
Function body
Return statement
Comments (注释)
• Two styles of comments provided
Comment starts with // and proceeds to end of line
Comment starts with /* and proceeds to first */
• The compiler ignores comments
Identifiers (标识符)
• Identifiers: used to name entities such as: types, objects (i.e.,
variables), and functions
Valid identifier: sequence of one or more letters, digits, and
underscore ”_” characters that does not begin with a digit
Identifiers are case sensitive
Identifiers cannot be any of reserved keywords
Scope of identifier is context in which identifier is valid (e.g., block,
function, global)
Keywords (关键字)
• Keywords are the vocabulary of a computer language
Definition of the main() Function
• Function definition
Function header - a summary of the function’s interface
Function body
① Statement - each complete instruction + semicolon [;]
② Return statement
Features of the main() Function
• main() functions are called by startup code - mediate between the program
and the operating system
• Function header - describe the interface between main() and the operating system
• Standalone program - does need a main()
① Main() or MAIN() or mane()
② WinMain() or _tmain()
• Otherwise
① A dynamic link library (DLL)
② A controller chip in a robot
C++ Preprocessor (预处理)
• Preprocessor transforms source code, prior to compilation
Preprocessor passes the output to compiler for compilation
Preprocessor behavior can be controlled by directives
Directive occupies single line of code
No semicolon (;\)
• Consists of:
• Can be used to:
Preprocessor: Source-File Inclusion
• Include contents of another file in source using preprocessor
Angle brackets used for system header files
Double quotes used otherwise
Path specifier is pathname (which may include directory) identifying file
whose content is to be substituted in place of include directive
• Examples
Preprocessor: Defining Macros (宏)
• Define macros using #define directive
• When the preprocessor encounters this directive, it replaces any
occurrence of identifier in the rest of the code by replacement
• This replacement can be an expression, a statement, a block or
simply anything
#define getmax(a,b) a>b?a:b
• Function macro definitions accept two special operators: #,
##(concatenate)
• Less readable #define glue(a,b) a ## b See program example 3
glue(c,out) << "test"; cout<< "test";
Preprocessor: Conditional
Compilation
• Conditionally include code through use of if-elif-else directives
• Conditional preprocessing block consists of:
• Example:
Header Filenames
• Reason of using header files
As programs grow larger (and make use of more files), it becomes
increasingly tedious to have to forward declare every function you want
to use that is defined in a different file.
Namespaces
• Reasons of using namesapce
To simplify the writing of large programs
To help organize programs that combine pre-existing code from several
companies
To indicate which product (wanda) you want, using double colon ::
• A namespace example: std
Standard component of C++ compilers
C++ Output with cout
• An example to print a string
cout: is an object defined in stream
String: double quotation marks “ ”
Insertion operator: <<
Two ways: endl, \n
C++ Source Code Formatting
• Source code contains three components
Tokens - indivisible elements in a line of code
White space - a space, tab, or carriage return
Semicolon marks the end of each statement
① Spread a single statement over several lines
② Place several statements on one line
C++ Source Code Formatting
Make program more readable
• Observe these rules:
One statement per line
An opening brace and a closing brace for a function, each of which is on
its own line
Statements in a function indented from the braces{}
No whitespace around the parentheses() associated with a function
name
Program: C++ Statements
• A program is a collection of functions
• Each function is a collection of statements
A declaration statement creates a variable of certain type
An assignment statement provides a value for that variable
What is the
definition of
type?
Declaration Statements
• Variable: Identify both the storage location and how much
memory space to store an item
Declaration statement: to provide a label for the location and to
indicate the type of storage
Complier: to allocate the memory space
Assignment Statements
• An assignment statement assigns a value to a storage
location
• Assignment operator: =
• Two examples:
Assign serially (from copy)
Arithmetic expression: +-*/ (form CPU)
Assignment: cin
• An object of input istream
>> operator: extract characters from the input stream
The value typed from the keyboard is eventually assigned to the
variable: carrots
Assignment: Called Functions
• The example of called functions
6.25 in parentheses is the input, called an argument or parameter
This example assigns the return value to the variable x
Function prototype of functions
• What a function prototype does for functions is the same to
that a variable declaration does for variables
You can type the function prototype into your source code file yourself
You can include the cmath (math.h on older systems) header file, which
has the prototype in it
• The terminating semicolon in the prototype
Identifies it as a statement
Makes it a prototype instead of a function header
Basic characteristics of functions
• Don’t confuse the function prototype with the function
definition
Function prototype describes the function interface
The definition includes the code for the function’s workings
• Place a function prototype ahead of where you first use the
function
• Using #include directive
The header files contain the prototypes.
The library files contain the compiled code for the functions,
Math functions in cmath
• An example shows the use of the library function sqrt()
• It provides a prototype by including the cmath file.
Function Variations
• Some functions require more than one item of information
• Other functions take no arguments
• There also are functions that have no return value
User-Defined Functions
• The standard C library: more than 140 predefined functions
• Two examples
main() is a user-defined function
simon() is another user-defined function
User-Defined Function Form
• A function header
• Comes the function body
• Enclosed in braces
User-Defined Function Form
• Give the return type in the function header and use return at
the end of the function body
• Two return ways
Overview of Function
• Definition
It has a header
It has a body
Multiple statements
It accepts an argument
It returns a value
• It requires a prototype
Review C++ statement types
• After introducing function definition
Declaration statement
Assignment statement
Function call – generally included in expression
Function prototype
Return statement
Summary
• What are the modules of C++ programs called? functions
• What does the preprocessor directive do?
• What does the namespace do?
• What does the header do?
• What is the structure of function?
• Where does the prototype put?
• Where does the program start to run?
……
Summary
• C++ provides two predefined objects: cout, cin
They are objects of the istream and ostream classes, in the iostream file
These classes view input and output as streams of characters
The insertion operator (<<), which is defined for the ostream class, lets you
insert data into the output stream
The extraction operator (>>), which is defined for the istream class, lets you
extract information from the input stream
• C++ can use the extensive set of C library functions
Inclusion statement: #include <cmath>
Power function: pow(double); pow(double, double);
Square root: sqrt(int);
Thanks
[email protected]
http://faculty.sustech.edu.cn/fengzheng/