C++实用主义速成Part.1(大雾,请谨慎对待)

C++实用主义速成(大雾,请谨慎对待)


 

Licenced under CC-BY-NC-SA lecence.

编写 NaragNova , 转载请注明出处。


 

请注意,本文很少涉及一些在实践中可能涉及到的知识。如果你是想要认真学习编程的话,请务必配合其他有关C++基础的教程食用本文, 以防出现底层实现不清导致无法debug的尴尬情况,以及其他优化或者他人代码采用特殊语法无法读懂的情况。


 

序言

近几天突然发现其实如果砍掉那些繁琐的基础,其实大学里一个学期学到的C语言知识只要一个月就差不多可以完全掌握。

如果再砍掉那些底层一点的东西,只需要实用的话,一个小时基本可以大概掌握了(?)

 

在进行下一部分之前,请先预习前导的部分内容,或C++编程中的部分 “常识” 。

1. 在每一条语句结束的时候需要加一个分号,虽然没有硬性规定每一行只能写一条语句,但是请在保持代码整洁的基础上尽量做到一行写一条语句。请记住,每一个分号才代表一条语句结束。

 1 // 这样看起来很整洁:
 2 #include<iostream>
 3 
 4 int main()
 5 {
 6     int i = 10;
 7     int j = 20;
 8     int c = i + j;
 9 
10     return 0;
11 }
12 
13 // 相信这样没人看0x0
14 #include<iostream>
15 int main()
16 {int i = 10;int j = 20;int c = i + j;return 0;}
代码的整洁的重要性

2. 计算机中的字符本质上是存储了一些数字的组合,在显示的时候会去对应的表中查找,将其显示到屏幕上。(例如ASCII码, 具体可以参考百度百科的ASCII码部分,链接如下。)编码不用特意去记,只要上网查找就可以了。

ASCII_百度百科

 


 

Part 1. 变量

这是C++里的变量类型(可能有遗忘,欢迎大牛指出改正)
对于一般的程序而言,常用的数据类型已经足够处理大部分的问题。

常用的变量类型有:

 

关键字 来源英文单词 类型的解释
int Integer 整形(整数类型)
char Character 字符型
bool Bool 布尔类型变量
float Float 浮点类型变量,也叫实型,用于存储带有小数的数据。
wchar_t   宽字符类型

相对不大常用的变量类型有 :

关键字 来源英文单词 类型的解释
short short 短整型,相对int类型存储的数据上限、下限要小。
long long 长整型,相对int类型能够存储的数据更大,但是在某些环境下,long等同于int。
long long   长整型,相对int类型能够存储的数据更大,是c++中存储整型数据的上限。
double double 双精度浮点数,可以存储精度更高的实数

 

在解决大部分问题的时候,只需要掌握常用的类型就可以了。下面为变量定义的举例:

 1 // 定义方法: 变量类型关键字 + 分隔符 + 变量名
 2 // 分隔符有: 空格 制表符(tab键), 插入分隔符数量多少不影响语句的正确执行。
 3 // C++中,任何变量的名字不能与关键字重合,否则会出现错误导致程序不能正常执行。
 4 // 变量名的命名规范为: 
 5 // 1) 变量名的第一个字不能是数字;
 6 // 2) 变量名可以用大写,小写的英文字符与数字、下划线的各种排列组合
 7 // 3) C++对大小写敏感,大小写不同的变量名视作不同的变量。
 8 // 4) 变量名中间不能加分隔符。
 9 // 另外, 变量可以在定义时赋予初始值。
10 
11 
12 // 举例:
13 int a;
14 float    _b;
15 char Character;
16 double db = 1.2345;

请注意,变量存在“作用域”的概念,同一个变量只在其作用域中可以被查看到,离开作用域即被销毁。

作用域是程序的一个区域,一般来说有三个地方可以定义变量:

  • 在函数或一个代码块内部声明的变量,称为局部变量。

  • 在函数参数的定义中声明的变量,称为形式参数。

  • 在所有函数外部声明的变量,称为全局变量。

数组 array

由于有些时候需要定义大量的变量, 逐个定义已经满足不了人们的需求了,就出现了数组。

