プログラム - みる会図書館


検索対象: 月刊 C MAGAZINE 1992年8月号
103件見つかりました。

1. 月刊 C MAGAZINE 1992年8月号

e ssence 0 List ① " ② " 長い引数と短い引数 ・ VOid get_current diretory_name(char *cdir) ; VOid get_current_directory_name(char *current—directory—name) ; コツを表示してくれます。 表示するテキストファイルは FORTUNE. DOC というファイルて、 , FORTUNE. EXE と同じディレクトリに置く必要があります。 作業ファイルとして , FORTUNE. IND とい うファイルが同じディレクトリに作成され ます。 テキストファイル FORTUNE. DOC の中に は表示されるたくさんの文章が書かれてい 前は読みやすいか , ほかの名前との違いが はっきりしているか , プレフィックスやサ フィックスは必要ないか , 長さは適切か という観点から再検討します。それ がいい名前をつける重要なコッて、す。 ほかの人のプログラムを読む場合て、も同 じことをしましよう。このプログラムの作 者はこの関数にこういう名前をつけている もっといい名前はないだろうか。もっ と読みやすい名前 , 違いがはっきりする名 前 , もっと短い名前 , もっと長い名前のほ うがよくないだろうか。このように考えて みるのて、す。あなたの隣に , 名前づけのう まいプログラマがいないて、しようか ? そ の人は関数や変数にどんな名前をつけてい るて、しようか ? 調べてみましよう。 いい名前をつけるためには , その関数や 変数がプログラムて、どんな役割を果たして いるかをよく理解していなくてはなりませ ん。単にその関数や変数の機能を理解して いるだけて、はだめて、 , ほかの関数や変数と の関係 , またほかと比べたときの重要性に ついてよく理解していなくてはならないの て、す。 機能がわかれば , うまい単語を選べます。 関係がわかれば , 同じプレフィックスをつ けられます。重要性がわかれば , ちょうど よい長さの名前になります。 「名前づけ」について , いろいろと考えて きました。よろしいて、すか。それて、はいっ もの練習問題て、す。今回述べたことを参考 に , チャレンジしてください 練題 【練習】 つ表示します。繰り返し実行すると , 別の と , 画面に「プログラミングのコツ」をひと 引数をつけずに FORTUNE と入力する E. EXE が作成されます。 そのディレクトリに実行ファイル FORTUN クトリに展開した後 , make を実行すれば , 食版て、す。ソースをすべてひとつのディレ 使用コンパイラは LSI-C 86 Ver. 3.30 試 おみくじのようなものを考えればよいて、し とつ抜き出して表示するプログラムて、す。 されたたくさんの文章から , ランダムにひ es/fortune のサプセットて、す。これは , 用意 今月のプログラムは , UNIX の /usr/gam 今戸のプログラム「 fo 「 tune 」 わしい名前がないか検討してみましよう。 名前ひとつひとつについて , もっとふさ 前をすべてリストアップしてみましよう。 とっ取り上げ , その中に含まれている名 これまであなたが書いたプログラムをひ 【実践】 どうか調べてみましよう。 サフィックスがついている関数があるか ている関数をまとめてみましよう。同じ 名前を調べ , 同じプレフィックスがつい 関数の名前がのっています。そこにある C コン / ヾイラのマニュアルにはライプラリ 【調査】 数の名前は何と何にしますか。 なたが strcmp を自分で作るとしたら , 引 両方とも文字へのポインタ変数です。あ 文字列比較関数 strcmp のふたつの引数は ます。各文章は、、 という文字列だけ からなる行て、区切られています。このファ イルはあなたが自由に編集することがて、き ます。 私はこのプログラムを AUTOEXEC. BAT の中から動かしています。私の FORTUNE. DOC の中には「私の教訓」をおさめ , 機会が あるごとに内容を更新しています。 ソースファイル FORTUNE ℃を見て , ど んな関数名 , どんな変数名を使っているか 調べてみてください。あなたならそれぞれ にどんな名前をつけますか。 今回は「名前」というテーマて、プログラミ ングの工ッセンスを考えてみました。プロ グラムを書くうえて、「名前をつける」ことは 必須の作業て、すが , あまり正面切って「名前 って何だろう」ということを考えたことは少 なかったのて、はないて、しようか。 熟練プログラマは名前をおろそかにはし ません。熟練プログラマは本稿のような内 容を非常に高速に頭の中て、判断し , 自分の 関数名や変数名を決定するのて、す。 今回の「プログラミングの工ッセンス」て、 は , その半ば無意識になっている名前づけ のコツの一部を紹介いたしました。 いかが て、したか。 ご質問や私の意見に異論があるという方 は , 本誌とじこみ葉書て、編集部まて、お寄せ それて、は , また来月。 ください。お侍ちしています。 プログラミングの工ッセンス 107

2. 月刊 C MAGAZINE 1992年8月号

