2022-2023-1 20221304 《计算机基础与程序设计》第八周学习总结
作业信息
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08 |
这个作业的目标 | 自学教材《计算机科学概论》第9章并完成云班课测试,自学教材《C语言程序设计》第7章并完成云班课测试 |
作业正文 | https://www.cnblogs.com/liu-221304-yi-tong/p/16802235.html |
教材学习内容总结
在《计算机科学概论》第9章中,我知道了如何区分功能设计与面向对象设计、如何描述面向对象设计过程中的阶段,学习了运用面向对象设计过程。列出并描述面向对象语言的三要素,给出每种要素的示例。描述翻译过程并区分汇编、编译、解释和执行。命名四种不同的编程范型,并给出每一种的语言特征。定义数据类型和强类型的概念。理解如何在编程语言中实现自顶向下的设计和面向对象的设计。
在《C语言程序设计》第7章中,我学习了函数定义、函数调用、函数原型、函数的参数传递与返回值;递归函数和函数的递归调用;函数封装,函数复用,函数设计的基本原则,程序的健壮性;变量的作用域与存储类型,全局变量、自动变量、静态变量、寄存器变量;“自顶向下、逐步求精”的模块化程序设计方法。
教材学习中的问题和解决过程
- 问题1:什么是面向对象程序设计?
- 问题1解决方案:通过上网查找资料,得知:面向对象程序设计是一种计算机编程架构。面向对象程序设计的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。面向对象程序设计达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。一项由 Deborah J. Armstrong 进行的长达40年之久的计算机着作调查显示出了一系列面向对象程序设计的基本理论。
- 问题2:面向对象的三大特征是什么?
- 问题2解决方案:通过上网查找资料,得知:1、封装。把客观事物封装成抽象的类。并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。2、继承。它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。3、多态性。允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
代码调试中的问题和解决过程
- 问题1:不知道assert()函数是什么用处。
- 问题1解决方案:在CSDN网站上查询得知,assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。
- 问题2:什么是单、双分支条件语句?
- 问题2解决方案:选择结构中根据程序分支的多少可以分为单分支、双分支和多分支;根据关键字的不同可以分为if语句和switch语句。if语句的基本形式包括单分支、双分支和多分支;if语句单分支结构的基本格式为:
if(条件表达式)
{
执行代码块;
}
- 问题3:如何产生1-10之间的随机数?
- 问题3解决方案:通过上网查找资料,得知:rand函数根据种子生成随机值,但是每次程序运行种子是固定的,如果只使用它实际上返回的是伪随机整数。所以在调用rand之前,要先使用srand函数为伪随机数发生器设定种子。要想随机值够随机的话,我们还需要一个随机种子。通常我们使用时间作为随机数生成的种子,因为每次程序运行时间不相同,所以生成的随机数也肯定不相同。我们只需要给time函数传空指针NULL,他会给我们返回当前时间的时间戳。这样的话就可以实现时间种子生成随机数。rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。如果想要产生0~99这100个整数中的一个随机整数,可以表达为:int num=rand()%100;这样,num的值就是一个0~99中的一个随机数了。总结来说,可以表示为:int num=rand()%n+a;其中的a是起始值,n-1+a是终止值,n是整数的范围。
- 问题4:如何给给字符数组赋值?
- 问题4解决方案:通过上网查找资料,第一种方法是定义的时候直接赋值:char arr[10] = {"kitty"},这种写法也可以直接省略花括号,直接写成:char arr[10] = "kitty";第二种是初始化列表,把各个字符依次赋给数组中的元素:char arr[10] = {'k','i','t','t','y'}这种写法是不可以省略花括号的。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 30篇 | 200小时 | |
第一周 | 50/50 | 2/2 | 15/15 | |
第二周 | 100/150 | 2/4 | 15/30 | |
第三周 | 150/350 | 3/7 | 20/50 | |
第四周 | 150/500 | 3/10 | 20/70 | |
第五周 | 150/650 | 2/12 | 20/90 | |
第六周 | 150/800 | 4/16 | 20/110 | |
第七周 | 150/950 | 1/17 | 20/130 | |
第八周 | 150/1100 | 4/21 | 20/15 |
-
计划学习时间:20小时
-
实际学习时间:20小时