一、为什么学习本门课程:
每个人都应该学习给电脑编写程序的技术,因为这一过程能够教你如何去思考!——史蒂夫·乔布斯
对一名软件工程师来说,什么是最重要的?是编程语言吗?如果你问100名工程师,那么100个人回答可能都是“No”。
编程语言层出不穷,不胜枚举,能够以不变应万变的奥秘何在?答案就是“编程之魂”。
传统的编程入门课,都是从教授一种语言的基本语法开始的,试图通过语言来传达“编程之魂”,但这样也许你会将更多的精力用在理解语言的语法细节上,只见树木不见森林。
本课程的目标是为未来的编程高手打下最坚实的基础,将学习编程之前你该了解的那些事,从具体的语言中独立出来,剥茧抽丝,取其灵魂,聚焦于程序设计思维的建立。
期望通过这样的内容安排和讲解,你在学完以后不只是简单地掌握了一种语言的语法,还能理解隐含在语法背后的思想,并初步具备灵活使用这些思想进行编写程序解决实际问题的能力。
本课程面向的是零基础的人群,就像学钢琴要先学好乐理和练好指法而不要急于去弹小汤一样,我们会从你无论学习什么语言编程都应必备的基础知识讲起,这些内容不涉及代码,也与语言无关,但却对训练你的思维至关重要,学完这些你才能真正理解计算机为什么能解题以及计算机是如何解题的,而语言不过是实现这一求解过程的一种工具而已。当你回头看时,你会发现,学习编程的关键不是你能用自己熟悉的语言写出程序,而是能够针对要解决的问题,将问题转化为计算机求解的步骤。这也正是我们安排前这一个月课程的意义所在。
你一定感到奇怪:不学语言,也可以学习程序设计;不写代码,也可以运行“程序”。这是真的吗?究竟是“真”是“假”,在本门课程“程序设计基础”中,你可以找到答案。
人生怎能没有一次说走就走的旅行?你是不是期待已久并早已跃跃欲试了呢?那就快快加入我们,和我们一起踏上程序设计之旅吧。
二、学习本门课程的方法
本课程在教学过程中,培养学生用程序设计语言解思想解决实际问题的能力;强调在解题实践中掌握程序设计的基本概念、基本思想和基本方法;突出对编程思想的阐述和计算思维的训练。
在授课过程中,主要分为三部分:一是:面向过程语言的思想讲解和实现过程,这里主要用的是visio流程图和Raptor图;二是:面向对象语言的思想和分析过程,这里不讲解设计过程,只分析,为后面的面向对象语言打下一个基础;三是:图论部分,这里将介绍图及树及有向图的概念,让学生理论图的意义。本月教师会注重解释“为什么”,揭示知识点背后的原理和思想,根据案例适时引入错误程序的分析、测试与调试,将一些易被忽视且对高水平程序设计很重要的“点”逐一展现给你,沿着数据结构从简单到复杂的主线展开,将软件工程相关的思想和方法渗透其中,从紧密结合实际的问题出发,在个例的“不断深化和提升”中逐步引出相关知识点,通过对问题的举一反三和前后知识点的融会贯通,由浅入深地启发引导你循序渐进地编程,让你在不知不觉中逐步加深对程序设计方法的了解和掌握。
三、教学目标
(一)知识目标(学什么知识)
1.了解计算机的基本组成,工作原理及机器码二进制的原码,反码,补码运算
2.在不接触语言的基础上学习算法的概念及描述方法
3.学会用流程图方法绘制解决顺序结构与选择结构的方法步骤
4.学会用流程图方法绘制解决循环结构的方法步骤
5.学会用流程图方法绘制解决循环嵌套的方法步骤
6.不写代码的基础上让自己的解决思路实现—Raptor算法速成工具
7.掌握基础的常用算法
8.掌握利用Raptor实现算法三大结构的应用过程
9.掌握面向对象程序设计的思想
(二)能力目标(产出物是什么)
1.训练学生的思维,真正理解计算机为什么能解题以及计算机是如何解题的,而语言不过是实现这一求解过程的一种工具而已。面向过程及面向对象的思维逻辑能力。
2.掌握实现程序设计三大算法结构的流程图绘制能力。
3.掌握实现程序设计三大算法结构的Raptor图绘制及解决问题的实际能力。
4.掌握对程序问题的分析、解决、测试与调试过程。
四、参考教材
1.推荐网站:http://www.icourse163.org/home.htm?userId=1023208056
2.《程序设计基础》苏小红、赵玲玲等,高等教育出版社
3.《面向对象分析与设计》每2版、麻志毅编著,机械工业出版社
4.参考附件RAPTOR程序设计例题参考答案(相关案例答案都有)
注:讨论(标红)部分不作为考核部分,学生可以通过度娘或相关资料来查相关知识点充实自己
注:标浅粉表格内容也是考核点部分

