Logo

郎哥编程

算法与程序

2019-08-18 284

本课主要介绍如何将算法编写为程序,不过介绍的内容不是自动售票机的找零算法,这个太复杂了,也不容易理解。我们选择一个比较简单的算法案例,来介绍如何将算法编写为程序。在内容安排上,我们先写出计算长方形面积的算法,然后用伪代码来实现算法。

1、计算长方形面积的算法

如何求长方形的面积,同学们应该都了解了。如果让计算机来计算长方形的面积,同学们就需要编写程序来实现。在编写程序之前,需要先写出计算长方形面积的算法,弄清楚算法的输入、计算过程和输出结果,然后才能编写程序。

01.png

下面我们就来讨论计算长方形面积算法的输入、计算过程和输出结果。现在有一块长方形广告牌(如下图所示),同学们计算一下这个广告牌的面积是多少?

02.png

同学们很容易算出来,长方形广告牌的面积是长乘以宽,列出算式就是:12 * 5 = 60(平方分米)
现在我们希望编写程序让计算机来计算长方形的面积,在编写程序之前,需要先写出求长方形面积的算法。前面我们已经了解到算法有三个要素,分别是输入、计算过程和输出结果。下面结合求长方形面积的算法,来讨论算法的三个要素。

03.png

计算长方形面积算法的输入

长方形面积的计算公式为长乘以宽,因此我们需要知道长方形的长和宽,才能求出长方形的面积。
广告牌的长是12分米,广告牌的宽是5分米,因此广告牌的面积是12乘以5,结果是60平方分米。由此可以得出,计算长方形面积算法的输入是长方形的长和宽。

04.png

关于算法的输入,同学们可能会有一个疑问?长方形的长和宽,怎么输入到程序中呢?

05.png

其实,在程序运行的过程中,程序会提示让用户输入算法需要的数据。如在计算长方形面积的算法中,会提示让用户分别输入长方形的长和宽,用户可以通过键盘将长方形的长和宽输入到程序中,程序根据用户的输入来计算长方形的面积。

06.png

计算长方形面积算法的计算过程
算法的计算过程就是算法解决问题的执行步骤,算法在执行计算过程之前,需要确定已经输入了长方形的长度和宽度。计算长方形面积算法的计算过程主要有三个步骤:

07.png

计算过程的第一步:判断输入的长方形的长度和宽度是否小于等于0,如果长度或宽度小于等于0,执行第二个步骤,否则执行第三个步骤;

08.png

计算过程的第二步:提示用户输入的长度和宽度有错误,算法结束;

09.png

计算过程的第三步:计算长方形长度和宽度的乘积。

计算长方形面积算法的输出

算法的输出就是输出算法执行完成后的结果。对计算长方形面积的算法来说,就是输出所求长方形的面积,长方形的长度和宽度在算法的输入中已经得到。

10.png

计算长方形面积算法的计算结果可以输出到电脑屏幕,也可以输出到打印机,通过打印机打印出计算结果。当然还有其它输出设备。例如,前面课程我们讲到的自动售票机,它的找零算法的输出就是出币口,把要找的零钱输出到出币口。

计算长方形面积算法的完整步骤包括算法的输入、计算过程和输出,共需要五个步骤:第一步:输入长方形的长度和宽度;第二步:判断输入的长方形的长度和宽度是否小于等于0,如果长度或宽度小于等于0,执行第三个步骤,否则执行第四个步骤;第三步:提示用户输入的长度和宽度有错误,算法结束;第四步:计算长度和宽度的乘积;第五步:输出长方形的面积。其中,第一步是算法的输入,第二步、第三步和第四步是算法的计算过程,第五步是算法的输出。


2、用程序实现算法
算法非常简单,五个步骤,如何让计算机执行这个算法呢?我们用伪代码来实现算法。伪代码不是真正的程序代码,但它已经接近程序代码,它是用人类能理解的语言来实现算法的一种语言。
求长方形面积算法的伪代码实现:

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

伪代码估计同学们都看不懂,我来解释一下。

11.png


每段伪代码都是从BEGIN开始,END结束。BEGIN开和END都是英文单词,BEGIN在伪代码中表示算法开始的意思,END在伪代码中表示算法结束的意思。

12.png

在伪代码中,我们可以把每行的句子称为一条语句,这样算来,这段伪代码共有7条语句,大括号占一行的不算。

13.png

