2019-2020-1学期20192417「サイバースペースのセキュリティ専門家の紹介、」学習要約の第3週

第4層のプログラミング

第6章、低水準言語と擬似コード
に「コンピュータシステムは何か」「どのようにコンピュータシステムを使用する。」からフォーカス

6.1コンピュータの操作
1.コンピュータを定義するには:コンピュータは、格納、検索およびデータを処理するためのプログラム可能な電子デバイスが可能です。
2.データのコンピュータ処理を変更するには、命令のみを変更する必要があります。
3.ストレージは、コンピュータの検索および処理動作は、データ上で実行することができます。
マシンレベル4.、プロセスは、データ値に算術演算及び論理演算を実行することを含みます。

6.2機械語
プログラミング1.コンピュータ命令の実行は、本当に機械語命令、コンピュータのハードディスク内の命令で書かれています。
2.機械言語(機械語):バイナリコード言語を構成するコンピュータで実行される直接使用することができます。
3.あまりにも多くの時間がこのようなプログラムを書くことが主な理由は、機械語で書かれているいくつかのプログラムがあります。

ペップ/ 8:仮想マシンの
設計された重要な機能をシミュレートするために、実際のマシンに仮想マシン:仮想マシン(仮想計算機(マシン))1。
2.Pep / 8 39機械語命令。これは、各ペップ/ 8のプログラム命令は、これらの配列の組み合わせによって得られなければならないことを意味します。
ペップ/ 8には、重要な機能を反映している:
メモリセル1.Pep / 8は、ストレージスペースの65,536バイトで構成されています。これらのバイトは0から65535(10進数)に番号が付けられています。ワード長ペップ/ 8は、2バイト、または16ビットです。算術/論理ユニット(ALU)または算術/論理ユニットデータから流出するデータのような流れは、長さが16ビットです。
:/ 8 3.Pepは7つのメモリを持って、我々は彼らの3に焦点を当てて
実行されようとしている次の命令を含むプログラムカウンタ(PC)のアドレス。
命令のコピーを含む命令レジスタ(IR)は、実行されます。
アキュムレータ(レジスタ):特定の記憶レジスタ。

命令形式の
命令は、2つの部分、すなわち、8ビット命令指定子(オプション)16ビットオペランド指定子から成ります。
位置指令指定子は何をすべきかとオペランドを解釈する方法を説明しました。オペランド指定子(第二及び第三のバイトに格納された命令)は、オペランドのアドレスであるか、またはそれ自体をオペランド。いくつかの命令は何のオペレータ指定子を持っていません。
3ビット・アドレッシング・モード指定子:
即値アドレッシング(I)、(000):命令オペランド指定子は、オペランドに格納されています。
ダイレクトアドレッシング(D)(001):メモリオペランドアドレスに格納された命令名の動作指定子が配置されています。
オペランドが単項命令を言及していない、これらの命令の指定が操作されていない、つまり、メタ命令シンボル長は1バイトです。

命令のいくつかの例
0000:実行を停止
1100:レジスタオペランドロード
1110:レジスタAの内容をオペランド格納される
オペランドレジスタAが追加されている:0111
:1000、レジスタAの値が減算されます操作数の値
01001:文字入力オペランド
01010:文字出力オペランドから

例6.3プログラム
例:画面上の表示「こんにちは」。シックス・指示:5文字表示のため、終了指示のためのプロセス。
それは4ビットのオペコードから成るので、我々は指定子とアドレッシングモード指定子3コンフィギュレーションレジスタ、バイナリ演算子指定子を構築しました。
私たちは、このような「こんにちは」などの文字のグループを参照するために二重引用符を使用して、単一引用符を使用するための単一の文字を指します。

6.3.1手動によるシミュレーション

6.3.2ペップ/ 8シミュレータ
各バイト間のスペースで区切られたバイトの16進コード、プログラムを終了するZZにより入力バイトを必要とするプログラムを実行します。
ローダ(ローダー):機械語の部分を読んで、それをメモリにロードするためのソフトウェア。

