曙海教育集团论坛开发语言培训专区C++语言开发 → C++/Object Pascal中循环结构的一点差异及讨论


  共有5008人关注过本帖树形打印

主题:C++/Object Pascal中循环结构的一点差异及讨论

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
C++/Object Pascal中循环结构的一点差异及讨论  发帖心情 Post By:2010-12-10 14:15:51

虽然在所有的编程语言之中,程序的执行都无非是顺序、分支和循环等几种结构,比如说,C中的if…else,switch…case,while和do…while, 以及Pascal中的if…then…else,case…of,while…do,repeat…until,几乎就是一一对应的关系,只不过语法上有小小的差异而已。这样的相似性使得我们在掌握一门语言之后,再学习其他语言就容易得多了。然而,语言之间的不同是细微而琐碎的,如果不注意这些差别的话,它们迟早会从不知哪个角落跳出来,让程序员陷入debug的噩梦。


让我们来看一个例子。我们知道在一般的循环结构中,fo循环和while循环是可以转换的,例如,在Pascal中

for I:=StartValue to EndValue do …;

可以转换成相应的while 循环:

I:=StartValue;

while I<=EndValue do begin

   …;

   Inc(I);

end;

看起来,这两种循环是完全一样的。别忙,真的完全一样吗?下面是一段Delphi代码,你可以先心算一下,看得出来的结果应该是多少:

procedure TForm1.FormCreate(Sender: TObject);

var

  i, j : integer;

  index : integer;

  str : string;

begin

  i := 0;

  j := 3;

  for index:=0 to j do begin

    Inc(i);

    if j<5 then Inc(j);

  end;

  str := IntToStr(i);

 

  i := 0;

  j := 3;

  index := 0;

  while index<=j do begin

    Inc(i);

    if (j<5) then Inc(j);


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

C++/Object Pascal中循环结构的一点差异及讨论








签名