플로차트 대신 의사 코드를 언제 사용합니까?


9

저는 다양한 프로그래밍 기술을 사용하는 학생이며 의사 코드와 플로차트를 보았습니다. 실제로 프로그래밍하기 전에 문제를 생각하기 위해 둘 다 사용된다는 것을 알고 있지만 이에 대한 몇 가지 질문이 있습니다.

  1. 의사 코드를 사용하여 계획을 세우고 플로차트를 언제 사용합니까? 또는 실제로 프로그래밍하기 전에 두 가지를 모두 수행하는 것이 좋습니다. 특히 JAVA의 소규모 아케이드 게임은 다음 프로젝트입니다.
  2. 의사 코드는 플로우 차트가 아니라 실제 코드와 매우 유사하다는 것을 알았습니다. 의사 코드를 본질적으로 프로그램에 복사 / 붙여 넣기 때문에 의사 코드가 더 좋을 것입니까 (물론 언어에 맞게 변경해야합니다. 나는 그 부분을 이해합니다).
  3. 프로그래밍하는 동안이 두 가지를 모두 사용하는 것이 실용적입니까? 특히 앞서 언급 한 것과 동일한 게임입니다. 감사.

분명히 흐름이없는 곳, 즉 거의 모든 선언적 엔터티에 플로우 차트를 사용하지 않을 것입니다.
SK-logic

1
코딩 플로우 차트를 마지막으로 본 시간을 실제로 기억할 수 없습니다. 클래스 및 데이터 흐름 다이어그램, 사용 사례 다이어그램, 예. 그러나 순서도는 아닙니다. 아마도 그들은 게임 개발에서 더 널리 퍼져있을 것입니다.
Robert Harvey

@RobertHarvey, FSM 다이어그램 (기본적으로 플로우 차트)은 하드웨어 디자인에서 자주 사용됩니다
SK-logic

답변:


7

순서도와 의사 코드는 종종 같은 표현 수준을 갖지만 선형화는 다릅니다. 의사 코드는 선형이며 (즉, 명령이있는 일련의 라인) 플로우 차트는 아닙니다. 따라서 플로우 차트는 의사 코드를 작성하거나 문서화하기 전에 사용되는 더 높은 추상화 레벨입니다.

순서도에는 의사 코드에 비해 두 가지 강력한 장점이 있습니다. 첫째, 그래픽입니다. 비 기술적 인 사람들은 구조화 된 텍스트에 대한 강한 두려움을 가지고 있지만 그래픽 설명에 대해서는 두려워하지 않으므로 순서도는 훨씬 더 잘 어울립니다. 둘째, 순서도는 분기와 달리 주요 실행 라인을 표시하는 등 메타 고려 사항을 표현하는 데 훨씬 좋습니다.

귀하의 질문에 대한 자세한 내용 :

  1. 정말 복잡한 문제의 경우 먼저 플로우 차트를 사용한 다음 의사 코드를 사용하십시오. 충분히 안전하다고 느끼면 둘 다 선택 사항입니다.
  2. 예, 의사 코드는 실제 코드와 병합 가능하다는 장점이 있습니다. 예를 들어 Steve McConnell은 먼저 의사 코드로 메서드를 작성하고 코드에 의사 코드를 주석으로 남겨 두는 것이 좋습니다.
  3. 디자인 중에 플로우 차트를 그려야 할 필요성이 충분하지 않다고 느꼈습니다. 사소한 플로차트는 복잡한 논리를 나타내며 비용이 많이 들지 않아야합니다.

1
순서도는 모든 결정 지점이 덜 일반적인 경로와 가장 일반적인 경로에 대한 작업을 정의하도록하는 좋은 방법입니다. 이를 통해 승인이 거부되거나 주문이 취소 될 때 수행 할 작업을 알 수 있습니다! 테스트를 통해 발견 한 QA 중에 사람들이 버그를 잊어 버리거나 서두르는 경우가 많기 때문에 종종 엣지 케이스에 버그가 더 많습니다.
HLGEM

