当前位置: 首页 > article >正文

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

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


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

一、功能说明

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

  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 - 增强计算器功能与数据存储

📍公测版
  • 仓颉编程语言官网
  • 开发指南
  • 仓颉编程语言库 API
  • 仓颉语言 IDE 插件使用指南
  • 仓颉编程语言白皮书
  • 词法结构


http://www.kler.cn/a/458859.html

相关文章:

  • 项目优化性能监控
  • 基于YOLOv10和BYTETracker的多目标追踪系统,实现地铁人流量计数功能(基于复杂场景和密集遮挡条件下)
  • 前端学习DAY29(1688侧边栏)
  • NPM组件包 vant部分版本内嵌挖矿代码
  • 《燕云十六声》d3dcompiler_47.dll缺失怎么解决?
  • 深度学习中的HTTP:从请求到响应的计算机网络交互
  • JVM实战—5.G1垃圾回收器的原理和调优
  • windows 下通过脚本方式实现 类似 Linux keepalived IP 动态绑定效果
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(2)应力奇异及位移结果对比、初步了解单元的基本知识
  • JVM的详细介绍
  • 【机器学习】 卷积神经网络 (CNN)
  • 基于Docker基础与操作实战
  • 【WdatePicker】选择不能小于当天
  • 深度学习模型格式转换:pytorch2onnx(包含自定义操作符)
  • 当现代教育技术遇上仓颉---探秘华为仓颉编程语言与未来教育技术的接轨
  • 电子电器架构 ---什么是智能电动汽车上的BMS?
  • VScode怎么重启
  • C# init 关键字的使用
  • 【ArcGIS Pro/GeoScene Pro】可视化时态数据
  • javaweb线上问题排查(若依定时任务)