문제
나는 대량의 공식적인 의사 코드를 작성할 필요가 없었지만 필요성은 발생 했으므로 코드 전체에서 일관성을 유지하기 위해 일부 표준을 선택할 것이라고 생각했습니다.
그 효과에 대해 나는 "iTunes U"코스웨어 비디오를 선택했습니다. 6.046J / 18.410J 알고리즘 소개 (SMA 5503).
첫 번째 강의 비디오에서 강사는 칠판에 삽입 정렬을 씁니다. 그는 다음을 씁니다.
Insertion-Sort(A, N) // Sorts A[1..n]
for j ← 2 to n
do key ← A[j]
i ← j-1
while i > 0 and A[i] > key
do A[i+1] ← A[i]
i ← i-1
A[i+1] ← key
그래서 내 질문 :
- 왜
i ← j-1
언제A[i+1] = key
? 즉, 이유입니다←
어떤 경우에는=
또 다른? 위의 코드에서←
후자에도 사용되지만 유인물에서 웹에서 사용할 수 있습니다.=
사용 되었습니까? 이것은 단순히 오타입니까? (그렇게 가정 해) - 더 중요한 이유는 무엇입니까?
do key ← A[j]
언제i ← j-1
? 너무 특별한 것은 필요합니다do
그런 명령과 들여 쓰기?
다시 말해, 왜 위의 의사 코드가 다음과 같이 쓰여지지 않은가 (내 하이라이트와 함께) :
Insertion-Sort(A, N) // Sorts A[1..n]
for j ← 2 to n
key ← A[j] <-- lost the do here
i ← j-1 <-- no indentation
while i > 0 and A[i] > key
A[i+1] ← A[i] <-- lost the do here
i ← i-1 <-- no indentation
A[i+1] ← key
마지막 질문 : 누구든지 a 코드 표준 의사 코드가 어딘가에 편리하게? 나의 주요 목표는 일관성이므로 수신자를 한 번만 "가르치기"만하면됩니다.
해결책
구조화 된 영어 '표준화 된'의사 코드 언어입니다.
다른 팁
화살표는 평범한 코드로 =로 사용됩니다.
유사의 동일 부호는 일반 코드에서 ==로 제공
그래서 j <- 1
평균 j = 1
그리고 j = 1
평균 if( j == 1)
제휴하지 않습니다 StackOverflow