입문 프로그래밍 책을 살펴보고 의사 코드에 간단한 예제를 나열합니다.
Start
input myNumber
set myAnswer = myNumber * 2
output myAnswer
Stop
다음 myAnswer
과 같이 호출 된 다른 변수를 생략 하고 작업을 출력 명령에 넣을 수없는 이유
Start
input myNumber
output myNumber * 2
Stop
전자가 왜 정확하고 후자가 아닌가?
답변
당신은 할 수 있지만 다른 것은 당신이 무슨 일이 일어나고 있는지보고 myAnswer
나중에 프로그램에서 사용할 수 있습니다 . 두 번째 것을 사용하면 재사용 할 수 없습니다 myAnswer
.
따라서 나중에 프로그램에서 아래를 원할 수 있습니다.
myAnswer + 5
myAnswer + 1
etc.
사용하려는 작업이 다를 수 있습니다.
숫자 교환을 고려하십시오.
Start
input myNumber
set myAnswerA = myNumber * 2
output myAnswerA
set myAnswerB = myNumber * 3
output myAnswerB
set temp = myAnswerA
set myAnswerA = myAnswerB
set myAnswerA = temp
output myAnswerA
output myAnswerB
Stop
변수가 없으면 어려울 것입니다. 컴퓨터 서적은 기본적으로 시작되며 복잡성을 볼 때까지 대부분의 프로그래밍이 쉽습니다. 튜토리얼에서는 대부분의 것이 사소한 것이며 사물이 이해가되지 않는 곳을 보는 것은 복잡합니다.
답변
또 다른 이유로, 할당 set myAnswer = myNumber * 2
은 결과 값에 name을 제공합니다 . 코드의 두 줄 버전을 읽는 사람은이 값을 인쇄한다는 사실 만 알고 myNumber * 2
있습니다. 세 줄 버전을 읽는 사람 myNumber * 2
은 그 답을 볼 수 있습니다 .
그러한 사소한 예에서는 중요하지 않은 것처럼 보이지만 때로는 의미있는 이름을 가진 변수에 결과 값을 할당하면 다른 프로그래머가 코드를 읽고 이해하기가 훨씬 쉬워 질 수 있습니다.
답변
그것은 의사 코드입니다. 특정 구현 언어로 가정하지는 않습니다.
일부 프로그래밍 언어는 식을 평가 한 다음 동일한 코드 줄로 결과를 출력하는 것을 지원하지 않습니다. 예를 들어 대부분의 어셈블러는이를 지원하지 않습니다. 아마도이 책의 저자는 사물을 저수준으로 보여주기를 원했을 것입니다.
답변
다른 답변은 특정 기계식 세부 사항과 하나 또는 다른 형태가 더 나은시기에 대한 예를 다루었지만 철학적 인 약간의 배경을 더 언급하고 싶습니다.
당신은 언어를 배우고 있습니다.
언어는 아이디어를 표현하고 이해 (통신) 할 수있는 언어입니다. 컴퓨터 프로그래밍 언어는 해당 언어를 사용하여 지정되고 제공되는 아이디어 (결정)에 따라 조치 (실행)를 수행하도록 설계된 기계에 의해 기계적으로 구문 분석 될 수있는 추가 특성을 갖습니다.
전혀 유용한 모든 언어에는 그 언어로 표현할 수있는 거의 모든 아이디어를 표현할 수있는 여러 가지 방법이 있습니다.
영어로 제공되는 다양한 뉘앙스를 고려하십시오. 간단한 문장도
고양이가 상자 위로 뛰어 올랐다.
동일한 실제 물리적 우주 행동을 언급하면서 약간 다른 아이디어를 표현하거나 장면의 다른 부분에 중점을 두도록 다양 할 수 있습니다 .
먼저 문법 변형입니다.
고양이가 상자를 뛰어 넘었다.
상자에 고양이가 뛰어 올랐다.
그런 다음 여전히 동일한 물리적 동작을 참조하는 더 넓고 넓은 변형이 있습니다.
상자는 고양이의 충격으로 흔들렸다.
고양이는 상자의 상단에 멍청이와 함께 내려왔다.
고양이는 가볍게 공중으로 뛰어 들어 근처 상자에 깔끔하게 착륙했습니다.
마지막 문장에서 “인근”이라는 단어의 의미를 살펴보십시오. 그것의 포함은 달리 존재하지 않는 완전히 새로운 개념의 범위를 전달합니다.
파이썬 젠 은 항상 한 가지 이상의 방법이 있습니다 .
물론 의사 소통하고자하는 내용에 따라 위의 영어 문장 중 하나만 선택하는 것처럼 의도를 완벽하게 표현하고 가장 적합한 한 가지 방법이 있습니다 . 그것이 파이썬의 선에 관한 것입니다.
그러나 입문 프로그래밍 과정 또는 입문 영어 과정에서는 먼저 가장 완벽한 방법 을 선택할 수있는 판단을 내리기 전에 아이디어 를 취할 수 있는 다양한 방법 (단어, 코드 스 니펫)을 배워야합니다 .
답변
myAnswer
중복으로 보이는 변수에 대해서만 묻습니다 . 다른 답변은 이미 그 이유와시기를 생략하거나 사용하는 것이 합리적이라고 설명했지만 여기에 하나 더 있습니다. 어떻게?
Start
output input * 2
Stop
또는 심지어
Start output input * 2 Stop
대부분의 언어에서 이것은 여전히 작동하지만 읽을 수 있습니까? 컴퓨터가 코드를 읽는 유일한 컴퓨터가 아니기 때문에 도우미 변수를 자주 사용하기가 어렵습니다 . 우리는 그것을 유지하고 몇 개월 만에 그것을 이해해야하며 나중에 여전히 작동하는 코드를 이해할 수없는 코드를 작성하는 것이 더 어렵습니다 … 일반적으로 며칠 만에 특정 방식으로 무언가를 한 이유를 알지 못합니다 .
답변
두 가지 변형 (이 간단한 경우)을 모두 수행 할 수 있지만 첫 번째 변형은 더 복잡한 경우에 대해 더 읽기 쉽고 구조화됩니다. 첫 번째 변형은 각 단계마다 한 줄씩 (오른쪽 이름을 가진 두 줄) IPO 모델 을 보여줍니다 .
Start
input myNumber // Input
set myAnswer = myNumber * 2 // Process
output myAnswer // Output
Stop