第一单元:计算机工作原理
首先,在家想一想为什么这门课叫程序设计基础呢?大家知道有C语言、C++语言,Java等等。大家是否想过这些语言的共性是什么呢?2000年各大高校选用C语言来教学,2005年部分高校开始选择Java语言来教学,现在又有部分高校选择Python语言来教学,程序设计与语言的关系在不继弱化,不变的是大家都在学程序设计,这就是语言的共性这门课的宗旨就是提取程序设计中与具体语言无关的知识信息爆炸单独一门课程进行讲解,重点关注与具体语言无关的知识,比如控制结构,算法、解决问题的运算思维等等,这样就可以把握所有语言的共性,以不变应万变。当然我们也要先掌握一下C语言的基础知识,因为只有C语言是面向过程设计语言(面向过程先知道即可),更好的为其它的语言应用打下良好的基础知识。
下面我们先来看下计算机与人工智能,计算机系统换句话说,也就是计算机的昨天、今天和明天。
一、计算机与人工智能、计算机系统:
我们通过以下几位人物来看计算机的发展变革,智能计算机及系统的组成。
第1 位他是改变世界的第三个苹果的缔造者,是电脑业界与娱乐业界的标志性人物,他为我们留下众多的传世之作--------乔布斯。
第2位他是个人时代当之无愧的领军人物,他的软件产品遍布世界每一个角落,软件产品遍布世界每一个角落而他也当仁不让地长期霸占世界首富的桂冠----------比尔盖茨。
第3位他是少年天才、曾享受与爱因斯坦同学等的待遇(不用给学生上课)是计算机史上著名的“101页报名”的作者之一,被誉为“现代计算机之父”-------冯诺依曼
第4位他曾协助军方破解德国的著名密码系统Eniama,他提出著名模型为现代计算机的逻辑工作方式奠定为基础,被誉为“计算机科学之父”-----阿兰图灵。
图灵测试为人工智能打开了开端,图灵测试请查阅度娘进行了解,其实每天我们都在被测试,大家所每天用电脑的各种登录过程,其实也就是测试我们的过程,所以说电脑也具有人工智能?
人工智能(Artificial Intelligence ,简称AI)是让计算机具有执行某些与人类智能活动有关的复杂的功能(如判断、推理、识别、理解、学习、规划和问题求解等)的能力。简单地说就让计算机和人一样,也就是机器人。
大家可以看一下以下几部电影,在这些电影里都提到了机器人,也就是人工智能。
《变形金刚》
《人工智能》
《终结者》系列
《黑客帝国》三部曲
下面我们来看一下人机大战史
1958年 IBM的“思考”成为第一台能同人下棋的计算机
1988年 ”深蓝“击败丹麦特级大师拉尔森
1989年 “深蓝”在与世界棋王卡斯帕罗夫进行的对阵中以0比2败北
1996年 “深蓝”诞生,在与卡斯帕罗夫的挑战赛中以2比4失利
1997年 “更深的蓝”以3比2击败了卡斯帕罗夫
2001年 “更弗里茨”击败了卡斯帕罗夫、阿南德以及除了克拉姆尼克之外的所有排名世界前十位的棋手
2002年 “更弗里茨“与克拉姆尼克以4比4战平
这是像人一样的机器与像机器的人之间的战斗。
2012年6月底,在英国著名的布莱切利庄园举行了一场国际人工智能机器测试竞赛,由俄罗斯专家设计的“叶甫根尼“电脑程序脱颖而出,其29.2%的均成功“骗过”了测试者。
2014年6月7日,聊天程序“尤金古斯特曼“在英国皇家学会举行的2014图灵测试大会上冒充g个13岁的乌克兰男孩而骗过了33%的评委,从而通过和图灵测试。
计算机与人工智能的比较 ?
2011年,IBM公司研制的可以参加智力问答比赛的 “沃森(Watson)”软件系统能以每秒翻100万本书的速度从其存储的2亿页百科全书、字典、文学作品中搜索答案,这种人类望尘莫及的事情。
计算机去理解一个儿童故事这种连5岁小孩子都能做到的事情,却困难重重。
二、计算机的组成及工作原理
那么一台完整计算机系统是由哪些部分组成的呢?
计算机系统(Computer System)是一种能按照事先存储的程序自动、高效地对数据进行输入、处理、存储和输出的系统。
通俗的讲计算机系统是由硬件和软件两部分组成。
微型计算机系统构成图参考下图
计算机硬件指可以看得见、摸得着的设备,也就是计算机的躯壳
硬件主要有五大部分组成,分别为输入设备、存储器 、输出设备 、控制器、运算器;其中控制器与运算器共同组成了中央处理器 CPU。

