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

news/2024/11/15 23:09:01/文章来源:https://www.cnblogs.com/yaohang/p/18548842

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第八周作业
这个作业的目标 1、功能设计与面向对象设计 2、面向对象设计过程 3、面向对象语言三要素 4、汇编、编译、解释、执行
作业正文 本博客链接

教材学习内容总结

《计算机科学概论》第九章内容总结

• 面向对象设计(OOD):介绍了面向对象设计的基本思想,包括类和对象的概念。类是对象的蓝图,而对象是类的实例。面向对象设计强调数据(对象)和行为(方法)的封装。

• 面向对象语言的要素:讨论了面向对象语言的三个核心要素:封装、继承和多态。封装是指将数据和操作封装在类中,继承允许新类继承现有类的属性和方法,而多态则是指允许不同类的对象对同一消息做出不同的响应。

• 程序设计语言范型:介绍了不同的程序设计范型,包括命令式范型(如面向过程和面向对象)和声明式范型(如函数式和逻辑式)。每种范型都有其特定的编程风格和解决问题的方法。

• 编译器和解释器:解释了编译器和解释器的区别,编译器将高级语言代码转换成机器码,而解释器则直接执行高级语言代码或字节码。

• 数据类型和结构:讨论了数据类型的重要性,包括基本数据类型(如整数、实数、字符和布尔型)和复合数据类型(如字符串和数组)。同时,也介绍了强类型语言和弱类型语言在数据类型处理上的差异。

• 控制结构:介绍了控制结构的重要性,包括选择结构(如if-else语句)、循环结构(如while和for循环)和子程序(函数和过程)。

• 布尔表达式和逻辑编程:探讨了布尔表达式在编程中的作用,以及逻辑编程的基本概念,包括事实、规则和询问。

• 输入/输出结构:讨论了输入/输出结构在程序设计中的重要性,以及如何在程序中实现输入和输出。

• 高级程序设计语言的功能性:强调了高级语言在设计中提供的功能,如布尔表达式、数据类型和控制结构,以及它们如何简化程序设计并提高安全性。
《C语言程序设计》第七章内容总结
函数与模块化程序设计
7.1 分而治之与信息隐藏
1、分而治之:较大任务分解成若干个较小、较简单的任务,并提炼出公用任务的方法。
2、模块化程序设计
信息隐藏
7.2 函数的定义
7.2.1 函数的分类
1、标准库函数:如printf()\scanf()
2、自定义函数
7.2.2 函数的定义
内部变量:在函数体内部定义的变量只能在函数体内访问。
形式参数:函数头部参数表里的变量。
形参表:函数的入口。
若函数没有函数返回值,则需用void定义返回值的类型。
7.3 向函数传递值和从函数返回值
7.3.1 函数调用
实际参数
主调函数
被调函数
参数传递
注:函数返回值只有一个,返回值可以是除数组以外的任何类型。
7.3.2 函数原型
例:

include <stdio.h>

// 函数功能:用迭代法计算 n!
long Fact(int n)
{
int i;
long result = 1;
for (i = 2; i <= n; i++)
{
result *= i;
}
return result;
}

int main(void)
{
int m;
long ret;
printf("Input m:");
scanf("%d", &m);
ret = Fact(m); // 调用函数 Fact(), 并将函数的返回值存入 ret
printf("%d! = %ld\n", m, ret);
return 0;
}
7.3.3函数封装与防御性程序设计
1、函数封装
2、程序的健壮性
3、防御式编程
7.3.4 函数设计的基本原则
1、规模要小
2、函数功能要单一
3、每个函数只有一个入口和一个出口
4、清楚定义函数的行为
5、参数有效性检查
6、检查合法性
7.4 函数的递归调用和递归函数
1、一般情况
2、极限情况
3、递归调用:在函数内直接或间接地自己调用自己
7.5 变量的作用域和生存期
7.5.1 变量的作用域
语句块:程序中被花括号括起来的区域
全局变量:不在任何语句块内定义的变量
局部变量:在除3整个程序以外的其他语句块内定义的变量
7.5.2 变量的生存期
存储类型:
1、自动变量:auto 类型名 变量名
2、静态变量:static 类型名 变量名
3、外部变量:extern 类型名 变量名
4、寄存器变量:register 类型名 变量名
7.6 模块化程序设计
1、基本原则:高聚合、低耦合,保证每个模块的相对独立性
2、自顶而下、逐步求精
3、模块化程序设计与多文件编程实例
4、条件编译
7.7 代码风格
1、代码行
2、对齐与缩进
3、空行及代码行内的空格
4、长行拆分
5、程序注释

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

