ObjC学习2-语法循环、条件,原来像学C语言一样啊!


回顾昨天学习内容及没解决的问题:

这两种写法暂时不知道又啥区别= = !

Fraction  *mf = [[ Fraction   alloc init ]; 

Fraction *f = [Fraction new];

问了公司里的大牛得知: 两种其实都是类的初始化,而new出来的类必须继承于NSObject才可以调用new的方法。


好了,今天的学习记录开始。

1.像那年学C一样的循环!

for循环:

    int s =0;//必须先生命初始化不然在循环里没值

   for(int i =0;i<10;i++)

    {

        s+=i;

       NSLog(@"%i %i",i,s);

    }

这里S必须初始化,然后在循环里会找不到值。

嵌套循环 - NSLog不知道可不可以不用换行输出呢~

    for(int i =1 ; i<=10;i++)

    {

       for(int k=1;k<=i;k++)

        {

           NSLog(@"%2i * %i = %2i",i,k,i*k);

        }

    }

while 循环:

    bool isOk =YES;

    

   int i = 0;

   while(isOk)

    {

        i+=1326;

       NSLog(@"%2i",i);

       if(i >=13260)

        {

            isOk =NO;

        }

    }


do-while循环

 isOk=YES;

   do

    {

        i-=1326;

       NSLog(@"%2i",i);

       if(i==0)

        {

            isOk=NO;

        }

    }while (isOk!=NO) ;


太久没用dowhile 循环 ,while条件都不会写了。。

isOk!=NO 表示当is不为NO时程序继续执行 DW循环无论条件成立与否都至少执行一次。


break;终止循环 continue;跳过后面的代码

   for(int i =1;i<=10;i++)

    {

    

       NSLog(@"%i",i);

       if(i>5)

        {

           //continue;

           break;

        }

        i++;

    }




2.选择结果 if switch conditional

实现的类

//

//  FractionIf.m

//  Test

//

//  Created by lenbol on 13-5-15.

//  Copyright (c) 2013 lenbol. All rights reserved.

//


#import "FractionIf.h"


@implementation FractionIf


-(void) print

{

   NSLog(@" %i/%i",num1,num2);


}


-(void) setN2:(int)n2

{

   num2= n2;

}


-(void) setN:(int)n

{

   num1 = n;

}


-(int) num1

{

   return num1;

}


-(int ) num2

{

   return num2;


}



-(double) convertToNum

{

   if(num2!=0)

    {

       return (double)num1/num2;

    

    }else{return0.0;}

}


@end




--主程序方法

  

    FractionIf *fif = [[FractionIfalloc] init];

    FractionIf *fif2= [[FractionIfalloc] init];

    

    [fifsetN:1];

    [fifsetN2:2];

    

    [fifprint];

   NSLog(@"=");

   NSLog(@"%g",[fifconvertToNum]);

    

    //不初始化

    

    [fif2print];

   NSLog(@"=");

   NSLog(@"%g",[fif2convertToNum]);

    

    [fifrelease];

    [fif2release];


结果:

2013-05-15 23:42:40.664 Test[761:c07]  1/2

2013-05-15 23:42:40.666 Test[761:c07] =

2013-05-15 23:42:40.668 Test[761:c07] 0.5

2013-05-15 23:42:40.669 Test[761:c07]  0/0

2013-05-15 23:42:40.670 Test[761:c07] =

2013-05-15 23:42:40.671 Test[761:c07] 0



复合条件:

 for(int i =0 ;i<100;)

    {

       NSLog(@"%i",i);

       if(i>0&&i<50)

        {

            i++;

        }

        i++;

    }

注:在50之前i每次循环+2


一道经典的题目:计算闰年!

  //计算闰年

   int year = 2005;

    

   if((year%4==0 && year%100!=0) ||year%400==0)

    {

        NSLog(@"it's a leap year");

    }else

    {

       NSLog(@"not~");

    }

    


嵌套IF


在本类定义一个新方法

-(bool) testY

{

    return YES;

}

主程序调用 : self 难道是调用自身方法? 好像发现一个相当于别的语言的this的东西,不知和this有啥区别 *

   if([self testY] ==YES)

    {

       NSLog(@"1y");

       if([self testY] !=YES)

        {

           NSLog(@"2y");

        }

       else

        {

           NSLog(@"2n");

        }

    }

   else

    {

   NSLog(@"1n");

    }


else if :

     if([selftestY]!=YES)

        {

           NSLog(@"1y");

        }

       else if([selftestY]==YES||[selftestY]!=YES)

        {

           NSLog(@"else if y");

        }

       else

        {

          NSLog(@"2n");

        }

*条件冲突时取前面


switch:


   bool ok = ![selftestY];

   switch (ok) {

       case YES :

           NSLog(@"1326");

           break;

       case NO:

           NSLog(@"8023");

           break;

       default:

           break;

    }

    

   int i = 3;

   switch (i) {

       case 1:

           NSLog(@"1326");

           break;

       case 2:

           NSLog(@"8023");

           break;

       default:

           NSLog(@"none");

           break;

    }

用bool类型做switch条件时会有一个warning~


传说中的三元运算符 :

 int n1 =1;

    n1 = (n1>0)?10:20;

    NSLog(@"%i",n1);

结果:10




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值