这里举个例子: 某班有60个人, 需要存储所有人的成绩。

如果一个个定义变量, 60人还不多, 如果改为全省的, 全国的,那肯定是不现实的。由此,就诞生了神奇的数组:

// 数组的定义很简单,固定为
[数据类型] [数组名][[数组长度]];
数组名是自己起的,只要不重复就行。
//例如要定义一个有10个整数的数组,就可以:
int array[10];
// 同理,定义20个浮点数的数组可以写成:
float array[20];

定义好了,那怎么用呢?

这个也很简单,类似数学中有 ai 一样, 数组也有个东西叫 "下标" 。用的时候只需要 数组名[下标] 就可以引用到数组中对应下标的变量了。

// 数组引用

int arr[5] = {1, 3, 6, 8, 10};
arr[0] = 2; //对 arr 的第 0 个元素赋值为 2 , 此时 arr 的值为: {2, 3, 6, 8, 10}

// 请注意, 数组下标从零开始。

 


 

Part2. 语句

曾经有人论证过,只需要循环、分支就能做解决所有的问题,但是你得给个算法。

在不考虑算法的情况下,只需要大致知道循环、分支语句就可以完成所有的程序设计。

顺序结构

顺序结构是最简单的, 顾名思义就是从上往下一条条执行语句。此处不过多赘述。

1 // 例如求几个数的平均数可以这么写:
2 
3 int x = 1, y = 2, z = 3;    // 一行中使用逗号分隔来建立多个变量
4 int average = x;
5 average = average + y;
6 average = average + z;
7 average = average / 3;    // 此处就得到了三个数的平均数

 

分支结构

分支结构就是常见的 if 由于switch语句可以由多条 if 替代, 此处就只讲述 if 了。

if 语句的格式如下:

 1 if ( 条件语句 )    // 条件语句可以是任何有值的语句, 比如赋值、 比较、 函数调用等
 2 {
 3     // 这里是如果条件为真要执行的代码段
 4 }
 5 else
 6 {
 7     // 否则执行这里的代码段
 8 }
 9 
10 // 举例:如果 x > y 就让 x + 1, 否则 y + 1:
11 if (x > y)
12 {
13     x = x + 1;
14 }
15 else
16 {
17     y = y + 1;
18 }

需要注意的是, if语句的使用过程中容易出现逻辑错误, 需要在设计分支的时候谨慎使用, 避免一些逻辑上的失误。

 

循环结构

循环主要有 while, for, do while 三种, 由于实际使用中较少使用 do while 循环而 while 循环经常被 for 循环代替, 此处只详细讲述 for 循环, 并略过 do while 循环。

循环中最重要的语句就是 [循环控制条件] 了, 在满足这个条件的情况下循环才会继续执行。

for 循环

[初始化条件] :在循环执行前执行, 一般用于初始化一些变量。

// for 循环的格式为:
for ( [初始化条件] ; [循环控制条件] ; [每次循环结束后处理语句] )
{
    // 这里是循环体, 每次循环都走一遍
}

// 举例如下:例如要求某个数组中10个元素的和:
int array[10] = { 1, 2, 4, 6, 10, 23, 65, 44, 2, 1};    // 假设这就是那个数组
int sum = 0;    // 用这个变量来存放和

for(int i = 0; i < 10; i++) 
// 定义控制变量 i 的初值为0, 在满足 i < 10 的时候继续循环
// 每次循环结束 i 自增1
// ++为自增运算符, i++ 等价于 i = i + 1
// 不建议新手使用自增运算符,因为这个东西不理解的情况下很玄学。
// 如果非要使用的话请务必在单独的语句中使用。
// 感兴趣的话可以百度查询
{ sum = sum + array[i]; }
while循环
// while循环的定义如下:
while ( [循环控制条件] )
{
    // 此处是循环体
}

// 举例:求 1~10 的和
int i = 1;
int sum = 0;
while( i <= 10)
{
    sum = sum + i;
    i = i + 1;
}

 

这次就先说这些叭 0.0

以上皆是个人见解, 如有错误还请指正。

 

posted @ 2020-11-18 10:22  NaragNova~奈拉格诺瓦  阅读(112)  评论(0编辑  收藏  举报