>> ZAMYLA CHAN：おめでとう あなたの仕上げに
Cプログラムの最初のカップル。
私が知っているあなたの最初の進出に C言語の構文は、困難なことができます。
しかし、私の最後に、お約束いたします もちろん、あなたは見てできるようになります
割り当ての最初のカップルと 数分でそれらを完了。
>> 今、あなたはより身近取得していることを 構文で、カエサルにましょう。
シーザーでは、ユーザーは提出します コマンドラインとして整数キー
引数、その後平野を入力してください プロンプトでテキストメッセージ。
プログラムは暗号化するでしょう テキストとプリント
その暗号文メッセージ。
>> シーザーのために暗号化 非常に簡単です。
自分では、各文字をシフト キーによってプレーンテキスト、。
結果として、それはまた、周辺 かなり安全でない。
しかし、シーザーを実装する紹介します 当方ASCIIMathと配列データへ
構造。
私たちは、より複雑に買ってあげる 後で暗号。
2のシーザーキーの文字で プレーンテキストは次式で表されます
暗号文の文字のCなぜならC A. Bの後に2文字は次のようになりますです
向けE.によってDとCで表さ アルファベットの最後、Wは
しかし、Z. YによってY、およびXで表される そう、それの後に2文字を持っていない
暗号は、アルファベットを包み込む。
プレーンテキストでは、このようにYで表される。 B.それは可能性によって暗号文、およびZで
のようにシーザーサイファーを表示するために役立つ 連続アルファベットホイール。
>> 彼らのテキストは、ユーザを暗号化するには 二つの引数を入力します
コマンドラインに -
。/シーザーは、キーが続く。
いつものように、私たちは、ユーザーを信頼することはできません 完全に作る入力を入力する
私たちのプログラムのための感覚。
だから我々は彼らを検証する必要があります コマンドライン入力。
>> 代わりにint型のメイン空間を使用するのでは、我々はしている int型のmainはint argcは、文字列ARGVを使って。
のargcが表す整数変数 に渡された引数の数
コマンドライン。
とargvは次のように配列であるか、それを考える 引数のリストが渡された
>> だからシーザーのために、我々はどのように検証するか ユーザーの入力？
まあ、彼らは唯一の入力すべきである 2つのコマンドライン引数 -
。/シーザーとキー。
argcは2でない場合、だから、それはつまり、 それらのいずれかのキーを忘れてしまったし、ちょうど
入力。/シーザー、またはそれら 複数のキーを入力した。
>> これが事実である場合は、よ 手順を印刷したい
とプログラムを終了します。
彼らは再試行する必要があります コマンドラインから。
しかし、argcは2であっても、あなたはよ 彼らかどうかを確認する必要があります
あなたに有効な鍵を与える。
シーザーでは、整数値を必要とする。
しかし、ARGVは、文字列の配列です。
どのようにして、そのキーにアクセスできますか？
>> 配列で簡単に見 -
複数保持するデータ構造 同じデータ型の値。
エントリはゼロインデックス付きであることを意味 最初の要素のインデックスはゼロです
最後の要素は、インデックスサイズである サイズは数あるマイナス1、
配列内の要素。
>> 私は、新しい文字列配列のメールボックスを宣言した場合 長さ3の、視​​覚的に、それ
このように見えます。
文字列の3つのコンテナ 、サイドバイサイド。
任意の要素にアクセスするには、名前を入力します 配列の、次に示す
角括弧内のインデックス。
ここで、私はそれぞれに値を代入しています 私はすべてで行うのと同じように要素、
他の文字列変数。
>> だから我々のコマンドライン引数にアクセスするには、 私たちがしなければならないすべてはアクセスです
argv配列の右側の要素。
ユーザーは、。/打ち上げチームを入力した場合 端子にロケット、argvは0だろう
。/打ち上げである。
ARGVはチームとなり arg2にはロケットでしょう。
>> 今、我々は我々のキーにアクセスできることを、 我々はまだ確認する必要があり
それが正しいことを確認してください。
我々は、整数に変換する必要があります。
しかし、我々は同じようにキャストすることはできません 我々は以前にやった。
幸いにも、へY機能が面倒を見る 私たちのためにこれを、さらには0を返します
文字列は、変換できない場合 整数に変換します。
それは伝えるために、しかし、あなた次第です ユーザーは、なぜあなたはしません
プログラムを続行することができます。
でYにした結果を格納する 整数、あなたのキーをそこに持っています。
次の部分は簡単です。
、彼らのプレーンテキストの入力をユーザーに促す どのデータ型の文字列になります。
幸いにも私たちのために、すべてのユーザーが入力した 文字列は有効です。
>> 今、我々は必要なすべての入力を持っていること ユーザから、それは私たちにとっての時間だ
彼らのメッセージを暗号化。
シーザーの概念は単純です 理解するには十分。
しかし、どのようにコンピュータが知っている 手紙は、互いの後に来る？
>> ASCIIテーブルは出番ここだ
すべての文字は、整数を持つ それに関連付けられた番号。
資本金65です。
キャピタル·Bは66です。
97で小文字。
小文字のbが98である。
しかし、文字が限定されるものではない ただアルファベット番号へ。
たとえば、@記号 ASCII番号64です。
>> 文字列全体を扱う前に、 我々は単にシフトしなければならないふりをみましょう
一文字。
さて、私たちは、実際のシフトさせたい プレーンテキストの文字ではなく、
文字や数字。
我々はしたいと思うように最初に チェックは、文字が入っているかどうかです
アルファベット。
>> 関数isalphaはがためにこれを行います 私たちとブール値を返します -
文字であればtrueが、文字です そうでない場合はfalse。
他の二つの便利な機能があります isupperはとislowerは、と
自明の名前。
彼らは与えられた文字あればtrueを返す 、大文字または小文字である
それぞれ。
それらはブール値であるので、それらは同じく 条件として使用すると便利。
>> isalphaはがtrueを返した場合は、次のものが必要でしょう キーでその文字をシフトする。
それでは、ASCIIMathに開いてみましょう といくつかのASCII数学を行う。
usage使用法と非常によく似ています シーザー用とでキーに取り
コマンドライン。
>> 私はASCIIMath 5を実行する場合は、追加するようだ 5に、私に手紙fを与え、
ASCII値が表示されます。
それでは、プログラムを見てみましょう。
>> あなたは正しいここで、なぜ、疑問に思うかもしれません それは時の手紙は、整数です
明らかに、まあ、手紙。
それは、その文字が判明し、 整数では互換性があります。
単一の文字を入れて 整数が格納できる引用符、
資本のASCII値 A.は、しかし、注意してください。
単一の服が必要です。
単一引用符は必要ありません、 コンパイラは、変数を探します
キャラクターの名前ではなく、。
>> それから私は、保存、文字とキーを追加 int型の変数に結果の合計。
その結果、データ型であるにもかかわらず 整数、私のprintf文では使用してい
文字の％Cプレースホルダ。
だから、プログラムは文字を出力 整数の結果に関連付けられている。
そして、私たちは整数を印刷以来 形だけでなく、％dを使用して、我々が表示さ
数字だけでなく、。
だから今、あなたは見ることができ、私たち 文字を治療し、
整数、逆もまた同様である。
>> ASCIIMathいくつかをテストしてみましょう キーとして25を使用して複数回。
私たちは、文字Zを得る。
今我々は26を試してみてください。
私たちは、文字を取得したいが、 代わりに、我々は左のブラケットを得る。
だから明らかに、単に追加 手紙への鍵はしないだろう。
私たちは、ラップする計算式を把握する必要があり アルファベットの周りに、私たちのような
最初の例ではなかった。
>> シーザーのための式 シフトは次のとおりです。
Cは、pプラスKモジュロ26に等しい。
モジュロが有用であることを忘れないでください 私たちの余りを与える操作
他ずつ数を割った。
平野には、この計算式を適用してみましょう 2のキーを使用してテキスト文字。
yのASCII値は、89である モジュロ26は、私たちに91を与え
それは13に等しい -
間違いではないASCII値 、その67ですの。
>> 今私をユーモアとから離れる アルファベット順のインデックスにASCII値
ゼロであり、Zは、25である Yは24であることを意味する。
24プラス2、モジュロ6は、私達に26を与え あるモジュロ26、0、
のアルファベット順のインデックス。
したがって、この式では、に適用されるように見える アルファベットの文字のインデックスと
はなく、そのASCII値。
>> しかし、あなたはASCII値で始まります。
と暗号文の文字を印刷するには、 あなたにもそのASCII値が必要になります。
それは把握し、その後、あなた次第です 前後に切り替える方法。
>> たら、右の式を見つけ出す あなたがする必要がある一つの文字のために、すべての
毎に同じ計算式を適用している プレーンテキストの文字 -
その文字はアルファベットである場合にのみ、 もちろん。
そして、あなたが保持する必要があることを覚えておいてください 大文字または小文字、、だ
isupperはとislowerは機能 言及は、以前の便利になるだろう。
あなたは、2つの式があるかもしれない -
大文字のために1 と小文字のために1。
だからislowerは、あなたを助けるisupperは 適用する式を決定します。
>> どのようにすべてのへの式を適用しない 文字列内の単一の文字？
さて、文字列だけである 文字の配列。
だから、それぞれの文字にすることによってアクセスすることができます 内のすべての文字の上にグループ化
forループ内の文字列。
ループについては、の条件については、 文字列用の関数strlenは、
長さは、便利になるだろう。
それは、入力として文字列を取り込み、 その文字列の長さを返します。
右のライブラリが含まれていることを確認してください 文字列の長さの関数を使用する。
>> そして、あなたはあなたの暗号文をそこに持っています。
私の名前はZamylaです。
と[話すCODE]。