擬似コードとは何ですか?


19

最近、このサイトや他のサイトで、Pseudocodeに関する多くの言及を見てきました。しかし、わかりません。

  • 擬似コードとは何ですか?たとえば、以下のウィキペディアの記事には、「プログラミング言語の構造上の規則が使用されていますが、機械で読むのではなく人間が読むことを目的としています」とあります。これは、実際にプログラムを作成するために使用されていないということですか?

  • なぜ使用されるのですか?

  • どのように使用されますか?
  • プログラミング言語と見なされますか?(上記のウィキペディアの引用を参照)
  • 一般的に知られている/使用されていますか?

正直なところ、これからどこから始めるべきかわかりません。私はそれをグーグルで調べ、トピックに関するウィキペディアの記事を見ましたがそれが何であるかまだ完全には理解していません。


7
ウィキペディアの記事から特定の引用と質問を提供してください。あなたの質問すべてそこで答えられます。単語やフレーズを理解できない場合は、質問で特定の単語やフレーズを引用して説明してください。その記事で何が混乱しているのかを知ることは困難です。ここでその記事を繰り返すのではなく、混乱させる特定の事柄を参照できれば役立ちます。
S.Lott

@ S.Lott:終了
ダイナミック

20
while (you.doNotUnderstand(pseudocode)) { q = you.askQuestion(); a = we.answer(q); you.digestAnswer(a) }
ヨアヒムザウアー

3
if (question.IsAnswered) then you.UnderstandPseudoCode <- true
e-MEE

1
自然言語とプログラミング言語の中間に位置します-話し言葉よりは形式的ですが、実際のプログラミング言語ほど形式的ではありません。
インゴ

回答:


19

擬似コードは、その名前が示すとおり、実際のコードではありませんが、コードのように見えます。実際の言語を使用するときに必要なすべての荷物を追加することなく、問題のドメインまたはソリューションをよりよく理解するのに役立ちます。

要するに、それは説明目的のためだけに使用されます。

擬似コードとプログラミング擬似コード
の定義や固定ルールはありません。毎回異なる可能性があります。これは(実際の)プログラミング言語ではなく、誰もそれを考慮しません。コンパイルしたり、実際のプログラミング言語として使用したりすることはできません。それができれば、擬似コードではなくなります。擬似コードは決定論的である必要はなく(コンピューターがコンパイルする必要がある)、むしろ人間が理解する必要があります。擬似コードを使用するには、お好みのプログラミング言語に変換する必要があります。この変換プロセスは毎回異なる可能性があります。また、擬似コードは言論の自由のようなものであるため、ルールを指定することはできません。あらゆる形式を取ることができます。

用途
これは、一般的に、特に問題に一定のアプローチを理解するために、プロジェクトの設計段階で、使用されています。また、アルゴリズムの設計や、教師がボードに何かを描くときにもよく使用されます。これらのすべての場合、コードをコンパイルする必要はありません。問題/解決策を理解したいだけです。

擬似
コードの種類擬似コードは可能ですが、特定の種類である必要はありません。つまり、MSILを説明するスタックベースの擬似コードを使用できます。Java、C#、C ++、Pythonを説明する命令型擬似コードを使用できますF#、Haskell、SQLなどを説明する機能的な擬似コードを持つことができます。


私の頭の上からですが、その場で擬似コードを発明できるため、何でもあります:

複数のp要素を許可するhead + body構造を示すXML擬似コード:

<head ...
   <title ...
</
<body ...>
   (<p>...)+
</

多重継承をサポートする言語のダイヤモンドの問題を示す命令型擬似コード:

class A() { readFile(); }
class B() : A {}       // overrides readFile in A
class C() : A {}       // overrides readFile in A
class D() : B, C {}    // what definition of readFile should be used?

上記の2つの例は明らかにいくつかの(タイプの)言語に似ていますが、実際にはその言語ではなく、コンパイルできない可能性があります。むしろ、あなたが説明したいことを説明しています。


14
擬似コードは任意の抽象化レベルで使用できることを追加する価値があるかもしれません:アルゴリズムの特定の動作を、実際の非擬似コードに簡単に変換できる方法で説明することも、非常に高レベルの非常に広く定義された「メソッド」または「オブジェクト」を使用したいくつかのアプローチの概要。それは広いスペクトルです。
ヨアヒムザウアー

8

擬似コードとは何ですか?たとえば、以下のウィキペディアの記事には、「プログラミング言語の構造上の規則が使用されていますが、機械で読むのではなく人間が読むことを目的としています」とあります。これは、実際にプログラムを作成するために使用されていないということですか?

それはまさにそれです、それは人間に優しい形式で書かれたコードです。作業プログラムの作成には使用できません。

なぜそれが作られた/使われたのですか?

なぜなら、擬似コードは書くのも読むのも速いからです。言語固有の部分がないため、読みやすくなります。また、言語に依存しないため、誰でも読むことができます(そのため、多くの教科書で使用されています)

プログラミング言語と見なされますか?上記のウィキペディアの引用を参照してください。

いいえ。プログラミング言語には、単なる構造以上のものが必要です。正式なセマンティクスが必要ですが、これには疑似コードがありません。

一般的に知られている/使用されていますか?

はい。ジュニアレベル以上の人は、擬似コードの読み取り/書き込み方法を知っている必要があります。多くの教科書を読み、チームでコードを計画するために不可欠です。


