第八周作业
学期(如2024-2025-1) 学号(20241418) 《计算机基础与程序设计》第八周学习总结
教材学习内容总结
汇编:汇编语言(Assembly Language)
汇编语言是一种低级编程语言。它与计算机硬件紧密相关,是介于机器语言和高级编程语言之间的一种程序设计语言。机器语言是由 0 和 1 组成的二进制代码,计算机硬件可以直接识别和执行。而汇编语言使用助记符(Mnemonic)来代替机器语言的二进制指令,使得程序员能够更方便地编写程序,这些助记符通常是一些英文缩写,它们对应着特定的机器指令。
例如,在 x86 架构的汇编语言中,“MOV” 是数据传送指令的助记符。它用于将数据从一个位置传送到另一个位置。如果要将寄存器 AX 中的内容传送到寄存器 BX 中,可以写成 “MOV BX, AX”,而这条指令在机器语言层面可能对应的是一串二进制代码,如 “1000100111011000”(这只是示例,实际的机器码因处理器和指令格式等因素而不同)。
面向对象语言三要素:面向对象语言主要包含封装、继承和多态这三个要素。
封装(Encapsulation)
定义
封装是指将数据(属性)和操作数据的方法(函数)组合在一起,形成一个独立的单元,也就是类(Class)。通过这种方式,类内部的数据结构和实现细节对外界是隐藏的,只有通过类提供的公共接口才能访问和操作这些数据。这样可以有效地保护数据的完整性,防止外部代码对数据进行不恰当的访问和修改。
示例
以一个简单的 “银行账户(BankAccount)” 类为例。这个类可能有两个属性:账户余额(balance)和账户所有者(owner),还有两个方法:存款(deposit)和取款(withdraw)。
在代码实现中,账户余额(balance)这个属性通常是被封装起来的,外部代码不能直接访问和修改它。例如在 Python 中,可以使用双下划线(__)来表示私有属性,像 “self.__balance”。外部代码如果要改变账户余额,必须通过类提供的存款(deposit)和取款(withdraw)方法来操作。
这样做的好处是可以确保账户余额的更新是符合银行账户的业务规则的。比如,在取款(withdraw)方法中可以添加验证逻辑,防止账户余额变为负数,从而保证了数据的完整性和安全性。
继承(Inheritance)
定义
继承是一种在已有类的基础上创建新类的机制。新类(称为子类或派生类)可以继承已有类(称为父类或基类)的属性和方法,并且可以根据需要添加新的属性和方法,或者重写(Override)父类的方法。继承体现了类之间的层次关系,它可以帮助我们复用代码,减少代码的冗余。
示例
考虑一个 “动物(Animal)” 类作为父类,它有属性 “物种(species)” 和方法 “发出声音(make_sound)”。然后可以创建 “狗(Dog)” 类和 “猫(Cat)” 类作为 “动物(Animal)” 类的子类。
“狗(Dog)” 类和 “猫(Cat)” 类继承了 “动物(Animal)” 类的 “物种(species)” 属性和 “发出声音(make_sound)” 方法。同时,“狗(Dog)” 类可以重写 “发出声音(make_sound)” 方法,使其返回 “汪汪” 的声音,而 “猫(Cat)” 类可以重写这个方法,使其返回 “喵喵” 的声音。这样就通过继承实现了代码的复用和个性化的扩展。
在面向对象的编程语言中,不同语言实现继承的语法有所不同。例如在 Java 中,使用 “extends” 关键字来表示继承关系,如 “class Dog extends Animal”。
教材学习中的问题和解决过程(先问 AI)
第一个问题:汇编语言的优势?
解答:执行效率高
汇编语言能够直接操作计算机硬件,程序员可以精确地控制 CPU 的寄存器、内存单元等硬件资源。例如,在编写对时间要求极高的程序,如实时操作系统的内核部分或高速数据采集系统时,通过汇编语言可以将指令安排得紧凑高效。因为它没有高级语言中诸如编译器优化不彻底、运行时环境等因素的干扰,能够以最快的速度执行指令序列。
以一个简单的加法运算为例,在高级语言中,编译器可能会生成一系列复杂的指令来实现加法,包括加载数据、检查数据类型、进行运算等步骤。而在汇编语言中,可以直接使用如 “ADD”(x86 架构下的加法指令)指令对寄存器中的数据进行相加,减少了不必要的中间环节,大大提高了运算速度。
硬件控制精准
汇编语言与计算机硬件紧密相连,不同的 CPU 架构都有对应的汇编语言指令集。这使得它在开发需要与特定硬件深度交互的程序时具有不可替代的优势。
比如在嵌入式系统开发中,开发人员需要对微控制器的各种外设(如定时器、串口通信模块、模数转换器等)进行精确控制。使用汇编语言可以直接对这些外设的寄存器进行读写操作。以控制定时器为例,通过写入特定的寄存器值来设置定时器的计数初值、工作模式等参数,能够精准地实现定时功能,满足诸如工业控制中的精确定时采样等需求。