用编程语言实现算法
课程    Java编程基础

课程导言

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

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

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

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语言等。可见,程序是算法的实现,算法通过某一种编程语言实现后,就是程序。


思考与练习

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

读者留言
最新
推荐
汤正家长
2020/7/11
为什么找不到python的翻译软件。
郎宏林回复:
回复日期:2020/7/11
  • 推荐[0]
  • |
  • 回复
回复评论
天启75X
2020/6/27
?有点乱,。不大看得懂。
郎宏林回复:
回复日期:2020/6/27
  • 推荐[0]
  • |
  • 回复
回复评论
2019/10/22
居然都看懂了,通俗易懂
  • 推荐[0]
  • |
  • 回复
回复评论
っ薄荷微凉ヾ
2019/8/23
梦想是成为程序员
郎宏林回复:
回复日期:2019/8/23
  • 推荐[0]
  • |
  • 回复
回复评论
Y.
2019/8/10
老师,第一题不会
郎宏林回复:
回复日期:2019/8/11
  • 推荐[0]
  • |
  • 回复
回复评论
Peter
2019/7/28
老师,第一次接触,对比JAVA和C,我更想学python,但我都没学过,只初步看了简介,你能不能推荐一个适合初学者的。
郎宏林回复:
回复日期:2019/7/28
  • 推荐[0]
  • |
  • 回复
回复评论
青青子衿
2019/7/25
第一次接触,感觉就是看天书,啥都不懂,还要认真看,感觉有点头晕
郎宏林回复:
回复日期:2019/7/25
  • 推荐[1]
  • |
  • 回复
回复评论
馒头
2019/7/24
第三题不会,老师,
郎宏林回复:
回复日期:2019/7/24
  • 推荐[0]
  • |
  • 回复
回复评论
用手机学习课程

手机、电脑同步学

用浏览器扫描二维码,即可下载APP。

郎宏林
授课老师
授课老师简介
项目经理,系统分析和架构师,从事多年中文信息处理技术。熟悉项目管理、擅长项目需求分析和设计、精通Java、C#、Python等编程语言。
  • 备案号:鲁ICP备15001146号
  • @1997-2018 潍坊米粒花网络技术有限公司版权所有