教材学习内容总结
本周学习了如何描述计算机问题求解的过程,并通过此学习到解决生活中其他问题的一些技巧与方法:寻找熟悉的情况(直接调用)、分治法(devide and conquer)、自顶向下的方法(将问题一层层具体化)等;此外,了解了算法的定义,明确了明确指令的定义(计算机能够直接执行的语句),同时还学习了集中常见算法:埃拉托色尼筛法(素数判定)、辗转相除法、秦九韶算法(多项式快速计算);并且,还学习了选择与循环语句(控制结构),明确数组(同构,位置访问)和记录(异构,名字访问)的区别;了解到搜索、排序算法中几种常见算法:顺序检索、二分检索、选择排序、冒泡排序、插入排序、快排;并通过快排、阶乘的例子较深入地理解了递归;了解到信息隐蔽以及抽象在生活中的重要作用。
除《概论》教材外,本周复习了《自学是门手艺》第三章到第四章,第三遍看的感觉果然不一样,感觉更有重点,也注意到了更多细节(如元组、列表、字典等的具体用法),并进一步了解到官方文档的重要性。
本周C语言方面学习字符串以及数组。
教材学习中的问题和解决过程
教材上伪代码的使用极其繁琐、复杂,使用时甚至感到比写源代码困难。通过上网搜集资料,知道了伪代码其实不需要严格格式要求,只要自己能够清晰简洁地表述解决问题过成就行。
代码调试中的问题和解决过程
在完成蛇形填数(二维数组初探)这一程序时发现边上一圈输出的值全为零。进过调试发现我边界情况处理忽视了:每次移动都需判断是否越界(即x+1<n,y+1<n)。
代码链接
https://github.com/20191218TangQiheng/TangQiheng/blob/master/10000%E4%BB%A5%E5%86%85%E7%9A%84%E7%B4%A0%E6%95%B0
https://github.com/20191218TangQiheng/TangQiheng/blob/master/%E5%80%92%E5%BA%8F%E8%BE%93%E5%87%BA%E4%BB%BB%E6%84%8F%E4%BD%8D%E6%95%B0%E6%95%B0%E5%AD%97
https://github.com/20191218TangQiheng/TangQiheng/blob/master/%E5%8F%8D%E5%90%91%E7%9B%B4%E8%A7%92%E4%B8%89%E8%A7%92%E5%BD%A2
https://github.com/20191218TangQiheng/TangQiheng/blob/master/%E5%B9%B3%E8%A1%8C%E5%9B%9B%E8%BE%B9%E5%BD%A2
https://github.com/20191218TangQiheng/TangQiheng/blob/master/%E8%BE%93%E5%87%BA%E6%AD%A3%E8%8F%B1%E5%BD%A2
https://github.com/20191218TangQiheng/TangQiheng/blob/master/%E9%87%91%E5%AD%97%E5%A1%94
学习进度条
30/139hour