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

简介: 在大学中,自学能力是异常重要的。当然,这个自学,是在教师指导下的自学,是向完全真正自学的过渡。在终身学习的年代,自主学习是核心,具备自学的能力是基础。自学有充分的自由,简单地可以理解为爱学什么学什么,想怎么学就学什么。这里面也有技术问题,比如学习内容的选择,针对内容对学习方法的选择等。从这个角度讲,也不是完全的自由。在大学,可以有课外知识的自学,课程的学习也要重视在教师的指导下能够自己进行
在大学中,自学能力是异常重要的。当然,这个自学,是在教师指导下的自学,是向完全真正自学的过渡。在终身学习的年代,自主学习是核心,具备自学的能力是基础。自学有充分的自由,简单地可以理解为爱学什么学什么,想怎么学就学什么。这里面也有技术问题,比如学习内容的选择,针对内容对学习方法的选择等。从这个角度讲,也不是完全的自由。在大学,可以有课外知识的自学,课程的学习也要重视在教师的指导下能够自己进行预习、拓展,甚至就某个问题开展研究。
  以C++为例,我们在此做些探讨。
  C++作为一种人工语言,其语法是人为指定的,当然有设计者的想法,同时也是在程序设计理论指导下做出的规定。理解,甚至“记忆”这些语法现象成了初学者的首要障碍。作为实践性很强的专业基础课程,完全可以在实践中去理解和“记忆”。“记忆”二字加引号意在提醒大家,记忆的方法有多种,如重复、实践等等,切不可以理解为背诵。
  例:课本P24的表2.2列出转义字符及其含义,课堂上教师呈现的例子是:
#include<iostream>
usingnamespace std;
int main( ) 
{  cout << "看字母:"<<"\101\102"<< endl;
   getchar(); //等待用户从键盘输入一个字符,此处用于让程序“停下来,以便于观察输出
   cout << "再看字母:"<<"\101\b\102"<< endl;
   getchar();
   cout << "还看字母:"<<"\101\r\102"<< endl;
   return 0;
}
  通过设计并且运行这个程序,大家就可以理解\b(退格)和\r(回车)的含义了,这比用多少语言描述都直接。
  再例,在讲到浮点数的精度问题时,课堂上教师呈现的例子是:
int main()
{   float a = 0.65f, b = 0.6f;
    float c = a - b;
    if (c==0.05)
        cout<<"对了!"<<endl;
    else
        cout<<"错了!"<<endl;
}
  运行结果与你已有的数学知识存在反差,这将使学生深入思考其原因并留下深刻映像。
  在很多情况下,结果并非一定要用cout输出,而是采用调试的方法进行观察。要 学会并习惯单步执行程序,对照自己对程序执行的预期和实际执行结果的反差,不断思考,获得独特的答案。
  【实践】P29指出“如果a和b指定为实型变量,则不允许进行求余运算”,你如何针对这句话 设计一个实验进行验证
  【小技巧】学习材料中会提及这不行,那不行之类的,记不住。 主动“撞错”,你将得到体验,并且也见识了这种错误产生后的现象。当今后编制大程序无意中出现同类错误时,你会微微一笑:“小样,见过你了。” —— 在错误中成长,错误是财富;主动试错,是种境界(后半句仅限于学习程序设计)。
  【实践】还是求余运算(%),P32讲“多数编译系统采用……”,Visual C++是怎么做的?“向零取整”是什么意思?请设计实验进行验证。
  【提示】对后一问,正整数、负整数之间,正整数和负整数进行求余,将程序运行结果与自己的期望结果进行对比后得到结论。你还可以“撞”一次错,算算100%0会怎样。
  【技巧总结】当使用一个新的编译系统(如Boland C++)时,可以对一些与编译系统相关的敏感的指标借此作一测试。或者,在大项目进展过程中,针对可能出问题的地方,有意识地编制一个小程序对平台的的处理方式进行“实地考察”,而不必完全依赖于“翻手册”,要是手册写错了,“实地考察”更可贵。
  总之,多动些脑子,在方法上提高,不能凭蛮力征服c++。
目录
相关文章
|
11天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
17 2
|
22天前
|
存储 安全 编译器
C++学习过程中的一些值得注意的小点(1)
C++学习过程中的一些值得注意的小点(1)
|
23天前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
103 0
|
1月前
|
C++
C++学习系列---读取文件名存入txt和从txt读取每行信息
C++学习系列---读取文件名存入txt和从txt读取每行信息
|
1月前
|
存储 资源调度 算法
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
|
29天前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
159 0
|
11天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
10 2
|
23天前
|
算法 安全 编译器
【C++ 17 新特性 折叠表达式 fold expressions】理解学习 C++ 17 折叠表达式 的用法
【C++ 17 新特性 折叠表达式 fold expressions】理解学习 C++ 17 折叠表达式 的用法
23 1
|
25天前
|
设计模式 算法 测试技术
【C/C++ 编程 哑对象】了解和学习哑对象在C/C++ 编程中的使用
【C/C++ 编程 哑对象】了解和学习哑对象在C/C++ 编程中的使用
43 2
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法