回到系列文章的目录——[系列文章目录] 回到本章目录——[第1章目录]
1.2.4 Code::Blocks运行程序的两种方式
微课件1.2展示的程序运行方式,只要连编(Build)成功了,一点运行(Run)按钮,看结果就可以了。目的达到了。但是程序是如何执行的,作为学习者,我们需要知道“内幕”。作为开发者,尤其是当程序执行结果与预期的不一样时,需要找到问题究竟出在什么地方。
Code::Blocks提供了另外一种运行程序的方式——单步执行,可以由编程者控制,逐条执行程序。
为了展示这种方式,先看一个程序:
例1.2 一个能赋值、计算和输出的程序
//例程ch1-2.cpp
#include <iostream>
using namespace std;
int main( )
{
int a=0,b; //声明a、b是整数类型(int)的变量,指定a的初值是0
double r,pi,s; //声明r、pi、s是双精度浮点类型(double)的变量,
cout<<a<<" "<<b<<endl;
b=50;
a=b+50;
cout<<a<<" "<<b<<endl;
b=a*b;
a=a/3;
cout<<a<<" "<<b<<endl;
r=2.5;
pi=3.14;
s=2*pi*r;
cout<<"周长为: "<<s<<endl;
cout<<"面积为: "<<pi*r*r<<endl;
return 0;
}
这个程序有点小长,也没有多给出注释。
静心,看完,你是有感觉的。
中间出现了一些“赋值”,如第9行b=50,请念出声音来:“b赋值为50”。请再念两遍,重复是理解的秘诀。
用术语解释,b=50,就是要将50这个整数赋值给变量b,换句话说,变量b的值成了50。后面的语句,基本都是由赋值和输出组成的。
你你已经学会的办法,在Code::Blocks中连编和运行程序,得到的运行结果是:
对于初学者,将程序中第8、11、14、18、19行的输出语句与运行结果中的五行输出一一对应起来,这不是一件太难的事。注意到这五个输出语句最后都会输出endl,都会换行,所以一行的输出,对应的是一个输出语句。
但是,在程序运行中到底发生了什么?作为编程人员,有权利看到“内幕”吗?怎么能够做到?
微课件1.4 程序执行的两种方式,给出了问题的答案。
| |
初学编程,两种运行程序的方法都要会。我们将逐渐学会编程序,在编制程序过程中,根据不同的需要,也能够根据需要选择合适的执行方式,查看程序的执行结果,或者要观察到执行过程,以满足找出Bug的需要。
表1.1 对两种执行程序的方式进行了对比。
| C/C++不能解释执行,不直观,所以有些人认为C/C++不适合初学者。然而,从理解计算机和编程本质的角度,C/C++对专业学生不可替代。 其实,各种编程环境都提供了单步执行之类的功能。这个功能被归类为调试工具中的一部分。 在现在的教学中,大多数学生学完程序设计,仍然不会调试。因为有的教师不讲,学生也不用。我的体会是,接触的晚了,学习者没有体会到单步执行的好处,就不愿意去用这种方式的,尽管听说过其好处。不去用,这种好处却体会不到。这是个怪圈。 现在,我将单步执行称为执行程序的第二种方式,提升了其地位。单执行对于一名开发者而言,配得上这一地位。在刚一接触程序设计时就会用,自然没有后面“横插进来”造成的抵触。 单步太繁琐?希望步子大一些。不着急,后面还要介绍设置断点等功能。围绕单步执行,还有“组合工具”已经给我们配备。现阶段程序不大,先就 Step by step。 |