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

发布时间 2023-11-19 12:36:53作者: 林子雯

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

作业信息

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

教材学习内容总结

《计算机科学概论》第九章:面向对象设计与高级程序设计语言

  1. 面向对象

对象:在问题背景中有意义的事物或实体。

对象类:一组类似的对象。

类中包含字段,表示类的属性;方法是处理对象中数据值的特定算法。

设计方法:头脑风暴:集体行为,生成候选类的列表->过滤->场景:给每个类分配责任,把数据和动作封装在一起->责任算法:为责任编写算法。

  1. 翻译过程

编译器与解释器;

字节码(Java)实现可移植性,任何具有JVM的计算机都可以运行编译过后的程序。

编译与解释的区别:编译是一次性的,直接生成可执行文件,在不同的计算机上执行;而解释是逐行地将源代码转换为目标代码并立即执行,在每次执行时都需要重新解释源代码,因此解释执行通常比编译执行慢一些。

  1. 范型

命令式:面向过程与对象;

声明式:函数式模型(将计算机程序看作是数学上的函数计算。函数式编程强调函数的纯粹性和不可变性,通过函数的组合和高阶函数等方式来实现程序的逻辑)与逻辑编程(基于逻辑推理的原理,程序员描述问题的逻辑关系,然后由编程语言的执行引擎自行推导出解决方案)。

  1. 高级程序设计语言的功能性:
  • 布尔表达式:值为true或false;

  • 数据类型:整数、实数、浮点数、字符、字符串、数组、布尔型;

  • 输入、输出结构;

  • 控制结构:条件语句、循环语句、跳转语句;嵌套、异步处理;

  1. 面向对象语言的功能性

封装、类(实例化:创建类的对象);

继承:类获取其他类的属性的机制;

多态:同一个方法调用在不同的对象上可以有不同的行为。

  1. 补充

面向过程与面向对象的区别:

面向对象的设计中,类对象的实现通过封装实现对用户的隐藏。

另:(From GPT)
数据和方法的关系:面向过程编程中,数据和方法是分离的,方法对数据进行操作;而面向对象编程中,数据和方法是紧密相关的,数据和方法封装在对象中。

设计思想:面向过程编程更偏向于以算法和数据结构为主要设计元素,程序的执行流程由程序员手动控制;而面向对象编程更注重于对象的抽象、封装、继承和多态等概念,程序的执行流程由对象之间的交互来控制。

可维护性和扩展性:面向对象编程更有利于代码的重用、可维护性和扩展性,因为对象的封装和多态性使得代码更加灵活和可扩展。

《C语言程序设计》第七章:函数与模块化程序设计

  1. 模块化程序设计

分而治之的思想:功能分解->自顶向下、逐步求精;

信息隐藏;

C结构:文件->函数->变量、操作;

  1. 函数(程序的基本模块)
  • 标准库函数与自定义函数:

返回值类型 函数名(形参类型及名称) <- 函数头部

花括号为定界符,中间是函数体。

  • 调用:

主调函数和被调函数;

调用方法:将实参的值复制给形参(参数传递);

函数原型声明;

  • 函数封装与健壮性:

设计原则:规模小、功能单一、一个入口一个出口;不轻易改变接口。

尽量不用全局变量。

  • 递归函数:

一般情况->递归持续进行;基线情况->结束递归;

  1. 变量的作用域与生存期:
  • 变量的作用域:

语句块的概念;

全局变量:作用域为整个程序;

局部变量:作用域为该语句块;

  • 变量的生存期:

自动变量(与语句块共存亡);静态变量(与程序共存亡,相当于保留记忆);外部变量;寄存器变量;

  1. 补充

模块化程序:

分解模块的原则:高聚合、低耦合。“逐步求精”

多文件编程:头文件->系统自带、自定义;

遇到的问题及解决措施

  1. 分不清迭代和递归的区别

通过询问GPT和自己查,知道了迭代和递归都是循环的一种,但它们的程序结构不同:

迭代是函数内某段代码循环,并保存变量作为下一次循环的初始值;

递归是指函数调用自己,但要进行现场保护、参数传递,所以时空效率低;

二者关系及选择:

能够迭代的一般都能递归实现,但反之不成立。能用迭代就尽量用迭代。

  1. 不知道全局变量和静态变量的区别:

GPT回答:在于作用域和生存周期。全局变量的作用域是整个程序,静态变量的作用域是定义它的函数或文件。全局变量在程序开始时创建,在程序结束时销毁,而静态变量在程序运行时创建,在程序结束时销毁。此外,静态变量只能在定义它的函数或文件中访问,而全局变量可以在整个程序中访问。

  1. 使用scanf的返回值时出现一些问题:

如果scanf里只有字符型或者只有整型都是正确的,但一旦同时有了字符型和整型(形如%d%c%d或者%c%d),程序就反应不出来返回值是多少了。(但赋值仍然是正确的)

我理解为同时加这两种就是不行的,以后编程序应该避免这种情况出现。

错题收集

解析:参数是子程序名称旁边括号中列出的标识符。这句话是对的。

解析:在引号内的字母被称为字符串。在计算机编程中,字符串是由一串字符组成的数据类型,通常用来表示文本。在C语言中,字符串通常用双引号括起来。因此,这句话是对的。

学习进度条

重要成长 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 0 1/2 12/12
第二周 20 1/3 12/24
第三周 30 1/4 12/36
第四周 80 1/5 24/60
第五周 120 1/6 30/90
第六周 200 1/7 30/120
第七周 280 1/8 20/140
第八周 600 1/9 30/170