世界上的一切都可以数字化并用二进制数表示,大多数问题都可以计算。
1 计算机科学计算机科学(CS)是一门研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的本质和问题的学科。计算机科学是一门系统学科,涵盖与计算和信息处理相关的各种主题,从抽象的算法分析、形式语法等,到更具体的主题,如编程语言、编程、软件和硬件。包括4个主要领域:计算理论、算法和数据结构、编程方法和编程语言、以及计算机元件和体系结构。以及软件工程、人工智能、计算机网络与通信、数据库系统、并行计算、分布式计算、人机交互、机器翻译、计算机图形学、操作系统以及数值和符号计算等一些重要领域。
计算机是执行算术和逻辑运算的机器。大多数现代计算机都基于冯·诺依曼架构。其核心思想是“存储程序、程序控制”。只要指令清晰,输入数据准确,程序启动后就会自动运行,结果也是预期的。现代计算机的一大特点是速度快,每秒可达到10亿条机器指令(Intel Core i9主频为5GHz,中国超级计算机系统天河二号峰值计算速度为每秒5.491016次)每秒3.391016次双精度浮点运算的连续计算速度),使一切成为可能。
2 计算思维计算思维(CT)是运用计算机逻辑和计算机科学的基本概念来解决问题和设计系统的思维。它是一种将计算抽象然后具体化的思维。
2.1 分解复杂的问题也可以通过将其分解为我们知道如何处理的更小的部分来解决。然后通过解决子问题,逐步解决整个问题。 2.2 抽象思维和模式识别抽象思维是指对问题或数据的共同属性或特征进行识别和分类,并总结或提取特定模式的能力。例如,将实际的领域问题抽象概括为某种已知的模型或建模(以便使用模型来解决)。框架是一种准程序,它抽象了应用程序的共同结构特征,并基于某种通用的基本(程序)结构形式来实现。它结合了应用程序中“不可变”的事物(尤其是基本组件之间)。交互)是固定的并自动提供。数据类型是相似数据共同特征的抽象。通过数据类型的概念,可以对杂乱的数据进行分类组织和逻辑化,进行数据处理。模式识别需要我们观察数据并找到相同的模式、趋势和模式。 2.3 算法思想算法是解决问题或执行任务所需的一系列步骤。开发算法时,首先使用分解方法将问题分解为小部分,然后找到相同的信息或模式,过滤掉不重要的细节,捕获主要信息,最后使用有序的步骤局部地解决问题。算法中的每一步都必须精确、明确且无错误。尽管领域问题是多种多样且不断变化的,但问题的解决方案(或获得解决方案的思维)是有规律的,特别是在特定计算机环境的附加约束下。这些解决问题的固定套路可以称为算法思想。 2.3.1分而治之的思想面对现实世界和问题的复杂性,我们需要有把大事分成小事、分而治之的思想。例如,算法分治法、贪心法、动态规划法、递归等都是分治思想的全部或全部体现。计算机科学最重要的表现是计算机系统的层次抽象和模块化分解。
分而治之的思想在各种算法中无处不在,比如归并排序。当一组数据分解为只有一个数据时,必须是有序的,然后两两合并,形成整体有序(递归分解、递归合并)。例如,快速排序还递归地保持数据的前一段和下一段相对有序。二分查找也是分治法的一种应用。将线性数组组织成左右有序的二叉查找树或者自上而下的有序堆来实现二分查找,也是分而治之思想的一种应用。递归思维通常涉及将问题分解为可以直接解决的规模,然后逐步回归以解决最终或整体解决方案。
基于递归思想,C++语言通过指针的概念提供了一种称为函数指针的特殊数据类型,实现了数据组织和数据处理的统一,推导出程序就是数据、数据就是程序的计算思维本质。
2.3.2 解空间枚举或遍历的思想
2.3.2.1 线性结构解空间的暴力枚举。 2.3.2.2 非线性结构解空间的遍历(基于二维规则穷举),如回溯法(DFS辅助)、分支定界法(BFS辅助)等都属于此类。
2.3.3迭代思维,例如计算中的表达式可以用旧值不断迭代新值,计算机科学中程序的迭代开发和版本的不断迭代。 2.3.4 递归思维,解决问题消除了正向推理,有时逆向推理可能会更容易。
3 编程编程就是针对特定问题或任务,以计算思维为指导,以编程语言为工具,设计数据结构和算法,并用编程语言进行描述。编程过程通常包括问题、任务或需求分析、数据结构和算法设计、程序编写、测试、调试、优化迭代等不同阶段。
4 三者关系计算机科学------计算思维------编程(------理论----------------实践- - ----) 做什么如何用计算机来做如何使用一些通用方法或算法来做。如何用特殊的编程语言进行编码。完