第二章:计算思维——知识点整理

第二章:计算思维

知识梳理

在这里插入图片描述

高频考点

高频考点 重要程度
计算思维 ⭐️⭐️
算法的特性 ⭐️⭐️⭐️
程序的基本结构 ⭐️⭐️⭐️⭐️
程序设计方法 ⭐️⭐️
时间复杂度空间、空间复杂度 ⭐️⭐️⭐️
机器语言、汇编语言、高级语言 ⭐️⭐️⭐️⭐️
面向对象程序设计语言 ⭐️⭐️

2.1 计算思维的概念与应用

2.1.1 计算思维的概念

1、 科学研究的三大方法是理论、实验和计算。 对应的三大科学思维分别是理论思维、实验思维和计算思维。

2、 理论思维又称推理思维,以数学学科为代表。 实验思维以物理学科为代表。 计算思维以计算机学科为代表。

2.1.2 计算思维的特征

①: 计算思维是人类求解问题的一条途径,是属于人的思维方式,不是计算机的思维方式。
②: 计算思维的过程可以由人执行,也可以由计算机执行。
③: 计算思维是思想,不是人造物。
④: 计算思维是概念化,不是程序化。

2.1.3 计算思维的内涵

1、 计算思维的基本问题:

①:计算思维的基本问题包括可计算性和计算复杂性

②:“一个问题是可以计算的” 是指可以使用计算机在有限步骤内解决。 可计算性的另一个定义就是丘奇——图灵论题:一切直觉上可计算的函数都可用图灵机计算,反之亦然。也就是说图灵机可计算的就是可计算的。

③: 不是所有的问题都是可以计算的,比如图灵机的停机问题、哥德巴赫猜想、“为我烹饪一个汉堡”等,都是不可计算的。

④: 图灵机是一种抽象计算模型,并没有真正的生产出来。

⑤: 计算复杂性就是用计算机求解问题的难易程度,其度量标准有两个:时间复杂性和空间复杂性。

2、 计算思维的基本方法:

①: 计算思维方法是计算思维的核心。

2.1.4 计算思维的应用

1、计算思维主要用在的学科是:计算物理学、计算化学、计算生物学、计算经济学。

2.2 问题求解

2.2.1 计算机求解问题的基本方法

①:分析问题
②:确定数学模型
③:算法设计
④:程序编写、编辑、编译和连接
⑤:运行和测试

确定数学模型就是把实际问题直接或间接转化为数学问题。建模是计算机解题中的难点,也是计算机解题成败的关键。

算法是求解问题的方法和步骤,学习程序设计最重要的是学习算法思想。

计算机是不能直接执行源程序的,在编译方式下必须通过编译程序将源程序翻译成目标程序。生成的目标程序还不能被执行,需要生成可执行文件才能被执行。

测试的目的是找出程序中的错误。 测试是以程序通过编译,没有语法和连接上的错误为前提的。

2.2.2 计算思维解决计算问题的方法

1、计算思维的本质抽象和自动化(编写程序)

2、 自动化就是机械的一步一步自动执行,其基础和前提是抽象。

3、 在计算机科学中,抽象是简化复杂的现实问题的最佳途径,抽象的具体形式是多种多样的,但是离不开两个要素即:形式化和数学建模。

4、 数学建模有龙卷风模型、潮汐模型等。

5、 抽象以后就是自动化,抽象是自动化的前提和基础。 计算机通过程序实现自动化,而程序的核心是算法。 因此,自动化分为两步:设计算法和编写程序。 设计算法又包括自然语言描述算法和伪代码描述算法等。

6、 计算思维的标志是有限性、确定性和机械性。

7、 当面对复杂的问题时,求解的形式极其复杂,但是抽象和自动化是不会变的。

2.3 算法

2.3.1 算法基础知识 ⭐️⭐️

1、 算法就是解决问题的方法和步骤。

2、算法的特性:
①:输入: 算法中可以有0个或多个输入。
②:输出: 在算法中至少有一个或多个输出。
③:有穷性: 任意一个算法在执行有穷个计算步骤后必须终止。
④:确定性: 算法的每一个步骤都具有确定的含义不会出现二义性。
⑤:可行性: 算法的每一步都必须是可行的也就是说每一步都能够通过执行有限的次数完成。

3、 根据处理的数据是数值数据还是非数值数据,可以分为数值计算算法和非数值计算算法。 数值计算算法特点是少量的输入、输出,复杂的运算。非数值计算算法特点是大量的输入、输出,简单的算术运算和大量的逻辑运算。

2.3.2 算法的表示方法 ⭐️⭐️

1、 常用的算法的表示方法有自然语言、传统的流程图、N-S图、伪代码和计算机语言等。

2、 一般不用自然语言来描述算法,除非是很简单的问题。

3、 美国国家标准化协会(ANSI)规定了一些常用的流程图符号:

例:用流程图表示计算 5 !的算法

4、 N-S图是一种简化的流程图,去掉了流程图中的流程线,全部算法写在一个矩形框中,N-S图三种基本结构——顺序结构、选择结构、循环结构。


5、 所谓“伪代码”就是用介于自然语言和计算机语言之间的文字和符号的描述算法。伪代码写的算法是一种假代码——不能被计算机所理解,但便于转换成某种语言编写的计算机程序。

