ページへ戻る

− Links

 印刷 

GUIGUI01​/memo24 のバックアップ差分(No.1) :: OSASK計画

osaskwiki:GUIGUI01/memo24 のバックアップ差分(No.1)

  Next »[4]
1: 2009-01-12 (月) 11:22:12 ソース[5]
Line 1: Line 1:
 +* ぐいぐい01に関するメモ-24
 +-(by [[K]], 2009.01.12)
 +-メモのうち重要な部分をそのうちまとめてまともなページを作る
 +*** (37) GOで「ぐいぐい01」アプリを作る(2)
 +-[[GUIGUI01/memo19]]の続きです。仕様変更ももうそんなにはないと思うので、書いても問題はないかなと。
 +----
 +-最初のお題は0から9までの数字の表示です。ex0007.cです。
 + #include <guigui01.h>
 + void G01Main()
 + {
 +     int i;
 +     for (i = 0; i <= 9; i++) {
 +       g01_putc('0' + i);
 +       g01_putc(' ');
 +     }
 +     return;
 + }
 +-これだけです。これをmakeすれば72バイトになります。実行すると以下のような表示が得られます。
 + 0 1 2 3 4 5 6 7 8 9
 +----
 +-さてそれではもう少し桁を増やします。でもsprintfは使いたくないので、setdecを作りました。ex0008.cです。
 + #include <guigui01.h>
 +
 + void setdec(char *s, int i, int n)
 + {
 +     int j;
 +     for (j = n - 1; j >= 0; j--) {
 +         s[j] = '0' + (i % 10);
 +         i /= 10;
 +     }
 +     return;
 + }
 +
 + void G01Main()
 + {
 +     int i;
 +     char s[5];
 +     for (i = 0; i <= 999; i++) {
 +       setdec(s, i, 3);
 +       s[3] = ' ';
 +       s[4] = 0; /* 終端に0を入れる */
 +       g01_putstr0(s);
 +     }
 +     return;
 + }
 +-これをmakeすれば146バイトになります。これを実行すると、以下のように表示されます。
 + 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
 +     (中略)
 + 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979
 + 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
 +----
 +-もしかしたら最初のほうで、0が000になっていたり、1が001になっているのが気にいらないかもしれませんね。じゃあそれを直しましょう。ex0009.cです。
 + #include <guigui01.h>
 +
 + void setdec(char *s, int i, int n)
 + {
 +     int j;
 +     for (j = n - 1; j >= 0; j--) {
 +         s[j] = '0' + (i % 10);
 +         i /= 10;
 +     }
 +     for (j = 0; j < n - 1; j++) {
 +         if (s[j] != '0')
 +             break;
 +         s[j] = ' ';
 +     }
 +     return;
 + }
 +
 + void G01Main()
 + {
 +     int i;
 +     char s[5];
 +     for (i = 0; i <= 999; i++) {
 +       setdec(s, i, 3);
 +       s[3] = ' ';
 +       s[4] = 0; /* 終端に0を入れる */
 +       g01_putstr0(s);
 +     }
 +     return;
 + }
 +-これをmakeすれば177バイトになります。これを実行すると、以下のように表示されます。
 +   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
 +     (中略)
 + 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979
 + 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
 +----
 +-ex0009は桁がそろっていてきれいだと僕は思うのですが、もしかしたら余計なスペースを表示しないほうがお好みかもしれませんね。じゃあそれも直せるようにしてみます。ex0010.cです。
 + #include <guigui01.h>
 +
 + void setdec(char *s, int i, int n)
 + {
 +     int j;
 +     for (j = n - 1; j >= 0; j--) {
 +         s[j] = '0' + (i % 10);
 +         i /= 10;
 +     }
 +     for (j = 0; j < n - 1; j++) {
 +         if (s[j] != '0')
 +             break;
 +         s[j] = ' ';
 +     }
 +     return;
 + }
 +
 + char *skip_space(char *s)
 + {
 +     while (*s == ' ') {  /* while (A) は for (; A;) と同じ意味 */
 +         s++;
 +     }
 +     return s;
 + }
 +
 + void G01Main()
 + {
 +     int i;
 +     char s[5];
 +     for (i = 0; i <= 999; i++) {
 +       setdec(s, i, 3);
 +       s[3] = ' ';
 +       s[4] = 0; /* 終端に0を入れる */
 +       g01_putstr0(skip_space(s));
 +     }
 +     return;
 + }
 +-これをmakeすれば?バイトになります。これを実行すると、以下のように表示されます。
 +* こめんと欄
 +
 +#comment
  Next »[4]