程序设计B课程总结

到目前为止,已经学习了6周了,对程序设计B有了更深的认识,也学到了很多东西,下面我从四方面进行一下对这段学习期间的课程总结。
一、这段期间学到了什么?
首先,学习了递归函数,是一种直接或间接调用自身的函数,通过递归把问题层层分解,转化为小规模问题从而进行求解。同时在递归函数中还学到了“记忆化搜索”方法,是一种把已知结果记录的过程,特点是“空间换时间”,大大提高了算法的效率。其次,学习了结构体,是由一系列具有相同类型或不同类型的数据构成的数据集合,结构体内部包括数据成员和成员函数。然后,学习了标准库类型string,string表示可变长度的字符序列,学习了怎样读写string类以及string类的几个函数。还学习了指针和引用,数据在内存中的地址称为指针,如果指针指向一个对象,则可以通过指针间接访该对象,使用指针解引用运算符“*”,要获取指针存放指定类型对象的地址,使用取地址运算符&。引用可以作为对象的另一个名字,通过引用可以间接的操纵对象。最后,学习了,是对具有相同属性和行为的一类客观事物的概括描述,是用户自定义的数据类型。类中包括数据成员和成员函数,学习了类成员函数在类内和类外的定义方法,类成员的访问方法,析构函数和构造函数的用法,利用构造函数创建对象的方法,this指针的用法,复制构造函数(深复制和浅复制),类的其他成员(常成员,静态成员,友元),类的组合,运算符重载等等。
二、学过的怎么用?
递归函数关键在于找出递归定义和递归终止条件。要找出大规模问题与小规模问题的关系,通过递归使问题的规模逐渐变小,找出停止条件控制递归,设计函数体中的操作及有关参数,从而解决问题,记忆化搜索是利用数组存储计算过的结果,直接调用已知结果,避免重复运算。
结构体的定义:
struct 类型名{
数据类型1 成员名1;
数据类型2 成员名2;

};
在结构体中可以定义不同的数据类型变量, 构成结构体的每一个类型变量称为结构体成员, 它像数组的元素一样, 但数组中元素是以下标来访问的, 而结构体是按变量名字来访问成员的。 可以对结构体变量的整体进行操作。 可以对结构体变量的成员进行操,引用结构体变量中成员的格式为:结构体变量名.成员名。 结构体变量的初始化方法与数组类似。
标准库类型string: 使用标准库中的iostream可以读写string对象(键盘输入时遇空格或者回车符结束)。 getline()函数:从指定输入流中读取内容,遇到换行符为止。判断string对象是否为空:用empty()函数,返回一个布尔值:stringobj.empty();获取string对象的长度:size()函数返回string对象的长度,即对象中字符的个数。
指针和引用的使用:

#include<iostream>
using namespace std;
int main()
{	   
    int ival=1024;
    int *pi=&ival;
    cout<<"sizeof(pi):"<<sizeof(pi)<<endl;//指针在内存中所占大小
    cout<<"sizeof(ival):"<<sizeof(ival)<<endl;//ival在内存中所占大小
    cout<<"&pi:"<<&pi<<endl;//指针在内存中的地址
    cout<<"pi:"<<pi<<endl;//指针中存放的内容,即ival的地址
    cout<<"&ival:"<<&ival<<endl;//ival的地址
    cout<<"*pi:"<<*pi<<endl;//指针所指内存中存放的内容,即ival的值
    cout<<"ival:"<<ival<<endl;//ival的值
    }

引用的定义:type& refVarible=leftValue;引用于它的初始值绑定在一起,对引用的所有操作都会被应用在它所指向的对象上。
类的定义:
class 类名
{
public:
公有数据成员和成员函数;
protected:
保护数据成员和成员函数;
private:
私有数据成员和成员函数;
};
通常可以构造两个类,数据类和操作类,数据类用于存储数据,操作类用于实现各种操作方法,根据要求的不同构造不同类型的数据成员和不同的操作方法。
运算符重载可以用成员或友元函数重载
一元运算符:Object op或op Object
二元运算符:ObjectL op ObjectR
成员函数重载运算符声明格式:
类内:
class X{
//…
返回类型 operator 运算符(形参表);
//…
}
类外:
返回类型 X::operator运算符(形参表)
{
函数体
}
友元函数重载常用于运算符的左右操作数类型不同的情况。
三、在使用过程中需要注意什么问题?
递归过程中要大规模问题与小规模问题的关系,注意递归终止条件本身不再使用递归即有确定的数值,记忆化搜索时应注意把求出的结果记录在相应的数组中,使用时直接调用已知数值。
结构体定义完成之后一定要有逗号;定义结构体数组时,数组要定义成确定量的,即数组的元素个数一定是确定的。
每个指针都有相关的类型,需要在定义指针时指出 type* pointer,
指针不能保存非地址值,也不能被赋值和初始化为不同类型的地址值。
引用必须被初始化,初始值是一个有内存地址的对象;引用必须指向一个对象,而且一直指向该对象,不存在“空”引用。
使用string类要包含头文件<string>(不是<string.h>);string对象的下标范围从0到s.size()-1。
类名首字母最好大写;数据成员私有化,成员函数公有化;类定义必须以分号“;”结束。
C++中不能用友元函数重载的运算符有:= () [ ] ->
双目运算符当操作类型不同时,必须使用友元函数重载。
重载输出运算符“<<”只能被重载为友元函数。
四、这段学习期间的感受?
1.在这段学习期间学会了很多的新的知识,有很多知识在Java之中已经学过了,没学之前感觉跟Java之中的知识差不多,但是学过程序设计B之后才会发现其实C++比Java难,C++需要学习的知识点更多,很多方法也跟Java不同,比如在类中,类的定义格式不同,数据成员和成员函数的定义方式也不同,C++成员函数在类内外都可以定义,在Java中只能在在类中定义,而且Java中很多的方法可以一键生成,C++中却不可以,无形之中也增加了难度,但是也考验了我们的细心,而且,C++中增加了很多新的知识,比如运算符的重载等等,增加了很多解决问题的方法。
2.通过几次作业的完成情况来说,发现自己的能力还需要大幅度的提高,编写代码的能力不强,在编程的时候也不够细致,可能一个很小的错误就需要寻找很长时间,对学过的知识也未掌握全面,现在的单链表掌握的也还是有点欠缺,这是经常用到的知识,需要尽快掌握透彻。而且,这几次作业的完成情况也不是很好,以后需要更加努力,争取取到更好的成绩。
3.虽然老师布置的题目有一些难度,但是有难度才能学到更多的东西,才能把学到的东西灵活的运用,这也就更加激励我们需要更加努力。
4.这段时间发现自己的实践能力需要加强,提高编写代码的效率和速度,今后需要多加练习,同时要将学到的知识吃透,不能学过之后就弃之不理,而是要反复的琢磨和运用,达到熟练的地步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值