「Mac玩转仓颉内测版55」应用篇2 - 使用函数实现更复杂的计算

发布于:2025-02-11 ⋅ 阅读:(66) ⋅ 点赞:(0)

本篇教程基于仓颉编程语言扩展了计算器功能,支持加减乘除的基础运算,以及幂运算和开平方等高级功能。代码经过简化后,移除了对输入的复杂校验,提升了程序的可维护性和交互效率。


关键词
  • 仓颉编程语言
  • 函数封装
  • 高级运算

一、功能说明

升级后的计算器实现了以下功能:

  1. 支持基础运算(加、减、乘、除)和高级运算(幂运算、开平方)。
  2. 提供简单的用户提示,减少复杂的输入校验。
  3. 使用函数封装,保持代码逻辑清晰和可扩展性。

二、代码实现
2.1 主程序

主程序用于提供菜单交互,并调用相应的功能处理函数。

/* 文件名:55-1.cj */
package cjcDemo

import std.console.*
import std.math.*      // 数学运算支持
import std.convert.*    // 数据转换模块

// 主函数
main(): Int64 {
    println("高级计算器 - 支持加减乘除、幂运算与开平方")
    while (true) {
        println("\n请选择操作:")
        println("1. 基础运算 (+, -, *, /)")
        println("2. 幂运算 (^)")
        println("3. 开平方 (sqrt)")
        println("4. 退出程序")
        
        let mode: Int64 = readInt("请输入操作编号 (1-4):")
        if (mode == 4) {
            println("程序已退出。再见!")
            break
        }
        handleChoice(mode)
    }
    return 0
}
2.2 核心功能:操作处理与计算
// 根据用户选择调用对应功能
func handleChoice(mode: Int64) {
    if (mode == 1) {
        println("请输入第一个数字:")
        let num1: Int64 = readInt("请输入整数:")
        println("请输入第二个数字:")
        let num2: Int64 = readInt("请输入整数:")
        println("请输入操作符 (+, -, *, /):")
        let operation: String = Console.stdIn.readln().getOrThrow()
        calculateAndPrintResult(num1, num2, operation)
    } else if (mode == 2) {
        println("请输入底数:")
        let base: Float64 = readFloat("请输入数字:")
        println("请输入指数:")
        let exponent: Float64 = readFloat("请输入数字:")
        let result: Float64 = power(base, exponent)
        println("幂运算结果: ${result}")
    } else if (mode == 3) {
        println("请输入需要开平方的数字:")
        let number: Float64 = readFloat("请输入数字:")
        let result: Float64 = squareRoot(number)
        println("开平方结果: ${result}")
    } else {
        println("无效选择,请输入 1, 2, 3 或 4。")
    }
}
2.3 公共工具函数
// 幂运算函数
func power(base: Float64, exponent: Float64): Float64 {
    return pow(base, exponent)
}

// 开平方函数
func squareRoot(number: Float64): Float64 {
    if (number < 0.0) {
        println("错误:不能对负数开平方")
        return 0.0
    }
    return sqrt(number)
}

// 读取整数输入
func readInt(prompt: String): Int64 {
    println(prompt)
    let input: String = Console.stdIn.readln().getOrThrow()
    return Int64.parse(input)
}

// 读取浮点数输入
func readFloat(prompt: String): Float64 {
    println(prompt)
    let input: String = Console.stdIn.readln().getOrThrow()
    return Float64.parse(input)
}

// 计算并输出结果
func calculateAndPrintResult(num1: Int64, num2: Int64, operation: String) {
    if (operation == "+") {
        println("结果: ${num1 + num2}")
    } else if (operation == "-") {
        println("结果: ${num1 - num2}")
    } else if (operation == "*") {
        println("结果: ${num1 * num2}")
    } else if (operation == "/") {
        if (num2 != 0) {
            println("结果: ${num1 / num2}")
        } else {
            println("错误:除数不能为零")
        }
    } else {
        println("错误:无效的操作符。请使用 +, -, *, /")
    }
}

三、效果示例

效果示例

输入:

高级计算器 - 支持加减乘除、幂运算与开平方
请选择操作:
1
请输入第一个数字:
8
请输入第二个数字:
2
请输入操作符 (+, -, *, /):
/

输出:

结果: 4

输入:

请选择操作:
2
请输入底数:
3
请输入指数:
2

输出:

幂运算结果: 9.000000

输入:

请选择操作:
3
请输入需要开平方的数字:
-4

输出:

错误:不能对负数开平方

四、小结

本次教程通过仓颉编程语言实现了更复杂的计算器功能。简化后的实现去掉了复杂的输入校验逻辑,依赖用户的正确输入,保持了代码简洁性。同时,通过函数封装保持代码模块化,方便后续扩展更多功能。


上一篇: 「Mac玩转仓颉内测版54」应用篇1 - 编写一个简单的计算器
下一篇: 「Mac玩转仓颉内测版56」应用篇3 - 增强计算器功能与数据存储

📍公测版