2024-2025-1 20241328 《计算机基础与程序设计》第五周学习总结
作业信息
课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
作业要求 | 2024-2025-1计算机基础与程序设计第五周作业 |
这个作业的目标 | Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒 |
作业正文 | 2024-2025-1 20241328 《计算机基础与程序设计》第五周学习总结 |
教材学习内容总结
pep/9虚拟机
pep/9虚拟机是一款用于教学目的的设计简洁的RISC计算机。它旨在帮助理解基础的计算机硬件要素以及实际工作流程,其中关键组件包括:
- 寄存器组: 执行的数据暂存区.
- 内存(RAM): 提供数据存储.
- 程序计数器: 追踪指令位置执行特定任务.
计算机语言层次
机器语言
- 表示方式: 二进制代码(例如,'0110')
- 特点: 直接对应处理器电路激活模式.
- 执行方式: 处理器的电路经过设计就是为了读懂并执行这些简单的命令.
汇编语言
- 角色: 操作更为直观且易写作,通过组合英语单词或其他人类可读技术表达式实现.
- 目标代码: 'add $r0,$r1,$r2'
- 工具: 汇编器.
算法与指挥部通信框架
此部分知识介绍怎样制定有效的系统行为指导方针,种类繁多,通常是基于需要解决问题的不同场景下的特定策略
算法
核心理念被广泛应用于科学计算、数据分析与预测、图像处理等领域。通常重视以下几个特性:
- Input: 应具有零个或多个输入,配置灵活方便调整优化过程.
- Output: 标配产生的一个或多个输出结果项。
- Deterministic Behavior & Verifiability .
伪代码
伪代码用形式类似spoken/written language description却比man page宣介轻松的方式阐述,takable by most general pipeline
函数 Factorial(x):
输入 -> n:n=x
当 n ≠ 1
o(n):=( load操食堂保险柜所置"从节俭中省下来的钱") + rest all
测试方法论 --“白”削减无脾肺之言谈
着重讲述如何设计洞悉内部mslang工程化开发范式的测验脚本:宽展解释了确定性测试的重要程度超越内容包值
-
** Blackbox Testing[:]**
(在这儿,"Blackbox"一词不可滥作"DP"含义效尤!除非并列特殊的原生上下文直译Lump一起提)在人们完全不了解系统内部机制之前进行的操作 -
** Whitebox Testing[:]**: 了解系统内部结构,并从中领取特定数据信息片段做局部精细化分析/探测的方法。.
基于AI的学习
我:我在学习C语言的分支与循环结构的相关问题,请你对我进行苏格拉底式的提问,一次一个问题
AI:好的,让我们开始吧。
首先,我想了解一下你对C语言中的if
语句的理解。你能告诉我,在什么情况下会使用if
语句吗?
我:当需要依据条件决定是否执行代码块时使用if
语句,如判断数大小、输入是否符合要求等。
AI:很好,你的理解非常正确。接下来,我想了解一下你对于if...else
结构的认识。请问,在什么样的情境下,我们需要使用if...else
语句呢?
我:很好,你的理解非常正确。接下来,我想了解一下你对于if...else
结构的认识。请问,在什么样的情境下,我们需要使用if...else
语句呢?
AI:非常好。我们已经知道当需要根据某些条件执行特定的操作时,我们可以使用if...else
语句。那么,请问如果是存在多个条件,并且希望针对这几个不同的条件执行不同的操作的时候,我们应该怎么做呢?
我:当存在多个条件并针对不同条件执行不同操作时,可以使用if...else if...else
结构。先判断第一个if
条件,若满足则执行对应的语句块;若不满足则判断下一个else if
条件,依次类推;若前面所有条件都不满足则执行最后的else
语句块(else
部分可省略)。
AI:非常好!你现在已经掌握了if...else if...else的基本用法了。接下来,请问你知道如何使用switch语句来实现多路分支选择吗?在什么情况下应该使用它呢?
我:switch
语句根据表达式值与case
常量表达式值是否相等实现多路分支。当有多个固定值需判断并执行不同操作时使用,语法含case
、default
,break
用于跳出。
AI:非常好,你已经了解了switch
语句的基本用法和适用情境。下面我们来讨论一下循环控制结构。在C语言中,有几个常用的循环控制结构。你知道有哪些吗?并且请简要介绍一下它们各自的用法。
我:在C语言中,常用的循环控制结构有for
循环、while
循环和do - while
循环。
for
循环:
- 用法:
for(初始化表达式; 条件表达式; 更新表达式)
。初始化表达式用于初始化循环变量,条件表达式用于判断循环是否继续执行,更新表达式用于更新循环变量。例如for(int i = 0; i < 10; i++)
,这里初始化i
为0,只要i
小于10就执行循环体,每次循环后i
自增1。
while
循环:
- 用法:
while(条件表达式)
。只要条件表达式为真,就会执行循环体中的语句。例如int i = 0;while(i < 10){//循环体内容,如打印i的值等;i++;}
,先判断i
是否小于10,然后执行循环体并更新i
的值。
do - while
循环:
- 用法:
do{循环体语句}while(条件表达式);
。先执行一次循环体,然后再判断条件表达式是否为真,如果为真则继续执行循环体。例如int i = 0;do{//循环体内容;i++;}while(i < 10);
。
AI:非常好!你对for
、while
和do-while
这三种循环控制结构有了清晰的认识,并能通过例子很好地描述它们各自的用法。接下来,我想探讨的是关于循环控制的一些高级特性。比如break
和continue
关键字的作用是什么?它们在什么场景下会被使用呢?
我:1.break
关键字: - 作用:用于跳出当前所在的循环结构(
for
、while
、do - while
)或者switch
语句。 - 使用场景:当满足某个特定条件时,不需要再继续执行循环或者
switch
语句中的剩余部分,就可以使用break
。例如在一个查找数组中特定元素的for
循环中,一旦找到该元素,就可以使用break
跳出循环,不需要再继续查找。
continue
关键字:
- 作用:用于跳过当前循环中的剩余语句,直接进入下一次循环的判断条件部分。
- 使用场景:当在循环中遇到某些不需要执行后续语句的情况,但又不希望结束整个循环时使用。例如在一个打印1到10之间奇数的
for
循环中,如果当前数字是偶数,就可以使用continue
跳过后面的打印语句,直接进入下一次循环判断。
AI:回答得很好!你对break
和continue
这两个关键字的理解很清楚,并能够正确地解释它们的应用场景和作用。同时,你还给出了具体的例子来帮助说明更抽象的概念。现在,我想转到一个更深入的问题上那就是关于循环嵌套的问题。请问你知道如何实现 在一个循环里包含另一个循环 吗?这类结构通常被用来解决哪些类型的问题呢?
我:1. 实现循环嵌套: - 在C语言中,实现循环嵌套很简单。例如,在
for
循环嵌套中,可以这样写:
for(int i = 0; i < 3; i++){
for(int j = 0; j < 5; j++){
// 这里是内层循环体
}
// 这里是外层循环体(内层循环结束后执行)
}
- 对于
while
循环嵌套:
int i = 0;
while(i < 3){
int j = 0;
while(j < 5){
// 内层循环体
j++;
}
i++;
}
- 解决的问题类型:
- 处理多维数据结构,如二维数组。例如,要遍历一个二维数组的所有元素,可以使用嵌套循环,外层循环控制行,内层循环控制列。
- 穷举搜索问题。例如,在一个棋盘(如国际象棋棋盘)上搜索所有可能的棋子放置位置,外层循环可以遍历行,内层循环遍历列。
- 生成特定模式的输出。例如,打印一个乘法表,外层循环控制行数,内层循环控制列数,从而输出乘法表的每一项。
AI:完美!你的阐述有助于理解循环嵌套并且很准确。你不仅提供了代码示例以帮助说明概念,还列出了一些实际使用中的典型应用场景。而且你的解答涵盖了嵌套不同类型的循环,这是非常重要的一点因为实际情况中我们经常会面对不同的循环组合需求。迄今为止你的理解都非常深入透彻,继续保持这样的学习深挖精神,它将会对你未来的学习和工作产生极大的积极影响。让我们继续探索更多复杂的主题!
我:我的回答结束了,请对我的回答进行评价总结
AI:评价总结:
总体来说,你的理解和回答都非常出色。以下是一些具体反馈:
-
准确性:
- 初步及进阶掌握良好:从基本的
if
,if..else
, 和switch/case
分支选择结构到条件语句以及多种循环方案(for地块紧凑于底部弹出 sponsoring villagers
,`while,``do-while)、你都能给出准确并且详细的定义及其应用情况。
- 初步及进阶掌握良好:从基本的
-
扩展性:
- 正确识别了循环嵌套的重要性及实际应用场景,比如处理多维数据时的高效简易性和穷尽查询特定问题,这些都展示了你对于复杂分支/循环安排的理解能力。
-
深度:
- 针对初级和复杂材料的整合递进发展显示了良好的思维条理性,并表明能够在规定时间内快速适应新任务而且能够将知识深度与广度相结合。
唯一的小建议是,有时给的例子可能会让一些初学者难以理解,例如涉及多维度的数据处理或特定领域背景知识情况下。可以在进一步解释并提供较简单的实例以确保教授对象无论基础如何都能够全面掌握其中原理。
总之,你展示了一个丰富而成熟的C语言分支与循环逻辑领域里的理解力及知识储备非常接近精准优秀的水平进一步提升空间巨大可挖掘潜力惊人,表现棒极了!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |