의사 코드 란 무엇입니까?


19

최근 이 사이트 와 다른 사이트 에서 유사 코드에 대한 많은 언급을 보았습니다 . 그러나 나는 그것을 얻지 못한다 :

  • 의사 코드 란 무엇입니까? 예를 들어, 아래 위키 백과 기사는 "프로그래밍 언어의 구조적 규칙을 사용하지만 기계 판독이 아닌 사람이 읽을 수 있도록 작성되었습니다."라고 말합니다. 이것은 실제로 프로그램을 만드는 데 사용 되지 않음을 의미합니까 ?

  • 왜 사용됩니까?

  • 어떻게 사용 되나요?
  • 프로그래밍 언어로 간주됩니까? (위의 Wikipedia 인용문 참조)
  • 일반적으로 알려 지거나 사용됩니까?

나는 솔직히 이것으로 시작할 곳을 모른다. 나는 그것을 구글 검색 하고 주제에 대한 위키 백과 기사를 보았지만 여전히 그것이 무엇인지 완전히 이해하지 못합니다.


7
Wikipedia 기사의 특정 인용문과 질문을 제공하십시오. 모든 질문에 대한 답변이 있습니다. 단어 나 문구를 이해할 수없는 경우 질문에 특정 단어 나 문구를 인용하여 설명해주십시오. 이 기사에서 무엇을 혼동했는지 알기가 어렵습니다. 여기에서이 기사를 반복하지 말고 혼란 스러울 수있는 구체적인 내용을 참조하면 도움이 될 것입니다.
S.Lott

@ S.Lott : 완료
다이내믹

20
while (you.doNotUnderstand(pseudocode)) { q = you.askQuestion(); a = we.answer(q); you.digestAnswer(a) }
Joachim Sauer

3
if (question.IsAnswered) then you.UnderstandPseudoCode <- true
e-MEE

1
자연 언어와 프로그래밍 언어 사이의 중간 지점입니다. 구어보다 공식적이지만 실제 프로그래밍 언어보다는 덜 공식적입니다.
Ingo

답변:


19

의사 코드는 이름에서 알 수 있듯이 실제 코드는 아니지만 코드처럼 보입니다. 실제 언어를 사용할 때 필요한 모든 수하물을 추가하지 않고도 문제 영역이나 솔루션을 더 잘 이해할 수 있습니다.

한마디로 설명 목적으로 만 사용됩니다.

의사 코드 및 프로그래밍 의사 코드의
정의 또는 고정 규칙은 없으며 매번 다를 수 있습니다. 그것은 (진짜) 프로그래밍 언어가 아니며 아무도 그것을 고려하지 않을 것입니다. 실제 프로그래밍 언어로 컴파일하거나 사용할 수 없습니다. 그렇게하면 의사 코드가 중단됩니다. 의사 코드는 결정론적일 필요는 없으며 (컴퓨터가 컴파일해야 할 필요성), 오히려 사람이 이해해야합니다. 의사 코드를 사용하려면 자주 사용하는 프로그래밍 언어로 변환해야합니다. 이 변환 프로세스는 매번 다를 수 있으며 의사 코드는 자유 언론과 유사하므로 어떤 형식이든 취할 수 있기 때문에 규칙을 지정할 수 없습니다.

사용법
특히 프로젝트의 디자인 단계에서 일반적으로 사용되어 문제에 대한 특정 접근 방식을 이해하는 데 도움이됩니다. 또한 알고리즘 디자인이나 교사가 칠판에 무언가를 그릴 때 일반적으로 사용됩니다. 이 모든 경우에 코드를 컴파일 할 필요는 없으며 문제 / 해결책을 이해하기 만하면됩니다.

의사
코드의 유형 의사 코드는 특정 유형일 필요는 없습니다. 즉 MSIL을 설명하기 위해 스택 기반 의사 코드를 가질 수 있습니다. Java, C #, C ++, Python을 설명하는 명령형 의사 코드를 가질 수 있습니다. F #, Haskell, SQL 등을 설명하는 기능적인 의사 코드를 가질 수 있습니다.

예제
의사 코드는 그 자리에서 발명 될 수 있기 때문에 내 머리 꼭대기에서 아무 문제가 없습니다.

여러 p- 요소를 허용하는 head + body 구조를 보여주는 XML 의사 코드 :

<head ...
   <title ...
