2005 年4 月16 日

パソコンの理論は正しいけど、いろいろと失敗するんだ。

int result = 100;
int counter = 0;

while(TRUE)
{
  counter++;
  if (result = 0)
  {
    break;
  }
  result--;
}

printf("Yes, [while loop] end! counter:%d \n", counter);


while文は条件を満たさない限り、ずっと同じ処理を繰り返し行う。

最初100でスタート。1ずつ引いていくと
100, 99, 98, ...... , 2, 1, 0, -1 , -2 .....
0を必ず通るはずだ。0を通ったら終了!

しかし・・・待てど暮らせどWhile文から抜けない!?
『私の最後のメッセージは無視されたのか?(泣』

誤:if (result = 0)
正:if (result == 0)

このミスは初心者時代は意外と大丈夫だ。
しかし熟練してきて驕りが発生すると起きてしまうのだ。
『先生、最近タイピングが早すぎです。』
意外とタイピングが早くて凄そうに見えるがビビるべからず。
ゆっくりタイピングしている貴方の方が遥かに効率的でっせ。

While文では、いつも正しい理論が飛び交っているのだ。
常に正しい理論は常に同じ結果しか生まない。
パソコンにはそれが分からないんだよ。
パソコン自体に創造性は2005年現在は皆無!
ロボットも兵器も、まだまだIF文やWhileで状態監視が関の山。
いやあ・・・安心したね!(笑

おまけ要素として、修正後の最後のメッセージを見てみようじゃないか。
counter値は見事に101という結果が出る。
100回やって終わりじゃないんかい?
『違うのかよー・・・じゃあcounterの初期値を-1にするか・・・』
いいや、counterの更新場所が不適切なのさ。
記述場所をWhile文の最後に持ってこよう。
100という結果になるはずだ。こういう所よく間違えるよなあ(−^−;

少し長くなった・・・最後まで読んでくれた方に感謝(苦笑

投稿者:Bystenderat 02 :08 | 日記 | コメント(2 ) | トラックバック(1 )

2005 年4 月15 日

計算伝言

int Tashizan(int a, int b);

//-------------------------------------
void main()
{
  int result = 0;

  for (int i=1; i<=100; i++)
  {
    result = Tashizan(i, result);
  }
  printf("結果は %d \n", result);
}

int Tashizan(int a, int b)
{
  return (a + b);
}
//-------------------------------------

1から100まで足すと5050。そりゃ皆知ってるさ。
プログラムではどんな風に?まあ、頑張って書くとだな。
result = 1+2+3+4+5+6+・・・98+99+100;
そりゃしんどい。書いているウチに間違えてしまうじゃないか(笑

そこで関数を使うのだ。
『ヘイ、値2つ渡すからそれを足し算してくれ。
 結果でき次第、俺に返事くれ。頼んだよ。』
それがTashizan関数だ。一番簡単な型を書いてみたつもりだ。
分かりにくい場合は遠慮なく叩いてくれ(苦笑

ミソは「関数内の引数値」と「左辺の値」に同じ変数が用いられている所だ。
これは慣れないとできっこない部分である。
でも足し算ならきっと皆出来るはずさ。これ、やってみて!

投稿者:Bystenderat 00 :50 | 日記 | コメント(0 ) | トラックバック(0 )

2005 年4 月9 日

文字列で大抵最初やっちゃう(初期化)

char string[100];

string[0] = 'Y';
string[1] = 'e';
string[2] = 's';
string[3] = ' ';
string[4] = 'I';
string[5] = ' ';
string[6] = 'd';
string[7] = 'o';
string[8] = '.';
string[9] = '\n';

printf("%s", string);

ようし、これで間違いなく『Yes I do.』と表示されるはずだ・・・GO!
『Yes I do.
フフフフフフフフフフフフフフフフフフフフフフフフフ』
笑われてしまった!?バカにされた(TT;

実は初期化をしていないとネィテイブコードでは初期化されないのだ。
初期化とは最初にやるべき処理の話です。何でも最初が肝心ってね。
スポーツにしろ、雑談会話にしろ、人との繋がりにしろ・・・
最初って意外と大事なもんですな。プログラミングとて例外ではないのだ。

char string[100] = "";

これで初期化が行われるんだ。100個のcharには全て0値が入る。
初期化、お膳立て、前準備、どんな表現でも良いので覚えておこうや。

投稿者:Bystenderat 02 :26 | 日記 | コメント(0 ) | トラックバック(0 )

2005 年4 月8 日

もしも・・・お悩みの方

int result = 0;

if ( 0 == result)
{
  printf("YES, normal location.");
}
else if ( 1 == result)
{
  printf("Sorry, but the location is baaad.");
}
else
{
  printf("Haha, Your choice is illigal...");
}

この文章で行くとまずはresultが0か1だと自分の思ったとおりの場所。
   0:予想通りですな(−^−
   1:間違った内容ですぜ(w
それ以外:知らん。とにかくお前の設定が悪い。
実際の所switch , caseの文法でまとめてしまった方が
スタイリッシュなのだが・・・やはりココは初心者が大前提!

まずは『もしも・・・』ってのがプログラムの基本中の基本。
もしもが増えてきたらresultの値を2だったら・・・3だったら・・・
あるいは-1、−2だったら、と負の数でも拡張可能ですな。

投稿者:Bystenderat 00 :33 | 日記 | コメント(0 ) | トラックバック(0 )

2005 年3 月28 日

割り算と余り

int i = 0;
int result = 0;

for (i=0; i<10; i++)
{
  result = i % 2;
  if (result == 0)
  {
    // 偶数の時の処理
  }
  else
  {
    // 奇数の時の処理
  }
}

偶数と奇数の分け方は%演算子で余りを出して判別してみようぜ。
これさえ分かれば、for文の幅が広がる感じがするだろう。

投稿者:Bystenderat 00 :16 | 日記 | コメント(0 ) | トラックバック(0 )

2005 年3 月27 日

プログラミングの例を書こうじゃないか

プログラミングと言うと・・・言語の仕組み、パソコンの特徴、ハードウェアの構成
ロジック、何かいろいろあるんですわ。で、何か書いてみたい事と言えば『ロジック』ハードウェア特性、言語制約、環境設定、そういうの全部抜きで。
後はやっぱりお気楽さをアピールしたい。コテコテの簡単なものしか書いていかないつもりだ。難しい〜〜〜ことやりたくない。ではスタートスタートなり(笑

<足し算する>
int a = 10;
int b = 30;
int result = 0;
result = a + b;

つまりこれでresultは40になる。
足し算は簡単だ。全ての基礎。

投稿者:Bystenderat 01 :23 | 日記 | コメント(2 ) | トラックバック(1 )

| 1 /1 ページ

このページのトップへ