Logo

郎哥编程

用编程语言实现算法

2018-06-22 4718

课程导言

【用流程图描述算法,可以与用户更好地交流。如果需要算法在计算上运行,就需要把算法用编程语言编写为程序。本篇和同学们探讨如何将算法编写为程序。在内容安排上,先和同学们先写出计算长方形面积的算法,然后用伪代码来实现算法。】

如何求长方形的面积,同学们应该都了解了。

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

01.png

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

02.png

同学们很容易算出来长方形广告牌的面积是长乘以宽,列出算式就是:

12 * 5 = 60(平方分米)

现在我们希望编写程序让计算机来计算厂方形的面积,编写程序之前,需要先写出求长方形面积的算法。前面我们已经了解到算法有三个要素,分别是输入、计算过程和输出结果。

03.png

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

我们还是以计算长方形广告牌的面积为例,来看计算长方形面积算法的输入。长方形面积的计算公式为长乘以宽,因此我们需要知道长方形的长和宽,才能求出长方形的面积。

广告牌的长是12分米,广告牌的宽是5分米,因此广告牌的面积是12乘以5,结果是60平方分米。

由此可以得出,计算长方形面积算法的输入是长方形的长和宽。

04.png

关于算法的输入,同学们可能会有一个疑问?

05.png

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

06.png

计算长方形面积算法的计算过程

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

计算长方形面积算法的计算过程主要有三个步骤:

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

07.png

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

08.png

(3)计算过程的第三步:计算长度和宽度的乘积。

09.png

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

算法的输出就是输出算法执行完成后的结果。

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

10.png

计算长方形面积算法的计算结果可以输出到电脑屏幕,也可以输出到打印机,通过打印机打印出计算结果。当然还有其它输出设备。

计算长方形面积算法的完整步骤包括算法的输入、计算过程和输出,共需要五个步骤:

第一步:输入长方形的长度和宽度;

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

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

第四步:计算长度和宽度的乘积;

第五步:输出长方形的面积。

11.png

长方形面积算法的伪代码实现

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

Begin(算法开始)
     声明  width、height;
     输入  width、height;
     IF (width <=0 ||  height <=0)
     {
        Print(“长度和宽度输入错误”);
       退出程序
     }
     result = width * height ;
     Print(result);
End (算法结束)

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

12.png

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

13.png

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

14.png

代码的第2和第3条语句是算法的输入,是算法步骤的第一步。

代码的第4、5、6、7条语句是算法的计算过程,是算法步骤的第2、3、4步。

代码的第8条语句是算法的输出,是算法步骤的第5步。

 我们先看算法的输入部分代码。

15.png

第2条语句中的width和height是英文单词,中文意思是宽度和高度。在编程语言中,类似于width和height这样的英文单词,称为标识符。

标识符是程序员在编程时使用的名称,每个名称在程序一般都是唯一的,不允许重复。

用于存储数据的标识符又称为变量,变量用于存储用户输入或程序内部产生的数据。如上面代码中的width变量,存储用户输入的长方形的宽度,代码中的height变量,存储用户输入的长方形的长度。关于变量在后面的课程会详细介绍。

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

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

16.png

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

17.png

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

18.png

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

19.png

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

20.png

21.png

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

22.png


课程小结

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


思考与练习

如果要编写一个求两数和的算法,需要用到几个变量?算法步骤你该如何写呢?并绘制流程图。

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

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

评论区

登录 后发表评论
汤正家长 2020-07-11 11:52

为什么找不到python的翻译软件。

郎宏林 2020-07-11 12:37

<p>你好,翻译软件是第三方工具。可以使用百度翻译或者在电脑上安装有道词典(免费的软件)。</p>

天启75X 2020-06-27 13:37

?有点乱,。不大看得懂。

郎宏林 2020-06-27 17:00

<p>哦,前面的两课主要是介绍Python与数学的关系,内容可能有点多。</p>

2019-10-22 13:34

居然都看懂了,通俗易懂

っ薄荷微凉ヾ 2019-08-23 12:55

梦想是成为程序员

郎宏林 2019-08-23 13:52

<p>好好努力,梦想就会实现!!!</p>

Y. 2019-08-10 23:29

老师,第一题不会

郎宏林 2019-08-11 09:25

<p>如果仔细阅读课程内容,应该能找到答案。</p><p>机器语言是二进制语言,语言的文字只有0和1,用它可以直接编写计算机指令,用机器语言编写的程序可以直接在计算机上执行。<br/></p><p>汇编程语言是在二进制语言的基础上使用助记符来表示用二进制语言编写的计算机指令。例如,用add表示两数相加指令。使用加法指令时,就可以直接使用add,而不必写一长串0和1的数字了。</p><p>高级语言又在汇编语言的基础上,使用与人类接近的语言来描述汇编语言,高级语言的优点是其语法和结构更类似汉字或者普通英文,并且由于远离对硬件的直接操作,使得一般人经过学习之后都可以掌握编程技术。</p>

Peter 2019-07-28 20:01

老师,第一次接触,对比JAVA和C,我更想学python,但我都没学过,只初步看了简介,你能不能推荐一个适合初学者的。

郎宏林 2019-07-28 20:39

<p>Python基础就是针对初学者,不过也兼顾已经学过Java想学Python语言的开发者,因此课程里会有和Java语言的对比。</p><p>Python相对Java语言来说要容易一些,也容易入门。你可以先看看课程,有什么不懂的问题可以随时在APP上沟通,也可以微信沟通。</p><p>我们也正在准备适合少年学习Python的课程,不过还得需要一段时间才能推出来。</p><p><br/></p>

青青子衿 2019-07-25 21:53

第一次接触,感觉就是看天书,啥都不懂,还要认真看,感觉有点头晕

郎宏林 2019-07-25 22:23

<p>这节课的知识点比较广泛,涉及到了单片机、汇编语言、C语言和java语言,对刚接触编程的初学者阅读确实有难度。</p><p>这节课的目的主要是让大家对编程语言的发展及如何用编程语言实现算法有个感性认识,不一定对里面的内容进行深入了解。</p><p>课程涉及的单片机、汇编语言在Java编程中一般涉及不到。</p>

馒头 2019-07-24 10:28

第三题不会,老师,

郎宏林 2019-07-24 10:47

<p>java编译器是将编写的Java源代码编译为class文件(也称为字节码文件)。</p><p>当使用java程序执行calss文件时,java虚拟机会加载该class文件,然后解释执行。</p>