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

news/2025/1/16 4:44:38/文章来源:https://www.cnblogs.com/Xseventeen/p/18499565
班级链接 2024计算机基础与程序设计
作业要求 第六周作业
作业目标 ①Polya如何解决问题 ②简单类型与组合类型 ③复合数据结构 ④查找与排序算法 ⑤算法复杂度 ⑥递归 ⑦代码安全

教材学习内容总结

《计算机科学概论》第七章

  • 如何解决问题,包括提出问题、寻找熟悉的情况、分治法、算法、计算机问题求解过程、方法总结以及测试算法。
  • 有简单变量的算法,如带有选择的算法和带有循环的算法。
  • 复杂变量,例如数组和记录。
  • 搜索算法,包括顺序搜索、有序数组中的顺序搜索和二分检索。
  • 排序算法,如选择排序、冒泡排序和插入排序。
  • 递归算法,涉及子程序语句、递归阶乘、递归二分检索和快速排序。
  • 几个重要思想,包括信息隐蔽、抽象、事物命名和测试。

《C语言程序设计》第五章

  • 选择结构的基本概念:
    选择结构的用途,即根据不同的条件选择不同的执行路径。
  • if语句:
    if语句的使用方法,包括基本的if语句、if-else语句以及if-else if-else结构。这部分还讨论了if语句的嵌套使用,即在一个if语句内部包含另一个if语句。
  • 关系运算符和关系表达式:
    使用关系运算符(如>、<、==等)来构造关系表达式,并用这些表达式作为条件判断。
  • 逻辑运算符和逻辑表达式:
    逻辑运算符(如&&、||、!等)的用法,以及使用这些运算符来组合多个条件判断。
  • 条件运算符和条件表达式:
    条件运算符(也称为三元运算符)的用法,是一种简洁的方式来进行条件选择。
  • switch语句:
    switch语句的用法,这种语句可以用于实现多分支的选择结构,特别适合于有多个互斥选择的情况。

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

问题1:如何区分if-else语句和switch语句的使用情况?
AI:
使用if-else语句的情况:

  1. 当你需要根据一个范围或连续的值来做决策时。
  2. 当条件涉及复杂的表达式或多个条件需要组合时(使用逻辑运算符)。
  3. 当你需要根据一个条件的不同结果执行不同的代码块,并且这些结果不是离散的固定值。

使用switch语句的情况:

  1. 当你需要根据离散的固定值来做决策时。
  2. 当变量或表达式的值是有限且已知的,比如某个枚举类型或固定选项集。
  3. 当你想要避免多个if-else语句的嵌套,使代码更加清晰和简洁。

问题2:当代码逻辑不按预期工作,特别是当涉及多个嵌套条件时,如何调试选择结构?
AI:

  1. 理解预期行为:
    在调试之前,确保你完全理解代码应该做什么。这包括了解每个条件语句的预期逻辑和结果。
  2. 添加打印语句:
    在关键的决策点添加打印语句(例如printf或cout),以显示变量的值和程序的执行路径。
    打印出条件表达式的值,看看它们是否如预期那样被评估为真或假。
  3. 使用调试器:
    使用集成开发环境(IDE)中的调试工具,如GDB、Visual Studio Debugger、Eclipse Debugger等。
    设置断点在条件语句之前,逐步执行代码,观察变量的值和程序的流程。
  4. 检查条件表达式:
    确保条件表达式正确无误。有时候,一个小小的错误,比如错误的比较运算符或括号使用不当,都可能导致逻辑错误。
  5. 简化条件:
    临时简化复杂的条件表达式,以测试基本的逻辑是否按预期工作。例如,你可以将一个复杂的if语句替换为一个简单的true或false,看看程序的反应。
  6. 逻辑分支测试:
    确保每个逻辑分支都被测试到。这可能意味着为每个if、else if和else块提供测试用例。
  7. 重构条件逻辑:
    如果条件逻辑过于复杂,考虑重构。可能通过提取函数、使用多态、策略模式或其他设计模式来简化。

基于AI的学习


学习进度条

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

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

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

相关文章

在使用asm包进行动态类加载的时候的打包问题