代码的第1和第2条语句是算法的输入,也是算法步骤的第一步;代码的第3、4、5、6条语句是算法的计算过程,是算法步骤的第2、3、4步;代码的第7条语句是算法的输出,是算法步骤的第5步。
算法输入部分的代码

14.png

第1条语句中的width和height是英文单词,中文意思是宽度和高度。在编程语言中,类似于width和height这样的英文单词,称为标识符。标识符是程序员在编程时使用的名称,每个名称在程序都是唯一的,不允许重复。
用于存储数据的标识符又称为变量,变量用于存储用户输入或程序内部产生的数据。如上面代码中的width变量(也称为标识符),存储用户输入的长方形的长度,代码中的height变量,存储用户输入的长方形的宽度。
同学们对变量可能不太理解,下面举个生活中的例子来帮助同学们理解变量。同学们都去过超市,超市一般都有存储柜,存储柜由一个一个的小存储盒组成,可以存储物品,每一个存储盒都会有一个序号,每个序号在这个存储柜中都是唯一的,并且每个序号都关联着一个存储盒。例如,某同学把手机存储到序号为71号的存储盒中,在购物完成后,他可以从序号为71号的存储盒中取出手机。

15.png

变量就是一个个存储盒,每个变量都有一个名称,程序根据名称把数据存储到变量中,也可以把数据从变量中取出。

代码中的第1条语句声明了两个变量width和height,用于存储长方形的长度和宽度,但此时变量还是空的,不过已经声明要用这两个变量了。

代码中的第2条语句将用户输入的长方形的长度和宽度分别存储到width变量和height变量中。

算法计算过程的代码

16.png

第3条语句用到英文单词IF,IF在英文单词中是如果的意思。如果是假设的意思,既然是假设就要分两种情况了:
第一种情况是满足假设的条件,在上面的伪代码中就是height小于0,或者width小于0,这里的符号"||"是或者的意思。因此只要有一个条件满足,或者height小于0,或者width小于0、或者height和width都小于0,就会执行IF后面大括号内的语句。
第二种情况是不满足假设,也就是在height和width都大于0的情况下,就不执行IF后面大括号内的语句。

17.png

代码的第4条语句是在Print单词后面跟着一对小括号,小括号里面的内容是用双引号括起来的字符串。字符串就是是由多个字符组成的词或句子。如果同学们不了解Print单词的意思,可以百度一下,Print最直接的意思就是打印的意思。那么我们就明白这条语句的意思了,Print就是把小括号内的字符串输出到计算机屏幕上,也可以打印到打印机上,在编程语言中,Print也表示输出的意思。

18.png

代码的第5条语句是退出程序,我们知道程序既然是算法的实现,算法结束后,程序自然就结束了。但是我们要注意,这个退出程序是不正常的退出,因为算法过程没有结束,只是出了问题,算法没法往下执行了,所以要退出。

19.png

代码的第6条语句是一个算式,同学们一定会说这是一个乘法算式。对,它确实是乘法算式,只是这个乘法算式中的乘数和被乘数不是数而是变量名称。
前面我们已经说过了,可以把变量看成是可以表示数字的字母或字符串,这个字母或字符串就是变量的名称,每个变量都表示一个数。
例如height表示数5,width表示数6,那么height*width的结果是30,30再赋值给result变量,这里的=就是赋值的意思,就是把数30和result变量关联起来,在这里result就是30,当然如果我们把50赋值给result,result表示的数就是50。

20.png

算法输出部分的代码

21.png

代码的第7条语句也是Print语句,这个Print语句是打印result表示的数到计算机屏幕,不是打印result这个字符串到计算机屏幕。

22.png

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


小结

这节课我们主要讨论和学习了下面这些内容:

(1)在描述算法的过程中,要用到变量来说明需要输入的数据,数据可能是一些数、也可能是一些单词或句子。变量就是用来描述这些数据的,每个变量都有一个名称,我们通过这个名称就能确定这个变量对应的是什么数据。
(2)在描述算法的过程中,我们还用到了赋值这个词语。赋值就是将一个数或者一个单词或句子与变量关联起来。在编程语言中赋值与“=”等价。编程语言里的“=”号不是相等的意思,而是赋值的意思。
(3)我们还学习了用伪代码来实现算法,用伪代码实现的算法虽然不能在计算机上运行,但它已经非常接近于编程语言了。我们只要能看懂伪代码,就能看懂实际的程序代码。

思考与练习
如果要编写一个求两数和的算法,需要用到几个变量?算法步骤你该如何写呢?

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论