2010-03-22 6 views
5

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

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 

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

ответ

6

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

+0

Я согласен с тобой на 100%. Псевдокод, на мой взгляд, зависит от контекста/аудитории, которую он предоставляет, и необязательно должен быть полностью независимым от языка. Вот почему я не могу поколебать уверенность в том, что псевдокод может приблизиться к пределу простого компиляции. Я думаю, что на этот вопрос можно обсудить больше. –

3

Бесстыдно вырванные из Wikipedia:

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

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

+0

Это, по-видимому, самое четкое определение. –

0

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

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

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

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

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

EDIT: Возможно, еще одно правило, которое я бы добавил к моему определению, состоит в том, что он должен напоминать человеческий язык, чем язык программирования. Как и в, равно вместо ==, назначить вместо =. Причина этого заключается в том, что, например, операторы присваивания и равенства различны на разных языках.

+0

@ Анзурио, я бы сказал, что «==» широко используется достаточно, чтобы оно было приемлемо в псевдокоде. Однако его использование «как», а также его использование фактических выражений для его условий вместо английских объяснений того, что тестируется, не делает его не псевдокодом. –

+0

@ Майкл, вы правы, но это был первый «пример», который пришел мне на ум, пытаясь разоблачить, что я предпочитаю использовать слова или язык-агностическую символику. «Стороны, работающие как с VB.NET, так и с C#, которые легко появляются в моем сознании. – Anzurio

1

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

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

1

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

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

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

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

+0

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

+0

Добавлен «лаконичный» для вас :) – Alan

1

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

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

+0

Это то, что я не считаю удобным писать «endforeach», но знал, что это так. Я включил смешанный пример: «foreach» не на каждом языке, но «++» почти всегда есть. Я использовал «конец» вместо фигурных скобок. Я почти никогда не пишу псевдокод, который другие будут использовать, кроме меня (обычно имеет срок хранения 24 часа, прежде чем его портируют на код), поэтому я не подчеркиваю, что он не зависит от языка. Моя внутренняя документация всегда на естественном языке. –

0

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

+0

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

1

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

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