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

本文深入解析计算思维的内涵,探讨算法设计的关键特性、程序结构与语言,以及问题求解策略,涵盖计算机求解方法、时间复杂性分析与面向对象编程技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章:计算思维

知识梳理

在这里插入图片描述

高频考点

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

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、在面向对象程序设计方法中,抽象是处理事物复杂性的方法,能表示同一类事物的本质。

<think>好的,我现在需要帮用户总结Linux操作系统教材的第一章和第二章,特别是基于华为openEuler的内容,包括脚本命令,方便用户做思维导图。首先,我得回忆一下openEuler的基础知识。第一章通常会是概述,介绍Linux的发展、openEuler的特点,还有基础概念。可能包括开源协议、系统架构这些内容。用户可能需要一个结构清晰的总结,分点列出,方便导图的分支。 接下来是第二章,应该是常用命令和脚本部分。这里需要区分基本命令和脚本编写。基本命令可能涉及文件操作、权限管理、进程管理、网络相关命令。脚本部分要包括Shebang、变量、控制结构、函数和调试。需要确保每个部分都有关键点,比如具体命令的例子,如ls、cd、vim,权限管理中的chmod、chown,进程中的ps、kill。脚本中的if语句、循环结构,如何定义函数,调试命令如set -x。 用户提到要结合本周的导图作业,所以结构需要明确,可能分为计算机概念章节和常用命令章节。我需要检查是否有遗漏的部分,比如openEuler特有的内容,比如安全机制或容器技术,这些可能在第一章提到。另外,软件包管理部分,yum和dnf的区别,或者rpm的使用,是否在openEuler中有特别说明? 还要注意用户要求的格式,行内数学公式用$...$,独立公式用$$...$$,不过在这个总结中可能用不上太多数学公式,但如果有变量或代码,可能需要适当处理。比如在脚本中变量赋值和使用,可以用行内代码格式,但用户没有特别要求代码格式,只是提到LaTeX语法正确。不过用户的问题主要是文本内容的结构化,所以重点在于分章节和子点。 可能需要确认第一章和第二章的具体范围,但用户没有提供教材原文,只能基于常见的Linux教材结构。确保覆盖主要知识点,比如第一章的概述、发展史、openEuler特性、系统架构;第二章的命令分类、具体命令示例、脚本基础。同时注意华为openEuler的特点,比如安全性、轻量级容器、兼容性等,这些可能需要单独列出。 最后,确保回答结构清晰,分章节,每个章节下分小节,小节内有要点。方便用户转换为思维导图,每个主节点下有子节点。可能需要用标题层级来组织,但根据用户要求,用中文回答,使用清晰的结构,如章节标题,然后分点。同时要结合本周作业,强调计算机概念和常用命令章节的导图整理。需要避免冗长,保持简洁,但关键点全面。</think>以下是基于华为openEuler的Linux操作系统教材第一、二章结构化总结(适配思维导图框架): --- ### 第一章:Linux与openEuler概述 #### 1.1 操作系统基础概念 - 核心定义:$内核+系统调用+Shell$ 分层架构 - 开源协议:GPLv2(openEuler主要遵循) - 系统特点:多用户/多任务/分时处理 #### 1.2 openEuler特性 - 技术亮点: $$安全增强机制(如SecGear框架)$$ $$轻量级容器技术iSula$$ $$混合部署调度引擎$$ - 版本分支:LTS长期支持版与创新版 - 兼容生态:同时支持ARM/x86/鲲鹏架构 #### 1.3 系统架构 ``` 用户空间 ├─ GUI应用(如UKUI桌面) ├─ CLI工具 └─ 系统服务 内核空间 ├─ 进程调度器(CFS) ├─ 虚拟文件系统(VFS) └─ 设备驱动 ``` --- ### 第二章:命令与脚本编程 #### 2.1 命令操作体系 | 类别 | 核心命令 | 参数示例 | |-------------|--------------------------|-------------------------| | 文件操作 | `ls -l` `cp -r` `rm -rf` | `grep -n "pattern" file`| | 权限管理 | `chmod 755` `chown user:group` | `umask 022` | | 进程控制 | `ps aux` `kill -9 PID` | `top -d 1` | | 网络配置 | `ip addr` `ss -tnlp` | `curl -I https://example.com` | #### 2.2 Shell脚本编程 ```bash #!/bin/bash # Shebang声明 # 变量处理示例 count=$((10 + RANDOM%5)) # 算术运算 echo "当前数值: ${count}" # 流程控制结构 if [[ $count -gt 12 ]]; then systemctl restart service elif [ -f "/tmp/lock" ]; then rm -f /tmp/lock fi # 函数定义与调用 log() { echo "[$(date)] $1" >> /var/log/mylog } log "脚本开始执行" ``` #### 2.3 调试与优化 - 调试技巧:`set -x` 启用追踪,`bash -n script.sh` 语法检查 - 性能分析:`time command` 计时,`strace -p PID` 系统调用跟踪 --- ### 思维导图构建建议 1. **计算机概念层** ```mermaid graph LR A[操作系统] --> B1(内核功能) A --> B2(文件系统) A --> B3(进程管理) B1 --> C1(调度算法) B2 --> C2(ext4/XFS) ``` 2. **命令操作层** ```mermaid graph TB D[Linux命令] --> E1(文件操作) D --> E2(文本处理) E1 --> F1("ls/cp/mv") E2 --> F2("grep/sed/awk") ``` 建议使用XMind或MindMaster工具创建层级结构,每个命令节点附加实际案例说明。重点标注openEuler特有组件(如StratoVirt虚拟化平台)与其他发行版的差异点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小Meng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值