A/B (2018/06/08) Ver. 1.0 kurino@math.cst.nihon-u.ac.jp http://edu-gw2.math.cst.nihon-u.ac.jp/ kurino/2018/soft/soft.html 2018 6 8 A/B 1 2018 6 8 2 1 1 1.1 OHP.................................... 1 1.2 Download........................................ 1 1.3.............................. 1 1.4....................................... 16 1.4.1 20180608-01 : 3.................. 16 1 http://edu-gw2.math.cst.nihon-u.ac.jp/ kurino/2018/soft/soft.html 2 http://edu-gw2.math.cst.nihon-u.ac.jp/ kurino/2018/soft/20180608/20180608.html 1
1 1.1 OHP OHP (HTML) 3 (PDF) 4 1.2 Download 20180608-update.zip 5 hanoi.zip 6 miku.zip 7 sample-20180608.c 8 1.3 20180601-01-9999.c 9 (20180601-01-9999.c (SJIS) 10 ) 1: 20180601-01-9999.c 20180601-01-QQQQ.c #include <strings.h> double_print (message) [ : ] double_print ( "" ); "" ( ) double_print ( "abc" ); aabbcc double_print ( "abcdef" ); ^^^ aabbccddeeff 3 ohp/html/index.html 4 ohp/ohp.pdf 5 files/20180608-update.zip 6 files/hanoi.zip 7 files/miku.zip 8 files/sample-20180608.c 9 p/20180601-01-9999.c 10 p/sjis/20180601-01-9999.c 1
^^^^^^====== duble_print ( "abcdef" ) duble_print ( "abc" ) aabbcc duble_print ( "def" ) ddeeff duble_print ( "abcdef" ) a double_print ( "bcdef" ) duble_print ( message ) message message putchar double_print ( message + 1 ) void double_print ( char message ) { if (!strcmp ( message, "" ) ) { putchar ( message ); double_print ( message + 1 ); main int main ( void ) { double_print ( "abc" ); printf ( "\n" ); double_print ( "1234567" ); printf ( "\n" ); 20180601-02-9999.c 11 (20180601-02-9999.c (SJIS) 12 ) 11 p/20180601-02-9999.c 12 p/sjis/20180601-02-9999.c 2
2: 20180601-02-9999.c 20180601-02-QQQQ.c #include <strings.h> reverse_print (message) void reverse_print ( char message ) { if (!strcmp ( message, "" ) ) {... main int main ( void ) { putchar ( message ); reverse_print ( message + 1 );....... : ; reverse_print ( "abc" ); printf ( "\n" ); reverse_print ( "1234567" ); printf ( "\n" ); 3
hanoi3.c 13 (hanoi3.c (SJIS) 14 ) 3: hanoi3.c 2018/06/08 hanoi3.c 3 s_hanoi.h #include "s_hanoi.h" int main ( void ) { "1" s_hanoi_init() : : s_hanoi_size ( char discs ) : s_hanoi_move ( char from, char to ) : from to s_hanoi_clear () : s_hanoi_stop() : : return 0 s_hanoi_init(); s_hanoi_size ( "" ); // 3 putchar ( > ); putchar ( getchar() ); s_hanoi_move ( "1", "3" ); [1] 1 3 putchar ( > ); putchar ( getchar() ); s_hanoi_move ( "1", "2" ); [2] 1 2 putchar ( > ); putchar ( getchar() ); s_hanoi_stop(); 13 p/hanoi3.c 14 p/sjis/hanoi3.c 4
p-001.c 15 (p-001.c (SJIS) 16 ) 4: p-001.c n (nprint) void nprint(char ntimes) { if (!strcmp ( ntimes, "" ) ) { ntimes do nothing printf ( "Hello, World\n" ); nprint ( ntimes + 1 ); nprint ( "" ); nprint ( "12345" ); p-002.c 17 (p-002.c (SJIS) 18 ) 5: p-002.c n (nprint) void nprint(char ntimes, char message) { 15 p/p-001.c 16 p/sjis/p-001.c 17 p/p-002.c 18 p/sjis/p-002.c if (!strcmp ( ntimes, "" ) ) { do nothing 5
printf ( message ); nprint ( ntimes + 1, message ); nprint ( "", "Hello, World\n" ); nprint ( "12345", " \n" ); p-003.c 19 (p-003.c (SJIS) 20 ) 6: p-003.c n (nprint) void nprint(char ntimes, char message) { if (!strcmp ( ntimes, "" ) ) { do nothing printf ( message ); nprint ( ntimes + 1, message + 1); nprint ( "", "Hello, World\n" ); nprint ( "12345", " \n" ); 19 p/p-003.c 20 p/sjis/p-003.c 6
p-004.c 21 (p-004.c (SJIS) 22 ) 7: p-004.c printf ( " \"abc\" " ); putchar ( "abc" ); "abc" a printf ( " \n" ); p-005.c 23 (p-005.c (SJIS) 24 ) 8: p-005.c printf ( " \"abc\" + 1 " ); putchar ( ("abc"+1) ); "abc" b printf ( " \n" ); p-006.c 25 (p-006.c (SJIS) 26 ) 9: p-006.c printf ( " \"abc\" + 1 " ); putchar ( "abc"[1] ); "abc" b "abc"[1] => ("abc"+1) 21 p/p-004.c 22 p/sjis/p-004.c 23 p/p-005.c 24 p/sjis/p-005.c 25 p/p-006.c 26 p/sjis/p-006.c 7
printf ( " \n" ); p-007.c 27 (p-007.c (SJIS) 28 ) 10: p-007.c n (nprint) void nprint(char ntimes) { "" if ( ntimes == \0 ) { ntimes \0 (EOS) do nothing printf ( "Hello, World\n" ); nprint ( ntimes + 1 ); ntimes "" nul nprint ( "" ); nprint ( "12345" ); p-008.c 29 (p-008.c (SJIS) 30 ) 11: p-008.c myprintf 27 p/p-007.c 28 p/sjis/p-007.c 29 p/p-008.c 30 p/sjis/p-008.c 8
myprintf ( "abc" ); => abc Version 1 : printf void myprintf (char string) { printf ( string ); printf myprintf ( "Hello, World\n" ); myprintf ( " \n" ); p-009.c 31 (p-009.c (SJIS) 32 ) 12: p-009.c myprintf myprintf ( "abc" ); => abc Version 2 : printf putchar myprintf ( "abc" ); => abc => a bc => putchar ( a ); myprinf ( "bc" ); => putchar ( "abc" ); myprinf ( "abc" + 1 ); myprintf ( string ); => putchar ( string ) ; myprintf ( string + 1 ); string "" void myprintf (char string) { if ( string == \0 ) { putchar ( string ); myprintf ( string + 1 ); 31 p/p-009.c 32 p/sjis/p-009.c myprintf ( "Hello, World\n" ); myprintf ( " \n" ); 9
p-010.c 33 (p-010.c (SJIS) 34 ) 13: p-010.c myprintf version 3 (^o^) void myprintf (char string) { if ( string == \0 ) { if ( string == ) { printf ( "(^o^)" ); putchar ( string ); myprintf ( string + 1 ); printf ( "Hello, World\n" ); myprintf ( "Hello, World\n" ); printf ( "Hello, World \n" ); myprintf ( "Hello, World \n" ); p-011.c 35 (p-011.c (SJIS) 36 ) 14: p-011.c 33 p/p-010.c 34 p/sjis/p-010.c 35 p/p-011.c 36 p/sjis/p-011.c 10
myprintf version 3 (^o^) #define EOS \0 \0 EOS EOS \0 EOS = End Of String EOS \0 #define SMAILE void myprintf (char string) { if ( string == EOS ) { if ( string == SMAILE ) { printf ( "(^o^)" ); putchar ( string ); myprintf ( string + 1 ); printf ( "Hello, World\n" ); myprintf ( "Hello, World\n" ); printf ( "Hello, World \n" ); myprintf ( "Hello, World \n" ); p-012.c 37 (p-012.c (SJIS) 38 ) 15: p-012.c n (nprint) nprint ( "abc" ); => Hello, World Hello, World 37 p/p-012.c 38 p/sjis/p-012.c 11
Hello, World => Hello, World Hello, World Hello, World => printf ( "Hello, World\n" ): nprint ( "bc" ); nprint ( "abc" ); => Hello, World Hello, World Hello, World => Hello, World Hello, World Hello, World => nprint ( "bc" ); printf ( "Hello, World\n" ): void nprint(char ntimes) { if (!strcmp ( ntimes, "" ) ) { ntimes do nothing nprint ( ntimes + 1 ); printf ( "Hello, World\n" ); nprint ( "" ); nprint ( "12345" ); p-013.c 39 (p-013.c (SJIS) 40 ) 16: p-013.c 39 p/p-013.c 40 p/sjis/p-013.c 12
n (nprint) nprint ( "" ) => => => printf ( "" ); printf ( "\n" ); nprint ( "" ); [ ] nprint ( message ) => printf ( message ); printf ( "\n" ); nprint ( message + 1 ); #define EOS \0 void nprint(char ntimes) { if ( ntimes == EOS ) { ntimes do nothing printf ( ntimes ); printf ( "\n" ); putchar ( \n ) nprint ( ntimes + 1 ); nprint ( "" ); nprint ( "12345" ); p-014.c 41 (p-014.c (SJIS) 42 ) 17: p-014.c 41 p/p-014.c 42 p/sjis/p-014.c 13
n (nprint) nprint ( "" ) => nprint ( "" + 1 ); printf ( "" ); printf ( "\n" ); => nprint ( "" ); printf ( "" ); printf ( "\n" ); => nprint ( "" + 1 ); printf ( "" ); printf ( "\n\" ); printf ( "" ); printf ( "\n" ); =>.. => #define EOS \0 void nprint(char ntimes) { if ( ntimes == EOS ) { ntimes do nothing nprint ( ntimes + 1 ); printf ( ntimes ); printf ( "\n" ); putchar ( \n ) nprint ( "" ); nprint ( "12345" ); 14
memo.txt 43 (memo.txt (SJIS) 44 ) 18: memo.txt [ ] => n : [ ] "ABC" : 3 A, B, C [C?] : "abc" <=> a "abc" + 1 => "bc" ("abc"+1) => ("bc") => b "abc" => "abc" 0 ( ) "abc" => ("abc"+0) ("abc"+1) => "abc" 1 ( ) ("abc"+n) => "abc" n "abc"[n] "abc"[n] => ("abc"+n) "abc" 0, "abc"[0] "" ( 0 ) "" => \0 ( : ) "abc" = { a, b, c, \0 "" = { \0 # \0 nul End of String (EOS) str str == \0!strcmp ( str, "" )!strcmp ==!! = == == 43 p/memo.txt 44 p/sjis/memo.txt 15
#define #define 20180601-01 double_print ( "abc" ); => aabbcc 20180601-02 reverse_print ( "abc" ); => cba => cb a => reverse_print ( "bc" ); putchar ( a ) => reverse_print ( "abc" + 1 ); putchar ( "abc" ) [ ] reverse_print ( message ); => reverse_print ( message + 1 ); putchar ( message ); 1.4 1.4.1 20180608-01 : 3 Download : 20180608-01.c 45 19: 20180608-01.c 20180608-01-QQQQ.c 3 s_hanoi.h #include "s_hanoi.h" int main ( void ) { 45 ex/01/q/01.c 16
"1" "2" s_hanoi_init() : : s_hanoi_size ( char discs ) : s_hanoi_move ( char from, char to ) : from to s_hanoi_clear () : s_hanoi_stop() : : return 0 s_hanoi_init(); s_hanoi_set ( char discs ) 3 printf ( " [Enter] \n" ); putchar ( > ); putchar ( getchar() ); (3) s_hanoi_move ( "1", "2" ); 1 2 ( 1 ) s_hanoi_move ( "1", "3" ); 1 3 ( 2 ) s_hanoi_move ( "1", "2" ); 1 2 ( 3 ) s_hanoi_move ( "3", "1" ); 3 1 ( 1 ) s_hanoi_move ( "1", "2" ); 1 2 ( 1 ) printf ( " [Enter] \n" ); putchar ( > ); putchar ( getchar() ); s_hanoi_stop(); 17
$./20180608-01-QQQQ.exe $ 1: 20180608-01.c 18