目录

Intro, Key Concepts, Functions

Period 1 Notes


Introduction

Programming Language

解释器与编译器

Program

Debuging

错误的种类

System Development

Life Cycle

Modularization

Programming 中最重要的一点就是整合(调用)已经实现的代码到我们自己的程序中。调用通常通过函数(function)来实现。通过函数,我们可以将大型的 program 分解为若干的小的部分进行实现。

函数通常分为两种类型:

函数的建立方式
函数的交流

函数通过参数(parameter)进行数据的传递与交流。这种方式允许我们同时使用多个函数来完成复杂的任务。

C++ 中的函数

Special task function

return type + identifier name (<data type> <identifier name for input value>)
{
    line of code;
    return <value>;
}

函数的前置声明

函数的前置声明是为了使函数对编译器可见。通常在程序的撰写中,main() 函数处于其他函数实现的前面。main() 中可能会包含各种定义至于其后的函数的调用。调用此类后置定义的函数,必须要对其进行前置申明,也就是:声明→调用→定义

Programming Design

Pseudocode

为了描述逻辑而使用,不是真正的可编译代码。比如下面的例子:

Input
    display a message asking the user to enter the first page
    get the first age from the keyboard
    display a message asking the user to enter the second page
    get the second age from the keyboard
Processing
   calculate the answer by adding two ages together and dividing by two
Output
    display the answer on the screen
    pause so the user can see the answer
当使用伪代码确定了程序的设计之后,我们就可以使用具体的程序语言,按照指定好的逻辑来实现程序。对于程序复杂的情况,每个子模块都需要以 IPO 的形式独立存在,并以 Hierarchy chart 的形式串联起来。这种方法被称为 HIPO(Hierarchy IPO

Test data

Formal & Natural languages

Syntax rules

Syntax 与下面的两个概念相关:

IDE

IDE(integrated Development Environment)指集成开发环境,包括了:

编译过程
  1. 加载 pre-processor
  2. 将编程语言转换为机器指令,并将指令和对应数据&linker 的解决方案保存为 Object file
  3. linker 通过 Object file 将对象,库连接到一起,生成可执行文件
  4. IDE 通过 loader 来读取可执行文件进行和运行
编译过程中的错误

Compiler Directives

指编译期的预处理阶段,通常包括:

#define PI 3.14159
areaCircle = r * r * PI;
//equal to 
areaCircle = r * r * 3.14159

Key concepts

Variables and types

C++ 中的数据类型属性
Family Data Type Reserved Word Represents Standard Type
Nothing Null or nothing void No data Yes
Integer Boolean bool Logical true and false Yes
Integer Character char Single characters Yes
Integer Integer int Whole numbers Yes
Floating Point Floating Point float Fractional numbers Yes
Complex String string A sequence (sting them along) of characters No
Complex Array N/A A collection of elements of the same data type No
Complex Pointer N/A A value that points to a location (an address) within the data area No
数据类型的特点

Identifier Names

C++ 中的 indentifier names
Good Practices

Constants and Variables

constants 的三种形式

#define PI 3.14159

const double PI = 3.14159

Data Manipulation

Assignment

Assignment 允许更新指定空间的值。C++ 中使用 = 作为 assignment 的运算符。运算符右边可以是值,也可以是表达式。

输出变量

//using std::cout
cout << var;

Arithmetic

类型转换

隐式类型转换
Promotion & Demotion

Integer

Float-point

String 类型

Operators

Order of operations

Operator for chars

Lvalue & Rvalue

Functions

Floating-point

Math functions

Composition

自定义函数

函数的执行顺序

拥有多个函数时:

parameter & argument

parameter and variable are local

函数的结构分析

伪代码

组成部分:

-开始: function
-输入: pass in
-输出: pass out
-结束: Endfunction
-调用: call
//example
Function main
Pass In: nothing
Doing some lines of code
Call: clear monitor
Doing some lines of code
Pass Out: value zero to the operating system
Endfunction

结构表

Program Control Functions

Program Control Function

Void Data Type

可读文档的建立

//e.g.
//bad
float price_gal_paint;
int coverage_gal_paint;
//good
float price_gal_paint;
int   coverage_gal_paint;

//e.g.
//******************************************************
// main
//*****************************************************

Conditionals and recursion

modulus operator

带条件的执行

// condition
if(x > 0) {
    cout << "result is positive";
}
// chained
else if(x < 0) {
    cout << "result is negtive";
}
// alternative condition
else {
   cout << "result is zero";

nested condition

Recursion

Infinite Recursion

正常的递归需要

更多的递归形式

Furitful functions

return value

Development

Incremental development
Composition

Overloading

Boolean

Logocal operator

Bool functions

Main return