2

의사 코드

솔직히 말하면 의사 코드를 많이 사용하지 않습니다. 일반적으로 코드를 작성하는 것이 더 빠르므로 코드 작업이 완료되면 실제 코드가됩니다. 의사 코드가 도움이 될 수있는 경우가 있지만 일반적으로 매우 복잡한 작업을 수행하고 있으며 메소드 또는 구조의 구조를 분석하려고합니다. 이 경우 IDE에서 주석을 사용하여 올바르게 처리 될 때까지 구조를 배치합니다. 그런 다음 주석에 실제 코드를 작성합니다. 이것은 몇 가지 일을하는 데 도움이됩니다.

  • 나는 의견을 읽고 그 사이에 명백한 격차를 보며 내가 가지고 있거나 구현하지 않은 영역을 볼 수 있습니다.
  • 실제 코드를 작성하면 내가하는 일을 영어로 설명하는 의견이 있습니다. (의사 코드를 먼저 작성해야 할 정도로 복잡하면 아마도 필요할 것입니다).

순서도

코드는 일반적으로 너무 많이 변경되어 시스템 전체의 더 큰 아키텍처 설계 또는 문서를 제외하고는 플로차트가 도움이되지 않습니다. 그런 경우에는 다이어그램을 화이트 보드로 작성하여 요점을 파악하거나 팀의 다른 사람에게 보여줄 것입니다. 실제로 이해하는 데 도움이되는 순서도가 필요하지 않으면 소프트웨어를 제대로 "실행"하기 위해 필요하지 않습니다. 오늘날 코드 자체에서 플로우 차트를 생성 하는 IDE 용 플러그인 과 클래스 다이어그램 및 기타 다이어그램이 있습니다 ( 그 반대도 마찬가지입니다 ). 심각하게 정확한 순서도를 수행해야하는 유일한 실시간은 전체 아키텍처를 유지하지 못하고 한 번에 작업이 진행되는 방식과 시각적으로 무언가를 통해 꼬임을 잡아야하는 경우입니다.


0

일반적으로 개인 프로젝트 (프로젝트가 크지 않기 때문에)에서 작업하는 동안 순서도를 작성하지 않으며 대부분의 입력, 출력 및 프로세스가 명확합니다.

그러나 다른 입력 소스 플랫 파일, 데이터베이스, 수동 인터페이스 등 순서도를 사용하여 복잡한 대규모 프로젝트에 대한 작업을 시작하면 편리합니다.

의사 코드와 UML 디 그램을 작성하는 것이 좋습니다. 이러한 도구를 사용하면 더 나은 클래스, 메소드 등을 만들 수 있습니다. 의사 코드를 작성하는 동안 프로그램을 해결하는 다른 효율적 방법을 찾을 수 있습니다.


0

의사 코드는 최소한 코드의 기본 사항을 이해하는 사람들에게 아이디어를 빠르게 표현하기위한 것입니다. 순서도는 다른 사람들이 똑같은 것을 이해하기 위해 예쁜 그림을 그리는 것입니다.

많은 사람들이 비 프로그래머의 의사 코드보다 문서 및 플로우 차트를 따르기 쉽기 때문에 플로우 차트는 종종 문서화 목적으로 사용됩니다. 텍스트 편집기가 필요한 모든 것이므로 의사 코드를 고수하는 프로젝트에서 의사 코드를 사용하는 것이 훨씬 유용하고 훨씬 쉽습니다.


0

순서도는 추상화 수준이 높으므로 작업 진행 방법을 계획 할 수 있습니다.

x가 죽으면 y가 이깁니다

클래스와 메소드 측면에서 프로그램을 디자인하는 방법에 의존 할 필요가 없으며 의사 코드는 다른 수준의 추상화를 제공합니다 (실제로 의존적이지만)

