注册 登录
编程论坛 C++教室

[原创]学习感受.....

中学者 发布于 2008-01-30 15:00, 1314 次点击
我是一个菜鸟....学习到现在也有半年了,但是算法仍是可以算空白.不过,我今天不是讲算法,而是发泄一下自己的学习感受..为了大家看起轻松,我也轻松,会写得很少..
   对于编程,没什么好说的,其实什么语言都一样,学起很简单滴!!!常常看到飞燕的话,大概这样说:与其去弄语法,不如多学几个算法...而且我们也曾听过,算法是程序的灵魂.. 可见算法是如此重要....所以我也抓紧学习它... 然而,有人是否会混淆两个词呢----语法,语意.. 其实我的学习让我知道并不相同.如果说"一个程序=语法+算法",那么是否该说"一个好的程序=语意+算法"?我觉得,是可以这么说..下面我就举两个例子来说明:
 #include<iostream>
 using namespace std;
class A{
  char* s;
public:
   A(int size){ s=new char[size];}
   A(){}
   ~A(){ delete [] s; }
 void dump() const { cout<<s<<endl;}
  void set() { cin>>s;}
};
int main(void)
{
   A a_;  //**
 return 0;
}
上面的代码在编译期没问题, 但是执行就出现问题了.可以肯定,代码的语法没问题,但是问题就在语意上----默认构造函数和析构函数,下面我重点扩展a_对象析构函数(可能写得不好):
从** 这句:
   A a_;
   a_.A::A();
   a_A::~A();
 -----------------------------
析构函数内部:
   ~A()
  {
     if(s!=0)   /*问题在这里,由于默认构造函数没有初始化s,所以s指向未知区域..于是执行_delete(s)释放这个区域是不合法滴*/
        _delete(s);
   }
  只举这个例子了。。 学习语法很简单,但是弄清语意和算法就是下功夫的地方了...
是想写一个程序还是要写一个好的程序?我要努力了....
 PS:
    有什么不对请指出批评.....
7 回复
#2
天使梦魔2008-01-30 15:21
程序里面有几个误区要看清楚.

在高端开发,算法是很重要的.没有算法你几乎写不出程序.
比如游戏开发,你需要制作自己的引擎,这包括物理引擎(碰撞测试,物理学模仿),或者图形引擎(3D的,2D的,你需要几何学以及其他的知识).还有其他领域,比如航空,国防之类,还有你们都知道的搜索引擎......如果没有这些知识,你几乎开发不出程序来.

有种情况不太需要算法,比如在公司开发外包.中国90%的软件公司都是做外包的.
理解起来很简单,核心不是你来写,你写的就是一个GUI界面,或者其他的一些小工具.也不太需要多少优化.
#3
dingpin2008-01-30 16:55
LS的强啊...
#4
lf4262008-02-05 03:36
太有才了。
你还真把cin当函数用啊?
#5
中学者2008-02-05 13:40
LS的你要来找茬我也无话可说,反正你觉得你很厉害..(至少比我厉害)
但是我要告诉你,我说的变化不大是说那个cin>>,cout<<不是他自己封装的..直接用现成的和直接用printf,scanf不是表达一个意思么?
cin.operator>>, cout.operator<<
#6
lf4262008-02-07 01:53
我并不比你强,跟你抬杠只是因为觉得你对待问题的态度不科学——特别是给别人解释问题的时候。
我说你有才是因为你这个程序我不知道该如何修改:一边是C风格字符串;一边是C++的标准对象——无论那种修改都会把这个程序改得面目全非而且无法实现你的意图——因为你的意图本身就是个问题。
对象和函数到底有什么不同,你何不用这个类自己做些测试。
#7
中学者2008-02-07 13:56
谢谢你的关心.......下面是关于标准输入输出流的:
   >>可处理的类型为:
bool&       int&
signed char*     unsigned int&
unsigned char*      long&
charT*      unsigned long&
signed char&      float&
charT&        long double &
short&         void* &
unsigned short&
类型char* 和charT*用于存储读入的字符串,且>>操作符为C风格字符串添加一个null结束符.
#8
野比2008-02-10 22:58
那个,我是这么看的,关于什么算法不算法语法不语法的。
你说“算法是空白”就有些说不过去了。
写程序就是把头脑中的方法按照特定的语法(和采用的语言有关)写成编译器可识别的源文件,然后生成可以运行的程序。
所以算法其实就是我们头脑中的想法,我们的思路,难道头脑中也是“空白”麽?
算法,我个人认为,就算买一堆算法书,也只能是记下一堆常见问题的计算方法,真正会用的算法还是要碰到具体问题的时候才能确定。
就像我学完《数据结构与算法》这本书后,拿到一个PCM、PSK编解码程序的项目。之后呢?除了数据结构方面能灵活运用外,书上介绍的N多算法一个没用上,还是老老实实的看了厚厚几本信道编码方面的书,了解的具体原理后,自己活生生硬把公式编成程序的。这个时候,我写出来的是程序,算法是书上的公式。
1