C++程序设计实践学材系列(12)——1.2.4 Code::Blocks运行程序的两种方式

简介: 回到系列文章的目录——[系列文章目录]  回到本章目录——[第1章目录] 1.2.4 Code::Blocks运行程序的两种方式  微课件1.2展示的程序运行方式,只要连编(Build)成功了,一点运行(Run)按钮,看结果就可以了。  目的达到了。但是程序是如何执行的,作为学习者,我们需要知道“内幕”。作为开发者,尤其是当程序执行结果与预期的不一样时,需要找到问题究竟出在什么地方。  

回到系列文章的目录——[系列文章目录]  回到本章目录——[第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 程序执行的两种方式,给出了问题的答案。

 

下载:微课件1.4 程序执行的两种方式


  初学编程,两种运行程序的方法都要会。我们将逐渐学会编程序,在编制程序过程中,根据不同的需要,也能够根据需要选择合适的执行方式,查看程序的执行结果,或者要观察到执行过程,以满足找出Bug的需要。
  表1.1 对两种执行程序的方式进行了对比。
  

 

 

C/C++不能解释执行,不直观,所以有些人认为C/C++不适合初学者。然而,从理解计算机和编程本质的角度,C/C++对专业学生不可替代。

其实,各种编程环境都提供了单步执行之类的功能。这个功能被归类为调试工具中的一部分。

在现在的教学中,大多数学生学完程序设计,仍然不会调试。因为有的教师不讲,学生也不用。我的体会是,接触的晚了,学习者没有体会到单步执行的好处,就不愿意去用这种方式的,尽管听说过其好处。不去用,这种好处却体会不到。这是个怪圈。

现在,我将单步执行称为执行程序的第二种方式,提升了其地位。单执行对于一名开发者而言,配得上这一地位。在刚一接触程序设计时就会用,自然没有后面“横插进来”造成的抵触。

单步太繁琐?希望步子大一些。不着急,后面还要介绍设置断点等功能。围绕单步执行,还有“组合工具”已经给我们配备。现阶段程序不大,先就 Step by step



回到系列文章的目录——[系列文章目录]  回到本章目录——[第1章目录]

目录
相关文章
|
23天前
|
存储 缓存 算法
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
111 0
|
25天前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
69 0
|
2天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
12天前
|
人工智能 NoSQL 机器人
【C++】VS code如何配置使用C++(手把手教学)
【C++】VS code如何配置使用C++(手把手教学)
|
18天前
|
存储 缓存 C++
C++链表常用的函数编写(增查删改)内附完整程序
C++链表常用的函数编写(增查删改)内附完整程序
|
23天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
67 2
|
24天前
|
存储 并行计算 算法
C++动态规划的全面解析:从原理到实践
C++动态规划的全面解析:从原理到实践
90 0
|
24天前
|
存储 算法 C语言
【C/C++ 数据结构 树】探索C/C++中的二叉树:从理论到实践
【C/C++ 数据结构 树】探索C/C++中的二叉树:从理论到实践
60 0
|
24天前
|
安全 编译器 程序员
【C++ 泛型编程 高级篇】C++ 编程深掘:静态成员函数检查的艺术与实践
【C++ 泛型编程 高级篇】C++ 编程深掘:静态成员函数检查的艺术与实践
62 0
存储 编译器 Linux
15 0