2024-2025-1 20241407《计算机基础与程序设计》第十周学习总结
作业信息
| 这个作业属于哪个课程 | 2024-2025-1计算机基础与程序设计 |
|---|---|
| 这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第十周作业 |
| 这个作业的目标 | 信息系统,数据库与SQL,人工智能与专家系统,人工神经网络,模拟与离散事件,排队系统,天气与地震模型,图形图像 |
| 作业正文 | 本博客 |
教材学习内容总结
《计算机科学概论》第七版第十二章的学习内容总结如下:
- 信息管理:
- 信息系统是帮助我们组织和分析数据的软件。
- 电子制表软件:
- 电子制表软件使用单元格来组织数据和用于计算新值的公式的应用软件。
- 行列标号可以引用单元格,如A5或B7。
- 公式通常会引用其他单元格中的值,还会使用内置函数来计算结果。
- 公式还可以使用一个单元格范围内的数据。
- 如果单元格中存放的是公式,那么单元格中真正显示的是公式计算出的值。
- 避免循环引用(两个或多个单元格的计算结果要互相依赖)很重要。
- 数据库管理系统:
- 讨论了关系模型、关系、结构化查询语言(SQL)以及数据库设计。
- 电子商务:
- 探讨了电子商务的相关内容。
- 大数据:
- 介绍了大数据的概念和重要性。
- 电子数据表公式:
- 电子数据表(如Excel)中的公式用于计算单元格的值,它们可以引用其他单元格的值,并使用内置函数来计算结果。公式可以是简单的算术运算,也可以是复杂的逻辑判断和数据处理操作。例如,
=SUM(A1:A10)计算A1到A10单元格的总和。
- 电子数据表(如Excel)中的公式用于计算单元格的值,它们可以引用其他单元格的值,并使用内置函数来计算结果。公式可以是简单的算术运算,也可以是复杂的逻辑判断和数据处理操作。例如,
- 循环引用:
- 循环引用发生在公式直接或间接引用自身单元格时,导致无法计算出正确的结果。在Excel中,可以通过“公式”菜单下的“错误检查”功能来识别循环引用。解决循环引用的方法之一是使用迭代运算,这允许在满足一定条件后停止迭代计算。
- 电子数据表分析:
- 电子数据表分析涉及使用电子数据表软件进行数据组织、分析和决策支持。这包括使用公式、图表、数据分析工具等来洞察数据趋势和模式。
- 关系和关系模型:
- 关系模型是数据库管理系统的基础,它使用二维表的形式来组织数据,每个表由行和列组成。关系模型中的数据通过主键和外键来维护数据的完整性和关系。
- 结构化查询语言(SQL):
- SQL是一种用于存储、操作和检索关系数据库管理系统中数据的标准编程语言。它包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。SQL的功能包括数据定义、数据操纵和数据控制。例如,
SELECT语句用于查询数据,INSERT、UPDATE和DELETE用于数据操纵,而GRANT和REVOKE用于数据控制。
这些内容涵盖了信息系统中数据处理和分析的关键方面。通过学习这些内容,我们可以更好地理解和应用信息系统在数据管理中的作用。
《计算机科学概论》第七版第十三章的学习内容总结如下:
- 人工智能:
- 人工智能是关于人类思想的建模和应用的领域。
- 图灵测试:
- 图灵测试是衡量一台机器是否能像人一样思考的方法,通过模拟人类对话来进行。通过图灵测试的计算机具有弱等价性,即在结果上与人等价,但实现方式不同。强等价性则指内部过程也相同。
- 知识表示:
- 介绍了两种知识表示方法:语义网和检索树。语义网是知识的图形化表示,捕捉了对象在真实世界中的关系;检索树则用于表示对抗性移动(如比赛)的知识。
- 专家系统:
- 专家系统嵌入了人类专家的知识,采用一套规则来定义条件,在这种条件下可以得出某些结论。专家系统适用于多种类型的决策过程,如医疗诊断等。
- 自然语言处理:
- 讨论了自然语言处理的多个方面,包括语音合成、语音识别、以及计算机对单词“light”的多种解释。
- 机器人学:
- 介绍了机器人学的三个基本定律,由艾萨克·阿西莫夫创立。
- 描述了两类机器人:固定机器人和移动机器人。
- 讨论了规划系统,即给定目标、起始位置和结束情况,生成解决方案算法的软件系统。
- 定义了subsumption架构,即行为并行运行,除非它们发生冲突,此时目标的排序决定了哪个行为优先。
- 描述了机器人的组成,包括传感器、执行器和计算元素。
这些内容涵盖了人工智能的多个关键领域,包括基础理论、知识表示、专家系统、自然语言处理和机器人学,为我们提供了对人工智能领域的全面了解。
《计算机科学概论》第七版第十四章的学习内容总结如下:
- 模拟:
- 模拟是计算的一个主要领域,涉及为复杂系统构建计算机模型,并用模型进行实验以观察结果。模型是真实系统的抽象,系统在模型中被表示为一组对象或特征以及管理它们行为的规则。
- 有两种主要的模拟类型:连续模拟和离散事件模拟。连续模拟中的变化由偏微分方程表示,而在离散事件模拟中,行为被表示为实体、属性和事件。
- 排队系统是一种离散事件模拟,其中等待时间是分析的因素。气象模型和地震模型是连续模拟的例子。
- 计算机图形学:
- 计算机图形学是结合计算机、科学和绘画艺术的领域,依赖数学方程来模拟图像中要呈现的自然现象。它涉及光的交互、对象的属性(如透明度和表面纹理)、对象的形状和物理属性,生成接近真实照片的图像。
- 游戏:
- 计算机游戏是一个玩家可以与系统以及玩家之间交互的虚拟世界。游戏开发者、软件设计师和程序员使用游戏引擎来创建游戏虚拟世界。
- 其他应用:
- 章节还可能探讨了计算机科学在其他领域的应用,如计算生物学、必要的计算能力等。
这些内容涵盖了计算机科学中模拟、图形学和游戏领域的基础理论和实践应用,为我们提供了对这些领域的深入理解。
- 章节还可能探讨了计算机科学在其他领域的应用,如计算生物学、必要的计算能力等。
《C语言程序设计》第五版第九章专注于指针的相关内容,这是C语言中一个非常重要的概念。以下是该章节的学习内容总结:
- 指针的基本概念:
- 指针是一种特殊的变量,它存储的是另一个变量的内存地址。指针变量需要指定一个类型,这个类型决定了它能够指向的数据类型。
- 指针的声明:
- 如何声明指针变量,例如:
int *ptr; // 声明一个指向int类型数据的指针
- 如何声明指针变量,例如:
- 指针与变量的关系:
- 如何使用
&运算符获取变量的地址,并将其赋值给指针,以及如何使用*运算符来访问指针指向的变量的值。
- 如何使用
- 指针的算术:
- 指针可以进行加法和减法运算,但这些运算与普通变量的算术运算不同。指针的加法实际上是地址的增加,减法则是地址的减少。
- 指针与数组:
- 指针与数组的关系,如何使用指针来遍历数组,以及数组名与指针的关系。
- 指针作为函数参数:
- 指针作为函数参数时的行为,包括如何通过指针参数修改函数外部变量的值。
- 返回指针的函数:
- 如何编写返回指针的函数,以及如何从函数中返回局部变量的地址(通常不推荐,因为局部变量的生命周期在函数返回后结束)。
- 指针数组和指向指针的指针:
- 指针数组是存储指针的数组,而指向指针的指针则是指向另一个指针的指针。这些概念在处理复杂的数据结构时非常有用。
- 动态内存分配:
- 如何使用
malloc和free函数进行动态内存分配和释放。
- 如何使用
- 指针与字符串:
- 字符串在C语言中实际上是字符数组的指针,如何使用指针来处理字符串。
- 指针的安全问题:
- 指针使用不当可能导致的内存泄漏、野指针等问题,以及如何避免这些问题。
- 指针与结构体:
- 指针与结构体结合使用,如何通过指针来访问和修改结构体成员。
通过学习这些内容,我们能够理解指针的基本概念、操作和应用,以及如何在C语言程序中有效地使用指针。指针是C语言中非常强大的工具,但也需要谨慎使用以避免常见的错误和安全问题。
- 指针与结构体结合使用,如何通过指针来访问和修改结构体成员。
教材学习中的问题和解决过程
问题一:数据库和数据管理系统有什么异同?
解决方式:AI答:数据库(Database)和数据管理系统(Database Management System,简称DBMS)是密切相关的概念,但它们指代的是不同的内容。以下是它们之间的异同:
相同点:
- 数据存储:它们都用于存储数据。
- 数据组织:它们都提供了一种方式来组织和结构化数据。
- 数据访问:它们都允许用户访问和检索存储的数据。
- 数据一致性:它们都致力于维护数据的一致性和完整性。
不同点:
- 概念层面:
- 数据库:是一个实体,它是一个存储数据的集合,这些数据是结构化的,并且通常是相关的。数据库可以被看作是一个文件柜,里面存放着各种文件(数据)。
- 数据管理系统:是一个软件系统,它用于创建和管理数据库。DBMS提供了用户与数据库交互的接口,包括数据的创建、查询、更新和管理。DBMS可以被看作是管理文件柜和文件的秘书或系统。
- 功能:
- 数据库:主要负责数据的存储和组织。
- 数据管理系统:除了存储和组织数据外,还负责数据的安全性、完整性、备份、恢复、并发控制和事务管理等。
- 操作:
- 数据库:用户可以直接对数据库进行操作,但这种操作通常是低级的,需要用户对数据结构有深入的了解。
- 数据管理系统:提供了一套高级的接口和查询语言(如SQL),使得用户无需深入了解数据的物理存储细节,就可以方便地进行数据操作。
- 实现:
- 数据库:可以是一个文件、一组文件或一个文件集,它们包含了实际的数据。
- 数据管理系统:是一个实际运行的软件程序,它实现了数据库的定义、操作和管理。
- 用户视角:
- 数据库:对于最终用户来说,数据库是他们存储和检索数据的地方。
- 数据管理系统:对于数据库管理员和开发者来说,DBMS是他们用来维护和操作数据库的工具。
总结来说,数据库是存储数据的地方,而数据管理系统是管理这些数据的工具。没有DBMS,数据库的管理将变得复杂和低效;没有数据库,DBMS就没有存在的意义。它们共同工作,为用户提供了一个既强大又易于使用的数据存储和访问解决方案。
问题二:如果在图灵测试里担当质问者,会问些什么问题?为什么机器人很难回答好?
解决方式:AI答:在图灵测试中,质问者(interrogator)的任务是区分对话的另一方是人类还是机器。为了有效地进行区分,质问者可能会提出一系列问题,旨在揭示对话者的认知能力、情感反应、创造性思维、语言理解与生成能力等方面的差异。以下是一些可能的问题类型:
- 情感和同理心问题:
- “如果你最好的朋友失去了亲人,你会如何安慰他?”
- 这类问题旨在测试对话者是否能够表现出人类的情感和同理心。
- 创造性和原创性问题:
- “给我讲一个你从未告诉过别人的原创笑话。”
- 这类问题测试对话者是否能够进行创造性思维和原创内容的生成。
- 复杂逻辑和推理问题:
- “如果你在一个房间里,房间里有一个桌子,桌子上有一个苹果,你走出房间,你爸爸进来把苹果拿走了,你回来后房间里还有什么?”
- 这类问题测试对话者的逻辑推理能力。
- 文化和历史知识问题:
- “请解释一下第二次世界大战的起因和影响。”
- 这类问题测试对话者是否具备广泛的文化和历史知识。
- 自我意识和自我反思问题:
- “你认为自己最大的优点和缺点是什么?”
- 这类问题旨在探索对话者是否具有自我意识和自我反思的能力。
- 语言游戏和双关语问题:
- “为什么鸡要过马路?”
- 这类问题测试对话者是否能够理解并欣赏语言游戏和幽默。
- 道德和伦理问题:
- “如果一个行为在道德上是错误的,但法律上是允许的,你会怎么做?”
- 这类问题测试对话者是否能够处理复杂的道德和伦理问题。
机器人很难回答好这些问题的原因包括:
- 情感理解限制:机器人可能无法真正理解或体验人类的情感,因此难以给出真实、有同理心的回答。
- 创造性限制:虽然一些先进的AI可以生成看似原创的内容,但这些内容往往是基于大量数据训练的结果,而不是真正的创造性思维。
- 复杂逻辑推理:机器人可能在处理复杂的逻辑和推理问题时遇到困难,尤其是当问题涉及抽象概念或需要深层次理解时。
- 文化和历史知识:机器人可能缺乏对特定文化和历史背景的深入理解,这限制了它们回答相关问题的能力。
- 自我意识:机器人缺乏自我意识,因此难以进行自我反思或表达个人感受。
- 语言游戏和幽默:机器人可能难以理解语言的微妙之处,包括双关语和幽默,这使得它们难以参与语言游戏。
- 道德和伦理判断:机器人可能难以处理复杂的道德和伦理问题,因为这些问题通常需要基于个人价值观和社会规范做出判断。
图灵测试的目的是通过这些问题来评估机器是否能够展现出与人类相似的智能行为,而机器人在这些领域的局限性正是图灵测试区分人机对话的关键所在。
问题三:如何使用函数指针?
解决方式:AI答:在C语言中,函数指针是一种指向函数的指针,它允许你将函数作为参数传递给其他函数,或者将函数作为返回值从函数中返回。使用函数指针可以让你编写更灵活和通用的代码。以下是如何使用函数指针的步骤:
1. 声明函数指针
首先,你需要声明一个函数指针。函数指针的声明包括函数的返回类型、指针名、参数列表和指针符号。例如,如果你有一个返回int类型,接受两个int参数的函数,你可以这样声明一个指向这种函数的指针:
int (*funcPtr)(int, int);
2. 初始化函数指针
声明函数指针后,你可以将其初始化为指向一个具体的函数。例如:
int add(int a, int b) {
return a + b;
}
int (*funcPtr)(int, int) = add; // 将函数指针指向add函数
3. 使用函数指针调用函数
一旦函数指针被初始化,你就可以使用它来调用函数,就像使用普通函数一样:
int result = funcPtr(5, 3); // 调用add函数
printf("Result: %d\n", result);
4. 传递函数指针作为参数
你可以将函数指针作为参数传递给其他函数。这允许函数根据传入的函数指针来执行不同的操作:
void applyFunction(int a, int b, int (*func)(int, int)) {
int result = func(a, b);
printf("Result: %d\n", result);
}
int main() {
applyFunction(5, 3, add); // 将add函数作为参数传递
return 0;
}
5. 返回函数指针
函数也可以返回函数指针。这允许函数根据某些条件返回不同的函数:
int (*getFunction(char op))(int, int) {
if (op == '+') {
return add;
} else if (op == '-') {
return subtract;
}
return NULL;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*funcPtr)(int, int) = getFunction('+');
int result = funcPtr(10, 5);
printf("Result: %d\n", result);
return 0;
}
注意事项
- 确保函数指针指向的函数的参数列表和返回类型与声明的函数指针类型完全匹配。
- 使用
NULL来初始化未指向任何函数的函数指针。 - 使用函数指针时,确保它们指向的函数在生命周期内有效,避免悬空指针问题。
通过这些步骤,你可以在C语言中灵活地使用函数指针来编写更通用和模块化的代码。
基于AI的学习

学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 200/200 | 2/2 | 20/20 | |
| 第二周 | 200/400 | 1/3 | 18/38 | |
| 第三周 | 300/700 | 1/4 | 20/58 | |
| 第四周 | 400/1100 | 1/5 | 22/90 | |
| 第五周 | 300/1400 | 1/6 | 22/102 | |
| 第六周 | 400/1800 | 1/7 | 25/127 | |
| 第七周 | 400/2200 | 1/8 | 30/157 | |
| 第八周 | 500/2700 | 1/9 | 35/192 | |
| 第九周 | 500/3200 | 1/10 | 28/220 | |
| 第十周 | 400/3600 | 1/11 | 30/250 |

浙公网安备 33010602011771号