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

发布时间 2023-11-19 20:14:00作者: 20231306周玟妍
这个作业属于哪个课程 2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 2023-2024-1计算机基础与程序设计第八周作业
这个作业的目标 功能设计与面向对象设计、面向对象设计过程、面向对象语言三要素、汇编、编译、解释、执行
作业正文 https://www.cnblogs.com/zwywuhu/p/17842455.html

教材学习内容总结

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

  • 编译器与解释器

编译器是一种将高级编程语言代码转换为机器代码或者其他形式的代码的程序。它将整个源代码文件作为输入,并在一个步骤中将其完全转换成目标代码,这个目标代码可以由计算机直接执行。编译器的主要过程包括词法分析、语法分析、语义分析、代码优化和代码生成。一旦编译完成,生成的目标代码可以在不同的计算机上运行,而不需要重新编译。通常执行速度较快,但可能不具有跨平台性。

常见的编译型语言包括C、C++、Java。

解释器是一种逐行解释执行源代码的程序。它逐行读取源代码并将其转换为计算机可以理解的机器代码或者直接执行。解释器在运行时逐行处理源代码,将其翻译为计算机执行的指令。解释器不生成目标代码,而是根据需要直接执行源代码。通常可直接执行源代码,可跨平台。

常见的解释型语言包括Python、JavaScript、Ruby等。

  • 命令式范式
  1. 面向过程范式(C)
    程序由一系列过程组成,每个过程负责执行特定的任务。过程是一段可重用的代码块。数据和对数据的操作是直接关联的。函数通常直接对特定的数据进行操作。 程序按照定义的顺序一步一步地执行。控制流通过顺序结构、条件语句和循环结构来管理。代码通常相对简单直观,易于理解和调试。但在大型项目中可能导致代码难以维护、扩展和理解。
    2.面向对象范式(Java、C++、Python、C#)
    特点:
    类和对象: 类是对象的模板,描述了对象的属性和方法。对象是类的实例,是具体的数据实体。
    封装: 封装是将类的实现细节隐藏起来,只暴露必要的接口给外部。这有助于控制对对象内部状态的访问。
    继承: 继承允许一个类继承另一个类的属性和方法,促进了代码的重用性。子类可以扩展或修改父类的行为。
    多态: 多态性允许使用相同的接口来操作不同类型的对象,提高了代码的灵活性。多态有静态多态(编译时多态)和动态多态(运行时多态)两种形式。
    抽象: 抽象是简化复杂系统的过程,通过忽略不必要的细节,只关注关键的特征。抽象通常通过抽象类和接口来实现。
  • 声明式范式
    1.函数式模型(Haskell、Clojure、Scala)
    将计算视为数学函数的求值,使用纯函数和避免可变状态和数据的改变,无变量和赋值语句。
    2.逻辑编程
    关注描述问题的逻辑关系,而不是显式地指定计算机程序的执行步骤。在逻辑编程中,程序员定义一组事实和规则,然后通过提出查询来寻找符合这些规则和事实的解。
    主要用于人工智能中的专家系统、自然语言处理。

  • C、Java、C++、Python在数据类型、输入(输出)结构、控制结构方面的不同之处
    1.数据类型:
    C语言:
    原始数据类型包括整数(int)、浮点数(float)、字符(char)等。
    支持用户自定义的结构体和枚举。
    Java语言:
    提供基本数据类型(int、float、char等)和对象类型。
    用户可以使用类定义自己的数据类型。
    C++语言:
    继承了C语言的原始数据类型。
    支持类和对象,允许用户定义自己的数据类型。
    Python语言:
    具有动态类型,不需要显式声明变量的数据类型。
    包含整数、浮点数、字符串等基本数据类型。
    支持列表、元组、字典等高级数据结构。
    2.输入输出结构(Input/Output Structure):
    C语言:
    使用 scanf 进行输入,printf 进行输出。
    文件 I/O 使用 fopen、fclose、fread、fwrite 等函数。
    Java语言:
    使用 Scanner 类和 System.out.println 进行输入输出。
    文件 I/O 使用 FileReader、FileWriter 等类。
    C++语言:
    使用 cin 进行输入,cout 进行输出。
    文件 I/O 使用 ifstream、ofstream 等类。
    Python语言:
    使用 input 进行输入,print 进行输出。
    文件 I/O 使用 open、read、write 等函数。
    3.控制结构(Control Structures):
    C语言:
    提供条件语句(if、else)、循环语句(for、while)等基本控制结构。
    Java语言:
    与C语言类似,提供条件语句、循环语句。
    还有 switch 语句用于多重条件判断。
    C++语言:
    类似于C语言,提供条件语句、循环语句。
    还有 switch 语句。
    Python语言:
    使用缩进来表示代码块,无需显式的语句终止符。
    提供条件语句、循环语句,但没有 switch 语句。

  • 嵌套逻辑
    选择控制结构和循环控制结构可以相互嵌入;两者自己也可以无限嵌套自己。

  • 异步处理
    在程序自行运行时,鼠标的点击可能发生在如何时间。即被程序指令序列以外发生的事件所控制。

  • 封装、类、继承、多态
    一个类可以封装数据和方法,通过继承,子类可以继承父类的属性和方法,并通过多态,可以根据具体对象的类型调用相应的方法。
    这些概念共同构成面向对象编程的基础,有助于组织和设计代码以实现可维护、可扩展和可重用的软件。

《C语言程序设计》第7章

*模块化程序设计:通过功能分解(一步一步把大功能分解为小功能)完成最终的程序。

  • 函数
    1.自定义函数:形参、返回值
    注:在函数定义的前面写一段注释来描述函数的功能及其形参。
    有返回值的函数必须有return语句,且返回值只能有一个(可以是除数组以外的任何类型)。无返回值也最好写上return。
    2.函数原型的声明
    3.防御式编程
    4.设计时的基本原则:在函数接口中清楚地定义函数的行为(入出口参数、返回状态、异常处理)、考虑一些特殊情况(除0、数据溢出、类型转换、类型不匹配)
    5.递归函数
    在函数内直接或间接的自己调用自己。任何递归函数都必须至少有一个基线情况,并且一般情况必须最终能转化为基线情况。
    6.自动变量(动态局部变量)、静态变量(与程序共存亡、只能被初始化一次之后初始化皆为无效、赋值有效)、外部变量、寄存器变量)

基于AI的学习

1.二维数组






2.指针




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

1.问题1:
在进行实验三准备时,由于对指针的理解不够深刻,用了头文件和全局变量

解决方案:


学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 200/400 2/4 18/38
第三周 200/600 3/7 22/60
第四周 100/700 2/9 30/90
第五周 200/900 1/ 10 40/130
第六周 300/1200 1/11 40/170
第七周 400/1600 1/12 50/220
第八周 500/2100 1/13 50/270