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

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

时间:2024-11-17 13:56:05浏览次数:1  
标签:函数 递归 递归函数 代码 2024 2025 面向对象 循环 20241329

作业信息

作业归属课程: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

参考资料

标签:函数,递归,递归函数,代码,2024,2025,面向对象,循环,20241329
From: https://www.cnblogs.com/incamellia/p/18550414

相关文章

  • Alpha冲刺(4/14)——2024.11.15
    目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表一、团队成员分工与进度成员完成的任务完成的任务时长剩余时间施......
  • ICPC2024杭州站游记
    Day-??发现杭州站可以报名,但是四处问了问发现并不知道中学生怎么报名?于是去push老叶找HZNU的工作人员报名,最后成功报上了。以为不能跨学校组队于是拉上了高一学弟,仍然沿用了“飞带长队”的队名。Day-?得知海峰加入了凯文队。Day-5加训CCPCHarbin,赢了呆呆鸟罚时。......
  • 20241116
    T1医生厨神秘贪心题。不会。不懂。考虑当\(\maxA_i\lex\)时,可以直接从大往小干。否则需要不断扩大\(x\)使得其超过\(\maxA\)。我们考虑在一个时刻,若存在一个\(a\)使得\(a\lex\land2a\gex\),那我们直接把这个\(a\)干掉是不劣的,因为你现在干掉这个至多只会拖......
  • 2024华为OD算法真题目录
    文章目录一、什么是华为OD,什么是华为OD机试?二、华为OD面试流程?三、华为OD机试通过率高吗?四、华为OD薪资待遇?五、大家比较关注问题的FAQ......
  • 20241115
    T1自闭题目条件可以扩展到任意矩形的四个顶点。则整个矩阵仅由第一行和第一列决定。容易发现最左上角的格子直接填\(0\)是一定合法的,因此只需要判断是否存在数组\(a_i,b_i\)满足\(A_{i,j}=a_i+b_j\)即可。考虑将给出的限制视为边,\(a_i,b_j\)视为点建图,显然不同连......
  • 20222312 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容及要求本实践目标是掌握metasploit的用法。指导书参考Rapid7官网的指导教程。https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/下载官方靶机Metasploitable2,完成下面实验内容。(1)前期渗透①主机发现(可用Aux中的arp_sweep,search一下就可......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第八周作业这个作业的目标功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释、执行作业正文https://www.cnblogs.c......
  • # 学期2024-2025-1 学号(20241405) 《计算机基础与程序设计》第8周学习总结
    作业信息|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP||这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08||这个作业的目标|功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释、执行||作......
  • 2024-2025-1 20241423 《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程[2024-2025-1-计算机基础与程序设计]https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里2024-2025-1计算机基础与程序设计第一周作业这个作业的目标功能设计与面向对象设计、面向对象设计过程、面向对象语言三......
  • 华为OD机试 - 挑7 (Java 2024 E卷 100分)
    华为OD机试2024E卷题库疯狂收录中,刷题点这里。实战项目访问:http://javapub.net.cn/专栏导读本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注......