三、数据的表示与存储1
计算机可能处理的数据很多,多种多样,文字、符号、图形、图像和语言、十进制数。对于计算机来讲它们都是一样的,都被用数表示的。计算机是用二进制数来进行数据的表示与存储。
在讲二进制前,我们先来看下十进制数如108,108 = 1102+0101+8100,把这个数折成10的不同幂的形式,你是否能想像如果不用10而用2来表示,如5 = 122+021+120 。
进制:进制也就是进位制,是人们规定的一种进位方法、是一种计数方式。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
十进制 二进制
数码: 0、1、2、3、4、5、6、7、8、9 数码: 0、1
基数: 10 基数: 2
运算规律: 逢十进一,借一当十 运算规律: 逢二进一,借一当二
展开形式: 101=1102+0101+1100 展开形式: 101.1=122+021+120+1*2-1
表示形式: 十进制数可以不加注,也可以写成加注形式:如 (99)10 或99(10)或(99) 表示形式: 二进制数10110011可以写成
(10110011)2或10110011(2)或写成10110011B

那么十进制是怎么转换成二进制来表示的呢?一般我们考核255以内的数。
案例1:108(10)=?
算法一:
108=64+44
20=1 =26+44
21=2 =26+32+12
22=4 =26+25+12
23=8 =26+25+8+4
24=16 =26+25+23+4
25=32 =26+25+23+22
26=64 =126+125+024+123+122+021+0*20
27=128 =1101100(2)

当然我们也看出这种方法比较麻烦,但是也不失是一种简单的解决问题的方法,那还有没有更好的方法呢?那么我们来看第二种方法:除2逆向取余法
除数 被除数 余数
2 108 0 除2逆向取余法(从下到向)
2 54 0
2 27 1
2 13 1
2 6 0
2 3 1
2 1 1
0 0
最终得出108(10)=101100(2)

