任务二 算法描述
算法的描述是什么意思?
算法的描述就是用某种形式或语言把解决问题的步骤清楚地表达出来。就像告诉别人怎么从A点到B点一样,你需要清楚地说明每一步该怎么做。
一、为什么需要描述算法?
想象一下,如果你有一个好方法解决数学题:
- 自己心里明白 ≠ 能教会别人
- 口头说明 ≠ 能写成说明书
- 临时想 ≠ 可以重复使用
所以需要规范的描述方法,让算法:
- ✅ 可以被理解
- ✅ 可以被执行
- ✅ 可以被验证
- ✅ 可以被改进
二、常用的算法描述方法
1. 自然语言描述(像说话一样描述)
示例:如何计算两个数的平均数?
步骤:
1. 得到第一个数
2. 得到第二个数
3. 把两个数相加
4. 将相加的结果除以2
5. 输出结果
优点:容易理解,像平时说话
缺点:容易产生歧义,不精确
2. 流程图描述(画图表示)
用标准图形符号表示算法流程:
// 对应C#代码示例
public static double CalculateAverage(double num1, double num2)
{
// 开始
double sum = num1 + num2; // 处理:计算和
double average = sum / 2; // 处理:计算平均值
return average; // 输出:返回结果
// 结束
}
3. 伪代码描述(像代码但不是真代码)
BEGIN 计算平均数
输入 num1, num2
sum ← num1 + num2
average ← sum / 2
输出 average
END
4. 编程语言描述(真正的代码)
// C#代码实现
public static void Main()
{
Console.Write("请输入第一个数:");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入第二个数:");
double num2 = Convert.ToDouble(Console.ReadLine());
double average = (num1 + num2) / 2;
Console.WriteLine($"平均数是:{average}");
}
三、流程图符号详解
| 符号 | 名称 | 功能 | C#代码示例 |
|---|---|---|---|
| ○ | 开始/结束 | 算法开始或结束 | public static void Main() return result; |
| □ | 输入/输出 | 获取或显示数据 | Console.ReadLine() Console.WriteLine() |
| □ | 处理 | 计算或赋值 | int sum = a + b; average = sum / 2; |
| ◇ | 判断 | 条件分支 | if (a > b) {...} else {...} |
四、完整示例:判断一个数是奇数还是偶数
方法1:自然语言描述
步骤:
1. 获取一个整数
2. 判断这个数除以2的余数是否为0
3. 如果余数为0,显示"这是偶数"
4. 如果余数不为0,显示"这是奇数"
方法2:流程图表示
开始
↓
输入一个整数 n
↓
计算 n % 2
↓
判断余数是否为0?
/ \
是(0) 否(1)
↓ ↓
输出"偶数" 输出"奇数"
↓ ↓
结束
方法3:C#代码实现
using System;
public class Program
{
public static void Main()
{
// 开始
Console.Write("请输入一个整数:");
int number = Convert.ToInt32(Console.ReadLine()); // 输入
// 判断
if (number % 2 == 0) // 条件判断
{
Console.WriteLine($"{number} 是偶数"); // 输出
}
else
{
Console.WriteLine($"{number} 是奇数"); // 输出
}
// 结束
}
}
五、为什么流程图很重要?
- 直观清晰:一眼就能看懂逻辑流程
- 避免歧义:图形化表示减少理解偏差
- 方便讨论:团队沟通的共同语言
- 设计先行:先设计好流程,再写代码
- 调试帮助:对照流程图找逻辑错误
六、学习建议
- 从简单开始:先描述简单问题(如计算平均数)
- 多种方法对比:同一问题用不同方式描述
- 画图练习:多画流程图,训练逻辑思维
- 代码转化:练习把流程图转成代码
算法的描述就是:把解决问题的步骤用清晰、规范的方式表达出来,让别人(或计算机)能够理解和执行。 它是连接问题与解决方案的桥梁。