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

ここ数週間、疑似コードとは何かを明確に定義しようとしてきました。それはプログラマーに関連していますか、それとも実際の明確な構文はありますか? 疑似コードは実行されないコードだと思いますが、あなたはどうですか? ありがとうございます (この件名へのリンクは歓迎します)

4

8 に答える 8

7

擬似コードの固定された定義はありません。要点を理解してもらうために聴衆に理解してもらいたい表記法です。重要な考え方は、コンピューターではなく人間が読むことを意図しているため、正確である必要はないということです。説明にとって重要な詳細を含めて、そうでないものを省略することができます。

于 2010-03-22T02:52:17.570 に答える
3

ウィキペディアから恥知らずに切り取った:

擬似コードは、プログラミング言語の構造規則を使用するコンピューター プログラミング アルゴリズムのコンパクトで非公式な高レベルの記述ですが、機械による読み取りではなく人間による読み取りを目的としています。疑似コードは通常、変数宣言、システム固有のコード、サブルーチンなど、人間がアルゴリズムを理解するのに不可欠ではない詳細を省略します。

実行できないコードがたくさんあります。これは、疑似コードであるという意味ではありません。あなたの「疑似コード」には、プログラマー以外には理解できない余分なものがたくさんあります。疑似コードではなく、「疑似コード」言語は実際の言語に非常に近いものになります。

于 2010-03-22T02:51:11.970 に答える
1

擬似コードは、アルゴリズムまたはプログラムのコンパクトで人間が読める形式の説明です。あなたのプログラムは私には読めないので、私はそれが完全に擬似コードではないと言うでしょう。擬似コードの例を次に示します。

def sum(x):
    結果=0
    xのエントリごとに:
        結果に現在のエントリを追加
    レポート結果

または、少し異なるスタイルで:

sum(x):
   xを配列とします
   結果を結果を表す整数とします。最初は0です。

   xのアイテムの場合:
       結果+=アイテム

   結果を返す

特定の構文の要素を使用できますが(実際、私の擬似コードはPythonによく似ている傾向があります)、幅広いユーザーが理解できる必要があり、構文に邪魔されないようにする必要があります。たとえば、「+ =」を使用しますが、これは必須ではなく、非常にコンパクトで便利なためです。解説で「endforeach」が便利で便利だと思ったら、それは大丈夫だったでしょう。しかし、私は、そのようなものは、有用または説明的というよりも、よりスティントに見えるので、擬似コードに属していないことを主張します。

于 2010-03-22T03:01:57.043 に答える
1

C++ コードをコンパイル/リンクしないと実行されないため、「実行されないコード」という定義は受け入れられないと思います。

同様に、スクリプト言語は実行されず、しばしば解釈されます。

疑似コードの私の定義は次のようになります。

「[簡潔] 関数、動作、またはアルゴリズムを伝えるために書かれた、構文にとらわれないコード。」"

于 2010-03-22T02:53:33.043 に答える
1

理論的には、疑似コードは実装に依存しないはずです。何をすべきかの論理的な手順を平易な言葉で示しています。これは、機械による実行ではなく、人間による解釈を目的としています。

OPの例は、疑似コードよりも実際のコードに少し近いです。たとえば++、すべての言語にあるわけではありません。また、他の人にとっては非常に異なる意味を持つ可能性があります。

于 2010-03-22T02:52:23.240 に答える
1

実際のプログラミング ステートメントに簡単に変換できる形式で書かれた、プログラムの概要。

疑似コードはコンパイルも実行もできず、実際のフォーマットや構文規則はありません。これは、最終的なコードを作成するための 1 つのステップ (重要なステップ) にすぎません。疑似コードの利点は、プログラマーが特定のプログラミング言語の構文の詳細をすべて気にすることなく、アルゴリズムに集中できることです。

于 2012-05-29T05:42:52.393 に答える
0

疑似コードは、アイデアをすばやく明確に伝えたい場合にホワイトボードに書き込むものです。実際には、私にとっては、型指定されていないスクリプト言語によく似ていますが、構文上の要件がはるかに緩いです。率直に言って、ほとんどのプログラマーはC構文の変形である言語を習得しているため、より多くの人にとって直感が容易であるため、私にとってはCによく似ています(以前はPascalのように見えましたが、それは私が最初に使用した言語の1つだったためです)学校で学んだ)。

于 2010-03-22T03:03:59.360 に答える
0

これに関する私の2セント:

疑似コードは実行されないコードだと思いますが、あなたはどうですか? ありがとうございます (この件名へのリンクは歓迎します)

その定義を考えるとき、それは私が考えるものではありません。疑似コードは、アルゴリズムを記述するよりも詳細にタスクを実行するためにプログラムが実行する手順です。

疑似コードの書き方について特に非常に重要だと思うことの 1 つは、各個人が希望する言語にそれを「移植」するためには、全員がそれを理解する必要があるということです。つまり、言語にとらわれない必要があります。

建設的な批判として、さまざまな理由であなたの例を疑似コードとは見なしませんが、特に、特定のプログラミング言語に似た構文と規則を使用しているためです。疑似コードは、さまざまな人々が実際のプログラミング言語に移植できるようにするために、プログラミング言語にとらわれないようにする必要があります。

編集: おそらく、私の定義に追加するもう 1 つのルールは、プログラミング言語よりも人間の言語に似ている必要があるということです。同様に、の代わりにequals 、の代わり==割り当てます=。この背後にある理由は、たとえば、代入演算子と等価演算子が言語によって異なるためです。

于 2010-03-22T02:51:50.420 に答える