Objective-C 选择结构

  对于任何程序语言来说,有能力进行判断是一项基本特性。需要在执行循环语句时,判断何时终止循环。Objective-C程序设计语言也构造了以下几种判断结构:

  • if语句。
  • switch语句。
  • conditional语句。

------if语句

  Objective-C程序设计语言提供了一半的判断能里,即if语句这样的语言结构。这种语句的一般格式如下:

if(expression)
    program statement

  假设要将“如果不下雨,我就去游泳”这样的句子转换成Objective-C语言,可使用上述if语句格式,将这个句子“编写”成以下格式:

1   if(it is not raining)
2
3     I will go swimming

  if语句根据指定的条件,限定程序语句的执行(或者括在花括号中的多条语句)。“如果不下雨,我就去游泳”。类似的,在程序语句

 

1 if(count > MAXNUM_SONG)
2
3     [playlist maxExceeded];

  只要,count的值大于MAXNUM_SONG,就会发送消息maxExceeded给playlist;否则,这条消息将被忽略。

  例如,对整数取绝对值:

  

 1 //
 2 //  main.m
 3 //  LogXu
 4 //
 5 //  Created by 许朕 on 15/2/9.
 6 //  Copyright (c) 2015年 com.example. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13
14         int number=0;
15         NSLog(@"Please Input Number:");
16         scanf("%i",&number);
17         if (number<0) {
18             number = -number;
19
20         }
21         NSLog(@"The absolue value is %i",number);
22         NSLog(@"Hello, World!");
23     }
24     return 0;
25 }
1 2015-02-09 13:51:09.938 LogXu[3501:415469] Please Input Number:
2 -100
3 2015-02-09 13:51:14.143 LogXu[3501:415469] The absolue value is 100
4 2015-02-09 13:51:14.143 LogXu[3501:415469] Hello, World!
5 Program ended with exit code: 0
2015-02-09 13:52:44.896 LogXu[3512:417120] Please Input Number:
2000
2015-02-09 13:52:46.665 LogXu[3512:417120] The absolue value is 2000
2015-02-09 13:52:46.665 LogXu[3512:417120] Hello, World!
Program ended with exit code: 0

  程序运行了两次,目的是验证它能正确运行。向用户显示一条消息之后,用户将输入整数值,程序将改制存储到number中,然后对number的值进行测试,确定number是否小于0。如果number小于0,则对number取负。如果number不小于0,则直接跳过这条语句。随后程序将显示number的绝对值,并终止运行。

  下面介绍一个将一个分数转换成一个十进制的值的程序,并且程序自带判断分母是否为0的功能:

1.Newfraction.h

 1 //
 2 //  Newfraction.h
 3 //  LogXu
 4 //
 5 //  Created by 许朕 on 15/2/9.
 6 //  Copyright (c) 2015年 com.example. All rights reserved.
 7 // 这是定义部分
 8
 9 #import <Foundation/Foundation.h>
10
11 @interface Newfraction : NSObject
12 //numerator and denomiantor 为传入参数
13 -(void)newfractionWithSetnumerator :(int)numerator Setdenominator :(int)denominator;
14 //输出方法
15 -(void)print;
16 //定义分子
17 -(int)numerator;
18 //定义分母
19 -(int)denomiantor;
20 //转换方法
21 -(double)convertToNum;
22 @end

2.Newfraction.m

 1 //
 2 //  Newfraction.m
 3 //  LogXu
 4 //
 5 //  Created by 许朕 on 15/2/9.
 6 //  Copyright (c) 2015年 com.example. All rights reserved.
 7 //  这是实现部分
 8
 9 #import "Newfraction.h"
10
11 @implementation Newfraction
12 //实现Newfraction方法
13     {
14         int newNumerator;
15         int newDenomiantor;
16     }
17 -(void)print{
18     NSLog(@"%i/%i",newNumerator,newDenomiantor);
19 }
20 -(void)newfractionWithSetnumerator:(int)numerator Setdenominator:(int)denominator{
21     newNumerator = numerator;
22     newDenomiantor = denominator;
23 }
24 -(int)numerator{
25     return newNumerator;
26 }
27 -(int)denomiantor{
28     return newDenomiantor;
29 }
30 -(double)convertToNum{
31     if(newDenomiantor != 0)
32         return (double) newNumerator/newDenomiantor;
33     else
34         return NAN;
35 }
36
37 @end

