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

news/2024/12/26 23:27:56/文章来源:https://www.cnblogs.com/qiangedaming/p/18548070

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}; // 将所有元素初始化为02. 显式地为每个元素赋值:【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             |       |

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

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

相关文章

echarts 画一个南丁格尔玫瑰饼图

const datas = [{name: 无信号,value: 5,label: { color: #06B7FFFF }},{name: 正常,value: 8,label: { color: #69D85DFF }},{name: 报警,value: 7,label: { color: #FA6400FF }},{name: 警告,value: 4,label: { color: #F7B500FF }} ]option = {tooltip: {trigger: item,form…

数字孪生技术:如何实现智能制造与城市管理的全新升级

在现代的数字化转型过程中,数字孪生技术成为许多行业实现智能化升级的重要推动力。而作为领先的可视化平台,山海鲸可视化通过其强大的鲸孪生组件,将数字孪生技术与可视化紧密结合,为企业和行业用户提供了一种全新的方式来管理、监控和优化复杂系统。下面我们将详细介绍山海…

【鸣潮,原神PC端启动器】仿二次元手游PC端游戏启动器,以鸣潮为例。

二游GAMELanucher启动器 1.前言许多二次元手游(原神,鸣潮,少女前线)的PC端启动器都是使用Qt做的,正好最近正在玩鸣潮,心血来潮,便仿鸣潮启动器,从头写一个。先下载一个官方版的PC启动器,找到图标,背景图等素材,然后对着界面写代码就行。效果如下2. 划分模块游戏启动…

css动态检测视口屏幕的尺寸

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>css动态检测屏幕的视口尺寸</title><…

自定义注解进行数据脱敏

前言 有些时候,我们可能对输出的某些字段要做特殊的处理在输出到前端,比如:身份证号,电话等信息,在前端展示的时候我们需要进行脱敏处理,这时候通过自定义注解就非常的有用了。在Jackson中要自定义注解,我们可以通过@JacksonAnnotationsInside注解来实现,如下示例: 一…

openVAS安装记

项目需要使用openVAS 安装步骤 我这里使用的是Ubuntu最新版,因为Ubuntu和debian可通过官网仓库进行安装,因改名为gvm 后续直接上操作 #安装 sudo apt install gvm -y #初始化(可能时间比较长,台会去下载数据库) sudo gvm-setup# 开机自启服务 sudo systemctl enable notus-…

爆火的外卖霸王餐项目,怎么做?

微客云以下是一些做爆火的外卖霸王餐项目的方法: ### 明确项目定位与目标- **确定核心目标**:明确是为了增加新用户、提高复购率、提升品牌知名度还是收集用户反馈等,不同目标决定后续策略 。- **精准定位用户群体**:了解目标用户的消费习惯、喜好、需求及消费能力等,如上…

轮廓线DP

讲解轮廓线DP的两种常见形式以及例题。更新日志概念 类似于状态压缩DP,但我们储存的是轮廓线上的状态。 有些时候,也不需要进行状态压缩,而可以用某一点的状态代表一个区域的状态。 思路 轮廓线就是已经决策的与尚未决策的部分的分界线,我们储存分界线上已经决策过的所有节…

Nuxt.js 应用中的 schema:written 事件钩子详解

title: Nuxt.js 应用中的 schema:written 事件钩子详解 date: 2024/11/15 updated: 2024/11/15 author: cmdragon excerpt: schema:written 钩子是 Vite 提供的一种生命周期钩子,在模式写入完成后调用。通过这个钩子,开发者可以在配置被正式应用之后执行一些后续操作,比如记…

概率与期望基础

实验、结果、样本空间、事件 事件 \(A\) 是否发生取决于一系列影响它的因素,这些因素影响 \(A\) 的过程称为一次 experiment 实验 或 trial 试验 一次试验的 result 结果 称为它的 outcome 结局。\(\text{result}\) 指由原因所引起的结果 \(\text{outcome}\) 强调事件特有的结…

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明 @目录4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明前言1. Ribbon 介绍1.1 LB(Load Balance 负载均衡)2. Ribbon 原理2.2 Ribbon 机制3. Spring Cloud Ribbon 实现负载均衡算法-应用实例4. 总结:5. 最后:前…

WSL2的介绍和使用

WSL2的介绍和使用 一、什么是WSL2? WSL是Windows Subsystem for Linux的简称,它是微软为Win10和Win11引入的一项功能。WSL允许用户在Windows上运行Linux操作系统及其相关命令和应用程序,而无需使用虚拟机或安装双系统。 1.1 WSL2与WSL1、传统虚拟机比较WSL1:没有完整的Linu…