2024-2025-1 20241407《计算机基础与程序设计》第五周学习总结
这个作业属于哪个课程 | 2024-2025-1计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第五周作业 |
这个作业的目标 | 学习Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒 |
作业正文 | https://www.cnblogs.com/wangyihan604505/p/18508312 |
教材学习内容总结
《计算机科学概论第七版》第六章学习内容总结如下:
• 低级程序设计语言:
计算机操作:计算机能够对数据执行的操作是存储,检索和处理。
机器语言:直接用二进制代码编写的程序,每条指令对应CPU的一个操作。
汇编语言:用助记符表示机器指令的语言,比机器语言更易于理解和编写,但仍然需要汇编器将其转换为机器语言。
Pep/9虚拟机:具体介绍了其基本特性和指令格式,输入输出和实例。
• 汇编语言的组成部分:
指令集:CPU支持的所有指令。
寄存器:用于存储数据和地址的小型存储区域。
寻址模式:确定操作数位置的方法,如直接寻址、间接寻址等。
指令格式:操作码和操作数的组合方式。
• 汇编语言编程:
编写汇编程序:如何使用汇编语言编写程序,包括数据定义、指令和控制结构。
汇编和链接过程:如何将汇编语言程序转换为机器语言,并与其他程序或库链接。
• 伪代码:
伪代码的定义:一种非正式的、介于自然语言和编程语言之间的语言,用于描述算法而不依赖于特定编程语言的语法。
伪代码的用途:在编程之前规划算法,作为文档,以及作为教学工具。
• 伪代码的编写:
控制结构:如何使用伪代码表示条件、循环和其他控制结构。
数据结构:如何在伪代码中表示和操作数据结构,如数组、列表和栈。
• 从伪代码到编程语言:
转换过程:如何将伪代码转换为特定编程语言的代码。
代码优化:在转换过程中可能进行的优化,以提高效率或可读性。
• 低级语言与高级语言的比较:
抽象级别:低级语言与高级语言在抽象级别上的差异。
性能:低级语言在性能上的优势和限制。
可读性和可维护性:高级语言在可读性和可维护性方面的优势。
• 实际应用:
嵌入式系统:在嵌入式系统中使用低级语言和伪代码。
性能关键型应用:在需要精细控制硬件的场合使用低级语言。
这一章节的内容为我们提供了对低级编程语言和伪代码的深入理解,这对于学习计算机科学的基础知识和理解程序如何在硬件层面上执行至关重要。
《C语言程序设计第五版》第四章的主要学习内容如下:
•单个字符的输入和输出:
字符常量:介绍了常用的转义字符和宽字节字符。
字符的输入和输出:举了实例说明可用putchar和printf函数函数进行输出。
•数据的格式化屏幕输出
函数printf的一般格式:使用printf
函数进行格式化输出,可以指定字符串中的格式符来输出不同类型的数据。如%d
用于整数,%f
用于浮点数,%c
用于字符,%s
用于字符串。
函数printf中的格式修饰符:如l,L,h等等。
• 数据的格式化键盘输入:
函数scanf的一般格式:介绍了常见的格式转换说明符,如%d,%o,%x,%c,%s等等。
函数scanf的格式修饰符:如.n和*等等。
• 使用%c
格式符存在的问题及解决方法:
问题:当使用%c
读取字符时,如果用户输入了多个字符,scanf
只会读取第一个字符,而后续的字符会留在输入缓冲区中,可能导致后续输入处理出现问题。
解决方法:使用getchar()
函数来清除缓冲区中的剩余字符。
另一种方法是使用scanf
的宽度限制来读取一定数量的字符,然后手动处理多余的输入。
问题:当使用printf
输出字符时,如果该字符的ASCII码小于32(控制字符),则可能不会按预期显示。
解决方法:确保输出的字符是可打印字符,或者使用%d
格式符来按ASCII码值输出。在处理输入输出时,始终要注意缓冲区的状态和输入输出函数的行为,以确保程序的健壮性和正确的输出结果。
这一章节的内容为我们后续的计算机学习打下了坚实的基础。
教材学习中的问题和解决过程
问题:在不改变指令格式的情况下,需要添加多少内存单元?
解决方式:AI答:在计算机系统中,指令格式通常决定了指令中操作数的地址或立即值可以表示的内存单元数量。例如,在一些简单的处理器架构中,如果指令格式是固定的,那么指令中可以直接指定的内存地址范围可能受限于指令中的地址字段的大小。如果我们要讨论“不改变指令格式的情况下需要添加多少内存单元”,我们需要知道当前的指令格式能够支持的内存地址范围,以及我们想要支持的新范围是多少。通常,这涉及到以下几个步骤:
• 确定当前的内存寻址能力:查看当前指令格式中地址字段的大小,确定它能够寻址的内存范围。
• 确定所需的内存寻址能力:了解程序需要的内存大小,确定新的内存寻址范围。
• 计算差异:比较新旧内存寻址范围的差异,计算需要增加的地址空间大小。
• 扩展指令集:如果当前的指令格式无法满足新的内存寻址需求,可能需要设计新的指令格式或者扩展现有的指令集。
• 添加内存单元:根据计算出的差异,添加相应数量的内存单元。
基于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/80 | |
第五周 | 300/1400 | 1/6 | 22/102 |