2024-2025-1 20241415 《计算机基础与程序设计》第五周学习总结
2024-2025-1 20241415《计算机基础与程序设计》第五周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第五周作业 |
这个作业的目标 | Pep/9虚拟机、机器语言与汇编语言、算法与伪代码、测试:黑盒,白盒 |
作业正文 | https://www.cnblogs.com/zhaoshaoning/p/18508367 |
教材学习内容总结
一、Pep/9虚拟机
- 架构
指令集架构:Pep/9 具有简化的指令集,支持基本的算术、逻辑、控制流和输入/输出操作。
寄存器:Pep/9 包含少量寄存器,如累加器、程序计数器和堆栈指针,用于存储临时数据和执行控制。
2. 内存
地址空间:Pep/9 的内存设计为线性地址空间,方便学生理解如何存取内存地址。
数据和指令存储:Pep/9 虚拟机使用相同的存储单元来存放数据和指令,帮助学生了解存储的基本理念。
3. 输入/输出
Pep/9 提供了基本的输入和输出机制,以为用户与程序之间的交互提供支持。
4. 汇编语言
Pep/9 还可以使用汇编语言进行编程,学生可以通过编写汇编语言程序来深入理解如何将高级语言翻译为机器语言。这有助于他们掌握底层计算机操作的基本概念。
5. 模拟器
通常,Pep/9 伴随一个模拟器,学生可以在其中编写代码、运行程序并调试,这对于理解机器级操作至关重要。
6. 教育目的
教程材料:Pep/9 被广泛用于计算机科学教育,通过提供一个简单的环境来教授编程和计算机基础知识,目标是让学生更容易理解计算机的基本概念。
二、机器语言与汇编语言
机器语言
定义:机器语言是计算机能够直接理解和执行的语言,通常由二进制代码(0和1)构成。
特点:
直接性:机器语言是最低级别的编程语言,不需要翻译,因为计算机的中央处理单元(CPU)直接执行这些指令。
难以理解:由于机器语言是二进制形式,人类难以阅读和编写,因此通常不用于日常的程序开发。
特定性:不同的计算机架构有不同的机器语言指令集,因此机器语言是与硬件紧密相关的。
示例:以下是一个简单的机器语言指令示例(假想):
10110000 00000001 ; 将1放入寄存器A
10100000 00000001 ; 将寄存器A与1相加
汇编语言
定义:汇编语言是机器语言的符号表示,它使用助记符和易于理解的语法来代表机器语言的指令。
特点:
可读性:汇编语言比机器语言更易于理解和编写,因为它使用了助记符(如 MOV, ADD, SUB),而不是二进制代码。
平台依赖性:像机器语言一样,汇编语言也是特定于计算机架构的,不同架构有不同的汇编语言指令集。
翻译过程:汇编语言需要通过汇编程序(assembler)转换为机器语言,然后才能被计算机执行。
示例:以下是汇编语言的示例:
MOV A, 1 ; 将1放入寄存器A
ADD A, 1 ; 将寄存器A与1相加
比较
特点 机器语言 汇编语言
形式 二进制(0和1) 助记符和文本
可读性 难以理解 相对容易理解
执行 直接被CPU执行 需被汇编器转换为机器码
平台依赖性 与硬件架构相关 与硬件架构相关
使用场景 机器直接操作 程序开发与底层操作
三、算法与伪算法
定义:
算法是解决特定问题的一系列明确的步骤或规则。它是一种有效的方法,通过有限的步骤实现特定的任务。
特点:
明确性:算法的每一个步骤都应具有明确的含义,不能含糊不清。
有限性:算法必须在有限的步骤内完成,不能无止境地执行。
输入和输出:算法可以有零个或多个输入,必须有一个或多个输出。
有效性:算法中的操作必须是可行的,即可以在合理的时间和资源限制内完成。
示例:
计算两个数的和的简单算法:
输入两个数A和B。
计算它们的和:S = A + B。
输出S。
伪代码
定义:
伪代码是一种用于描述算法的高层次、简化的代码。它通常结合自然语言和编程语言的语法,旨在清晰地表达算法的逻辑。
特点:
可读性:伪代码通常不依赖于特定的编程语言,因此对于非程序员或初学者更易懂。
简洁性:伪代码省略了编程语言中的具体语法,专注于算法的逻辑和步骤。
结构化:伪代码通常使用结构化的方式表示算法,包括条件语句、循环等。
示例:
计算两个数的和的伪代码:
开始
输入 A, B
S = A + B
输出 S
结束
算法与伪代码的关系
描述:伪代码是用来描述算法的一种工具,可以帮助程序员和计算机科学家在实现前理清思路。
实现:在编写实际代码之前,常用伪代码来构建算法的框架,随后将其翻译为特定编程语言的代码。
沟通:伪代码可以作为团队成员之间沟通算法思路的桥梁,便于不同背景的人理解算法的核心概念。
四、测试:黑盒,白盒
黑盒测试
定义:
黑盒测试是一种测试方法,测试人员不需要了解软件的内部实现或代码逻辑,而是依赖于输入和期望输出进行测试。
特点:
测试视角:关注于软件的功能和行为,而不是内部工作原理。
输入输出驱动:通过提供输入并验证输出是否符合预期来进行测试。
不依赖于代码:测试人员不需要了解程序的代码、架构或实现细节。
适用场景:常用于功能测试、验收测试和回归测试。
优点:
能够从用户的角度评估系统,确保系统能够按预期工作。
对于功能性需求的测试非常有效。
缺点:
可能无法覆盖所有的代码路径和条件,导致潜在的缺陷未被发现。
测试效果取决于测试用例的设计质量。
示例:
测试一个在线购物网站的支付功能,验证不同支付方式(如信用卡、PayPal)的工作是否正常,不需要了解后台如何处理这些支付。
白盒测试
定义:
白盒测试是一种测试方法,测试人员必须了解软件的内部逻辑和结构,根据代码实现来设计测试用例。
特点:
代码驱动:测试人员需要查看源代码,了解控制流和数据流。
全面测试:能够测试代码的每个分支和路径,提供更全面的覆盖。
需要技术背景:测试人员通常需要具备编程和软件开发的基础知识。
适用场景:常用于单元测试、集成测试和代码审查。
优点:
可以发现逻辑错误和不合理的代码结构。
测试覆盖率高,可以追踪到代码的每一部分。
缺点:
测试过程可能较为复杂,需要对代码有深入的理解。
在某些情况下,可能会忽视软件的外部功能与用户体验。
示例:
对一个函数进行单元测试,验证其所有可能的输入条件和边界案例,以确保它按预期工作。
教材学习中的问题和解决过程
问题1:PEP/9虚拟机有什么优点?
问题一1解答:简化的教学工具:
PEP/9提供了一个简化的环境,非常适合用于教学和学习编程语言的基本概念,特别是在计算机科学入门课程中。
抽象化:
PEP/9对底层硬件和复杂性进行了抽象,使学生能够集中精力理解程序的逻辑和控制流,而不必深入学习硬件架构的细节。
简明的指令集:
PEP/9拥有直观且简洁的指令集,易于学习和使用,使得学习者可以快速上手和理解基本的操作,如数据传输、算术运算和控制流。
可移植性:
由于PEP/9是一个虚拟机,它可以在不同的平台上运行,不依赖于特定的操作系统或硬件架构,从而提高了可移植性。
可视化:
许多与PEP/9配套的工具提供了代码执行的可视化效果,帮助学习者更好地理解代码的执行过程和动态变化。
支持调试:
PEP/9支持基本的调试框架,允许学习者进行跟踪和逐步执行代码的能力,以帮助他们理解执行过程中的状态变化。
良好的实践:
通过在PEP/9上编写代码,学习者可以培养出良好的编程习惯和结构化思维,形成编写清晰、可维护代码的良好基础。
丰富的学习资源:
因为PEP/9是被广泛使用的教学工具,许多教科书和在线资源都提供了与其相关的学习材料和示例,使学习者能够更方便地获取学习资源。
问题2:C语言中如何选用不同的循环语句?
问题2回答:当你知道迭代次数时,使用for循环非常合适。例如遍历数组或执行固定次数的操作。
如果循环条件比较清晰,可以使用for循环来增强代码的可读性。当循环次数不确定,取决于某个条件时,使用while循环更为合适。例如,读取文件内容直到文件末尾,或在等待用户输入满足某种条件时。当需要确保循环体至少执行一次时,do...while循环是最佳选择。例如,处理用户输入时,无论输入是否合法,至少需要询问用户一次。总结来说,选择合适的循环语句取决于上下文和需求,清晰的控制结构增强了代码的可读性和可维护性。
基于AI的学习