十进制小数转二进制和整数转换相同:如0.875=?
0.875=0.5+0.375
2-1=0.5 =2-1+0.25+0.125
2-2=0.25 =2-1+2-2+2-3
2-3=0.125 =0.111(2)
同样十进制转二进制也可以使用乘以2顺向取整法
0.8752=1.75 1 顺序向下
0.75
2=1.5 1
0.5*2=1 1
0.875(10)=0.111(2)
二进制数的运算规则
加法规则:0+0=0,0+1=1,1+0=1,1+1=10
乘法规则:0•0=0, 0 • 1=0 ,1 • 0=0,1 • 1=1
案例: (1101.01)2 + (11.01)2 =?
1101.01
+ 11.01
10000.10

上面所说的都是正数,那么负数应该怎么标示呢?负数在计算机中都是用补码实现的。
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
原码:最高位代表符号位,其它数值位是本身的二进制形式。
反码:最高位代表符号位,其它数值位依次取反。
补码:最高位代表符号位,数值位在其反码的基础上加1
假设一个数用16位来表示,-1的二进制表示为

-1

原码 10 00 00 00 00 00 00 01
反码 11 11 11 11 11 11 11 10
补码 11 11 11 11 11 11 11 11

下面我们于来看下有符号数与无符号数的区别
有符号数就是用最高位表示符号(正或负),其余位表示数值大小
无符号数则所有位都用于表示数的大小
下在我们以一个数用16位二进制表示来说,我们来看一下两者的表示范围
 Q4-1:16位无符号整数,表数范围?
00 00 00 00 00 00 00 00 0
00 00 00 00 00 00 00 01 1
… …
11 11 11 11 11 11 11 10 216-2
11 11 11 11 11 11 11 11 216-1
表数区间[0, 216-1],共计216个数,范围如前区间,0----65535
Q4-2 :16位有符号整数,表数范围?
00 00 00 00 00 00 00 00 0

01 11 11 11 11 11 11 11 215-1 32767
10 00 00 00 00 00 00 00 -215 -32768
10 00 00 00 00 00 00 01 -215 +1 -32767

11 11 11 11 11 11 11 11 -1
表数区间[-215,215-1] ,共216个数,范围如前区间,-32768----32767
知道了数据在计算机中是以二进制形式表示的!那数据是怎么存储在计算机中的呢?
那么大家考虑下,在《计算机基础》科目中学过二、八、十、十六进制四种进制,它们之间又是该怎么转换呢?不能借助计算器的呀,这些都是要考核的呀!
讲解八进制、十六进制请参考《计算机基础》教材。
四、数据的表示和存储2
计算机中所有程序的运行都是在内存中进行的。内存其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,那内存是怎么组织数据的呢?
如上图所示,内存划分成一个一个的字节,每个字节8位二进制位组成,且每个字节都有一个地址,使用时,计算机将通过地址来录址,找到要用的数据。
内存大小的衡量单位
英文称谓 换算方法 容量大小(单位字节)
B 2 的0 次方 1 B == 8 b
KB 2的10次方 1 KB == 1,024 B
MB 2 的20 次方 1 MB == 1,024 KB
GB 2 的30 次方 1 GB == 1,024 MB
TB 2 的40 次方 1 TB == 1,024 GB
PB 2的50 次方 1 PB == 1024 TB
当然以上还有EB、ZB、YB等。

一、什么是算法
算法就是解决问题的方法和步骤。
在解决问题中,第一步要解决什么问题,第二步要解决什么问题,每一步要为下一步解决了什么问题,直到最后,问题解决了。这样的一个求解过程就是算法。
在设计一个程序时,要综合运用这几方面的知识。数据结构是加工对象,语言是工具,变成需要合适的方法,但没有一个合格的算法,我们称不上合格的开发程序。所以,算法是程序设计的灵魂和核心。
1.算法解决什么问题
要想知道算法能帮我们解决的问题,我们不得不提下一个算法应该具有的五大特性:
(1)有穷性 指算法在执行有限的步骤后自动结束、不会出现无限循环。
(2)确定性 算法的每一步骤都具有确定的含义,不会出现二义性。。
(3)零个或多个输入 算法可以具有零个或多个输入。尽管对于绝大多数算法来说,输入参数都是必要的,但对于个别情况,如打印“hello world!”这样的代码,不需要任何输入参数,因此算法的输入可以是零个。
(4)一个或多个输出 算法至少有一个或多个输出,算法是一定需要输出的,输出的形式可以是打印输出,也可以是返回一个或多个值等。
(5)可行性。算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。
知道了算法的特性,我们应该已知知道了算法能帮我们解决什么问题了吧?算法可以帮助我们解决任意复杂的问题,只要是满足以上五个要求,不论程序开发,还是普通计算,算法都能帮我们搞定。
二、算法的三大结构
程序采用自顶向下,逐步求精的方法来完善算法,1966年,Bohra和Jacopini提出了以下基本结构,用这3种基本结构作为表示一个良好算法的基本单元。
1.顺序结构
如图1所示,虚线框内是一个顺序结构。其中A和B两个框是顺序执行的。即:只有执行完A框所指定的操作后,才接着执行B框所指定的操作。这是最简单的一种基本结构。顺序结构就是按照书写的顺序依次执行,不允许跨越任何一条语句。
2.选择结构
选择结构又称为分支结构,如图2所示,此结构中必包含一个判断框(菱形)。根据给定的条件P是否成立而选择执行A框还是B框。例如P条件可以是“x>=0”或“x>y”。
注意:无论P条件是否成立,只能执行A框或者B框之一,不可能即执行A框又执行B框。所以选择结构就是根据条件判断是否成立,执行不同的语句段。关于选择结构语句请参考本书(第5,6单元).
3.循环结构
循环结构在有些书籍上也称为重复结构,即反复执行某一部分的操作。大家先有这种意识,如操作跑十圈,这就一圈一圈在循环跑;循环结构如图3图4所示。

通过算法的三大结构,我们也能看出在描述算法时,我们用了两种方法,这里再举个小例子:说把大象装冰箱需要几步?你肯定会说三步,第1步把冰箱门打开,第2步把大象赶进去,第3步把冰箱门关上。那假如当时你不方便说话还要解释清楚这件事,可以用画图如下:

这两种方法第一种就是用自然语言来描述,第二种就是画图,在程序设计语言中,算法的描述方法主要有如下几种。
1.自然语言描述
自然语言就是人们日常使用的语言,可以是汉语、英语,或其他语言。用自然语言通俗易懂,但文字冗长,容易出现歧义。自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义。因此,除了那些很简单的问题以外,一般不用自然语言描述算法。
2.流程图描述
流程图是用一些图框来表示各种操作。是算法的图形化表示。用图形表示算法,直观形象,易于理解。ANSI规定了一些常用的流程图符号,如下图。以为世界各国程序员普遍采用。流程图的画法请参阅第六部分visio软件的安装及应用。
3.NS结构化流程图描述(不做NS里优缺点考核)
NS结构化流程图是由美国学者I.Nassi和B.Schneiderman于1973年提出的,NS图就是以这两位学者名字的首字母命名的。它的最重要的特点就是完全取消了流程线,这样迫使算法只能从上到下顺序执行,从而避免了算法流程的任意转向,保证了程序的质量。与传统的流程图相比,NS图优点就是形象、直观、节省篇幅,尤其适合于结构化程序的设计。
4.伪码描述(不做伪码里优缺点考核)
伪码是指介于自然语言和计算机语言之间的一种代码,它的最大优点是,与计算机语言比较接近,易于转换为计算机程序。书写无固定格式和规范,比较灵活。
四、顺序结构的三大构成
顺序结构是按照书写顺序一条一条向下执行,在顺序结构程序中主要包含三类语句,赋值语句,输入语句及输出语句。
1.赋值语句
赋值语句是由赋值表达式加上一个分号构成。语句都是以分号结尾的。
2.输入语句输出语句
在讨论输入输出时要注意以下几点。
(1)会对计算机而言。从计算机向外部输出设备(如显示器、打印机等)输出数据称为输出,从输入设备(如键盘、鼠标等)向计算机输入数据称为输入。
(2)C语言本身不提供输入输出语句,输入输出操作是由C函数库中的函数实现的。(详见第五单元)
(3)在程序中的第一行同都有一个预编译命令#include(关于预编译命令详细讲解参考第14单元),它可以将有关的头文件包括到用户源文件中。在使用标准输入输出库函数时,要用到“stdio.h”文件中提供的信息。文件后缀中的“h”是head的缩写,#include命令都是放在程序的开头,因此这类文件被称为“头文件”。
3.顺序结构的逻辑先后
顺序结构即按照程序的内部联系安排说明顺序及执行过程,包括因果关系、层递关系、主次关系、总分关系、并列关系等;输入之前有提示,输入之后的结果,但是结果与提示都需要printf语句在电脑屏幕上显示出,而输入就要用scanf语句了(后面详细学输入输出语句)。同样就像是没有计算就没有结果一样,只有先计算,后出结果。所以程序的过程一定要符合逻辑的先后过程。
设计出正确的算法是编写正确的计算机程序的前提条件
程序设计是一门艺术,假如把数据结构设计看成人躯体那么算法就是灵魂,所以有算法设计—程序的灵魂和核心、数据结构—程序的肉体。Pascal创始人(图灵奖1984)N.wirth揭示面向过程的程序本质公式:算法+数据结构=程序。其中数据结构指定义待操作数据在计算机内存中是如何存储和组织的。选择恰当的数据结构可以提高程序的运行或存储效率。
五、Visio软件的安装及应用
Office Visio是微软公司推出一款便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用具有专业外观的 Office Visio 图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策
Visio软件的安装和office软件的安装一样,这里不再重复,如若有安装相关问题请参考:http://jingyan.baidu.com/article/bea41d436837a4b4c51be637.html。下载安装程序请登录:http://www.xdowns.com/soft/188/215/2013/Soft_103851.html。
Visio软件的灵活使用是一门学问,比较深,但是只是做程序的流程图的话就比较简单了。下面我们单独来讲一下visio软件中流程图画法中各种小技巧。打开软件选择常规然后选择基本流程图,打开界面如下
1.选择各种框
(1)第一种方法是用鼠标选中,直接到编辑区(白色方格区域)。
(2)第二种方法是选中要用框,直接在上一个框上点隐藏的箭头(如下图1)即可。
2.常用两种线的画法
(1)第一类:动态连接线(如图2),这条线只能以直角形式进行弯曲,两个端点为+字,是用来连接各种框的连接点上,连接上时,该点会自动变红;中间的小绿点是线在某一点进行弯曲的点,可以进行拉伸。
(2)第二类:直线-曲线连接线(如图3),该线只能以度角进行弯曲,象跳绳一样,端点同动态连接线一样,中间黄点可以对线进行拉伸。
3.箭头的选择:一般默认为向下箭头,当然也可以进行选择(如图4)
4.文字的注释:线上写文字一般双击左键进行编辑文字即可。

流程图要想掌握好,必须多多练习,这样才能记住要用的东西到底在哪里,该怎么用!!
5.画流程图要遵循流程图规范要求:
(1)各种框必须应用正确
(2)箭头方向正确
(3)文字表述正确
(4)解决问题步骤先后顺序正确

