在 Objective-C 中编程外文翻译资料

 2022-07-25 13:47:05

英语原文共 551 页,剩余内容已隐藏,支付完成后下载完整资料


毕业设计英文翻译(译文)

该程序循环实际上包括其余所有的程序语句,如括号所示。如果有以下概念,也许能更容易地理解该程序的工作方式:

For 5 times

{

Get the number from the user.

Calculate the requested triangular number.

Display the results.

}

前面循环的部分指的是 Calculate the requested triangular number ,它实际上包括:将变量 triangularNumber 的值设为0,以及计算三角数的for循环。这样,这个for语句实际上包含另一个for语句。这在Objective-C中是相当合法的,而且可以继续嵌套,甚至可以嵌套任何想要的层。

处理比较复杂的程序结构(如嵌套的for语句)时,适当地使用缩进显得尤为重要。扫视一下,就能轻易确定每个for语句中包含哪些语句。

for循环的变体

在结束for循环的讨论之前,先探讨一下生成这种循环时允许的一些语法变化。编写for

循环时,你可能发现在开始循环之前需要初始化多个变量,或者可能每次循环都要计算多个表达

式。for循环的任何位置都可包含多个表达式,只要使用逗号分隔这些表达式即可。例如,使用

以下形式开始的for循环:

for ( i = 0, j = 0; i lt; 10; i )

...

在循环开始前,将r的值设为。,将j的值设为。。两个表达式r=0和j=0通过逗号隔开,而且两者都是循环的init expression部分。另一个for循环的例子为:

for ( i = 0, j = 100; i lt; 10; i, j -= 10 )

...

for循环开始设置了两个索引变量:1和j,在循环开始之前,它们分别被初始化为0和100。每次执行完循环体之后,i的值加1, j的值减l0。

就像可能希望for循环的特定字段包含多个表达式一样,可能还需要省略语句中的一个或多个字段。通过省略指定的字段并使用分号标记其位置,可简单地实现这一点。省略for语句中某个字段的最常见情形发生在无须计算初始表达式的值时。在这种情况下,init_ expression字段可简单地保留空白,只要仍然包括分号即可,语句如下:

84 第5章 循环结构

for ( ; j != 100; j )

...

如果在进入循环之前己经将j设置了初始值,则可采用这条语句。

省略looping condition字段的for循环实际上是无限循环,就是理论上执行无限次的循环。

只要有其他方式退出循环(例如,执行return、 break或goto语句,相关内容将在本书后面讨论),

就可以使用这一循环。

在for循环中,还可定义一个变量作为初始表达式的一部分。使用以前定义变量的传统方式可实

现。例如,下面的语句可用于设置for循环,它定义了整型变量counter,并将其初始化为1,语句

如下:

for ( int counter = 1; counter lt;= 5; counter )

变量counter只在for循环的整个执行过程中是已知的(它被称为局部变量),并且不能在循环外部访问。

最后一种for循环的变体可以在对象集合上执行所谓的快速枚举。第 15 章“数字、字符串和集合”会详细介绍此内容。

while语句

while语句进一步扩展了Objective-C语言中的循环功能指令系统。这个经常使用的结构的语法如下:

while ( expression )

program statement

