Objective-C学习笔记五:选择结构一

[url=http://sarin.iteye.com/blog/1757372]接上文[/url]
选择结构,或者称为分支结构,是编程语言中程序结构的一种,它表示进行一种判断,比如进行循环的时候判断何时终止循环。
选择结构语句包括if和switch,这和其它编程语言都是一样的,表示程序中可以有的选择分支。
首先来看下if语句。if语句包括单if语句,if-else语句和if-else if语句。单if语句只是对一个条件进行判断,符合改条件时执行某语句;if-else语句也是对某一条件进行判断,但是加入了不符合该条件的else语句部分;而if-else if语句则是对多个条件进行逐一判断的语句。if语句表示的选择结构符合自然语言,也就是“如果...就...(否则...)”或者是“如果1...就...如果2...就....如果3...就...(否则...)”,看了下面的示例就会更加明白if语句的使用:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
@autoreleasepool{
int number;

NSLog(@"Please input a number:");
scanf("%i",&number);

if(number<0){
number=-number;
}

NSLog(@"The absolute value is %i",number);
}
return 0;
}

编译运行这个程序,我们得到如下输出:

[img]http://dl.iteye.com/upload/attachment/0078/7463/b2080053-de4a-31e3-8985-9911fd90131e.png[/img]

这个程序就是求一个数字的绝对值,当我们输入的数字小于0的时候,那么取反得到相反数,而对于正数则不用取反。就是上面的效果。
下面针对我们之前做过的分数类加一个将分数转为小数的函数,这里需要做出判断,就是针对分母是否为0进行判定,打开XCode,我们修改程序如下:

[img]http://dl.iteye.com/upload/attachment/0078/7465/06070221-d626-31ed-9db7-08a18c4b40f2.png[/img]

也就是加了一个函数-(double) convertToNum;之后编写它的实现:

-(double) convertToNum
{
if(denominator!=0){
return (double)numerator/denominator;
}else{
return NAN;
}
}

下面是测试用的主函数:

int main(int argc, const char * argv[])
{
@autoreleasepool {
Fraction *fractionA = [Fraction new];
Fraction *fractionB = [Fraction new];

[fractionA setNumerator:1];
[fractionA setDenominator:3];

NSLog(@"The value of fractionA is %g",[fractionA convertToNum]);

NSLog(@"fractionB is %i / %i",fractionB.numerator,fractionB.denominator);
NSLog(@"The value of fractionB is %g",[fractionB convertToNum]);
}
return 0;
}

编译运行,我们得到如下输出:

[img]http://dl.iteye.com/upload/attachment/0078/7467/f18a0189-3d1a-301c-a7d9-b01a25dc5f55.png[/img]

为什么我们没有对fractionB进行设置,但其中分子很分母都是0,这是由于我们初始化后,int型的值都会默认为0,那么不设置就是0了。而要对fractionB变为小数是不可以的,因为分母为0,则返回NAN,就是程序的输出结果。而对于fractionA则没有任何问题,正确输出了结果。
下面来看一下if-else结构的语句,先看如下的示例程序:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
@autoreleasepool{
int number,temp;

NSLog(@"Please input a number you want to test:");
scanf("%i",&number);

temp=number%2;

if(temp==0){
NSLog(@"Number %i is even number",number);
}else{
NSLog(@"Number %i is odd number",number);
}
}
return 0;
}

编译运行后,我们得到如下结果:

[img]http://dl.iteye.com/upload/attachment/0078/7469/71caf059-ab00-3700-83cf-7ea39254d729.png[/img]

这是一个奇偶数判断的程序,输入一个数字对2求模,如果余数为0说明是偶数,否则是奇数。这中间就可以应用if-else来作为选择结构的语句。
下面来看if-else if的示例,也就是多个判断条件的用法:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
@autoreleasepool{
int score;
char level;

NSLog(@"Please input your score(Full mark is 100):");
scanf("%i",&score);

if(score>100){
NSLog(@"Invalid score!");return 0;
}else if(90<=score && score<=100){level='A';}
else if(80<=score && score<90){level='B';}
else if(70<=score && score<80){level='C';}
else if(60<=score && score<70){level='D';}
else if(0<=score && score<60){level='F';}
else{
NSLog(@"Invalid score!");return 0;
}

NSLog(@"Your level is %c",level);
}
return 0;
}

编译运行后,我们得到如下结果:

[img]http://dl.iteye.com/upload/attachment/0078/7471/6aeff4c9-2091-3d00-a811-1a9ae64c86f1.png[/img]

那么对于我们每次的输出,程序都做出了选择和判断。同时这里我们使用了与条件的综合判断,那么再看下面这个示例,我们使用更加复杂的条件进行判断:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
@autoreleasepool{
int year;

NSLog(@"Please input a year to test:");
scanf("%i",&year);

if((year%4==0 && year%100!=0) || year%400==0){
NSLog(@"Year %i is a leap year!",year);
}else{
NSLog(@"Year %i is not a leap year!",year);
}
}
return 0;
}

编译运行后,我们得到如下结果:

[img]http://dl.iteye.com/upload/attachment/0078/7473/b1c6c168-3671-36dc-897c-5cfa3498c61d.png[/img]

这是一个求闰年的程序,那么在if判断中我们使用了与条件和或条件组成的复合条件判断。
[url=http://sarin.iteye.com/blog/1759280]接下文[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值