Ada实现返回两个浮点数最大值的function子过程及调用优化
优化方案
现存问题梳理
- 自定义
Value函数存在逻辑漏洞:当两个浮点数相等时无返回值,会触发运行时异常 - 主程序重复实现了比较逻辑,未调用预先定义的
Value函数,不符合需求且代码冗余
优化后完整代码
with Ada.Text_IO; use Ada.Text_IO; with Ada.Float_Text_IO; use Ada.Float_Text_IO; procedure Test is function Max_Value(Float_1, Float_2 : in Float) return Float is begin -- 覆盖所有情况:大于返回前者,小于等于返回后者 if Float_1 > Float_2 then return Float_1; else return Float_2; end if; end Max_Value; Float_1, Float_2 : Float; begin Put("Type in two numbers: "); Get(Float_1); Get(Float_2); Put("The greatest value was: "); -- 直接调用自定义函数获取最大值,删除重复的比较逻辑 Put(Max_Value(Float_1, Float_2), Fore => 0, Aft => 2, Exp => 0); end Test;
优化说明
- 函数重命名为
Max_Value,语义更清晰,避免和内置关键字混淆 - 修复了原函数的边界问题:两数相等时直接返回第二个值,覆盖所有输入场景,不会出现无返回值的错误
- 主程序直接调用自定义函数获取结果,冗余逻辑完全删除,符合任务要求的子过程调用规则
- 输出格式和要求完全一致,输入
-13.12 2时会输出2.00,和需求匹配
内容的提问来源于stack exchange,提问作者leun
相关产品推荐
相关产品推荐

