2022-2023-1 20221401 《计算机基础与程序设计》第十二周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP |
---|---|
这个作业要求在哪里 | <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12 |
这个作业的目标 | 学习教材,完成作业 |
作业正文 | https://www.cnblogs.com/wangningwangning/p/16909509.html |
教材学习内容总结
学习了《计算机科学概论》第17章的部分内容,在学习过计算机的先进功能后更加深入地明白了硬件和软件带来的以及计算机本身的限制,了解了问题复杂度的概念。
学习了《C语言程序设计》第12章的部分内容,理解了结构体产生的初衷和原因,了解了结构体的原理和使用方法,知道了结构体需要先定义类型再定义变量名,能够自己定义一些简单的结构体并用结构体解决一些简单的问题。
教材学习中的问题和解决过程
- 问题1:停机问题是如何解决的呢?
- 问题1解决过程:上网搜索相关内容后得知:停机问题(英语:halting problem)是逻辑数学中可计算性理论的一个问题。通俗地说,停机问题就是判断任意一个程序是否能在有限的时间之内结束运行的问题。该问题等价于如下的判定问题:是否存在一个程序P,对于任意输入的程序w,能够判断w会在有限时间内结束或者死循环。
通俗的说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。如果这个问题可以在有限的时间之内解决,则有一个程序判断其本身是否会停机并做出相反的行为,这时候显然不管停机问题的结果是什么都不会符合要求。所以这是一个不可解的问题。
假设停机问题有解,即:存在过程H(P, I)可以判断对于程序P在输入I的情况下是否可停机。假设P在输入I时可停机,H输出“停机”,反之输出“死循环”,即可导出矛盾:
显然,程序本身也是一种数据,因此它可以作为输入(例如Pascal的编译器本身就可以用Pascal所写成,所以程序在自己身上运行自己也是合理的),故H应该可以判定当将P作为P的输入时,P是否会停机。然后我们定义一个过程U(P),其流程如下:
U(P)调用H(P, P):
- 如果H(P, P)进入死循环,U(P)就停机。
- 如果H(P, P)停机,U(P)就进入死循环。
- 也就是说,U(P)做的事情就是做出与H(P, P)的输出相反的动作。
伪代码及其注释表示如下:
int H(procedure,Input); // 这里的H函数有两种返回值,死循环(1) 或 停机(0)
int U(P)
{
if (H(P,P) == 1){ // 如果H死循环
return 0; // 此时会停机
}
else{ // 否则
while(1){} // 此时会死循环
}
}
上面把H(P, P)包装在U(P)内,也就是用U()来模拟H()。H()的输出可能出现两种状况:
假设H(U, U)输出停机 -> U(U)进入死循环:由定义知二者矛盾(与过程H的定义相矛盾,因为照H自己本来的定义,H(U, U)的结果应该和U(U)相同,但U()的定义却是永远输出与H()相反的结果。)
假设H(U, U)输出死循环 -> U(U)停机:两者一样矛盾。
因此,H不是总能给出正确答案,故前述的假设不成立,不存在解决停机问题的方法。
停机问题本质是一高阶逻辑的不自恰性和不完备性。类似的命题有理发师悖论、全能悖论等。
- 问题2:现代计算机是否有速度限制?
- 问题2解决过程:上网搜索相关内容后得知:任何计算机都有限制。科学家发现,光电子器件的能力受到量子物理学本身的限制。
众所周知,没有什么东西比光更快,对于使用光来控制电荷运动的电子系统来说,这一教条也是如此。这种系统被称为光电系统,在数据传输方面是最快的。而在一项新的研究中,来自普朗克量子光学研究所的科学家们确定了这种系统可以达到的速度上限。
为此,作者利用半导体材料和激光器进行了实验。在这些过程中,半导体受到超短激光脉冲的轰击,将材料中的电子转化为更高的能量状态,将它们从原子中 "击出",并允许它们在结构内自由移动。然后,第二个稍长的激光脉冲将粒子送往某个方向,从而产生了电流。
使用这种技术以及复杂的计算机模拟,该团队用越来越短的激光脉冲击中半导体。在某个时候,这个过程开始与海森堡的不确定性原理——量子定律相冲突,根据量子定律,不可能同样准确地测量粒子的动量及其在特定时间在空间中的位置。
现代设备的最大速度限制
在这种情况下,使用较短的激光脉冲意味着观察者可以准确地知道电子何时接受能量,但这种能量的数量仍然不确定。而这对电子设备来说是一个严重的问题,因为不知道电子的确切能量就不可能控制它们。
考虑到这一点,该小组计算出了光电系统速度的绝对上限——1 petahertz,即100万千赫兹(1015 Hz)。这是一个无法绕过的硬性限制,因为这个障碍已经嵌入了量子物理学的规律之中。
代码调试中的问题和解决过程
- 问题1:
在自己编写字符串连接函数时始终无法输出正确的结果 - 问题1解决过程:在书上找到相关内容后,自习检查我的每一行代码与书上的代码有什么出入,发现以下问题:在传递函数实参时应该传递数组首地址而不应该传指针变量的值;打印字符串时只输入字符串数组首地址即可,无需加入取地址符;记得要在连接后形成的字符串最后加上字符串结束标志‘/0’。
代码托管
上周考试错题总结
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 2/2 | 10/10 | |
第二周 | 50/100 | 2/4 | 10/10 | |
第三周 | 50/100 | 1/5 | 10/10 | |
第四周 | 50/100 | 1/6 | 10/10 | |
第五周 | 50/100 | 2/8 | 10/10 | 在完成XOR加密作业时有自己的想法并且通过自学相关知识成功付诸实践 |
第六周 | 50/100 | 1/9 | 10/10 | |
第七周 | 50/100 | 1/10 | 10/10 | |
第八周 | 50/100 | 1/11 | 10/10 | 在n个人报数问题中提高了自己自我检查错误的能力,完善了自己思维上的漏洞。 |
第九周 | 50/100 | 1/12 | 10/10 | |
第十周 | 50/100 | 1/13 | 10/10 | |
第十一周 | 50/100 | 1/14 | 10/10 | |
第十二周 | 250/100 | 1/15 | 10/10 |