例如一种伪代码有如下简单约定:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6、 只有用计算机语言编写的程序才能被计算机执行(当然还要被编译成目标程序),因此,最终还是要将它转换成计算机语言程序。

2.3.3 典型问题求解策略

1、递归法、穷举法、回溯法、贪婪法、分治法。

2、 穷举法也称为“枚举法”,即将可能出现的每一种情况一一测试,判断是否满足条件,一般采用循环来实现。

3、 回溯法是系统地搜索问题的所有解的算法。

4、 贪婪法是一种不追求最优解,只希望得到较为满意解的方法。

5、 分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

2.3.4 算法的复杂度分析

1、算法的时间复杂度:

①:时间频度
一个算法中的语句执行次数称为语句频度或时间频度。

②:时间复杂度
若算法中语句执行次数为一个常数则时间复杂度为O(1)。 另外,在时间频度不相同时,时间复杂度有可能相同。随着问题规模n的不断增大,时间复杂度不断增大,算法的执行效率越低。

2、算法的空间复杂度:
空间复杂度是指算法在计算机内执行时所需存储空间的度量。

2.4 程序设计基础

著名计算机科学家沃思提出一个经典公式:程序 = 算法 + 数据结构。

2.4.1 程序设计语言 ⭐️⭐️

1、计算机语言已经发展到了第三代,第一代是机器语言,第二代是汇编语言,第三代是高级语言。

2、第一代计算机语言是机器语言,它是由0、1二进制代码组成的,是机器唯一能够直接执行的语言。

3、 第二代计算机语言是汇编语言,它采用一定的助记符来代替机器语言中的指令和数据,又称为符号语言。

4、 汇编语言也依赖于机器,不同的计算机一般有着不同的汇编语言。

5、 汇编语言编制的程序(称为源程序)必须经过汇编程序(一种语言处理程序)翻译成计算机所能识别的机器语言程序(也称为目标程序)后,才能被计算机执行。将汇编语言源程序转换为等价的目标程序的过程称为汇编。

6、 我们把机器语言和汇编语言统称为低级语言

7、 第三代计算机语言是高级语言(C、Java、C++等),用高级语言编写的高级语言源程序也不能直接执行,需要通过高级语言翻译程序将源程序翻译成目标程序,翻译程序有两种工作方式:解释方式和编译方式,相应的翻译工具分别称为解释程序和编译程序。

解释: 解释程序对源程序是一边翻译一边执行不产生目标程序。
编译: 将高级语言所编写的源程序翻译成等价的用机器语言表示的目标程序。 大多数高级语言都采用编译方式。
在这里插入图片描述

8、三种计算机语言的特点对比:

语言种类 可读性 可移植性 执行速度 能否被计算机直接执行
机器语言
汇编语言 较好 较快 不能
高级语言 不能

9、常见的程序设计语言:FORTRAN语言(公式翻译机)、COBOL(通用事务处理语言)、BASIC语言(初学者的通用符号指令代码)、PASCAL语言、C语言与C++语言、Java语言、C#语言、Python语言。

2.4.2 结构化程序设计方法

1、 任何程序都基于顺序、选择、循环3种基本的控制结构。

2、 结构化编程主要包括以下两个方面:
①:在软件设计和实现过程中,提倡采用自顶向下,逐步细化的模块化程序设计原则。
②:在代码编写时,强调采用单入口、单出口的三种基本控制结构(顺序、选择、循环)。

3、 结构化程序设计方法的基本结构包括:顺序结构、分支结构和循环结构。循环结构又称重复结构,循环结构又分为:当(while)型循环结构和直到(util)型循环结构。

4、 顺序结构是算法的基本结构,任何一个算法都包含顺序结构。

5、 结构化程序的结构简单清晰,可读性好,模块化强。

6、 结构化程序设计方法虽已得到广泛使用,但仍难以适应大型软件的设计,而且程序可从重用性差。

2.4.3 面向对象程序设计方法 ⭐️⭐️⭐️

1、面向对象程序设计可以看做一种在程序中包含各种独立而又相互协调的对象的思想。

2、面向对象程序设计中的每一个对象都应该能够接收数据、处理数据并将数据传达给其它对象。

3、面向对象程序设计中的概念主要包括:对象、类、数据抽象、封装、继承、多态性、信息、事件等。

4、对象是构成系统的基本单位,可以用对象名、属性和方法来描述。

5、是对象的抽象,而对象是该类的一个实例。

6、抽象能表示同一类事物的抽象。

7、封装

8、继承出来的派生类可以对基类的行为进行扩展、覆盖、重定义。

9、多态性是指基类中定义的属性或方法被派生类继承后,可具有不同的数据类型或表现出不同的行为,其对象对同一信息会做出不同的响应。

10、消息对象之间的联系是通过消息来传递的。

11、事件,不同的事件往往引发对象不同的动作。用户按键、单击鼠标、打开文件、关闭文件都是计算机中的事件。

12、事件驱动,用户单击一个按钮时,可能引发一段程序的执行。当用户关闭文件时,又可能引发另外一段处理程序执行。

同步特训知识点

1、计算机算法必须具备输入、输出、可行性、确定性、有穷性等5个特征。

2、理论上说,任何程序逻辑都可以使用顺序、分支、循环三种结构表示出来。

3、在面向对象程序设计方法中,抽象是处理事物复杂性的方法,能表示同一类事物的本质。

猜你喜欢

转载自blog.csdn.net/qq_45696288/article/details/122393689