</
<body ...>
   (<p>...)+
</

다중 상속을 지원하는 언어에서 다이아몬드 문제를 보여주는 명령형 의사 코드 :

class A() { readFile(); }
class B() : A {}       // overrides readFile in A
class C() : A {}       // overrides readFile in A
class D() : B, C {}    // what definition of readFile should be used?

위의 두 예제는 분명히 (유형) 언어와 비슷하지만 실제로는 해당 언어가 아니며 컴파일 할 수 없습니다. 오히려 당신이 설명하고 싶은 것을 보여줍니다.


14
의사 코드는 모든 수준의 추상화에 적용 할 수 있다는 점을 추가하는 것이 좋습니다. 실제 의사 코드가 아닌 코드로 쉽게 변환 할 수있는 방식으로 알고리즘의 특정 작업을 설명하거나 매우 높은 수준의 매우 광범위하게 정의 된 "방법"또는 "개체"를 사용하는 일부 접근 방식 개요. 넓은 스펙트럼입니다.
Joachim Sauer

8

의사 코드 란 무엇입니까? 예를 들어, 아래 위키 백과 기사는 "프로그래밍 언어의 구조적 규칙을 사용하지만 기계 판독이 아닌 사람이 읽기위한 것"이라고 말합니다. 이것은 실제로 프로그램을 만드는 데 사용되지 않는다는 것을 의미합니까?

그것은 바로 인간 친화적 인 형태로 작성된 코드입니다. 작업 프로그램을 만드는 데 사용할 수 없습니다.

왜 만들어 졌습니까?

Pseudocode는 빠르게 작성하고 빠르게 읽을 수 있기 때문입니다. 언어 별 부분이 없으므로 더 명확하게 읽을 수 있습니다. 또한 언어에 독립적이므로 누구나 읽을 수 있습니다 (그 때문에 많은 교과서에서 사용됨)

프로그래밍 언어로 간주됩니까? 위의 Wikipedia 인용문을 참조하십시오.

아니요. 프로그래밍 언어에는 단순한 구조 이상의 것이 필요합니다. 의사 코드에는없는 공식적인 의미론이 필요합니다.

일반적으로 알려 지거나 사용됩니까?

예. 중급 이상의 사람은 의사 코드를 읽고 쓰는 방법을 알아야합니다. 팀에서 많은 교과서를 읽고 계획 코드를 작성하는 데 필수적입니다.


6

위키 기사를 읽었다면 대부분의 질문이 명확해야합니다. 나는 여기에 더 간단한 방법으로 대답하려고 노력할 것입니다. 이 두 가지 예를 살펴보십시오.

1 부-예

코드 # 1-고객 등록-프로세스 단계 예 :

  1. 고객이 등록 화면으로 이동
  2. 고객이 세부 정보를 입력합니다.
  3. 유효한 세부 사항을 입력 한 경우 데이터베이스에 고객 정보를 저장하십시오
  4. 그렇지 않으면 오류 메시지 100이있는 대화 상자가 표시됩니다.

코드 # 2-고객 이름 확인-프로그래밍 기능의 예

Function ValidateCustomerName(Name1)

If (Name1 is entered and Name2 is entered) then return 1

If (Name1 is not entered) 

   Send Error Message

   return 0

Endif

...

End Function

2 부-이제 귀하의 질문에

의사 코드 란 무엇입니까?

알고리즘 또는 프로세스 단계를 작성하는 방법입니다.

왜 만들어 졌습니까?

특정 프로그래밍 언어 또는 특수 표기법에 의존하지 않고 프로세스 또는 알고리즘 단계를 표시하는 데 사용됩니다.

프로그래밍 언어로 간주됩니까?

컴파일 할 수 없으며 특정 구문이 없기 때문에 프로그래밍 언어가 아니기 때문입니다.

그렇다면 파이썬만큼 능력이 있습니까?

원하는대로 가능하게 만들 수 있습니다. 다음과 같은 문장을 작성할 수 있습니다 : 나이가 유효한 경우 ...

일반적으로 알려 지거나 사용됩니까?

예. 알고리즘과 비즈니스 분석가가 사양을 제공 할 때 도움이됩니다.


@ 재, 편집 해 주셔서 감사합니다.
NoChance

4