SOFT BANK 新しい C 言語の定本、ついに登場 ! PracticaI C Programming 現実的な C プログラミング Steve OualIine 著岩谷宏訳 MS-DOS ユーザーと UNIX ユーザーのための C 言語の本格的入 門書、ついに刊行。現在圧倒的な人気と信頼を誇る、 O'Reilly & Associates , lnc. の NUTSHELL シリーズの 1 冊です。 単に文法の解説にとどまらず、仕様決定から、デバック、完成、発表、改 版まで、プログラミングの全過程にわたって解説。初級者から中・上級者 までのすべての C プログラマを対象とした、 C の入門書です。 CONTENTS プログラムの書き方の基本 / - スタイル / 宣言と式の / 配列、修飾子、数値を読む / 決定 文と制胸文 / プログラミングの過程 / その他の制厳 / 変数のスコープと / C のプリ プロセッサ / ビット操作 / 高度なデータ型 / なポインタ / ファイル出入力 / デバック と化 / ラ」点数 / ポインタの高度な使い方 / モジュール的プログラミング / 性の滝 / C の重箱の隅 / 総まとめ / プログラミング各言葉 付録 ASCII のコード表 / 数値データ型の値域 / 演算子の優先順規則 / べき 級数を使って正弦を計算するプログラム / 関数の引数に関する自動的な データ型変換 A5 判 / 528 頁定価 3 , 6 00 円 ( 税込 ) ◆ C の世界で遊んでみませんか ? 気軽に楽しくプログラミングするコツ、教えます。 C のオモチャ箱 Amuse yourself with C Prooramming 実用的で応用のきくプログラム 10 個をもとに、プログラミングの楽しさと醍 醐味、実際にプログラムを描くためのノウハウを紹介しています。 10 個の プログラムはそれぞれの場面設定がなされ、使用した関数などの具体 的な解説、紹介したツールの作成方法、使用法とで構成。スク付。 CONTENTS TAB ストップは 4 文字で / グ何文字あるの ? / システムにはオリジナルカレンダー / 手始めのデータベースはイ芽危で夬まり / / ひとう dir コマンド / 2 つのファイルが 1 つに早変わり / 一寸一服 / ほんほん跳ねて・・・ / 数字関数で絵を描けば / これができれば立 派な C プログラマ B5 変型判 / 232 頁定価 2 , 900 円 ( 税込 ) Why DO お 2 + 2 = 59863 現実的なプログラ三ング racticalC programming いで 0 “ 0 ″ i 著 岩谷宏課 ソフトバンク株式会社 Amuse 、 00 , 、 elf 、、 ith c p. ・ 0g00 , 0 , i , , g 、 植村富士夫 5 2HD フロッビーティスク付 ( 全ソース / 実行ファイル収録 ) お近くの書店でお求めください ソフトバンク出版事業部

3. 月刊 C MAGAZINE 1992年8月号

ーが ' Y ' もしくは ' y ' てあれば , 何らかの [ 処 理 ] を行うという意図てある。 このプログラムを MS ー DOS 上て、実行した 例を Fig. 1 に示す。ここて、は、、 ShibataO 〃 と入力している。入力後に、、よろしいて、す か (Y/N) ? クと表示はされるが , なんとキ ー入力待ち状態とはならないのて、ある。す ch=getchar( ) ・ なわち , このプログラムの症状は , 以下のように プロンプトが何だか寂しげだ。 が素通りされるのて、ある ( ? ) 。表示される く症状 > 考えられる。 読み込みにおいて , 、、 Shibata@" と入力し だきたい。最初の scanf ( ) て、の文字列による ちとならないのて、あろう。 Fig. 2 を見ていた それて、は , な egetchar( ) て、キー入力待 やユーザの指示どおりに動くものである。 がないかぎり , コンピュータはプログラマ うまて、もなく , OS やコンバイラなどにバグ が無視されるということはありえない もちろん , プログラムとして記述した文 getchar( ) の呼び出しが無視される ( ? ) ストリームと ノヾッファリング getcha 「 ( ) か動作しない ! ? 問題のプログラムを要約したのが , List 1 て、ある。まず , プログラムの動作を考えよ う。なお , 標準入力はキーポード , 標準出 力はディスプレイに割り当てられていると する。 まず , puts ( ) により、、名前を入力せよ〃 と表示し , getchar( ) によってユーザに対 して文字列の入力を促す。ューザが入力を 行うと , 、、よろしいて、すか (Y/N) クとの確認 19 : } 14 : { e に格納されるのは、、 Shibata" の部分てあ り , 、、〃は読み込まれない というのは , scanf() て、、、 % s 〃によって文字列を読み込 むときは , 空白 (whitespace) を区切りとみ なすからてある。 すなわちキーポートから入力されたキー バッフア情報として、、クが残っているの List 確認を行うプログラム ( 問題あり ) だ。したがって , 次の getchar( ) の読み込 みて、は , その、、〃が読み込まれてしまい ch には ' \ n ' が格納されることになる。ためし に ch を表示してみれば , ch がヾ\n〃となっ ていることが確認て、きる。 したがって , getchar( ) によるキー入力 を期待しても , 待ち状態とはならないのて、 のための表示を行う。 こて、入力されたキ 1 2 : 3 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 17 : scanf( ” Xs", name) : puts ( " 名前を入力せよ” ) ; char nameC20] ; i nt. int main(void) く stdio. h> 1 : #include puts ( " よろしいですか ( Y / N ) ? " ) : ch ニ getchar() : if (ch return ( の ; List 確認を行うプログラム ( List 1 を訂正したもの ) 2 3 : 4 : 6 : 8 : 10 : 12 : 13 : 15 : 16 : 17 : 18 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 28 : 29 : } く stdio. h> 2 : #include く ctype. h> 1 : #include main(void) return (ch) ; int ch; int kakunin(void) while (isspace(ch ニ getchar()) & & ch ! = EOF) int i nt c har ch ; nameC20] ; puts ( " 名前を入力せよ " ) ; scanf("%s", name) ; puts ( " よろしいですか ( Y /N ) ? " ) ; ch = kakunin(); if (ch return ( の ; ている。 こて、単語として認識され , nam 64 C MAGAZINE 1992 8

4. 月刊 C MAGAZINE 1992年8月号

