您的位置:首页 > 编程语言 > C语言/C++

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

2013-05-16 00:22 204 查看
回顾昨天学习内容及没解决的问题:

这两种写法暂时不知道又啥区别= = !
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: