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

news/2024/11/17 14:06:20/文章来源:https://www.cnblogs.com/incamellia/p/18550414

作业信息

作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08
作业目标:功能设计与面向对象设计;面向对象设计过程;面向对象语言三要素;汇编、编译、解释、执行
作业正文:https://www.cnblogs.com/incamellia/p/18550414

教材学习内容总结

《计算机科学概论(第七版)》第9章

  1. 功能设计与面向对象设计
  • 功能设计:
    功能设计关注于软件系统的功能需求,即系统应该做什么。它通常涉及将问题分解为更小的、可管理的功能单元,并定义这些单元之间的接口。
  • 面向对象设计:
    面向对象设计(OOD)是一种以类和对象为中心的软件设计方法。它强调数据(对象的状态)和行为(对象的操作)的封装,以及类之间的继承和多态性。OOD的目标是创建一个可重用、可扩展和易于维护的系统。
  1. 面向对象设计过程
  • 需求分析:确定系统的需求,包括功能需求和非功能需求。
  • 概念性设计:定义系统的高级结构,包括主要的类和对象,以及它们之间的关系。
  • 详细设计:细化概念性设计,定义每个类的属性和方法,以及类之间的交互。
  • 实现:根据详细设计编写代码。
  • 测试:验证代码是否满足需求,并修复发现的问题。
  • 维护:根据用户反馈和系统变化,对软件进行持续的改进和更新。
  1. 面向对象语言三要素
  • 封装:
    封装是将数据(属性)和操作数据的方法(行为)捆绑在一起的过程。它隐藏了对象的内部状态,只通过一个清晰的接口与外部交互。
  • 继承:
    继承是一种创建新类(子类)的方式,新类可以继承现有类(父类)的属性和方法。这允许代码重用,并建立类之间的层次结构。
  • 多态:
    多态性允许不同的对象对同一消息做出响应。这意味着同一个方法调用可以有不同的行为,这取决于对象的实际类型。
  1. 汇编、编译、解释、执行
  • 汇编:
    汇编是将汇编语言代码转换为机器代码的过程。汇编语言是一种低级编程语言,它更接近机器代码,但仍包含一些助记符,以便于人类理解和编写。
  • 编译:
    编译是将高级编程语言(如C++或Java)代码转换为机器代码的过程。编译器会进行语法和语义分析,生成可执行文件。
  • 解释:
    解释是直接执行源代码的过程,而不需要将其转换为机器代码。解释器逐行读取源代码,并立即执行相应的操作。Python和JavaScript是使用解释器的编程语言的例子。
  • 执行:
    执行是计算机运行机器代码的过程。在执行过程中,CPU会逐条读取指令,并执行它们。

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

  1. 函数的分类和定义
  • 函数分类:
    库函数:C语言标准库中预定义的函数,如printf、scanf等。
    用户自定义函数:用户根据需要编写的函数,用于执行特定的任务。
  • 函数定义:
    函数定义包括返回类型、函数名、参数列表和函数体。
    返回类型 函数名(参数类型 参数名, ...){ 函数体 }
  1. 向函数传递值和从函数返回值
  • 函数调用:
    调用函数时,需要提供与函数定义匹配的参数列表。
    函数名(实参1, 实参2, ...);
  • 函数原型:
    函数原型是函数定义的声明,它告诉编译器函数的返回类型、名称和参数类型。
    返回类型 函数名(参数类型 参数名, ...);
  • 函数的封装与防御性程序设计
    封装:封装是将数据(变量)和操作数据的代码(函数)组合在一起,对外隐藏内部实现细节。
    防御性程序设计:编写代码时考虑异常情况和错误处理,确保程序的健壮性。
  • 函数设计的基本原则
    模块化:将程序分解成独立的、可重用的模块,每个模块完成一个特定的功能。
    单一职责原则:每个函数应该只做一件事,并且做好这件事。
    开放/封闭原则:软件实体应该对扩展开放,对修改封闭。
  1. 函数的递归调用和递归函数
  • 递归调用:函数直接或间接地调用自身,直到满足某个条件停止。
  • 递归函数:递归函数必须有一个明确的结束条件,以避免无限递归。
  1. 变量的作用域和生存周期
  • 作用域:
    局部变量:在函数内部定义,只在该函数内部可见。
    全局变量:在函数外部定义,在整个程序中可见。
  • 生存周期:
    局部变量:在函数调用时创建,在函数返回时销毁。
    全局变量:在程序开始时创建,在程序结束时销毁。
  1. 模块化程序设计
  • 模块化:将程序分解成模块,每个模块完成一个特定的功能,通过函数接口与其他模块交互。
  • 头文件:使用头文件(.h)来声明函数原型和全局变量,实现模块间的接口定义。
  • 源文件:包含函数定义的文件(.c),每个模块一个源文件。
  • 编译和链接:编译每个模块的源文件,然后将它们链接在一起生成可执行文件。

教材学习中的问题和解决过程

