这样写也把计算结果输出了,但可能会被人说成“用户界面不友好”噢。
来看看我们程序运行时的某种结果。
我决定让它计算:
2002+1973。
你要让它算什么?
你自已试吧。
虽然是个很不起眼的小程序,虽然只是一道小学低年级的算术题,可是必竟我们亲手证明了我们的爱机具有计算能力。
得意5秒钟,我们来继续我们的课程。
我将通过单步运行来亲眼程序是如何一步一步地按顺序运行的。
如果你在还在运行着程序,回车键关掉那个黑色窗口。
切换回C++Builder的代码窗口。
单步运行是一种最必要的调试方法(其它众多调试方法几乎都基于该方法),它可以让程序按代码行一步步运行。
在CB中,通过按F7或F8键,可以实现单步运行一个完整的代码行(不一定是物理上的一行代码)。
F7和F8的功能区别现暂不必理。
本章中,我们使用F8。
对应的功能菜单为:
从菜单中看到,F8对应的功能名称为:
StepOver(单步越过)。
按下F8后,程序开始运行,但并没有直接出现结果窗口。
相反,代码窗口出现了变化:
左边栏上的
表示该行是一可以单步中断的代码行,而
则指示了当前正要运行的代码行,注意,是正要运行,而不是正在运行。
现在让我们再按一次F8(在代码窗口里),可以看到程序往下走到第二个可中断行。
再按一次F8,程序又往下走了一行(为了方便观察,我将输出窗口拉近了一并抓下图)。
输出窗口(DOS窗口)有出输出,并且有光标闪烁,但你可以试着在输出窗口里敲敲键盘,会发现你并不能在这一步输入加数1,因为此时程序运行到cin>>js1,但并未执行这一行。
只有我们再按一下F8(记得在CB的代码窗口里,而不是在DOS窗口里),程序将要求并允许我们输入加数1。
如果你还没有再按一次F8,现在按一下。
结果如下:
我们发现代码窗口里暂时没有
了,因为控制权已暂时移交到我们程序,它现在可以输入了。
我们输入2002,然后回车,
很快又出现在代码窗口里,并且,已经越过cin>>js1这一行。
接下来是提示输入第二个加数,大同小异。
只要你记得当控制权转到程序时,你需要切换到输出窗口输入第二个数。
注意了:
最后当程序运行:
getchar(),需要我们输入一个回车时,控制权也会移到程序。
由于是在单步运行,所以当我们在输出窗口最后敲一个回车时,程序同样不会直接运行到结束。
所以你仍得到CB的代码窗口里按F8。
getchar()以后,程序仍将在return0;和最后的一个‘}'上作单步运行两次才退出。
如果你懒得这样一步步运行到结束,想结束单步运行,可以直接按F9,程序将恢复全速运行,直接运行到结束。
就这样,我们一步一步地运行完这个程序。
我们学会了如何通过F8来单步运行程序,我们也理解了什么叫顺序流程。
这个程序中每一个可中断点(事实上也是可执行点),在程序运行时,被依照其先后次序,一一执行。
如果你还是不理解什么叫“顺序”,那就从椅子上站起来,然后双眼直直地瞄住一面墙(挑结实一点的),然后直直地走过去,听到“砰”的一声后,你一定会开窍。
(一般不传之秘笈:
当程序员觉得被眼前的代码弄得头晕脑胀的时候,大多数人都会起来走走,下楼抽颗烟,或者只是坐坐,吹吹风……最佳方法是挪到不远处某漂亮的女测试员的桌边胡说八道几句,再挪回电脑前,往往发现问题的答案很简单!
)
8.1.2加法计算器(WIN版)
我们一直在写DOS下的程序(控制台程序)。
趁今天的课程知识点不多,我们来写一个正宗的Windows应用程序。
它还是实现一个加法计算器。
不要做得太顺手了!
听我说,如果刚才那个DOS版你还没保存,请先Shift+Ctrl+S保存全部。
接着,最好执行一下这个菜单命令:
File|CloseAll。
如图:
然后,我们重复一下如何建立一个空白的Windows应用程序工程,我们在以前的课程中曾经做过一次,在作业里也考过一次。
其实很简单。
菜单:
File|NewApplicaton(如果是CB6,可能略有不同)。
也可以按工具栏上的这个图标:
然后选择:
Application。
新的空白工程建成以后。
我们需要来设计程序界面--毕竟,这是一个有图形用户界面(GUI)的Windows程序。
其实很简单,我们需要两个编辑框,让用户输入两个加数。
再来一个编辑框用于显示和。
还要一个按钮,当用户按下时,加法运算才开始。
当然还需要一些标签用于显示提示文字。
下面先把要用到三种控件在控件栏位置说一下:
这三个控件都在控件栏的Standard页上。
上图中,
①:
标签控件(TLabel);②:
编辑框控件(TEdit);③:
按钮控件(TButton)。
先在表单上放三个标签,三个编辑框:
(在控件栏上按下控件图标,然后在表单上单击)
然后,用鼠标单击表单上的Label1,如果你看不到下面这个窗口(属性检视器),请按F11。
将其Caption(标题)属性,由原来默认的Label1改为:
“请输入第一个加数:
”如图:
同样的方法,修改Label2,Label3的标题,分别为:
“请输入第二个加数”和“和”。
三个编辑框中默认的文本“Edit1”、“Edit2”、“Edit3”我们都不要。
编辑框中的文字属于TEdit的Text属性。
让我们一起将它们清除:
首先拉动鼠标,一起选中三个编辑框:
将上图中Text属性的值:
Edit1清空。
现在,设计结果如图:
前两个编辑框我们准备让用户输入加数,最后一个编辑框要用来显示相加结果(和),所以最后一个编辑框不能让用户修改。
编辑框(TEdit)有一个属性名为ReadOnly(只读),当它被设置为真(true)时,编辑框的内容不能手工修改。
如上图,将Edit3的ReadOnly属性改为true(原来默认为false)。
修改ReadOnly的结果并不能直接在设计期间看出。
最后,让我们再加上一个按钮(TButton),并改变其Caption属性为:
“加(&A)”
界面设计完成。
下面开始代码设计。
双击“加”按钮,CB将自动切换到代码窗口,并且自动生成以下代码:
void__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
}
//---------------------------------------------------------------------------
请加入以下黑体部分的代码:
void__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
intjs1,js2;
inthe;
js1=Edit1->Text.ToIntDef(0);
js2=Edit2->Text.ToIntDef(0);
he=js1+js2;
Edit3->Text=IntToStr(he);
}
//---------------------------------------------------------------------------
js1=Edit1->Text.ToIntDef(0);用来得到用户输入到Edit1里的数值,你现在可能看不懂,可以不必理会。
只要你能看出js1=...这是一句赋值语句。
保存,运行这个程序。
我们可以反复输入不同数让程序运算。
当然,每次运算前,需正确输入合适的加数,然后按那个按钮。
如果你没有输入加数,或者输入的是非法的字符,如:
"ABC"、"-2-3"等无法转换为数值的内容,则该加数将被当成0。
以下是运行时的一个界面:
你还可以试着在第三个编辑框里敲敲键盘,会发现的确无法改变其内容。
很开心的一章:
我们终于能做些有点意义的小程序了。
从身边找一个会电脑,但没有学习编程的家伙,我们大可用这个程序小小的炫耀一番。
不过,现在你也应该能理解,为什么我们在学习C,C++语言时,我们为什么大多会采用DOS下程序来作为例子,因为若使用Windows程序,它的界面设计很容易让我们分心。
并且,我们还必须面对如Edit2->Text.ToIntDef(0)这些后面才学到的内容。
[到页首]