【C++基础语法】03 C++ 程序逻辑结构、分支 if 及关系表达式

【C++基础语法】03 C++ 程序逻辑结构、分支 if 及关系表达式,第1张

再次说明,本专栏文章采用最少必要知识原则,只讲解必要知识,让青少年,先上手编程,再上道。

文章采用更简单易懂的文字,不涉及很多的专有名词,部分举例有失精准。一切为了开始入门编程。

请先复习上文 - 重点回顾 - 部分内容。

本节课,需要的是大量的训练,文章会比较短。跟着练习,很多内容,很容易掌握。不跟着练习,跟容易掌握,毕竟你要是说你会,谁也不会和你抬杠。但真的会不会,just show me the code.

程序逻辑结构

任何高级编程语言,都有基本的三种逻辑结构,是对现实生活中常见问题的逻辑抽取,此三种逻辑结构,是一切问题的底层最小逻辑单元。

一根筋:顺序结构是一根筋,程序代码从上往下逐行执行,直到代码结束;
要么要么:分支结构,又称选择判断、分治判断结构,是指程序执行到某个语句时,对不同条件结果,分别执行不同代码片段;
转圈圈:循环结构,就像中了爱的魔力,原地转圈圈,将一段代码执行若干次。

再来重述。
顺序结构是一根筋,从上往下执行所有代码,是程序的主旋律。就像生活一样,一致向前。
分支结构是要么这样、要么那样、要么咋样,可以让程序视不同情况执行不同代码。就像生活中时时刻刻存在的选择,要么左转、要么右转、要么直行、要么原路返回。
循环结构是将一段代码重复执行若干次。就像生活,一周重复的 7 天,做不完的作业,打不完的怪,但也总有好心情,像有魔力一样,围绕我们转圈圈。

之前,写的代码,都是顺序结构,是从上往下坚定不移,一行行执行的。下面来看,生活冲,充满的选择语句。

分支结构

分支结构,根据某类条件下,结果的不同可能性,分为 3 种。

只有这样,一种可能的 if 语句;
眼下只有两条路可走,两种可能的 if ... else ... 语句;
条条大路通罗马,万般可能的 if ... else if .... else if... else if ... else ... 语句。

分支结构的语句模板:

// 一种可能的
if (条件表达式1) {
	// 条件表达式1 判断为 true 时,执行的代码块
} 

// 两种可能的
if (条件表达式1) {
	// 条件表达式1 判断为 true 时,执行的代码块
} else {
	// 条件表达式1 判断为 false 时,执行的代码块
}

// 多种可能的
if (条件表达式1) {
	// 条件表达式1 判断为 true 时,执行的代码块
} else if (条件表达式2 ) {
	// 条件表达式1 判断为 false,条件表达式2 判断为 true 时,执行的代码块
} else {
	// 条件表达式1 判断为 false,条件表达式2 判断为 false 时,执行的代码块
}

分支结构,很复杂,也可以很简单。
多加练习后,你会发现,原来就这,so easy~
不练习,只看文章,你会觉得,就这,我也不会

关系运算符

有一种关系,叫做没关系。

有一类关系,叫做数学关系。下面来看,数学关系,不同维度,不同分法。

  • 以相等与否,分为 等于 == 和 不等于 !=
  • 以是否大于,分为 大于 > 和 不大于 <= (小于等于)。
  • 以是否小于,分为 小于 < 和 不小于 >= (大于等于)。

哪些年,折磨你很久的,很多数学关系名词:高于、不超过、低于、不大于、最少、最多等。

都逃不过上述的六种关系:==!=><>=<= 。描述数字大小关系的符号,称之为关系运算符。当然也可以描述其他数据类型的值。

注意:== 两个等于号,是判断是否等于,如果等于,返回 true,否则,返回 false

  • 区分 = 一个等于号,是赋值 *** 作,将 = 右面的值赋值给 = 左面的变量。即 左值 = 右值 。
  • → 左值和右值,也有一定深意,别做深究。简单记,= 左面的是左值,右面的是右值。

关系表达式:由关系运算符和运算数(参与关系运算的数)组成的是关系表达式,也称条件表达式。

关系表达式,就是数学上经常做的判断题,判断的结果只有两种,要么 真,要么 假。所以,关系表达式的结果,要么是 true,要么是 false

单分支语句 - if …

Are you ready?

点我,在线编程试一下👇

#include 
using namespace std;

int main() {
	
	bool is_ready = true;	// 声明 is_ready 变量,赋初始值 true
	if(is_ready == true) {
		cout << "I am ready! GO." << endl;
	}
    return 0;
}

任务1:有感情的完成上述程序,并尝试修改 bool is_ready = false; ,观察屏幕输出的内容,阐述现象和原因。

Are you pass the exam?

点我,在线编程试一下👇

#include 
using namespace std;

int main(){
	
	// 验证能否通过考试,若成绩大于等于 60 ,输出 pass
	// 若成绩小于 60,输出 fail
	int score;
	cin >> score;
	
	if(score >= 60) {
		cout << "pass" << endl;
	}

	if(score < 60) {
		cout << "fail" << endl;
	}
	
	return 0;
}

任务2:有感情的完成上述程序,并尝试修改键盘输入不同的数值 ,观察屏幕输出的内容,阐述现象和原因。

The number equals zero or not?

点我,在线编程试一下👇

#include 
using namespace std;

int main(){
	
	// 验证键盘录入的整数 n 和 0 的关系
	// 如果等于 0,输出 equal
	// 如果不等于 0,输出 not equal
	int n;
	cin >> n;
	
	// code here by yoursef.
	
	return 0;
}

