Следующий код является примером того, что я думаю, квалифицировал бы как псевдокод, так как он не выполняется ни на каком языке, но логика корректна.
string checkRubric(gpa, major)
bool brake = false
num lastRange
num rangeCounter
string assignment = "unassigned"
array bus['business']= array('person a'=>array(0, 2.9), 'person b'=>array(3, 4))
array cis['computer science']= array('person c'=>array(0, 2.9), 'person d'=>array(3, 4))
array lib['english']= array('person e'=>array(0, 4))
array rubric = array(bus, cis, lib)
foreach (rubric as fieldAr)
foreach (fieldAr as field => advisorAr)
if (major == field)
foreach (advisorAr as advisor => gpaRangeAr)
rangeCounter = 0
foreach (gpaRangeAr as gpaValue)
if (rangeCounter < 1)
lastRange = gpaValue
else if (gpa >= lastRange && gpa <= gpaValue)
assignment = advisor
brake = true
break
endif
rangeCounter++
endforeach
if (brake == true)
break
endif
endforeach
if (brake == true)
break
endif
endif
endforeach
if (brake == true)
break
endif
endforeach
return assignment
Для нескольких прошлых недель я пытался создать четкое определение того, каков псевдокод на самом деле. Это относительно программиста или является там фактическим ясным синтаксисом? Я говорю, что псевдокод является любым кодом, который не выполняется, а Вы? Спасибо (ссылки на это подчиненное приветствие)
Не существует фиксированного определения псевдокода. Это любые обозначения, которые, как вы ожидаете, поймет ваша аудитория, чтобы донести вашу точку зрения. Важная идея заключается в том, что он предназначен для чтения людьми, а не компьютерами, поэтому он не обязательно должен быть точным. Вы можете включить детали, которые важны для вашей экспозиции, и опустить те, которые не являются важными.
Теоретически псевдокод не должен зависеть от реализации. В нем простым языком представлены логические шаги того, что нужно делать. Он предназначен для интерпретации человеком, а не для машинного исполнения.
Пример OP немного ближе к реальному коду, чем к псевдокоду. Например, ++
встречается не на всех языках. У других это могло также иметь совсем другое значение.
Что ж, если я не скомпилирую / не свяжу свой код C ++, он не будет выполняться, поэтому я не думаю, что "Код, который не выполнить "- приемлемое определение.
Точно так же языки сценариев не выполняются, они часто интерпретируются.
Мое определение псевдокода:
«[Краткий] Код, не зависящий от синтаксиса, написанный для передачи функции, поведения или алгоритма». «
Псевдокод - это то, что вы пишете на доске, если хотите быстро и четко изложить свои идеи. На практике для меня это очень похоже на нетипизированный язык сценариев, но с гораздо более свободными синтаксическими требованиями. Для меня это очень похоже на C, потому что, честно говоря, большинство программистов разрабатывают какой-то язык, который является вариантом синтаксиса C, и поэтому интуиция легче для большего количества людей (раньше он выглядел как Паскаль, но это потому, что это был один из первых языков, на которых я учился в школе).
Бесстыдно извлечено из Википедии :
Псевдокод - это компактное и неформальное высокоуровневое описание алгоритма компьютерного программирования, использующего структурные соглашения языка программирования, но предназначенного для чтения человеком, а не машинное чтение. Псевдокод обычно опускает детали, которые не важны для понимания алгоритма человеком, такие как объявления переменных, системный код и подпрограммы.
Есть много кода, который не выполняется. Это не значит, что это псевдокод. В вашем "псевдокоде" есть много лишнего, непрограммисты не поймут. Вместо того, чтобы быть псевдокодом, ваш "псевдокодовый" язык очень, очень близок к реальному языку.
Псевдокод - это любое компактное, читаемое человеком объяснение алгоритма или программы. Поскольку ваша программа не читаема для меня, я бы сказал, что это не совсем псевдокод. Вот пример псевдокода:
def sum(x): result = 0 for each entry in x: add current entry to result report result
Или, в немного другом стиле:
sum(x): Let x be an array Let result be an integer representing the result, initially 0 for item in x: result += item return result
Вы можете использовать элементы определенного синтаксиса (и, на самом деле, мой псевдокод очень похож на Python), но он должен быть понятен широкой аудитории и не должен быть затруднен синтаксисом. Например, я использую "+=", но это потому, что он очень компактный и удобный, а не потому, что он обязателен. Если бы вы нашли "endforeach" полезным и удобным в вашем изложении, это было бы нормально; однако, я бы утверждал, что такой вещи не место в псевдокоде, так как она выглядит скорее обрывочной, чем полезной или объясняющей.
Мои два цента на это:
Я говорю, что псевдокод - это любой код, который не выполняется, как насчет вас? Спасибо (ссылки на эту тему приветствуются)
Я не об этом думаю, когда думаю о его определении. Псевдокод - это шаги, которые ваша программа предпримет для выполнения задачи более подробно, чем при описании алгоритма.
В особенности написания псевдокода я считаю чрезвычайно важным то, что его должны понимать все, чтобы каждый мог «портировать» его на свой желаемый язык. Другими словами, он должен быть независимым от языка.
В качестве конструктивной критики я бы не стал рассматривать ваш пример как псевдокод по разным причинам, но особенно потому, что вы используете синтаксис и соглашения, которые напоминают определенный язык программирования.Я говорю, что псевдокоды должны быть независимыми от языка программирования, чтобы их могли переносить на несколько реальных языков программирования разные люди.
РЕДАКТИРОВАТЬ:
Возможно, я бы добавил к своему определению еще одно правило: он должен напоминать человеческий язык, а не язык программирования. Как и в случае, равно вместо ==
, присваивает вместо =
. Причина этого в том, что, например, операторы присваивания и равенства различны на разных языках.