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

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

时间:2024-11-15 15:56:37浏览次数:1  
标签:2024 arr 函数 初始化 元素 10 20241322 2025 07

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

作业信息

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

教材学习内容总结

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

1. 面向对象编程(OOP)概念

  • 对象:现实世界中事物的抽象,包含数据(属性)和行为(方法)。
  • :对象的蓝图,定义了对象的属性和方法。
  • 封装:将数据和操作数据的方法组合在一起,并隐藏内部实现细节。
  • 继承:创建新类,继承现有类的属性和方法,并添加或修改它们。
  • 多态:不同类的对象对同一消息做出响应,每个对象根据自己的实现来响应。

2. 类和对象

  • 定义类,包括属性和方法。
  • 对象的创建和使用,以及如何通过方法操作对象的属性。

3. 高级编程语言特性

  • 自动内存管理、异常处理、泛型编程等特性。
  • 这些特性如何提高编程效率和程序的健壮性。

4. 设计原则

  • 面向对象设计的原则,如单一职责原则、开闭原则、里氏替换原则等。
  • 这些原则帮助开发者创建可维护、可扩展和可重用的代码。

5. UML(统一建模语言)

  • UML图,用于可视化软件设计的工具。
  • 类图、对象图、用例图等UML图的类型和用途。

6. 面向对象分析与设计(OOAD)

  • 使用面向对象的方法分析问题和设计软件系统。
  • OOAD的步骤和技巧。

7. 案例研究

  • 展示如何在实际项目中应用面向对象的概念。

8. 编程语言比较

  • 对比支持面向对象编程的语言,如Java、C++、Python等。
  • 讨论这些语言在面向对象特性支持方面的差异。

9. 面向对象编程的挑战

  • 讨论面向对象编程可能面临的挑战,如过度设计、性能问题等。

10. 未来趋势

  • 探讨面向对象编程和高级编程语言的未来发展趋势。

C语言程序设计第5版第7章:函数与模块化程序设计

一、函数的基本概念与用法

  • 函数的定义
    函数是C语言中用于实现特定功能的模块化单元,包括函数名、参数列表和函数体。

  • 函数的调用
    通过函数名及其参数列表来调用函数,执行其定义的功能。

  • 函数的参数传递与返回值
    函数通过参数接收输入数据,并通过返回值向调用者返回处理结果。

二、函数的递归与复用

  • 递归函数
    递归函数是一种直接或间接调用自身的函数,常用于解决可以分解为相似子问题的问题,例如阶乘计算、斐波那契数列等。

  • 函数复用
    通过编写通用的函数,可以在不同的程序中重复使用,提高编程效率。

三、模块化程序设计

  • 模块化程序设计的思想
    模块化程序设计体现了“分而治之”的思想,将大问题分解为小问题,再逐步求精,最终完成整个程序的设计。

  • 函数在模块化设计中的作用
    函数是模块化程序设计的基本单元,通过函数封装实现信息隐藏,使得程序结构更加清晰,易于调试和维护。

  • 程序的结构
    一个C程序可以由一个或多个源程序文件组成,每个源程序文件又可以由一个或多个函数组成,这种结构有助于实现模块化设计。

四、变量的作用域与存储类型

  • 变量的作用域
    根据变量在程序中定义的位置和方式,变量的作用域可以分为全局作用域和局部作用域。全局变量在整个程序中都可以访问,而局部变量只在定义它的函数或代码块中有效。

  • 变量的存储类型
    C语言中的变量根据其存储方式可以分为自动变量、静态变量、寄存器变量等。这些存储类型决定了变量的存储位置和生命周期。

基于AI的学习

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

  • 问题1:在C语言中,如果你有一个整型数组int arr[10];,并且你已经为数组的前5个元素赋了值(例如arr[0] = 1; arr[1] = 2; ... arr[4] = 5;),那么数组剩下的5个元素(arr[5]到arr[9])在没有显式赋值的情况下,它们的值是什么?为什么?
  • 问题1解决方案:

C语言中数组未初始化元素的值

在C语言中,当你声明一个数组但没有为所有元素显式赋值时,未赋值的元素将包含未定义的值。这意味着这些元素的值是不确定的,可能包含任何数据,这些数据取决于程序运行时的内存状态或之前的内存使用情况。

示例

假设你有一个整型数组 int arr[10]; 并为前5个元素赋值:

int arr[10];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;

在这种情况下,数组剩下的5个元素(arr[5]到arr[9])将包含未定义的值。

未定义行为

未初始化的局部变量(包括数组元素)在C语言中会导致未定义行为。未定义行为意味着程序的行为是不可预测的,它可能表现为任何方式,包括但不限于:

  • 使用未初始化的值进行计算可能导致不正确的结果。

  • 未初始化的值可能包含敏感信息,如密码或密钥,从而构成安全风险。

  • 程序可能会崩溃或产生不可预料的行为。

初始化

为了避免未定义行为,最好总是显式地初始化你的数组元素。你可以通过以下几种方式之一来初始化数组:

  1. 在声明时初始化

【c】
 int arr[10] = {0}; // 将所有元素初始化为0

  2. 显式地为每个元素赋值:

【c】
 int arr[10];
   for (int i = 0; i < 10; i++) {
       arr[i] = 0; // 将所有元素初始化为0
   }

  3. 为部分元素赋值,其余元素自动初始化为0(仅当使用指定初始化器时):

【c】
 int arr[10] = {1, 2, 3, 4, 5}; // 未指定的元素将自动初始化为0

