2024-2025-1 20241307《计算机基础与程序设计》第六周学习总结
作业信息
这个作业属于哪个课程 | (2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | (2024-2025-1计算机基础与程序设计第六周作业) |
这个作业的目标 | |
作业正文 | (2024-2025-1 学号20241307《计算机基础与程序设计》第六周学习总结) |
教材学习内容总结
《计算机科学概论》第七版第七章主要介绍了计算机问题求解的方法、算法以及相关的程序设计概念,以下是详细总结:
- 计算机问题求解过程:
• 分析和说明阶段:理解问题的需求和目标,明确已知条件和要达到的结果。这是解决问题的基础,需要对问题进行深入的分析和理解,将其转化为计算机可以处理的形式。
• 算法开发阶段:根据问题的分析结果,设计解决问题的算法。算法是解决问题的具体步骤和方法,它应该是正确、高效且易于实现的。在这个阶段,需要考虑算法的逻辑结构、控制流程和数据处理等方面。
• 实现阶段:将设计好的算法转化为计算机程序代码。这需要选择合适的编程语言和开发工具,按照算法的步骤编写程序,并进行调试和测试,确保程序的正确性和可靠性。
• 维护阶段:在程序运行过程中,可能会出现各种问题或需要进行功能扩展和优化。因此,需要对程序进行维护,包括修复错误、改进性能和添加新功能等。
- 算法的基本概念:
• 算法的定义:算法是一组明确的、可执行的步骤,用于解决特定的问题或完成特定的任务。它是计算机程序的核心,决定了程序的效率和正确性。
• 算法的特性:包括确定性(每个步骤都有明确的定义和结果)、有穷性(算法在有限的时间内能够结束)、可行性(算法的每个步骤都可以通过计算机实现)、输入和输出(算法需要接收输入数据,并产生输出结果)。
- 算法的分类:
• 计数控制循环:这类算法通过设定一个计数器,在计数器满足一定条件时重复执行某些操作。例如,for 循环就是一种计数控制循环,它可以根据设定的循环次数来执行循环体中的代码。
• 事件控制循环:当某个事件发生时,循环才会继续执行。这种算法通常用于处理实时性要求较高的问题,例如监听网络端口的程序,当有数据到达端口时,程序会进行相应的处理。
• 搜索算法:
• 顺序搜索:按照数据的存储顺序依次查找目标元素,适用于数据量较小或未排序的数据。
• 二分搜索:对于已排序的数据,通过不断将数据区间一分为二,逐步缩小搜索范围,提高搜索效率。
- 排序算法:排序是将一组数据按照特定的顺序进行排列的操作。常见的排序算法有:
• 选择排序:每次从待排序的数据中选择最小(或最大)的元素,将其与当前位置的元素交换,直到所有元素都排序完毕。
• 冒泡排序:通过不断比较相邻的两个元素,将较大(或较小)的元素交换到后面,经过多次循环,最终实现数据的排序。
• 插入排序:将待排序的数据依次插入到已排序的序列中,保持序列的有序性。
• 快速排序:选择一个基准元素,将数据分为两部分,一部分小于基准元素,另一部分大于基准元素,然后对这两部分分别进行排序,最后将它们合并起来。
- 计算机问题求解的重要思想:
• 信息隐蔽:将程序的实现细节隐藏起来,只对外提供必要的接口和功能。这样可以提高程序的可维护性和可扩展性,降低程序之间的耦合度。
• 抽象:将复杂的问题抽象为简单的模型或概念,以便更好地理解和解决问题。抽象可以帮助程序员忽略不必要的细节,专注于问题的本质。
• 事物命名:为程序中的变量、函数、对象等命名,以便更好地理解和管理程序。良好的命名可以提高程序的可读性和可维护性。
• 测试:在程序开发过程中,对程序进行测试是非常重要的。测试可以帮助发现程序中的错误和缺陷,确保程序的正确性和可靠性。测试包括单元测试、集成测试、系统测试等不同的阶段。
以下是 C 语言程序设计第五章相关内容总结:
一、if 语句
• 基本形式:if (表达式) 语句;。如果表达式的值为真(在 C 语言中,非零值表示真,零值表示假),则执行后面的语句。例如:if (x > 5) printf("x大于5\n");。
• if - else 形式:if (表达式) 语句1; else 语句2;。当表达式为真时执行语句 1,为假时执行语句 2。如if (score >= 60) printf("及格\n"); else printf("不及格\n");。
• 嵌套 if 语句:在 if 语句或 else 语句中可以再包含 if 语句。例如,if (a > 10) {if (a > 20) printf("a大于20\n"); else printf("a大于10小于等于20\n");}。需要注意 if 和 else 的匹配规则,else 总是与它上面最近的未配对的 if 相匹配,可以使用大括号来明确匹配关系。
二、switch 语句
• 基本结构:switch (表达式) { case 常量表达式1: 语句序列1; break; case 常量表达式2: 语句序列2; break; …… default: 语句序列n; }。表达式的值必须是整型或字符型等离散类型。
• 执行过程:首先计算表达式的值,然后与各个 case 后的常量表达式的值进行比较。若与某个 case 值相等,则执行该 case 后面的语句序列,直到遇到break语句或switch语句结束。如果没有匹配的 case,则执行default部分(如果有)的语句。例如:
switch (num) {
case 1:
printf("值为1\n");
break;
case 2:
printf("值为2\n");
break;
default:
printf("其他值\n");
}
• 注意事项:break语句在 switch 语句中非常关键,若没有break,程序会顺序执行下一个 case 的语句,可能导致不符合预期的结果。default子句是可选的,但合理使用可以处理一些意外情况。
条件语句在 C 语言程序设计中用于根据不同的条件执行不同的代码片段,实现程序的逻辑控制,使程序能够根据运行时的情况做出正确的反应,是构建复杂逻辑程序的重要基础。
教材学习中的问题和解决过程(先问 AI)
- 问题1:对网络协议理解困难
- 问题1解决方案:网络协议内容复杂,概念抽象。解决方案是结合实际案例学习,比如分析网页浏览时的 HTTP 协议流程,也可以制作图表,梳理不同协议层的关系。
- 问题2:数据传输原理混淆
- 问题2解决方案:数据在网络中的传输涉及很多知识点,易混淆。可通过搭建简单的局域网,观察数据传输情况来加深理解,还可以观看动画演示,更直观地掌握数据打包、路由选择等原理。
基于AI的学习
代码调试中的问题和解决过程
- 问题1:scanf两个值读取错误
- 问题1解决方案:可以在&数值间插入符号,更加清晰明了
- 问题2:switch结构中case后方的无法被读取
- 问题2解决方案:case后接数字如果是字符需要用单引号转化为常量
其他(感悟、思考等,可选)
学习 C 语言程序设计第五章,深刻体会到函数的魅力。它就像一个个小巧的积木,组合起来构建强大的程序。通过函数的调用和参数传递,代码变得更有条理、可复用。而计算机科学概论第七版第七章,则让我对网络世界有了新认知。从网络协议到数据传输,复杂却有序。这两部分内容让我明白,编程和网络是紧密交织的。程序依靠网络拓展能力,网络需要程序来实现功能。知识相互关联,共同推动技术的发展,激发我进一步探索的欲望。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 4/4 | 18/38 | |
第三周 | 500/1000 | 5/7 | 22/60 | |
第四周 | 500/1300 | 6/9 | 30/90 | |
第五周 | 1000/1400 | 7/9 | 60/90 | |
第六周 | 1200/1500 | 8/9 | 70/90 |