ビスミ・アッラーヒ・アルラーハマニ・アルラーム
機械はバイナリのみを理解します。私たちが人間が判読できる命令のリストをコンピューターに作成すると、機械は現在マシンコードと呼ばれるものだけを理解します。この機械語コードは 1 と 0 だけで構成されています。
コンパイラと呼ばれる特別なプログラムを使用すると、ソース コードをマシン コードに変換できます。
良いコードは 3 つの基準に従って判断できます:
C プログラミング言語で画面上にテキストを印刷したい場合は、printf 関数を使用します。
#includeint main(void) { printf("salom, dunyo\n") }
printf 関数は、テキスト hello, world を出力します。その中の特殊な \ 文字は、次の文字が特殊な命令であることをコンパイラーに伝えます。次の n 記号は "改行" (改行) を意味します。
コードの最初の行の式は、stdio.h というライブラリの機能を使用することを示す非常に特殊なコマンドです。このライブラリを使用すると、printf 関数を使用できるようになります。
ライブラリは、コードで使用できる既製の関数のコレクションです。
ユーザーに名前を尋ねて挨拶するコードを C で書いてみましょう:
#include#include int main(void) { string answer = get_string("Ismingiz nima? "); printf("Assalomu alaykum, %s\n", answer); }
CS50 コース用に特別に開発された cs50.h ライブラリの機能は、このコース全体で使用されます。その 1 つは get_string 関数です。 get_string 関数は、ユーザーが入力したテキストを取得するために使用されます。
答えは、変数と呼ばれる、ユーザーが入力した特別なテキストを記憶するために予約された場所です。答えのタイプは string です。また、int、bool、char などの他にも多くのデータ型があります。
%s は フォーマット コード というプレースホルダーで、printf 関数に文字列変数を受け入れる準備をするように指示します。
他のデータ型の形式コードもあります。例:
%i は int (整数) を表します。
ユーザーに int 型の x 変数と y 変数を入力して、入力した数値を相互に比較するように依頼してみましょう。
#include#include int main(void) { int x = get_int("x ni kiriting: "); int y = get_int("y ni kiriting: "); if (x ここでは、int 型 (integer) の 2 つの変数 x と y を作成しています。それらの値は、cs50.h ライブラリの get_int 関数を使用して設定されます。条件演算子を使用して、x と y の値を比較し、結果に応じて画面にメッセージを表示します。
ブロック図は、コンピューター プログラムがどのように動作するかを確認する方法です。このメソッドを使用すると、コードの効率をチェックできます。
上記のコードのブロック図を見てみましょう:
次のようにコーディングすることでプログラムを改善できます:
#include#include int main(void) { int x = get_int("x ni kiriting: "); int y = get_int("y ni kiriting: "); if (x y) { printf("x soni y sonidan katta\n"); } else { printf("x soni y soniga teng\n"); } } 考えられるすべてのケースが考慮されます。そのブロック図を見てみましょう:
繰り返し演算子
「ニャー」を 3 回印刷しましょう:
#includeint main(void) { printf("meow\n"); printf("meow\n"); printf("meow\n"); } 私たちが書いたコードは正しく動作しますが、プログラム内の繰り返しを避けることでプログラムを改善できます:
#includeint main(void) { int i = 0; while (i この例では、int 型の変数 i が作成され、値 3 が割り当てられます。次に、i for ループを使用すると、プログラムの設計をさらに改善できます:
#includeint main(void) { for (int i = 0; i for ループは 3 つの引数を取ります。
最初の引数: int i = 0 はカウンターを初期化します。
2 番目の引数: i 最後に、引数 i は、i が 1 ずつ増加することを示します。
独自の関数を作成することもできます:
void meow(void) { printf("meow\n"); }void - 関数が値を返さないことを意味します。括弧内 (空白) - 関数がパラメータを受け入れないことを意味します
。 作成したこのニャー関数をメイン関数内で使用します:
#includevoid meow(void); int main(void) { for (int i = 0; i 関数プロトタイプはコードの先頭に void meow(void) として指定されているため、メイン関数内で meow 関数を呼び出すことができます。
算術演算子と抽象化
C で電卓を作ってみましょう:
#include#include int main(void) { // x qiymati kiritilsin int x = get_int("x: "); // y qiymati kiritilsin int y = get_int("y: "); // Qo'shish amalini bajarish printf("%i\n", x y); } get_int 関数は、ユーザーに整数変数 x および y の値を入力するように求めます。次に、printf 関数は、整数の形式コード (%i 記号) を使用して x y の値を出力します。
算術演算子は、コンパイラによってサポートされる数学演算です。 C の算術演算子には、
があります。
- - たす;
- - - 減算;
- * - 乗算する
- / - 除算の場合;
- % - ある数値を別の数値で割ったときの余りを計算します。
抽象化は、問題をより小さな部分に分割してコードを簡素化する技術です。
上記のコードを次のように抽象化できます:
#include#include int add(int a, int b); int main(void) { // x qiymati kiritilsin int x = get_int("x: "); // y qiymati kiritilsin int y = get_int("y: "); // Qo'shish amalini bajarish printf("%i\n", add(x, y)); } int add(int a, int b) { return a b; } ここでは、整数 a と b をパラメータとして受け入れてその合計を返す別の加算関数が宣言されており、メイン関数で整数 x と y を引数として受け取ることによって add(x, y) 関数が呼び出されます。
コメント
コメントはコンピュータ プログラムの基本部分であり、他のプログラマや自分自身に対して明確かつ簡潔に作成するコメントで、作成したコードが何を行うのかを説明します。コメントを書くには 2 つの // タグを使用するだけです:
#include#include int main(void) { // Musbat butun son kiritilsin int n; do { n = get_int("Musbat butun son kiriting: "); } while (n データ型
データ型 は、変数に格納できるデータの種類を指定します。たとえば、変数には数値、文字、またはブール値を格納できます。変数の型は、そのデータの処理方法をコンピューターに指示します。
C の一般的なデータ型は次のとおりです:
- bool: true (true) または false (false) などのブール値を保持できます。
- char: 1 文字だけを格納できます。
- float: 10 進数値の実数。
- int: 小数点のない整数。
- long: より多くのビットを使用するため、int よりも大きな整数を格納できます。
- string: 一連の文字 (単語など) を保存できます。
それぞれの種には独自の制限があります。たとえば、メモリの制限により、int の最大値は 4294967295 になる可能性があります。最大値を超えて int をカウントしようとすると、変数に無効な値が格納されます (整数オーバーフロー)。
メモリを不適切に使用すると、コードにエラーや問題が発生する可能性があります。問題を回避するには、正しいデータ型を使用していることを確認する必要があります。この記事では CS50x 2024 のソースを使用しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3