注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 32位开发 > C/C++ > 内容正文

VC#2005快速入门之使用do语句

发布时间:2006-07-25 12:21:02 来源:csdn 网友评论 0 条
  while和for语句都在循环开始的时候测试它们的布尔表达式。这意味着假如在首次测试时,布尔表达式就求值为false,那么循环主体一次都不会运行。do语句则不同,它的布尔表达式是在每次重复之后求值的,所以主体至少会执行一次。

  do语句的语法如下(不要忘记最后的分号):

do
statement
while (booleanExpression);

  如果循环主体由多个语句构成,请使用一个语句块。下面是在控制台上输出0~9的那个例子的do语句版本:

int i = 0;
do
{
 Console.WriteLine(i);
 i++;
}
while (i != 10);


break和continue语句

  在前文我们曾用break语句来跳出switch语句。除此之外,还可以使用break语句来跳出一个循环。执行break之后,系统会立即终止循环,并从循环之后的第一个语句继续执行。在这种情况下,循环的“更新”和“继续”条件都不会重新判断。

  与此相反,continue语句会造成当前循环结束,并立即开始下一次循环(在对布尔表达式进行重新求值之后)。下面是在控制台上输出0~9的那个例子的另一个版本,这一次将使用break和continue语句:



int i = 0;

while (true)
{
 Console.WriteLine("continue " + i);
 i++;
 if (i != 10)
  continue;
 else
  break;
}

  这段代码看起来让人非常难受。许多编程指南都建议小心使用continue,或者根本不要使用它,否则很容易造成难以理解的代码。continue的行为也令人捉摸不定。例如,假如在一个for语句中执行continue,那么会在运行了for语句的“更新”部分之后,才开始下一次循环。

  在下面的例子中,我们将写一个do语句来将一个数字转换成字符串形式。

  ·使用do语句

  1. 在Visual Studio 2005中打开DoStatement项目,它位于My Documents文件夹下的/Microsoft Press/Visual CSharp Step by Step/Chapter 5/DoStatement子文件夹中。

  选择“调试”|“开始执行(不调试)”。

  Visual Studio 2005将开始生成并运行Windows应用程序。

  应用程序将显示一个窗体,其中包含两个文本框和一个Show Steps(显示步骤)按钮。在上方的文本框中输入一个正数(我们使用的算法还不支持负数),然后单击Show Steps按钮,下方的文本框就会显示创建这个数字的字符串形式所需的步骤。

  注意 这个简单的例子展示了如何使用do循环将数字转换成字符串。但要注意一点,.NET Framework提供了Convert.ToString方法来做同样的事情。在自己的应用程序中执行类似任务时,应该使用该方法。

  2. 作为一个例子,请在上方的文本框中输入2693,然后单击Show Steps按钮。

  在下方的文本框中,将显示创建2693的字符串形式所经历的步骤,如图2所示。


图2 单击Show Steps按钮之后将显示具体步骤

  3. 关闭窗口,返回Visual Studio 2005编程环境。

  4. 在“代码和文本编辑器”窗口中显示Form1.cs的代码。

  找到showSteps_Click方法。该方法会在用户单击了Show Steps按钮之后开始运行。

  5. 该方法包含以下语句:

int amount = System.Int32.Parse(number.Text);

steps.Text = "";

string current = "";

do

{

int digitCode = '0' + amount % 10;

char digit = Convert.ToChar(digitCode);

current = digit + current;

steps.Text += current + "/r/n";

amount /= 10;

}

while (amount != 0);

  注意 /r代表一个回车符。在多行文本框控件中输出文本时,需要同时输出一个回车符和一个换行符,才能跳到下一行,并使光标定位到行首。否则,以后输出的文本将出现在同一行上。

  第一个语句使用System.Int32类的Parse方法,将number文本框的Text属性中存储的字符串值转换成int值:

  int amount = System.Int32.Parse(number.Text);

  第二个语句清除下方的文本框(称为steps)中显示的文本,这一次的做法是将Text属性设为一个空字符串:

  steps.Text = "";

  第三个语句声明一个名为current的字符串变量,并把它初始化为空字符串:

  string current = “";
 
  这个方法真正的工作是由do语句来执行的,它从第4个语句开始:

