IOS开发之路-Objective-C 代码块(Block)-block计算器的实现
2013-08-07 17:35
609 查看
OC中的Block 和C中的函数指针非常相似 , 运用Block可以很方便的处理一些东西 。比如计算器
输入两个值之后 , 要对值进行运算处理 。
如果传统方式的话 ,会很不利与维护和更新 . 而且不便于使用。
但是运用block 我们需要知道用户需要做什么运算 , 我们把运算的方法传进去就好了.
如果以后要添加新的功能或者改旧的功能的话 , 维护起来就会很方便了。
今天就用block 做了一个oc的计算器 , 结合了c中的控制台输入输出 。
点击运行效果后为:
2013-08-07 17:32:51.155 Block计算器[1161:303]
Block (代码段)
计算器
请输入两个数:98 20
请选择要进行什么运算(+ - * / %) :\
您选择的有误,请重新选择
+
98.00 + 20.00 = 118.00
代码如下:
输入两个值之后 , 要对值进行运算处理 。
如果传统方式的话 ,会很不利与维护和更新 . 而且不便于使用。
但是运用block 我们需要知道用户需要做什么运算 , 我们把运算的方法传进去就好了.
如果以后要添加新的功能或者改旧的功能的话 , 维护起来就会很方便了。
今天就用block 做了一个oc的计算器 , 结合了c中的控制台输入输出 。
点击运行效果后为:
2013-08-07 17:32:51.155 Block计算器[1161:303]
Block (代码段)
计算器
请输入两个数:98 20
请选择要进行什么运算(+ - * / %) :\
您选择的有误,请重新选择
+
98.00 + 20.00 = 118.00
代码如下:
#import <Foundation/Foundation.h> // 声明代码段 float add ( float (^)(float , float ),float , float ); // 加法 float sub ( float (^)(float , float ),float , float ); // 减法 float mul ( float (^)(float , float ),float , float ); // 乘法 float divide ( float (^)(float , float ),float , float ); // 除法 int sur ( int (^)(int , int ),int , int ); // 求余 int main(int argc, const char * argv[]) { @autoreleasepool { float fristNumber = 0.0f; float secondNumber = 0.0f; char sel = '\0'; float value = 0.0f; int k = 1; float(^addBlock)( float , float ) = ^(float x , float y){ return x + y; }; float( ^subBlock)(float , float ) = ^(float x , float y){ return x - y; }; float( ^mulBlock)(float , float ) = ^(float x , float y){ return x * y; }; float ( ^divBlock)(float , float ) = ^( float x , float y ){ return x / y; }; int( ^surBlock)(int , int ) = ^( int x , int y) { return x % y; }; NSLog(@"\nBlock (代码段) 计算器"); printf("请输入两个数:"); scanf("%f%f",&fristNumber , &secondNumber); getchar(); printf("请选择要进行什么运算(+ - * / %%) :"); while ( k >= 1) { scanf("%c",&sel); getchar(); if ( sel == '+') { value = add(addBlock, fristNumber, secondNumber); k = 0; } else if ( sel == '-' ) { value = sub(subBlock, fristNumber, secondNumber); } else if (sel == '*') { value = mul(mulBlock, fristNumber, secondNumber); k= 0; } else if (sel == '/') { value = mul(divBlock, fristNumber, secondNumber); k = 0 ; } else if (sel == '%') { value = (int)sur(surBlock, fristNumber, secondNumber); k =0; } else { printf("\n您选择的有误,请重新选择\n"); sel = '\0'; k++; } } printf(" %.2f %c %.2f = %.2f",fristNumber,sel,secondNumber,value); } return 0; } // 实现代码段 float add ( float (^add)(float , float ),float x, float y ) // 加法 { float addNumber = add(x,y); return addNumber; } float sub ( float (^sub)(float , float ),float x , float y ) // 减法 { float subNumber = sub( x , y ); return subNumber; } float mul ( float (^mul)(float , float ),float x , float y ) // 乘法 { float mulNumber = mul( x , y ); return mulNumber; } float divide ( float (^divide)(float , float ),float x , float y ) // 除法 { float divNumber = divide( x , y ); return divNumber; } int sur ( int (^sur)(int , int ),int x , int y ) // 除法 { float surNumber = sur( x , y ); return surNumber; }
相关文章推荐
- Objective-C ,ios,iphone开发基础:picker控件详解与使用,(实现省市的二级联动)
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- IOS开发之路-Objective-C OC学习总结
- iOS开发笔记--使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS开发UI篇—用纯代码写实现图片轮播
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包,swift 3.0
- ios蓝牙开发(二)ios连接外设的代码实现
- 【iOS开发-113】在storyboard上用AutoLayout,纯代码实现AutoLayout布局方法以及简单动画
- iOS开发 使用Block实现两个页面互相传值
- iOS界面跳转与返回代码实现(Objective-C)
- ios开发UI基础—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS应用开发最佳实践:编写高质量的Objective-C代码
- Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页
- Objective-C ,ios,iphone开发基础:picker控件详解与使用,(实现省市的二级联动)
- iOS利用block实现链式编程方法(Objective-C链式编程)
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- 从C#到Objective-C,循序渐进学习苹果开发(4)--代码块(block)和错误异常处理的理解
- IOS开发---菜鸟学习之路--(二十)-二维码扫描功能的实现
- iOS开发之Objective-c的MD5/SHA1加密算法的实现