首页 > 编程语言 >2024-2025-1 20241413 《计算机基础与程序设计》第五周学习总结

2024-2025-1 20241413 《计算机基础与程序设计》第五周学习总结

时间:2024-10-27 15:10:02浏览次数:1  
标签:20241413 函数 代码 C语言 2024 2025 虚拟 条件 CPU

班级链接 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
作业要求 https://msg.cnblogs.com/item/4274387
作业目标 Pep/9虚拟机 机器语言与汇编语言 算法与伪代码 测试:黑盒,白盒
---- ----

教材学习内容总结
《计算机科学概论》第六章

计算机硬件组成:

中央处理器(CPU):计算机的大脑,负责解释和执行指令。

内存(RAM):临时存储数据和程序,以便CPU快速访问。

存储设备:如硬盘驱动器(HDD)和固态驱动器(SSD),用于长期存储数据。

输入/输出设备:如键盘、鼠标、显示器和打印机,允许用户与计算机交互。

CPU的工作原理:

指令周期:CPU执行指令的过程,包括取指令、解码、执行、访问内存和写回结果。

寄存器:CPU内部的小容量存储,用于存储指令和数据。

时钟周期:CPU的时钟频率,决定了CPU执行指令的速度。

内存层次结构:

缓存(Cache):位于CPU和RAM之间的高速存储,用于减少CPU访问主内存的时间。

虚拟内存:当物理内存不足时,使用硬盘空间作为额外的内存。

数据表示:

二进制系统:计算机使用二进制数字(0和1)来表示数据。

位、字节和字:数据的基本单位,以及它们之间的关系。

编码:如何将字符和数字转换为二进制形式。

指令集架构(ISA):

指令:CPU可以执行的基本操作。

寻址模式:指令如何指定操作数(数据)的位置。

操作码:指令的操作类型。

计算机性能:

性能指标:如时钟频率、指令周期时间、吞吐量等。

性能优化:通过硬件和软件技术提高计算机性能。

并行处理:

多核处理器:单个CPU内包含多个核心,可以同时执行多个任务。

并行算法:设计算法以利用多核处理器的优势。

计算机体系结构:

冯·诺依曼体系结构:现代计算机的基础,包括程序存储和顺序执行。

哈佛体系结构:将指令和数据存储分开,允许更高效的处理。

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

条件语句(if语句):

单分支if:用于在条件为真时执行一段代码。

双分支if-else:用于在条件为真时执行一段代码,条件为假时执行另一段代码。

多分支if-else if-else:用于根据不同的条件执行不同的代码块。

嵌套if:if语句中可以嵌套另一个if语句,用于更复杂的条件判断。

循环语句:

for循环:用于在给定条件为真的情况下重复执行一段代码,通常用于已知迭代次数的情况。

while循环:在条件为真时重复执行一段代码,适用于迭代次数未知的情况。

do-while循环:至少执行一次循环体内的代码,然后检查条件是否为真,如果为真则继续循环。

循环控制语句:

break:用于立即退出循环,无论循环条件是否为真。

continue:用于跳过当前循环的剩余部分,并继续执行下一次循环迭代。

switch语句:

用于根据变量的值执行不同的代码块,类似于多个if-else语句的组合。

goto语句:

用于无条件地跳转到程序中的另一个标签位置,通常不推荐使用,因为它可能导致代码难以理解和维护。

逻辑运算符:

&&(逻辑与):两个条件都为真时结果为真。

||(逻辑或):两个条件中至少一个为真时结果为真。

!(逻辑非):反转条件的真假值。

条件表达式:

也称为三元运算符,格式为 条件 ? 表达式1 : 表达式2,用于在一行内实现if-else的功能。

循环和条件语句的结合使用:

讲解如何将循环和条件语句结合起来,实现更复杂的逻辑控制。

调试技巧:

介绍如何使用调试工具来查找和修复循环和条件语句中的错误。

最佳实践:

讨论如何编写清晰、可维护的控制结构代码,包括使用适当的变量命名、避免过度嵌套等。

教材学习中的问题与解决过程
问题一:虚拟电脑的虚拟光盘和虚拟硬件是什么
AI:虚拟电脑(Virtual Machine,简称VM)是一种通过软件模拟的完整计算机系统,它能够在宿主机(物理计算机)上模拟出一台或多台虚拟的计算机。虚拟电脑可以运行自己的操作系统和应用程序,就像一台独立的物理计算机一样。以下是虚拟光盘和虚拟硬件的简要说明:

虚拟光盘(Virtual CD/DVD Drive): 虚拟光盘是一种软件模拟的光盘驱动器,它允许虚拟电脑使用光盘镜像文件(如ISO文件)作为数据源。虚拟光盘驱动器的功能类似于物理光盘驱动器,但它使用的是虚拟光盘镜像而不是物理光盘。用户可以在虚拟机软件中挂载一个光盘镜像文件,虚拟电脑就可以像使用真实光盘一样读取和使用这个镜像文件中的数据。

虚拟硬件: 虚拟硬件是指在虚拟电脑中模拟的硬件设备,它们包括但不限于:

虚拟CPU:模拟一个或多个中央处理器(CPU)核心。

虚拟内存:模拟物理内存(RAM),虚拟机可以分配一定量的宿主机内存作为虚拟内存。

虚拟硬盘:模拟物理硬盘,用于存储虚拟机的操作系统、应用程序和数据。通常以文件形式存在于宿主机上。

虚拟显卡:模拟图形处理单元(GPU),用于处理图形输出。

虚拟网络适配器:模拟网络接口卡(NIC),允许虚拟机连接到宿主机的网络。

虚拟USB控制器:模拟USB端口,允许虚拟机访问宿主机连接的USB设备。

虚拟声卡:模拟音频设备,用于处理音频输入和输出。

虚拟硬件使得虚拟电脑能够执行与物理电脑相同的操作,但所有的硬件功能都是通过宿主机的硬件和虚拟机软件来实现的。虚拟机软件负责管理这些虚拟硬件资源,并确保它们能够被虚拟电脑正确使用。通过虚拟化技术,用户可以在单个宿主机上运行多个虚拟电脑,每个虚拟电脑都有自己的操作系统和应用程序,而且相互之间是隔离的。这种技术在服务器管理、软件开发、测试和教育等领域有着广泛的应用。

问题二:C语言中与或门的表达如果很复杂怎么表达
AI:在C语言中,逻辑与(AND)和逻辑或(OR)操作分别通过 && 和 || 运算符来实现。当需要表达复杂的逻辑条件时,通常会使用这些运算符来组合多个条件。如果逻辑表达式非常复杂,可以采取以下几种方式来提高可读性和维护性:

使用括号: 使用括号来明确运算的优先级,确保逻辑表达式按照预期的顺序进行计算。