do
{
 ...
}
while (amount != 0);

  我们将利用整数算术操作符和取模操作符,使用10来反复除amount变量,每次获得的余数都是正在构造的字符串的下一个数位。最终,amount将缩减为0值,循环将结束。注意,循环主体至少会执行一次。假如用户输入的就是数字0,这个“至少执行一次”的行为就正是我们所需要的。

  do循环中的第1个语句是:

  int digitCode = '0' + amount % 10;

  该语句声明一个名为digitCode的int变量,并把它初始化为以下表达式的结果:

  '0' + amount % 10

  这个表达式需要稍微解释一下!'0'的值是指字符0的值。在Windows使用的字符集中,该字符等于整数值48(每个字符都有它自己的惟一的字符代码,这是一个整数值)。类似地,'1'的字符代码是49,'2'的字符代码是50,以此类推。

  amount % 10的值是用10来除amount之后得到的余数。例如,假如amount包含的值是2693,那么2693 % 10的结果是3(2693除以10的结果是商269余3)。因此,假如amount等于2693,那么表达式'0' + amount % 10就等同于'0' + 3,结果是51。这是字符'3'的字符代码。要注意的是,+操作符在这里执行了一次隐式强制类型转换,它将'0'转换成整数值48,使整个表达式能够求值。

  do循环中的第2个语句是:

  char digit = Convert.ToChar(digitCode);

  该语句声明了一个名为digit的char变量,并把它初始化成Convert.ToChar(digitCode)这个方法调用的结果。调用该方法,将返回与参数指定的字符代码对应的一个字符。换言之,Convert.ToChar('0' + 3)的求值结果就是'3'。

  do循环中的第3个语句是:

  current = digit + current;

  该语句将刚才计算出来的字符变量digit附加到字符串current之前。注意,该语句不能替换为current += digit,否则就会将digit附加到current之后。

  do循环中的第4个语句是:

  steps.Text += current + "/r/n";

   该语句的作用是在Steps文本框的Text属性中附加另一个要显示的步骤。

  do循环中的最后一个语句是:

  amount /= 10;

  该语句等同于amount = amount / 10;。如果amount的值是2693,那么在运行上述语句之后,amount的值将变成269。注意,每一次重复do语句,都会从amount中移除最后一个数位,并将那个数位附加到current字符串之前。

  在最后一个练习中,将使用Visual Studio 2005调试器来逐步执行上述do语句,以帮助你理解它的工作过程。

  ·逐步执行do语句

  1. 在“代码和文本编辑器”窗口中找到showSteps_Click方法。

  2. 将鼠标移至showSteps_Click方法的第一个语句。

  第一个语句是:

int amount = System.Int32.Parse(number.Text);

  3. 右击第一个语句的任何地方,从弹出菜单中选择“运行到光标处”。

  Visual Studio 2005将生成并运行应用程序。

  4. 窗体出现后,在上方的文本框中输入2693,然后单击Show Steps按钮。

  程序将暂停运行,Visual Studio 2005将进入调试模式。“代码和文本编辑器”窗口左侧将出现一个黄箭头,标记出当前语句。

  5. 如果“调试”工具栏不可见,请显示它(选择“视图”|“工具栏”|“调试”)。在“调试”工具栏上,请单击“断点”按钮旁边的下拉列表箭头。

  随后会打开如图3所示菜单。


图3 单击“断点”按钮旁边的下拉列表箭头

  6. 从这个菜单中选择“局部变量”。

  随后会打开“局部变量”窗口,其中显示了当前方法中的局部变量的名称、值和类型,其中的amount是局部变量。注意,amount的值目前是0,如图5.4所示。

  7. 单击“调试”工具栏上的“逐语句”按钮。

  调试器将运行当前语句:

int amount = System.Int32.Parse(number.Text);

  在“局部变量”窗口中,amount的值将变成2693,黄箭头会指向下一个语句。

  8. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

  steps.Text = "";

  该语句不影响“局部变量”窗口的显示,因为steps是窗体的一个字段,而不是一个局部变量。黄箭头继续指向下一个语句。


图4 “局部变量”窗口

  9. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

string current = "";

  黄箭头将指向do循环的起始大括号。

  10. 继续单击“逐语句”按钮。

  黄箭头将指向do循环中的第一个语句。do循环包含它自己的两个局部变量,即digitCode和digit。注意,这些局部变量已经在“局部变量”窗口中显示,而且digitCode的值为0。

  11. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

int digitCode = '0' + amount % 10;

  在“局部变量”窗口中,digitCode的值将变成51。这是由于表达式amount % 10的结果为3(amount的值为2693),而'3'的字符代码是51(48 + 3)。

  12. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

