関数の概要
関数とは何か?
エンジニアが楽をする仕組み
関数がなかったら困ることはたくさんあります。関数がないと、プログラムが複雑で長くなり、理解やメンテナスが難しくなってしまいます。
例えば、プログラム中で、「12+10」処理が何回も必要な場合、関数があれば、1回定義して呼び出すことで呼び出すだけで済みますが、関数がないとその計算式を何度も書くことになり、ミスや修正が難しくなります。
関数を使わなかった場合、
#include <stdio.h>
int main() {
int result1, result2, result3;
// 最初の計算
int a = 5, b = 3;
result1 = a + b;
printf("Result 1: %d\n", result1);
// 次の計算
int c = 10, d = 7;
result2 = c + d;
printf("Result 2: %d\n", result2);
// さらに別の計算
int e = 2, f = 8;
result3 = e + f;
printf("Result 3: %d\n", result3);
return 0;
}
関数を使えば、2つの数を足す処理を1つの関数にまとめておき、必要な時にその関数を呼び出すだけで済みます。これにより、コードがシンプルで分かりやすくなり、計算方法を変更したいときも関数ないの1箇所を修正するだけで済みます。
#include <stdio.h>
// 2つの数を足す関数を定義
int add(int x, int y) {
return x + y;
}
int main() {
int result1, result2, result3;
// 最初の計算
result1 = add(5, 3);
printf("Result 1: %d\n", result1);
// 次の計算
result2 = add(10, 7);
printf("Result 2: %d\n", result2);
// さらに別の計算
result3 = add(2, 8);
printf("Result 3: %d\n", result3);
return 0;
}
addという関数を一度定義すると、(a+b)の記述を3度もしなくて良くなります。また計算方法に変更があっても、関数ないのコードを1箇所を修正するだけで全体に適応されます。
int add(int x, int y) {
return x + y;
}
int add
int:関数が整数(int型)の値を返すことを示している。
add:関数の名前。addとつけられているため、2つの数を足す関係であることを示している。
(int x, int y)
この関数を指定する部分。関数に渡される値(入力)を受け取るための「変数」を宣言。
int x:関数の1つ目の引数。整数型(int型)の変数xに、関数を呼び出す時に渡された最初の数が代入されます。
int y:関数の2つ目の引数。整数型(int型)の変数yに関数を呼び出すときに渡された2番目の数を代入されます。
{・・・}
{}:この中に、関数の具体的な処理を書く部分を関数本体と呼びます。このadd関数では、引数xとyの合計を計算して返す処理が書かれています。
return x + y;
return:この関数が計算結果を返すためのキーワードです。関数が計算を終えたら、return文で結果を返します。
x + y:xとyを足した合計です。この計算結果が、関数の呼び出し元に戻されます。
例えば、add(5,3)と呼び出した場合、この関数は5 + 3を計算して、その結果である8を返します。
・メモリにプログラムをロード
・プログラムをメモリからレジスタへ移動
・CPUでデータを処理
・ディスプレイとの連携
・キーボードとの出力連携
・Hello Worldと入力
これらは一般的にハードや周辺装置を制御する機能はOSの役割
メモリ
データを一時保存する記憶装置
レジスタ
コンピューターのCPU(中央記憶装置)内部にある、演算やデータ処理を行い際に火つよな一時的なデータを格納するための記憶装置
CPU
Central Processing Uint
セントラル プロセッシング ユニット
コンピュータ全体の頭脳
関数とは?
値を入力すると、何かしらの処理をして、新しい結果を返す。
printf関数
①Hello Worldと書く(値を入力)
②ハードや周辺装置と連携(何かしらの処理)
③ディスプレイに出力(新しい結果を返す)
C言語は関数が集まって出来ている。
関数という小さな部品を組み合わせて大きなプログラムを作っている。
pcを動かすには関数が必要になってくる。
入出力やハードや周辺装置など制御するための大切な機能が詰まっている
Hello Worldと出力
#include <stdio.h>
int main(void) {
printf("Hello World");
return 0;
}
一つずつ解説していきます。
#include <stdio.h>
関数を使うための、前設定。実は関数を使うためのプログラムは100行ぐらいある。
これらを楽にするための記述である。
include:取り組む stdio:説明書
.h:ヘッダーファイル
結論:標準的な入出力の機能が入ったファイル(関数)を取り組んでいる。
標準入出力
最低限の基本的な入出力の機能をまとめたもの
ライブラリー
便利なプログラムの部品を集めたファイル
→本棚から関数を引っ張り出してくる
※ライブラリーにもたくさんの種類が存在
stdio.h:基本的な入出力機能
math.h:計算関係のファイル
・・・など
#include はコンパイルの一番最初に実行される
関数を実行するには、その前に関数の準備をする必要がある
→#includeで準備します。
コンパイル
ソースコードをコンピューターが直接実行できる言語に変換するプロセスを進めます。
つまり、コンピューターは直接理解できないので、変換する必要がある。
int main(void) {
C言語では実行する関数の順番は決められていない。
関数の中では、上から順番に実行されるが、関数自体はどれでもいい。
→そうなると最初にどの順番で実行すれば良いのか困ってしまう、、、
mainという関数が1番最初に動作する
(main関数がなかった場合、プログラムは動作しない)
int main (void) {
メモリの容量 関数の名前 引数
具体的な処理(printfなど)
}
int:main関数をどのくらいのスペースを使うのかをintで表している。
4バイト(32ビット)文のメモリのスペースを使っている。
1バイト=8ビット 1バイトで256通り (2の8乗)
ビット(bit)はコンピューターでの情報の最小単位
main:関数の名前を宣言
(void):引数:外部から投入する値のこと
voidこの関数は引数を受け取らない