Pseudocode의 가장 좋은 예는 파스칼에서 프로그래밍하는 동안 FORTRAN 프로그래머와 사무실을 공유했을 때였습니다. 우리가 서로를 도울 때마다 우리는 그것을 의사 코드로 작성해야했습니다. 그는 세미콜론으로 쓸 필요가 없었습니다. 화이트 보드에서 복잡한 구문 규칙에 얽매이지 않고 이해할 수 있도록 의사 코드를 작성했습니다.

의사 코드에는 엄격한 구성이 없습니다. 필자가 if 문 다음에 "{"를 사용하는 언어를 알고 있다면 보드에 놓고 파이썬을 알고 있다면 그렇지 않습니다. 목표는 정확한 코드가 아니라 문제에 대한 기본 접근 방식을 신속하게 스케치하는 것입니다.

교사는이 정보를 사용하여 정답을주지 않고 학생에게지도를 제공 할 수 있습니다. 코드 조각을 스케치하는 동안 하나 이상의 언어 유사 코드를 사용하는 것이 자연 스럽습니다.


2

의사 코드는 언어가 아니며 규칙이 아닙니다. 모든 교과서 나 논문은 자체 버전의 유사 코드를 사용합니다. 다른 많은 비공식적 인 수학적 "언어"와 마찬가지로, 가장 좋은 경우에는 논문 자체에 비공식적으로 설명되며 최악의 경우 저자는 "명백한"것으로 예상합니다.


에서 친한 경우는 어떤 공식 또는 비공식적 인 설명을 필요로하지에 분명 충분하다).
Abel

@Abel, "명백한"형식주의와 같은 것은 없습니다. 십진 산술처럼 "명백한"것조차도 제대로 소개되어야합니다. 그렇지 않으면 불행히도 혼란을 피할 수 없습니다. 적어도 공식적인 소개가 첨부되지 않은 모호하지 않은 의사 코드는 본 적이 없습니다.
SK-logic

이 스레드는 의사 코드에 관한 것입니다. 형식주의는 그것과 아무 관련이 없습니다. 그러나 내 의견은 "말장난";)했다.
Abel

@Abel, 추상적 언어는 형식주의이기도합니다 (적어도 과학 논문에서 사용되는 경우).
SK-logic

2

의사 코드 란 무엇입니까?

의사 코드는 기본적으로 프로그램이 작업을 완료하기 위해 수행해야하는 작업에 대한 지침입니다. 의사 코드는 말하기 언어로 작성됩니다. 본인이나 다른 사람이 알고리즘을 쉽게 읽고 실제 프로그래밍 언어로 변환 할 수 있도록 알고리즘이나 절차의 단계를 간단히 적어 둡니다.

왜 만들어 졌습니까?

프로그래밍 언어를 사용하지 않고 프로 시저, 프로세스 또는 알고리즘의 단계를 지정하도록 도와줍니다. 가능한 대안 중 하나는 플로우 차트를 사용하는 것입니다.

프로그래밍 언어로 간주됩니까?

공식적인 규칙이 없기 때문에 프로그래밍 언어가 아닙니다.

일반적으로 알려 지거나 사용됩니까?

개인적으로 알고리즘이나 복잡한 프로 시저를 작성할 때 항상 의사 코드를 사용하려고합니다.


0

의사 코드에 대한 제 개인적 정의는 "코드를 디자인 할 때 종이에 일반 영어로 쓰는 내용"입니다

의사 코드 "design"에서 코딩하기 전에 의사 코드를 주석으로 추가합니다. 그런 다음 주석을 통해 설명 된 작업을 수행하는 "실제"코드를 추가 할 수 있습니다.

이 코딩 방법에 대해 잘 모르는 공식적인 이름이있을 수 있으며 새롭거나 복잡한 것을 할 때만 사용합니다.


-4

프로그래밍 강사가 말한 것처럼 :

의사 코드는 모든 프로그래밍 언어의 영어 버전입니다.


2
-1 도움이되지 않습니다. 인용 부호는 의사 코드에 대한 설명 중 의미가 있습니다 (이 답변에서는 누락되었습니다). 그렇지 않으면 오해의 소지가 있습니다. 초보자는 궁금 할 것입니다 : C #의 메소드는 모두 영어로되어 있으므로 사용중인 C #이 Pseudocode입니다. 독일에서 C #을 사용할 때 무엇이라고 부릅니까?
doppelgreener
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.