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

发布时间 2023-11-18 13:49:21作者: 20231320叶译婷

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

作业信息

这个作业属于哪个课程 <班级的链接>(2023-2024-1 计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(2022-2023-1计算机基础与程序设计第八周作业)
这个作业的目标 <自学《计算机基础与程序设计》第9章并完成云班课作业 、自学《C语言程序设计》第7章并完成云课班作业>
作业正文 作业正文

教材学习内容总结

《计算机基础与程序设计》
本章首先介绍了关于对象,对象类,域,方法等定义。体现出一种归类的思想。而对问题的分解过程具有四个阶段:集体讨论(生成解决某个特定问题要用到的候选类列表),过滤(回顾集体讨论阶段确定的类,观察是否有可以合并的或者缺少的),场景(给每个类分配任务---责任,其中责任有知识和行为两种),责任算法(为责任编写算法)。翻译的过程需要用到编译器、解释器。程序设计语言的范型有:命令式范型(面向过程型,面向对象型),申明式范型。高级程序设计语言的功能性:布尔表达式、数据归类,输入输出结构等。面向对象语言的功能性:封装,类,继承,多态等。两者的区别在于面向过程的版本使子程序可以操作列表,而面向对象的版本通过封装实现对用户的隐藏。
《C语言程序设计》
本章主要讲了函数。函数有利于信息的隐藏。函数分为标准库函数,自定义函数,而我们主要研究的的是自定义函数。首先将函数名提前进行调用,函数原型中注意形参和实参,同时注意函数的封装和防御性程序设计。程序设计的原则有:规模小,功能单一,只有一个入口一个出口,清楚定义函数行为,在入口处对函数有效性进行检查,若有返回值则每个分支均需有返回值。还有递归的使用,变量的范围,,变量的生存周期(自动变量、静态变量、外部变量、寄存器变量)。而程序设计遵循从顶向下的顺序逐步求精。

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

问题1:在《计算机基础与程序设计》中对象、对象域、域等名词不了解
解决:我在网上询问了ChatGPT,了解到对象是具体的东西,对象域是一组相似的对象,而类则是定义了这组对象应该有的共同特征和行为的模板。
问题2:在自定义函数的调用方面还存在问题
解决:可以在编程中先写自定义函数,在写main函数,是自定义函数可以被直接调用

基于AI的学习

q
我最近在学习C语言中关于自定义函数的知识点,请你用苏格拉底的方式向我提问,一次一个问题,我回答后给出你的评价并询问下一问题
AI
当你在学习C语言中的自定义函数时,让我们从基础开始。首先,你能告诉我在C语言中,为什么我们需要使用自定义函数而不仅仅使用主函数(main function)中的代码吗?
q
使用自定义函数可以使代码更加简洁,避免不必要的重复,提高运算速度,便于之后使用
AI
很好的回答!确实,自定义函数有助于提高代码的模块化和可维护性。现在,让我们深入了解一下自定义函数的结构。在C语言中,一个基本的函数结构包括哪些要素?
q
输出值,输入值,函数头,函数主体
AI
你的回答很接近了!在C语言中,函数的基本结构包括函数头、函数名、返回类型、参数列表、函数体。下一步,我们来谈谈参数。在函数中,参数有哪些不同的类型,它们各自有什么特点?
q
有形参和实参,有整数型,浮点型,字符型
AI
你对参数有了很好的了解。确实,参数分为形参和实参,而且它们可以是整数型、浮点型、字符型等不同类型。接下来,我们来探讨一下函数的返回值。在C语言中,函数可以返回什么类型的值,而且返回值有什么作用呢?
q
可以将返回值返回到main函数中。类型有整数型、浮点型
AI
你理解得很正确!在C语言中,函数可以返回整数型、浮点型等不同类型的值,而返回值可以在调用函数的地方使用,例如可以将其传递给其他变量或在表达式中使用。下一个问题,让我们考虑函数的声明和定义。在C语言中,声明和定义函数有何区别?在C语言中,声明和定义函数有着明确的区别。声明用于向编译器提供关于函数名称、返回类型和参数类型的信息,而不提供函数的实际实现。定义则包括函数的实际实现,即函数的主体。声明通常在头文件中,而定义则在源文件中。

现在,让我们转向函数的参数传递方式。在C语言中,参数传递可以通过值传递和引用传递。你能详细说明这两种传递方式的区别以及它们各自的优缺点吗?

q
我不太清楚,你的答案呢?
AI
当然,让我为你解释一下。

值传递(Call by Value):

特点: 在值传递中,函数接收的是实际参数的值。在函数内部,对参数的任何修改都不会影响到实际参数。
优点: 简单,易于理解和实现。
缺点: 如果传递的数据量较大,可能会影响性能。因为会复制实际参数的值,占用额外的内存。
引用传递(Call by Reference):

特点: 在引用传递中,函数接收的是实际参数的地址(引用),这意味着在函数内部对参数的修改会影响到实际参数。
优点: 节省内存,能够有效地传递大量的数据。
缺点: 相对复杂,可能引入一些概念上的困惑。
在C语言中,实际上,C语言只支持值传递。但是通过指针,可以模拟引用传递的效果。通过传递指向变量的指针,函数可以修改指针所指向的变量的值。这就使得我们能够在函数内部实现对实际参数的修改。

需要注意的是,在实践中,根据情况选择合适的传递方式。如果需要修改实际参数的值,可以通过指针来模拟引用传递。
q
你觉得我掌握这个知识点了吗?
AI
你已经对函数的基本概念、结构,以及参数传递方式有了相当不错的了解。你知道函数包括函数头、函数名、返回类型、参数列表和函数体。你也了解了值传递和引用传递的区别,以及在C语言中如何通过指针来模拟引用传递。

如果你有进一步的问题或者想要深入某个方面的了解,随时告诉我,我会尽力提供帮助。同时,实践和编写代码是加深理解的好方法,所以如果有机会,尽量多写一些函数相关的代码吧!

上周错题改错

问题1:
What is the minimum number of nodes in a binary tree with 3 levels?
具有 3 个级别的二叉树中的最小节点数有7种

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/2 20/20 通过计算机概论的略读,对计算机有了一个更准确的初步了解
第二周 5/10 2/4 5/25 对计算机和编程有了基础的专业了解
第三周 5/10 1/4 7 /32 对C语言有了初步的了解,编程开始入门
第四周 50/50 2/4 7/38 学会使用编程工具,逻辑门,分支等重要编程基础
第五周 40/120 2/4 6/20 学会一些编程语言,对codeblocks的使用有了新的学习
第六周 400/520 1/5 8/28 学会了关于分支等的一些基础编程语言,同时也对计算机的自学有的更深的体会,能够自己解决部分不懂的问题
第七周 350/870 2/7 7/35 学会了关于自定义函数的使用,以及代码的编写
第八周 350/1220 1/8 8/41 学习了数组的概念,同时也了解到一些自己的不足如对Python不了解,无法快速完成云班课任务,本周还学习了多维数组的概念