2023-2024-1 20231402《计算机基础与程序设计》第六周学习总结

2023-2024-1 20231402《计算机基础与程序设计》第六周学习总结

作业信息

这个作业属于哪个课程 2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 2023-2024-1计算机基础与程序设计第6周作业
这个作业的目标 自学计算机科学概论第7章《C语言程序设计》第5章
作业正文 https://www.cnblogs.com/lsh0815/p/17804156.html

教材学习内容总结

《计算机科学概论》

  • 主要用伪代码介绍了算法,包括有简单变量的算法,复杂变量,搜索算法和排序,递归算法。回顾了信息隐蔽和抽象,从这里我才真正理解什么是信息隐蔽,学习具体实例对理解概念很有帮助。
    《C语言程序设计》
    这一章也是在介绍算法,不过是用流程图和C语言。

教材学习中的问题和解决过程

  • 问题1:除了顺序搜索和二分检索还有其他搜索方法吗,二分检索类似数学上的二分法,但是字母不像数字,二分检索是怎样比较项目的大小呢?
  • 问题1解决方案:
    除了顺序搜索和二分搜索,还有其他搜索方法,其中一种较常见的是哈希表(Hash Table)搜索。哈希表使用散列函数将数据映射到一个具体的位置,然后可以在常数时间内查找数据。它适用于快速查找和插入数据的场景,但不适用于有序数据的检索,因为数据在哈希表中没有明确的顺序。
    对于二分搜索,您提到它类似于数学上的二分法,但如何比较项目的大小取决于项目的数据类型。对于数字,比较大小是直接的,可以使用小于、大于或等于操作符进行比较。但对于非数字类型,比较可能会涉及到定义在这些类型上的特定比较函数或方法。
    对于字母或字符串的二分搜索,通常会使用字典顺序进行比较。字典顺序是一种基于字母表的排序方法,其中字符按照它们在字母表中的顺序进行比较。例如,对于英文字母,字典顺序是'A' < 'B' < 'C' < … < 'Z'。在这种情况下,您可以使用字符串比较函数来确定一个字符串是否在另一个字符串之前、之后或相等。
    一般来说,比较项目大小的方法取决于数据类型和具体的编程语言。在不同的编程语言中,可能会有不同的比较函数或方法来处理不同类型的数据。
  • 问题2:书中提到“永远都不要重复造轮子”,那如何确认自己没有重复呢,重复后有什么后果呢?
  • 问题2解决方案:
    原则上,"永远都不要重复造轮子" 这句话的意思是,在编程和软件开发中,不要浪费时间和资源去重新实现已经存在的功能或工具。通常,这是因为已经有许多开源库、框架和工具可以用来完成常见的任务,而且这些已有的解决方案通常经过了广泛的测试和改进,可以提供高质量和高效的功能。
    然而,有时候重新实现某些功能可能是有道理的,例如:

1.学习目的:如果您是初学者,重新实现一些基本的功能可能有助于您更好地理解原理和算法。这有助于您提高编程技能。
2.特定需求:有时,现有的解决方案可能不完全符合您的特定需求,或者它们可能会引入不必要的复杂性。在这种情况下,重新实现可能更加合理。
3.性能优化:在某些情况下,您可能需要更高性能的解决方案,而不是标准库或通用工具提供的解决方案。在这种情况下,重新实现可以使您更好地控制性能方面的问题。

然而,如果不小心重复造轮子,可能会导致以下问题:

4.浪费时间和资源:重新实现现有功能需要花费时间和精力,这可能是不必要的,尤其是在有更好的解决方案可用时。
5.潜在错误:自己实现功能可能会引入错误,而这些错误可能已经在现有的解决方案中得到修复。这可能导致软件中的漏洞和不稳定性。
6.维护问题:如果您自己实现了某些功能,您需要负责维护它,包括修复错误和进行升级。这可能会增加您的工作量。

因此,在决定是否重新实现某些功能时,应该仔细考虑实际需求,确保没有更好的替代方案可用,以及权衡时间、资源和质量方面的因素。最好的做法是在需要时候考虑开源解决方案,只有在确实需要时才重新实现特定功能。

基于AI的学习











后面的电脑卡了,没截上图。

代码调试中的问题和解决过程

  • 问题1:运行时无论正确错误都输出提示我错误。

  • 解决方法:

            if (c=="+") answer=a+b;
            if (c=="-") answer=a-b;
            if (c=="*") answer =a*b;
            if (c=="/") answer=a/b;

改为:

        	if (c==’+’) answer=a+b;
            if (c==’-’) answer=a-b;
            if (c==’*’) answer =a*b;
            if (c==’/’) answer=a/b;
  • 问题2:修改程序运行输出的正确率错误。

  • 解决方案:
    计算正确题数的一步位置不对,改为:
              {
                  switch (r)
                  {
                  case 1:
                      printf("Very good!\n");
                      break;
                  case 2:
                      printf("Excellent!\n");
                      break;
                  case 3:
                      printf("Nice work!\n");
                      break;
                  case 4:
                      printf("Keep up the good work!\n");
    
                  }
                  right++;
              }
    
    
    

上周考试错题总结

  • Each machine language instruction performs a single complex task, such as sorting a list of numbers.
    正确答案: 错误
    你的作答: 正确
    点错了。每个机器语言指令只能执行简单的任务。

  • The data-coverage testing approach tests the limits of the program’s data.
    正确答案: 正确
    你的作答: 错误
    对数据覆盖测试理解有误。

  • A test case is a document that specifies how a program is to be tested.
    正确答案: 错误
    你的作答: 正确

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 2/2 20/20
第二周 100/100 2/4 40/40
第三周 300/300 6/7 62/60
第四周 500/500 8/9 80/80
第五周 800/800 10/10 100/100
第六周 1200/1200 11/11 120/120
  • 计划学习时间:20小时

  • 实际学习时间:20小时

posted @ 2023-11-01 23:14  20231402刘穗荷  阅读(25)  评论(0编辑  收藏  举报