サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
4: 2009-01-12 (月) 12:20:21 ソース 現: 2024-01-08 (月) 12:58:42 k-tan ソース
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 170: Line 171:
--[A] この先5年くらいまでを想定して、仕事に使える能力という意味なら、多分その通りです。 --[A] この先5年くらいまでを想定して、仕事に使える能力という意味なら、多分その通りです。
--[Q] なんですかその言い草は?まるで10年後はそうではないみたいな言い方ですね。 --[Q] なんですかその言い草は?まるで10年後はそうではないみたいな言い方ですね。
---[A] はい。ちょっと説明させてください。・・・まずあなたが何かC言語でプログラムを書いたとします。gcc向けということにしましょうか。そのプログラムは、10年後も無修正で動くでしょうか?hello程度なら問題なくコンパイルが通って動くと思います。しかし10KB程度の世間では比較的小規模とされるプログラムでさえ、gcc-2.x系でコンパイルできたものがgcc-3.x系では動かず、さらにgcc-3.x系で動くものもgcc-4.x系では動かないということが少なくありません。そんな数年ごとにメンテナンスを強いられるようなプログラミングがお望みでしょうか?そんな時代と共に変化するような技術を身に付けたいと思うでしょうか?+--[A] はい。ちょっと説明させてください。・・・まずあなたが何かC言語でプログラムを書いたとします。gcc向けということにしましょうか。そのプログラムは、10年後も無修正で動くでしょうか?hello程度なら問題なくコンパイルが通って動くと思います。しかし10KB程度の、世間では比較的小規模とされるプログラムでさえ、gcc-2.x系でコンパイルできたものがgcc-3.x系では動かず、さらにgcc-3.x系で動くものもgcc-4.x系では動かないということが少なくありません。そんな数年ごとにメンテナンスを強いられるようなプログラミングがお望みでしょうか?そんな時代と共に変化するような技術を身に付けたいと思うでしょうか?
--[Q] なんか急に偉そうですね。じゃあなんですか?「ぐいぐい01」はそうではないといいたいんですか? --[Q] なんか急に偉そうですね。じゃあなんですか?「ぐいぐい01」はそうではないといいたいんですか?
--[A] はい。「ぐいぐい01」はそうではありません。現在は開発途上でその理想を果たせていませんが、それが落ち着けば、一度書いたプログラムは永遠にソースの改変が必要になることはありません。それどころか、再コンパイルさえも不要です。だからソースをなくしてしまったり、クローズドソースでソースが手に入らなくても、将来にわたって安泰です。 --[A] はい。「ぐいぐい01」はそうではありません。現在は開発途上でその理想を果たせていませんが、それが落ち着けば、一度書いたプログラムは永遠にソースの改変が必要になることはありません。それどころか、再コンパイルさえも不要です。だからソースをなくしてしまったり、クローズドソースでソースが手に入らなくても、将来にわたって安泰です。
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

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。