任务3:自行完成上述代码。

The number is odd or even?

判断一个整数,是奇数还是偶数,在学习编程时,尤其练习中,最经常遇到的一个小问题。首先,明确定义:

  • 奇数:形如 1、3、5、7、9、… 等不能被 2 整除的整数;
  • 偶数:形如 0、2、4、6、8、… 等能被 2 整除的整数;

整除:如果一个数是另一个数字的整数倍,则说可以被另一个数整除。整除,也就是余数为 0。

  • n % 2 == 0 结果为 true 时,表示 n 可以被 2 整除,也就是 n 是偶数;

点我,在线编程试一下👇

#include 
using namespace std;

int main(){
	
	// 验证键盘录入的整数 n 的奇偶性
	// 如果是偶数,输出 even
	// 如果是奇数,输出 odd
	int n;
	cin >> n;
	
	if(n % 2 == 0) {
		cout << "even" << endl;
	}
	
	if(n % 2 != 0) {
		cout << "odd" << endl;
	}


	return 0;
}

任务4:有感情的完成上述程序,并好好体会一下整除,这很重要。

关于整除,是非常常见的一个知识点和编程技巧。而且还伴随,很多细碎的知识点,会在大量练习中,不断面对、理解和掌握,这里不做知识点的堆积阐述。

毕竟,很多的知识点,咋看之下,你总会误认为,自己已经掌握了。但实际是,你远远没有掌握,除非你总能在 OJ 提交时,获得绿色的 AC。

所以,请在练习中不断精进吧~

双分支语句 - if … else …

双分支语句 if...else... ,同一个条件表达式,满足时(条件表达式结果 true),执行 if 中的代码块;不满足时(条件表达式结果 false),执行 else 中的代码块。

特别注意,是同一个条件表达式,返回 truefalse时,执行不同的代码。

使用 if ... else ... 重写前述案例。
比如:

Are you pass the exam?

点我,在线编程试一下👇

#include 
using namespace std;

int main(){
	
	// 验证能否通过考试,若成绩大于等于 60 ,输出 pass
	// 若成绩小于 60,输出 fail
	int score;
	cin >> score;
	
	if(score >= 60) {
		cout << "pass" << endl;
	} else {	// 体会下,else 等价于之前的 if(score < 60)
		cout << "fail" << endl;
	}
	
	return 0;
}

任务5:好好体会 else 。

另外:下面的案例,自行修成为 if...else...
The number equals zero or not?
The number is odd or even?

点我,在线编程试一下👇

任务6:完成上述两个练习,好好体会 else 。

多分支语句 - if … else if … else …

多分支语句,是对同一个条件表达式,多个不同结果,执行不同的代码逻辑。

也可能是,多个条件表达式的不同结果 → 不建议这么干,不同条件表达式,最好是使用多个分支语句。每个独立的分支语句,只针对同一个条件表达式,优点是代码逻辑清晰。

举例,查询四大名著的作者,同一个的条件表达式,四大名著的名称

  • 若是西游记,输出 …
  • 若是三国演义,输出 …
  • 若是红楼梦,输出 …
  • 若是水浒传,输出 …
  • 若不是四大名著,输出 …

举例,学校将成绩按照梯度,评定等级,同一个条件表达式,考试成绩所在梯度

  • 若是 90 -100,输出 A
  • 若是 75 -89,输出 B
  • 若是 60 -74,输出 C
  • 若是 0 - 59,输出 D
  • 若不是 0 - 100,输出 成绩不合法

Do you get ‘A’?

点我,在线编程试一下👇

#include 
using namespace std;

int main(){
	
	// 将成绩按梯度分等级
	int score;
	cin >> score;
	
	if(score >= 90 && score <= 100) {
		cout << "A" << endl;
	} else if(score >= 75 && score <= 89) {
		cout << "B" << endl;
	} else if(score >= 60 && score <= 74) {
		cout << "C" << endl;
	} else if(score >= 0 && score <= 59) {
		cout << "D" << endl;
	} else {    // 成绩不合法,输出 INVALID
		cout << "INVALID" << endl;
	}

	return 0;
}

任务7:完成上述练习,其中 && 是逻辑与运算符,代表 and。&& 连接的两个关系表达式,同时满足,整个表达式的值才是 true
→ 举例:score >= 90 && score <= 100 ,表示 score 要同时大于等于 90,小于等于 100,也就是在 [90, 100] 之间,才返回 true

重点回顾

回顾重点

  1. 程序逻辑结构,分为三种:顺序结构、分支结构、循环结构;
  2. 关系运算符:比较数字大小关系的运算符,六种关系:==!=><>=<=
  3. 关系表达式:由关系运算符和运算数组成的式子,也称条件表达式,结果要么是 true、要么是 false
  4. 分支结构:单分支 if、双分支 if ... else ... 、多分支 if...else if ... else if... else ...。分支结构,针对同一个条件表达式的不同结果,执行不同代码逻辑;
  5. 多分支更多是练习中,不断感悟,逻辑运算符和其表达式,练习中讲解,不单讲知识点,毕竟说起来就几句话,但实 *** 很容易迷糊;
课后练习

在洛谷上注册自己的账户。完成一下入门题单 - B2035-B2051。

后续预告

下面两个内容是练习课,知识点很少,重点是在高质量的练习中,不断体悟。这种练习方式,我称之为 五感俱全学习法

  • 【C++基础语法】04 C++ 多分支 if 、switch 及逻辑表达式
  • 【C++基础语法】05 C++ 分支语句综合应用及知识综合

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/713221.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存