ページへ戻る
印刷
GUIGUI01/memo24
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:GUIGUI01/memo24 をテンプレートにして作成
開始行:
TITLE:x
* ぐいぐい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すれば70バイトになります。実行す...
0 1 2 3 4 5 6 7 8 9
----
-さてそれではもう少し桁を増やします。でもsprintfは使いた...
#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すれば144バイトになります。これを実行すると、...
000 001 002 003 004 005 006 007 008 009 010 011 012 013 ...
020 021 022 023 024 025 026 027 028 029 030 031 032 033 ...
(中略)
960 961 962 963 964 965 966 967 968 969 970 971 972 973 ...
980 981 982 983 984 985 986 987 988 989 990 991 992 993 ...
----
-もしかしたら最初のほうで、0が000になっていたり、1が001に...
#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;
g01_putstr0(s);
}
return;
}
-これをmakeすれば173バイトになります。これを実行すると、...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
(中略)
960 961 962 963 964 965 966 967 968 969 970 971 972 973 ...
980 981 982 983 984 985 986 987 988 989 990 991 992 993 ...
----
-ex0009は桁がそろっていてきれいだと僕は思うのですが、もし...
#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;
g01_putstr0(skip_space(s));
}
return;
}
-これをmakeすれば195バイトになります。これを実行すると、...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48...
(中略)
7 968 969 970 971 972 973 974 975 976 977 978 979 980 98...
7 988 989 990 991 992 993 994 995 996 997 998 999
----
-さてここまではただ数字を数えているだけでした。こんなのく...
-それでは今回の最後は、もうちょっと計算らしいことをします...
#inlude <guigui01.h>
void setdec(char *s, int i, int n)
{
(ex0010.cと同じ内容)
}
char *skip_space(char *s)
{
(ex0010.cと同じ内容)
}
void G01Main()
{
int i, j = 0;
char s[11];
for (i = 0; i <= 100; i++) {
j += i;
}
setdec(s, j, 10);
s[10] = 0;
g01_putstr0(skip_space(s));
return;
}
-これをmakeすれば183バイトになります。これを実行すると、...
5050
-もちろんこれは正解です。言うまでもないですが、これをたと...
----
-おまけ
--[Q] 「ぐいぐい01」の使い方を覚えるメリットってなんです...
--[A] はい、結局はそれだけです。
--[Q] 単純にC言語の勉強をするとしたら、普通にprintf()とか...
--[A] この先5年くらいまでを想定して、仕事に使える能力とい...
--[Q] なんですかその言い草は?まるで10年後はそうではない...
--[A] はい。ちょっと説明させてください。・・・まずあなた...
--[Q] なんか急に偉そうですね。じゃあなんですか?「ぐいぐ...
--[A] はい。「ぐいぐい01」はそうではありません。現在は開...
--[Q] でもx86でしか動かないんですよね?x86が主流じゃなく...
--[A] それはそうです。おそらくその頃にはそのCPU用の「ぐい...
--[Q] それにgccだって古いバージョンを入手してコンパイルす...
--[A] その通りです。でも比較的新しいディストリビューショ...
--[Q] それにLinuxのバージョンを上げなければ、そもそも再コ...
--[A] そうですね。でも古いPCが故障して新しいPCを買ったと...
* こめんと欄
- 次回はコマンドライン引数関係のAPIについて書く予定。だけ...
- abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-16 (金...
#comment
終了行:
TITLE:x
* ぐいぐい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すれば70バイトになります。実行す...
0 1 2 3 4 5 6 7 8 9
----
-さてそれではもう少し桁を増やします。でもsprintfは使いた...
#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すれば144バイトになります。これを実行すると、...
000 001 002 003 004 005 006 007 008 009 010 011 012 013 ...
020 021 022 023 024 025 026 027 028 029 030 031 032 033 ...
(中略)
960 961 962 963 964 965 966 967 968 969 970 971 972 973 ...
980 981 982 983 984 985 986 987 988 989 990 991 992 993 ...
----
-もしかしたら最初のほうで、0が000になっていたり、1が001に...
#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;
g01_putstr0(s);
}
return;
}
-これをmakeすれば173バイトになります。これを実行すると、...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
(中略)
960 961 962 963 964 965 966 967 968 969 970 971 972 973 ...
980 981 982 983 984 985 986 987 988 989 990 991 992 993 ...
----
-ex0009は桁がそろっていてきれいだと僕は思うのですが、もし...
#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;
g01_putstr0(skip_space(s));
}
return;
}
-これをmakeすれば195バイトになります。これを実行すると、...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48...
(中略)
7 968 969 970 971 972 973 974 975 976 977 978 979 980 98...
7 988 989 990 991 992 993 994 995 996 997 998 999
----
-さてここまではただ数字を数えているだけでした。こんなのく...
-それでは今回の最後は、もうちょっと計算らしいことをします...
#inlude <guigui01.h>
void setdec(char *s, int i, int n)
{
(ex0010.cと同じ内容)
}
char *skip_space(char *s)
{
(ex0010.cと同じ内容)
}
void G01Main()
{
int i, j = 0;
char s[11];
for (i = 0; i <= 100; i++) {
j += i;
}
setdec(s, j, 10);
s[10] = 0;
g01_putstr0(skip_space(s));
return;
}
-これをmakeすれば183バイトになります。これを実行すると、...
5050
-もちろんこれは正解です。言うまでもないですが、これをたと...
----
-おまけ
--[Q] 「ぐいぐい01」の使い方を覚えるメリットってなんです...
--[A] はい、結局はそれだけです。
--[Q] 単純にC言語の勉強をするとしたら、普通にprintf()とか...
--[A] この先5年くらいまでを想定して、仕事に使える能力とい...
--[Q] なんですかその言い草は?まるで10年後はそうではない...
--[A] はい。ちょっと説明させてください。・・・まずあなた...
--[Q] なんか急に偉そうですね。じゃあなんですか?「ぐいぐ...
--[A] はい。「ぐいぐい01」はそうではありません。現在は開...
--[Q] でもx86でしか動かないんですよね?x86が主流じゃなく...
--[A] それはそうです。おそらくその頃にはそのCPU用の「ぐい...
--[Q] それにgccだって古いバージョンを入手してコンパイルす...
--[A] その通りです。でも比較的新しいディストリビューショ...
--[Q] それにLinuxのバージョンを上げなければ、そもそも再コ...
--[A] そうですね。でも古いPCが故障して新しいPCを買ったと...
* こめんと欄
- 次回はコマンドライン引数関係のAPIについて書く予定。だけ...
- abcdw014向けの記述に修正。 -- ''K'' &new{2009-01-16 (金...
#comment
ページ名: