⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第8章 顺序流程.htm

📁 用非常通俗的语言介绍了C++和C
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      <P>cout &lt;&lt; he;</P>
      <P>这样写也把计算结果输出了,但可能会被人说成“用户界面不友好”噢。</P>
      <P> </P>
      <P>来看看我们程序运行时的某种结果。我决定让它计算:2002 + 1973。你要让它算什么?你自已试吧。</P>
      <P><IMG height=142 src="第8章 顺序流程.files/ls08.h3.jpg" width=281 
border=0></P>
      <P> </P>
      <P>虽然是个很不起眼的小程序,虽然只是一道小学低年级的算术题,可是必竟我们亲手证明了我们的爱机具有计算能力。得意5秒钟,我们来继续我们的课程。我将通过<B>单步运行</B>来亲眼程序是如何一步一步地按顺序运行的。</P>
      <P>如果你在还在运行着程序,回车键关掉那个黑色窗口。</P>
      <P>切换回C++ Builder的代码窗口。</P>
      <P> </P>
      <P>单步运行是一种最必要的调试方法(其它众多调试方法几乎都基于该方法),它可以让程序按代码行一步步运行。</P>
      <P> </P>
      <P>在CB中,通过按F7或F8键,可以实现单步运行一个完整的代码行(不一定是物理上的一行代码)。F7和F8的功能区别现暂不必理。本章中,我们使用F8。对应的功能菜单为:</P>
      <P><IMG height=234 src="第8章 顺序流程.files/ls08.h4.jpg" width=417 
border=0></P>
      <P>从菜单中看到,F8对应的功能名称为:Step Over (单步越过)。</P>
      <P>按下F8后, 程序开始运行,但并没有直接出现结果窗口。相反,代码窗口出现了变化:</P>
      <P><IMG height=380 src="第8章 顺序流程.files/ls08.h5.gif" width=492 
border=0></P>
      <P>左边栏上的 <IMG height=19 src="第8章 顺序流程.files/ls08.h6.gif" width=13 
      border=0> 表示该行是一可以单步中断的代码行,而<IMG height=19 
      src="第8章 顺序流程.files/ls08.h7.gif" width=18 
      border=0>则指示了当前正要运行的代码行,注意,是正要运行,而不是正在运行。</P>
      <P>现在让我们再按一次F8(在代码窗口里),可以看到程序往下走到第二个可中断行。</P>
      <P><IMG height=120 src="第8章 顺序流程.files/ls08.h8.gif" width=414 
border=0></P>
      <P> </P>
      <P>再按一次F8,程序又往下走了一行(为了方便观察,我将输出窗口拉近了一并抓下图)。</P>
      <P><IMG height=109 src="第8章 顺序流程.files/ls08.h10.jpg" width=374 
      border=0></P>
      <P>输出窗口(DOS窗口)有出输出,并且有光标闪烁,但你可以试着在输出窗口里敲敲键盘,会发现你并不能在这一步输入加数1,因为此时程序运行到 cin 
      &gt;&gt; 
      js1,但并未执行这一行。只有我们再按一下F8(记得在CB的代码窗口里,而不是在DOS窗口里),程序将要求并允许我们输入加数1。如果你还没有再按一次F8,现在按一下。结果如下:</P>
      <P><IMG height=137 src="第8章 顺序流程.files/ls08.h12.gif" width=306 
      border=0></P>
      <P>我们发现代码窗口里暂时没有<IMG height=19 src="第8章 顺序流程.files/ls08.h7.gif" width=18 
      border=0>了,因为<B>控制权已暂时移交到我们程序</B>,它现在可以输入了。我们输入2002,然后回车,<IMG height=19 
      src="第8章 顺序流程.files/ls08.h7.gif" width=18 border=0>很快又出现在代码窗口里,并且,已经越过 cin 
      &gt;&gt; js1这一行。</P>
      <P> </P>
      <P><IMG height=165 src="第8章 顺序流程.files/ls08.h9.gif" width=345 
border=0></P>
      <P> </P>
      <P>接下来是提示输入第二个加数,大同小异。只要你记得当控制权转到程序时,你需要切换到输出窗口输入第二个数。 
      注意了:最后当程序运行:getchar(),需要我们输入一个回车时,控制权也会移到程序。由于是在单步运行,所以当我们在输出窗口最后敲一个回车时,程序同样不会直接运行到结束。所以你仍得到CB的代码窗口里按F8。</P>
      <P><IMG height=87 src="第8章 顺序流程.files/ls08.h14.gif" width=448 
