程序算法有哪些特征(算法与程序的区别与联系)

编程,顾名思义就是编写程序。学习之前,要先弄明白什么是程序?解决问题的步骤就是程序吗?算法和程序的关系是什么?本课将一一给出答案。通过本课的学习,你将了解到程序及算法的概念及其关系。 什么是计算机程序? 程序是指完成某些事物的一种既定方式和过程,可以将程序看成是一系列动作的执行过程的描述。在百度百科中,计算机程序被定义为“一组指示计算机执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某…

编程,顾名思义就是编写程序。学习之前,要先弄明白什么是程序?解决问题的步骤就是程序吗?算法和程序的关系是什么?本课将一一给出答案。通过本课的学习,你将了解到程序及算法的概念及其关系。

什么是计算机程序?

程序是指完成某些事物的一种既定方式和过程,可以将程序看成是一系列动作的执行过程的描述。在百度百科中,计算机程序被定义为“一组指示计算机执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。

在生活中,可以见到许多计算机程序实例。下面,我们看一个生活片段:

清晨六点十分,伴随着准时而优美的起床铃声,我迈出宿舍,走进了第一餐厅。餐厅里人很多,没有办法,我只买了两个包子做为我的早餐罢了。随着我的餐卡在打卡机上轻轻掠过,六毛钱便不翼而飞了。当我走到超市的时候,突然感觉只吃包子是不是太单调了,于是在超市里拿了一包早餐奶,但付钱的时候却发现超市的收银机坏掉了,没奈何,我只得忍痛把刚拿到手的早餐奶又放了回去,真郁闷!

在上面的生活片段中,我们能找出几处计算机程序为我们生活服务的痕迹来呢?

● 餐厅打卡机

● 超市收银机

前面关于计算机程序的定义提到了“计算机程序是一组执行动作或做出判断的指令并且运行于某种目标体系结构上”。定义有点晦涩难懂,但是只要我们结合实际运行的程序并稍微略加分析,就能够做到了然于心。

首先考察(餐厅打卡机)

餐厅打卡机一般采用了射频识别技术,“射频识别(RFID)是一种无线通信技术,可以通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或者光学接触。”②

打卡机利用射频识别技术将餐卡信息读取到打卡机,由打卡机的处理程序对读取的信息做进一步处理。打卡机中的处理程序就是计算机程序,它需要执行下述动作和指令完成一次打卡操作:

1) 接受输入的餐费金额

2) 读取卡内金额

3) 判断卡内金额是否大于餐费金额

4) 如果卡内金额小于餐费金额,给出余额不足提示

5) 如果卡内金额大于餐费金额,将卡内金额减去餐费金额后,回写到卡内

文字描述其动作或流程不够清晰或理解的话,我们可以用流程图来描述打卡机程序的执行动作或流程:

Python入门到精通(1):程序与算法

图 1 餐厅打卡机程序流程图

采用流程图描述打卡机程序的执行动作,是不是更直观和清晰一些。

再来考察(超市收银机)

超市收银机的工作原理类似餐厅打卡机,也是采用射频识别技术读取商品条码,获取商品价格、名称等信息,并由收银机内置的计算机程序对商品价格等信息进行汇总处理,给出所购商品金额等信息。其处理流程要比餐厅打卡机复杂一些,它需要执行下述动作和指令完成一次收费操作:

1) 读取商品条码

2) 获取商品价格、名称等信息并显示到收银机屏幕上

3) 计算商品总金额

4) 等待操作员按键

5) 操作员按下“商品”按键,继续读取商品条码

6) 操作员按下“等金额”或“找零”按键,钱柜自动开启

其流程图描述如下:

Python入门到精通(1):程序与算法

图 2 超市收银机程序流程图

从餐厅打卡机和超市收银机的内置的程序可以看出,人们使用计算机,就是要利用计算机程序处理各种不同的问题,为了让计算机能够按照我们的意愿去工作,人们在设计计算机时,为计算机提供了一套指令,其中的每一种指令对应着计算机能执行的一个基本动作,为让计算机完成某项任务而编写的指令序列就称为计算机程序。

2、什么是程序算法?

我们知道,程序是用来解决问题的,是由多个步骤或过程组成的,这些步骤和过程就是解决问题的算法。

同学们都下过象棋吧,图3给出的是《江湖迷局》一书的一个残局棋谱,棋谱给出了每一步棋的走法,按照棋谱规定的步骤行棋,就能破解这个残局,棋谱给出的行棋规则就是算法。

Python入门到精通(1):程序与算法

图3 棋谱残局

