回顾昨天学习内容及没解决的问题:
这两种写法暂时不知道又啥区别= = !
Fraction *mf = [[ Fraction alloc ] init ];Fraction*f = [Fractionnew];
问了公司里的大牛得知: 两种其实都是类的初始化,而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;
}
}
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