6

wikiの記事を読んでいれば、ほとんどの質問は明確になっているはずです。ここで簡単な方法でそれらに答えようとします。次の2つの例を見てください。

パート1-例

コード#1-顧客登録-プロセスステップの例:

  1. お客様は登録画面に移動します
  2. 顧客は自分の詳細を入力します。
  3. 有効な詳細が入力された場合、顧客情報をデータベースに保存します
  4. それ以外の場合は、エラーメッセージ100のダイアログボックスを表示します。

コード#2-顧客名の検証-プログラミング機能の例

Function ValidateCustomerName(Name1)

If (Name1 is entered and Name2 is entered) then return 1

If (Name1 is not entered) 

   Send Error Message

   return 0

Endif

...

End Function

パート2-質問へ

擬似コードとは何ですか?

これは、アルゴリズムまたはプロセスのステップを記述する方法です。

なぜそれが作られた/使われたのですか?

特定のプログラミング言語や特別な表記法に依存することなく、プロセスまたはアルゴリズムのステップを表示するために使用されます。

プログラミング言語と見なされますか?

コンパイル可能ではありません。これは、特定の構文がないため、プログラミング言語ではないためです。

もしそうなら、それは例えばPythonと同じくらい能力があるのでしょうか?

あなたが望むだけの能力を持つようにすることができます。次のようなステートメントを書くことができます。IfAge is Valid ...

一般的に知られている/使用されていますか?

はい。アルゴリズムについて考えるとき、およびビジネスアナリストが仕様を提供するのに役立ちます。


@ジェ、編集に感謝します。
NoChance

4

Pseudocodeの最も良い例は、Pascalでプログラミングをしているときに、FORTRANプログラマーとオフィスを共有したときです。互いに助け合ったときはいつでもPseudocodeで書かなければなりませんでしたが、当時FORTRANを知らなかったので、構文を正しくする方法はありません(特にすべてのインデントには特定のマークの場所が必要です)。彼はセミコロンで書く必要はありませんでした。ホワイトボードでは、複雑な構文規則に縛られることなく理解できるように、疑似コードで記述しました。

擬似コードの厳密な構造はありません。作者がifステートメントの後に「{」を使用する言語を知っている場合、ボードにそれを配置します。Pythonを知っている場合は、それらを認識しません。目標は、絶対に正しいコードではなく、問題に対する基本的なアプローチをすばやくスケッチすることです。

教師はこれを使用して、正しい答えを与えることなく、生徒にガイダンスを提供できます。複数の言語を知ったら、コードの断片をスケッチするときに1つの言語の擬似コードを使用するのが自然です。


2

擬似コードは言語ではなく、規約でもありません。すべての教科書または論文は、独自のバージョンの疑似コードを使用します。他の多くの非公式の数学的「言語」と同様に、最良の場合は論文自体に非公式に記述され、最悪の場合、著者はそれが十分に「明白」であると期待します。


bestest場合には、任意の公式または非公式の説明を必要としないように、明らかに十分です;)。
アベル

@Abel、「明白な」形式主義のようなものはありません。10進算術のような「明白な」ものであっても、適切に導入する必要があります。さもなければ、残念ながら混乱は避けられません。少なくとも正式な紹介文が添付されていないあいまいな擬似コードを見たことはありません。
SKロジック

このスレッドは擬似コードに関するものです。フォーマリズムはそれとは何の関係もありません。しかし、私のコメントは「しゃれたつもり」でした;)
アベル

@Abel、抽象言語も形式主義です(少なくとも多かれ少なかれ科学論文で使用されている場合)。
SKロジック

2

擬似コードとは何ですか?

擬似コードは、基本的に、プログラムが操作を完了するために何をすべきかについての指示書です。擬似コードは、話す言語で書かれています。アルゴリズムまたは手順の手順を書き留めて、自分または他の誰かがそれを読んで実際のプログラミング言語に変換しやすくします。

なぜそれが作られた/使われたのですか?

プログラミング言語を使用せずに、手順、プロセス、またはアルゴリズムのステップを指定できるようにするために作成されました。考えられる代替策の1つは、フローチャートを使用することです。

プログラミング言語と見なされますか?

いいえ、正式な規則がないため、プログラミング言語ではありません。

一般的に知られている/使用されていますか?

個人的には、アルゴリズムや複雑な手順を書くときは常に擬似コードを使用しようとします。


0

擬似コードの私の個人的な定義は、「コードを設計するときに、紙に普通の英語で書くもの」です。

疑似コード「デザイン」からコーディングする前に、コメントとして疑似コードを追加します。次に、これらのコメントを処理して、説明したタスクを実行する「実際の」コードを追加できます。

このコーディング方法には、私が知らない正式な名前があるかもしれませんが、何か新しいことや複雑なことをするときだけ使用します。


-4

私のプログラミング講師が言ったように:

擬似コードは、あらゆるプログラミング言語の英語版です。


2
-1役に立たない。この引用は、擬似コードの説明の中でのみ意味があります(この回答にはありません)。そうしないと、誤解を招く可能性があります。初心者は疑問に思うかもしれません。まあ、C#のメソッドはすべて英語なので、私が使用しているC#はPseudocodeであるということですね...?ドイツでC#を使用しているとき、彼らはそれを何と呼びますか?
-doppelgreener
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.