quick C言語講座
1 C言語の文法
1.1 プログラムの構造
main関数と自分で定義した関数の集まりで構成される。関数の中の変数は、関 数の中でだけで変更が有効(スコープ)となる。自作した関数は先頭て定義した 方が良いが、ソースコードでmain関数より上に自作関数を書けば、定義しなくても良い。
#include "stdio.h" (printf等の入出力関数を使うため) #define HOGE 10 (HOGEに10という別名をつける) double gr = 10; (プログラムの中のどこからでも参照できる変数) void func1(){ double a double c . . . } int func2(int a, double b){ int hoge . . . return hoge } int main(){ int a; double b; . . . return 0; }
1.2 変数定義と演算子
変数は、変数の型(整数か浮動少数等)で定義を変える。例えば以下のように整数と浮動小数用の変数のhogeとhugaを定義する。
int hoge; double huga;
定義した変数は格納されるメモリののアドレス(ポインタ)を持つ。定義した変 数のポインタを取得する場合は&の使う。またポインタ変数(ポインタを格納す るための変数)も定義できる。
int a; int* p; p = &a;
1.3 繰り返し、分岐
繰り返し処理を行ったり条件分岐を行わせるための最低限の文法として、for とifがある。1から10まで繰り返し処理を行う場合は以下のとおり。
for (i=0; i<10; i++){ 繰り返しで行う処理; }
if文で条件を使って処理を分岐させる時は以下のとおり。
if (a == 2){ hoge = 2; } else { huga = 3; }
1.4 配列
一連のデータ一を1つの変数で定義する。
int hoge[10]; hoge[0]からhoge[9]まで使える double huga[10];
1つのデータにアクセスする方法は、添え字かポイント演算を使う。添字なし の変数(hoge)は、hogeの先頭アドレス(ポインタ)になる。ポインタの足し算 をすると、次の添字のアドレスに進む。以下の2つは同じ意味になる。
hoge[2] = 3; *(hoge+2) = 3;
1.5 関数定義
引数として変数を受け取って処理を行う。戻り値の型で関数を宣言する。関数 の中で引数の変更を行いたい場合はポインタを使う。
double hoge(int a, double b) { double m; 関数で行う処理 return m }
構造体を関数に渡した場合のアクセス方法。
double hoge(DATA *a, DATA *b) { double m; a->hoge = 10; aはDATA型のポインタ b[10].hoge = 10; bはDATA型配列のポインタ return m }
1.6 構造体
データの塊(メンバー)を定義して、オリジナルの型(この場合、DATA型)を作る。
typedef struct{ int hoge; double huga[10]; }DATA;
構造体の配列も定義できる。メンバーへのアクセスは、定義した変数とメンバーを"."でつなぐ。
DATA a; DATA a[10]; a[0].hoge = 10;
2 テストプログラムの作成
2.1 繰り返しと分岐を使うプログラム
- 1から100までの整数で偶数のみの総和を求めるプログラム
2.2 配列を使うプログラム
- 0から100まで0.5刻みのデータを持つx[]を作成してy=x*xのyを計算する。
2.3 関数を使うプログラム
- 上のxを受け取ってy=x*xを計算する関数を作成する。
2.4 構造体の使うプログラム
- xとyをメンバーに持つ構造体を定義して構造体配列を作成して上と同じように関数でyを計算する