TIL 02::[CS 50]C言語


🎈 この文章は「傷」プログラムに基づいて説明します!

1)C基礎


C言語



  • int main(void){}
    When(緑のフラグ)clickはint main(void){}と同じです.

  • printf("hello world");
    sayhelloは、worldのブロックと同じ役割を果たしています.hello worldを出力します.

  • #include
    stdio.hという名前のファイルを検索し、printf関数にアクセスするのを助けます.
    すなわちstdioです.hファイルを読み込み(参照)と解釈すれば簡単です.
    ライブラリの役割を果たしています.
  • 字、単語、文を「」に入れる.
    セミコロン(;)ラベルを貼る.
    printf("hello world\n"); で、nは改行(enter)として機能します.terminalで改行して可読性を高めます.

    コンパイラ



    上端に書かれたコードを「ソースコード」と呼び、そのコードをバイナリに変換して「マシンコード」と呼ぶ.
    「ソースコード」をコンピュータが理解できる「マシンコード」、すなわちコンパイルに変換する必要があります.
    ターミナルウィンドウの$記号の横にあるclang hello.cを入力するとコンパイルできます.
    clangはコンパイラhellocはファイルをコンパイルするコードを表す.
    その結果、a.outというマシンコードファイルが生成されます.
    ./a.outコマンドを入力してターミナルウィンドウで実行します.
    コンパイルプロセスについては、次の手順に従います。

    2)文字列



    ここで、askはget stringに似ています.
    get string関数がユーザー名を返すとresult変数に格納されます.
    string=単語または文
    stringを使用してデータ型を指定し、変数を指定します.
    これを形式指定者といいます.
    変数名は任意に指定できます.
    ✔割付演算子
    プログラミングの"="は、左側に右側に指定されていることを示します.
    「==」は同じことを表します.

    しゅつりょく



    printf("hello, %s\n", answer);
    変数の答えに含まれる内容は出力されなければならないので、%を使用してstringのsを貼り付けて%sを入力するとstringパラメータが得られます.
    「」(二重引用符)次の入力の答えは、この変数を使用することを示します.

  • get string関数を使用するには
    #include 使用するにはライブラリに入れる必要があります.(コンパイル可能)

  • 今コンパイルするなら?
    $ clang -o string string.c -lcs50
    -o stringはstringです.文字列c.outというマシンコードを使用して格納します.つまりstringという名前のマシンコードファイルを保存します.
    -lcs 50は「link」という接続で、-lパラメータに追加した「cs 50」ファイルの合計です.これにより、コンパイル時にcs 50ファイルに接続することができます.
    2つのコードを1つのプログラムとして実行できます.
  • もっと簡単に言えば$make string
    makeを使用する場合は、ターミナルウィンドウにその文章を入力する必要はなく、makeを使用してコンパイルするしかありません.

    3)条件文と循環


    条件文



    C言語では、変数値を
  • から1ずつスクラッチします.
    counter = counter +1;
    これは右から左への意味にも当てはまる.
    それができれば
    counter += 1; またはcounter++;使えます.

  • 条件などの末尾にセミコロンをつけない
    if文で条件文を記述し、ifカッコ内で演算子を使用してブール関数を導出し、条件出力値に基づいて出力できます.
    ブールは真と偽、true or false
    初期if文の対応する条件がtrueの場合、文を起動し、そうでない場合は、行elseまたはelse ifを読み出して出力します.

    ループ


    複文にはwhile文とfor文があります.

    helloは,worldを50回繰り返し出力するにはwhile条件下で変数i<50を与えるだけでよい.
    iが0に続くと無限出力が続くので、50の条件を設定すると、i=i+1になります.入力が必要です.
    iは0からカウントを開始し、i<50であれば0から49をカウントして50回出力する.

    文よりも設計効率の高いコードを記述する場合は、for文を記述することが望ましい.
    整数(int)の変数iに0を入れ、iが50未満の場合は対応するコードを出力する.
    出力後に再びi=i+1(出力値はtrue)となり、再びi<50となる.比較しprintfで出力します.
    この過程は繰り返される.iが50未満になるまで

    4)データ型、フォーマット指定子、演算子


    変数のデータ型

  • ブール:True、False、1、0、yes、no
  • などのブール式
  • 文字:1文字(例)「a」、「Z」、「?」
  • 文字列:文字列
  • int:整数(たとえば、5、28、-3、0
  • )、サイズまたは特定のビットを指定します.
  • long:より大きな整数
  • float:浮動小数点実数(例:3.14、0.0、-28.56
  • )
  • double:浮動小数点を含むより大きな実数
  • フォーマット指定子

  • %c : char
  • %f : float, double
  • %i : int
  • %li : long
  • %s : string
  • その他の演算子とコメント

  • +:プラス
  • -:マイナス
  • *:
  • を乗算
  • /:
  • で割る
  • %:残り
  • &および:および
  • |:または
  • //:注釈
  • 整数とエラーを出力しようとしたときの小数点表示


    printf("Your total is %.2f\n", price*1.0625);
    %fでは、fの前に必要な小数点以下の桁数を加えればよい.
    priceが100の場合、入力%.2fは106.25を出力します.

    コメント

    // 주석입니다.

    5)ユーザー定義関数、ネストリング


    カスタム関数

  • #include <stdio.h>
    
    void cough(int n);
    
    int main(void)
    {
        cough(3);
    }
    
    void cough(int n)
    {
        for (int i = 0; i < n; i++)
        {
            printf("cough\n");
        }
    }
    関数void(int n)は、入力値を受け入れるintタイプというnという変数に格納される.
    これを使用するには、main(void)ではなく
  • void check(int n)という関数に上部に言及する必要があります.
    コンピュータは上から読み始めるので、指定した関数がmain(void)の下にあるとmain(void)は「おい、void咳(intn)関数は存在しないのか?」と言います.エラー
  • しかし、設計上、コードを効率的に整理し、記述するためには、main(void)は、ファイルを最初に開くときに最上位に位置しなければならない.これにより、良好な可読性が得られる.
    プロジェクトをするときはたくさんの関数を書くので、すべてが上にあると読みにくくなります.
    したがって、関数を一番下に置き、まず一番上に関数を定義してmain(void)で読み取ると、コンピュータはそれを読み取ることができます.
    2.例
    #include <cs50.h>
    #include <stdio.h>
    
    int get_positive_int(void);
    
    int main(void)
    {
        int i = get_positive_int();
        printf("%i\n", i);
    }
    
    int get_positive_int(void)
    {
        int n;
        do
        {
            n = get_int("Positive Integer: ");
        }
        while (n < 1);
        return n;
    }
    do{}while()は条件に制限されず、少なくとも1回{}の内容を実行することができる.
    while(n<1); 次の操作を行います.
    nが1より小さい場合は、問題を繰り返します.
    whileを単独で使用する場合、whileの条件は本当でなければなりませんが、do-whileはdoに先に実行させることができます.
    int get_positive_int(void) ❓
    int get positive int(void)カッコ内のvoid入力は受け付けません.
    括弧には何も入れる必要はなく、任意の数の整数を受け入れるだけです.
    ただし、cs 50ライブラリのget stringのような関数のように、値を受信して変数に保存して戻したいので、voidではなくint(出力タイプ)を関数の前に使用します.
    intは出力のタイプ|(void)は入力のタイプ
    注意:get positive intはcs 50にない関数です.

    オーバラップリング

    #include <cs50.h>
    #include <stdio.h>
    
    int main(void)
    {
        int n;
    
        do
        {
            n = get_int("Size: ");
        }
        while (n < 1);
    
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                printf("#");
            }
            printf("\n");
        }
    }
  • 最終結果
    n個の横線、n個の縦線の「#」を出力します.