适用于iPhone / ipad的科学计算器教程

时间:2012-03-30 20:06:05

标签: ios

我一直在寻找一个科学计算器的教程,但我找不到任何东西。我的目的是学习如何编写类似于iPhone中的计算器应用程序。知道任何可以帮助我学习如何将科学功能添加到计算器应用程序的教程。请记住,我已经尝试了各种版本的基本计算器,并已经通过一些教程,只是想学习,并可能使用方法来添加科学功能,如rad,sin,cos和其他一些东西应用程序。我会很乐意为你提供任何帮助。

AP

编辑:

因为没有关于如何在那里建立科学计算器的真实材料(至少我还没有发现任何具体的东西),这里是如何构建一个科学计算器。

首先创建一个NSObject类来保存您的操作方法。 (这是可选的,如果你愿意,可以在getter(.m)文件的顶部设置它。)无论你想要什么,都可以调用它。然后在头文件中声明以下内容。

{
double operand; 
double savedNumber;
NSString *waitingOperation; 
double waitingOperand;
}

- (void)setOperand:(double)aDouble; 
- (double)performOperation:(NSString *)operation;
- (void)performWaitingOperation;

@end

然后在NSObject类的.m文件中声明操作函数的方法。如下所示:

-(void)setOperand:(double)num
{
operand=num;
}
-(double)performOperation:(NSString *)operation
{
if([operation isEqual:@"sqrt"]){
    operand = sqrt(operand);
}else if ([operation isEqual:@"1/x"]){
    if(operand)
        operand = 1 / operand;
}else if ([operation isEqual:@"2/x"]){
    if(operand)
        operand = 2 / operand;
}else if ([operation isEqual:@"3/x"]){
    if(operand)
        operand = 3 / operand;
}else if ([operation isEqual:@"+/-"]){
    if(operand)
        operand = (-1) * operand;
}else if ([operation isEqual:@"sin"]){
    operand = sin(operand);
}else if ([operation isEqual:@"sinh"]){//you can add more scientific functions in the same way to this list.
    operand = sinh(operand);
}else if ([operation isEqual:@"cos"]){
    operand = cos(operand);
}else if ([operation isEqual:@"cosh"]){
    operand = cosh(operand);
}else if ([operation isEqual:@"tan"]){
    operand = tan(operand);
}else if ([operation isEqual:@"tanh"]){
    operand = tanh(operand);
}else if ([operation isEqual:@"M"]){
    savedNumber = operand;
}else if ([operation isEqual:@"M+"] ){
    savedNumber += operand;
}else if ([operation isEqual:@"M-"] ){
    savedNumber -= operand;
}else if ([operation isEqual:@"Recall"]){
    [self setOperand:savedNumber];
}else if ([operation isEqual:@"C"]){
    savedNumber = 0; 
    operand = 0;
    waitingOperand = 0;
    savedNumber= 0; 
}else {
    [self performWaitingOperation];
    waitingOperation = operation;       
    waitingOperand = operand;
}
return operand;
    }
    - (void) performWaitingOperation
    {
if([@"+" isEqual:waitingOperation]){
    operand = waitingOperand + operand ;
} else if([@"-" isEqual:waitingOperation]){
    operand = waitingOperand - operand ;
}else if([@"X" isEqual:waitingOperation]){
    operand = waitingOperand * operand ;
}else if([@"/" isEqual:waitingOperation]){
    if(operand)
        operand = waitingOperand / operand ;
}
    }

现在在视图控制器中,您正在尝试显示计算器,您需要访问所有这些功能并将其显示在您的插座中,例如按钮和文本字段等。这是.h文件

IBOutlet UILabel *display;
SCalcAI *ai;
BOOL userIsInTheMiddleOfTypingNumber;
}

- (IBAction) digitPressed: (UIButton *)sender;
- (IBAction) operationPressed: (UIButton *) sender;

记住在这个文件的顶部导入你的NSObject类头,否则你会收到一个错误。然后在.m文件中,您需要声明这些函数。

-(NameofyourNSOBjectClass *) ai
{
 if(!ai)
 {
ai = [[SCalcAI alloc]  init];
}
return ai;
    }

    - (IBAction) digitPressed: (UIButton *)sender
    {

 NSString *digit = [[sender titleLabel] text];
    if(userIsInTheMiddleOfTypingNumber){
        [display setText:[[display text] stringByAppendingString:digit]];
    } else{
        [display setText:digit];
        userIsInTheMiddleOfTypingNumber = YES;
    }

}
- (IBAction) operationPressed: (UIButton *) sender
{
    if(userIsInTheMiddleOfTypingNumber){
        [[self ai] setOperand:[[display text] doubleValue]];
        userIsInTheMiddleOfTypingNumber = NO;
    }
    NSString *operation = [[sender titleLabel] text];
    double result = [[self ai] performOperation:operation]; 
    [display setText:[NSString stringWithFormat:@"%g", result]];
}

然后将所有按钮连接到故事板或xib中需要连接的操作。就是这样。以上是整个事物的骨架版本,但我相信你可以在此基础上进行构建。如果您需要帮助,请给我发消息。

1 个答案:

答案 0 :(得分:3)

Standford iOS programming class cs193p有一个构建简单计算器的例子。可能是一个好的开始。很棒的课程,很棒的视频。 Paul Hagarty是一位非常优秀的教练。一旦完成核心,科学功能就不难添加。

两种资源: http://www.tusharsharma.in/project/open-source/mathematical-calculator-iphone4/

http://emplementation.blogspot.com/2010/11/ios-development-tutorials-on-itune-u.html