六、基于流程图仿真的可视化----RAPTOR之让你的流程图飞起来
在开篇我们说过,不写代码也可以运行程序,听到这话的时候,你心里是不是有小小的疑问呢?是不是认为在吹牛呢?确定的告诉大家,这不是吹牛,因为下面将学习这个神器—Raptor。
Raptor是用于有序推理的快速算法原型工具
简单的说Raptor就是一款可以绘制流程图,运行流程图,并且能够看到运行结果的一种防真环境。在之前的学习中,我们所绘制的流程图都是静态的、不动的而且也看不到什么结果使用Raptor之后可以使用流程图动起来,而且还能看到流程运行后的结果,Raptor是不是很棒呀?
下面我们来先说下Raptor的功能及介绍如下:
是一种基于流程图仿真的可视化的程序设计环境
在最大限度地减少语法要求
帮助你编写正确的程序指令程序-流程图
逐个执行图形符号
跟踪指令流执行过程
那Raptor的流程图是什么样的?
Raptor的流程图其实是一个有向图,也就是必须有开始(Start)和结束(End)。
Raptor软件是一款小型软件,有英文版和汉化版,资料汇总里汉化版的安装包,安装和QQ软件的安装过程一样,所以安装过程就不再表述了。
安装完成后双击运行打开Raptor软件界面,我们可以看到如下图所示

打开后有两个窗口,一个是主要操作平台(左边),一个是主控台(显示结果);而在左边main下start和end之间是我们绘制流程图的地方。所可以画的如上图所示,共有6种符号,一个是方框赋值(Assignment),一个是调用(Call),输入(Input)、输出(Output)、选择(Selection)和循环(Loop)。
各个小窗口的功能如下所示:
使用RAPTOR设计的程序和算法可以直接转换成为C++、C#、Java等高级程序语言,这就为程序和算法的初学者铺就了一条平缓、自然的学习阶梯
在英文版本中我们先来认识一下各个符号的功能:如下图
七、基于流程图仿真的可视化----RAPTOR之再飞一会
下面我们以案例一来促进对Raptor操作的掌握
案例 :给定三角形的三边长输出三角形的面积?
考虑输入什么?计算什么?输出什么?

首先我们画出解决问题的流程图
下面我们根据流程图来设计Raptor。
首先运行Raptor,先选择路径保存文件,然后在main版块中进行操作:
1.鼠标左键选择输入(Input)框,直接拖到Start与End中间,也可在选择输入(Input)框,点击要放入位置的线。那么就可以看到下图:

Raptor中如果要想删除画多了的框,可以在选中的基础上,按“delete”删除。
2.双击输入(Input)框,弹出录入数据

注意在输入输出提示内容时,必须用英文(也就是半角)符号双引号把提示内容括起来。
在输入提示内容时,因为是汉化版,所以执行时汉字就会变成乱
这里我们来先来讲下变量:
变量是相对于常量而言的,在程序执行过程中其值可以改变的量称为变量。。(关于常量变量在后面还会做详细讲解)
同上完成第二条边和第三条边的输入:如下图

点运行按钮后,可以看到一个绿色的框就是Raptor图的走向,执行到输入语句时就会弹出的输入框,输入数据后点击确定进行下一步的执行。因为没有输出,所以主控台上只能看到执行次数,没有结果。
3.输入完成以后就是计算了那怎么计算呢,s=0.5*(a+b+c);这是一个赋值语句,所以我们要用赋值框。如下图
注:在程序设计中我们用*号来代表算术运算中的乘法
Set指的是我们要设置赋值给那个变量
To指的是给变量赋的值是谁
计算面积

这是用到了求平方根函数sqrt()
函数:完成特定功用的模块
当在调用函数输入s就可以看到以s开头所有函数。常用函数有:
abs() 绝对值函数 max() 最大值函数
min() 最小值函数 random 随机值函数
这些函数我们先知道,具体应用会在以后进行讲解。
5.计算出面积就可以输出了如下图

然后我们点运行,输入3、4、5我们就可到如下图:

