捕虜! – ウィキペディア

before-content-x4

捕虜! (プログラマーはワークベンチを開きます) [初め] Oberon-2で書かれたプログラミング環境です。 OberonとOberon-2は、Pascalプログラミング言語のさらなる開発を一貫して進化させていますが、中間ステップモジュラ-2もあります。統合された開発環境は、Forerunner Turbo Pascalのアイデアに似ています。捕虜! 1990年代に、主にMicrosoft WindowsのMühlbacher教授の指示の下で学生によって、Linzのヨハネスケプラー大学で開発されました。捕虜!無料で入手でき、ソーステキストは両方ともホームページにあります [初め] Githubで見つかりました。 [2] インストーラーはWindows 10で簡単に開始することはできませんが、Linux(Debian 10、Buster)の下にあるWine(バージョン4.0)でインストールされたバージョンは問題なく開始します。捕虜!プログラミング言語Oberon-2、C、C ++、およびJavaをサポートします。 [3]

after-content-x4

捕虜!主に、シンプルで複雑な数学的プログラムをプログラミングするのに適しています。シンプルなグラフィックオプションは、ターポリンモジュールの色でもプログラムできますが、複雑なグラフィック指向のプログラムはありません。オブジェクトとグラフィックスのプレゼンテーションには高いコンピューティング能力がかかるため、多くの時間がかかります。捕虜!その単純な構造にもかかわらず、オブジェクト指向と再帰のプログラミングが適しています。これは、プログラムが事実をより速く解決できることを意味します。このプログラミング言語の強さは、複雑なプログラムを含むタスクの履行にあります。一方、プレゼンテーションは、テーブルや同様のテンプレートのオプションがないため、より困難です。シンプルで複雑なデータ型を使用することにより、必要な保管スペースを非常に低く保つことができます。さまざまなモジュールに分割することにより、タスクは既存の資金でさまざまな方法で最もよく満たすことができます。必要な関数のみがアクティブになります。これにより、ラムとアルゴリズムを緩める時間を節約できます。

ディスプレイモジュールのシンプルな数学プログラム

プログラムはいくつかのサブプログラムに分割でき、これには異なるモジュールが含まれます。モジュールは、準備が整った部分プログラムまたは自己執筆プログラムになることができます。各サブプログラムは、他のモジュールで再度呼び出すことができる個別の手順で構成できます。

モジュール [ 編集 | ソーステキストを編集します ]

オベロン・パウ!多くのシンプルで複雑なモジュールがあります。ディスプレイ、インポート、エクスポート、サイン、数字、テキストなどの簡単なモジュールを使用して、発行できます。 ColorPlaneモジュールを使用して、オブジェクトをグラフィカルに表示できます。円などの複雑なグラフィックオブジェクトを計算して使用する必要があります(ピクセルワイズ)。これは、長いコンピューティング時間につながります。したがって、捕虜!そのようなオブジェクトの出力にはむしろ不適切です。他のモジュールを使用することにより、ルートなどの関数が可能です。時間を決定、保存、保存、または乱数を決定します。ユーザーは最初からPOWのそばにいます!すでにいくつかのモジュールが利用可能です。 [4] 一方、一部のモジュールは独自のウィンドウを作成し、他のウィンドウの表現を提供しますが、純粋な算術操作のみを目的としています。

ターポリンモジュールの色で4勝

SO -CALLEDの「基本的なビルディングブロック」は次のとおりです。

after-content-x4
  • 文字列
  • 浮く
  • utils
  • oobase
  • パラメーション
  • プロセス

次に、特定の「ユーザーインターフェイス」があります。これらは、文字とグラフィックの出力に必要なモジュールです。

さらに、入力されたファイルを保存および充電するためにモジュールを使用できます。
この「ファイルシステムアクセス」には次のものが含まれます。

OUTモジュールのASCIIコードの出力

捕虜!また、エディションを印刷できるようにするモジュールもあります。
これは、次のモジュールに含まれています。

最後に、捕虜は持っています!いわゆる「Oakwookガイドラインに従って互換性モジュール」に割り当てることができる他のモジュールを介して。
これらには以下が含まれます:

Powからのものではない他のモジュールがあります!利用可能ですが、無料でロードし、使用し、さらには変更できます。これらのプログラムはマイケルW.キューンによって開発され、名前で実行されました MKソフトウェア [5] 次のモジュールが利用可能です。

  • MKタートル [6]
  • ストップウォッチ
  • ランダムジェネレーター [7]

手順 [ 編集 | ソーステキストを編集します ]

手順は、ソーステキストをより明確にするために役立ち、繰り返しのタスクを数回書く必要はありません。手順は、情報を受け入れて発行し、特定の条件を変更できます。より多くのパラメーターが受け入れられるほど、手順をより広範囲に使用できます。