if (isdead (s)) y.win ()

따라서 의사 코드를 사용중인 언어에 따라 실제 프로그램으로 변환 할 수 있습니다.

게임의 경우 먼저 플로우 차트를 사용하는 것이 좋습니다. 그런 다음 클래스와 메소드를 디자인하고 의사 코드를 작성하여 프로그램으로 변환하십시오.


0

작성중인 코드의 특성을 고려할 것입니다. 그렇다면 :

  1. 반복성 / 재귀 적
  2. 복잡한 방법으로 가지
  3. 대표하고자하는 여러 시스템에서 구현

처음 두 경우에는 의사 코드가 큰 그림 다이어그램보다 점진적으로 읽기가 어려워집니다. 다른 한편으로, 대부분 선형 인 코드는 엄청나게 지루한 다이어그램을 만들어 실제로 얼마나 많은 프로세스로 인해 프로세스를 이해하기 어렵게 만듭니다.

세 번째 경우, 플로우 차트는 시스템 경계를 넘어 전체 프로세스를 나타내는 프로세스를 더 잘 나타냅니다.


0
  1. 편안하다고 느끼는 것을 사용해야합니다. 즉, 요즘에는 프로그램 제어를 스케치하는 데 플로우 차트가 많이 사용되지 않는다는 인상이 있습니다. 우선 의사 코드와 비교할 때 구조화되지 않은 것입니다. UML과 같은 클래스 종속 다이어그램을 사용하여 아키텍처를 훨씬 더 높은 수준으로 설명하는 것이 더 일반적입니다. 또한 애플리케이션에 상태 머신이있는 경우 플로우 차트와 같은 상태 머신 다이어그램을 그리는 것이 필수적입니다.
  2. 나는 당신이 여기에 맞다고 생각합니다. 작동하는 한 가지 방법은 의사 코드를 소스 파일에 주석으로 작성하여 시작하고 실제 구현 행을 삽입하는 것입니다.
  3. 다시 편안하게 느끼는 것을 사용하십시오. 확실하지 않으면 둘 다 사용해보십시오. 나는 당신의 연습이 당신에게 가장 유용한 것에 빠르게 수렴 될 것으로 기대합니다. 특히 복잡한 실행 순서를 풀지 않으려는 경우 개인적으로 순서도가 유용하지 않습니다.

0

Java를 작성할 수 있는데 왜 의사 코드를 작성합니까? Java, 좋은 IDE, Javadoc이 프로그래밍 문제를 파악하는 가장 쉬운 방법, 최소한 객체 지향 문제라는 것을 알았습니다 . (그리고 아케이드 게임 한다고 OO합니다.) 언어는 이것에 대한 처음부터 설계되었습니다. 간단하고 간단합니다. (아마도 많은 목적을 위해 너무 간단하지만, 내가 본 것 중 가장 좋은 것) 큰 종이. Java 코드는 의사 코드만큼 간단하고 훨씬 엄격합니다. "다이어그램"및 "의사"코드를 작성하면 프로그램이 실제로 실행됩니다!


1
"공개 정적 void main .."또는 "system.out.println"또는 camelback 표기법이있는 긴 식별자 인 long winded가있을 수 있습니다 .n 2b에 걸린 예외가 있습니다. 10 년 전에 파일을 열었던 것을 기억합니다. new BufferedReader (new InputStreamReader (System.in))와 같은 것; 분명히 mkyong.com/java/… 더 쉬울 것입니다. 그러나 실제로 여러분이 부르는 모든 라이브러리는 의사 코드처럼 상상할 수 없을 정도로 간결 할 수 있습니다.
barlop

