2023-2024-20231317《计算机程序与设计》第八周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>(如2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>(如2022-2023-1计算机基础与程序设计第八周作业)
这个作业的目标 <《计算机程序概论九张》《C语言程序设计第七章》>
作业正文 https://www.cnblogs.com/TerMo/p/17841762.html 本博客链接

教材学习内容总结

1.在编辑程序时,往往会出现一些问题利用现有的函数很难进行编程,所以这就必须学会自己定义函数。
2.向函数传递值和从函数返回值。
3.迭代算法和递归算法。

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

1.迭代算法和递归算法教材给了一个数据阶乘的例子。阅读代码是可以看懂的。其实函数它本身是一个模块的内容,但是它的作用很大。而且它在被使用时往往会涉及到其他内容,比如循环、数组和指针。因此,学要熟练掌握函数的运用。接下来,我将从青蛙蹦极中寻找一个涉及到自定义函数的程序实际操作一遍,并加以说明:

在这个程序编辑要求中,就要用到定义int isprime(int n),这一个函数来满足素数计算的要求。

  • 如果不满足素数输入要求,我们就令其return 0;当然我们这个情况分两种,一个本身"<=1"的数,就不满足素数的要求;第二个是“>=1"的数,如果能被任意一个大于等于2的数整除,也不满足素数要求。
  • 当输入的数满足素数要求时,我们return 1。这表示如果满足素数要求,函数能执行到return 1,返回值为1,表示输入的数为素数。
以上是介绍定义函数段的代码。下面是主函数main
  • 后面主函数的内容就涉及到了循环语句等等一些。main前面的也涉及到了控制语句、嵌套等。主函数内调用定义的函数isprime,执行程序。这点就不细说了。大家会发现,在int i,int sum=0和scanf(...)之间,我没有提示用户输入的数最后以-1结尾,也就是printf(...)。我这么做是因为这个句子往往涉及到很长一段英文提示,我为了省事,就不写了。这个仅供参考,不做建议。

  • 问题1:有时函数定义在main()前面,有时在后面,这两者之间的区别是什么?各自有什么优点呢?

  • 问题1解决方案:在C语言中,函数可以在main()函数前面或后面进行定义。这两种方式的区别在于函数的可见性和可读性。

    当函数定义在main()函数前面时,main()函数可以直接调用这些函数,因为它们已经被编译器识别和存储。这样可以减少函数声明的工作量,提高代码的可读性。

    而当函数定义在main()函数后面时,需要在main()函数之前进行函数声明,以便编译器能够识别函数的存在。这样做的好处是可以更清晰地了解main()函数中调用的函数是如何实现的,同时也可以更好地控制函数的可见性,使得代码更加模块化和易于维护。

    总的来说,将函数定义放在main()函数前面可以提高代码的可读性和简洁性,而将函数定义放在main()函数后面可以更好地控制函数的可见性和模块化。在实际编程中,可以根据具体情况选择合适的方式来定义函数。

  • 问题2:函数的返回值只能有一个,函数中的return语句可以有多个,但不表示函数可以有多个返回值,这是为什么?为什么函数不能有多个返回值?

  • 问题2解决方案:函数不能有多个返回值的原因在于函数的设计初衷和语言的规范。函数的目的是为了完成特定的任务并返回结果,因此函数的返回值应该是一个明确的、单一的结果。如果一个函数需要返回多个值,可以使用结构体或指针等数据类型来实现类似的功能,将多个值打包成一个返回值。

    另外,在C语言中,函数的返回值只能是一个特定的数据类型,多个返回值会导致语法不清晰和不规范。因此,为了保持代码的简洁性和可读性,C语言规定函数只能有一个返回值。

基于AI的学习

  • me:《计算机科学概论》中第九章简述了面向对象设计与高级程序设计语言,而功能设计与面向对象设计的区别是什么?
  • GPT3.5:功能设计和面向对象设计是两种不同的设计方法。

功能设计是一种以功能为中心的设计方法,它将系统分解为功能模块,并通过模块之间的调用来实现系统的功能。在功能设计中,重点是系统的功能和模块之间的关系。

而面向对象设计是一种以对象为中心的设计方法,它将系统分解为对象,并通过对象之间的交互来实现系统的功能。在面向对象设计中,重点是对象的属性和行为,以及对象之间的关系。

因此,功能设计和面向对象设计的区别在于设计的重点不同。功能设计注重系统的功能和模块之间的关系,而面向对象设计注重对象的属性和行为,以及对象之间的关系。面向对象设计更加灵活和可扩展,能更好地应对系统的变化和复杂性。

  • me:那将系统分解后不能理解为小模块设计吗?
    -GPT3.5:在面向对象设计中,对象之间的联系通常是通过对象之间的交互来实现的,而不是通过函数调用。对象可以通过消息传递或者直接访问其他对象的属性和方法来进行交互,而不需要像功能设计中那样通过函数调用来建立联系。

虽然在面向对象设计中也可以使用函数来实现对象之间的交互,但更常见的是通过对象之间的消息传递和直接访问来实现。这种方式更符合面向对象设计的思想,使得系统更加灵活和可扩展。

  • me:也就是说,面向对象设计拆分后,不需要用函数建立联系对吗?
  • GPT3.5:在面向对象设计中,对象之间的联系通常是通过对象之间的交互来实现的,而不是通过函数调用。对象可以通过消息传递或者直接访问其他对象的属性和方法来进行交互,而不需要像功能设计中那样通过函数调用来建立联系。

虽然在面向对象设计中也可以使用函数来实现对象之间的交互,但更常见的是通过对象之间的消息传递和直接访问来实现。这种方式更符合面向对象设计的思想,使得系统更加灵活和可扩展。

posted @ 2023-11-19 13:21  20231317莫善燎  阅读(11)  评论(0编辑  收藏  举报