文章目录
Learn C++ by Accelerated C++
0. Getting started
知识点
- 标准库、核心语言
- 程序结构:自由风格
- 类型
- 命名空间
- 定义和头文件
- 主函数
- 花括号和分号
第一个C++程序
#include<iostream> // 标准库头文件,输入/输出流(Input/Output Stream)
int main(){ // 调用主函数响应程序需求(返回0或者其它)
std::cout << "Hello, World!" << std::endl;
// 使用标准库中的输出运算符 << 将 'Hello, World!'写到标准输出中,并显示在cout所在窗口,std::endl为当前输出语句行的结束,并实现换行(本质上是用两个<<实现了连续的输出)
return 0; // 返回0(表示成功)
}
#include指令是一种是调取头文件的工具,用来明确指定程序所需的那部分头文件iostream是Standard library header 即标准库头文件<<是一种运算符(operator)std::cout和std::endl是操作数(operand),其中后者是控制器cout是标准库中的对象;endl是一个函数模板:是作用域运算符,std:cout表示的是在(名字空间)作用域std中的名称cout"Hello, World!"是表达式(expression)
一些问题:
什么是定义,什么是头文件?

什么是核心语言?什么是标准库?
习题:
- 0-0
#include <iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
- 0-2
#include <iostream>
int main() {
std::cout << "This (\") is a quote, and this (\\) is a backslash."
<< std::endl;
return 0;
}
- 0-4
# include <iostream>
int main(){
std::cout<<
"#include <iostream>\n"
"\n"
"int main(){\n"
"\tstd::cout<<\"Hello,world\"<<std::endl;\n"
"\treturn 0;\n"
"}\n"
<<std::endl;
return 0;
}
#include <iostream>
int main(){
std::cout<<"Hello,world"<<std::endl;
return 0;
}
Program ended with exit code: 0
- 0-9
int main(){}
- 0-10
#include<iostream>
int
main
(
)
{
std
::
cout
<<
"Hello, world!"
<<
std
::
endl
;
return
0
;
}
1. 使用字符串
知识点
- 声明
- 变量
- 初始化
- 输入
- string 库
1.1 输入
#include<iostream>
#include<string>
int main(){
// 请某人输入姓名
std::cout << "Please enter your first name: ";
// 读姓名
std::string name; // 定义变量 name
std::cin >> name; // 把姓名读进 name
// 输出对这个人的问候语
std::cout << "Hello, " << name << "!" << std::endl;
return 0;
}
从现在开始,以后的代码不再由Xcode完成,而是转向使用jupyter notebook ,环境配置可查看之前的文章:Mac上配置环境并运行第一个C++程序
1.2 为姓名装框
std::cout << "Please enter your first name: ";
std::string name;
std::cin >> name;
const std::string greeting = "Hello, " + name + "!";
const std::string spaces(greeting.size(), ' ');
const std::string second = "* " + spaces + " *";
const std::string first(second.size(), '*');
std::cout << std::endl;
std::cout << first << std::endl;
std::cout << second << std::endl;
std::cout << "* " << greeting << " *" << std::endl; std::cout << second << std::endl;
std::cout << first << std::endl;
Please enter your first name: Robin_pi
********************
1. *
2. Hello, Robin_pi! *
3. *
********************
4. List item
std::cout << "xxxx"输出(write)std::string name定义变量name,类型为std::stringstd::cin >> name输入(read)-
运算符是左结合的
-
运算符是右结合的
- = 实现变量赋值(同时完成初始化)
- const 为常量关键字,可以确保常量变量的值不会改变
一些问题:
是什么是变量?作用是什么?和对象的区别是什么?
存放数据的地方,是一个具有名称的对象,而对象是计算机中的一段具有类型的内存空间。
什么是类型?有哪些类型?
表达式包含操作数和运算符,每一个操作数都具有一个类型,比如核心语言定义了int代表的是整数类型,库定义了std::ostream作为提供了基于流的输出的类型。
小结
注意:在一对花括号内定义的变量是局部变量。
习题
暂略~
2. 循环和计数
知识点
- 循环
- 条件分支
- 循环不变式
while 语句
while(condition)
statement // <font color =red>若statement为语句,则其本身包含了分号;,若为块语句,则它本身也会有{},所以没有分号;
或者
while(condition) statement
- 设计循环语句
略
if 语句
if (condition)
statement // 同 while,这里面要么是语句(分号;结尾)要么是语句块(用花括号{}包起来)
或者
if (condition)
statement1
else
statement2
略~
程序简化
- using 声明
- for 语句
for(init-statement condition;expression) // 注意,初始化语句本身包含了分号;
statement
例如:
#include<iostream>
#include<string>
int main(){
for (int r = 0; r <= 3; ++r) // `++r` 特指 `r = r + 1`,即返回相加后的值(若是`++r`则是返回r的原始值)
std::cout << "*";
}
一般而言,for语句的意义相当于:
{
init-statement
while (condition) {
statement
expression;
}
}
即:
#include<iostream>
#include<string>
int main(){
int r=0;
while (r<=3){
std::cout << "*";
++r;
}
}
- 压缩检测
计数
- 从0开始计数
for (string::size_type r = 0; r != rows; ++r) {
// <输出一行>
}
- 从1开始计数
for (string::size_type r = 1; r <= rows; ++r) {
// <输出一行>
}
两种方式循环的次数一样,但是一般都选择从0开始计数:可以使用不对称区间来表示间隔。原因如下:
不对称区间的一个重要性质:在一个形式为[m,n)的区间包含 n-m 个元素,而形式[m,n]的区间中则有 m-n+1 个元素。(即可以很快地看出区间中所包含的元素个数)
从零计数使得循环不变式更易于表达:(对于[0,rows])到目前为止,我们已经输出了r 行。
用 != 比 <=使我们更能了解程序的状态:前者表示已经输出了r行,而后者表示至少输出了r行(可能更多!)
小结
(1)操作数(operators)


