首页 > 其他分享 >2024-2025 20241323 第八周学子任务总结

2024-2025 20241323 第八周学子任务总结

时间:2024-11-15 22:40:15浏览次数:1  
标签:面向对象 2025 int 2024 20241323 数组名 数组 ptr 指针

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

教材学习内容总结
计算机科学概论
功能设计与面向对象设计
功能设计是按照产品定位的初步要求,在对用户需求及现有产品进行功能调查分析的基础上,对所定位产品应具备的目标功能系统进行概念性构建的创造活动。而面向对象设计(Object-Oriented Design,OOD)则是一种软件设计方法,它采用与结构化设计不一样的视角,将世界抽象成一系列具有一定职责的自由数据个体(即对象),这些对象之间相互协作,共同完成高级的行为。
面向对象设计过程
面向对象设计过程是一个抽象的过程,它根据业务需求,关注与业务相关的属性和行为,忽略不必要的属性和行为,由现实世界中的“对象”抽象出软件开发中的“对象”。这一过程通常包括以下几个步骤:

  1. 发现类:通过在需求中找出名词的方式确定类。
  2. 发现类的属性:进一步细化类的特征,明确每个类所包含的属性和数据。
  3. 发现类的方法:通过找出动词的方式确定方法,即类能够执行的操作或行为。
    此外,面向对象设计还需要关注对象之间的关系,如组合、继承、分类、扩展等,并使用这些关系来描述对象之间的交互。
    面向对象语言三要素

面向对象语言通常包含以下三个基本要素:

  1. 封装(Encapsulation):封装把数据和动作集中在一起,使数据和动作的逻辑属性与他们的实现细节分离。它实现了信息隐蔽,使得类的内部状态只能通过类提供的方法进行访问和修改,从而提高了代码的安全性和可维护性。
  2. 继承(Inheritance):继承是指类获取其他类的属性(数据字段和方法)的机制。通过继承,新的类(派生类或子类)可以继承已有类(超类或基类)的属性和方法,从而实现代码的重用和扩展。
  3. 多态(Polymorphism):多态是语言在运行时确定给定调用将执行哪些可能的方法的能力。它允许一个接口或父类引用指向子类对象,并在运行时根据对象的实际类型调用相应的方法。多态性提高了代码的灵活性和可扩展性。
    需要注意的是,有些资料将“共享性”也列为面向对象语言的一个要素,但“封装性(信息隐蔽)”是更为核心和普遍接受的一个要素。
    汇编、编译、解释、执行
  4. 汇编:汇编语言是一种低级编程语言,它用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。汇编语言需要通过汇编器翻译成机器码才能执行。汇编语言与特定的机器语言指令集一一对应,因此不同平台之间不可直接移植。
  5. 编译:编译是将高级编程语言(如C、C++、Java等)编写的源代码转换为可执行的机器语言的过程。编译过程通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。编译后的程序可以直接在目标机器上运行。
  6. 解释:解释是在程序运行时将源代码逐条翻译成机器语言并执行的过程。解释型语言(如Python、JavaScript等)不需要预先编译成机器语言,而是由解释器在运行时逐条解释并执行源代码。解释型语言通常具有较好的灵活性和跨平台性,但执行效率相对较低。
  7. 执行:执行是程序在机器上运行的过程。无论是编译后的程序还是解释执行的程序,最终都需要在目标机器上执行以完成特定的任务。执行过程涉及指令的读取、解码、执行和结果存储等步骤。
    C语言
    在C语言中,数组和指针是两个非常重要的概念,它们各自有独特的用途,但也存在紧密的联系。下面将分别介绍数组和指针,并探讨它们之间的关系。
    数组
    数组是一组具有相同类型的变量的集合,这些变量在内存中连续存储。数组通过下标来访问其元素,下标从0开始。在C语言中,数组名代表数组首元素的地址(即数组首地址)。
    数组的定义方式如下:
    c复制代码
    int arr[10]; // 定义一个包含10个整数的数组
    可以通过下标来访问数组中的元素,例如:
    c复制代码
    arr[0] = 1; // 设置数组第一个元素为1
    int value = arr[1]; // 获取数组第二个元素的值
    指针
    指针是C语言中的一个重要概念,它用于存储变量的地址。指针变量本身也占用内存,但其存储的是另一个变量的地址,而不是数据值。
    指针的定义方式如下:
    c复制代码
    int *ptr; // 定义一个指向整数的指针
    可以将一个变量的地址赋值给指针,例如:
    c复制代码
    int x = 10;
    ptr = &x; // 将变量x的地址赋值给指针ptr
    通过指针可以间接访问和修改它所指向的变量的值,例如:
    c复制代码
    *ptr = 20; // 修改指针ptr所指向的变量的值为20
    int y = *ptr; // 获取指针ptr所指向的变量的值
    数组与指针的关系
    在C语言中,数组名在大多数情况下都会被编译器处理为指向数组首元素的指针。这意味着,当我们把数组名传递给函数时,实际上传递的是数组首元素的地址,而不是整个数组。
    例如,以下函数接受一个整数数组和一个数组大小作为参数:
    c复制代码
    void printArray(int *arr, int size) {
    for (int i = 0; i < size; i++) {
    printf("%d ", arr[i]); // 或者使用 *(arr + i)
    }
    printf("\n");
    }
    在调用这个函数时,我们可以传递数组名和数组的大小:
    c复制代码
    int main() {
    int myArray[5] = {1, 2, 3, 4, 5};
    printArray(myArray, 5); // 传递数组名和大小
    return 0;
    }
    在这个例子中,myArray作为数组名被传递给了printArray函数,它实际上被处理为指向数组首元素的指针(即&myArray[0])。
    注意事项
  8. 数组的大小在编译时是固定的,而指针可以指向任何类型的变量,并且可以在运行时改变其指向。
  9. 当数组作为函数参数传递时,数组名会退化为指向数组首元素的指针,因此函数内部无法获取数组的大小(除非通过额外的参数传递)。
  10. 指针操作需要谨慎,以避免野指针(未初始化或已释放的指针)和指针越界等问题。
    综上所述,数组和指针在C语言中各自扮演着重要的角色,它们之间既有区别又有联系。理解它们的概念和用法对于掌握C语言至关重要。