注意:这种方法仅当使用指定初始化器(即在大括号中列出一些但不是全部元素的值)时有效。如果省略了大括号中的某些值,但大括号本身存在,则未指定的元素将自动初始化为0。但是,如果完全省略了大括号(如上面的第一个示例所示),则未初始化的元素将包含未定义的值。

总之,为了避免潜在的问题和错误,最好总是显式地初始化你的数组元素。
---







## 上周考试错题总结
- 错题:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包}括1,不包括B本身)之和等于A,则A和B称为亲密数。求10000以内的亲密数。
- 错因:不能理清正确的循环嵌套关系,导致程序无法运行,也无法得出正确结果。


##感悟
要想学好编程,练习必不可少,在练习中更正错误更加必要。
## 学习进度条

|            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|
| --------   | :----------------:|:----------------:|:---------------:  |:-----:|
| 目标        | 5000行            |   30篇           | 400小时            |       |
| 第一周      | 000/000           |   2/2            | 07/07             |       |
| 第二周      | 000/000           |   1/3            | 07/14             |       |
| 第三周      | 000/000           |   1/4            | 07/21             |       |
| 第四周      | 050/050           |   1/5            | 07/28             |       |
| 第五周      | 050/100           |   1/6            | 07/35             |       |
| 第六周      | 070/170           |   1/7            | 07/42             |       |
| 第七周      | 080/250           |   1/8            | 07/49             |       |
| 第八周      | 100/350           |   1/9            | 07/56             |       |

标签:2024,arr,函数,初始化,元素,10,20241322,2025,07
From: https://www.cnblogs.com/qiangedaming/p/18548070

相关文章

  • [2024.11.15]NOIP 模拟赛
    赛后的思路永远比赛时清晰。赛时T1玩了一会发现\(a_3\sima_7\)一定是相邻的,所以只需要考虑两个数字即可。答案显然有单调性,所以考虑先二分\(a_2\),再二分\(a_1\)。两个二分的思路都很简单,第二个二分用lower_bound即可。第一个的话其实就是模拟lower_bound内置,赛时调......
  • 2024四川省大学生网络安全技能大赛--crypto
    1、easyrsa题目n=23792583705374189545679156857755903878016250540127710246753745617274304389583344704113138589733408235780341088002610330172981310203101669419279485446903080470828101625401545395900167347886555843342450664942132024224786444135999300216368287......
  • 2024 年 Java 面试最全攻略:程序员求职跳槽必刷题目 1000+,横扫一切技术盲点!
    写在前面马上又要到收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。面经分享今天给大家分享一个面试大厂的完整面经,小伙......
  • YOLOv11改进,YOLOv11结合DynamicConv(动态卷积),CVPR2024,二次创新C3k2结构
    摘要大规模视觉预训练显著提高了大规模视觉模型的性能。现有的低FLOPs模型无法从大规模预训练中受益。在本文中,作者提出了一种新的设计原则,称为ParameterNet,旨在通过最小化FLOPs的增加来增加大规模视觉预训练模型中的参数数量。利用DynamicConv动态卷积将额外的参......
  • YOLOv8改进,YOLOv8结合DynamicConv(动态卷积),CVPR2024,二次创新C2f结构
    摘要大规模视觉预训练显著提高了大规模视觉模型的性能。现有的低FLOPs模型无法从大规模预训练中受益。在本文中,作者提出了一种新的设计原则,称为ParameterNet,旨在通过最小化FLOPs的增加来增加大规模视觉预训练模型中的参数数量。利用DynamicConv动态卷积将额外的参......
  • 京东 2025届秋招 自然语言处理
    文章目录个人情况一面/HR面10min二面/技术面1h三面/技术面1h四面/线下HR面20min个人情况先说一下个人情况:学校情况:211本中9硕,本硕学校都一般,本硕都是计算机科班,但研究方向并不是NLP,而是图表示学习论文情况:1A(NeurIPS)+1B(ICDM)已录用,还有一篇A会(AAAI2025)最近......
  • 百度 2025届秋招提前批 文心一言大模型算法工程师
    文章目录个人情况一面/技术面1h二面/技术面1h三面/技术面40min个人情况先说一下个人情况:学校情况:211本中9硕,本硕学校都一般,本硕都是计算机科班,但研究方向并不是NLP,而是图表示学习论文情况:1A(NeurIPS)+1B(ICDM)已录用,还有一篇A会(AAAI2025)最近快出结果了,以及一......
  • 2024网络安全学习路线 非常详细 推荐学习
    关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学习语言上;2、知识点掌握程度不清楚对于网......
  • 【网络云计算】2024第46周周考-磁盘管理的基础知识-RAID篇
    文章目录1、画出各个RAID的结构图,6句话说明优点和缺点,以及磁盘可用率和坏盘数量,磁盘总的数量2、写出TCP五层模型以及对应的常用协议【网络云计算】2024第46周周考-磁盘管理的基础知识-RAID篇1、画出各个RAID的结构图,6句话说明优点和缺点,以及磁盘可用率和坏盘数量,磁......
  • 2024爆火全网LLM大模型书籍:从零构建大型语言模型,重磅开源教程!!标星20.3K
    自ChatGPT发布以来,大型语言模型(LLM)已经成为推动人工智能发展的关键技术。近期,机器学习和AI研究员、畅销书《Python机器学习》作者SebastianRaschka又写了一本新书——《BuildaLargeLanguageModel(FromScratch)》,旨在讲解从头开始构建大型语言模型的整个过程......