问题:递归函数和循环结构有什么区别和共同点吗

  1. 区别
  • 实现方式:
    递归函数:递归是通过函数自己调用自己来实现重复操作的。每次递归调用都会创建一个新的函数调用栈帧,用于存储局部变量和返回地址。
    循环结构:循环是通过重复执行一段代码块来实现重复操作的,通常使用for、while或do-while循环。
  • 内存使用:
    递归函数:每次递归调用都会占用新的栈空间,如果递归深度过大,可能会导致栈溢出。
    循环结构:循环不涉及额外的栈空间分配,通常只使用循环变量和条件判断所需的内存。
  • 适用场景:
    递归函数:适用于可以分解为相似子问题的问题,如树的遍历、分治算法等。
    循环结构:适用于需要重复执行固定次数的操作,或者直到满足某个条件为止。
  • 性能:
    递归函数:递归函数可能会有额外的性能开销,因为每次递归调用都涉及到函数调用的开销,以及可能的栈空间分配和回收。
    循环结构:循环通常性能更好,因为它们避免了函数调用的开销。
  • 可读性和复杂性:
    递归函数:递归函数的代码通常更简洁,易于理解,特别是对于自然适合递归的问题。
    循环结构:循环结构可能需要更多的代码来处理迭代和条件判断,但它们通常更容易调试和优化。
  1. 共同点
  • 重复执行:递归函数和循环结构都可以用于重复执行一段代码。
  • 条件控制:两者都需要一个明确的结束条件,以避免无限递归或无限循环。
  • 代码块执行:递归函数和循环结构都可以执行一段代码块。
  • 可替代性:在某些情况下,递归函数可以用循环结构替代,反之亦然,尽管这可能会影响代码的可读性和性能。

基于AI的学习

image

参考资料

  • 《计算机科学概论(第七版)》
  • 《C语言程序设计》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835316.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Alpha冲刺(4/14)——2024.11.15

目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表 一、团队成员分工与进度成员 完成的任务 完成的任务时长 剩余时间施靖杰 完…

高三鲜花 #2

水发现放假之后其实连鲜花都是不想写的了。 所以这是钓鱼博。 也不能钓这么直接,还是需要写一点东西的。 应该是马上就距离高考还剩 200 天了。然后这里本来写了很多关于 whk 的文本,全删了,觉得有点无意义,毕竟这应该是一篇钓鱼博。 whk 真难。 突然发现我已经退役四个月了…

语文成绩

语文成绩(https://www.luogu.com.cn/record/189365158) 题目描述 语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗? 输入格式 第一行有两个整数 n,p,代表学生数与增加分数的次数。…

「LUCKY STUN穿透」使用Cloudflare的页面规则固定和隐藏网页端口

关于本教程 索引 │ ├─关于本教程 │ ├─在STUN穿透环境中使用WEB服务 │ ├─动态端口带来的麻烦 │ ├─“隐藏端口”和固定端口 │ └─可用的解决方法 │ ├─使用邮件进行通知端口变化 │ └─使用HTTP重定向 │ ├─网络环境优化和STUN穿透规则设…

平板电视食用教程

先来看一道大家基本都能默写出来的题目: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入一个数 \(x\)。 删除一个数 \(x\)(若有多个相同的数,应只删除一个)。 定义排名为比当前数小的数的个数 \(+1\)。查询 \(x\) 的排名。 查询数据结…

企业集成模式-第十二章

十二、中场演练:系统管理示例管理控制台:显式所有组件的工作状态(下图一) 贷款中介的服务质量:监视请求响应时间 验证信用机构的操作:周期性地发送测试消息,希望确信该服务在正常运行(下图二) 信仰机构的故障恢复:如果信仰机构出现故障,希望把信用请求消息临时重定向…

平板电视从入门到精通

先来看一道大家基本都能默写出来的题目: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入一个数 \(x\)。 删除一个数 \(x\)(若有多个相同的数,应只删除一个)。 定义排名为比当前数小的数的个数 \(+1\)。查询 \(x\) 的排名。 查询数据结…

人月神话-摘抄

由于人员的分工,大型编程项目碰到的管理问题和小项目区别很大:我相信关键需要是维持产品自身的概念完整性。 1. 焦油坑(the tar pit) 过去几十年的大型系统开发犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统-不过,其中只有非…

Manjaro/Arch用怎么安装天翼云电脑(Ctyun-cloud-desk)?感谢信创,感谢国家

最近微信出了linux版,用vmware装linux不过瘾,把一台闲置的笔记本装上了Manjaro KDE Plasma,经过一段时间的发展,Linux桌面可用性大大提高。 Kindle->Kindle Mate->Anki这条路在linux下 我用 Kindle ->KindleVocab ->Anki这么代替了之后, 其他软件都能凑合用,…

Prometheus 和 Grafana 监控系统搭建

Prometheus 和 Grafana 监控系统的搭建和配置。Author: ACatSmiling Since: 2024-11-11Prometheus 的架构架构理解:Prometheus 既然设计为一个维度存储模型,可以把它理解为一个 OLAP 系统。 生态圈组件:Prometheus Server:主服务器,负责收集和存储时间序列数据。 Client L…

团队作业4——项目冲刺-6

DAY(11.16) 每日站立式会议 会议照片:会议内容:成员 昨天已完成的工作 今天计划完成的工作欧可贵 Day6博客的编写,会议的组织与展开 完成任务的对接,组织第六次会议的召开,准备用户测试吴灿豪 检查代码流畅性,美化页面,交互各个界面 继续优化代码,美化界面陈东阳 用户…

STM32F103简介

自从大学毕业之后,已经很久没有接触STM32控制器了,最近打算学习一下LVGL,控制芯片计划使用STM32,因此这里我们会简单介绍有关STM32的知识。 一、STM32F103RTC6介绍 1.1 命名规则 我从网上买了一块STM32F103RTC6开发板,STM32F103RCT6 各个字段的含义:STM32(芯片系列):S…