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

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08
这个作业目标 功能设计与面向对象设计 面向对象设计过程 面向对象语言三要素 汇编、编译、解释、执行
作业正文 https://www.cnblogs.com/tanzitian11/p/18549754

教材学习内容总结

《计算机科学概论(第七版)》第9章
程序设计语言范型:

命令式范型
面向过程:以过程为中心,将程序看作一系列按顺序执行的步骤,注重解决问题的具体流程。
面向对象:以对象为基础,把现实世界中的事物抽象成对象,通过对象之间的交互来解决问题。对象包含数据(属性)和操作数据的方法(行为),具有封装、继承、多态等特性。
声明式范型:
函数式模型:强调使用函数来进行计算和编程,函数被视为一等公民,可以作为参数传递、返回值或存储在数据结构中。函数式编程避免了可变状态和副作用,注重函数的组合和变换。
逻辑编程:基于逻辑推理的编程范式,程序由一系列逻辑规则和事实组成,通过逻辑推理引擎来求解问题。
高级程序设计语言的功能性:

布尔表达式:用于表示逻辑条件,是程序中进行条件判断和控制流程的基础。
数据归类:涉及到数据的类型和分类,不同的数据类型有不同的操作和存储方式,程序设计语言需要提供相应的数据类型来支持对各种数据的处理。
输入/输出结构:程序与外部世界进行交互的方式,包括从用户获取输入和向用户输出结果,以及与文件、网络等外部设备进行数据交换。
控制结构:用于控制程序的执行流程,如顺序结构、选择结构(如 if 语句)、循环结构(如 for 循环、while 循环)等。
面向对象语言的功能性:

封装:将数据和操作数据的方法封装在一个类中,对外隐藏内部的实现细节,只提供公共的接口供外部访问,提高了代码的安全性和可维护性。
类:是对象的模板或蓝图,定义了对象的属性和方法,通过类可以创建多个具有相同属性和行为的对象。
继承:子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改,实现了代码的复用和扩展。
多态:不同类的对象可以对同一消息做出不同的响应,增加了程序的灵活性和可扩展性。
过程设计与面向对象设计的区别:

过程设计:侧重于解决问题的具体步骤和过程,将问题分解为一系列的函数或过程,通过函数的调用来实现程序的功能。
面向对象设计:更关注问题中的对象及其相互关系,将问题域中的实体抽象成对象,通过对象之间的消息传递和协作来解决问题。
在《C语言程序设计》第7章内容总结
数组的定义和声明
一维数组:介绍一维数组的基本语法。例如,int arr[5]; 定义了一个名为 arr 的整型数组,它可以存储5个整数。数组的下标从0开始,所以可以通过 arr[0]、arr[1]等访问数组中的元素。
二维数组:int matrix[3][4]; 定义了一个3行4列的二维整型数组。它在内存中是按行存储的,访问元素时使用双下标形式,如 matrix[1][2] 表示访问第2行(下标从0开始)第3列的元素。
数组的初始化
一维数组初始化:可以在定义数组时进行初始化,如 int arr[3] = {1, 2, 3};,也可以部分初始化,如 int arr[5]= {1, 2};,此时未初始化的元素会被自动初始化为0(对于全局数组和静态数组)或不确定的值(对于局部数组)。
二维数组初始化:例如,int matrix[2][3]={{1,2,3},{4,5,6}};
数组在内存中的存储方式
一维数组:在内存中是连续存储的,元素之间的地址是连续的。例如,对于 int arr[5];,如果 arr 的首地址是 0x1000,那么 arr[1] 的地址可能是 0x1004(假设 int 类型占4个字节)。
二维数组:对于二维数组,它的行与行之间也是连续的。比如对于 int matrix[3][4];,可以把它看作是一个包含3个元素的一维数组,每个元素又是一个包含4个整数的一维数组(注意:二维数组的列不可以省略)。
数组作为函数参数
当数组作为函数参数时,实际上传递的是数组的首地址。
例如
int Readscore(int score[],int n);
其中,n代表了score数组的下标
数组的长度(大小)
不同的编程语言获取数组长度的方式不同。在 C 和 C++ 中,对于一个数组int cArray[6];,没有内置的函数来获取数组长度,但是可以通过sizeof(cArray)/sizeof(cArray[0])来计算数组的长度(前提是数组没有发生指针衰减等情况)。
在 Java 和 JavaScript 中,可以通过属性来获取数组长度。例如在 Java 中,对于数组> int[] javaLengthArray = {17, 18, 19};,可以使用javaLengthArray.length来获取数组的长度 3。在 JavaScript 中,对于数组let jsLengthArray = [20, 21, 22];,可以使用jsLengthArray.length来获取长度。
三、多维数组
概念
多维数组是数组的数组。例如二维数组可以看作是一个表格,其中行和列组成了元素的位置。在 C 语言中,定义一个二维整数数组可以这样写:int twoDArray[3][4];,这表示有一个二维数组,它有 3 行 4 列,总共可以存储 3 * 4 = 12 个整数。
二维数组的索引也是从 0 开始,twoDArray[0][0]表示第一行第一列的元素,twoDArray[0][1]表示第一行第二列的元素,以此类推。
存储方式和访问
二维数组在内存中也是按照一定顺序存储的。对于 C 语言中的二维数组,它是按行主序存储的,也就是说,先存储第一行的所有元素,然后再存储第二行的元素,依此类推。
访问二维数组元素的方式和访问一维数组类似,通过两个索引来定位元素。

基于AI的学习






上周考试错题总结

  • 错题1
    如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则A和B称为亲密数。求10000以内的亲密数。
    **输出格式要求:"(%4d,%4d)\n"
#include <stdio.h>
int main()
{
    int a, b, i, n;
    for (a = 1; a < 10000; a++)
    {
        b = 0;
        for (i = 1; i <= a / 2; i++)
        {
            if (a % i == 0)
                b += i;
        }
 
        n = 0;
        for (i = 1; i <= b / 2; i++)
        {
            if (b % i == 0)
                n += i;
        }
        if (n == a && a < b)
            printf("(%4d,%4d)\n", a, b);
    }
 
    return 0;
}

理解情况:没有很好地去理解题目的意思,没有把数学模型转换成编程语言,逻辑思维能力还是有待提高。

  • 错题2
    请按如下函数原型编写计算1~n之间的所有素数之和的程序。
    int IsPrime(int x)
    在主函数中调用该函数计算,并输出1~n之间的所有素数之和
#include<stdio.h>
#include<math.h>
int IsPrime(int x);
int main()
{
    int m = 3;
    int sum = 2;
    int n;
    scanf("%d", &n);
    for (m = 3; m <= n; m++)
    {
        if (IsPrime(m))
        {
            sum += m;
        }
    }
    printf("%d", sum);
    return 0;
}
int IsPrime(int x)
{
    int i, flag = 1;
    int squareRoot = (int)sqrt(x);
    if (x <= 1)
    {
        flag = 0;
    }
    for (i = 2; i <= squareRoot && flag; i++)
    {
        if (x % i == 0)
        {
            flag = 0;
        }
    }
    return flag;
}

理解情况:没有很好地复习。忘了数学怎么表达。

  • ...

其他

感悟:还得练。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第六周 200/200 1/2 20/20
第七周 300/500 1/4 18/38
第八周 700/1000 1/7 25/60
第九周 0/1300 0/9 0/90
posted @ 2024-11-17 10:34  779315  阅读(13)  评论(0编辑  收藏  举报