2022-2023-1 20221312 《计算机基础与程序设计》第六周学习总结
作业信息
班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06
作业目标:指针 利用指针访问数组 理解内存地址和清楚认识cpu与内存的模型
作业正文:2022-2023-1 20221312 《计算机基础与程序设计》第六周学习总结 - 221421李旻奇 - 博客园 (cnblogs.com)
教材内容总结
《计算机科学概论》重新新理解了一些关键词
方法
方法格式与有些过程式语言中用的函数非常相似,每个方法有它的头、局部变量和语句
继承性
在面向对象模式中,作为本质,一个对象能从另一个对象继承。这个概念被称为 继承性。
当一般类被定义后,我们可以定义继承了一般类中一些特性的更具体的类,同时这些类具有一些新特性。
例如,当一个几何形状类被定义后,我们就可以定义称为矩形的类。矩形是具有额外特性的几何形状。
多态性
多态性意思是“许多形状”。多态性是指我们可以定义一些具有 相同名字的操作,
而这些操作 在相关类中做不同的事情。
例如,我们定义了两个类:矩形和圆,都是从几何形状类继承下来的。
我们定义名字都为area的两个操作,一个在矩形类中; 一个在圆类中。它计算矩形或圆的面积。
两个操作有相同的名字,但做不同的事情,
因为计算矩形的面积和计算圆的面积需要 不同的 操作数 和 操作。
封装(encapsulation):实施信息屏蔽的语言机制。
对象类或** 类**:属性和行为相似的一组对象的说明。
对象:与问题背景相关的实物或实体。或类的一个实例
类:对象的模式。
实例化(instantiate):创建类的对象。
继承(inheritance):类获取其他类的属性(数据域或方法)的机制。
多态性(polynorphism):一种语言的继承体系结构中具有两个同名方法。且能够根据对象应用合适的方法的能力。
线性表
栈
后进先出(Last In First Out, LIFO)
队列
先进先出(First In First Out, FIFO)
树
- 二叉树(binary tree):具有唯一起始节点(根节点)的容器对象,其中每个节点可以有两个子节点,根节点和每个节点之间都有且只有一条路径。
- 叶节点(leaf node):没有子节点的树节点。
- 二叉搜索树
图
图(graph):由一组结点和一组把结点连接起来的边构成的数据结构。
顶点(vertex):图中的节点。
边(弧)(edge(arc)):表示图中两个结点的连接的顶点对。
无向图(undirected graph):其中的边没有方向的图。
有向图(directed graph(digraph)):其中的边是从一个顶点指向另一个顶点的图。
排序
- 选择排序
- 冒泡排序
- 快速排序
查找
- 二分查找 二分检索(binary search):在有序列表中检索项目的操作,通过比较操作排除大部分检索范围。
《C语言程序设计》
定义和使用结构体变量
1.定义:C语言允许用户自己建立不同类型数据组合成的组合型数据类型就是结构体
2.形式: struct 结构体名
{ 成员表列
类型名 成员名 ; } ; //成员可以属于另一结构体类型
3.定义结构体类型变量
(1)先 声明结构体类型 后 定义该类型变量
Struct student stu1 ,stu2 ;
教材学习中的问题和解决过程
学习了指针与整形的加法但是编译错误
二、指针的算术运算
指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,以单元为单位。例如:
例二:
-
char a[20];
-
int *ptr=(int *)a; //强制类型转换并不会改变a 的类型
-
ptr++;
在上例中,指针ptr 的类型是int*,它指向的类型是int,它被初始化为指向整型变量a。接下来的第3句中,指针ptr被加了1,编译器是这样处理的:它把指针ptr 的值加上了sizeof(int),在32 位程序中,是被加上了4,因为在32 位程序中,int 占4 个字节。由于地址是用字节做单位的,故ptr 所指向的地址由原来的变量a 的地址向高地址方向增加了4 个字节。由于char 类型的长度是一个字节,所以,原来ptr 是指向数组a 的第0 号单元开始的四个字节,此时指向了数组a 中从第4 号单元开始的四个字节。我们可以用一个指针和一个循环来遍历一个数组,看例子:
例三:
-
int array[20]={0};
-
int *ptr=array;
-
for(i=0;i<20;i++)
-
{
-
(*ptr)++;
-
ptr++;
-
}
这个例子将整型数组中各个单元的值加1。由于每次循环都将指针ptr加1 个单元,所以每次循环都能访问数组的下一个单元。
再看例子:
例四:
-
char a[20]="You_are_a_girl";
-
int *ptr=(int *)a;
-
ptr+=5;
在这个例子中,ptr 被加上了5,编译器是这样处理的:将指针ptr 的值加上5 乘sizeof(int),在32 位程序中就是加上了5 乘4=20。由于地址的单位是字节,故现在的ptr 所指向的地址比起加5 后的ptr 所指向的地址来说,向高地址方向移动了20 个字节。
在这个例子中,没加5 前的ptr 指向数组a 的第0 号单元开始的四个字节,加5 后,ptr 已经指向了数组a 的合法范围之外了。虽然这种情况在应用上会出问题,但在语法上却是可以的。这也体现出了指针的灵活性。如果上例中,ptr 是被减去5,那么处理过程大同小异,只不过ptr 的值是被减去5 乘sizeof(int),新的ptr 指向的地址将比原来的ptr 所指向的地址向低地址方向移动了20 个字节。
代码调试中的问题和解决过程
在写进制转换时利用定义无法很好的打出八进制和十六进制
关键是十六进制用数组表示十六进制时无法打印因为十六进制有一部分数字用英语字符表示无法确定用什么数据类型的数组
解决方案
我发现用想x的转换规范可以直接将十进制数转换为十六进制打印在屏幕上
上周考试错题总结
The central processing unit (CPU) of a computer is often a single integrated circuit.
正确答案: 正确
- The program counter is a register that stores the number of instructions executed by a computer.
- 正确答案: 错误
1.Which of the following is part of a Pep/9 program instruction?
A.
Accumulator累加器
B.
Simulator模拟器
C.
Program counter程序计数器
D.
Specifier助记码
E.
Register
正确答案: D
你的作答: E
program instruction-程序指令
2.Each machine language instruction performs a single complex task, such as sorting a list of numbers.
正确答案: 错误
你的作答: 正确
3. A test case is a document that specifies how a program is to be tested.
正确答案: 错误
你的作答: 正确
Which type of touch screen is made up of two layers that come into contact when the user presses on the screen?
A. Resistive
B. Capacitive
C. Infrared
D. Surface acoustic wave (SAW)
正确答案: A