3週目.整列


CS 50 3週間コースリンク
このコースは、コンパイル、デバッグ、編成に関するコースです.

コンパイル

#include <stdio.h>

int main(void)
{
	printf("Hello, world!\n");
}
stdio.hはc言語で作成されたヘッダファイルである.コンパイラがプログラムをコンパイルする際のprintfの役割を示すコードが含まれています.
コンパイル手順4
  • 前処理
    Cソースコードについては,実際にコンパイルする前にそのファイルの内容を含まなければならないことをプログラムヘッダの,~~部分で知らせることができる.Javaは、前処理機能を提供するのではなく、classをインポートしたり定数を宣言したりすることでインポートします.
    コメントリンク
    https://groups.google.com/g/han.comp.lang.java/c/0nwDzNyNAMI
    https://soolper.tistory.com/9
  • コンパイル
    ソースコードをコンポーネントに変換するには.既存のソースコードをアセンブリコードに変換し,コンピュータが理解できる言語に最も近いプログラムとする.
  • 組立
    コンポーネントコードをマシンコードに変換します.
  • リンク(リンク)
    現在のソースコードと前処理中に含めるべきファイルを0と1の大きなファイルにマージします.
  • デバッグとコード設計


    コード内のエラーを識別して修正します.デバッガという名前のプログラムでデバッグすると、デバッグ時にプログラムが停止すべき点を指定するために終了点(ブレークポイント)を選択できます.
    Rubber Duck Debugging
    致命的なエラーが発生した場合、誰かに尋ねる前にテーブルの上のアヒルに問題を説明し、問題を再解決する方法.ちょっとうろたえる方法ですが、発生した問題について最初から説明すれば、自然に原因を再定義することができます.
    実際の作業では,コードに問題があるかどうかを継続的にチェックし,ある程度以上の可読性を維持してメンテナンスを行う必要がある.同じプロジェクト内でコードを書くにはルールや約束が必要で、実際には多くの企業がコードを書くときに特定のスタイルガイドに従うという.우리 회사는 따로 스타일 지침이없던데...DB의 컬럼명에 대해서는 주제영역,데이터사전을 만드는데 이것도 코드디자인에 포함되는 부분인가??

    整列


    データ型ごとに異なるサイズのメモリが消費されます.
  • boolean:ブール、1バイト
  • 文字:文字、1バイト
  • int:整数、4バイト
  • float:実数、4バイト
  • long:(より大きい)整数、8バイト
  • 倍:(より大きい)実数、8バイト
  • 文字列:文字列、?バイト
    コードに宣言されたデータ型は、コンピュータのRAMという物理チップに格納されます.
    ≪配列|Array|emdw≫:同じデータ型のデータをメモリに連続的に格納し、変数として管理します.
  • #include <cs50.h>
    #include <stdio.h>
    
    int main(void)
    {
        // Scores
        int score1 = 72;
        int score2 = 73;
        int score3 = 33;
        // Print average
        printf("Average: %i\n", (score1 + score2 + score3) / 3);
    }
    上のコードについては,動的にスコアを得ることができず,配列が3に設定されているため,4以上のスコアを得ることができないので,より動的に変更してみる.
    #include <cs50.h>
    #include <stdio.h>
    
    float average(int length, int array[]);
    int main(void)
    {
        // 사용자로부터 점수의 갯수 입력
        int n = get_int("Scores:  ");
        // 점수 배열 선언 및 사용자로부터 값 입력
        int scores[n];
        for (int i = 0; i < n; i++)
        {
            scores[i] = get_int("Score %i: ", i + 1);
        }
    
        // 평균 출력
        printf("Average: %.1f\n", average(n, scores));
    }
    //평균을 계산하는 함수
    float average(int length, int array[])
    {
        int sum = 0;
        for (int i = 0; i < length; i++)
        {
            sum += array[i];
        }
        return (float) sum / (float) length;
    }

    文字列と配列


    文字列は文字(char)のデータ配列を表す.すなわち、文字列には文字数に等しいバイト数が必要である.Cの場合、文字列の末尾には空の終端記号("0")があり、メモリ内の他の変数の始点を前の変数と区別するために使用され、8ビットが0です.

    Javaでは、空の終端子ではなく、文字列の長さを格納する方法を使用します.
    コメントリンク

    レッスン終了!💯