各手順は、ローカルおよびグローバル変数またはデータ型にアクセスできます。手順は、プログラミング言語が提供する個々のコマンドの賢明なシリーズから生じます。このようなコマンドは、出力または入力ボード、算術操作または研削などです。ただし、粉砕、算術操作、および変換コマンドは、どのモジュールでも外出しているモジュールで異なる場合があります。さらに、ルートを引っ張ったり、特定の座標を引き渡すなど、個々のモジュールにのみ含まれるコマンドがあります。

手順は、内部モジュールまたは外部モジュールのいずれかです。内部手順は、モジュール全体で使用できます。これを行うには、対応する手順をメインプログラムで呼び出す必要があります。さらに、他のモジュールに含まれていても、メインプログラムで手順を使用する可能性があります。これを行うには、対応する手順をリリースする必要があります。これは、Star Symbol(*)によって行われます。さらに、訪問した手順がメインプログラムを含むモジュールにインポートする必要があります。

POW!プログラムで最も重要な手順は、メインプログラム(Progmain*)です。このプログラムはこの問題を担当しています。メインプログラムでは、使用される手順は、それらが使用されている他の手順を通じて直接的または間接的に呼び出されなければなりません。メインプログラムは、コンパイラとWindowsインターフェイスと通信します。したがって、それも公開する必要があるため、スターシンボルで拡張されます。

コマンド [ 編集 | ソーステキストを編集します ]

各プログラミング言語は、手順とソーステキストを賢明なものにするコマンドで構成されています。このようなコマンドは、モジュールに依存するか、プログラミング言語で指定することができます。モジュールに応じて、コンテナまたは出力スタイルはそうです。これらは異なるモジュールとは異なります。ただし、繰り返しの指示、価値の割り当て、選択手順は独立しています。値割り当ての場合、データ型に応じて、特定の状態または値が変数に割り当てられます。
繰り返しの指示は、特定の条件を待つか、終了条件が適用されるまで自分自身を繰り返すのに役立ちます。これらの指示の中で最も単純なのは、ループ用です。最初から特定の数の実行が指定されています。ループの内容は、繰り返しの数に達するまで繰り返されます。 2番目のタイプの繰り返し指示は、繰り返しステートメントです。このループは、解体条件が未スタイルに適用されるまで実行されます。このループは少なくとも一度は経過することに注意する必要があります。対照的に、whileループがあります。最初は、粉砕走行の条件が当てはまるかどうかをチェックします。この命令は実行できません。選択条件が適用されない場合、ループは実行されません。最後のオプションはループです。この命令には終了条件がなく、別のテストでキャンセルする必要があります。テストが結果をもたらすと、コマンドに出口が与えられ、このループが終了します。

別のタイプのコマンドは、選択手順です。それらにはケースが含まれます。ケースステートメントを使用すると、変数が対応する条件の1つを満たすかどうかを確認します。ソリューションに応じて、上記の「ブランチ」が実行されます。 IFステートメントは、条件が真であるかどうかを確認することです。条件が適用される場合、IFステートメントの内容が実行されます。それ以外の場合は、他のブランチが実行されます。これが利用できない場合、命令はスキップされます。

他のいくつかのプログラミング言語とは対照的に、Oberon-Powは必須です!情報が保存されるデータ型。手順と同様に、他のモジュールのデータ型もリリースできます。変数を調整するには3つの方法があります。最初のオプションはローカル契約です。変数は手順にのみ使用できます。補助変数(実行変数)は、特にローカルで合意されています。 2番目のオプションは、データ型のグローバルな決定です。変数は、メインプログラムで、または最初の手順の前に決定する必要があります。これらの変数は、モジュール全体で使用でき、ストレージスペースの割り当ての大部分を表します。3番目のタイプの変数は、すべてのモジュールで使用できます。手順と同様に、それを行う必要があります。変数は、Star Symbol(*)で放出する必要があり、変数が決定されるモジュールをインポートする必要があります。このタイプの割り当ては、いくつかのモジュールを介して機能する長いプログラムに対して実行されます。

簡単なデータ型 [ 編集 | ソーステキストを編集します ]

単純なデータ型は、1つの値のみを保存できるものです。ファイルの種類を区別します。

次の構造は単純なデータ型です。

タイプ エリア メモリの要件 ファイル構造のタイプ
shortinteger -128〜127 1バイト 整数
整数 -32768〜32767 2バイト 整数
Longinteger -2.15*E9 BIS 2.15*E9 4バイト 整数
本物 -3.4*e28〜3.4*e28 4バイト 実数
ロングリアル -1.79*e308〜1.79*e308 8バイト 実数
ブール 真/偽 1バイト 真実
キャラクター ASCIIコード32–255 1バイト ASCIIコードのサイン
設定 0から31までの数値 マックス。 64バイト 特定の操作には必要です