问题一:什么是设计模式,它们为什么有用?
解答:什么是设计模式?

设计模式是在软件设计中针对常见问题的典型解决方案。它们是经过时间检验的、可重用的解决方案,可以帮助开发者在面对特定设计问题时,快速地找到合适的解决方法。

设计模式的分类:

• 创建型模式:这些模式涉及到对象的创建,目的是创建对象时使程序的结构更加灵活和可扩展。常见的创建型模式包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)和建造者模式(Builder)。

• 结构型模式:这些模式关注对象和类的组合,目的是使程序的结构更加清晰和合理。常见的结构型模式包括适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)和外观模式(Facade)。

• 行为型模式:这些模式涉及到对象之间的通信,目的是提高程序的灵活性和可维护性。行为型模式包括策略模式(Strategy)、状态模式(State)、观察者模式(Observer)、模板方法模式(Template Method)和命令模式(Command)。

设计模式为什么有用?

• 提高代码重用性:设计模式提供了通用的解决方案,可以在不同的项目中重用,减少重复劳动。

• 促进团队沟通:设计模式是广泛认可的,它们提供了一种共同的语言,有助于团队成员之间的沟通和理解。

• 提高代码质量:设计模式是经过实践检验的解决方案,使用它们可以提高代码的可维护性和可扩展性。

• 解决常见问题:设计模式针对的是软件开发中常见的问题,它们提供了经过验证的解决方案。

• 促进设计思想:设计模式鼓励开发者从更高层次思考问题,关注设计的抽象层面,而不是仅仅关注实现细节。

通过学习和应用设计模式,开发者可以提高自己的设计能力,编写出更加健壮、灵活和可维护的软件。

问题二:C语言里大部分的函数都需要定义,为什么有的函数可以直接用?请你举例哪些函数可以直接用
解答:在C语言中,并不是所有的函数都需要显式定义后才能使用。可以直接使用的函数通常是那些已经被标准库提供的函数,或者是编译器内置的函数。这些函数在编译时已经链接到了程序中,因此可以直接调用。以下是一些可以直接使用的函数的例子:

• 标准输入输出函数:

printf():用于格式化输出到标准输出(通常是屏幕)。

scanf():用于从标准输入(通常是键盘)读取格式化的数据。

• 数学函数(需要包含头文件math.h):

sqrt():计算平方根。

pow():计算幂。

sin(),cos(),tan():计算三角函数值。

• 字符串处理函数(需要包含头文件string.h):

strlen():计算字符串的长度。

strcpy():复制字符串。

strcmp():比较两个字符串。

• 内存分配函数(需要包含头文件stdlib.h):

malloc():分配指定大小的内存。

calloc():分配内存并初始化为0。

free():释放之前分配的内存。

• 时间日期函数(需要包含头文件time.h):

time():获取当前时间。

• 随机数生成函数(需要包含头文件stdlib.h):

rand():生成一个随机数。

• 类型转换函数:

atoi():将字符串转换为整数。

atof():将字符串转换为浮点数。

这些函数之所以可以直接使用,是因为它们的定义在相应的库文件中已经提供,而这些库文件在编译时会被链接到你的程序中。当你在程序中调用这些函数时,编译器会查找它们的定义,并在生成的可执行文件中包含这些函数的代码。

需要注意的是,即使这些函数可以直接使用,你仍然需要在程序中包含相应的头文件,以便编译器能够识别函数原型并正确地链接到这些函数的实现。例如,如果你在程序中使用了printf()函数,你需要在程序的顶部包含#include <stdio.h>

基于AI的学习

代码调试中的问题和解决过程