3.main.m

 1 //
 2 //  main.m
 3 //  LogXu
 4 //
 5 //  Created by 许朕 on 15/2/9.
 6 //  Copyright (c) 2015年 com.example. All rights reserved.
 7 //  这是主函数
 8
 9 #import <Foundation/Foundation.h>
10 #import "Newfraction.h"
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13         Newfraction *stu1 = [[Newfraction alloc]init];
14         Newfraction *stu2 = [[Newfraction alloc]init];
15         [stu1 newfractionWithSetnumerator:1 Setdenominator:4];
16         [stu1 print];
17         NSLog(@"=");
18         NSLog(@"%g",[stu1 convertToNum]);
19         [stu2 print];
20         NSLog(@"=");
21         NSLog(@"%g",[stu2 convertToNum]);
22
23         NSLog(@"Hello, World!");
24     }
25     return 0;
26 }

打印结果:

1 2015-02-09 14:27:09.950 LogXu[3617:432264] 1/4
2 2015-02-09 14:27:09.952 LogXu[3617:432264] =
3 2015-02-09 14:27:09.952 LogXu[3617:432264] 0.25
4 2015-02-09 14:27:09.952 LogXu[3617:432264] 0/0
5 2015-02-09 14:27:09.953 LogXu[3617:432264] =
6 2015-02-09 14:27:09.953 LogXu[3617:432264] nan
7 2015-02-09 14:27:09.953 LogXu[3617:432264] Hello, World!
8 Program ended with exit code: 0

在main.m中,将stu1设置成1/4后,convertToNum方法将此分数转换成一个十进制的值,这个值随后就会显示出来,即0.25。第二种情况,没有明确设置stu2的值,因此分数的分子和分母都会初始化为0,这是实例变量默认的初始值。这就解释了print方法显示的结果,同时,还导致convertToNum方法中的if语句返回值NAN,NSlog实际显示为nan。

------if else 结构

检查一个数是基数还是偶数:

 1 //
 2 //  main.m
 3 //  LogXu
 4 //
 5 //  Created by 许朕 on 15/2/9.
 6 //  Copyright (c) 2015年 com.example. All rights reserved.
 7 //  这是主函数
 8
 9 #import <Foundation/Foundation.h>
10 #import "Newfraction.h"
11 int main(int argc, const char * argv[]) {
12     @autoreleasepool {
13         int number;
14         int remainder;
15         NSLog(@"Enter your Number to tested:");
16         scanf("%i",&number);
17         remainder=number%2;
18         if (remainder==0) {
19             NSLog(@"The number is even");
20         }else{
21             NSLog(@"The number is odd");
22         }
23
24         NSLog(@"Hello, World!");
25     }
26     return 0;
27 }
1 2015-02-09 15:00:25.550 LogXu[3709:453391] Enter your Number to tested:
2 12
3 2015-02-09 15:00:28.938 LogXu[3709:453391] The number is even
4 2015-02-09 15:00:28.938 LogXu[3709:453391] Hello, World!
5 Program ended with exit code: 0
1 2015-02-09 15:01:33.676 LogXu[3720:455130] Enter your Number to tested:
2 13
3 2015-02-09 15:01:37.585 LogXu[3720:455130] The number is odd
4 2015-02-09 15:01:37.585 LogXu[3720:455130] Hello, World!
5 Program ended with exit code: 0

  代码中,if else结构的意思是 如果remainder能被2整除,那么number就是偶数,否则remainder就是奇数。编写程序时,这个“否则”的概念使用的相当频繁,所以被作为一个特殊结构来处理这一情况。在objective-C中,一般格式如下

1 if( expression )
2     program statement 1
3  else
4     program statement 2

  实际上,if-else仅仅是if语句的一般格式的一种扩展形式。如果表达式的计算结果是true,将执行之后的program statement 1;否则,将执行program statement 2。在任何情况下,都会执行program statement 1或program statement 2中的一个,而不是两个都执行。

  不要忘记,双等号(==)用于相等测试,而单个等号是赋值运算符。

时间: 2024-10-19 05:12:09

Objective-C 选择结构的相关文章

选择结构if语句和switch语句的区别

1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else if(比较表达式3) { 语句体3; } ... else { 语句体n+1; } B:执行流程: 首先计算比较表达式1看其返回值是true还是false, 如果是true,就执行语句体1,if语句结束. 如果是false,接着计算比较表达式2看其返回值是true还是false, 如果是true,就执行语句体2,if语句结束. 如果是fals

java基础:流程控制语句(选择结构if语句)