(2)类型

本章的一些问题:
- 为什么不直接使用
int而是使用const int?const的作用是什么?
一,减少出错的几率;二,明确地向读代码的人传递信息:不能修改这个变量 - (定义字符串的长度变量时)为什么不直接使用
const int cols而是使用const std::string::size_type cols?size_type和int的用法区别?
size_type为无符号类型,int为有符号类型(可能为负数)。一般我们都会用std::string::size_type来当做储存字符串长度的变量的变量类型。
…
习题
暂时决定:习题与理论分开(加快速度)
使用批量数据
一些数据类型
- int:整型
- double :双精度浮点类型
- float :单精度浮点类型
一些操作:
? :运算符:条件运算符,是if-else-then的缩写,即if xxx (?) else (:)xxx
类型定义:
- typedef type name;
组织程序和数据
知识点
- 函数(子程序)
- 数据结构
- 程序结构
变量引用:
vector<double>& hw = homework; //hw是homework的一个替代名count vector<double>& chwl = chw; // 注意chwl是只读的
使用顺序容器并分析字符串
使用库算法
- 泛型算法
- 增量算法
使用关联容器
使用泛型函数
定义新类型
管理内存和低级数据结构
- 指针与数组
定义抽象数据类型
使类对象像一个数值一样工作
使用继承与动态绑定
近乎自动地管理内存
再探字符图形
参考:
- 代码部分的参考答案(已下载至本地:github-Accelerated C++)
- 全部的答案(已下载本地:github-Accelerated-cpp-master)
- C++ reference——要多多查看官方文档!
本文详细介绍C++编程的基础知识,包括第一个程序的编写、字符串的使用、循环与计数等核心概念。通过实例讲解如何进行输入输出操作,以及如何使用while和if语句进行流程控制,帮助初学者快速掌握C++编程技巧。
1056

被折叠的 条评论
为什么被折叠?