问题一:青蛙蹦极CP1277题循环不知道用什么方式控制停或运行
解决:通过询问AI,知道Flag变量可以很好的用在此循环中完成控制(该程序较难理解)

学习进度条

计划学习时间:20h
实际学习时间:20h

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

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

相关文章

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现一

功能点:管理员信息实体类Entity、宠物信息实体类Entity、宠物领养记录信息实体类Entity、宠物评论信息实体类Entity、宠物评论回复信息实体类Entity、用户信息实体类Entity 技术点:SSM+JSP+Mysql+Bootstrap+JS+CSS 免费学习:猿来入此一、前言介绍: 免费学习:猿来入此 1.1 …

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

2024-2025-1 20241320 《计算机基础与程序设计》第8周学习总结 作业信息 |这个作业属于哪个课程| https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP |这个作业要求在哪里| https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08 |这个作业的目标| 功能设计与面向对象设…

项目冲刺11.15

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 进行为期七天的项目冲刺并记录前言 本篇博客是项目冲刺的第七篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客第七篇博客团队简介队名 拖延是你不…

Latex 安装

使用的开发环境是 VSCode. Latex 在编译时需要用到宏包. 宏包到底是啥? 有啥作用? 从何处下载? Latex 软件的安装:texlive: 一次性下载所有的宏包. 磁盘需求较大, 约 7 ~ 8 G.miktex: 仅下载必要的宏包, 编译时补充下载宏包. 磁盘需求较小, 约几百 M.清华大学开源软件镜像站…

20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:…

Windows程序设计指南

Windows程序设计指南“到Petzold的书中找找”——仍然是解决Windows程式开发各种疑难杂症时的灵丹妙药。在第五版的《Windows程式开发设计指南》中,作者身为倍受敬重的WindowsPioneerAward(Windows开路先锋奖)得主,依据最新版本Windows作业系统,以可靠的取材资料校定这一本…

Windows高级调试

Windows高级调试中文版文档摘要: 本书《Windows高级调试》主要讲解Windows高级调试技术和工具,包括调试器简介、调试器揭密、符号文件与源文件的管理、栈内存破坏、堆内存破坏、安全、进程间通信、资源泄漏、同步、编写定制的调试扩展、64位调试、事后调试、Windows Vista基础…

iman——冲刺日志(第四天)

又一阉割版 团队成员分工与进度 📝👥组别 成员 完成的任务 完成任务所用时间 (小时) 剩余时间 (小时)前端 阿依娜孜 完成了行程概览地图中标记连线与探索功能的删除与添加。 3 2前端 郭剑敏 实现了地图标点的驾车路线绘制功能。 3 1前端 王梓铭 优化了主页与导航栏布局,提…

1.11--06:月度开销

http://noi.openjudge.cn/ch0111/06/月度开销题目传送门思路 给定连续N天的开销,需要将这些天分成M个财政周期,使得开销最多的财政周期的开销尽可能少。 首先,我们可以确定一个财政周期的长度l,即将N天平均分成M个财政周期。这样每个财政周期的长度就是N/M。 然后,我们需要…

SIM Jacker攻击分析

攻击者使用普通手机发送特殊构造的短信即可远程定位目标,危害较大。sim卡的使用在手机上的使用非常普遍,所以一旦SIM卡上出现什么问题就会造成非常大的影响。在19年的报告纰漏中,在全球估算共有10亿设备的sim卡容易遭受SIMJacker攻击,这篇也是比较浅显的对整个攻击进行分析…

shell动态修改yml配置实例

yq安装https://github.com/mikefarah/yq/tree/master每个yq版本支持的选项参数都不一样修改Dockerfile[root@instance base-tlog-test]# vi Dockerfile FROM 192.168.30.113/library/java:latest ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &am…

『模拟赛』NOIP2024加赛5

Rank 反向挂分大王A. 暴力操作(opt) 签,但是没有人签。 都想到了二分和更新 c 值,但是 c 多多少少没更到最优。 首先还是调和级数预处理,倒序取 min。然后考虑到超过 \(m\) 的也有可能产生更小的代价,因此 \(\mathcal{O(n)}\) 枚举一遍找到最小的 \(j\) 使 \(i\times j\g…