Java 또는 다른 언어에서도 컴파일시 오류가 발생합니다. 의사 코드로는 아무것도 없습니다. 방해받지 않고 디자인에 집중할 수 있습니다. 의사 코드에 대한 의견은 의사 코드가 생각보다 명확하기 때문에 훨씬 간단 할 수 있습니다. 당신은 한 언어로만 생각함으로써 제한을받지 않으며, 다른 언어를 사용할 것입니다. 작성하는 것이 더 빠르고 고통스럽지 않습니다 (컴파일이 필요하지 않습니다-심지어 매우 유창한 컴파일 오류가 발생합니다).
barlop

@ barlop : 그것은 나를 위해 작동하지만 모든 사람에게 작동하지 않을 수 있습니다. 클래스가 필요하거나 작동 할 수 있는지 알아야 할 때까지 클래스에서 많은 코드 (예 : "BufferedReader")를 남겨 둡니다. 내가 가지고 있더라도 전반적인 디자인을 고려할 때 볼 필요가없는 수업에 방해가되지 않습니다. 컴파일러 오류는 쉽게 수정되며 올바른 클래스의 인스턴스를 얻을 수없는 지점에서 잘못된 클래스를 사용하는 등의 주요 디자인 결함을 방지 할 수 있습니다 . 나는 내가 인정 했다 소프트웨어 수있는이 방법으로 "디자인" 단지 자바로 작성을하지만, 영업 이익은 되는 자바를 사용.
RalphChapin 2018

파일을 열고 싶다고하면 openfile ( "c : \ blah \ file")의 의사 코드가 Java보다 얼마나 짧은 지 보십니까? 또는 인쇄 "dfdfd"가 Java보다 짧습니까? 나는 아직 의사 코드 페이지와 여러 클래스를 한 적이 없습니다. 부분적으로 'cos 연령대에 큰 프로그램을 작성하지 않았습니다. b) 부분적으로'cos 생각하지 않습니다. 의사 코드를 작성한 다음 구현하십시오. 다른 의사 코드가 있으면 더 높은 레벨이됩니다. 생성자를 포함하여 모든 클래스 및 메서드 목록이있을 수 있습니다. 그래서 나는 어떤 수업이 무엇인지, 그리고 그 수업을받을 수 있다는 것을 알고 있습니다.
barlop

그래서 나는 잘못된 수업을 사용하는 상황에 처하지는 않았지만 어쨌든 내 프로그램이라면 어떤 수업이 무엇인지 메모에 적어 놓았을 것입니다. 수업은 꽤 높은 수준입니다. 기억이 안 나면 메모를하겠습니다. 그리고 의사 코드는 하나의 의미에 관한 것이므로 클래스 blah의 인스턴스를 만들고 bleh를 작성했다면 오타 일 뿐이지 만 디자인을 방해하지는 않습니다. (당신이 자신을 위해 글을 쓰고 있다면 당신은 당신이 무엇을 의미하는지 알고 있으며, 그것을 blah처럼 사용했습니다).
barlop

0

if 문에 정말로 혼란스러워하고 이해하려고하면 순서도를 사용할 수 있습니다. 또는 루프를 이해하려는 경우 카운터 효과를 참조하십시오. 배우고 있다면 많은 도움이 될 수 있습니다.

상자에 간단한 설명을 넣어야하므로 약간 제한적일 수 있습니다. 그리고 프로그램이 매우 선형 적이며 루프와 사소한 경우 사소한 것으로 보입니다.

의사 코드는 프로그램을 디자인하는 데 유용합니다. 구문을 제대로 가져야하는 방해없이, 일부 언어에는 긴 바람이 없습니다. 작성이 더 빠르기 때문에 코드를 쉽게 재 설계 할 수 있습니다. 그리고 당신은 당신의 마음이 원하는만큼 간결 할 수 있고, 작성하는 것이 즐거우 며, 디버깅을하지 않아도 작동하기 위해 정신적 인 노력을 덜 필요로하며, 큰 그림과 디자인에 더 집중할 수있는 능력이 더 필요합니다.

따라서 자신에게 유용합니다.

그들은 또한 다른 사람들과 의사 소통하는 데 사용될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.