Псевдокод: четкое определение?

Следующий код является примером того, что я думаю, квалифицировал бы как псевдокод, так как он не выполняется ни на каком языке, но логика корректна.

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

Для нескольких прошлых недель я пытался создать четкое определение того, каков псевдокод на самом деле. Это относительно программиста или является там фактическим ясным синтаксисом? Я говорю, что псевдокод является любым кодом, который не выполняется, а Вы? Спасибо (ссылки на это подчиненное приветствие)

5
задан Cian E 22 March 2010 в 02:43
поделиться

7 ответов

Не существует фиксированного определения псевдокода. Это любые обозначения, которые, как вы ожидаете, поймет ваша аудитория, чтобы донести вашу точку зрения. Важная идея заключается в том, что он предназначен для чтения людьми, а не компьютерами, поэтому он не обязательно должен быть точным. Вы можете включить детали, которые важны для вашей экспозиции, и опустить те, которые не являются важными.

7
ответ дан 18 December 2019 в 13:12
поделиться

Теоретически псевдокод не должен зависеть от реализации. В нем простым языком представлены логические шаги того, что нужно делать. Он предназначен для интерпретации человеком, а не для машинного исполнения.

Пример OP немного ближе к реальному коду, чем к псевдокоду. Например, ++ встречается не на всех языках. У других это могло также иметь совсем другое значение.

1
ответ дан 18 December 2019 в 13:12
поделиться

Что ж, если я не скомпилирую / не свяжу свой код C ++, он не будет выполняться, поэтому я не думаю, что "Код, который не выполнить "- приемлемое определение.

Точно так же языки сценариев не выполняются, они часто интерпретируются.

Мое определение псевдокода:

«[Краткий] Код, не зависящий от синтаксиса, написанный для передачи функции, поведения или алгоритма». «

1
ответ дан 18 December 2019 в 13:12
поделиться

Псевдокод - это то, что вы пишете на доске, если хотите быстро и четко изложить свои идеи. На практике для меня это очень похоже на нетипизированный язык сценариев, но с гораздо более свободными синтаксическими требованиями. Для меня это очень похоже на C, потому что, честно говоря, большинство программистов разрабатывают какой-то язык, который является вариантом синтаксиса C, и поэтому интуиция легче для большего количества людей (раньше он выглядел как Паскаль, но это потому, что это был один из первых языков, на которых я учился в школе).

0
ответ дан 18 December 2019 в 13:12
поделиться

Бесстыдно извлечено из Википедии :

Псевдокод - это компактное и неформальное высокоуровневое описание алгоритма компьютерного программирования, использующего структурные соглашения языка программирования, но предназначенного для чтения человеком, а не машинное чтение. Псевдокод обычно опускает детали, которые не важны для понимания алгоритма человеком, такие как объявления переменных, системный код и подпрограммы.

Есть много кода, который не выполняется. Это не значит, что это псевдокод. В вашем "псевдокоде" есть много лишнего, непрограммисты не поймут. Вместо того, чтобы быть псевдокодом, ваш "псевдокодовый" язык очень, очень близок к реальному языку.

3
ответ дан 18 December 2019 в 13:12
поделиться

Псевдокод - это любое компактное, читаемое человеком объяснение алгоритма или программы. Поскольку ваша программа не читаема для меня, я бы сказал, что это не совсем псевдокод. Вот пример псевдокода:

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" полезным и удобным в вашем изложении, это было бы нормально; однако, я бы утверждал, что такой вещи не место в псевдокоде, так как она выглядит скорее обрывочной, чем полезной или объясняющей.

1
ответ дан 18 December 2019 в 13:12
поделиться

Мои два цента на это:

Я говорю, что псевдокод - это любой код, который не выполняется, как насчет вас? Спасибо (ссылки на эту тему приветствуются)

Я не об этом думаю, когда думаю о его определении. Псевдокод - это шаги, которые ваша программа предпримет для выполнения задачи более подробно, чем при описании алгоритма.

В особенности написания псевдокода я считаю чрезвычайно важным то, что его должны понимать все, чтобы каждый мог «портировать» его на свой желаемый язык. Другими словами, он должен быть независимым от языка.

В качестве конструктивной критики я бы не стал рассматривать ваш пример как псевдокод по разным причинам, но особенно потому, что вы используете синтаксис и соглашения, которые напоминают определенный язык программирования.Я говорю, что псевдокоды должны быть независимыми от языка программирования, чтобы их могли переносить на несколько реальных языков программирования разные люди.

РЕДАКТИРОВАТЬ: Возможно, я бы добавил к своему определению еще одно правило: он должен напоминать человеческий язык, а не язык программирования. Как и в случае, равно вместо == , присваивает вместо = . Причина этого в том, что, например, операторы присваивания и равенства различны на разных языках.

0
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: