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

发布时间 2023-11-15 20:09:26作者: 20231329向鲸凝

作业信息

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08
这个作业的目标 计算机科学概论第9章 并完成云班课测试《C语言程序设计》第7章并完成云班课测试
作业正文 https://www.cnblogs.com/xjn123/p/17834374.html

教材学习内容总结

计算机科学概论第九章
9.1面向对象
面向对象设计的底层概念是类和对象
设计方法分为:集体讨论,过滤,场景,责任算法
9.2翻译过程
采用一些软件工具:编译器,解释器
9.3程序设计语言的范例
有两种主要的范例,分别是命令和声明
命令式的范例具有顺序执行指令的特征,变量的使用代表了内存地址,而使用赋值语句则改变这些变量的值
声明式范例
声明式范型是一个描述结果的模型,但是完成结果的过程的过程则不被描述。在这种范型中有两种基本模型:函数式和逻辑式
9.4高级程序设计语言的功能性
布尔表达式:是一个标识符序列,标识符之间由相容的运算符分割,求得的值是true or false
数据归类
四种数据类型:整数,实数,字符和布尔型
伪代码提供了三种方法来改变控制算法的流程:重复,选择和子程序
9.5面向对象语言的功能性
封装:把数据和动作结合在一起 提供分装结构的叫做类
继承:允许一个类继承另一个类的属性和行为的语言特性
多态:语言具备的消除同名操作的歧义的能力

C语言程序与设计第7章
1.函数的定义
函数的分类:标准库函数 printf() scanf() ; 自定义函数
2.函数调用
ret = Fact(m);//调用函数Fact(),并将函数的返回值存入ret
函数的返回值只能有一个
3.函数原型
long Fact(int n);函数原型声明
4.函数的递归调用和递归函数
result = Fact(n)调用递归函Fact()计算n
if (n==1) return 1;
else if (n ==2) return 1;
else return (Fib(n-1)+Fib(n-2))
5.变量的作用域和生存期
不被任何语句块内定义的变量 称为全局变量
int count (全局变量count用于累计递归函数被调用的次数,自动初始化为0)
变量的存储类型一般声明方式如:存储类型,数据类型,变量名表
四种变量
自动变量:auto 类型名 变量名;
静态变量:static类型名 变量名;
外部变量:extern 类型名 变量名;
寄存器变量:register类型名 变量名;

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

问题1
在了解了四种变量后 我不太清楚外部变量与寄存器变量在语句中具体位置以及区分使用哪种变量
外部变量作用域:外部变量通常在整个程序中都是可见的,即它们可以在多个文件中使用。它们的作用域通常是全局的,可以在程序的任何地方访问
// 例子:外部变量的声明和定义
int globalVar; // 外部变量的声明

int main() {
globalVar = 10; // 外部变量的使用
return 0;
}
寄存器变量作用域:寄存器变量的作用域与普通变量相似,通常是在声明它们的块中可见。它们不能被声明为全局变量。
// 例子:寄存器变量的声明
int main() {
register int x; // 寄存器变量的声明
x = 5; // 寄存器变量的使用
return 0;
}
问题2 在编写计算组合数的程序代码,我不太理解、unsigned long Fact(unsigned int n)的含义
unsigned long Fact(unsigned int n) 是一个函数的声明,表示这个函数的返回类型是 unsigned long,而它接受一个参数 n,类型为 unsigned int。

问题3 递归函数具体使用范围于使用方法
分而治之问题;树形结构问题;数学归纳法问题
终止条件: 递归函数必须有一个终止条件,以确保递归的终止。这通常是在基本情况下返回一个明确的值。

效率考虑: 在使用递归时需要注意效率问题,因为递归可能导致栈溢出,而且某些情况下使用循环可能更高效
递归计算阶乘的例子
def factorial(n):
# 基本情况
if n == 0 or n == 1:
return 1
# 递归调用
return n * factorial(n - 1)

基于AI的学习

1.我在学c语言程序与设计函数相关问题的知识点,请你以苏格拉底的方式对我进行提问,一次一个问题
AI:你能简要解释一下在 C 语言中什么是函数吗?
构成代码的基本结构
AI:在 C 语言中,一个程序的基本结构由哪些部分构成?
函数 变量 运算语句(if for while)
AI:在 C 语言中,函数的基本结构是怎样的?你能够描述一下函数的声明和定义的区别吗?
函数的声明和定义在 C 语言中有明显的区别。声明提供了函数的原型,包括函数名、参数类型和返回类型,而定义则提供了实际的函数体,包含了实际的代码

2.我在学数据类型的知识点,请你以苏格拉底的方式对我进行提问,一次一个问题
AI:对于编程语言中的基本数据类型,你是否了解它们的概念以及它们是如何存储和操作的?如果是,请简要解释。
整数 实数 字符和布尔型
应用整数的是算数运算符和关系运算符,应用实数的是特定精度的数的范围 字符是首先要在字符集里表示这个字符 然后再查找关系 布尔什只有true false
AI:在编程中,为什么需要不同的数据类型?你认为使用不同的数据类型有什么优势或者应用场景?
你的理解是什么?
内存管理
操作和性能优化
数据结构
错误检测和类型安全
代码可读性和维护性

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

1.在进行三角形面积计算时的公式不太清楚
海伦公式: double s = (a + b + c) / 2;
double area = sqrt(s * (s - a) * (s - b) * (s - c));
2.求平方根函数及四舍五入时代码不对
要转型后加0.5(四舍五入
float b = (float)sqrt(a);
float c =(int)(b+0.5);)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

参考资料