Псевдокод: четкое определение? - PullRequest
5 голосов
/ 22 марта 2010

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

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

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

Ответы [ 8 ]

7 голосов
/ 22 марта 2010

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

3 голосов
/ 22 марта 2010

Бесстыдно вырванный из Википедия :

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

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

1 голос
/ 29 мая 2012

Схема программы, написанная в форме, которая может быть легко преобразована в реальные программные операторы.

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

1 голос
/ 22 марта 2010

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

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 голос
/ 22 марта 2010

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

Аналогично, скриптовые языки не выполняются, их часто интерпретируют.

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

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

1 голос
/ 22 марта 2010

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

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

0 голосов
/ 22 марта 2010

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

0 голосов
/ 22 марта 2010

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

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

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

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

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

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

...