引子


热点新闻!昨日晚一户人家保险箱被盗,小偷从窗户逃出。据被害人称,自己家里装的是最简单的木门,用手一推就能够打开。

额,也许我们需要安装密码锁来防盗了。

实验室邀请你参加新版密码门的开发工作!我们出发吧!


目录

引子

1.出发前的一堂课

1.1  逻辑也能做运算?——逻辑运算符

2.输入面板的开发

2.1  只有0和1的运算

2.2  9个变量太麻烦?初步认识数组

3.逻辑判断部分的开发

3.1  逻辑与或非

尾声

1.出发前的一堂课


我们还是在出发前先来了解一下逻辑运算符吧,不然就编写不了密码门的程序了

1.1 逻辑也能做运算?——逻辑运算符

在程序中,我们有时需要处理两个甚至更多表达式联立的判断情况,比如判断这句话是否成立:

一加一等于二 并且 二加二等于四

这句话是成立的。因为一加一确实等于二并且二加二确实等于四。

一加一等于二 或者 一加一等于三

这也是成立的,因为一加一等于二。

你如何表示上面两个表达式呢?

(1 + 1 == 2)&&(2 + 2 == 4)
(1 + 1 == 2)||(1 + 1 == 3)

想不到吧,上述代码段中,除了“==”之外,“&&”和“||”两个符号也是运算符。它们就是逻辑运算符,负责控制程序运行的逻辑,“&&”是逻辑与运算符,“||”是逻辑或运算符。除此之外的逻辑运算符还有“!”,它是逻辑非运算符。

逻辑运算符
名称 逻辑与 逻辑或 逻辑非
语法 (表达式1)&&(表达式2) (表达式1)||(表达式2) !(表达式)
作用 当两个表达式同时成立,则整个表达式才能成立。反之,只要有一个表达式不成立,则整个表达式就不成立 当两个表达式有一个成立,则整个表达式就能成立。反之,只要没有表达式成立,则整个表达式就不成立 若括号里表达式的结果为真时,整个表达式结果为假。反之,括号里表达式的结果为假,则整个表达式的结果为真

2.输入面板的开发


好了,到达实验室!科学家们正在为九个数字的输入面板发愁呢!

科学家甲:这个输入面板,应该怎么编程呢?

科学家乙:也许我们可以试一试用一个变量,没输入值就是0,输入了就是1。

好主意,我们快来试一试!

2.1 只有0和1的运算

开发前我们需要了解布尔型变量是什么。如果你不知道,你可以去看看:

你真的了解常量和变量吗 拓展 布尔变量w

我们可以把每一个按钮都用一个变量表示,当然需要用布尔变量,当未输入时值为0(即false,假),输入后值为1(即true,真)。先来实现一个按钮吧:

bool button1 = 0;

真不错,接下来把九个按钮都安上

bool button1 = 0;
bool button2 = 0;
bool button3 = 0;
bool button4 = 0;
bool button5 = 0;
bool button6 = 0;
bool button7 = 0;
bool button8 = 0;
bool button9 = 0;

让我们使用cin输入流来控制按钮的输入。

bool button1 = 0;
bool button2 = 0;
bool button3 = 0;
bool button4 = 0;
bool button5 = 0;
bool button6 = 0;
bool button7 = 0;
bool button8 = 0;
bool button9 = 0;
cin >> button1 >> button2 >> button3 >> button4 >> button5 >> button6 >> button7 >> button8 >> button9;        //控制按钮,1代表按下,0代表不按。如按下1 3 5号按钮则输入1 0 1 0 1 0 0 0。

噢我的天哪,这么长的语句!

2.2 9个变量太麻烦?初步认识数组

太繁琐啦,九个按钮居然需要九个变量,有没有更好用的方法呢?有的。我们可以使用数组

数组和变量差不多,你可以把它看作是多个变量的集合。

你可以像声明变量一样声明一个数组。

例如:

int a[5];

声明一个长度为5的名为a的整型数组。中括号里的这里是声明数组的长度。但是调用时……

a[4] = 5;

这时,中括号里的是这个数组的下标。注意:数组下标 是从零开始的。如果你声明了int a[5];,事实上你所能调用的数组中最后一个数值是a[4]。因为这个数组的第一个值是a[0]。下标和长度可不一样。

我们再次来看一看输入面板的开发。

/*原来的代码*bool button1 = 0;*bool button2 = 0;*bool button3 = 0;*bool button4 = 0;*bool button5 = 0;*bool button6 = 0;*bool button7 = 0;*bool button8 = 0;*bool button9 = 0;*cin >> button1 >> button2 >> button3 >> button4 >> button5 >> button6 >> button7 >> button8 >> button9;
*/
//更改后:
bool button[10];        //button[0]空着不用,方便理解
for (int i = 1,i <= 9;i ++){        //for循环,循环九次,以后再慢慢讲cin >> button[i];
}

是不是一下子简短了许多?


3.逻辑判断部分的开发


输入面板已经开发完了,接下来还剩下整个密码门最核心的部分——逻辑判断部分。它负责判断密码是否正确并控制门的开关。准备好了吗,戴上橡胶手套,我们开始吧。

3.1 逻辑与或非

首先你得知道判断部分是和输入面板连接在一起的。所以我们可以通过上面数组的每一个下标的值来判断。

在开发逻辑判断部分之前,你得确定一个密码。

我们就假设密码是1 3 5吧,逻辑判断部分的工作就是检测按钮1,3,5是否被按下了。如果是的,就打开门并输出“欢迎回家”,否则就输出“密码错误”。

既然要打开门,不如我们设置一个命名为“门”的布尔型变量吧

bool button[10];        //button[0]空着不用,方便理解
for (int i = 1,i <= 9;i ++){        //for循环,循环九次,以后再慢慢讲cin >> button[i];
}
bool door = 0;        //控制门的开关,默认状态是关(0)

逻辑判断部分要如何编写呢?

我们需要判断按钮1,3,5是否被按下,也就是判断按钮1,3,5的值是否为1,如果是的话,就把door的值改为1并且输出“欢迎回家”,否则输出“密码错误”。

也就是说我们需要判断 按钮1被按下 并且 按钮3被按下 并且 按钮5被按下。

噢,是时候呼叫 “超级逻辑与运算符” 来帮忙了

bool button[10];        //button[0]空着不用,方便理解
for (int i = 1,i <= 9;i ++)
{        //for循环,循环九次,以后再慢慢讲cin >> button[i];
}
bool door = 0;
if ((button[1] == 1)&&(button[3] == 1)&&(button[5] == 1))
{door = 1;cout << "欢迎回家" << endl;
}
else cout << "密码错误" << endl;        //if-else语句是后话了,我们以后会细讲

真不错,逻辑判断部分已经初具雏形了。这时,科学家们又遇到了难题。总有一些熊孩子会喜欢把所有的按钮都按一遍,这样按钮1,3,5也能变为1值,也能把门打开。那密码门还不如不装。所以我们需要增加一个判断条件,如果其他按钮也被按下了,就把门关上。