border=0></P>
      <P>getchar() 以后,程序仍将在return 0; 和最后的一个 ‘}' 上作单步运行两次才退出。</P>
      <P><B>如果你懒得这样一步步运行到结束,想结束单步运行,可以直接按F9,程序将恢复全速运行,直接运行到结束。</B></P>
      <P> </P>
      <P>就这样,我们一步一步地运行完这个程序。我们学会了如何通过F8来单步运行程序,我们也理解了什么叫顺序流程。这个程序中每一个可中断点(事实上也是可执行点),在程序运行时,被依照其先后次序,一一执行。</P>
      <P>如果你还是不理解什么叫“顺序”,那就从椅子上站起来,然后双眼直直地瞄住一面墙(挑结实一点的),然后直直地走过去,听到“砰”的一声后,你一定会开窍。</P>
      <P>(一般不传之秘笈:当程序员觉得被眼前的代码弄得头晕脑胀的时候,大多数人都会起来走走,下楼抽颗烟,或者只是坐坐,吹吹风……最佳方法是挪到不远处某漂亮的女测试员的桌边胡说八道几句,再挪回电脑前,往往发现问题的答案很简单!)<BR></P>
      <H4><A name=8.1.2>8.1.2</A> 加法计算器(WIN版)</H4>
      <P> </P>
      <P>我们一直在写DOS下的程序(控制台程序)。趁今天的课程知识点不多,我们来写一个正宗的Windows应用程序。它还是实现一个加法计算器。</P>
      <P> </P>
      <P>不要做得太顺手了!听我说,如果刚才那个DOS版你还没保存,请先 Shift + Ctrl + S 
      保存全部。接着,最好执行一下这个菜单命令:File | Close All。如图:</P>
      <P><IMG height=305 src="第8章 顺序流程.files/ls08.h15.gif" width=133 
      border=0></P>
      <P> </P>
      <P>然后,我们重复一下如何建立一个空白的Windows应用程序工程,我们在以前的课程中曾经做过一次,在作业里也考过一次。</P>
      <P>其实很简单。菜单: File | New Applicaton (如果是CB6,可能略有不同)。也可以按工具栏上的这个图标:</P>
      <P><IMG height=32 src="第8章 顺序流程.files/ls08.h16.gif" width=123 
border=0></P>
      <P>然后选择:Application。</P>
      <P> </P>
      <P>新的空白工程建成以后。我们需要来设计程序界面--毕竟,这是一个有图形用户界面(GUI)的Windows程序。</P>
      <P>其实很简单,我们需要两个编辑框,让用户输入两个加数。再来一个编辑框用于显示和。还要一个按钮,当用户按下时,加法运算才开始。当然还需要一些标签用于显示提示文字。</P>
      <P>下面先把要用到三种控件在控件栏位置说一下:</P>
      <P><IMG height=78 src="第8章 顺序流程.files/ls08.h17.gif" width=258 
