1-谁做的好事——语义表示
计算机只能做数学运算?
逻辑推理问题
找做好事的人,三个人说的是真话,一个人说的是假话。
A:不是我
B:是C
C:是D
D:他胡说
解答
假设法,假设A是做好事的人,那么ABC为假话,D为真话。与假设矛盾,做好事的人不是A

如何让计算机解决这个问题呢
首先计算机要能够表示A、B、C、D几个不同的人
- 方法一
用字符‘A’代表A,‘B’代表B - 方法二
给A、B、C、D编号,0号是A,1号是B,...
两种方法本质是一样的,在C++中,字符本质上是整数
表示“做好事的人”
变量不仅能用于表示代数计算中的数量,还能够用于表示特定概念的事物
自然语言是很不严谨的,而程序语言要求严谨,有明确意义。
每个人说的话怎么用程序来表示
A:不是我
B:是C
B的话完整来说是“做好事的人是C”
但不能写成代码:good_man = 'C';
- 赋值语句表示的是一个既成事实,或者在当前情况下认定的事实,是一种“真理”
- 而B的话实际上只是一种说法,一种论断,需要判断“真伪”
- 自然语言是很不严谨的,而程序语言要求严谨,有明确意义
A的话实际意义是
- “做好事的人” 和 “A” 不是同一个人
B的话实际意义是
- “做好事的人”和“C”是同一个人
在代码中写成
good_man != 'A';
good_man == 'C';
布尔类型取值:true/false
关系运算符
- 表示让计算机算一下,两端内容是否符合这一关系运算符的意义:
- 若符合,则计算结果为“真”
- 若不符合,则计算结果为“假”
- !=
- ==
- '>'
- <
- '>='
- <=
关系表达式
含有关系运算符的计算式
3 != 4; // true
1 + 2 != 3; // false
1 + 2 == 4 - 1; // true
2 == 4 - 1; // false

浙公网安备 33010602011771号