这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05 |
这个作业的目标 | Pep/9虚拟机、机器语言与汇编语言、算法与伪代码、测试:黑盒, 白盒 |
作业正文 | https://www.cnblogs.com/sztheihei/p/18509133 |
教材学习内容总结
第6章 低级程序语言与伪代码
- Pep/9的基本特性:
内存单元:65536字节存储空间,从0到65535编号。
字节组成:每个字节由8位组成。
字长:16位。
中央处理器(CPU)组件:
程序计数器(PC):存储下一条指令地址。
指令寄存器(IR):存储正在执行的指令副本。
累加器(A):存储数据和运算结果。
存储器地址:从0000到FFFF,包括FFFE。 - 二进制和十六进制数:
一个字节最大表示的十进制数是255(二进制11111111,十六进制FF)。
一个字(16位)最大表示的十进制数是65535(二进制1111111111111111,十六进制FFFF)。
有符号数范围:-32767到+32767。 - 指令格式:
指令由8位的指令说明符和可选的16位操作数说明符组成。
指令长度:1字节(无操作数说明符)或3字节(有操作数说明符)。
指令说明符包含操作代码(opcode)和寻址模式说明符。
操作代码长度:4位。
寻址模式说明符:3位,决定如何解析操作数。
立即寻址(i):操作数直接在操作数说明符中。
直接寻址(d):操作数说明符中存储操作数的内存地址。 - 示例指令:
一元指令:没有操作数说明符,长度为1字节。
0000 :停止执行。
1100 :将字(两字节)载入寄存器A中。
1101 :将字节载入寄存器A中。
1110 :存储寄存器A中的字。
1111 :存储寄存器A中的字节。
0110 :将操作数加到寄存器A中。
1000 :从寄存器A减去操作数。 - 输入/输出 (I/O) 操作:
Pep/9系统模拟键盘输入和屏幕输出。
输入设备地址:FC15。
输出设备地址:FC16。
使用ASCII字符集表示字符。
通过累加器进行字符的输入和输出操作。 - Pep/9模拟器:
模拟器允许模拟Pep/9程序的执行。
程序代码以十六进制格式输入,并以'zz'结束。 - 程序实例:
显示了如何使用Pep/9机器语言指令在屏幕上显示字符。
使用了载入、存储和停止指令。
程序代码以二进制和十六进制表示。
第4章 键盘输入和屏幕输出
常用转义字符:
转义字符 含义 转义字符 含义
\n 换行(Newline) \a 响铃报警提示音(Alert or Bell)
\r 回车(不换行)(Carriage Return) " 双引号(Double Quotation Mark)
\0 空字符(Null),通常用作字符串结束标志 ' 单引号(Single Quotation Mark)
\t 水平制表(Horizontal Tabulation) \ 反斜线(Backslash)
\v 垂直制表(Vertical Tabulation) ? 问号(Question Mark)
\b 退格(Backspace) \f 走纸换页(Form Feed)
\ddd 1到3位八进制ASCII码值所代表的字符
\xhh 1到2位十六进制ASCII码值所代表的字符
C语言中使用 %c 格式符输入字符时可能遇到的问题:在C语言中, scanf 函数在读取输入时,会将换行符留在输入缓冲区中。如果后续使用 %c 读取字符,这个换行符可能会被错误地读取为字符,导致程序逻辑错误。
解决方法:
方法1:通过 getchar() 显式读取并丢弃换行符,确保后续的 %c 读取不会读取到错误的字符。
方法2:在 %c 格式符前加一个空格,这样 scanf 会自动忽略任何空白字符(包括空格、制表符和换行符),直到遇到非空白字符才停止读取,从而避免读取到换行符。
这两种方法都可以有效地解决由于缓冲区中的换行符导致的输入问题,确保程序能够正确地读取用户输入的字符。
教问题1:如何将算法转换为伪代码?
AI:
1.理解算法:
在开始之前,确保你完全理解算法的逻辑流程和目标。
确定输入和输出:
确定算法的输入(即算法开始时需要的数据)和预期的输出(即算法完成后应产生或返回的数据)。
2.描述操作:
用简单的英语描述每个步骤的操作。例如,“计算总和”,“检查是否满足条件”等。
使用伪代码关键字:
引入伪代码关键字,如 if, else, while, for, function, return 等,来表示不同的控制结构。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 40 | 4 | 6 | |
第四周 | 80 | 5 | 20 | |
参考资料 | ||||
《计算机科学概论(第七版)》,机械工业出版社 | ||||
《C语言程序设计(第五版)》,高等教育出版社 |