去超市购物时,人们经常会对需要购买的同类商品做价格的比较,例如商品A、商品B、商品C在同样质量的情况下,人们会倾向于比较价格,优先购买价格便宜的商品,这个比较过程是在大脑进行的,比较的过程就是排序算法,从三个数中找出最小的数。

Python入门到精通(1):程序与算法

图4 超市购买货物时进行价格比较

图3的棋谱残局需要走11手,就能破解残局,图4的价格排序也仅需要对3个数进行排序,在大脑比对一下数的大小就完成了。它们都是算法,算法有没有明确的概念和特征呢?

要想弄清楚算法的概念和特征。先看看算法能给人们的生活带来哪些帮助?前面的棋谱残局和价格比对是生活中的算法,可以帮助人们解决生活中的一些问题,让我们变成象棋高手,或者买到最实惠的商品。

如果让计算机执行算法,会给人们带来什么帮助呢?在学习方面,把解方程的步骤输入到计算机,可以帮助人们解方程;在工作方面,把英汉词库及检索算法输入到计算机,可以帮助人们自动进行英汉词语翻译;在生活方面,把游戏规则和算法输入到计算机,可以让人们娱乐等等。计算机有了算法,才有了大脑和灵魂,没有算法的计算机,只能是一台机器。

为了让计算机能够完成前面所说的任务,就需要事先对各类问题进行分析,确定解决问题的具体方法和步骤。再编制好一组让计算机执行的指令,交给计算机,让计算机按人们指定的步骤有效地工作。这些具体的方法和步骤,其实就是一个问题的算法。例如,让计算机帮助我们解方程,就需要把解方程的步骤和方程参数输入到计算机,计算机根据输入的步骤和参数完成方程的求解。

严格来说,计算机程序是为让计算机完成某项任务而编写的指令序列,指令序列就是解决问题的算法。

Python入门到精通(1):程序与算法

图5 算法的概念

前面理解了算法的概念,再来看看算法有哪些特征。

算法是由有限多个步骤组成的,它有下述两个基本特征:第一个特征是每个步骤都明确地规定要执行何种操作;第二个特征是每个步骤都可以被人或机器在有限的时间内完成。算法除了上述两个基本特征外,还要具有第三个基本特征:虽然有些步骤可能被反复执行多次,但是在执行有限多次之后,就一定能够得到问题的解答。

Python入门到精通(1):程序与算法

图6 算法的特征

算法比较抽象,下面讲解一个实际的算法案例,让同学们对算法有个感性认识。对一组无序的数字进行排序,比较经典的排序算法就是冒泡排序。

3、冒泡排序算法

冒泡排序是将一组数字多趟顺序比较,一次比较两个数字,如果他们的顺序错误就把他们交换过来,小数或(大数)逐渐往上冒,当再没有需要交换的数字时,说明该组数已经排序完成。

对下面的一组数用冒泡排序算法,并按照从小到大的顺序排序。

Python入门到精通(1):程序与算法

排序前的一组数,我们称为原始数列,每两个数进行一次比较,称为一轮比较。

Python入门到精通(1):程序与算法

第一轮比较:23与34比较,23小于34,两个数不用交换位置。

Python入门到精通(1):程序与算法

第二轮比较:34与5比较,因为34大于5,因此34和5交换位置。

Python入门到精通(1):程序与算法
Python入门到精通(1):程序与算法

第三轮比较:34与7比较,因为34大于7,因此34与7交换位置。

Python入门到精通(1):程序与算法
Python入门到精通(1):程序与算法

第四轮比较:比较34和56,因为34小于56,两个数不用交换位置。

Python入门到精通(1):程序与算法

在前面的四轮比较中,从数列左侧的第一个数开始,顺序两两比较两个数的大小,如果前面一个数比后面一个数大,就交换两数的位置,直到数列的最后一个数比较完毕。

这四轮比较下来,称为一趟比较。如果在该趟比较中,存在两个数交换位置的情况,就需要进行下一趟比较,直到再没有数字进行交换,算法结束。

因为在第一趟比较中,存在两数的位置交换,因此还需要进行第二趟的比较。

第二趟比较

第二趟比较也是从数列左侧的第一个数开始,顺序两两比较两个数的大小。不过第二趟比较就不需要再比较数列右侧的最后一个数了,因为在第一趟比较的过程中,该数列最大的数已经被交换到数列右侧最后的一个位置了。

Python入门到精通(1):程序与算法

第一轮比较:比较23和5,因为23大于5,因此23和5交换位置。

Python入门到精通(1):程序与算法
Python入门到精通(1):程序与算法

第二轮比较:比较23和7,因为23大于7,因此23和7交换位置。

