日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

同じプログラムを作るにもいろんなやり方がある

テスト言うことでコンピュータネタもあんまりないですね。
まぁその一方何かとニュースがあったので書いてたわけだけどね。
そんな中、今日はプログラミングの試験があったわけです。
例によってCですよ。
なんでCをやるのかというのは授業で言ってなかったけどね。
これが説明できないのならば、Cを特に取り上げてやる理由はないだろうと思うけどね。
僕は、これで作られたプログラムは多い、これを参考に作られた言語が多いというのが理由だと思うけどね。
これで作られたプログラムというと、UNIX系OSもそうだし、Windowsもそうだ。
これを参考にして作られた言語は多すぎる。けどJavaにしても、Perlにしてもそんな感じはしますよね。
で、今回のテストは変数と演算子と制御構文なんだから、Cのかなりの部分となりそうなもんだ。
もっとも、取り上げた演算子はさほど多くないけどね。算術演算子、ビット演算子、比較演算子ぐらいか。
制御構文は、if、while、forぐらい。しかしこれぐらいあればCの機能のかなりを説明できてますよね。
クラスでいろいろ言ってたわけだが、whileとforは似ているのでもっぱらforを使おうと思った人がいた。
どういうことかというと、
#include <stdio.h>
main(){
int c1,c2;
c1='A';c2='a';
for(;c1<='Z';){
putchar(c1);
putchar(c2);
c1++; c2++;
}
putchar('\n');
return 0;
}
そのときは、putcharでなくprintfの%cで表示させてたけど。ついでに改行コードも書いてなかった。
どういうことかというと、forの初期化式・カウントアップ式に2つ以上の式を書くことができないから、別に書きましたと。
だからその部分は空っぽ。これでもきちんと動きます。
しかし、実際はこれはwhileでやればいいことです。けど、forの一部を省略するという考えでwhileみたいなものが作れると。
なるほど、確かにそういう考えもありだ。
さて、それで実際のテストがあったわけだが、特に問題もなく進んだ。
全部手書きだ。こういうとき\(BackSlash か Yen Sign/0x5C)を¥と書くか\というのはあるわな。
TeraPadで使ってるフォントが\だし、楽だからついついこう書いてしまう。
しかし授業で使ってた、notepad.exeで、設定されてたフォントはMS Gothicで、Yen Signで示されている。
無用な混乱を避けるためにYen Signで書いたわけだが…
ASCIIやUnicodeから見れば日本語のフォントの対応がおかしいわけで。一方、Shift_JISではYen Signが正しくて、BackSlashは間違え。
こんなこと言うと、「ここは日本だ」と言われて、Yen Signを使うのが妥当と言われそうなもんだが。
それはともかく、今回は幸いメモリ破壊の温床となるようなこともなくスムーズに行った。
しかし、問題文をよく見ると、Cで書けと書いてない。
こんなこと書かなくていいと思ったのかも知れないけど、結構まずいんじゃないかな。
これも暗黙でCで書けと書いてあると解したがひねくれものは、
#!/usr/bin/perl
$s = 0;
foreach(1..100){ $s += $_; }
print "1+2+..+100 = $s\n";
という風に書いてもよいと思うかも知れない。
(一般的にPerlは /usr/bin/perl にあると思われている、だからPerlのスクリプトにはこう書きたくなる)
こういう問題を解くのにCを使うのは適当と言えないでしょうしねぇ。
もし、Webブラウザがそこにあるなら、
javascript:var i; var s=0; for(i=1;i<=100;i++){s+=i;}alert('1+2+..+100= '+s);は結構いい解だろう。
JScriptやVBScriptに慣れてる人ならそれもいい解だろう。
という変なことを言っては不可になってしまうかな。
Author : Hidemaro
Date : 2008/06/05(Thu) 23:55
コンピュータ・インターネット | Comment | trackback (0)

Tools