個々の単純なデータ構造を他の抽象データ構造に変換する可能性があります。これらのコマンドは外部モジュールであり、常に使用できます。

抽象データ型 [ 編集 | ソーステキストを編集します ]

複雑なデータ型には、単純なデータ型と複雑なデータ型の両方を含めることができます。
これは可能です

配列 [ 編集 | ソーステキストを編集します ]

配列は一連の単純なデータ型です 同じタイプの 。配列、リスト、マトリックス、文字列は、そのような複雑なデータ型です。配列は、体系的に番号が付けられた事前に決められた数の要素で構成されています。つまり、各要素に数値を割り当てることができます。この要素の内容は、保存されたファイルです。一方、リストには、「占有」と同じくらい多くの要素のみが含まれています。これにより、ストレージスペースを節約できます。ただし、要素には番号が付けられていません。要素のコンテンツに到達するには、リスト全体を上記の要素に渡す必要があります。
文字列は、単語、文、さらにはテキストでもあります。それは一連のキャラクター、つまり個々のキャラクターのシリーズです。このフィールドの長さは、フィールドのタイプによって事前に決定されます。その数でアクセスできます。したがって、文字列は文字の配列です。この配列の各フィールドのコンテンツはサインです。マトリックスは、各要素に配列が含まれる配列です。 1次元ストレージスペースの決定は、2次元になります。
データ型のタイプは事前に定義する必要があります。

kette = array 20 of Char; 

現在のファイルタイプは20の要素のチェーンであり、これにより番号付けは0から始まり、そのうち各要素が文字です。このデータ型は変数として合意する必要があります

var 2要素:2; 

たとえば、呼び出しは次の方法です。

2つの要素[2]:= "w"; 

「w」値は、チェーンから2番目の要素に割り当てられます。

マトリックス [ 編集 | ソーステキストを編集します ]

マトリックスは、フィールドに及ぶ2つの配列です。各フィールドは、たとえば([1,3]または[45,2])などの2つの数値で正確に定義されます。マトリックスは、列と線のあるシステムが必要な場合に特に使いやすいです。このデータ型のすべてのデータには、同じ形式が必要です。これは事前に定義する必要があり、単純なデータ型に対応する必要があります。ただし、列の数は行の数とは異なります。マトリックスは拡張配列であり、配列間でカウントできます。
マトリックスは次のように合意できます。

integerのタイプkette =配列20,14。 

ここでは、すべての要素に正確にアクセスできます。これは本当の意味でのマトリックスです。データ型としてすべての配列に配列を割り当てることもできます。ただし、要素にのみアクセスできます。配列の個々のリンクは、各要素にアクセスできません。配列とマトリックスの間の一種の接続のこのデータ型は、次のように宣言されます。

integerのタイプ要素=配列20;
     matrixArray =要素の配列14; 
ハイブリッドになる:マトリックスアレイ。 

ここで、各要素にどのタイプのデータ型を保存できるかに注意してください。この場合、これは整数の数です。
利点は、配列「要素」も個別に使用できることです。

ElementArray:Elements。 

合意により、配列「要素」はさまざまな目的に使用できます。

記録 [ 編集 | ソーステキストを編集します ]

一方、レコードは、異なるデータ型間の接続です。また、配列または単純なデータ構造を含めることができます。レコードは、既存のデータ構造の中で最も複雑です。異なるデータ型を含めることができ、正確に絞り込むことができます。レコードは常に変数.RECORDメンバーで呼び出されます。この点は、レコードを含む変数とレコードに含まれる変数の間の分離を作成します。

レコードも事前に決定されなければなりません。

タイプ例=録音名:チェーン;
                        年齢:整数;
                        アクティブ:boolean;
                 終わり; 

レコードは変数に割り当てる必要があります。変数は再び配列になりますが。これは、配列に毎回同じデータ型が含まれるため可能です。

タイプRecordArray = array-10-of-beispiele;
var wikirecord:RecordArray; 

これにより、10のレコードのチェーンが作成され、アレイが含まれます。
最初にコールは配列のように行われ、その後レコードの呼び出しが添付されます。

wikirecord [5] .name [2]:= "g";
wikirecord [5] .alter:= 23; 

レコードを含むチェーンの5番目の要素が選択されています。レコードメンバーの「名前」は、この要素によって選択されます。 1つの記号のみが決定されるため、これは密接に対処できます([2])。単語を書き留める可能性もあります。これは次のようになります:

wikirecord [5] .name:= "hallo wiki"; 