bool button[10];        //button[0]空着不用,方便理解
for (int i = 1,i <= 9;i ++)
{        //for循环,循环九次,以后再慢慢讲cin >> button[i];
}
bool door = 0;
if ((button[1] == 1)&&(button[3] == 1)&&(button[5] == 1))
{if ((button[2] == 1)||(button[4] == 1)||(button[6] == 1)||(button[7] == 1)||(button[8] == 1)||(button[9] == 1)cout << "密码错误" << endl;else{door = 1;cout << "欢迎回家" << endl;}
}
else cout << "密码错误" << endl;        //if-else语句是后话了,我们以后会细讲

好了,最核心的部分已经被我们完成了,接下来就交给科学家们完成前端的开发吧。相信有了这款密码锁,再也没有人会遭窃了。


尾声


热点新闻!昨日晚一户人家保险箱被盗,据办案民警称,小偷在作案时带了一把铁镐,把密码门挖破后盗走了保险箱……

啊这……

实验室里密码锁的开发——你了解运算符吗(三)相关推荐

  1. 实验一java开发环境_2018-2019-2-20175225 实验一 《Java开发环境的熟悉》实验报告

    2018-2019-2-20175225 实验一 <Java开发环境的熟悉>实验报告 2018-2019-2-20175225 实验一 <Java开发环境的熟悉>实验报告 20 ...

  2. 2017-2018-2 20165236 实验四《Android开发基础》实验报告

    2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛     ...

  3. 2018-2019-2 20175305实验一《Java开发环境的熟悉》实验报告

    2018-2019-2 20175305实验一<Java开发环境的熟悉>实验报告 实验题目 实验一Java开发环境的熟悉-1 1).实验目的及要求 1.建立"自己学号exp1&q ...

  4. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础

    <实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...

  5. 20155229 实验一《Java开发环境的熟悉》实验报告

    20155229 实验一<Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Idea 编辑.编译.运行.调试Java程序. 实验步骤 (一) ...

  6. 2018-2019-2-20175225 实验四《Android开发基础》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张元瑞 学号:20175225 指导教师:娄嘉鹏 实验日期:2019年5月14日 实验时间:13:45 - 21:00 实验序号:实验 ...

  7. java开发环境实验总结_20155212 实验一《Java开发环境的熟悉》实验报告

    20155212 实验一<Java开发环境的熟悉>实验报告 命令行下Java程序开发 命令创建实验目录 输入mkdir 2051212创建以自己学号命名的文件夹,通过cd 20155212 ...

  8. 2018-2019-2 20175311 实验一《Java开发环境的熟悉》实验报告

    2018-2019-20175311实验一<Java开发环境的熟悉>实验报告 一.实验内容及步骤 (一):使用简单的JDK编译.运行java程序 题目一比较简单也比较基础,主要就是考查我们 ...

  9. 2018-2019-2 20175308实验一 《Java开发环境的熟悉》实验报告

    2018-2019-2-20175308 实验一 <Java开发环境的熟悉>实验报告 一.实验内容及步骤 (一)使用JDk编译.运行简单的Java程序 输入cd Code命令进入Code目 ...

最新文章

  1. Web常见约定规范(精选)
  2. JoinGroup的过程
  3. 网页常用Javascript
  4. exif linux php扩展_LNMP环境为PHP添加exif扩展
  5. python基础--接口与归一化设计、封装、异常、网络编程
  6. php mysql单引号 双引号_php单引号、双引号与数据库
  7. 毕设日志——tensorboardX无法连接的问题
  8. 【Linux】CentOS 7 安装Redis
  9. springmvc的作用:
  10. 用vertx compose写链式操作
  11. 2011/05/19
  12. CRM系统客户管理系统源码
  13. 学计算机二级的免费软件,计算机二级MS模拟软件
  14. 浅谈Web大数据可视化平台开发流程
  15. 【2056】最大的数
  16. windows彻底卸载python的方法
  17. python——difflib内置模块之文本对比
  18. Redis之常见问题
  19. 代码开发--查漏补缺
  20. vue项目 无法下载导出的execel文件

热门文章

  1. python机器学入门到精通(二)
  2. 零点工作室暑假集训(AtCoder--ABC233)
  3. Lofree洛斐小翘键盘DIY小程序,和朋友们FUN起来!
  4. 宝塔面板安装完整教程(超详细)
  5. Innovasys实用教程(新手教学实用教程):如何在软件当中自定义表格边框
  6. unity shader 菲涅尔效果
  7. 老片影像修复-DeepRemaster
  8. redis配置项(protected-mode daemonize )
  9. 信息安全-DLP(数据防泄漏)
  10. kafka controller作用