Python入门到精通(1):程序与算法
Python入门到精通(1):程序与算法

第三轮比较:比较23和24,因为23小于24,两个数不用交换位置。

Python入门到精通(1):程序与算法

至此,第二趟比较完成。最后的一个数56就不用比较了,因为56在第一趟比较中就已经为自己找到了正确的位置。

从第三轮的比较结果来看,排序已经完成,每个数都自己找到了正确的位置。已经不需要再进行第三趟比较了。

4、 算法和程序的关系

算法是解决问题的步骤,在前面也谈到了程序是执行过程的描述,那么,算法和程序是什么关系呢?

先请同学们思考一个计算长方形面积的问题,并给出算法。

第一步,设置num1和num2两个变量,接收用户输入的长度和宽度,并存储到num1和num2两个变量;

第二步,判断num1和num2是否大于0,如果大于0,继续下一个步骤,否则提示用户长度和宽度输入错误,算法结束;

第三步,计算num1和num2的乘积,并将乘积结果存储到result变量;

第四步,显示result变量的值到屏幕。

算法非常简单,四个步骤,如何让计算机执行这个算法呢?

实现算法的伪代码:

Begin(算法开始)
     声明  num1、num2;
     输入  num1、num2;
     IF num1 <=0 || num2 <=0
     {
        Print(“输入的长度和宽度不能小于0”);
       退出程序
     }
     result = num1 * num2;
     Print  result;
End (算法结束)

要让计算机执行算法,就必须要把算法用编程语言编写出来,如Java语言,如实现计算长方形面积算法的伪代码,伪代码是一种算法描述语言,可以很容易地转换为编程语言,如Java、C语言等。可见,程序是算法的实现,算法通过某一种编程语言实现后,就是程序。

5、练习题

1、请列举一些你在生活中经常使用的计算机程序。

2、计算机程序和算法有什么区别?

3、对下面的一组数字用冒泡排序算法进行排序,请用文字详细描述排序过程。

36,29,101,12,33

4、现实问题模拟:《停车场的看门人》

某大型停车场对于进入该场地的车辆有如下的规定:

(1)进入该停车场的车辆必须为客运车辆,货运车辆谢绝入内。

(2)如果该车的乘员数量小于等于4人,则收费五元。

(3)如果该车的乘员数量大于4人,则收费八元。

作业要求:请根据该停车场的规定,用文字给出判断进入该场的车辆是否符合规定,应该收费多少的算法。

5、请用文字给出一个计算长方形面积问题的算法。

要求:接受用户输入的长度和宽度,输入的长度和宽度不能为零,如果为零,提示用户重新输入,最后将计算结果显示到显示器上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月13日 下午3:46
下一篇 2022年5月13日 下午3:47