圆括号中指定的表达式(expression)将被求值。如果表达式求值的结果为true,则执行随后的程序语句(program statement。执行完这条语句(或位于花括号中的一组语句)后,将再次对表达式求值,如果求值的结果为true,将再次执行程序语句。继续这个过程,直到表达式的最终求值结果是false时,循环将终止。然后,程序执行program statement之后的语句。

作为它的用法示例,代码清单5-6建立了一个while循环,它只是从1数到5。

while 语句

85

代码清单5-6

//此程序引入了while语句

#import lt;Foundation/Foundation.hgt;

int main (int argc, char * argv[])

{

@autoreleasepool { int count = 1;

while ( count lt;= 5 ) { NSLog (@'%i', count); count;

}

}

return 0;

}

代码清单5-6输出

1

2

3

4

5

程序最初将count的值设为1,然后开始执行while循环。因为count的值小于或等于5,所以将执行它后面的语句。花括号将NSLog语句和对count执行加1操作的语句定义为while循环。从程序的输出可以看出,这个程序执行了5次,直到count的值是5为止。

从以上程序中你可能认识到,使用for语句同样可以方便地完成该任务。事实上,for语句都可转换成等价的while语句,反之亦然。例如,下面这个普通的for语句:

for ( init_expression; loop_condition; loop_expression ) program statement

可用while语句的形式等价地表示为:

init_expression;

while ( loop_condition )

{

program statement loop_expression;

}

86 第5章 循环结构

熟悉了while语句的用法之后,对于何时用while语句、何时用for语句,你会有更好的认识。一般来说,在执行预定次数的循环时,首选for语句。同样,如果初始表达式、循环表达式和循环条件都涉及同一变量,那么for语句很可能是合适的选择。

下一个程序提供了使用while语句的另一个例子。这个程序计算两个整数值的最大公约数 (greatest common divisor)。两个整数的最大公约数(此后将其缩写为gcd )是可整除这两个整数的最大整数值。例如,10和15的gcd是5,因为5是可整除10和15的最大整数。

可使用一个过程(或算法)来获得任意两个整数的gcd,它基于欧几里得在公元前300年左右首次研究出的一个方法,其说明如下。

问题:找出两个非负整数u和v的最大公约数。

步骤I:若v等于0,则结束,即gcd等于u。

步骤2:计算temp=u%v, u=v, v=temp,并回到步骤1。

不要过分关注上述算法的运行细节,相信它就可以了。此处我们更关心开发一个程序来找出最大公约数,而不是分析这一算法的实现方式。

使用算法描述找出最大公约数这一问题的解决方案之后,开发一个计算机程序成了一项十分简单的工作。算法步骤的分析揭示:只要v的值不等于0,就会重复执行步骤2。由于有了这一发现,该算法在Objective-C中利用while语句来实现是很自然的。

代码清单5-7用于找出用户输入的两个整数的gcd。

代码清单5-7

// 找到两个非负整数的最大公约数

#import lt;Foundation/Foundation.hgt;

int main (int argc, char * argv[])

{

@autoreleasepool { unsigned int u, v, temp;

NSLog (@'Please type in two nonnegative integers.'); scanf ('%u%u', amp;u, amp;v);

while 语句

87

while ( v != 0 ) { temp = u % v; u = v;

v = temp;

}

NSLog (@'Their greatest common divisor is %u', u);

}

return 0;

}

代码清单5-7输出

Please type in two nonnegative integers.

150 35

Their greatest common divisor is 5

代码清单5-7A 输出(重新执行)

Please type in two nonnegative integers.

1026 540

Their greatest common divisor is 54

输入两个整型值并分别存储到变量u和v之后(使用%u格式字符读入一个无符号的整型值),程

序进入一个while循环来计算它们的最大公约数。退出while循环之后,u的值会显示出来,即代表

v和“的原始值的gcd,并且显示一条适当的消息。

第7章“类”中,返回处理分数时,将利用这个算法来找出最大公约数。利用这个算法将分数化

简到最简单的形式。

对于下一个说明while语句的程序,设想的任务是翻转从终端输入的整数位。例如,如果用户输

入数字1234,该程序将把这个数字的位颠倒过来,并显示结果4321。

注意

NSLog调用会导致每个数字出现在输出的单独行上。熟悉printf函数的C程序员可以使用该函数,而不是让数字连续地显示:

88 第5章 循环结构

要编写这样的程序,首先必须提出一个算法来实现所陈述的工作。最常见的情况是,分析自己解决问题的方法可以产生一个算法。对于颠倒一个数字的各位的这项工作,解决方案可简单地陈述为“从右到左依次读取数字的位。”通过开发一个过程,从数字最右边的位开始依次分离或取出该数字的每个位,计算机程序就可以依次读取数字的各个位,提取的位随后可以作为己颠倒数字的下一位显示在终端上。

通过将整数除以10之后取其余数,可提取整数最右边的数字。例如,1234% 10会得出值4,就是1234最右边的数字,也是颠倒后数字的第一位(记住,可以使用模运算符得到一个整数除以另一个整数所得的余数)。先将数字除以10(回忆一下整数除法的工作方式),再重复这个过程,就可以获得下一个数字。因此,1234/10的结果为123,而123的结果为3,它是颠倒后数字的第二个数。

这个过程可一直继续执行,直到计算出最后一个数字为止。一般情况下,如果最后一个整数除以10的结果为0,那么这个数字就是最后一个要提取的数字。

代码清单5-8提示用户输入一个数值,然后从右向左依次显示该数值各个位的数字。

代码清单5-8

// Program to reverse the digits o

全文共14327字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[154893],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。