(1)顺序结构 从上往下,依次执行 Demo: class ShunXuJieGouDemo { public static void main(String[] args) { System.out.println("程序开始了"); System.out.println("我爱Java"); System.out.println("程序结束了"); } } (2)选择结构        按照不同的选择,执行不同的代码 Java语言提供了两种选

选择结构

一.if选择结构  语法:if(条件){          //代码块-->只有一条语句的时候可以不用{},但不建议不用           } 二.if-else选择结构   语法:if(条件){            //代码块1         }else{            //代码块2       }   三.多重if选择 语法:if(条件){            //代码块1         }else if{------>可以有多个            //代码块2   

《第4章 选择结构(二)》

switch,case,default,break是java的关键字. (1)switch:表示开关,这个开关就是switch关键字后面小括号里的值,小括号里要放一个整形变量(表达式)或字符型变量(表达式). (2)case:表示情况,case后必须是一个整形或字符型的常量,通常是一个固定的字符.数字,case块可以有多个,顺序可以改变,但是每个case后常量的值必须各不相同. (3)default:表示默认,即其他情况都不满足.Default块和case块的先后顺序可以变动,不会影响程序执行的

第三章 选择结构(一)

一.本章目标 掌握基本if选择结构 掌握逻辑运算符 掌握多重if选择结构 掌握嵌套if选择结构 二.内容 1.if选择结构 1.1 为什么需要if选择结构 问题:如果张浩的Java考试成绩大于98分,张浩就能获得一个MP4作为奖励 1.2 什么是if选择结构 if选择结构是根据条件判断之后再做处理的一种语法结构. 1.2.1 语法 if ( 条件 ) { //代码块 } 1.2.2 实例 如果张浩的Java考试成绩大于98分,张浩就能获得一个MP4作为奖励 public class GetPri

Linux Shell编程之二选择结构

Shell编程学习之二 一.bash的条件测试 测试方法或者说测试书写: test EXPR [ EXPR ] [[ EXPR ]] 例如:测试变量 User_Name 的之是否为root test $User_Name="root" [ $User_Name == "root" ] [[ $User_Name == "root" ] 根据比较时操作数的类型,测试类型分为: 测试类型 运算符 运算符所代表的意义 示例 整形测试 -gt -lt -

选择结构(二)

switch选择结构的语法 switch(表达式){ case 常量1: 代码块1 break; case 常量2: 代码块2 break; default: 代码块3 break; } switch选择结构4个关键字的解释 switch:表示"开关",这个开关就是switch关键字后面小括号里的值,小括号里要放一个整型变量(表达式)或字符型变量(表达式) case:表示"情况.情形",case后必须是一个整型或字符型常量,通常是一个固定的字符.数字,case块可以

选择结构if

那么在上一章我们学习了变量本章呢我们来学习选择结构 那么在学之前呢我们要知道为什么需要选择结构  在生活中呢我们可能遇到过这样的问题 走在马路上看到一辆小黄车 这个时候如果你手机里面有小黄车软件 那么你就可以骑小黄车 如果你的手机里面没有小黄车软件 那么你就骑不了小黄车  通过这个案例可以看出 结果只有两个 一个是有或者是没有 小黄车软件  那么怎么把生活中的这样类似的案例用程序怎么样才能做到呢? 那就需要我们今天学习的选择结构了 下面有个问题 如果张浩的java成绩大于98分那么他就能获得一个

java中的if-Switch选择结构

字随笔走,笔随心走,随笔,随心.纯属个人学习分析总结,如有观者还请不啬领教. 1.if选择结构 什么是if结构:if选择结构是根据判断结果再做处理的一种语法结构. 起语法是: if(判断条件){ 操作内容 } if又包含if-else & 多重if和嵌套if 三种. if-else类型 嵌套if 多重if if(判断条件){ if(判读条件){ if(判读条件){ 操作内容 if(判读条件){ 操作内容 }else{ 操作内容 }else if{ 操作内容 } 操作内容 } } }else{ 操

黑马程序员----流程控制(顺序结构、选择结构、循环结构)

一.顺序结构 默认的流程结构,按照书写的顺序执行: 二.选择结构 概念:对给定的条件进行判断,根据判断结果来决定执行那一段代码: 1. if语句 if语句的基本使用 /* 1.if的第一种结构 if(条件) { 语句1; 语句2; ...... } 2.if的第2种结构 if(条件1) { 语句1; 语句2; ...... } else { 语句3; 语句4; ....... } 3.if的第3种结构(按顺序判断条件,遇到某个条件成立就执行其代码(也说明该条件前的所有条件都不成立),执行完不再对