Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
156 views71 pages

CS205-2020 Spring - Lecture 1 PDF

This document provides an overview of a C/C++ programming course. It introduces the instructor and their background and research interests. It outlines the structure of the course, which will cover C programming concepts in the first half and C++ object-oriented programming concepts in the second half. It discusses expectations for students in the course and how they will be evaluated. It also provides information on getting started with C++ programming, including an overview of the history and philosophy of C and C++, and the basic software build process when creating C++ programs.

Uploaded by

Eason Guan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
156 views71 pages

CS205-2020 Spring - Lecture 1 PDF

This document provides an overview of a C/C++ programming course. It introduces the instructor and their background and research interests. It outlines the structure of the course, which will cover C programming concepts in the first half and C++ object-oriented programming concepts in the second half. It discusses expectations for students in the course and how they will be evaluated. It also provides information on getting started with C++ programming, including an overview of the history and philosophy of C and C++, and the basic software build process when creating C++ programs.

Uploaded by

Eason Guan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 71

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/

You might also like