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章目录]

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 API
如何在c++侧编译运行一个aclnn(AOL)算子?
CANN的AOL库提供了一系列高性能算子API,优化了昇腾AI处理器的调用流程。通过两段式接口设计,开发者可以高效地调用算子库API,实现模型创新与应用,提升开发效率和模型性能。示例中展示了如何使用`aclnnAdd`算子,包括环境初始化、算子调用及结果处理等步骤。
|
6月前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
65 0
|
4月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
250 22
|
5月前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
89 2
|
6月前
|
PHP C++ Python
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
144 0
|
1月前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
67 19
|
1月前
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
46 13
|
1月前
|
编译器 数据安全/隐私保护 C++
【C++面向对象——继承与派生】派生类的应用(头歌实践教学平台习题)【合集】
本实验旨在学习类的继承关系、不同继承方式下的访问控制及利用虚基类解决二义性问题。主要内容包括: 1. **类的继承关系基础概念**:介绍继承的定义及声明派生类的语法。 2. **不同继承方式下对基类成员的访问控制**:详细说明`public`、`private`和`protected`继承方式对基类成员的访问权限影响。 3. **利用虚基类解决二义性问题**:解释多继承中可能出现的二义性及其解决方案——虚基类。 实验任务要求从`people`类派生出`student`、`teacher`、`graduate`和`TA`类,添加特定属性并测试这些类的功能。最终通过创建教师和助教实例,验证代码
48 5
|
1月前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
38 5
|
1月前
|
Serverless 编译器 C++
【C++面向对象——类的多态性与虚函数】计算图像面积(头歌实践教学平台习题)【合集】
本任务要求设计一个矩形类、圆形类和图形基类,计算并输出相应图形面积。相关知识点包括纯虚函数和抽象类的使用。 **目录:** - 任务描述 - 相关知识 - 纯虚函数 - 特点 - 使用场景 - 作用 - 注意事项 - 相关概念对比 - 抽象类的使用 - 定义与概念 - 使用场景 - 编程要求 - 测试说明 - 通关代码 - 测试结果 **任务概述:** 1. **图形基类(Shape)**:包含纯虚函数 `void PrintArea()`。 2. **矩形类(Rectangle)**:继承 Shape 类,重写 `Print
46 4