1-谁做的好事——语义表示

计算机只能做数学运算?

逻辑推理问题

找做好事的人,三个人说的是真话,一个人说的是假话。
A:不是我
B:是C
C:是D
D:他胡说

解答

假设法,假设A是做好事的人,那么ABC为假话,D为真话。与假设矛盾,做好事的人不是A

image

如何让计算机解决这个问题呢

首先计算机要能够表示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

posted @ 2022-11-20 15:15  彩红caihong  阅读(33)  评论(0)    收藏  举报