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

这个作业属于哪个课程 [2024-2025-1计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第六周作业
这个作业的目标 学习Polya如何解决问题,简单类型与组合类型,复合数据结构,查找与排序算法,算法复杂度,递归,代码安全
作业正文 https://www.cnblogs.com/wangyihan604505/p/18523157

教材学习内容总结

《计算机科学概论》第七版第七章主要围绕问题求解与算法设计展开,以下是该章节的学习内容总结:

  1. 问题求解过程:介绍了George Pólya的问题求解方法,并将其应用于计算机问题求解。强调了分析问题、列出主要任务、编写算法以及重组和改写的重要性。
  2. 数据结构与类型:区分了简单类型(如整数、浮点数)和复合类型(如数组、结构体)。介绍了复合数据结构机制,如数组、链表、栈和队列等。
  3. 递归算法:解释了递归算法的概念,即一个算法直接或间接地调用自身,并提供了递归算法的例子,如计算阶乘、斐波那契数列等。
  4. 排序算法:介绍了常见的排序算法,包括选择排序、插入排序、冒泡排序和快速排序,并分析了每种排序算法的时间复杂度和空间复杂度。
  5. 检索算法:介绍了线性检索和二分检索两种基本的检索算法,并强调了二分检索在有序数组中的高效性。
  6. 算法设计原则:强调了信息隐蔽、抽象和模块化在算法设计中的重要性,并介绍了良好的命名规范和注释习惯对于提高算法可读性和可维护性的帮助。
  7. 测试与调试:介绍了白盒测试和黑盒测试两种测试方法,并强调了测试在算法设计和实现过程中的重要性,以及调试技巧和方法。
    通过这些内容,我们更好地理解了如何有效地解决问题,设计和实现算法,并确保算法的正确性和效率。
    《C语言程序设计》第五版第五章的学习内容总结如下:
  8. 算法的概念及其描述方法
    • 算法:算法是解决特定问题的明确、有限的步骤序列。它具有输入、输出、明确性、有限性、可行性等特点。
    • 描述方法:算法可以通过多种方式描述,包括自然语言、流程图、伪代码和编程语言。每种方法都有其优势,自然语言易于理解,流程图直观,伪代码介于自然语言和编程语言之间,而编程语言则可以直接实现。
  9. 关系运算符与关系表达式
    • 关系运算符:用于比较两个值之间的关系,常见的关系运算符包括==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
    • 关系表达式:由关系运算符连接的表达式,用于产生布尔值(真或假)。例如,a > b是一个关系表达式,如果a的值大于b的值,则表达式为真。
  10. 用于单分支控制的条件语句
    • 单分支控制通常指的是if语句,它允许程序根据条件是否为真来执行一段代码。如果条件为真,则执行if块中的代码;如果条件为假,则跳过这部分代码。
  11. 用于多分支控制的条件语句
    • 多分支控制通常指的是if-else语句或if-else if-else语句链。这些结构允许程序根据多个条件执行不同的代码块。if语句检查第一个条件,如果为真,则执行相应的代码块;如果为假,则检查下一个else if条件,依此类推,直到找到为真的条件或到达else块(如果没有条件为真,则执行else块中的代码)。
  12. 用于多路选择的Switch语句
    • switch语句用于根据一个变量的值选择多个选项中的一个来执行。switch语句包含一个表达式,该表达式的结果用于与case标签进行比较。如果匹配,则执行该case块中的代码,并通过break语句退出switch结构,以防止“穿透”到下一个case
  13. 逻辑运算符和逻辑表达式
    • 逻辑运算符:用于组合多个布尔表达式,产生一个新的布尔值。常见的逻辑运算符包括&&(逻辑与)、||(逻辑或)、!(逻辑非)。
    • 逻辑表达式:由逻辑运算符连接的表达式,用于控制程序流程。例如,a && b是一个逻辑表达式,只有当ab都为真时,整个表达式才为真。
  14. 用于双分支控制的条件语句
    • 双分支控制通常指的是if-else语句,这是最基本的条件控制结构之一。它允许程序基于一个布尔条件来选择两条执行路径中的一条:
      • 如果条件为真(true),则执行if块中的代码。
      • 如果条件为假(false),则执行else块中的代码。
  15. 条件运算符(三元运算符)
    • 条件运算符,也称为三元运算符,是一种简洁的条件选择语句,其语法形式为:条件 ? 表达式1 : 表达式2。如果条件为真,则整个表达式的值为表达式1的值;如果条件为假,则为表达式2的值。例如:
      int max = (a > b) ? a : b;
      
      这行代码的含义是:如果a大于b,则max的值为a,否则为b
  16. 条件表达式
    • 条件表达式是使用条件运算符构建的表达式,它允许在单行内进行条件选择。条件表达式通常用于赋值、函数返回值等场景,以简化代码并提高可读性。条件表达式依赖于条件运算符来实现。
      这些控制结构和运算符是编程语言中处理条件逻辑的基础工具,它们使得程序能够根据不同的输入或状态做出决策,并执行相应的操作。通过合理使用这些工具,我们可以编写出既灵活又高效的代码。

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

问题一:if-else语句和switch语句的区别什么?分别在哪种情况下可用?
解决方法:AI答:if-else语句和switch语句都是用于条件控制的语句,但它们在用途和效率上有所不同。以下是它们的主要区别以及适用场景:

if-else语句

特点

  1. 条件多样性if-else语句可以处理任何类型的条件判断,包括复杂的逻辑表达式。
  2. 灵活性:可以嵌套使用,实现多分支控制。
  3. 适用性:适用于需要根据多个条件执行不同代码块的场景。
    适用场景
  • 当需要根据多个不同的条件执行不同的代码块时。
  • 当条件判断较为复杂,涉及多个变量和逻辑运算符时。
  • 当需要根据条件的真假来执行不同的操作,并且这些条件不是基于单一变量的值时。

switch语句

特点

  1. 效率switch语句在某些情况下比多个if-else语句更高效,因为它通过跳转表(在某些编译器实现中)来实现,可以快速定位到对应的case标签。
  2. 简洁性switch语句在处理多个固定值的比较时,代码更加简洁。
  3. 限制性switch语句只能用于比较一个变量或表达式的值与多个固定值。
    适用场景
  • 当需要根据单一变量的不同值执行不同的代码块时。
  • 当变量的可能值是离散的、有限的,并且这些值是固定的(如枚举类型或特定的常量)。
  • 当代码的可读性和维护性比执行效率更重要时。

区别总结

  • 条件复杂度if-else适用于条件判断较为复杂的情况,而switch适用于条件判断基于单一变量的固定值。
  • 执行效率:在某些情况下,switch语句可能比if-else语句更高效,尤其是在处理大量固定值的比较时。
  • 代码可读性switch语句在处理固定值的比较时,代码更加简洁和清晰。
  • 适用性if-else语句适用于需要根据多个条件执行不同代码块的场景,而switch语句适用于基于单一变量值的多路选择。
    在选择使用if-else还是switch时,需要根据具体的应用场景和需求来决定。
    问题二:Switch语句中为什么一定要加break?
    解决方法;AI答:在switch语句中使用break的原因是为了终止当前case块的执行,并退出switch语句。如果不加break,会发生以下情况:
  1. “穿透”现象(Fall-through):如果没有break,程序会继续执行下一个case块的代码,即使该case的条件不满足。这种现象称为“穿透”。这意味着,除非程序员明确地在每个case块的末尾放置一个break,否则switch语句的行为可能不是预期的。
  2. 控制流的不确定性:如果没有break,程序的控制流将变得不确定,因为程序会继续执行所有后续case块的代码,直到遇到一个breakswitch语句结束。这可能导致程序执行错误的代码块,或者执行更多的代码,从而影响程序的正确性和效率。
  3. 代码可读性和可维护性:在每个case块后添加break可以提高代码的可读性和可维护性。它明确地表明每个case块是独立的,并且只执行与当前条件匹配的代码块。
  4. 避免逻辑错误:在没有break的情况下,程序员可能会错误地认为只有匹配的case会被执行,而实际上所有后续的case也会被执行,这可能导致逻辑错误。
  5. 编译器警告:一些编译器会警告没有breakcase,因为这是一个常见的编程错误,编译器试图提醒开发者可能的逻辑问题。
    例外情况:在某些情况下,程序员可能故意不使用break来利用“穿透”现象,这通常是在所有case块执行相同代码的情况下。但是,即使在这种情况下,最好的做法是在最后一个case块之后放置一个break,以避免将来添加新的case时意外地创建了另一个穿透。
    总的来说,breakswitch语句中是确保程序按照预期执行的关键,它防止了意外的代码执行和逻辑错误。

基于AI的学习

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

问题:实验二中的代码不够简练,重复语句过多。
解决方案:查看教材,询问AI,最终把重复语句删掉,再加了一些别的语句,代码变得更加简洁有力。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 200/400 1/3 18/38
第三周 300/700 1/4 20/58
第四周 400/1100 1/5 22/80
第五周 300/1400 1/6 22/102
第六周 400/1800 1/7 25/127

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

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

相关文章

Me-and-My-Girlfriend-1靶机渗透 (Vulnhub内网渗透)

一、Me-and-My-Girlfriend-1: 1、渗透目标: Description: This VM tells us that there are a couple of lovers namely Alice and Bob, where the couple was originally very romantic, but since Alice worked at a private company, "Ceban Corp", something …

pc大屏适配

在文件utils里配置 const baseSize = 12 //设置rem函数 function setRem() {//页面宽度相对于设计图宽的缩放比例,根据需要修改 1920(设计稿宽度)const scale = document.documentElement.clientWidth / 1920;// 设置页面根节点字体大小(match.min(scale,2)"指最高放大比…

高级语言程序设计第五次个人作业

2024高级语言程序设计:https://edu.cnblogs.com/campus/fzu/2024C 高级语言程序设计课程第五次个人作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13298 学号:102400111 姓名:蔡伟仡 8.11.18.11.28.11.38.11.48.11.58.11.68.11.78.11.89.11.19.11.29.11.39.11.49.11…

数据采集与融合技术实践作业三

数据采集与融合技术实践作业三 gitee链接:https://gitee.com/wei-yuxuan6/myproject/tree/master/作业3 作业① Scrapy爬取图片实验要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。使用scrapy框架分别实现单线程和多线…

固态移动硬盘不识别数据恢复

当固态移动硬盘不被识别时,数据恢复成为一个关键问题。以下是一些有效的数据恢复方法: 一、检查连接与驱动程序 检查连接:首先确认固态移动硬盘的连接是否正确,包括SATA接口、电源连接(如果适用)以及USB线或其他转接线是否损坏或松动。对于外置硬盘,确保连接线和转接器没…

OpenGL编程指南(原书第9版)

百度网盘下载地址: https://pan.baidu.com/s/1ATLvMOcW1jwBXSygOg3xUA 关注微信公众号 回复 1100 获取提取码:

30 万维网

互联网是传输数据的管道, 万维网是互联网上的上一层,是一个程序,传输最多数据的程序,可以用浏览器访问万维网 超文本,超链接 每个网页有唯一地址,这个地址叫统一资源定位器url 网页有书写标准hyml等等 搜索引擎: 1爬虫,跟着链接到处跑,看到新连接就加进自己的列表 2不…

apisix~相关组件的图形化说明

参考:https://docs.api7.ai/apisix/key-concepts/plugins Apache APISIX是Apache软件基金会下的顶级项目,由API7.ai开发并捐赠。它是一个高性能的云原生API网关,具有动态、实时等特点。 APISIX网关可作为所有业务的流量入口,为用户提供了丰富的功能,包括动态路由、动态上游…

Django Swagger文档库drf-spectacular

在使用DRF的时候,通常的文档有:默认文档RestFrameWork、CoreAPI、Swagger,Swagger是最流行的API文档库,在绝大多数服务端开发中都有用到,之前我们使用了CoreAPI来生成文档,一方面是它不够流行,没办法和其他工具结合,另一方面可能是我不熟悉,所有有些接口并不能按照我们…

Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList

String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet文章目录 一、Redis数据结构概述1.1 Redis有哪些数据类型 1.2 Redis本质是哈希表 1.3 Redis的哈希冲突与渐进式rehash 1.4 数据结构底…

AQS

目录AQS简介AQS原理AbstractQueuedSynchronizer类state共享变量CLH队列Node属性独占式分析acquire独占式获取锁tryAcquireaddWaiterenqacquireQueuedshouldParkAfterFailedAcquireparkAndCheckInterruptfinally代码块selfInterruptrelease独占式锁释放unparkSuccessoracquireln…

高级语言程序设计第5次作业

高级语言程序设计课程第四次个人作业 这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13298 学号:102300303 姓名:梁佳 第八章第1题第2题第3题第4题第5题第6题第7题第8题第九章第…