5: 2009-01-12 (月) 12:20:21 [6] | 現: 2024-01-08 (月) 12:58:42 k-tan[7] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | * ぐいぐい01に関するメモ-24 | + | TITLE:x |
+ | * ぐいぐい01に関するメモ-24 [#o6ee3d0a] | ||
-(by [[K]], 2009.01.12) | -(by [[K]], 2009.01.12) | ||
-メモのうち重要な部分をそのうちまとめてまともなページを作る | -メモのうち重要な部分をそのうちまとめてまともなページを作る | ||
- | *** (37) GOで「ぐいぐい01」アプリを作る(2) | + | *** (37) GOで「ぐいぐい01」アプリを作る(2) [#i20e9b64] |
-[[GUIGUI01/memo19]]の続きです。仕様変更ももうそんなにはないと思うので、書いても問題はないかなと。 | -[[GUIGUI01/memo19]]の続きです。仕様変更ももうそんなにはないと思うので、書いても問題はないかなと。 | ||
---- | ---- | ||
-最初のお題は0から9までの数字の表示です。ex0007.cです。 | -最初のお題は0から9までの数字の表示です。ex0007.cです。 | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 17: | Line 18: | ||
return; | return; | ||
} | } | ||
- | -これだけです。これをmakeすれば72バイトになります。実行すると以下のような表示が得られます。 | + | -これだけです。これをmakeすれば70バイトになります。実行すると以下のような表示が得られます。 |
0 1 2 3 4 5 6 7 8 9 | 0 1 2 3 4 5 6 7 8 9 | ||
---- | ---- | ||
-さてそれではもう少し桁を増やします。でもsprintfは使いたくないので、setdecを作りました。ex0008.cです。 | -さてそれではもう少し桁を増やします。でもsprintfは使いたくないので、setdecを作りました。ex0008.cです。 | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
void setdec(char *s, int i, int n) | void setdec(char *s, int i, int n) | ||
{ | { | ||
Line 32: | Line 33: | ||
return; | return; | ||
} | } | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 45: | Line 46: | ||
return; | return; | ||
} | } | ||
- | -これをmakeすれば146バイトになります。これを実行すると、以下のように表示されます。 | + | -これをmakeすれば144バイトになります。これを実行すると、以下のように表示されます。 |
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 | 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 | ||
020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 | 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 | ||
Line 54: | Line 55: | ||
-もしかしたら最初のほうで、0が000になっていたり、1が001になっているのが気にいらないかもしれませんね。じゃあそれを直しましょう。ex0009.cです。 | -もしかしたら最初のほうで、0が000になっていたり、1が001になっているのが気にいらないかもしれませんね。じゃあそれを直しましょう。ex0009.cです。 | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
void setdec(char *s, int i, int n) | void setdec(char *s, int i, int n) | ||
{ | { | ||
Line 69: | Line 70: | ||
return; | return; | ||
} | } | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 82: | Line 83: | ||
return; | return; | ||
} | } | ||
- | -これをmakeすれば177バイトになります。これを実行すると、以下のように表示されます。 | + | -これをmakeすれば173バイトになります。これを実行すると、以下のように表示されます。 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ||
Line 91: | Line 92: | ||
-ex0009は桁がそろっていてきれいだと僕は思うのですが、もしかしたら余計なスペースを表示しないほうがお好みかもしれませんね。じゃあそれも直せるようにしてみます。ex0010.cです。 | -ex0009は桁がそろっていてきれいだと僕は思うのですが、もしかしたら余計なスペースを表示しないほうがお好みかもしれませんね。じゃあそれも直せるようにしてみます。ex0010.cです。 | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
void setdec(char *s, int i, int n) | void setdec(char *s, int i, int n) | ||
{ | { | ||
Line 106: | Line 107: | ||
return; | return; | ||
} | } | ||
+ | |||
char *skip_space(char *s) | char *skip_space(char *s) | ||
{ | { | ||
Line 114: | Line 115: | ||
return s; | return s; | ||
} | } | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 127: | Line 128: | ||
return; | return; | ||
} | } | ||
- | -これをmakeすれば204バイトになります。これを実行すると、以下のように表示されます。 | + | -これをmakeすれば195バイトになります。これを実行すると、以下のように表示されます。 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ||
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | ||
Line 137: | Line 138: | ||
-それでは今回の最後は、もうちょっと計算らしいことをします。うーん、そうですね、たとえば、0から100までの和を計算してみましょう。ex0011.cです。 | -それでは今回の最後は、もうちょっと計算らしいことをします。うーん、そうですね、たとえば、0から100までの和を計算してみましょう。ex0011.cです。 | ||
#inlude <guigui01.h> | #inlude <guigui01.h> | ||
+ | |||
void setdec(char *s, int i, int n) | void setdec(char *s, int i, int n) | ||
{ | { | ||
(ex0010.cと同じ内容) | (ex0010.cと同じ内容) | ||
} | } | ||
+ | |||
char *skip_space(char *s) | char *skip_space(char *s) | ||
{ | { | ||
(ex0010.cと同じ内容) | (ex0010.cと同じ内容) | ||
} | } | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 160: | Line 161: | ||
return; | return; | ||
} | } | ||
- | -これをmakeすれば188バイトになります。これを実行すると、以下のように表示されます。 | + | -これをmakeすれば183バイトになります。これを実行すると、以下のように表示されます。 |
5050 | 5050 | ||
-もちろんこれは正解です。言うまでもないですが、これをたとえば1000までの和の計算に変えるにはどうしたらいいか分かりますよね?(ちなみに1万までの和にすると、32bitのintではオーバーフローしてしまうので、このプログラムでは正しい答えが出せません)。また、256から512までの和、なんていう変則的な計算もやろうと思えばできるはずです。それに、1から10までの積だって計算できると思います。 | -もちろんこれは正解です。言うまでもないですが、これをたとえば1000までの和の計算に変えるにはどうしたらいいか分かりますよね?(ちなみに1万までの和にすると、32bitのintではオーバーフローしてしまうので、このプログラムでは正しい答えが出せません)。また、256から512までの和、なんていう変則的な計算もやろうと思えばできるはずです。それに、1から10までの積だって計算できると思います。 | ||
Line 180: | Line 181: | ||
--[A] そうですね。でも古いPCが故障して新しいPCを買ったときに、その古いLinuxがその新しいPCにインストールできるでしょうか。・・・結局ソースを持っていなくても、どのOS上でも実行できる「ぐいぐい01」と、OSが変わるたびにソースから再makeしなければいけないgcc向けアプリ。どちらに将来性があるでしょうか。でも将来のことは分かりません。結局「ぐいぐい01」は永遠にマイナーかもしれません。メジャーになろうと努力する気がないので、マイナーのままで終わる可能性は十分に高いです。でも誰かがメジャーにしたいというのならそれをわざわざ妨害する気もありません。みんなが便利そうだと使っているうちに普及してしまうかもしれません。 | --[A] そうですね。でも古いPCが故障して新しいPCを買ったときに、その古いLinuxがその新しいPCにインストールできるでしょうか。・・・結局ソースを持っていなくても、どのOS上でも実行できる「ぐいぐい01」と、OSが変わるたびにソースから再makeしなければいけないgcc向けアプリ。どちらに将来性があるでしょうか。でも将来のことは分かりません。結局「ぐいぐい01」は永遠にマイナーかもしれません。メジャーになろうと努力する気がないので、マイナーのままで終わる可能性は十分に高いです。でも誰かがメジャーにしたいというのならそれをわざわざ妨害する気もありません。みんなが便利そうだと使っているうちに普及してしまうかもしれません。 | ||
- | * こめんと欄 | + | * こめんと欄 [#e0c3191d] |
- 次回はコマンドライン引数関係のAPIについて書く予定。だけどこのページの人気がイマイチなら書くのはずっと先、ということで。 -- [[K]] &new{2009-01-12 (月) 12:20:21}; | - 次回はコマンドライン引数関係のAPIについて書く予定。だけどこのページの人気がイマイチなら書くのはずっと先、ということで。 -- [[K]] &new{2009-01-12 (月) 12:20:21}; | ||
+ | - abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-16 (金) 20:01:49}; | ||
#comment | #comment |
(This host) = http://osask.net