如图所示,开发时使用的jdk包下面的asm包,在进行打包时提示asm包不存在,打包方式使用如下: 目前提供两种解决方案: 1:修改打包方式,将jdk的包也打进去:<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> &…

线段树 树状数组

线段树 常用于维护区间值 代码 和题解有很大差异,但是过了就好 void Pushup(int x) {s[x]=(s[x<<1]+s[x<<1|1]); } void Pushdown(int x,int l,int r) {s[x]=(s[x]+ad[x]*(r-l+1));if(l!=r) ad[x<<1]=(ad[x<<1]+ad[x]);if(l!=r) ad[x<<1|1]=(ad…

AI智能分析视频分析网关区域人数不足检测算法:智能监控的新篇章

在当今社会快速发展的背景下,公共场所如购物中心、交通枢纽、教育机构等地的人群聚集现象越来越普遍。如何高效地管理和控制这些区域的人流,保障安全的同时提升服务水平,成为一个迫切需要解决的挑战。传统的人流统计方法,例如人工计数或基础的传感器技术,常常因效率低和准…

Scrum适用于什么样的项目团队

Scrum适用于以下类型的项目团队:一、跨功能团队;二、小型至中型团队;三、自我组织团队;四、敏捷愿望团队;五、拥有开放沟通文化的团队;六、追求迭代增量开发的团队;七、善于应对变化的团队。其中,跨功能团队是Scrum适用的核心条件,它能够独立完成项目的各个阶段。一、…

HTB-Cicada 靶机笔记

Cicada 靶机笔记 概述 HTB 的靶机 Cicada 靶机 靶机地址:https://app.hackthebox.com/machines/Cicada 很有意思且简单的 windows 靶机,这台靶机多次利用了信息枚举,利用不同的信息一步一步获得 root 权限 一、nmap 扫描 1)端口扫描 -sT tcp 全连接扫描 --min-rate 以最低…

云原生开源开发者沙龙丨AI 应用工程化专场杭州站邀您参会

云原生开源开发者沙龙 AI 原生应用架构专场,邀您一起交流,探索 AI 原生应用的工程化落地!云原生开源开发者沙龙 AI 原生应用架构专场,邀您一起交流,探索 AI 原生应用的工程化落地! 活动简介 AI 驱动的应用程序开发、部署和运维,给应用带来了新的生命力和想象空间。但大部…

ACloudGuru-博客中文翻译-一-

ACloudGuru 博客中文翻译(一)原文:ACloudGuru Blog 协议:CC BY-NC-SA 4.0放大管理用户界面:开发人员的 10 个激动人心的特性原文:https://acloudguru.com/blog/engineering/10-exciting-features-of-the-new-amplify-admin-ui本周 AWS 发布了一个主要的新功能——Amplify …

Linux系统调用和库函数的区别是什么

Linux系统调用和库函数是在程序设计中常用的两个概念,具有明显的差异。1、系统调用:是操作系统内核提供的功能接口,用于执行核心操作,如文件管理、进程控制等;2、库函数:是用户空间提供的封装好的函数库,如C库、数学库等。区别主要体现在执行级别、性能、功能和使用场合…

通义灵码知识库问答增强:知识库构建与管理指南

通义灵码能够结合企业知识库的私域数据,生成贴合企业特点的回答。充分发挥检索增强技术的优势,构建高质量的企业知识数据以及合理的知识库权限管理是必不可少的。本文将为您详细介绍如何构造与管理一个高质量的企业知识库。作者:垚佳、汐遥 通义灵码能够结合企业知识库的私域…

[GWCTF 2019]xxor

[GWCTF 2019]xxor 首先可以到汇编界面从新定义(U+P)一下main函数,不然看着会有点乱 分析追踪input变量 可以看到每次循环是获取四字节的输入 但后面对于tmp变量的赋值我就有点看不懂了,不要紧,直接动调 动态调试 连接linux,下断点开调我不知道为什么输入字符会直接跳出循…

快速幂和大数取模的简单运用(以SPOJ LASTDIG - The last digit为例)

题目描述原文Nestor was doing the work of his math class about three days but he is tired of make operations a lot and he should deliver his task tomorrow. His math’s teacher gives him two numbers a and b. The problem consist of finding the last digit of t…