Download : sample-001.c
/* * 2019/04/12 sample-001.c */ /* * 最初のプログラムは "Hello, World" */ #include <stdio.h> /* * main 関数 */ int main ( void ) { printf ( "Hello, World\n" ); /* "Hello, World" という文字列と改行 ( "\n" ) を表示する */ return 0; }
$ ./sample-001.exe Hello, World $
Download : sample-002.c
/* * 2019/04/12 sample-002.c */ /* * エラーを含む例 */ #include <stdio.h> /* * main 関数 */ int main ( void ) { printf ( "Hello, World\n" ) /* セミコロンを付け忘れた */ return 0; } /* * エラーを発見したら、エディタで修正し、また、コンパイルする */
$ ./sample-002.exe Hello, World $
Download : sample-003.c
/* * 2019/04/12 sample-003.c */ /* * printf を並べれば、沢山の文字列が表示できる */ #include <stdio.h> /* * main 関数 */ int main ( void ) { printf ( "おはよウナギ\n" ); /* 複数の命令が並べられる */ printf ( "こんにちワン\n" ); /* 結果は「並べられた順」になる */ printf ( "こんばんワニ\n" ); /* 「書く順」で、「表示順」を决める事ができる */ /* 「順接」による、プログラミング */ return 0; }
$ ./sample-003.exe おはよウナギ こんにちワン こんばんワニ $
Download : sample-004.c
/* * 2019/04/12 sample-004.c */ /* * "\n" は改行を意味する。"\n" がなければ改行しない。 */ #include <stdio.h> /* * main 関数 */ int main ( void ) { printf ( "おはよ" ); /* \n がないので、ここでは、改行しない */ printf ( "ウナギ\n" ); /* 最後に \n があるので、ここで改行 */ printf ( "こんにちワン\nこんばんワニ\n" ); /* 途中に \n があるので、そこでも、改行する */ return 0; }
$ ./sample-004.exe おはよウナギ こんにちワン こんばんワニ $
Download : sample-005.c
/* * 2019/04/12 sample-005.c */ /* * 関数 : プログラムの一部に名前を付けて、呼び出す事ができる。 */ #include <stdio.h> /* * unagi 関数の定義 * プログラムの断片「printf ( "ウナギ\n" );」に unagi と言う名前を付ける * 関数 unage を「printf ( "ウナギ\n" );」と定義する */ void unagi ( void ) { /* "ウナギ" の出力と改行を行う部分に "unagi" という名前を付ける */ printf ( "ウナギ\n" ); } /* * main 関数 */ int main ( void ) { /* 最初に実行されるのは、何時でも main 関数 */ /* 他の関数は main から呼び出されないと意味がない */ printf ( "おはよ" ); /* \n がないので改行しない */ unagi(); /* 関数呼出し : printf の代わりに unagi を呼び出す */ /* 関数呼出しには、「関数名」と「引数」が必要 */ printf ( "こんにちワン\nこんばんワニ\n" ); return 0; }
$ ./sample-005.exe おはよウナギ こんにちワン こんばんワニ $
Download : sample-006.c
/* * 2019/04/12 sample-006.c */ /* * 関数は何度でも呼び出す事ができる */ #include <stdio.h> /* * unagi 関数 */ void unagi ( void ) { printf ( "ウナギ\n" ); } /* * main 関数 */ int main ( void ) { unagi(); /* 関数 unagi() が 5 回呼ばれたので、5 回「ウナギ」を表示 */ unagi(); unagi(); unagi(); unagi(); return 0; }
$ ./sample-006.exe ウナギ ウナギ ウナギ ウナギ ウナギ $
Download : sample-007.c
/* * 2019/04/12 sample-007.c */ /* * 関数の中身を変更すれば、一挙に全体が変化 */ #include <stdio.h> /* * unagi 関数 */ int unagi ( void ) { /* "ウナギ" ではなく、"ウナギイヌ" に変更 */ printf ( "ウナギイヌ\n" ); } /* * main 関数 */ int main ( void ) { unagi(); /* 関数を呼び出す側は変化しないが、全体の動作は変化 */ unagi(); unagi(); unagi(); unagi(); return 0; }
$ ./sample-007.exe ウナギイヌ ウナギイヌ ウナギイヌ ウナギイヌ ウナギイヌ $
Download : sample-008.c
/* * 2019/04/12 sample-008.c */ /* * 関数の中から、関数が呼び出せるので... */ #include <stdio.h> /* * */ int unagi ( void ) { printf ( "ウナギイヌ\n" ); } /* * 「電気」の後に、「ウナギイヌ」を出力 */ int denki_unagi ( void ) { printf ( "電気" ); unagi(); /* 関数 unagi を呼び出す */ } /* * 「節電」の後に、「ウナギイヌ」を出力 */ int setsuden_unagi ( void ) { printf ( "節電" ); unagi(); /* 同 */ } /* * */ int main ( void ) { denki_unagi(); printf ( "と\n" ); setsuden_unagi(); printf ( "が仲良く CM に登場\n" ); return 0; }
$ ./sample-008.exe 電気ウナギイヌ と 節電ウナギイヌ が仲良く CM に登場 $
Download : sample-009.c
/* * 2019/04/12 sample-009.c */ /* * 関数の中から、関数が呼び出せるので... */ #include <stdio.h> /* * niwa */ int niwa ( void ) { printf ( "にわ" ); } /* * niwa_niwa */ int niwa_niwa ( void ) { niwa(); niwa(); } /* * niwa_niwa_niwa */ int niwa_niwa_niwa ( void ) { niwa_niwa(); niwa(); } /* * */ int main ( void ) { printf ( "うら" ); niwa_niwa_niwa (); niwa_niwa_niwa (); niwa(); printf ( "とりがいる。\n" ); return 0; }
$ ./sample-009.exe うらにわにわにわにわにわにわにわとりがいる。 $
/* * 20190419-01-QQQQ.c * 「Hello, 自分の名前」を 3 回出力するプログラム */ #include <stdio.h> /* * main */ int main ( void ) { printf ( "Hello, 栗野俊一\n" ); printf ( "Hello, 栗野俊一\n" ); printf ( "Hello, 栗野俊一\n" ); /* printf ( "Hello, 栗野俊一\nHello, 栗野俊一\nHello, 栗野俊一\n" ); */ return 0; }
/* * 20190419-02-QQQQ.c * 「Hello, 自分の名前」と出力する関数 print_hello_me を作成する */ #include <stdio.h> /* * print_hello_me */ void print_hello_me ( void ) { printf ( "Hello, 栗野俊一\n" ); } /* * main */ int main ( void ) { /* 関数 print_hello_me を一回呼び出す */ print_hello_me(); /* 14 行目が実行される */ return 0; }
/* * 20190419-03-QQQQ.c * 「Hello, 自分の名前」を 100 回以上出力するプログラム */ #include <stdio.h> /* * sub */ void print1() { /* 一度出力する */ printf ( "Hello, 栗野俊一\n" ); } void print2() { /* 二度出力する */ print1(); print1(); } void print4() { /* 四度出力 */ print2(); print2(); } void print8() { /* 八度出力 */ print4(); print4(); } void print16() { /* 十六度出力 */ print8(); print8(); } void print32() { /* 十六度出力 */ print16(); print16(); } void print64() { /* 十六度出力 */ print32(); print32(); } void print128() { print64(); print64(); } /* * main */ int main ( void ) { print128(); return 0; }
#include <stdio.h> void unagi() { printf ( "ウナギ犬\n" ); } int main(void) { printf ( "おはよ" ); unagi(); unagi(); unagi(); return 0; } /* プログラム一部(命令列)に名前をつけて、 そのプログラムの一部を、名前で呼び出すことができる [関数の作り方] 1. 名前を決める unagi 2. #include と main の間に名前を書く 3. 無条件に、 名前の前 void 後ろに () {} をつける 4. { と } に間に、名前を付けたい命令列をいれる [関数の使い方] 5. 名前の後ろに (); をつけると、その名前を付けた命令が実行される */
#include <stdio.h> void unagi() { printf ( "ウナギ\n" ); } int main(void) { printf ( "おはよ" ); unagi(); /* 実際には 4 行目の内容があるのと同じ */ return 0; }
#include <stdio.h> int main ( void ) { printf ( "Hello, World\n" ); /* printf という名前の関数を呼び出している */ /* printf には、「Hello, World\n」という文字列の引数が与えらえる */ /* printf は、その与えられた文字列を画面に出力する */ /* => 引数で指定した文字列を変更すれば、画面に出力される文字列が変化する */ /* 目的とする文字列を画面に出力したければ、printf でできる */ return 0; } /* このプログラムの、機能している部分は、3 行目 残りの部分は、「おまじない」だと思ってよい */
/* * 2019/04/12 sample-002.c */ /* * エラーを含む例 */ #include <stdio.h> /* * main 関数 */ int main ( void ) { printf ( "Hello, World\n" ); /* セミコロンを付け忘れた */ return 0; } /* * エラーを発見したら、エディタで修正し、また、コンパイルする */
/* * 2019/04/12 sample-003.c */ /* * printf を並べれば、沢山の文字列が表示できる */ #include <stdio.h> /* * main 関数 */ int main ( void ) { printf ( "こんにちワン\n" ); /* 結果は「並べられた順」になる */ printf ( "おはよウナギ\n" ); /* 複数の命令が並べられる */ printf ( "こんばんワニ\n" ); /* 「書く順」で、「表示順」を决める事ができる */ /* 「順接」による、プログラミング */ printf ( "こんにちワン\n" ); /* 結果は「並べられた順」になる */ printf ( "おはよウナギ\n" ); /* 複数の命令が並べられる */ printf ( "こんばんワニ\n" ); /* 「書く順」で、「表示順」を决める事ができる */ return 0; }
#include <stdio.h> void unagi ( void ) { printf ( "ウナギ\n" ); } int main ( void ) { printf ( "おはよ" ); unagi(); /* この部分は「ウナギ\n」と同じ */ /* printf ( "ウナギ\n" ); と同じ */ printf ( "こんにちワン\nこんばんワニ\n" ); return 0; }
sample-001.c ?u/*?v?`?u*/?v????A????????????????????B => ?????????A?u?R?????g?v???сA ?R???s???[?^?????????????????????????? <= ?v???O???}????????????????c?? ????v???O??????A????uHello, World?v????s => ???? 3 ?s???A??????s??????? ???? 3 ?s???u"?v?????????????\??????? ???????A\n ??A???? n ???o???????A???s????? sample-003.c printf ???????A??????????????s????(???????o??????) => ???????????A???G??????????? => ??? 1 [????] ?R???p?C???A???s??d?? cc -c hello.c cc -o hello.exe hello.o ./hello.exe Hello, World ???S??v???O????(?v???O????????y??) ???? ??????????A????????????s???? ??????`????p?@ ???????т???O???????A???O???яo????
課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。
Download : 20190419-01.c
/* * 20190419-01-QQQQ.c * 「Hello, 自分の名前」を 3 回出力するプログラム */ #include <stdio.h> /* * main */ int main ( void ) { printf ( /* q:ここ */ ); printf ( /* q:ここ */ ); printf ( /* q:ここ */ ); return 0; }
$ ./20190419-01-QQQQ.exe Hello, 栗野 Hello, 栗野 Hello, 栗野 $
Download : 20190419-02.c
/* * 20190419-02-QQQQ.c * 「Hello, 自分の名前」と出力する関数 print_hello_me を作成する */ #include <stdio.h> /* * print_hello_me */ void print_hello_me ( void ) { printf ( /* q:ここ */ ); /* 「Hello, 自分の名前」を表示する */ } /* * main */ int main ( void ) { /* 関数 print_hello_me を一回呼び出す */ /* ** この部分を完成させなさい */ return 0; }
$ ./20190419-02-QQQQ.exe Hello, 栗野 $
Download : 20190419-03.c
/* * 20190419-03-QQQQ.c * 「Hello, 自分の名前」を 100 回以上出力するプログラム */ #include <stdio.h> /* * sub */ void print1() { printf ( /* q:ここ */ ); } void print2() { print1(); print1(); } void print4() { print2(); print2(); } /* ** この部分を完成させなさい */ void print128() { print64(); print64(); } /* * main */ int main ( void ) { print128(); return 0; }
$ ./20190419-03-QQQQ.exe Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 Hello, 栗野 $