このような複雑なデータ構造の助けを借りて、非常に複雑な問題を解決することが可能です。例を示すと、たとえばマップを作成できます。

リスト [ 編集 | ソーステキストを編集します ]

抽象的(または複雑な)データ型の最後の形式はリストを表します。ただし、配列に基づいていますが、基本的に異なります。必要な数の要素しかありません。リストを使用すると、要素には番号が付けられておらず、要素に直接制御できません。

捕虜で!リストの合意のように見えます:

タイプリスト時間=データ要素へのポインター。
     データ要素=記録コンテンツ:整数;
                           次:ヒッチを聞いてください。
                    終わり; 

「ポインター」は、データ要素を指すポインターです。ポインターは、どの要素を起動するか、どのストレージスペースが最初のプログラムであるかを伝えます。変数「次の」は、次の要素を指すポインターです。ファイルは「コンテンツ」に保存されます。最後のポインターは最後まで指し示さなければなりません。これは捕虜にあります!固定された「ナイル」の複合体が与えられた。最初に要素を発行することがわかっている必要があります。各要素には、探しているコンテンツが含まれているかどうかが確認されます。この検索方法により、アクセスがよりゆっくりと複雑になります。必要に応じて、これのために多くのスペースが予約されているだけです。

手順要素検索(var a:list pointer; n:integer);
Var Lauf、Hilf:listenpigas;
始める
    実行:= a;
    while run.next#nil do
        実行する場合。コンテンツ= nその後
            display.writestr( "found element");
            display.writes;
        終わり;
        lauf:= lauf.next;
    終わり;
END ELEMENT検索。 
手順要素検索(var a:list pointer; n:integer);
Var Lauf、Hilf:listenpigas; E:整数;
始める
    実行:= a; E:= 0;
    while run.next#nil do
        実行する場合。コンテンツ= nその後
            E:= E+1;
        終わり;
        lauf:= lauf.next;
    終わり;
    D.Writestr(「望ましい値は価値がありました」);
    d.writint(e、3);
    D.Writestr( "Found");
END ELEMENT検索。 

ここには要素が求められています。ユーザーは、探している値/条件を入力できます。変数「n」はこの値に割り当てられます。その後、リストは、要素が探しているコンテンツを持っているかどうかを体系的に検索します。そのような要素が見つかるたびに、「見つかった要素」という文が発行され、線が下がっています。 2番目のバリアントでは、「ヒット」の数がカウントされ、発行されます。
このタイプのリストの使用は、保存されたファイルの数を常に変更している場合、またはソーステキストを変更する必要なく、さらに拡張する場合に特に便利です。

このプログラミング言語またはそのアプリケーションには、いくつかの制限があります。

  • モジュールごとに限られた数の文字のみが可能です。この数字を超えると、コンパイラプログラムが失敗し、書かれたプログラムにエラーが含まれているかどうかを確認できません。まだコンパイラ機能をオフにすることから始めますが、これは推奨されません。プログラムは、部分プログラムに、個々のモジュールに分割する必要があります。
  • データ型への分割は、計算の問題をもたらす可能性があります。これは、多くの整数からルートを引っ張るときに実数になる可能性があります。
  • プログラムに入力されたファイルの保存とロードは非常に複雑です。したがって、これは主に、以前の計算の結果が重要でないプログラムにのみ適しています。
  • 画像のプレゼンテーションが可能です [8] ただし、すべてのピクセルが計算されます。同じことが複雑な数学的な数字または日陰にも当てはまります。
  • 複雑すぎる再帰は、プログラムのクラッシュにつながる可能性があります。
  • コンパイラは、特に非常に複雑なプログラムでは、誤った修正の提案を示すことができます。
  • Mühlbacher、Reisch、Kreuzeder: Windowsの下のOberon-2を使用したプログラミング 。ハンサー、ミュンヘン /ウィーン1995、ISBN 3-446-18406-6
  1. a b 捕虜! – プログラマーはワークベンチを開きます
  2. Github/Spirit of Oberon/Pow 2020年7月にアクセス
  3. POWプロジェクト! (MicrosoftWord; 1.5 MB)2011年6月にアクセス
  4. POWのモジュール!
  5. マイケルキューンソフトウェア
  6. MKタートル
  7. 捕虜!ランダムジェネレーター
  8. 画像ファイルのプレゼンテーション 記念 オリジナル 2010年1月1日から インターネットアーカイブ )) 情報: アーカイブリンクは自動的に使用されており、まだチェックされていません。指示に従ってオリジナルとアーカイブのリンクを確認してから、このメモを削除してください。 @初め @2 テンプレート:webachiv/iabot/www.cz.j.th.schule.de
after-content-x4