if (条件1 && (条件2 || 条件3)) { // 代码块 }

c

分解复杂表达式: 将复杂的逻辑表达式分解成多个简单的表达式,然后在代码中使用这些表达式。

int conditionA = (条件1) && (条件2); int conditionB = (条件3) || (条件4); if (conditionA || conditionB) { // 代码块 }

c

使用宏定义: 对于非常复杂的逻辑表达式,可以使用宏定义来简化代码。

define COMPLEX_CONDITION (条件1 && (条件2 || 条件3) && 条件4) if (COMPLEX_CONDITION)

c

函数封装: 将复杂的逻辑表达式封装成函数,这样可以使代码更加模块化,易于理解和维护。

int isConditionMet() { return (条件1 && (条件2 || 条件3)) || 条件4; } if (isConditionMet()) { // 代码块 }

c

使用位运算符: 如果逻辑表达式涉及到位的设置和清除,可以使用位与(&)、位或(|)和位异或(^)运算符来表达。

注释说明: 在复杂的逻辑表达式旁边添加注释,说明每个部分的作用,可以帮助其他开发者或未来的你理解代码。

逻辑表达式的简化: 有时候,复杂的逻辑表达式可以通过逻辑运算的规则进行简化,比如使用德摩根定律等。

使用逻辑运算符的短路特性: 利用 && 和 || 的短路特性,即 && 在第一个条件为假时停止计算,|| 在第一个条件为真时停止计算,可以提高效率。

通过上述方法,可以有效地表达和组织复杂的逻辑表达式,使代码更加清晰和易于维护。

基于AI的学习
User: 我在学习C语言程序设计第四章的内容,请以苏格拉底的方式一次向我提问一个问题
Kimi: 当然,我们可以采用苏格拉底式的提问法来探讨C语言程序设计。让我们开始吧:

你是否已经理解了C语言的基本语法结构?
User: 基本了解
Kimi: 很好,既然你对基本语法有了了解,那么让我们深入一点。你能告诉我,C语言中的变量声明和初始化有什么区别吗?
User: 变量声明了变量的类型
Kimi: 正是如此,变量声明确定了变量的类型,这是编写程序时必不可少的一步。那么,接下来的问题:在C语言中,变量的声明和定义有何不同?
User: 声明是类型,定义是具体数值或者范围
Kimi: 接近了,但让我稍微澄清一下。在C语言中,当我们说“定义”一个变量时,我们通常指的是声明并分配内存空间给这个变量。所以,定义不仅包括变量的类型,还包括为其分配内存空间。而“声明”仅仅是告诉编译器变量的类型,但不分配内存空间。

那么,我问你,变量的声明和定义在程序中通常在什么位置进行?
User: 程序的开头
Kimi: 在程序的开头声明和定义变量是一种常见的做法,尤其是在函数的开始部分,这样可以在函数的整个作用域内使用这些变量。不过,C语言也允许在代码的任何地方声明和定义变量,只要它们在被使用之前。

那么,我再问你一个问题:在C语言中,全局变量和局部变量有什么区别?
User: 你的回答呢
Kimi: 全局变量和局部变量在C语言中有着不同的定义和作用域:

  1. 全局变量:这些变量是在函数外部定义的,它们在整个程序中都是可见的,并且可以被程序中的任何函数访问和修改。全局变量在程序的生命周期内一直存在。

  2. 局部变量:这些变量是在函数内部定义的,它们只在定义它们的函数内部可见,一旦函数执行结束,这些变量的生命周期也就结束了。局部变量只在函数调用期间存在,并且只能被该函数内部的代码访问。

全局变量可以在程序的任何地方被访问,这使得它们在需要在多个函数之间共享数据时非常有用。然而,这也可能导致代码难以理解和维护,因为全局变量可能在程序的任何地方被改变,这可能会引起难以追踪的错误。

局部变量则提供了一种封装数据的方式,限制了变量的作用域,使得函数更加独立,减少了不同函数间相互影响的可能性。

那么,我再问你一个问题:在C语言中,函数原型是什么?它有什么作用?
User: 函数的原型是固定的程序
Kimi: 在C语言中,函数原型(也称为函数声明)是一种声明函数的方式,它告诉编译器函数的名称、返回类型以及它接受的参数类型。函数原型并不包含函数的实现细节,即函数体。

函数原型的主要作用包括:

  1. 类型检查:编译器可以使用函数原型来检查函数调用时传递的参数是否正确。

  2. 提高代码的可读性:在代码中提前声明函数原型,可以让其他开发者或阅读代码的人知道函数的存在及其接口。

  3. 模块化编程:在大型项目中,函数原型允许开发者在实现函数之前就声明它们,从而可以在不同的文件中引用这些函数。

  4. 重载解析:在C语言中,虽然不支持函数重载,但函数原型可以帮助编译器区分具有相同名称但参数列表不同的函数。

例如,如果你有一个计算两个整数之和的函数,其原型可能是这样的:

int add(int, int);

这告诉编译器,存在一个名为add的函数,它接受两个int类型的参数,并返回一个int类型的结果。

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

标签:20241413,函数,代码,C语言,2024,2025,虚拟,条件,CPU
From: https://www.cnblogs.com/yuanzhengqi/p/18508460

相关文章

  • CSP 2024-S 游寄
    省流:唐完了。考试开始先看了一遍,顺便把T1就想出来了,转回去打,调了两三分钟就过了。T2看见匀变速运动直接绷不住,于是直接大分讨,然后差分约束,最后一组大样例被制裁到120s,希望CCF不要搞我。得得得,这下知道CCF不会出蓝题了,T3又搬上CF了。但是为什么都会DP只有我一个人......
  • 2024-2025-1 20241314 《计算机基础与程序设计》第五周学习总结
    2024-2025-120241314《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第五周作业这个作业的目标Pep/9虚拟机机器语言与汇编语言算法与伪代码测试......
  • CSP2024 游记
    Day-1没啥好写的,唯一要说的就是写了一个很ex的题,硬控我三个晚自习。Day07:00起床,吃完饭到七点半,whk生活很难体验到的松弛感。晃到班级拿了眼镜盒,碰到物理老师打了个招呼,然后发现水杯没拿,又回来拿水杯,拿完水杯就8:00了,于是早晨复习计划取消。8:20上车,8:30左右出发......
  • #【2024年10月26日更新】植物大战僵尸杂交本V2.6更新内容与下载
    更新内容新增植物:英雄植物:终极射手、向日葵公主、汉堡王(仅限英雄模式使用)。星卡植物:星星盒子、猫窝、迷幻投手、玉米旋转机(需要一定数量的星星解锁)。挑战植物:金卡黄金锤子、金卡联动贴吧版雷果子、钻卡车轮重塑者(通过特定挑战关卡解锁)。新增模式:梦幻联动:与up主轻柔......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第五周学习总结
    这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第五周作业)这个作业的目标<Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒>作业正文https://www.cnblogs......
  • 【2024年10月26日更新】植物大战僵尸杂交本V2.6更新内容与下载(包含历史版本)
    更新内容总结:新增植物:英雄植物:终极射手、向日葵公主、汉堡王(仅限英雄模式)。星卡植物:星星盒子、猫窝、迷幻投手、玉米旋转机(需星星解锁)。挑战植物:金卡黄金锤子、金卡雷果子、钻卡车轮重塑者(通过挑战解锁)。新增模式:梦幻联动:与up主轻柔北风合作的“植物大战僵尸贴吧版”。......
  • 2024Java八股文(面试必备)
    1封装的目的是什么,为什么要有封装?封装是面向对象编程语言对客观世界的模拟,在客观世界里,对象的状态信息都被隐藏在对象内部,外界无法直接操作和修改。对一个类或对象实现良好的封装,可以实现以下目的:隐藏类的实现细节;限制对成员变量的不合理访问;提高代码的可维护性。2说......
  • 【比赛】CSP-S 2024 游记
    【比赛】CSP-S2024游记1回顾T110min一开始还是有点想歪了,仔细想一下然后过了。T21h非常需要总结的一道题。几乎看完题就出思路了,注意到算是一道小模拟,所以开打之前先理了一遍思路,这很好。但是,为什么这道简单题浪费了这么久呢?打的时候太谨慎?打完第一问就就开始测大样......
  • 2024-2025-1 20241320 《计算机基础与程序设计》第5周学习总结
    2024-2025-120241320《计算机基础与程序设计》第5周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05|这个作业的目标|Pep/9虚拟机•机器语言与汇编语......
  • Java面试题及答案整理( 2024年 10 月最新版,持续更新)
    1.抽象类必须要有抽象方法吗?不需要,抽象类不一定非要有抽象方法。 普通类不能包含抽象方法,抽象类可以包含抽象方法。抽象类不能直接实例化,普通类可以直接实例化。2.抽象类能使用final修饰吗?不能,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样彼......