标签:面向对象,2025,int,2024,20241323,数组名,数组,ptr,指针
From: https://www.cnblogs.com/gly03/p/18548809

相关文章

  • 20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    202224242024-2025-1《网络与系统攻防技术》实验五实验报告1.实验内容(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置PS:使用whois、......
  • 2024.9 做题记录
    001.CF2002ECosmicRaysCF*2300标签:思维,栈题意:给定\(n\)个元组,\((a_i,b_i)\),表示有\(a_i\)个\(b_i\)按顺序排列在一起。一次操作可以删除以下数字:在第\(1\)个位置的数字\(s_i≠s_{i-1}\)的位置\(i\)问每个前缀最多成操作多少次。Observation:问每个前缀......
  • CSP-S 2024 赛后总结
    考炸了,真考炸了……第一题没啥可说的,就肯定满的,咋做都行,我排序贪心,10min切。第二题,似了。先看了A,B性质,发现非常好打,利用他给的公式,一平方随便判一下就做完了,因为只有最后一个检测器有用的。如果都检测不到,那干脆最后一个检测器也不用了,直接输出\(m\)。但是,C性质的写挂导致......
  • 20241115
    Talesofseafaring发现需要维护最短路为单数和双数的最短路,所以先跑个最短路,然后对于每个询问看d是单数还是双数,然后判断输出就行,注意到直接这么写然后对于每个询问再查的话空间会爆,所以就把询问记录下来对于每个点为起始跑最短路的时候直接更新答案就行。公路修建问题求最大......
  • [Moectf2024 Xor(大嘘)]
    [Moectf2024Xor(大嘘)]进入主函数输入32长度的字节sub_401100(&v7);进行加密byte_404058是加密后的密文转dwordsub_401100的加密看似很简单,但其实是错的,动态调试后就会发现到return后会跳到别的函数,追到return处的汇编就会发现有花指令这里莫名其妙就retn了,nop掉对l......
  • [Moectf2024 ezMaze]
    去壳分析:迷宫分析10*a2-10:Y(a1-1)/8:X表示按字节处理迷宫迷宫以十六进制压缩,但迷宫是80*56的二进制迷宫dump下来保存,转二进制,用bin(maze[2:]).zfill(8)脚本(bfs):fromcollectionsimportdequemaze=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1......
  • 『模拟赛』NOIP2024加赛5
    Rank反向挂分大王A.暴力操作(opt)签,但是没有人签。都想到了二分和更新c值,但是c多多少少没更到最优。首先还是调和级数预处理,倒序取min。然后考虑到超过\(m\)的也有可能产生更小的代价,因此\(\mathcal{O(n)}\)枚举一遍找到最小的\(j\)使\(i\timesj\gtm\),全部赋......
  • P11232 [CSP-S 2024] 超速检测(官方数据)
    [CSP-S2024]超速检测(官方数据)题目描述小D新入职了某国的交管部门,他的第一个任务是负责国家的一条长度为LLL的南北主干道的车辆超速检测。为了考考小D,上司首先需......
  • P11230 [CSP-J 2024] 接龙(官方数据)
    [CSP-J2024]接龙(官方数据)题目描述在玩惯了成语接龙之后,小J和他的朋友们发明了一个新的接龙规则。总共有nnn个人参与这个接龙游戏,第......
  • P11233 [CSP-S 2024] 染色(官方数据)
    [CSP-S2024]染色(官方数据)题目描述给定一个长度为nnn的正整数数组AA......