이것은 알고리즘을 얼마나 효과적으로 표현할 수 있는지에 관한 것입니다. 학부 교육을 위해서는 이것이 필요합니다.
의사 코드를 작성하는 표준 방법과 같은 것은 없다는 것을 알고 있습니다. 다른 저자들은 다른 규칙을 따릅니다.
여기 사람들이 지적하고 따르고 최선의 방법을 생각하면 도움이 될 것입니다.
이것에 대해 자세히 다루는 책이 있습니까?
이것은 알고리즘을 얼마나 효과적으로 표현할 수 있는지에 관한 것입니다. 학부 교육을 위해서는 이것이 필요합니다.
의사 코드를 작성하는 표준 방법과 같은 것은 없다는 것을 알고 있습니다. 다른 저자들은 다른 규칙을 따릅니다.
여기 사람들이 지적하고 따르고 최선의 방법을 생각하면 도움이 될 것입니다.
이것에 대해 자세히 다루는 책이 있습니까?
답변:
의사 코드를 작성하는 것은 코드를 작성하는 것과 같습니다. 사용자 (및 사용자가 작성하는 사람들)가 실제로 일부 표준을 따르는 한 어떤 표준 을 따르는지는 중요하지 않습니다 .
그러나 기록을 위해 강의 노트, 연구 논문 및 향후 책에 사용하는 특유의 표준이 있습니다.
제어 흐름 및 메모리 액세스를 위해 표준 명령형 구문을 사용하십시오 (반환되는 경우 array [index], function (arguments)). "다른 경우"를 철자하십시오.
record.field
record->field
수학에 대한 표준 수학 표기법을 사용 - 쓰기 대신 , 대신에 , 대신 , 대신에 , 대신에 , 대신에 , 대신을 , 기타x*y
s ≤ t ¬ p √a%b
s <= t
!p
π∞sqrt(x)
PI
MAX_INT
그러나 문제 를 피하기 위해 할당에 를 사용 하십시오 .==
그러나 영어가 더 명확하다면 표기법 (의사 코드)을 완전히 피하십시오.
구문 설탕 최소화 — 일관된 들여 쓰기 (a Python)로 블록 구조를 나타냅니다. "시작 / 종료"또는 "do / od"또는 "fi"와 같은 단 키워드를 생략하십시오. 줄 번호를 생략하십시오. 마 하지 "에 대한"와 같은 키워드를 강조하거나 "동안"또는 "만약"다른 그들을 설정하여 typeface
또는 스타일 . 이제까지. 하지마
그러나 \ textsc {Small Caps}의 알고리즘 이름과 상수, 기울임 꼴의 변수 이름 및 sans serif의 리터럴 문자열을 입력하십시오.
그러나 \\[0.5ex]
의미있는 코드 청크 사이에 소량의 수직 "호흡"공간 ( )을 추가하십시오 .
중요하지 않은 세부 사항을 지정하지 마십시오. 정점을 방문하는 순서가 중요하지 않으면 "모든 정점에 대해"라고 말하십시오.
예를 들어, 다음은 Borůvka의 최소 스패닝 트리 알고리즘의 재귀 공식입니다 . 이전에 을 세트 모든 모서리를 축소 하여 에서 얻은 그래프로 정의 했으며 루프 및 평행 모서리를 제거하는 서브 루틴으로 전개했습니다.G L
필자는 자체 경량 algorithm
LaTeX 환경 을 사용하여 의사 코드를 조판했습니다. (이것은 단지 tabbing
내부 환경 \fbox
입니다.) Borůvka 알고리즘에 대한 소스 코드는 다음과 같습니다.
\begin{algorithm}
\textul{$\textsc{Borůvka}(G)$:}\+
\\ if $G$ has no edges\+
\\ return $\varnothing$\-
\\[0.5ex]
$L \gets \varnothing$
\\ for each vertex $v$ of $G$\+
\\ add the lightest edge incident to $v$ to $L$\-
\\[0.5ex]
return $L \cup \textsc{Borůvka}(\textsc{Flatten}(G / L))$
\end{algorithm}
파이썬 구문과 비슷한 것을 사용하는 경향이 있습니다. 파이썬은 이미 의사 코드에 가깝기 때문에 일부 경우 내 의사 코드가 실제 작업 코드로 음영 처리 될 수 있습니다.
명확한 코드를 원한다면 (예 : 수학이 거의 없거나 실제 프로그래밍에 가깝습니다) 실제로 컴파일하는 코드를 고려할 수 있습니다. 여기에는 몇 가지 장점이 있습니다.
우리 대학의 교수는 자신의 알고리즘 과정에서이 작업을 수행합니다. 그의 선택 언어는 Modula입니다. 그래도 언어의 특정 선택은 중요하지 않다고 생각합니다. 추상화 수준에 가장 적합한 하나의 패러다임에 충실하십시오.