程序设计基础流程图以及进制的介绍相关推荐

  1. 信捷XDPLC十轴(包含)及以下万能通用程序模板,用进制数据和S状态完美结合

    信捷XDPLC十轴(包含)及以下万能通用程序模板,用进制数据和S状态完美结合. 各提示,报警,数据计算处理,再次细分. 通过十几年电气非标项目的自身摸索,结合日本,台湾,韩国等电气工程师同仁编程特点, ...

  2. 用程序员计算机算进制,一文带你读懂计算机进制

    hi,大家好,我是开发者FTD.在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制.八进制以及十六进制.那么大家对进制的认识 ...

  3. 转换8421码的程序c语言,16进制数转换成8421BCD编码函数

    .INCLUDE hardware.inc .IRAM _Led_Out: .dw 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 _L ...

  4. 用查表法写c语言程序,C语言day07-15进制查表法

    #include void printfBinary(int value); void printfBunary2(int value); void printOct(int value); // 8 ...

  5. 黑马程序员——代码实现进制转换

    ----------------------    android培训    java培训   期待与您交流!    ----------------------    系统提供的进制转换为Integ ...

  6. Java中常见程序:万年历,进制转换等

    1.1/2+2/3+-.+19/20 System.out.println("i\t\tm(i)");double a = 0;for (double i=1; i<=20; ...

  7. 黑马程序员JAVA基础-进制

    ------- android培训.java培训.期待与您交流! ---------- 进制  (1)就是进位制,是人们规定的一种进位方法. 对于任何一种进制--X进制,     就表示某一位置上的数 ...

  8. C++语言程序设计基础

    C++语言程序设计基础&&入门 概念 进制转换 十进制整数转二进制整数 十进制小数转二进制小数 二进制转十进制 二进制数的编码表示问题 简单程序示例 字符集 词法记号 标识符的构成规则 ...

  9. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换

    为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010- 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...

  10. 微信小程序蓝牙BLE开发——关于进制转换(四)

    微信小程序蓝牙BLE开发--进制转换 这段时间开发共享设备,对接蓝牙BLE设备通信协议,过程中用到一些进制转换, 记录下方便使用. 有些参考大神们,感谢分享. 文章目录 微信小程序蓝牙BLE开发--进 ...

最新文章

  1. 机器学习 不均衡数据的处理方法
  2. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第7章-Brunovsky 型高阶非线性多智能体系统一致性控制
  3. 工作中如何做好技术积累
  4. java使用itext填充pdf模板,超简单教学,有手就行
  5. 线性筛法--有测试代码
  6. 渗透测试 已学课时 1 个_我14岁上创业课时学到的东西
  7. Android 系统(54)---Android系统开篇
  8. mysql --one-database_MySQL数分:安装及入门
  9. telnet服务器响应慢,交换机s10508 telnet登录后上反应慢
  10. python视频-python剪切视频与合并视频的实现
  11. FISCO BCOS源码(3)线程交互和交易的生命周期
  12. php防止网站被镜像,网站防止被其他站iframe框架引用镜像的方法
  13. 树莓派制作语音对话机器人
  14. 数值计算之 插值法(2)多项式插值——牛顿插值法
  15. 计算机工控机配置,研华工控机最新配置IPC-610
  16. 马悦凌:从初级护士到“民间奇医”[9]
  17. 什么是收集服务器配置信息,配置rsyslog服务器收集Cisco交换机日志信息操作指引...
  18. 中文繁简互换以及获取中文字符串首字母
  19. 翼支付个人自定义收款接口
  20. PAT 1034 有理数四则运算 python

热门文章

  1. 为什么网站总显示服务器不能创建对象,IE浏览器出现“Automation 服务器不能创建对象”解决教程...
  2. Bootstrap 导航/滑动门(nav)
  3. 终止代码:DRIVER_IRQL_NOT_LESS_OR_EQUAL 失败的操作:CH341S64.SYS
  4. IDEA 中 Lombok 编译报错 Java 找不到符号问题
  5. 微软服务器版本组建nas,怎么用windows server 2012组建家用nas服务器
  6. 一个月攻克托业--复旦大学考生
  7. 微信扫码支付 java版
  8. 【win10】设置电脑固定IP,解除固定IP
  9. vmware设置固定ip
  10. win10c盘android,Win10系统C盘哪些文件可以删除?C盘无用文件都在哪?