相关推荐

  • 如何修改pdf文件,免费修改pdf文件的软件分享

    今天,老板扔给我一份资料,让我修改一下。本以为这是一个非常简单的工作,可是,在打开文件之后,发现怎么都修改不了。不仅是图片文字不能修改,连一个标点符号我都动不了。然后,我仔细查看一番,才发现,原来这是PDF格式的文件,怪不得不能修改,这不是为难我这个实习生吗! 于是,我就开始了搜索“PDF文件怎么编辑”的道路上。呕心沥血一个小时,对比了多个工具跟操作方法,才找到这个最好办法。下面,就来教大家如何编…

    2022年7月3日
    480
  • 水表怎么看用了多少水,图解水表的正确读法

    水乃生命之源,居家生活可以断电、断气、断wifi,但唯独不能断水哦,小伙伴们对不对?继昨日发布的燃气表认知操作后,反应不错,那么今天我来给大家聊一聊家用自来水表,怎么读数,水费是如何计量计算的,希望通过我的讲解大家能知道我们一个月的用水量和应该交多少水费。做到心中有数,生活才更加精彩。 家用自来水表 水表,是测量水流量的仪表,大多是水的累计流量计量,一般分为容积式水表和速度式水表两类,起源于英国,…

    2022年9月6日
    1.5K0
  • 什么牌子蓝牙耳机好,2019蓝牙耳机音质排行榜

    音乐和耳机是一个相当完美的搭档,发展至今耳机的种类也越来越丰富,不过现在市面上耳机品牌有很多,就是不知道什么牌子的耳机好?索尼、森海塞尔、1MORE万魔、铁三角、漫步者、酷狗等品牌从颜值、音质、性价比等方面来看,还是不错的!今天小编就来为你们推荐最值得入手的蓝牙耳机! 10、酷狗M1蓝牙耳机 不知道耳机什么牌子好,酷狗M1蓝牙耳机值得推荐,它做工精致细腻,属于一款专门为运动打造的蓝牙耳机。仅从外观…

    2022年6月27日
    960
  • 生牛肉怎么煮容易烂又好吃(常家成熟牛肉的做法)

    现代人越来越喜欢吃牛肉了,虽然用牛肉做菜好吃又营养,但是很多人自己在家里做牛肉的时候都会觉得它没有外面吃的那样软嫩可口,这究竟是怎么回事呢? 我们平时在炖牛肉的时候都要将牛肉焯一下水,这样可以将牛肉当中的血水去掉,还可以去掉一部分牛肉的腥味,其实炖牛肉嫩不嫩在这一步就已经决定了,今天就在这里教大家煮牛肉的正确方法,这样煮的牛肉更容易熟、容易烂,让你吃一次忘不掉。 第一步:将牛肉切成大一点的块状,用…

    2022年9月2日
    650
  • 如何进行品牌推广,品牌塑造的八个步骤

    所谓品牌推广,其实就是指企业塑造自身、产品及服务的形象,使广大消费者广泛认同的系列活动过程,主要目的是提升品牌知名度。 品牌作为企业无形的资产,对于企业日后的发展起到关键性的影响作用。但由于很多企业对于产品推广与品牌推广之间存在的误差,让很多企业都错失了最佳的品牌推广时间段。怎么做品牌推广?网络品牌推广究竟要考虑哪些因素? 一、选择正确的路进入市场 1.一点集中进入 这是集中自己所有的力量,从市场…

    2022年5月22日
    770
  • seo网站运营的工作要求是什么,盘点网站运营的发展趋势

    企业网站上线了,需要运营推广了,怎样做才有效果呢?当然选择有很多,找SEO优化专员,找网络公司,找关于如何优化的经验……一个网站,如同一张白纸,开始用什么方式优化,以后就很难改变,这就意味着,路走对了,距离成功越近,相反,则让人堪忧。   一个网站,一堆SEO优化策略,好像都不错,怎么取舍 对于一个新上线的网站,面对诸多的SEO优化策略,任何一个方式似乎都好像有那么一点道理,很多网站运营者都明白:…

    2022年6月12日
    700
  • 时事点评怎么写,其书写范例及评论特点

    时事评论是针对现实生活中的重要问题直接发表意见、阐述观点、表明态度的一种体裁。与其他言论一样,由论点、论据、论证三个要素组成,具有政策性、针对性、准确性。立意新颖,论述精当,文采斐然。 一、观点是评论的灵魂 时事评论就社会时事、社会现象展开评论,因此,观点是十分重要的。在行文时注意以下几点很必要。 1、由某种现象展开话题,阐述你对这件事的观点。2、分析这件事对社会、对人们、对自然等的影响。3、提出…

    2022年9月4日
    5010
  • C语言日历代码(日历代码实现)

    前天我们通过一段代码展示了如何通过Python的Pandas包生成一个日历表,如果各位感兴趣可以参考:通过Pandas生成日历表; 不得不说在DBEngine(https://db-engines.com/en/ranking)排行榜中,PostgreSQL最近几年一直都很稳定,并且在各个云平台中都有非常成熟的PaaS产品供各个企业应用,那么我们今天的目标就是演示一下如何通过#postgresql…

    2022年5月8日
    790
  • 消费笔记本电脑品牌(便携笔记本价格)

    今天是国庆小长假的第五天了,一些笔记本也正在降价促销中,相对于售价动辄过万的游戏本,主流超值的机型更加适合消费者,同样能够满足日常的主流游戏和影音需求。下面就给大家推荐几款价格不贵,表现全能的超值笔记本。 01联想小新Air14 参考价格:4999元 机型配置:全新11代i5-1155G716G512G高色域)银 近年来,在功耗、散热和性能方面相对做的更好的品牌,无疑是联想。通过Fn+Q野兽模式,…

    2022年5月12日
    830
  • app营销策略都有哪些,app营销的模式和技巧

    现如今各种圈都找朝着娱乐化努力,娱乐化行业仍然是移动应用的重要构成,不管是购物服务类还是其他,都会试图添加一些游戏元素,从而吸引受众的目光。那么,真正的APP营销应该怎么做呢? 在智能手机普及的今天,手机上的APP已经成为了人们了解实时资讯的应用程序,可见第三屏幕的重要性,做营销自然会从这“小屏幕”开始。 手机端APP所承载的用户流量一定是远超传统互联网(PC端)的,所以也是各家电商平台竞争之地。…

    2022年7月21日
    680

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信