6.4アセンブリ言語
アセンブリ言語(アセンブリ言語):低レベルの言語は、ニーモニックは、特定のコンピュータの機械語命令を表します。
アセンブラ(アセンブラ):アセンブリ言語プログラムはマシンコードプログラムに変換されます。

6.4.1ペップ/ 8アセンブラ言語
ペップ/ 8アセンブラ言語において、各レジスタは、オペランドは16進数、記述0X、文字IまたはDによって記述モード指定子をアドレス指定され、オペレーションコードを有しています。
ペップ/ 8アセンブリ言語ニーモニックDECIとDECOを提供し、それは私たちは、小数点入力と出力を行うことができます。

6.4.2アセンブラ命令を
翻訳するための命令とプログラムによって使用される命令の翻訳:命令の2種類があります。
アセンブラ命令(アセンブラディレクティブ):コマンドインタプリタを使用。

アセンブリ言語のバージョン6.4.3こんにちはプログラムの
コメント(コメント):読者のためのプログラムの説明文。
入力アセンブラは、アセンブリ言語で書かれたプログラムであるマシンコードの出力で書かれたプログラムです。

新しいプログラムを6.4.4

6.4.5プログラムは分岐を有している
プログラムカウンタは、プログラムカウンタを変更することができ、次に実行すべきBR命令のアドレスに設定されていることが示されています。

循環プログラム6.4.6
カウンタ(カウンタ):メモリバンク0のいずれかで。(ハッシュマーク)

6.5表現アルゴリズムの
アルゴリズム(アルゴリズム):和解計画やプログラムの概要、または問題を解決するためのステップの論理的順序。
擬似コード(擬似コード):算術表現言語。

6.5.1擬似コード関数
ない特定の擬似コードの構文規則であるが、しかし、次の概念表現しなければならない:変数の割り当て、入力/出力、選択およびリピート。
ブール式(ブール式):真または偽式として評価しました。

6.5.2擬似コードアルゴリズムの実行
6.5.3書き込み擬似コードアルゴリズムの
デスクトップチェック(机チェック):紙にデザイン全体を見に行きます。

6.5.4翻訳擬似コードアルゴリズム
の擬似コードアルゴリズムを変換する方法は、言語の種類に変換されます私たちのアルゴリズムに依存します。
アセンブリ言語範囲が制限されるため、これ擬似コードステートメントは、いくつかのペップ/ 8ステートメントを必要とします。

6.6テスト
テストプラン(テスト計画):文書化プロセスをテストする方法について説明します。
コードカバレッジ(ライトボックス)試験方法(コードカバレッジ(クリアボックス )試験) 試験方法の手順またはサブルーチン実行中のコードによって試験したすべての文。
データオーバーレイ(ブラックボックス)アッセイ(データカバレッジ(ブラックボックス )テスト): プログラムまたはサブルーチンに基づいて、すべての可能な入力データをテストするブラックボックステスト方法としてコード。
かどうかをプログラム期待される結果を検証するためのテストケースと、所定の試験計画:テスト(テストプランの実装を)達成するために計画しています。

第7章、問題解決やアルゴリズム設計

問題を解決する方法7.1

7.1.1が質問尋ねる
典型的な問題を:
私はこの問題について知っていますか?
解決策は何ですか?
どのような例外が存在しますか?
どのように私は解決策を見つけた知っているのですか?
ポリアは、リスト「それを解決する方法」:
最初のステップを:我々は問題を理解しなければなりません。
ステップ2:情報とソリューションの間のリンクを検索します。あなたは直接リンクを見つけることができない場合は、補助の問題を検討する必要があります。最終的に、解決策はする必要があります。
第三段階:プログラムの実装。
ステップ4:得られた分析ソリューションを提供しています。

7.1.2は、おなじみの状況を見つけます

7.1.3分割統治
通常、我々はいくつかの小さな単位に大きな問題を解決することができます、この原則は、コンピューティングのために特に適している:一人で解決することができる小さな問題に大きな問題を分割します。
タスクがサブタスクに分割され続けるので、それをすることができ、いくつかのサブタスクおよびサブタスクに分けることができます。各サブタスクがこれまで達成されるまで、それは、分割統治を再利用することができます。