char digit = Convert.ToChar(digitCode);

  在“局部变量”窗口中,digit的值将变成'3' 。注意在“局部变量”窗口中,char值是同时使用字符代码值(本例是51)和对应的字符形式(本例是'3')来显示的。黄箭头将指向do循环的下一个语句。

  注意,在“局部变量”窗口中,current变量的值是""(即为空)。

  13. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

current = current + digit;

  在“局部变量”窗口中,current变量的值将变成"3"。

  14. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

steps.Text += current + "/r/n";

  该语句将在steps文本框中显示文本"3",并后跟一个回车符和一个换行符,确保以后的输出将从文本框的下一行开始。

  在“局部变量”窗口中,amount的值仍然为2693。

  15. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

  amount /= 10;

   在“局部变量”窗口中,amount的值将变成269。黄箭头指向do循环的结束大括号。

  16. 继续单击“逐语句”按钮。

  黄箭头将指向while语句。

  17. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

  while (amount != 0);

  amount的值是269,表达式269 != 0将求值为true,所以将进行下一次循环。黄箭头将跳回do循环的起始大括号。

  18. 继续单击“逐语句”按钮。

  黄箭头将指向do循环中的第一个语句。

  19. 再单击“逐语句”按钮22次,观察“局部变量”窗口中的局部变量的值发生的变化。在“局部变量”窗口中,amount的值最终将变成0,而current的值变成"2693"。

  黄箭头将指向do循环的循环继续条件:

while (amount != 0);

  amount的值目前为0,所以表达式amount != 0求值为false,do循环应该终止。

  20. 继续单击“逐语句”按钮。

  调试器将运行以下语句:

while (amount != 0);

  如同我们预期的那样,dot循环终止,黄箭头移至showSteps_Click方法的结束大括号。

  21. 单击“调试”工具栏上的“继续”按钮。

  窗体将出现,并显示为了创建2693的字符串形式所经历的4个步骤:"3","93","693"和"2693"。

  22. 关闭窗体,返回Visual Studio 2005编程环境。

  恭喜!你已经成功编写了有意义的while和do语句,并利用Visual Studio 2005调试器对它们进行了调试。
关于 VC#2005 快速入门 do语句 的新闻
  • VC#2005快速入门之使用while语句
  • VC#2005快速入门之复合赋值操作符
  • AJAX快速入门之HTTP协议基础
  • Visual C#2005快速入门之switch语句
  • VC#2005快速入门之使用if语句
【评论】【收藏本文】【打印】【关闭】
上一篇文章:VC++大数据量绘图时无闪烁刷屏技术实现
下一篇文章:在VC++中实现无标题栏对话框的拖动
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
全站资源
  • 微软官方入门教程19:轻松掌握Vista系统的快
  • 微软2008大冲击,预借Vista SP1力促Vista市
  • 在收件箱中获得 Windows Vista 的最新更新
  • 微软官方Vista入门教程全集19篇(Vista学院
  • Windows Vista 的成功将势不可挡
  • 快快抛弃Vista,拥抱XP SP3!你觉得呢?
  • 浅谈Vista系统关闭虚拟内存与使用内存盘加速
  • 嘿嘿,按下键盘上面的三个键,马上让你的Vi
  • Windows Vista的盗版率只有Windows XP的一半
  • 3DMark和PCMark Vantage新版将只支持Vista系
阅读排行
  • Borland 发布C++ Builder 2006 RAD 环境
  • C/C++程序员应聘常见面试题深入剖析
  • Visual C++常用数据类型转换详解
  • C++中的 static 关键字
  • 利用VC++实现局域网实时视频传输
  • 浅谈C/C++内存泄漏及其检测工具
  • 英国投票否决C++/CLI 微软强攻ISO标准受挫
  • VC++下用MSComm控件实现串口通讯
  • 伪随机数生成及在VC++中的实现
  • VC++编程实现对波形数据的频谱分析
最新技术文档
  • C++中用赋值形式op=取代单独形式op
  • C++启蒙之用C++制作程序
  • C++启蒙之C++中的类
  • 解析C++/CLI之头文件、内联函数与数组
  • C++启蒙之控制结构
  • C++启蒙之注释符号
  • 了解C++异常处理的系统开支
  • C++语言学习之从结构到类
  • C++中理解“传递参数”和异常之间的差异
  • C++中禁止异常信息传递到析构函数外
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载