의사 코드를 이해하는 방법

학부 1학년 때 교수님의 근무 시간에 알고리즘에 대한 도움을 요청했던 기억이 납니다. 나는 여전히 알고리즘이 무엇인지 기억나지 않지만, 내가 기억하는 것은 알고리즘을 올바르게 형식화하고 코딩해야 하는 방법을 이해하지 못했다는 것입니다. 이 모든 것이 시험을 위한 준비였습니다. 나는 그에게 이 모든 것을 손으로 써야 하는 시험에서 어떻게 해야 하는지 물었습니다. "아무것도 암기하지 마십시오. 도구가 어떻게 작동하는지 이해하고, 작업 순서를 이해하고, 거기에서 가십시오."

의사 코드는 코드를 이해하기 위해 영어를 사용하는 좋은 방법입니다.

      Alloc mem for int userInput;
      If(userInput > 5){
        OUTPUT("Larger than 5");
      }

위의 의사 코드 라인은 어떤 언어의 어떤 IDE에서도 컴파일되지 않지만 인간이 단순히 이해하기 쉽습니다.

정수 변수에 대한 메모리를 할당합니다.
- 해당 정수 변수가 5보다 큰 경우
- 콘솔에 인쇄

의사 코드 "구문"의 측면에서 실제로 제대로 작성하는 방법은 없습니다. 프로그래머가 코드 형식을 지정하는 방법을 정확히 이해할 수 있도록 하는 대부분의 최소한의 언어입니다.
- 각 작업이 어떤 순서로 이루어져야 하는지
- 루프나 논리문이 필요한 위치
- 알고리즘을 구성하는 방법
-특정 수식에 대한 변수를 배치할 위치

최근에 저는 고전적인 FizzBuzz 문제 뒤에 있는 논리를 더 잘 구성할 수 있도록 의사 코드를 구현한 미니 사이트를 만들었습니다. 내가 완성한 FizzBuzz 버전은 100 미만의 두 숫자를 입력으로 사용합니다. 첫 번째 숫자로 나눌 수 있는 모든 숫자에 대해 fizz를 인쇄하고 두 번째 숫자로 나눌 수 있는 모든 숫자에 대해 버즈를 인쇄합니다. 두 숫자로 나눌 수 있는 모든 숫자에 대해 FizzBuzz를 인쇄합니다.

//1에서 100 사이의 모든 숫자를 반복합니다.
For(접근 중인 변수){

//숫자가 두 사용자 입력으로 나누어 떨어지는 경우 fizzbuzz를 출력합니다.
If((varElement % fizzNum)== 0 AND (varElement % buzzNum)== 0)
OUTPUT("피즈버즈")

//숫자가 두 사용자가 나눌 수 없는 경우 숫자를 인쇄합니다.
//입력
If((varElement % fizzNum)!= 0 AND (varElement %uzzNum)!= 0)
출력(변수)

//숫자가 나누어지면 fizz를 출력
If((var % fizzNum)==0)
OUTPUT("피즈")

//숫자가 버즈 숫자로 나누어 떨어지는 경우 버즈를 출력합니다.
If(((var % bugNum)== 0)
OUTPUT("버즈")
}

물론 위의 코드를 이해하기 위해서는 mod 연산자와 등호 연산자에 대한 이해가 있어야 하지만, 이 알고리즘에 대한 기본적인 이해를 위해서는 주석과 섞인 의사코드로도 충분하다.

작업해야 하는 도구와 해결해야 할 문제를 이해한 다음 의사 코드를 사용하여 알고리즘을 형식화합니다.

좋은 웹페이지 즐겨찾기