7.1.4アルゴリズムの
アルゴリズム(アルゴリズム):限られた時間の命令の明確なセットのための問題または制限されたデータと副問題を解決します。

プロセスの解決7.1.5コンピュータの問題
コンピュータの問題解決プロセスには4つの段階、すなわち、分析と解釈段階、アルゴリズムの開発段階、実施段階及び維持期で構成されています。

分析和说明阶段
       分析                    理解(定义)问题
       说明                    说明程序要解决的问题
算法开发阶段
       开发算法             开发用于解决问题的逻辑步骤序列
       测试算法             执行列出的步骤,看它们能否真正地解决问题
实现阶段
       编码                    用程序语言翻译算法(通用解决方案)
       测试                    让计算机执行指令序列。检查结果,修改程序,知道的得到正确答案
维护阶段
       使用                    使用程序
       维护                    修改程序,使它满足改变了的要求,或者纠正其中的错误

7.1.6方法
トップダウン・アプローチは、およそ4つのステップに分けることができます。
1.問題分析
2.リストをメインタスク
の残りのモジュールの調製
4.再構築をし、必要に応じて書き換え

7.1.7テストアルゴリズム
、数学的問題解決の目標は、問題への具体的な答えを生成することで、そのため、検査結果は、答えの立ち上げをテストするプロセスに相当します。しかし、ゴールを解決するコンピュータの問題は、適切な手順を作成することです。

7.2パラメータの単純なアルゴリズムは
単純である(原子)の変数を分離することができないものであり、一つの場所に格納された値です。

の選択と7.2.1アルゴリズム

サイクルと7.2.2アルゴリズム
カウント制御ループ:
繰り返し回数をカウント1.プロセス制御ループを指定することができ、このメカニズムは、単純な録画処理ループが時間のサイクルが終了したか否かの検出を開始する前に、再び繰り返し回数を繰り返しています。
ループ制御変数と呼ばれる特殊な変数を用いて三つの異なる部分、のような2サイクル。最初の部分は、初期化される:ループ制御変数を初期値に初期化されます。第二の部分は、試験である:ループ制御変数が特定の値に達したかどうか?第3の部分は増分である:1ループ制御変数をインクリメントします。
3.whileサイクルは、テストサイクルの前に呼び出されます。
4.サイクルは決して終わらない無限ループと呼ばれています。
イベント制御ループ
1.定義:ループの繰り返し回数は、循環ループ自体内のイベントによって制御されます。
2.文がイベント制御サイクルを実施する一方で使用している場合、このプロセスはまだ三つの部分に分かれています。イベントは、初期化されなければならないイベントがテストされなければならない、イベントを更新する必要があります。

入れ子構造(入れ子構造):他の制御構造体の構造は、ネストされたロジック(ネストされた論理)として知られている制御構造を、埋め込まれています。

別の例:デジタルの平方根見つけ
レベルのステップ(抽象的ステップを):アルゴリズムの詳細手順は、依然として不明です。
具体的な手順(具体的なステップ):アルゴリズムステップの詳細は完全には明らか。

7.3複素変数
の文字列と呼ばれる手紙の中で引用されました。

7.3.1アレイ
1アレイ:均質なアイテムの有名なコレクション。
2.プロジェクトでは、収集場所のインデックスと呼ばれています。
検索、ソートおよび処理:関連アルゴリズムのアレイ3. 3つのカテゴリーに分けられます。

7.3.2レコード
レコードは名前で個別の項目にアクセスすることができ、異種のプロジェクト、のよく知られたコレクションです。
これは、整数、実数、文字列、または他のタイプのデータの組を含むことができます。

7.4検索アルゴリズム
7.4.1逐次探索
ソートされた配列の検索順序は7.4.2
7.4.3バイナリサーチ
バイナリサーチは、配列のシーケンスの先頭から前方に始めたが、配列の途中から開始されていません。
バイナリサーチ(バイナリサーチ):順序付けられたリストの検索操作のプロジェクトは、比較して、検索範囲のほとんどを除外する。

