浅谈C++初学者学习者的自学

原文链接:http://blog.csdn.net/sxhelijian/article/details/7305975在大学中,自学能力是异常重要的。当然,这个自学,是在教师指导下的自学,是向完全真正自学的过渡。在终身学习的年代,自主学习是核心,具备自学的能力是基础。自学有充分的自由,简单地可以理解为爱学什么学什么,想怎么学就学什么。这里面也有技术问题,比如学习内容的选择,针对内容对学习方法的选择等。从这个角度讲,也不是完全的自由。在大学,可以有课外知识的自学,课程的学习也要重视在教师的指导下能够自己进行预习、拓展,甚至就某个问题开展研究。   以C++为例,我们在此做些探讨。  C++作为一种人工语言,其语法是人为指定的,当然有设计者的想法,同时也是在程序设计理论指导下做出的规定。理解,甚至“记忆”这些语法现象成了初学者的首要障碍。作为实践性很强的专业基础课程,完全可以在实践中去理解和“记忆”。“记忆”二字加引号意在提醒大家,记忆的方法有多种,如重复、实践等等,切不可以理解为背诵。  例:课本P24的表2.2列出转义字符及其含义,课堂上教师呈现的例子是:

  1. #include<iostream>  
  2. usingnamespace std;  
  3. int main( )   
  4. {  cout << "看字母:"<<"\101\102"<< endl;  
  5.    getchar(); //等待用户从键盘输入一个字符,此处用于让程序“停下来,以便于观察输出  
  6.    cout << "再看字母:"<<"\101\b\102"<< endl;  
  7.    getchar();  
  8.    cout << "还看字母:"<<"\101\r\102"<< endl;  
  9.    return 0;  
  10. }  

  通过设计并且运行这个程序,大家就可以理解\b(退格)和\r(回车)的含义了,这比用多少语言描述都直接。  再例,在讲到浮点数的精度问题时,课堂上教师呈现的例子是:

  1. int main()  
  2. {   float a = 0.65f, b = 0.6f;  
  3.     float c = a - b;  
  4.     if (c==0.05)  
  5.         cout<<"对了!"<<endl;  
  6.     else  
  7.         cout<<"错了!"<<endl;  
  8. }  

  运行结果与你已有的数学知识存在反差,这将使学生深入思考其原因并留下深刻映像。  在很多情况下,结果并非一定要用cout输出,而是采用调试的方法进行观察。要学会并习惯单步执行程序,对照自己对程序执行的预期和实际执行结果的反差,不断思考,获得独特的答案。  【实践】P29指出“如果a和b指定为实型变量,则不允许进行求余运算”,你如何针对这句话设计一个实验进行验证  【小技巧】学习材料中会提及这不行,那不行之类的,记不住。主动“撞错”,你将得到体验,并且也见识了这种错误产生后的现象。当今后编制大程序无意中出现同类错误时,你会微微一笑:“小样,见过你了。” ——在错误中成长,错误是财富;主动试错,是种境界(后半句仅限于学习程序设计)。  【实践】还是求余运算(%),P32讲“多数编译系统采用……”,Visual C++是怎么做的?“向零取整”是什么意思?请设计实验进行验证。  【提示】对后一问,正整数、负整数之间,正整数和负整数进行求余,将程序运行结果与自己的期望结果进行对比后得到结论。你还可以“撞”一次错,算算100%0会怎样。  【技巧总结】当使用一个新的编译系统(如Boland C++)时,可以对一些与编译系统相关的敏感的指标借此作一测试。或者,在大项目进展过程中,针对可能出问题的地方,有意识地编制一个小程序对平台的的处理方式进行“实地考察”,而不必完全依赖于“翻手册”,要是手册写错了,“实地考察”更可贵。  总之,多动些脑子,在方法上提高,不能凭蛮力征服c++。