border=0></P>
      <P>这三个控件都在控件栏的Standard页上。上图中,</P>
      <P>①:标签控件(TLabel);②:编辑框控件(TEdit);③:按钮控件(TButton)。</P>
      <P> </P>
      <P>先在表单上放三个标签,三个编辑框:(在控件栏上按下控件图标,然后在表单上单击)</P>
      <P><IMG height=207 src="第8章 顺序流程.files/ls08.h18.gif" width=296 
      border=0></P>
      <P>然后,用鼠标单击表单上的 Label1,如果你看不到下面这个窗口(属性检视器),请按F11。</P>
      <P><IMG height=237 src="第8章 顺序流程.files/ls08.h19.jpg" width=385 
      border=0></P>
      <P>将其Caption(标题)属性,由原来默认的Label1改为:“请输入第一个加数:”如图:</P>
      <P><IMG height=239 src="第8章 顺序流程.files/ls08.h20.jpg" width=409 
      border=0></P>
      <P>同样的方法,修改Label2,Label3的标题,分别为:“请输入第二个加数”和“和”。</P>
      <P> </P>
      <P>三个编辑框中默认的文本“Edit1”、“Edit2”、“Edit3”我们都不要。编辑框中的文字属于TEdit的Text属性。让我们一起将它们清除:</P>
      <P>首先拉动鼠标,一起选中三个编辑框:</P>
      <P><IMG height=225 src="第8章 顺序流程.files/ls08.h21.gif" width=324 
      border=0></P>
      <P>将上图中Text属性的值:Edit1清空。</P>
      <P>现在,设计结果如图:</P>
      <P> </P>
      <P><IMG height=207 src="第8章 顺序流程.files/ls08.h22.gif" width=296 
      border=0></P>
      <P>前两个编辑框我们准备让用户输入加数,最后一个编辑框要用来显示相加结果(和),所以最后一个编辑框不能让用户修改。编辑框(TEdit)有一个属性名为ReadOnly(只读),当它被设置为真(true)时,编辑框的内容不能手工修改。</P>
      <P><IMG height=191 src="第8章 顺序流程.files/ls08.h24.gif" width=264 
      border=0></P>
      <P>如上图,将Edit3的ReadOnly属性改为true(原来默认为false)。修改ReadOnly的结果并不能直接在设计期间看出。</P>
      <P> </P>
      <P>最后,让我们再加上一个按钮(TButton),并改变其Caption属性为:“加(&amp;A)”</P>
      <P><IMG height=182 src="第8章 顺序流程.files/ls08.h23.gif" width=296 
      border=0></P>
      <P> </P>
      <P>界面设计完成。下面开始代码设计。</P>
      <P>双击 “加”按钮,CB将自动切换到代码窗口,并且自动生成以下代码:</P>
      <P>void __fastcall TForm1::Button1Click(TObject *Sender)</P>
      <P>{</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
      <P>}</P>
      <P>//---------------------------------------------------------------------------</P>
      <P> </P>
      <P>请加入以下黑体部分的代码:</P>
      <P>void __fastcall TForm1::Button1Click(TObject *Sender)</P>
      <P>{</P>
      <P><B>&nbsp;&nbsp; int js1,js2;</B></P>
      <P><B>&nbsp;&nbsp; int he;</B></P>
      <P><B> </B></P>
      <P><B>&nbsp;&nbsp; js1 = Edit1-&gt;Text.ToIntDef(0);</B></P>
      <P><B>&nbsp;&nbsp; js2 = Edit2-&gt;Text.ToIntDef(0);</B></P>
      <P><B> </B></P>
      <P><B>&nbsp;&nbsp; he = js1 + js2;</B></P>
      <P><B>&nbsp;&nbsp; Edit3-&gt;Text = IntToStr(he);</B></P>
      <P>}</P>
      <P>//---------------------------------------------------------------------------</P>
      <P>js1 = 
      Edit1-&gt;Text.ToIntDef(0);用来得到用户输入到Edit1里的数值,你现在可能看不懂,可以不必理会。只要你能看出 js1 = 
      ...这是一句赋值语句。</P>
      <P>保存,运行这个程序。我们可以反复输入不同数让程序运算。当然,每次运算前,需正确输入合适的加数,然后按那个按钮。如果你没有输入加数,或者输入的是非法的字符,如:"ABC"、"-2-3"等无法转换为数值的内容,则该加数将被当成0。</P>
      <P>以下是运行时的一个界面:</P>
      <P><IMG height=182 src="第8章 顺序流程.files/ls08.h25.jpg" width=296 
      border=0></P>
      <P>你还可以试着在第三个编辑框里敲敲键盘,会发现的确无法改变其内容。</P>
      <P> </P>
      <P>很开心的一章:我们终于能做些有点意义的小程序了。从身边找一个会电脑,但没有学习编程的家伙,我们大可用这个程序小小的炫耀一番。</P>
      <P>不过,现在你也应该能理解,为什么我们在学习C,C++语言时,我们为什么大多会采用DOS下程序来作为例子,因为若使用Windows程序,它的界面设计很容易让我们分心。并且,我们还必须面对如Edit2-&gt;Text.ToIntDef(0)这些后面才学到的内容。</P>
      <P>  </P></TD></TR></TBODY></TABLE></CENTER>
<P align=center>[<A 
href="http://www.d2school.com/bcyl/bhcpp/newls/ls08.htm#页首">到页首</A>]</P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -