使用伪代码的目标是侧重于算法逻辑本身,用清晰、简洁、结构化的类代码语句直接描述计算步骤和流程控制,忽略特定语言的语法细节(如变量声明、分号、花括号),但保留关键结构和逻辑。
核心原则:
清晰优先: 首要目标是让人(包括你自己和他人)能轻松理解算法逻辑。
结构化: 使用标准的控制结构(if/else, for, while, function)并清晰地表示其范围(通常通过缩进)。
简洁性: 省略不必要的语言细节(变量类型声明、内存管理、严格语法)。
抽象性: 使用自然语言描述复杂的操作或子过程,或者调用命名函数。
类代码: 语法和结构类似于常见的命令式编程语言(Python, Java, C++ 等),但更自由。
具体风格指南:
-
变量与赋值
- 直接使用有意义的变量名(英文或拼音,避免 a, b, tmp 除非意义非常明确)。
- 使用 = 或 <- 表示赋值。
- 不需要声明类型。
maxValue = array[0] // 好
counter <- 0 // 好 (使用 <- 也很常见)
x = 10 // 好
- 输入与输出
- 使用明确的词语如 Input, Read, Get 表示输入。
- 使用 Output, Print, Display, Return 表示输出或函数返回值。
Input: listOfNumbers // 输入一个列表
Read: userName // 读取用户名
Print: "Result is", result // 打印结果
Return: sum // 函数返回总和
- 控制结构 - if/else if/else
- 使用 if, else if (elif 也很流行,借鉴 Python), else
- 条件写在括号 () 内或不加括号均可(保持一致性)
- 使用缩进(通常是 2 或 4 个空格)表示代码块,非常重要!
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
else:
grade = 'C'
- 控制结构 - for 循环
- 清晰指定循环范围和迭代变量
- 常用形式:
for each element in collection:
for i from start to end:
for i = start to end (step k):(显式指定步长) - 缩进表示循环体
// 遍历列表
for each number in numberList:
sum = sum + number
// 索引遍历
for i from 0 to len(array) - 1:
Print array[i]
// 带步长
for i = 0 to 10 step 2:
Print i // 输出 0, 2, 4, 6, 8, 10
- 控制结构 - while 循环
- 使用 while 后跟条件
- 缩进表示循环体
while stack is not empty:
item = pop(stack)
process(item)
while counter < targetValue:
counter = counter + 1
- 函数/过程
- 使用 Function/Def/Procedure 定义函数名和参数
- 参数直接列出,不需要类型
- 使用 Return 语句返回值(对于函数)
- 函数体缩进
Function findMax(list):
max = list[0]
for each element in list:
if element > max:
max = element
Return max
Procedure printGreeting(name):
Print "Hello,", name
- 注释
- 使用 // 或 # 进行单行注释
- 使用 /* … */ 进行多行注释(可选,单行更常见)
- 注释解释关键步骤、复杂逻辑或假设
// 初始化累加器
total = 0
# 检查边界条件
if n <= 0:
Return 0
-
数据结构访问
- 使用方括号 [] 访问数组/列表元素(array[i])
- 使用点 . 或箭头 -> 表示对象属性/方法(node.value, tree->left),根据上下文清晰即可
- 使用 push(stack, item), pop(stack) 等描述栈/队列操作
-
数学运算
- 直接使用 +, -, *, /, % (模), ^ 或 ** (幂)
- 使用 ==, !=, <, <=, >, >= 进行比较
- 使用 and, or, not 表示逻辑运算。
二分查找 (Binary Search)
Function binarySearch(sortedArray, target):
low = 0
high = length(sortedArray) - 1
while low <= high:
mid = (low + high) / 2 // 整数除法 (取整)
midValue = sortedArray[mid]
if midValue == target:
Return mid // 找到目标,返回索引
elif midValue < target:
low = mid + 1 // 目标在右半部分
else:
high = mid - 1 // 目标在左半部分
Return -1 // 未找到目标
计算列表平均值
Function computeAverage(numbers):
if numbers is empty:
Return 0 // 或抛出错误,视需求而定
total = 0
count = 0
for each number in numbers:
total = total + number
count = count + 1
average = total / count
Return average
简单登录验证
// 假设 storedUsername 和 storedPasswordHash 是存储的凭据
Input: username, password
// 计算输入密码的哈希 (伪代码中抽象此步骤)
inputPasswordHash = hashFunction(password)
if username == storedUsername and inputPasswordHash == storedPasswordHash:
Print "Login successful!"
// 执行登录成功后的操作...
else:
Print "Invalid username or password."

1263

被折叠的 条评论
为什么被折叠?



