教材学习内容总结
一、Pep/9 虚拟机
模拟计算机系统环境,含处理器、内存、寄存器等。
处理器有 ALU 和控制单元。
内存存储数据和指令,按地址访问。
寄存器是高速存储单元,如累加器、程序计数器等。
指令集包括数据传输、算术运算、逻辑运算、控制转移指令等,通过编程实践实现功能。
二、机器语言与汇编语言
(一)机器语言
计算机直接执行的二进制代码,执行效率高但可读性差。
(二)汇编语言
用助记符代替机器语言,与机器语言对应,可读性和可编写性相对提高,仍与硬件相关,执行效率高。
如实现两数相加并输出的汇编程序示例。
(三)关系
汇编语言是机器语言的符号化,都与硬件紧密相关,汇编语言在特定场景有优势。
三、算法与伪代码
(一)算法
解决问题的明确步骤集合,具有穷性、确定性、可行性、输入输出特点,是编程基础,有多种表示方法。
(二)伪代码
非正式、类似编程语言,用于描述算法逻辑,简洁易懂、灵活、具过渡性,如冒泡排序伪代码示例。
(三)算法设计与分析
包括问题分析、算法选择、定义数据结构、设计流程、验证优化等步骤。
分析包括时间复杂度、空间复杂度和正确性证明。
四、测试
(一)重要性
发现软件缺陷,确保质量和可靠性。
(二)黑盒测试
看作黑盒子,关注外部功能,依据需求规格说明书设计输入和测试用例,观察输出是否符合预期。
(三)白盒测试
了解内部结构和代码,基于代码逻辑设计测试用例,检查代码覆盖情况,如语句覆盖、分支覆盖等。
五、分支选择结构
(一)if 语句
基本形式
单分支:if(表达式) {语句},表达式为真执行语句。
双分支:if(表达式) {语句1} else {语句2},表达式为真执行语句 1,为假执行语句 2。
嵌套 if 语句
可在 if 中嵌套 if,用于复杂条件判断。
(二)switch 语句
基本形式
switch(表达式) { case 常量表达式1: 语句1; break;... default: 语句n; break; }
计算表达式值,与 case 后常量表达式比较,相等则执行对应语句,遇 break 跳出。
注意事项
表达式为整型或字符型。
case 后是常量或常量表达式。
一般 case 后用 break,否则继续执行下一个 case。
六、循环结构
(一)while 循环
基本形式
while(表达式) {循环体语句;}
先判断表达式,为真执行循环体,再判断,直到为假跳出。
特点
先判断后执行,可能一次不执行循环体。
(二)do-while 循环
基本形式
do {循环体语句;} while(表达式);
先执行循环体,再判断表达式,为真继续,为假跳出。
特点
至少执行一次循环体。
(三)for 循环
基本形式
for(初始化表达式; 条件表达式; 迭代表达式) {循环体语句;}
先执行初始化表达式,再判断条件表达式,为真执行循环体和迭代表达式,再判断条件,直到为假跳出。
特点
结构清晰,常用于已知循环次数的情况。
(四)循环控制语句
break 语句
用于跳出当前循环,提前结束循环。
continue 语句
用于结束本次循环,直接进入下一次循环条件的判断。
教材学习中的问题和解决过程(先问 AI)
- 问题1:程序运行出错且错误信息不明确时,怎样有效调试?
- 问题1解决方案:检查程序逻辑,单步调试。查内存使用,用工具检测问题。看日志和调试输出,与他人交流。
- 问题2:汇编语言中怎样实现复杂算法和数据结构?
- 问题2解决方案:定义合适数据结构表示节点。编写代码实现操作和算法逻辑,参考高级语言后用汇编实现。利用汇编特性优化算法效率。
- ...
代码调试中的问题和解决过程
- 问题1:C语言如何输出双引号?
- 问题1解决方案:1.使用转义字符 "";2.使用字符常量
- 问题2:C语言如何开平方?
- 问题2解决方案:可以使用<math.h>头文件中的sqrt函数来计算一个数的平方根
- 问题3:C语言如何生成随机数?
- 问题3解决方案:可以使用<stdlib.h>头文件中的rand()函数来生成随机数。
1.基本的随机数生成(使用rand()函数)
函数原型:int rand(void);
这个函数会返回一个范围在 0 到RAND_MAX(RAND_MAX是<stdlib.h>中定义的一个常量,其值至少为 32767)之间的伪随机整数。例如:
不过,每次运行程序,rand()函数生成的随机数序列都是一样的。这是因为rand()函数是基于一个种子(seed)来生成随机数序列的,默认种子是固定的。
2.设置随机数种子(使用srand()函数)
函数原型:void srand(unsigned int seed);
为了得到不同的随机数序列,可以使用srand()函数来设置种子。通常可以使用当前时间作为种子,这样每次运行程序时,由于时间不同,种子就不同,生成的随机数序列也就不同。需要包含<time.h>头文件来获取当前时间。例如:srand(time(NULL))
学习进度条
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
5000行 |
30篇 |
400小时 |
|
第一周 |
200/200 |
2/2 |
20/20 |
|
第二周 |
300/500 |
0/2 |
18/38 |
|
第三周 |
500/1000 |
1/3 |
22/60 |
|
第四周 |
300/1300 |
1/4 |
30/90 |
|
第五周 |
400/1400 |
1/5 |
30/90 |
|