gcc プログラムのファイル名
.\a.exe
WWW の一部をドキュメントをプログラムとして取り込んで、コンパイルする方法
1: /* This program prints "Hello World!". */
2: #include <stdio.h>
3: main(){
4: printf("Hello World!\n");
5: }
/* コメント */
/* と */ で囲まれた部分はプログラムとして解釈されないので、コメントを書き込むことができる。
どこからでも書くことができ、また何行でも書くことができる。
(入れ子構造にはできない)
関数は数学の関数とほぼ同じ意味。 値を与えると、定められた処理をして、対応した値を返してくる。
printf("Hello World!\n");
は C 言語の文で、printf という名前の関数を呼出すという意味である。
引数として "Hello World!\n" が与えられる。
この関数を実行すると、Hello World!\n を出力する。
printf は関数の値は出力した文字数を返す。
返り値 = 名前(引数);
で関数名「名前」という関数に「引数」を与えて呼出す。
関数の返す値は返り値にセットされる。
名前(引数);
で関数名「名前」という関数に「引数」を与えて呼出す。
a.exe を実行すると、mainという関数を呼出す。
C 言語でプログラムを作成するには、 main という関数を定義する。
mainの定義は
次のように書く。
(これは正式な記述法ではない。正式な記述は後述。)
main(){
プログラムの内容
}
1: #include <stdio.h>
2: #include <math.h>
3: main()
4: {
5: float a,b,c,d,kai1,kai2,zitsubu,kyobu;
6: a=2.0; b=3.0; c=1.0;
7: printf(" %f x^2 + %f x + %f = 0\n",a,b,c);
8: d=b*b-4*a*c;
9: if(d==0){
10: kai1 = -b/2/a;
11: printf("root = %f\n", kai1);
12: }else{
13: if( d>0 ){
14: kai1 = (-b + sqrt(d))/2/a; kai2 = (-b - sqrt(d))/2/a;
15: printf("root1= %f, root2= %f\n",kai1,kai2);
16: }else{
17: zitsubu= -b/2/a; kyobu = sqrt(d)/2/a;
18: printf("kai = %f +- %fi\n",zitsubu,kyobu);
19: }
20: }
21: }
printf関数を呼出す時、stdio.hを指定する。
sqrt関数を呼出す時、math.hを指定する。
float は「浮動小数点」という「型」を表す。(「型」も後述)
6: a=2.0; b=3.0; c=1.0; 8: d=b*b-4*a*c; 14: kai1 = (-b + sqrt(d))/2/a; kai2 = (-b - sqrt(d))/2/a;
7: printf(" %f x^2 + %f x + %f = 0\n",a,b,c);
11: printf("root = %f\n", kai1);
15: printf("root1= %f, root2= %f\n",kai1,kai2);
18: printf("kai = %f +- %fi\n",zitsubu,kyobu);
printf("文字列",変数1,変数2,...)
通常、文字列はそのまま表示される。特殊な文字に特殊な機能が割当られている。
%fは浮動小数点の変数の表示位置を表す。
7: printf(" %f x^2 + %f x + %f = 0\n",a,b,c);
の場合、
一番目の%fはaの表示位置、
ニ番目の%fはbの表示位置、
三番目の%fはcの表示位置を表す。
9: if(d==0){
12: }else{
19: }
elseの直後の文を実行する。
等号条件は=を使わず、==を使用する。
もし、(d=0)と書くと、dに 0 が代入され、常にelse以下の文が実行される。
C 言語で扱えるデータには、整数、実数(浮動小数点)、文字、文字列などがある。
浮動小数点とは、有効桁が定まっている実数。(計算機では無限の桁数を扱えない。)
float では 7 桁。
x.xxxxxx × 10^yy
という形を C 言語では
x.xxxxxxEyy
で表現する。
変数や関数は型を持つ。 型には主に、整数型(int)、実数(浮動小数点)型(float)、文字型(char)がある。 変数を使用するにはあらかじめ型宣言をする必要がある。 (文字列型はない。文字列の扱いは次回以降。)
整数型、実数型、文字型
int i; float a,b; char c,d,e;
printf の第一引数の文字列中での変数の型指定
| 整数型 | %d |
| 実数型 | %f |
| 文字型 | %c |
#include <stdio.h>
main(){
int i;
float a;
i=1;
i=i+1;
a=0.314E1;
printf("%d %f\n",i,a);
}
プログラミングには、プログラミング言語の知識だけでは不十分。 コンピュータで問題を解決するためには、問題の解決方法を考えることが重要。
問題を解決するための計算方法を アルゴリズム と言う。
a x + b y = e c x + d y = f
注意: 割り算で、0 で割ってはいけない。 この場合、逆行列が存在しない時の処理を考えなければならない。 つまり、行列式を計算して判断しなければならない。
┌x┐ 1 ┌ d -b ┐┌ e ┐ │ │ = --- │ ││ │ └y┘ det └ -c a ┘└ f ┘
従って、 x=(de-bf)/det, y=(-ce+af)/det である。
#include <stdio.h>
main(){
float a,b,c,d,e,f,x,y;
float det;
a=1.0; b=2.0; c=3.0; d=4.0; e=5.0; f=6.0;
det = a * d - b * c;
if(det==0){
if(a*f==c*e){
printf("%f x + %f y = %f を満す全ての x, y\n",a,b,e);
}else{
printf("解なし\n");
}
}else{
x=(d*e-b*f)/det;
y=(-c*e+a*f)/det;
printf("x = %f, y = %f\n",x,y);
}
}