世界各国で 4 万もの唇が感動にふるえた。 プラボー / 理想はついに実現した。 美しさ、使いやすさを極めた G 開発ツール、 BRAVO WINDOW そして、 NEC PC -9801 シリーズ、東芝 J -3100 シリーズ、 DOS/V 対応、 画期的なグラフィック開発支援ツール、 BRAVO FACE 。切り札、現わる。 500 種類を超えるグ一フフィック機能を搭載。 完璧な開発環境を提供する、プラボーウインドウ ー構築に使用されるほとんどの部品 ( ウインドウ 5 アイコンパネルまで ) 、そして それらを任意に組み合わせた混合フォームなど、高度な機能を極めて簡単に利用 でき、誰もが気軽に絵を描くようにデザインできる。それが、プラボーウインドウ。多 彩な機能には自動ウインドウマネージメント、ー / 0 ューティリティ、エラー処理、サウ ンド処理、マウス、キーポードコントロールなども含まれます。またオプジェクト指向 デザインを実際のプログラミングに活かせるため、開発時間、メンテナンスの短縮お よびロジック上のバグ減少も実現。 5 種類のポーダー ( シングル枠、ダブル枠、影、立 体、重ね合わせ ) を持ち、カラー、枠の種別、太さ、タイトルの位置決め、マーカー等も 再コンバイルなしに確認できます。しかも—a ( インターフェイスデザインツール ) は、ワープロよりも簡単な画面レイアウトと色付けを可能に。まさに、エンドユーザ コンピューティングの実現です。 レ タ 工 ン フ タ ン 世界中で 4 万人以上のプログラマーに愛用される 画期的なプログラム支援ツール、プラボーフェイス。 世界中ですでに 4 万人以上のプログラマーに愛用され、 8 千種以上のソフトウェア に採用されている画期的なプログラム開発支援ツール、プラボーフェイス。最先端グ ラフィック技術と、 4 万人におよぶプログラマー、一流ソフトウェア開発チームの要求 に応えることで培われた完成度の高さを誇ります。そう、数々の有名ソフトウェアの グラフィック部分はこのプラボーフェイスによって創られているのです。面倒な異機種 間の移植作業、周辺機器への対応、未経験の言語の習得といった、わずらわしい問題 も一挙にクリア。 200 を超える機能と豊富なサンプル、米国ューザが提供する公 開ソースコードやコーディングノウハウ集など、欲しかったあらゆる機能を結集。あこ がれのソフトウェアと同じレベルの品質とスピードを持っソフトウェアを短期間で開 発する。その夢は、いま実現します。 のリラリーマン 0 : - 4 アプリケーション例 0 フォントエデイター タイナミックフォント グラフィック開発支援ツール 開発・動作環境・対応機種・ PC9801 シリーズおよび互換機 ( ハイレゾ含む ) 、旧 M - PC シリーズお よび互換機、東芝」シリーズ、 AX シリーズ・必要メモリ : 640KB 以上・外部記憶媒体・固定ディ ス久フロッビーディス久 EMS ・操作性 ( マウス ) : マウスを基本とするが、全てキーポードのみでも 操作可能・ OS : MS ・ DOS 3.1 以上、 DOS/V 、 SCO ・ UNIX ※、 OS / 2 ※、 DOS 工クステンタ※・ラ イプラリ ( 関数 ) : 約 200 種・対応言語マイクロソフト C ( 5.1 , 6.0 ) 、ポーランドターポ C ( 2.0 ) 、ポー ランドターポ C 十十 ( 1.0 ) 、 FORTRAN ※、 PASCAL ※・グラフィカル・ファイル形式 . PCX ・支援ソフ トウェア : 学習および開発に役立つ DEMO プログラム / バターン化されたサンプルプログラムのソ ースコードを提供・価格 Y120 , 000 ※は英語版のみ。 ( 英語版商品名は MetaWlNDOW) オープン・システムソフトウェア事業部 株式会社当ク〒 105 東京都港区虎ノ門 3 ー 1 ー 1 〒 530 大阪市北区中崎西 2-4-12 …ー”コトクループ電話 ( 03 ) 3437 ー 6691 ーファクス ( 03 ) 3434 ー 9485 ーー電話 ( 06 ) 373 ー 9666 ファクス ( 06 ) 373 ー 7117 く資料請求番号 002 〉 GUI 開発ツール 開発・動作環境・対応機種 PC9801 シリーズおよび互換機 ( ハイレゾ含む ) 、旧 M - PC シリーズおよび互 換機、東芝」シリーズ、 AX シリーズ・必要メモリ : 640KB 以上・外部記憶媒体 . 固定ディス久フロッビ ーティス久 EMS ・操作性 ( マウス ) : マウスを基本とするが、全てキーポードのみでも操作可能・ OS : M 0 S-DOS 3.1 以上、 DOS/V 、 SCO-UNIX ※、 DOS 工クステンタ※・ライプラリ ( 関数 ) : 約 500 種・対応言 語マイクロソフト C ( 5.1 , 6.0 ) 、ポーランドターポ c ( 2. の・グラフィカル・ファイル形式 : ART い MG 、 MSR PCX ・支援ソフトウェア : 学習および開発に役立つ DEMO プログラム / / ヾターン化されたサンプルプログラム のソースコードを提供・ IDT ( インターフェイスデザインツール ) : 会話型アプリケーション編集プログラ ムにより、プロトタイプ ( 原形 ) のソースコード生成・価格 \ 120 , 000 ※は英語版のみ。 ( 英語版商品名は MENUET) PROTECH

5. 月刊 C MAGAZINE 1992年8月号

0 考えて名前をつけないと , 思わぬ誤解やム ダな手間が生じてしまうことになるのて、す。 プログラマは名前について敏感な感覚を持 つ必要があるのて、す。 ちなみに , 意味があいまいになりやすい 語として check のほかに test, mode, statu s などがあります。使っていけないわけて、は ありませんが , 十分な注意が必要て、しよう。 Fig. 1 「結城浩」を考える 結城家 ゆうきひろし 結城浩 「ゆうきひろし」と読む 結城家の一員である 生ロ い口 発やすい名前 漢字 3 文字で構成されている 名前は声を出して呼びかけるために使い 』 S コード ます。実際に声を出さなくても , 私たちは 1 結 376B 名前を見ると心の中て、それをひそかに発音 2 城 3E6B します。そして言葉の奇しき働きにより , 3940 私たちの心の中に「それ」に対する概念が形 グに役立つの ? 」と変に思わず , 自分て、やっ check data ( ) 成されます。 てみてください。私よりももっと多くの発 という名前をつけました。おそらく , デー 次の変数を見てください 見があると思います。ペンネームと本名 , タ ( data ) が壊れているかどうかをチェック char drnm [ 80 ] , 同姓同名 , あだななどについても考えてみ する ( check ) ための関数という意味なのて、し char pthnm [ 80 ] ; てください よう。この関数名 , みなさんはどう思いま これをばっと見て発音することはて、きる こまて、人間の名前について考えてきま すか。 て、しようか。ちょっと難しいと思います。 した。プログラムの世界て、も , さまざまな 私は , この関数名はあまりよくない名前 「ドウルンム」と「プトフンム」 ? ゲームの 名前が登場します。初めに述べたように だと思います。というのは , データが壊れ 呪文みたいて、読みにくいて、すね。実はこれ プログラムを書く仕事のうち , あるものに ているときこの関数は真を返すのか偽を返 は , 変数 , 名前をつけるという作業はとても重要な意 すのかわからないからて、す。 check data と char dirname [ 80 ] ; 味を持っています。以下て、は , プログラム いう関数名を見たとき「データをチェックす char pathname [ 80 ] ; の世界の名前について , 具体的な例をあげ るのだろう」ということは見当がつきます の母音を抜き取ったものなのて、す。なんと ながら考えていきたいと思います。 が , 果してチェックした結果に応じてどの 発音しますか ? 私は「ディアネーム」と「パ みなさんは , ような値が返ってくるのか , 見当がつかな スネーム」と発音しています。前者は「ディ よい名前ってなんだろう いのて、す。たとえば check data の代わり レクトリネーム」と読んて、もいいて、すね。 という間いを頭におきながら , 以下の文章 dirname を drnm と略すくらいなら ,dir あ に を読み進んて、みてください is good data ( ) るいは dname と略すほうがいい。そのほう という名前ならデータが壊れていないとき が意味もわかるし , 発音しやすいからて、す。 名可まなせ大切か 真が返ってくるということがはっきりしま 「ディレクトリ」あるいは「ディーネーム」と す。 読めます。発音しやすい名前は覚えやすい ところて , プログラミングにおいて , 名 もちろん check data という名前て、も , 関 て、すし , 別の開発者に「この変数ディーネー 前というのはそんなに大切なのて、しようか。 数仕様書やコメントをよく読めば , ど うい ・司と説明するときもやりやすいて、し ムカす・・ それを確認するためにひとつ例をあげまし う場合にどういう値が返るかははっきりす よう。発音しやすい名前をつけるように よう。今 , メモリ上のあるデータが壊れて るて、しよう。しかし , せつかく名前という ころがけましよう。そして発音しやすくす いるかどうかを判定する関数を作るとしま 情報伝達の仕組みがあるのに , それを利用 るためには母音を省略しないということが しよう。ある人はその関数に しない手はありません。プログラマがよく 大切て、す。 たぶん「男性」てある ひろしひさし , ひとし , ひてき・・・ →たいがい男性の名前 ひろこ ひさえ , ひとみ , ひでこ・・ →たいがい女性の名前 プログラミングの工ッセンス 103

6. 月刊 C MAGAZINE 1992年8月号

32B PROTECT MOD 0 16 ヒット I)( ) S のプログラム開発において ()KB の 壁と 80386CPU 等の本来のスヒードを使えない事 はアプリケーション開発にとって最大の障壁です DOS 工クステンダは、膨大な拡張メモリをフラット な領域として、ユーサプログラムに提供し、ユーサ プログラムを 386 本来のスヒードで実行します PharLap 社の DOS 工クステンダは、 DPMI (DOS Protected Mode lnterface) 環境と XMS 環境に完全対応し、 Windows の様な DPM 一環境下で実行可能なアプリケーションを 開発できますこれを含む開発ツールキットが米国 PharLap 社の開発した 38 例 TOOLBOX です 新発売 640KB の壁を破る DOS プロクラムのための開発ッ→ ー 32 ビットフルセット開発ツール OOLBOX 実行環境により、 MS ー W ⅲ dows に代表される DP Ⅵ環境 DOS 工クステンダ対応高級言語 ( 別売 ) MetaWare 社 High C386(NEC, 旧 M 版 ) や [S 環境下での実行や他のアプリケーションとの共存 38 田 TOOI 田 OX は、 DOS 工クステング・アセンプラ・リンカ・ ソースレベルデパッガ ( 旧 M 版 ) ライプラリアン・デバツが仮想記憶マネージャ及び環境カ が可能です。 MicroWay 社 NDP FORTRAN386(NEC, 旧 M 版 ) スタマイズユーティリテイからなる強力な開発ツールキットで ◆プロフェッショナルアセンプラを標準装備 NDP C386(NEC, 旧 M 版 ) す。米国では CAD システム等の開発ツールとして絶大な信 ー動作環境 TOOI 田 OX の 32 ビットアセンプラは ~ 4 CPU 旧 7 ・ 頼を得ています。 HARD : 80386 / 386SX / 48CPU 搭載機 287 ・ 387NDP の全命令を使え、ソースプログラム形式はマ NEC PC - 、 H98 シリーズ、 EPSON PC 6 シリーズ 開発した製品を販売する場合のみランタイムライセンスが イクロソフト社の MASM Ver. 5 とほば完全な上位互換性を 旧 M PC / AT 互換機、各種 AX マシン東芝 J -38 、 J -3 シリーズ * 富士通 FMR シリーズ版については、御連絡下さい。 必要です。 実現、 32 ヒ釥プログラムへの移植は容易です。しかも、アセン ハードティスク カレ動作は超高速で内部のシンポルテーカレなどにサイ ◆柔軟で高機能な開発環境を提供 諸 B 以上のプロテクトモードメモリ SOFT MS-[X)S V .3.1 以上 ズ制限がないので大きなプログラムのアセンプレに最適です ツール群の柱となる Ph L 叩社の DOS 工クステンダは 及び相当品 MS ー DOS を拡張し、 386CPU 本来のスヒ。ードと 4G バイト ◆ユーサーパワーを拡張する 32 ビットリンカ のアドレス空間をユーザプログラムに提供します。 DOS TOOLBOX のリンカは 32 ビットオプジェクトや、鳳 SM 等の 工クステンダ自身が DOS プログラムのため、従来の工 16 ビットオプジェクトとのリンクができ、 32 ビットプログラミン タ等のツールや DOS の管理下にあるデバイスドライバを グに最適です。しかも、プロテクトモードで動作し、 640 利用できます。 V & AM 等へのアクセスも専用セクメントを使 KB の制限なく、より大きなプログラムを高速にリンク い直接アクセスできます。また、 D()S へのシステムコールの します。 他、リアルモード手続きの呼出し、プロテクトモード割り込 ◆仮想記憶マネージャ 38 引 VMM みをするための拡張システムコールを標準サポート。 3 ーⅥ IM はデマントべージング方式の仮想記憶マネー ◆ DPMISXMS 、 VC 完全サポート ジャです。ハードスクの空き領域を利用し、本体に実装 DOS 工クステンダで実行されるプログラムは、その幅広い されている以上のメモリー空間をプログラムに提供します。 阨 2.2d 蛉れ 4 バージョンアップサービス実施中い問い合わせはテク = カルサポート ~ 。 ーツ・ : 第い 386 灯 00 出 OX 定価 \ 198 , 000 ( 税別 / 使用機種別に購入して頂く必要があります ) * ランタイムライセンス¥ 68 , ブッりソフト & プー辷ユ株式会社 コンビュータ事業部 新会社設立のお知らせ 〒 273 千葉県船橋市本町た 11 ー 5 レランドセンタービル 5F TEL 0474 ー 23-1322 FAX 0474 ー 23 ー 0202 テクニカルサホート 容 0474-22 ー 9355 *MS DOS は議佖「 0 れ C の登録商です , ネその他、フロクラム、システム、コフロセッサ、 CPIJ 名は、各メーカーの登録商です〕 S - E 印 de いー A 驎 4 : ー凵 NK. ー DEBUG, Ⅵ、は米国 p 「 L 叩社の登録商宿です 製品についての 043 ー 284 ー 4822 (略称 TISCO) 問い合わせ先 新住所》〒 261-71 千葉県千葉市美浜区《本社電話番号》 TEL. 043 ー 297 ー 3061 中瀬 2-6 WBG マリフィースト 12F FAX. 043 ー 297 ー 306() ※新住所への移転は 7 月 27 日よりとなりますのて、以降はト . 記の住所・電話番号にてお願い致します。 く資料請求番号 87 〉 テックソフト & サービス株式会社コンヒ。ュータ事業部は、 7 月より《 新会社として分離独立致します。今後とも変わらぬご愛顧を賜り ますようお願い申し上げます。

7. 月刊 C MAGAZINE 1992年8月号

権利がどこに帰属するかを決めるのに問題 を取り出すのと同じて、す。 て、きなかったと聞いています。 はありませんか ? しかし , 既成の C 十十そのほかでは満足 わかりました。 Nelson 私たちが目指しているシステム NeIson ファイルプロックを取り出す段階 できす , 独自のツールに頼らざるを得なか は , ほかに類を見ないほど包括的て、 , シン は , 各アプリケーションのバックグラウン プルて、 , そして公平て、す。技術者は , 著作 Nelson C 十十て、プログラムを作るのは悪夢 ドて、行われる目に見えないサービスて、す。 権の概念に我慢がならず , 「そんなものはい て、す。 しかし , Xanadu アプリケーションはすべ らない。われわれにはテクノロジーがある て , 互換性のある連係した素材を利用て、き どうしてですか ? じゃないか」といいます。 Nelson いや , 私自身はプログラマて、はな るという大きな利点を持っています。 しかし , 権利の所有者は , もちろんそん いから , そう聞いただけて、すよ。 Xanadu の著作権システム なふうには考えません。て、きるだけいいも 開発スタッフがそういったんですか ? のに仕上げるために必死に努力したんて、す Nelson ええ。 SmalITaIk がいちばん適し から , 当然て、すよね。 ていて , そこから C 十十に自動変換て、きるそ ユーサはほとんど Xanadu を意識する必 Xanadu は , そうした権利を保護し , 出版 うて、す。どうしてこういう方法を選んだの 要や情報源がどこにあるかを知ることなく , 活動から一切の形式的手続きを排除します。 かは知りません。 ParcPlace SmallTalk を 世界中のどんなコンピュータからでもアク 現状て、は , 著作権を認めてもらおうとする 使えば , 私たちが手掛けているマシンに合 セスできる。そうですね ? とめんどうな手続きが必要て、 , 明らかに障 った効率的なコードをコンパイルて、きるは Nelson ええ 0Xanadu を動かしているサー ずて、すよね。なぜそうしなかったのかよく バさえあればいいんて、す。サーバがどんな 害になっています。 わかりませんが , 多分プログラムサイズの ードウェアなのかは意識しなくて結構て、 ノ、 問題て、しよう。私たちのプログラムは非常 す 0Xanadu は , ライセンスを受けたべンダ ー同士を結んて、います。もしあなたが Xana に大きいて、すから。 du ノードを持ちたければ , こちらに電話し ほかにも , このプログラムのモジュール てその旨を告げてください。早速契約を結 性や , デバッグのしやすさ , サーバの機能 び , あなたの機器をチェックして , 構成を などが関係していると思います。もっと小 確認します。それだけて、 Xanadu にリンクて、 さなプログラムだったら , C 十十が役立った き , 自由に独自の Xanadu サービスを旗あげ て、しよう。 SmaIITalk コードのメンテナン スのしやすさ , C 十十の細分性やモジュラー て、きます。料金も勝手に設定て、きます。 うして Xanadu サービスが広がり , ューザは 性といった特長を評価して , 組み合わせて Xanadu は , 形式的手続きを排除する包括 ドキュメントの必要部分だけを取り出して , 使っているのて、はないて、すか。て、も , 技術 的なシステムて、あると同時に , あらゆる情 取り出したドキュメントについてのみ自動 的な質問はほかの開発スタッフに聞いてく 報が今より入手しやすい環境を整備します。 的に著作権料を払います。また , ューザは 現在起きている論争は , 著作権保護の立場 , ドキュメント全体を引き出さなくても済み Xanadu 自体は , ユーサが自由にカスタ つまりあらゆるものを入手困難にしたがっ ます。極端にいえば , ある段落の最初の 1 単 マイズできる柔軟性を備えているんでしょ ている人たちと , 著作権に反対する立場 , 語だけ引き出すことも可能て、す。こんなシ うか ? つまり情報をもっと入手しやすくすべきだ Nelson もちろんて、す。 Xanadu はサーバて、 ステムはほかにはありません。 と考える人たちの対立て、す。しかし Xanad あり , つまりルーチンの集まりてす。すべ そうですね。 u なら , 著作権を守り , かつ情報を入手しや てのドキュメントは仮想 , あるいは事実上 Nelson 出版者も , 顧客つまり読者も , そ 仮想て、す。ドキュメントを登録し , 後て、サ れぞれサービス提供者と契約することにな すくて、きます。 ります。そして , 1 時間単位の使用料 , 情報 ネットワーキングソフトウェアや記憶 バ上て、変更していくと , 変更過程のバー 送信料 , 著作権料を払います。全部ワンセ ジョンが次々に生まれます。変更を行うご 装置にはかなり経費がかかりそうですが ? Nelson 記憶装置の費用は , ューザ側が負 ットて、す。 とに毎回バージョンを保存て、き , 総コスト 担しなければなりません。て、すから , サー は非常に低く抑えることがて、きます。どの 著作権とははたして文献に限られるの か , プログラミングの「ルック & フィール」 バージョンのどの位置 , と指定すれば , た ビスの料金は , 記憶装置とコミュニケーシ ョン整備のコストに応じて決まります。そ ちまちそこへジャンプて、きます。基本的に にもおよぶのかなど , 著作権保護に関して の点は市場が開拓されるのを待っしかあり Xanadu はオペレーティングシステムに似て 現在いろいろな議論があります 0Xanadu は いますね。 DOS を使ってファイルプロック 膨大な著作権物の貯蔵庫になるわけですが , ません。 巻頭インタビュー 11

8. 月刊 C MAGAZINE 1992年8月号

ープロクラミング道場 ある。 さて , 先述の【症状】は , 、、嘘〃て、あるこ とがわかったて、あろう。 getchar( ) の呼び 出しは無視されているのて、はなく , 正しく 、、 \ n 〃を読み込んて、いるのだから List 1 の プログラムは , プログラマの命令どおりに 動作したのだ。症状を取り違えると , その 原因を探ることなどて、きるはずはない 【重要】期待する動作をしないプログ ラムの症状を取り違えてはいけない 咳が出るからといって , 必ずしも風邪薬 もしかしたら喘息か が効くとは限らない Dr. 望洋の ストリームとバッファリング もしれないのだから。 ストリームのバッファリング の文字の総称て、ある。 てはない。 C 言語ての空白は , 次の五つ わゆるスペース文字のみを意味するわけ 空白すなわちホワイトスペースは , い 空白 (white space) のバッフアを強制的にフラッシュしようと と fflush 関数によって , 標準入力ストリーム ch=getchar( ) ; fflush(stdin) ・ すなわち , ラッシュする に , 標準入力ストリームのバッフアをフ 【解決策 ? 】 getchar( ) を呼び出す前 のような解答を出した。 かの学生に命じたところ , ほとんどが , 次 このプログラムを修正するように , 何人 'Yf' 'Yn' 'Yt' 'Yv' : スペース (space) : フォームフィード (form feed) 改行 (new line) : 水平タブ (horizontal tab) 垂直タブ (vertical tab) いうことて、ある。 このように変更したプログラムは , なる など私の使用している環境て、は正しく動作 する。 fflush ( ) の呼び出しにより , キーバ ッフアに残っているが掃き出されるのて、 , getchar() によって , キーを 1 文字入力てき るようになる。 しかし , この方針はいただけない。後述 するように , 環境・処理系によっては動作 C 言語ては , ファイルなどの入出力をスト リーム (stream) という概念て扱う。入出力 を円滑化するために , ストリームはバッフ アリングされる。すなわち , 1 文字 ( バイト ) の入出力を行うたびに , ファイルに対して 読み書きを直接行うのてはなく , ある程度 バッファ ( buffer ) に読み書きすべきデータが たまった段階てバッフアの内容を読み書き するのて、ある。 C 言語てのバッファリングには , 以下に示 す 3 種類がある。 (a) 完全バッファリング (fully buffering) 入力 : バッフアがフルになるまて入力が 行われる。バッファルが空になるま て、ファイを読み込むことはない 出力 : バッフアがフルになるまて出力が 行われる。バッフアがフルになるま てファイルに書き出すことはない (b) 行バッファリング (line buffering) 入力 : バッフアがフルになるか , 改行文 字を読み込むまて、入力が行われる 出力 : バッフアがフルになるか , 改行文 ShibataU しない可能性があるのだ。 リダイレクトを使ってみよう。 と確認用の文字をファイルとしたものて、あ て、作成しよう。もちろん , 入力すべき名前 のようなファイルを "shibata" という名前 A> listl く shibataU と実行すると , 標準入力ストリームは , キ ーボ、一ドて、なく , ファイル、、 shibata" に割 り当てられる。すなわち , scanf( ) や getch ar() は , ファイル、、 shibata" から読み込ま れることになる。このように実行すると , ( 私の環境て、は ) またまた getchar( ) が無視 される ( ? ) のて、ある ! ! キーポートからの入力だと正しく動作し , ファイルからの入力て、は誤動作をしてしま うのだ。フラッシュ操作には , 次のような 規則があることを覚えてほしい 【重要】入力ストリームに対するフラ ッシュ操作の動作は定義されない ( 環境・ 処理系やストリームに結び付けられてい るファイルなどによって異なる ) 字を書き出すまて出力が行われる (c) 非バッファリング (unbuffering) バッファリングは行われない 可能なかぎり入出力は直ちに行われる バッファリングの方式を指定するには , tvbuf 関数を使用する。この関数は , 以下 の形式を持つ int setvbuf(FlLE * st 「 eam, char * buf, int mode, Size t size) バッファリング方式に対応する mode には , <stdio. h> に定義されている , 以下の定数の いずれかを指定する。 IOFBF : 入出力を完全にバッファリング IOLBF : 入出力を行バッファリング IONBF : 入出力をバッファリングしない そのほかの引数や , 具体的な機能・動作 などについては , 参考文献 [ 1 ] や , 処理系 のマニュアルなどを参照していただきたい。 なお , setbuf というライプラリも用意されて いるが , tvbuf の機能に含まれるのて、 , あま り利用することはないだろう。 D 「 . 望洋のプログラミング道場 65

9. 月刊 C MAGAZINE 1992年8月号

プログラムマネージャー [WDK] ウインドウ ~ レプ ( 川 ファイルいオプション⑨ MYPAL MENU DEMO TTY 三日 0 sample AppIicatioÄß ßitmap Menu ExampIe 阯 i に朝い 5 States 釦幵「 e 「匱キⅢ click ⅲ t ト旧 f0 「 a popup rnenu Patte 「 n 確 e indows 対応 C コンヾイラ TTY MetaWa 「 e MULTIPAD COMBO 日に 0 n 0 ー肥 n 「 Name ト e を Duectories ト b ヨ ト c ヨ ont 新 e 節司 i 朝朝「 0 可 MetaW 社印 G C386 WDK は、 MS-Windows Ve 「 .3.0 のエンハンストモードを完全にサポートした C 言語コンパイラです。 Windows A の サポートにり優れ GU 陸有するアプリケーションの構築ができます。また、 Pha 「 Lap 社の 38 引 DOS ー Extender にも対応しているので 640KB のメモリをた S アプリケーションの構築もできます。 HIGH ◆豊富なコプロセッササポート しかも、強力な最適化機能と 32 ビットネイテイプコードの生成 数値演算コプロセッサ 80287 、 80387 、 80486 、 EMC87 、 により、超高速な実行速度を実現。また、漢字対応なので Weitek 1167 / 3167 を完全にサポートしており、高速な 日本語の処理ができます。 浮動小数点演算処理を実現します。 38 引 DOS ー Extender の DPMI 規格対応により作成された ◆ 32 ビットタイナミックリンクライプラリ DOS プログラムは、 MS-Windows の D()SF- 換 BOX で実行 可能です。 DOS 工クステングプログラムの、デバッグには、ゾー 独自の DLL スーパーバイザにより、 32 ビットの DLL fo 「 MS-Windows Ver. .0 (Dynamic I ・ ink Library) を生成できるので、多機能 スレベルデバッガが使用できます。 かっスマートな Windows アプリケーションが開発可 Enhanced & 38 引 DOS-Extender ー必要なハードウェア 能です。 ー / SX / / SX CPUß載機 ◆ 16 ビットタイナミックリンクライプラリの呼び出し ◆開発効率を向上させるメイクユーティリティ NEC PC - シリーズ、 EPSON PC シリーズ、旧 M / AT 互換機 ハードディスクと 2 、旧以上のプロテクトモードメモリ MWMAKE は、シンプルなマクロと豊富なオプションスイツ call 16 ( ) 関数により MS-Windows SDK でつくられ Wind 。 ws プログラミングに必要なソフトウェア チにより、ソースコードの修正に伴うプログラムのコン、イ た 16 ビット DLL を 32 ビット Windows アプリケーションか ・ Mic 「 09 代 mndows Ve 「 .3.0 ・ M に「 09 代 Windows Software Development Kit ルとリンク処理を効率良く行うユーティリティです。 ら使用できます。 ( 但し、 Unlock Data( ) を使用でき - DOS 工クステンダブログラミングに必要なソフトウェア - ◆ Windows A サポート ません ) EPharLap 社ぼ (X)LBOX Ve 「 .4 V 部 .3.1 以上または相当品日本旧 M DOS/V V 4.2 以上 ◇ DOS 工クステンダ対応 標準で 6 開種類にも及ぶ Windows API 関数を全てサ ※ DOS 工クステンダブログラミング専用の H 旧 H C3 跖もあります。 ポート OAPI 関数は HIGH C386 WDK に含まれるヘッ 38 引 DOS ー E ender 対応なので、ポインタが 32 ビットに グファイル ( windows. h ) で 32 ビット関数としてプロトタイプ なり FAR ポインタを使用せずに 4G バイトに及ぶアドレッ 宣言されており、パスカル呼び出し規約に従って使用で シングが可能で、 640KB のメモリの壁を気にせずに、巨 定価 \ 238 , 000 きます。 大な DOS プログラムをスムーズに開発できます。 ( 価格に消費税は含まれておりません。 ) 新発売 ※写真は開発中のものです。 テッりソフト & プー辷ユ株式会社 コンピュータ事業部 新会社設立のお知らせ 〒 273 千葉県舶橋市本町た 11-5 レランドセンタービル 5F TEL. 0474-23-1322 FAX. 0474-23 ー 0202 テクニカルサホート 0474-22-9355 *MS DOS 、 MS ・ Wndows 、 MS-Wndows SDK はト物「 0 釦れ C p の商標です . * その他フログラム名、システム名、コフロセッサ名、 CPU 名は一般に各メーカーの登録商標てす 《新社名》テック情報システム株式会社 製品についての 》 043 ー 284 ー 4822 (略称 TISCO) 問い合わせ先 テックソフト & サービス株式会社コンヒ。ュータ事業部は、 7 月より 《新住所》〒 261-71 千葉県千葉市美浜区《本社電話番号》 TEL. 043 ー 297 ー 3061 新会社として分離独立致します。今後とも変わらぬご愛顧を賜り 中瀬 2-6 WBG マリフィースト 12F FAX. 043 ー 297 ー 3060 ますようお願い申し上げます。 ※新住所への移転は 7 月 27 日よりとなりますのて、以降は E 記の住所・電話番号にてお願い致します。 く資料請求番号 008 〉

10. 月刊 C MAGAZINE 1992年8月号

LDB-80X LSI C コンバイラ プログラム開発から一バッグのまで LDB-80X は、 LSI C -80 (MS-DOS) て、開発したソフトウェアのデ バッグ環境を、 MS - DOS 上て、実現するためのソースレベル・クロ スデバッガて、す。これにより、プログラム環境からデバッグエ程まて : アセンプラを意識することなく C 言語レベルて、のプログラム開発が 行えますのて、、大幅にソフトウェアの生産性が向上します。 ■ LDB -80X には、動作モードとして以ドの 3 種類のモードて、 動作します。 1 . 64180CPU ボ、一ドを使う 180 モード 2. V30CPU の 8080 工ミュレーションを使う V30 モード 3. ソフトウェア・エミュレーションモート ■ Turbo-V システム、または Turbo-18011 システムと併用すれば、 CP / M -80 のアプリケーションソフト ( COM ファイル ) のデバッグ が可能て、す。 ・ LDB -80X は、操作性に優れたウインドウ指向デバッガて、す。 5 つのウインドウ ( コード、レジスタ、ウォッチ、コマンド、及びオプ ションウインドウ ) とホップアップ・メニューがあります。 実行中のユーザ・プログラムを任意の時点て、、強制的にプレー クさせ、制御を LDB -80X に戻すことがて、きます。 複数のコマンドを組み合わせて、新しいコマンドを構築するマク ロコマンド機能があります。 ■ LDB -80X から MS - DOS のコマンドを起動する、サププロセス 機能を持っています。 ■その他、 LDB -80X には、コマンドウインドウの表示コントロール ( カーソル制御、画面消去等 ) 、 I / O の入出力工ミュレーション、 メモ、オプション設疋、ロキング、バッチ等 のコマンドが用意されています。 ・ MS - DOSVer. 2.11 以上、 384KByte 以上 必要 ・ NEC PC -9800 シリーズ (PC-98XA, XL, XL2, RL のハイレゾリューションモードも含む ) ・ EPSON PC -286 シリーズ / PC -386 シリーズ LSI C -80 (MS-DOS) 十 LDB-80X セット価格 128 , OOO 円 局速、コンパクトなコードを生成 レジスタの最適自動割り付け レジスタによるパラメタ渡し アセンプリ言語の埋め込み記述可 ANSI 準拠・プロトタイプ宣言を完全サポート ROM 化に最適 ターケット CPU. 8080 / Z80 / 64180 ・ MS ー DOS 版クロス ・アセンプラ、リンカ付き ・ UNIX の cc と同様の使いやすいコンパイラ・ドライバ ・ UNIX コンバチ・プログラム保守ツール make ・ライプラリ、コンパイラドライバ、プリプロセッサのソース付き ・ MS-DOS Ver. 2.11 以上、 384KByte 以上必要 ■ UN Ⅸ版クロス ・価格 398 , OOO 円より ・ NEWS 、 Sun-3 、 vsx シリーズ、 Kurama 、 SX -9100 シリーズ、 LUNA 、 HP9000 モデル 300 シリーズ、 2station2()() 、 Micro VAX 、 VAX-II ※その他の機種については、ご相談に応じます。 ・ CP / M 版セルフ 価格 98 , 000 円 ・ CP/M-80 Ver. 2.2 以上、メモリ 60K CP / M 以上必要 価格 48 , 000 円 ・アセンプラ、リンカ付き ・フログラムの実行をモニタするツール ・ ANSI 標準規格て、定義された関数のうち多 バイト文字関係とく locale. h > を除く、すべての 関数を用意、ライプラリーのソース付き ・ ROM 化のための初期設定モジュールのソ ース付き ・ MS-DOS Ver. 2.11 以上、 384KByte 以 E 必要 LSI C -80 価格 98 , OOO 円 LSI C -86 ターケット CPU : 8086 [ LDB -80X の走行環境 ] k. れ 0 物 , ( 0 】 0 しは・「一 ′ ( i を第い i ter “ー 0 ーは← ) ( 21 田田 」 .. ・ eox れ - ◆ 16 題下ロ 日 .E 工 : 震 1 : ー ( i ter ・ 1 : iter 佃ー i を← ) ( 創き S 田 .E 工 : を : 創王 C 第圏ー 、 F8 - in- 咜ー ・コート ッ -1 タ / i 社′に i ( 物 1. 町 オプション一覧 グラムロード アイルリード / ライト トー擎 , 参ゥ / ソース プ・プ 9 セス クロコマン ハーウェの ロケーショ、 メモ ー / 0 家ー 工ル・エス・アイジャパン株式会社 CP/M は DigitalResearch c. 、 MS-DOS は MicrosoftCorporation 、 Z80 は Z ⅱ og 」 nc. のそれぞれの登録商標です。 〒 151 東京都渋谷区千駄ヶ谷 1 丁目 8 番 14 号 UNIX は BeII Labo 「 ato ⅱ es の米国内での登録商標です。 LDB-80X, Tu 「 bo ・ V / 180 は京都マイクロコンビュータ 谷 ( 03 ) 3404 ー 1319 ・ FAX ( 03 ) 3478 ー 0576 株式会社の商標です。その他、商品名は各社の商標です。 く資料請求番号 F03 〉