7.5注文
このセクションでは、いくつかの異なるソートアルゴリズムを記述しています。
7.5.1選択ソートの
ソートアルゴリズムの選択は、それは2つの完全なリスト(配列)のためのスペースを必要とする、シンプルですが、欠陥があります。でも、明らかに非常に高価なスペースをメモリ空間の割り当てを考慮しません。
7.5.2バブルソート
ソートソート方法1.バブルはオプションですが、最小値を検索するときに異なるアプローチで。なお、上記の元素よりも少ない場合は、要素の隣接する対を比較し、配列の最後の要素から次の要素を開始二つの要素の位置を交換しました。
2.バブルソートは、道の非常に遅い一種です。
7.5.3挿入はソート
バブルソートバブリングの処理と同様順序付け部分に要素。位置が見つかった場合、素子が配列よりも、この位置に小さな要素を挿入するために、この位置に新しい要素であろう。
現在の要素は、注文したセクションに要素です。

7.6再帰アルゴリズム
の再帰的なアルゴリズム:1つのアルゴリズムでは、随時、独自のアルゴリズムを使用して。
再帰(再帰):独自のアルゴリズムを呼び出す機能。
各再帰的なアルゴリズムは、少なくとも2つのケースがあります。基本的な状況(既知の場合に答える)と一般には、(溶液の小型版の問題を解決するために自分自身を呼び出します)。

7.6.1サブルーチン文の
コードと呼ばれる場所の名前は、ユニットを呼び出しているように見えます。
サブルーチン二つの形態、公称のコードの実行のみ特定のタスクのための1つの、一つだけのタスクを実行するだけでなく、ユニットと呼ばれる(サブルーチンから返された値)に値を返していません。

7.6.2階乗再帰的に
0〜独自の数とすべての数の積:の数の定義階乗。N!= N(N - 1)!
1. 0階乗のサイズ係数が数の階乗を計算することです。
基本的な状況がある:
(0)= 1階乗。
一般的な状況である:
階乗(N)= NFactorial(N - 1)。

7.6.3再帰的なバイナリ検索

7.6.4クイックソート
の高速ソートアルゴリズムの基本的な考え方:二つの小さなソートリストより速く、大きなリストがソートされているよりも簡単。
このアルゴリズムは、データ要素のリストからその名前を派生し、一般的に比較的速やかにソートすることができ、基本的な戦略は、「分割統治」です。
データがランダムに配置されている場合、それは良いクイックソートのソート方法です。

7.7いくつかの重要なアイデア

7.7.1情報隠蔽
情報隠蔽を(情報隠蔽):これらの詳細へのアクセスを制御する隠蔽モジュールの実践の詳細。
7.7.2抽象
情報は、抽象化の秘密の練習の隠された内容は、隠された内容の結果です。
抽象化(アブストラクション):モデルの複雑なシステム、観察に必要な詳細のみを含みます。
抽象データ(データ抽象化):論理データのビューとその実装から分離します。
プロセス抽象(手続き抽象):操作の論理ビューとその実装を分離しました。
抽象(制御抽象化):論理制御構造の図とその実装から分離します。
制御構造(制御構造):通常のフロー制御文の順序を変更するために使用されます。

物事の命名7.7.3
データと名前を処理するためには、これらの名前は、識別子と呼ばれています。

7.7.4テスト
テストはプログラミングのすべての段階で非常に重要であり、存在する二つの基本的なテストの分類:ホワイトボックステスト、コード自体に基づいて、ブラックボックステスト、テストに基づいて、すべての可能な入力値。

問題:かなりいくつかの並べ替えのために理解していない、
平方根アルゴリズム、イプシロンの初期値は、それに設定された0.001より大きくないのですか?オリジナルの憶測に加えて4で割っ乗より良いあなたがありますか?
抽象的な意味は、コンピュータアルゴリズムのフィールドは、それができようにすることですか?P154最後の段落はかなり理解していない、少し矛盾した気持ちを置きます。
トップのためのP148「の代わりに、ループを使用して、アルゴリズムを実行する」それが何を意味するのでしょうか?

おすすめ

転載: www.cnblogs.com/zjh6/p/11723216.html