ております。あまりこればかりに を歩んでしまうのではということ も , だれても「初心者」だったし , ☆時間がほしい 誌面を割くわけにはいきませんが , です。 C の学習に王道はありません ( たぶ てきるかぎり要望にはお応えして ソースリストが付録ディスクで ん ) 。習うより慣れろてす。慣れて 仕事で C 言語を使うようになって いきたいという気持ちは強くもっ 供給されている間は定期講読を続 しまえばなんとなくわかってくる 1 年程度の新人です ( 社会人として ている , という表れだとご了承く けようと思っていますが , おまけ はうな気がする ) ものてす。たと は , X 年経過しているので , 間違っ のバイナリファイルの質よりも記 え , それが誤解てあったとしても , ても新人″なんて言えませんが 事のソースリストの質・実用性を また , LSI C ー 86 の試食版は近い そこをとっかかりにしてゆけばよ ・・・ ) 。 1 年間 , C 言語を使っていな いのてす ( いいかげん ( 将来新バージョンが付録ディスク 高めてください。 がら , 未だよくわからず , せつか 鶴岡利明 ( 千葉県 ) にお目見えする予定てす。 く購入した C マガジンも半分ぐらい ☆のソースを 初心を忘れず , これからもや 理解しないまま 1 か月が過ぎていま ☆ソースを入力するのか勉強では ? PC9801 に加え , ダイナブックを っていく予定てす。ただし , す。理解するための時間がほしい 買った。 98 の Tu 「 bo C ディレクトリ C 言語に限定しないて , 必要に応じ 4 月号の岩谷さんの記事にあるよ 今日この頃です。 を表示するプログラムを組んで , てほかの言語にも取り組んていく うにソースコードは自分の手で打 山本智子 ( 神奈川県 ) 」 3100SS で動かそうと思ったら動か ことは計画しています。 ち込んだほうがためになると思う。 ☆がほしい ない。メッセージは引 OS が違う″ したがって , リストなどはすべて ☆ C は遅い / という表示。同じ MS-DOS なのに ( あまりに巨大なもの除いて ) 誌上 4 月号より付録ディスクに *XC 何故。どうやら ROM ー引 OS を直接ア ()C 用ディレクトリ ) が設けられた に掲載するだけにして , ディスク C は遅い / といったら石のひとつ クセスするルーチンを使った関数 ので , 嬉しく思っています。創刊 には PDS の面白いゲームを入れてほ も飛んでくるでしようか ? ファイ を使ったみたいだが , MS ー DOS がこ 高野直樹 ( 神奈川県 ) ル処理が主となるプログラムを書 号から購入していますが , なかな んなにも不便なのかと痛感。本誌 付録ディスクは本来本誌掲載 く場合 , 単発的なプログラムであ かすべてに目を通すことができま に掲載するプログラムは , ぜひ感 98 せん。 10 日ぐらい続けて休みたいも リストを入れるものて , ほか れば , MS-BASCOM が一番速いよう のものは空き容量にサービスて入 用″とか , 偏ったものでなく , MS のです。 c 言語は , 面白そうなので です。仕事の都合上 , ファイルコ -DOS 汎用のソースを載せてほし れているファイルてす。あくまて 少しずつ学んでいこうと思ってい ンバート処理がたびたび必要にな 富沢晴男 ( 神奈川県 ) 久吉ー馬 ( 千葉県 ) も本誌掲載リストが主人公てすか るのですが , 短いプログラムであ い。 。ただ , 本誌掲載リストを れば , すべて BASCOM を使用してい ☆ C をるよい ☆ F TO コーナー ご自身て入力されたあとのチェッ ます。 c 言語ソフトが一本あればす シャープの X group がコンノヾイラ クに入力することが勉強になるこ べてまかなえますが , 時と場合に 全体に用語とかがわからないの メーカーのコーナーに参画したか とは確かてす。その場合は , 付録 でとても難しい内容に見える。 応じていろいろ使い分けたほうが らには , 富士通の FM ー TOWNS 用の ディスクのリストを使っていただ れは , 私の勉強不足なのでしよう 時間の節約になります。 コーナーも設けていただきたい けたらよろしいかと思います。 小島伸ー ( 神奈川県 ) がないが , はっきりいってビギナ (High-c の後押しとして・・・・・・ ) 。 ーなので付録につられて購入した。 ☆今己 C マガラく末 ☆こ、らの靆は ? しかしうまく使いきれない。これ 付録デスクにメディアが 5 インチ も勉強不足だ。第はじめてのと やっとの思いで RAM を増設し , ハ でも , FM - TOWNS 用のものを収録し 記事の内容で心配していること か入門 C 〃などの本を見ても , ど ードディスクを付けて , OS / 2 を使 ていただきたい ( X68 がある以上 は , C 言語の話だけでこのままネタ うも C 言語は馴染みにくい。何かよ い始めたのですが , 対応ソフトが が続くのかということ , また , 分 ・・・ ) 。また , 付録ディスクに , PDS い方法はないものか。 やメーカーのサンプル版 ( LS ツャパ 野を広げよくあるパソコン系一般 あまりない。マルチタスクとして 石橋周帥 ( 愛知県 ) Ⅷ NDOWS / 386 などもあり , 今後 3 年 科学雑誌のような万人向け路線を ンの L 引 C ー 80 なんかよいと思うの 確かに C を学ぶまての道のり 間位 OS を変えたくない自分として ですが ) を入れてほしい。 いってしまうのではということ , は , 初心者にとってはなかな 斎藤淳 ( 東京都 ) は , 今どの OS を採用すればいいの そしてハードにまで手をだし , マ ①同様のお便りを多数いただい かなじめないかもしれません。て ニアック , マイナーな月刊誌の道 かわかりません。 OS に DOS, WIN しい。 Reader's Room 155
プジェクト指向 月グラミングを支る 本当の理由 抽象化 , カプセル化 , 継承とつづいた のシリーズを個人的な修正主義者としての 視点から結論する。私の最終結論はオプジ ェクト指向プログラミングを支持するが , それは通常の理由からて、はない。これから その理由を説明しよう。 大型プログラムを構成する際に解決すべ き大問題のひとつは , 書かなければならな い関数すべてになんらかの構造を与えるこ とだ。初期のころの構造化設計の遂行者は , 私たちに構造チャートを描けといった。 ちばん上にメイン関数用のポックスを描く。 その下にメインから直接コールされる全関 数用のポックスを描き , コールを意味する 矢印をつける。このポックスの下にはさら に次のレベルのポックスがきて , 矢印が , プログラム中のすべての関数を書き 終わるまてつづける。 再帰のない FORTRAN や COBOL< はこ れて、よいが , 再帰のある言語ては再帰によ ってきれいなツリーがぐちゃぐちゃの線に なってしまう。階層の下のほうからの矢印 がツリーのルート付近まて延びてループに なる。少数のポックスだけててきていた構 造化チャートが再帰のためにほとんど読み 取り不可能になる。 再帰がなくてもファンイン ( 訳注 : 5 月号 参照 ) のドキュメントには問題がある。すな わち複数の上位モジュールがひとつの下位 モジュールをコールするのが当たり前な場 合てある。たくさんのファンインがあると 最上部て広がったチャートは最低部に向か って収束する。構造化設計者が大好きな , おなじみのアラビアのモスクの形になる。 大規模な設計のためだけてはなく , 通常 の場合にもファンインを使ったほうがよい モスクの形はあなたのプログラムと 1 段下位 の抽象との間てうまくインタフェイスが取 れたことを意味している。下位の抽象が 16 CMAGAZINE 19 6 DBMS< も , ファイルシステムて、も , マル チプロセスの OS< も , 少数の入口だけを通 してやり取りをしたい。この入口を通過す るには 6 から 12 個くらいのインタフェイス関 数をコールする。構造化チャートの最低部 にこれらの関数のポックスがある。 3 ダースくらいまて、の関数には有用な構造 化チャートを描ける。最低部にあるファン インのため矢印の何本かが交わるが , ドキ ュメントはまあまあよく表現て、きるし , 読 むのに困難もない。 3 ダースを越えると構造 化チャートは役に立たなくなる。 システムインタフェイス関数へのコール をすべてドキュメント化するのは , いろい ろな意味て、すべての p 「 int 文をドキュメント 化するのと同じくらいばかげたこ のモジュールが実際に I / 0 を行うかを知るの はけっこうだが , 構造化チャートの中にそ もし print 文 れを入れたら混乱するだけだ。 のあるすべてのモジュールを見せるなら switch 文についてもそうすべきだろう。 switch 文て、 はランタイムサポート関数への内部的なコ ールを行っているかもしれないのだから ( 訳 注 : switch 文を実現するためにジャンプ先の テープルを用意して , このテープルを指定 された値て、サーチするような内部関数呼び 出しが使われることがある ) 。最後には if と wh ⅱ e を使っているモジュールについても見 ることになってしまう。 象化 , カプセル化 , 、目指すもの 私たちの多くはどこに線引きをすべきか はっきりわかっている。プログラム中の文 は私たちがコードを書く言語の一部といっ てもよいだろう。水道の蛇口を修理しただ けてドキュメントは作らない。 ( 文てはなく ) 関数を書くことて価値を与えているのだ。 そこを記述したいのだ。 気づかなければならないのは , 私たちが 徐々にミニ言語を作成していることだ。 100 以上の関数のあるプログラムて、は , ほとん ど例外なく関数を複数のかたまりとして扱 う。あるかたまりは簡単な DBMS をインプ リメントし , またあるかたまりはインデッ クスつきのシーケンシャル編成をファイル セットの上に乗せ , さらに別なかたまりは たんにホスト OS のプロセススケジュールプ リミテイプとのインタフェイスを行ってい るだけかもしれない トップレベルの制御とこのかたまりすべ てを包括する構造化チャートを描いたりし たら , 役立たずのねずみの巣 ( 訳注 : 大きな プログラムのすべてを記述すればどうして もごちやごちゃになってしまう ) になるだけ だ。ファンインが 3 つの別々のかたまりへ向 かい , さらにおのおののかたまりの中に構 造があったりしたら , 矢印がどのポックス につながるかわからない そうてはなく , 外部とつながりのある 6 か ら 12 個の関数を使って , 各かたまりの特長 を記述しなさい ( これが抽象化への取り組み 例て、ある ) 。各かたまりごとに別々の構造化 チャートを描きなさい ( カプセル化の例 ) 。 最後にトップレベル制御の構造化チャート を描いて , それぞれのかたまりの中の関数 へのコールはすべて省略する。 この構造化チャートに関するかぎり , のようなコールはプログラミング言語中の 余分な文にすぎない。多くの場合 , このよ うな文は既存のライプラリやシステムサー ビスを使う数個のインタフェイス関数を使 うとインプリメントてきる ( 継承の例 ) 。 オプジェクト指向言語を使って大きなプ ログラムを読みやすく表現てきるなら , ぜ ひそのオプジェクト指向言語を使いなさい しかし , もう手続き型のプログラミングを していないと考えてはいけない。依然とし て手続き型の関数は存在しているのて、 , そ のような関数は階層化しなければならない 複数の関数をかたまりとして扱う , よりよ い管理テクニックを見つけただけだ 翻訳協力 Mr. Rick Naro
ー NATO ′ッコン LAN 進化論。 クイックサーバ登場 ! クイックネットか、 さらに LAN の密度を深めます 0 ⅵ ck NET あなたのソフトを LAN てパワーアップ 高性能テータベースサバ クイックネット上で 大容量ファイルを高速処理 ■自由度の高いネットワーク クイックサーバの豊富な機能とクイックネットの 簡易な操作性を組み合わせることにより、業務 分散、機能分散、資源分散等が設計しやすく なり、より柔軟て、効率的なシステムを構築て、きま す。クイックサーバを中継すれば、他システム との結合も可能て、す。 ・容易な拡張性 システムが小規模なうちはクイックネット ( Qnet E または Qnet L) だけて、運用し、規模の拡大 時にクイックサーバを導入することがて、きます。 Qdb ライプラリを利用したソフトは、どちらの環境 て、もそのまま動作しますから、導入時にプログラ ムの書換えは必要ありません。導入後、すぐに 運用が再開て、きます。 最低 2 台のパソコンで LAN を構成 パソコン間のディスク共有も自由自在 クイックネットては満足て、きなし 50 台以上のパソコンを接続したい。 共有ファイルのアクセスをもっと高速にしたい。 クイックサーバはこのようなユーザのために、新 しいアーキテクチャのもとて、開発されたサーバ 専用機て、、本格的なネットワークシステムの構 築をサポートしますクイックサーバには UNIX system V を採用しています。 ・豊富な機能 ・データベースの高速アクセスがて、きます。 ・複数のネットワークが結合て、きます ・ユーザ独自のサーバ機能が組み込み可 能て、す。 ・仮想デンスクの機能を備えています。 ■チューンナップされた 電子メールシステム クイックネットて、電子メールシステム (Qmail) を 構築した場合、クイックサーバをメールサー にすれば、 QmaiI は、豊富な機能を活用して大 きくパワーアップします。 クイックサーノヾ QS2000n 0 S280A 、 0 いすーヨーイ、 0 ー 5 イイ、第、い 各パソコンから自由にアクセス あなたの LAN が必ずありま魂どこから始めよう、クイックネット。 クイックネットは、どの製品も同一のコマンド体系を採用しているのでシステムアップが容易で魂 1 ノード 2 万円台の低価格 LAN リモートメンテナンスの必需品 最大 50 台のパソコンを接続可能 汎用 LAN インターフェース採用 この価格で信じられない高性能 遠隔地間を LAN 仕様で接続 しかも / ード単価 8 万円台の低価格 豊富なネットワーク周辺機器と接続 0 能 t, 0 能 t 0 能鱈 One tS 三ナトルニズ株式会社 削 NATO 阯圧 m02 に S ー (. ネットワーク営業部 / 〒 213 川崎市高津区坂戸 100 ー 1 KSP C-3F TEL : 044 ( 819 ) 3481 代 TEL-:% ( 348 ) 9277 代 大阪営業所 / 〒 530 大阪市北区曽根崎新地 2 ー 6 ー 21 TEL : 0273 ( 23 ) 9701 代 北関東営業所 / 〒 370 高崎市双葉町 6 ー 25 TEL : 092 ( 475 ) 2825 代 福岡営業所 / 〒 812 福岡市博多区博多駅東ト 9 ー 5 TEL : 022 ( 291 ) 2571 代 仙台営業所 / 〒 0 仙台市宮城野区榴岡 2 ー 2-10 本社・工場 / 〒 223 横浜市港北区南山田町 4105 モテム対応 QuickNET 拡張性抜群の高級タイプ 高性能 LAN インターフェース LAN 入門ノヾッケージ PC ん 31 GT, / タイナブッグ B16 / FMR PC ん -31mGT, / ダイナブッグ B16 / FMR PC98 / B16 PCWB 16/FMR/Panacom M ん -31 GT 小規模 LAN から大規模 LAN まてフレ 最大 4 台まて接続可能な低価格パソコン 公衆回線を経由して 2 ヵ所のパソコンを 操作性・視認性を重視した汎用インター キシプルに構築てきます。ノード単価 8 万 LAN 。従来の RS232C て、は考えられな 接続てきます。回線接続後は、 LAN 環 フェース採用により、ネットワークの使用 境の QuickNET と同じ操作て運用て 円台にも関わらず最大 50 台のパソコンが かった高速伝送 ( 50Kbps ) を実現。 状況を常に把握可能。さまざまな周辺機 接続可能てす。 器と接続てきます。 きます。 ・価格 : 2 台組キット ( \ 48 ℃ 00 ) 増設ケープレ 5m ( \ 15 , 0 ) ・価格 : 2 台組キット ( \ 48 , 000 ) ■価格 : 1 ノード分 ( \ 89 , 8 より ) ー価格 : 1 ノード分 ( ¥ 185 , 0 ) 増設ケープレ 10m ( \ 20 , 000 ) 増設ノードキット ( \ 24 , 000 ) * ネットワークケープル他は別売 モデム別売 *UNIX は、 AT & T 社がライセンスしています 〈特約店募集〉 ・問い合わせ窓口 く無料体験セミナー実施中〉 ・申し込み窓口 やすだ ネットワーク営業課担当 / 保田、吉永 TEL. 044-819-3481 FAX. 044-819-34 ・テレホンサポート担当 / 蒔野 TEL. 044-819-3487
シャープ X グトプ 0 「 m on from (ompiler ma 「 5 C C i 給「 PRO-68K Ver. 1 .01 これを行うことにより , TEST. プルプログラムを , List3 に掲載し A ポックスを描くには , C というファイルを実行するとき , ますのて、参考にしてください。な つねに 256K バイトのヒープサイズ 、、 TXBOX" を , ポックスフィル お , ポックスを消去するときは , を確保するようになります。 は , "TXFILL" を使います。サン "line style" を 0 にします。 ②実行時にヒープサイズを指定 プログラム中でメモリサイズを指定するサンプルプログラム 0 List1 のように•malloc" で大 コンパイルした実行ファイルを 1 : #include ” stdio. h ” きな領域のメモリを確保しようと 実行するときスイッチをつけてヒ 2 : #include "stdlib. h ” 3 : ープサイズを拡大することがてき しましたが , できませんでした。 4 : #define 引 ZE 200 * 1024 5 : どうしたらいいですか ? ます。 6 : main() [ 例 ] A>TEST /HEAP : 256k 8 : Char *ptr, *lmt; 9 : この指定をした実行時にだけ , ヒープサイズは初期値て 64K ptr = malloc( SIZE ) : printf( ”第 a Ⅱ oc ( ) = X6xHYn ” 256K バイトのヒープサイズを確保 ヾイトて、す。したがってヾ ma Ⅱ oc 〃 lmt = sbrk( SIZE ) : 12 : printf( "sbrk() 13 : て、確保て、きるメモリサイズもヒー します。 ptr = ma Ⅱ oc ( 引 ZE ) : 14 : printf( ”田 a 日 oc ( ) = X6xHYn ” . 3 プログラム中でメモリサイズ プサイズ内となり , 64K バイト以上 16 : } を指定する のエリアを確保しようとすると , C のメインプログラムの中て変数 NULL が返されメモリを確保する の宣言の後に "sbrk" 命令て、メモ ことがて、きません。 このヒープサイズを設定しなお リサイズを指定する 1 : #include "iocslib. h ” 2 : 例として List2 にサンプルプログ すことにより , 64K バイト以上のメ 3 : #define NUM 5 * 2 4 : #define N-WORD 16 モリサイズを確保することが可能 ラムを掲載します。 5 : #define OFFSET 20 6 : #define B し UE 0 て、す。メモリサイズを確保するに このプログラム実行中に , ヒー 7 : #define YB しし OW 1 8 : #define SO い D 0xffff は次の 3 つの方法があります。 プサイズを拡大します。このサン 9 : #define DOTTED 0xaaaa 10 : #define DOTTEDB 0X5555 ①コンイレ時に、 " スイッチ プルプログラムては , 64K バイト十 11 : #define DOTTED2 0xcccc 12 : #define ERASE 0 をつける 200K バイトのヒープサイズを確保 13 : 14 : int page[ NUM ] スイッチソ h 〃をつけることに しています。 16 : int xy[ NUM ] より実行時のヒープサイズを指定 17 : int xlyl[ NUM ] - 18 : int style[ NUM ] - することがて、きます。指定てきる 20 : ヒープサイズは , 最小値は 8K バイ 21 : main() ト , 最大値はメモリのサイズによ 23 : int i; 24 : struct TBOXPTR って変わります。 25 : struct TXPI しし PTR 26 : [ 例 ] A > CC/h256k TEST. C for ( i = 0 : i く NUH; i + + ) { 27 : tbOX. vram-page : page [ i ] : 28 : tbox. x = xy[ i ] * N-WORD; 29 : tbox. y = xy [ i ] * N WORD : 30 : tbox. xl = xlyl[ i ] * N-WORD: tbox. yl = xlyl[ i ] * N-WORD; 32 : tbox.l ine-style = style[ i ] : 33 : TXBOX ( &tbox ) : 34 : 35 : for ( i : 0 : i く NIJM; i + + ) { 36 : tfill. vram_page = page[ i ] : / * テキストのページ * / tfill. x = ( xy[ i ] + OPPSET ) * N_WORD;/* 始点 X 座標 * / 38 : tf i 日 . y = xy [ i ] * N_WORD : / * 始点 Y 座標 * / 39 : tfill. xl = xlyl[ i ] * N_WORD; / * 最終点までの X の長さ * / 40 : tfill. yl = xlyl[ i ] * N-WORD; / * 最終点までの Y の長さ * / 41 : tfill. fill_patn = style[ i ] : 42 : / * フィルバターン * / TXPI しし ( &tf i Ⅱ ) : 43 : 44 : 45 : } Q&A List 2 ptr ) : lmt ) : = X6xHYn ” ptr ) : TXBOX と TX 日 LL を使ったサンプルプログラム List 3 0 0 ーしーリ ーレーし ↑ー甲ー , 0 ↑・ ーしーレっ 0 , っ 0 ↑ーじ ↑ー↑ー 0 0 , 0 ↑ー ーしーし 8 《 8 0 0 , 00 0 ーーしーレ ・ 8 い 0 《 0 し《 0 ・《 0 1 よ 00 《 0 . し′ 0 0 【し 0 c 言語でテキスト画面にポック スを描きたいのですが , どうした らいいですか tbox : tf i Ⅱ : 0 ささ 長長 / ジのの * ののイ の標標ででタ ト座座ままス ス X 点点ン キ点点終終イ テ始始最最ラ List 1 m 訓 oc でメモリを確保できないサンプルプログラム 1 : #include ” stdio. ド 2 : #include ” stdlib. h ” 3 : 4 : #define SIZE 200 * 1024 6 : ma i n ( ) 8 : Char 9 : ptr = nalloc( SIZE ) : printf( ” malloc() *Ptr: ptr ニ X6xHYn" CMAGAZINE 19 6 154
三田典玄の 実践 C プログラマ 養成ま まだハードディスクも作っている。つまり ードディスクのそれよりもはるかに高かっ ードディスク部門をすぐになくすわけに たからこそ , 仮想記憶機構によってあるは はいかない。徐々にこの業界の世界情勢を ずのないメモリエリアを確保しよう , など 見つつ , 採算の取れなくなった部門から閉 ード / ソフト両面てのさまざ とがノ、 じてゆく , というのがやはりノーマルな経 まな苦労によって実現されてきたのだし , 今 , あなたがそういうパソコンを使って 営というものだろう。だが , もしここてそ 機械機構を駆使した「ハードディスク」なん いるとしよう。すると ( あなたがポケていな の「ノーマル」てあることを捨てれば , 「それ」 てものもて、きたのだ。 いとすれば ) きっとこんな疑問が湧いてくる を最初にした企業が , この業界のイニシア だから , この「 1 ビット当たりの単価」の比 はずだ。 チプを握っていくに違いない。人と違うフ 較がひっくり返ると , もう仮想記憶機構な 「なぜ私たちはわざわざ同じメモリ上に、、デ ィールドまて、登りつめたければ , 人と同じ どというコストダウンのための手練手管は イスク〃なんてものを作って , 、、ファイル管 ことを考えていてはやはりだめなのてはな 意味がなくなる。 理〃をして , 邸ディスクからプログラムを口 いだろうか ? プログラムはメモリ上にすてにあるのだ ード〃してこなければならないのだろう ? 」 とくにアメリカ企業を相手にした場合 , から , 「ロード」されるのてはなく , たんに これは「なぜ MS ー DOS のテキストファイル アメリカて、は半導体企業とハードディスク OS から制御が渡るだけになる。だからファ 形式が行の終わりをヾ CR / LF 〃の 2 文字にしな などの周辺機器企業が同じてある例は少な イルシステムの意味もかなり変わる。ディ ければならないのだろう」というのと同じた 前記のような状況になった場 い。つまり , レクトリは動作可能なプログラムや利用可 ぐいの疑間てあるといってよい 合 , 今まて、の「総合型日本企業」は不採算部 能なメモリ上のデータの一覧表になる。 ただたんに , 今ある現実を受け入れるこ 門に足を取られる可能性もなきにしもあら のことばて、いえばすべてが「コンカレント」 とだけに腐心して , その背景や文化といっ ず , といったところだろう。逆にアメリカ になるのて、ある。 たものをいっさい問わない人にはこういっ にとってみると , これは世界の半導体産業 私は , 「最後の / イマン型コンビュータ」 た「疑問」は無用だが , 創造的仕事を尊ぶ人 を自国企業の手に取り戻す絶好の機会ても への用意はもう秒読みに入ったのて、はない 間にとって , この疑問は次の世代のコンヒ。 ある。 だろうかと思っている。 ューティングを語るカギになるのて、はない 一昨年 , 私はある仕事てアメリカの某ハ しかし , 日本の半導体メーカーの多くは だろうか , と私は思っている。 この疑問に対する回答は , 「かってハ ディスクという複雑至極な外部記憶装置が あったから・・・・・」という説明から始められる ことだろう。そしてそれは , 「かって半導体 メモリの 1 ビット当たりの単価がハードディ スクの 1 ビット当たりの単価をはるかに上回 っていた」という話に続く。「なぜ仮想記憶 機構などという複雑てやっかいなものがあ るのか ? 」などという疑問もすべてここにいき っく。ということは , そういうことを新米 のプログラマたちに語らなければならない 時代がもし来るとしたら , それはおそらく 今を生きる私たちの仕事がいかにいい加減 なものて、あったかを後世に示すことと同じ てある。 半導体メモリの 1 ビット当たりの単価がハ OS はどうなるのだろう , 108 CMAGAZINE 1990 6
次にもの、ライプラリ 0 全製品ソースコード付属 / 組み込みロイヤルティー無料 0 The C Libraries UBGM / クラフ作成プロクラム定価 \ 98 , 000 NEW 定価 \ 148 , 000 UBGM/EX 12 種類のグラフ作成機能を提供するバッケージです。例えば、必要なバラメータを設定し、関数を呼 び出すだけで円グラフや棒グラフを簡単に描画することかできます。さらに、タイルバターン、ライン バターンとの対応、日本語文字列をグラフィック画面に表示する機能をサポートしているので、ヒジネ スアプリケーションで必要とされるあらゆるグラフ情報を表現てきます。 ・ 12 種類のグラフ作成機能円グラフ / ドーナツッグラフ / パイチャート / 横棒グラフ / 横棒クラフ ( 複 数 ) / 横棒グラフ ( 積み重ね ) / 縦棒グラフ / 縦棒グラフ ( 複数 ) / 縦棒グラフ ( 積み重ね ) / 帯グラフ / 折 線グラフ / レーダーチャート ・描画位置、大きさを好みに合わせて描画てきる、サポート関数を用意 ◆ EX は八イレゾリューションモード / ノーマルモードのどちらでも使用できます。 ■ CCF, / 総合コンソ - ルコントロールライプラリ定価 \ 59 , 800 「 G 「 a ロ c & MouseJ 十 rWindOW & Menl-JJ 十 CKey & Dis ay 』十プリンタ関数十拡張関数 等合計 200 以上の関数で構成されるライプラリバッケージ ・ CG 「 aphic & MouseJ 、 CWindOW & tKey & Dis ロ Y 」については各製品の説明を こ覧ください。 ・プリンタ関数は OS を介してプリンタに文字コード、制御コード送り、印字 / 制御を行う関数、拡 張関数はテータ工ントリ関数をはじめとするキー入力関数、文字列処理関数等があります。 ー Graphic & Mouse •Graphic & Mouse EX 定価 \ 29 ′ 800 定価 \ 59 ′ 800 N88 日 AS 旧相当のグラフィック機能とマウス機能を提供するライプラリノヾッケージです。 ・ Nd8BASlC 相当のグラフィック関数 sc 「 een 、 view 、 C0に「、 pallete 、 cls 、、 D 「 eset 、 line 、 ci 「 cle 、 paint 、 tile 、 get 、 DLJt 、 kanJic 、 POint 、八一ドコピー等 ・拡張グラフィック関数拡張線分描画、拡張連続線描画、拡張円描画、グラフィック画面への文字表 示関数を備えています。これらの関数はすべて日 EPLACE / CLEA 日 / 0 日 / XO 日の 4 つの描画モ ードのいすれかを選択指定することができます。レーマルモードのみ ) fline 、 flines 、 fci 「 cle 、 g—cha 「 ・マウス関数 m 」 nit 、 m—diSD 、 m—e 「 ase 、 m—DOS 、 m—set 、 m 」 ft—on 、 rn 」 ft—Off 、 m—「 it— on 、 m—「 it—off 、 m—cu 「 SO 「、 m—steo 、 m—mickey 、 m—hO 「、 m—ve 「、 m—「 ange 、 m—COlO 「 ◆ EX は八イレゾリューションモード / ノーマルモードのどちらでも使用できます。 ARS -232C ライプラリ 定価 \ 49 ′ 800 'RS -232C ライプラリ / EX 定価 \ 98 ′ 000 MS - C から呼び出すことができる日 S -232C コミュニケーションライプラリバッケージです。 「日 S -232C ライプラリ」は主に OS を呼び出して、日 S -232C のコントロール、送受信を行っていま す。もちろん、 2 、 3 回線もサポートしています。 「日 S -2 C ライプラリ / EX 」では OS 呼び出し版の他に、使用環境に制限がなく本体はテパイスド ライバ化され、インターフェースライプラリを介して呼び出すテパイスドライバ版とマルチサーバ対応 のテパイスドライバが拡張されています。 ◆対象言語・・・・・・ MS - C 4.0 / 5.1 用のみ ◆日 S ー 232C ライプラリ ( \ 49.800 ) は MS - DOS のヴァージョン、型番に制限があります。 OCIisp 定価 \ 98 ′ 000 C ⅱ s ロは Lis ロのもつ強力なシンホリックプロセシング機能を C に付加させるライプラリ。 ca 「、 cd 「をはじめとする基本的な Lis ロの関数、述語、プロバティリスト、シンボリックバターンマッ チング機能、コンテキストセンシテイプテータベース機能、ルールべースプロセシング機能等で構成さ れています。これらの機能により、 C と Lis ロの長所を活かした“ハイプリッド”なプログラム開発が可 能になります。また、ルールべースプロセシンクを行うライプラリも付属しているので、エキスパート システムの構築、自然言語インターフェイス等の開発が容易になります。 ◆ MS ー DOS が走行する機種 / 英文マニュアル / ANS ト C APINNACLE FILE MANAGER 定価 \ 128 ′ 0 PINNACLE FILE MANAGE 日は C 言語から呼び出すことがてき、 80 以上の関数で構成されて いるテータベースマネージメントシステムです。名前によりテープル、コラム、ローをアクセスする方 法を採用することにより、あたかも 2 次元配列、または表をアクセスするように操作できます。インテ クス、テータを含むすべてのファイルは 1 つのファイルにまとめられているので、アクセスの高速化、 バックアップ、メンテナンスに便利てす。また、部分的にキャッシュバッフアを使って高速化を図るな ど実用性にも留意して設計されています。 ◆旧 M ー PC / AT およひ互換機用 / NEC PC ー 9800 シリーズ用 ◆英文マニュアル / MS ー C 5.1 / Tu 「 bO ー C 1.5 以上 . ACodeBase4 定価 \ 98 ′ 000 AWindow & Menu AWindow & Menu/EX 定価 \ 29 ′ 800 定価 \ 49 ′ 800 テキストウインドウ、メニュー関数のライプラリバッケージ。最近のちょっとしたソフトでは大抵ウ インドウ機能を備えています。例えばスクリーンエテイタては画面を分割し 2 つ以上のウインドウを開 いて編集できるとか、データーベース、業務用ソフト等では簡単な説明や操作ガイドをへルプウインド ウを開いて表示したりしています。このような表示を行うためのマルチウインドウ機能とウインドウを 利用したメニュー選択機能を提供します。 ・ 20 個のウインドウをオープンできる、ウインドウのオーバーラップ機能 / 切り替え機能 / 移動機能、 横長タイプ、縦長タイプ、羅列タイプの 3 タイプのメニューウインドウ、テキスト V 日 AM を直接ア クセスしてウインドウ及び文字の表示を行っているのて、非常に高速です。 ・ウインドウへの文字列表示 / ウインドウ内のスクロールはスクロール関数と、文字列表示を伴った上 下スクロール機能があります。 ・カスタマイズ・ウインドウーウインドウのフレームキャラクタ、フレーム色、ウインドウ内の表示色 の設定が可能です。この機能により、好みの色、キャラクタを用いたウインドウを定義できます。 ・テキスト V 日 AM を直接アクセスしてウインドウ及び文字の表示を行っているので、非常に高速です。 ウインドウの切り替えや移動も瞬時に行われます。 ◆ EX は八イレゾリューションモード / ノーマルモードのどちらでも使用できます。 0 Key & DispIay 定価 \ 29 ′ 800 キーボード、ティスプレイ関数のライプラリバッケージ。ソフト開発で欠かせないファンクションキ ー及び ANK 、漢字の入力、 V 日 AM を直接アクセスしての文字表示等 100 を越える関数で構成。 ・ ANK 、漢字、ファンクションキーを同一関数で入力可能、日本語入力 FEP のコントロール、すべて の文字属性を指定領域に設定可能、テキスト V 日 AM の切替え表示 / スクロール / カット / ペ - スト 等が可能、高速 / フレキシプルな画面表示、全画面 / 部分のスクロール、表示文字の取得、カーソル コントロールシステム、ファンクションキー表示のセープ / リストア / 設定 / クリア etc. ( 走行環境 ( 共通 ) ) ◆機種 ... NEC PC ー 9800 シリーズ ( げ、 XA 及び XL 、 XL2 、日 L の八イレゾモードは除く ) BGM/EX 、 G 「 aphic & Mouse/EX 、 Window & Menu/EX は XA 及び XL 、 XL2 、日 L の八イレゾモードにも対応 ◆ MS-DOS Ve 「 2 Ⅲ / 3.1 / 3.3 ◆対象 C コンバイラ Mic 「 osoft-C 4.0 / 5.1 Quick-C 2.0 Lattice-C 3 コ / 4.0 Tu 「 bO-C 2.0 お求め方法 ・お近くのパソコンソフト取扱店または弊社までこ注文ください。 ・こ注文の際に製品名、対象コンバイラ ( ヴァージョン ) 、メティアを指定してください。 CodeBase4 は C 言語から dBASEIII 、 dBASEIIIDlus 、 dBASEIV 、 C ⅱ P ロ e 「のファイル システムをアクセスするためのテータベースライプラリてす。これらのテータベース言語にコンバチプ ルな関数を用意しているので dBASE Ⅲ / ロ旧 s からの移植も簡単にてきます。 dBASEIV と比較して テータアクセスは 5 倍速く、ループではなんと 330 倍も速くなります。また、旧 M ー PC 版では専用ウイ ンドウ / メニュー関数も用意されているので、簡単にウィジュアルインターフェースを備えたプログラ ムの開発かできます。 ◆旧 M ー PC / AT および互換機用 / NEC PC ー 9800 シリーズ用はテータベースライブラリのみ使用可 ◆英文マニュアル / MS ー C 5.l/Tu 「 bO-C 1.5 以上 ■ Ptree & Symtab 定価 \ 69 ′ 800 Pt 「 ee & Symtab はコンノヾイラ、インタブリタ等の内部で使用される構文解析、シンボルテープル 操作に関する関数を提供するモジュールです。コンバイラ、インタブリタの作成、研究に大いに役に立 ちます。また、 IJN Ⅸのマクロプロセッサ m4 のスーバーセット版が付属しています。プログラムはす べての ANS ト C でコンバイルでき機種に依存していないので、 MS-DOS 、 IJN Ⅸ等 OS を選ばすに 動作します。 ◆英文マニュアル / ANS ト C DCCF, / 齢コンソ - ルコントロ - ルライプラリ fo 0 訂 N 定価 \ 79 , 8 MS - FO 日 T 日 AN ては提供されていないファンクションキー及び ANK 、漢字の入力、テキスト V 日 AM への直接文字表示、グラフィック、マウス、 MS - DOS のファンクションコール、 PC -9800 シリ ーズの OS コールインターフェースルーチン等 140 以上のサプルーチン / 関数で構成されています。こ のライプラリを利用することて計算に強いだけでなく、柔軟で優れたヒューマンインターフェースを備 えたアプリケーションを FO 日 T 日 AN で開発することかできます。 ・日本語入力 FEP のコントロール、カーソルコントロール、高速文字表示、指定領域の切取り / 貼り戻 し、表 / 裏画面の切り替え表示、全画面 / 部分スクロール、ファンクションキー表示のセープ / リス トア / 設定 / クリア、グラフィック、マウス、 MS-DOS/BIOS コール機能、その他ノヾイト、ワー ド単位のボート入出力、 PEEK 、 POKE 、シフト』 S / 』 S 双方向変換、テータ転送等。 ◆ MS-FORTRAN 4. X/NEC PC ー 98 シリーズ ( 八イレゾモードを除く ) ※各製品の提供メティアは、 5 ″ 2HD / 5 ″ 2D / 3.5 ″ 2H ロのいすれかです。 ※すべての表示価格には消費税は含まれておりません。 The FORTRAN Library クイック資 * 斗イ寸・サ・一・ピス ・いますぐ、資料をこ希望の方はお電話ください。 FAX で資料をお送りいたします。 株式会社ティッフス ・〒 1 11 東京都台東区蔵前 2 ー 8 ー 10 ・ PHONE 03 ー 866 ー 8635 ・ FAX 03 ー 866 ー 8637
五ロ く最終回〉 カード型簡易データベの設計 高橋良明 てみます。今後も実用的テータベース形成 今回は簡易テータベース作成編の最終回と のために必要なモジュールを作成していき して , 今まで作成したモジュールを組み合 わせた簡単なカード型テータベースを作っ ますので , いすれ発表したいと思います。 dbmg. c の main 関数 1 : 簡易データベース 管理用プログラム DBMG. C ver 1.00 1990 ー 01 月号 ver 1.10 1990 ー 02 月号 ver 1.20 1990 ー 06 月号 10 : / * 12 : 13 : #include く iO. h 〉 14 : #include く dos. h 〉 15 : #include く fcntl. h> 16 : #include く stdio. h> 17 : #include く string. h> 18 : #include く stdlib. h> 19 : #include く sys%types. h 〉 20 : #include く sysYstat. h> 22 : #define ORG 23 : #define REV 24 : #define UNDER 25 : #define B い NK 26 : 27 : #define RED 28 : #define BLUE 29 : #define PURPLE ” 19 ” 30 : #define GREEN ” 20 ” ” 21 ” 31 : #define YE し LOW ” 22 ” 32 : #define SKY 33 : #define WHITE ” 23 ” 34 : 35 : struct MNGTBL{ fname[l 幻 : / * ファイル名 * / 36 : Char / * レコード数 * / 37 : long int reccnt; / * レコード長 * / 38 : int recln; / * フィールド数 * / 39 : int fldcnt; flntbl[20] : / * フィールド長 * / 40 : int / * 削除マークオフセット 1990-02 * / delnark; int fldnam [ 20 ] [ 20 ] : / * 項目名 1990 ー 02 * / 42 : Char 43 : } : 44 : MNGTB し nng; 45 : struct 46 : fnane[20]={"a:db. nng"} : 47 : Char tnp-fnane[20] ={"a: dbtnp ・ $ $ $ \ 0 つ : 48 : Char dta[128] ; 49 : Char buf [ 1024 ] : 50 : char List 1 はしめに 今回は , 簡易データベースの作成のまと めということて、 , いままて作成してきたプ ログラムをまとめてリンクします。この修 正て、 , DBMG. C はカード型簡易データベー スになります。 リンクするために , 1 月号 , 2 月号て、作成 した簡易データベース管理プログラム DBMG. C のキーポード入力と画面表示部分 を修正します。 なお , crtsub. c に DBMG 用に任意の場所 に変数を表示する関数 ( pu し st 「 f ) を新設しま 、 0 DBMG. C の修正 printf 関数を put str または , put strf 関数 に変史します。 p 「 intf に変数を引き渡している場合には put st 「 f 関数を使用し , それ以外は put st 「関数 を使用します。 画面表示は , 表示開始位置を X 座標 ( 0 ~ 79 ) と Y 座標 ( 0 ~ 24 ) て指定します。画面 設計を行うのて、 p 「 intf を使用するよりも手間 がかかりますが , きめの細かい表示がてき 110 CMAGAZINE 19 6 ア フ ッ * 名ア出 名ルリ入 ルイエス ィアク一 アフ一べ フクワタ 管ワ闘デ
また , カラーデータベースも新しいものに ライプラリの最適化がされ , さらに多数 なり , 色の修正追加がされた。 のバグが修正された なお , サンプルサーバには , X11R3 から ・ユーザインタフェイスに影響を与えるい さらに , 標準のウインドウマネージャは , くつかのアプリケーション (xterm, の Sun, VAXstation, HP 9000 , Macintosh uwm から twm に変わった ( Fig. 2 ー a 参照 ) 。 などに加え , DECstation および Tektronix xman, twm ) が改良された uwm は , ほば完成されたウインドウマネ ・ Athena Widget(Xaw) が拡張され , 新しいい 4319 などがサポートされた。 ジャだったが , 今後は残念ながら contributed また , 過去のクライアントを動作させる くつかの widget が追加された に移されサポートされないようて、ある。 ために , bc オプションが用意されている。 ・新しいフォントが追加され , 固定幅 , 漢 また , xgc という GC ( グラフィックコンテ 字仮名などのフォントが増えた キスト ) の処理例を示すデモクライアントが クライアント ・ X コンソーシアムの標準規格のいくつかか 追加されている。 が定められ , その実装例が含められた フォント 新しいクライアントが追加され , ューザ ただし , X プロトコルおよび X ライプラリ インタフェイスの鍵になるいくっかのアプ には非互換を生ずる変更がないため , X11R3 リケーション (twm, xman, xterm) が改良 のクライアントはそのまま X11R4 環境に使 X11R3 の 100dpi , 75dpi フォント (Adobe と がされた新しいクライアントには , 以下の える。 Xt lntrinsics は , ソースレベルの互 DEC) から , さらに新しいフォントが増え ものがある。 換性が保たれている。 た。 Lucida ファミリのフォントセットは Bigelow&Holmes および Sun Microsys サンプレサーバ , •appres tems から , ターミナルエミュレータフォン ツールキットなど リソース情報を特定のアプリケーションの トは DEC から寄贈されたものて、ある。ほか ためにロードするクライアント にも , 固定幅 , 漢字仮名フォントや OPEN 以下に , X11R4 の大きな変更箇所を簡単 Mistres LOOK glyph フォントが追加された。 に解説しよう。 Widget のリソース情報の階層を表示するた ツールキット めのクライアント サンプレサーバ •oclock 丸い時計 ( Fig. 5 参照 ) 。非四角形ウインドウ Athena Widget(Xaw) は , 若十の変更が 提供されるサンプルサーバの機能は , あ の機能 ( SHAPE ) を使っている 加えられた。おもな変更は , 以下のとおり まり変更されていないが , カラーの扱いが ・ xauth て、ある。 大幅に高速化された。それにともない , DDX authority 情報ファイルを操作するためのク ・ X11R3 の contributed だった Menuwidget が含 層あたりは大幅に変更されたようだ。 ライアント められた。この SimpIeMenu および Menu しサーバのサイズは小さいものになった。 Button widget により , ポップアップおよび •xditview Adobe フォントを使う ditroff のプレビュア ポップダウンメニューが使える Fig. 5 oclock •xfontsel ・ Toggle widget は新しい種類のボタンを提 フォントを対話的に選ぶためのクライアン 供する ト ( Fig. 6 参照 ) 。論理フォント名 (XLFD) を ・ Label widget は複数行のラベルを提供でき 使っている るように , Command widget は SHAPE 拡張 •xlsatoms 機能により丸いボタンが提供できるよう さまざまな at 。 m の値を指定するためのクラ に拡張された イアント ・ X11R3 の vpaned widget は水平方向の枠が •xlsclients 可能になり , paned widget になった 現在動作中のクライアントを表示するため 計算機負荷値を示した Load widget は St のクライアント ripChart widget に , AsciiString と AsciiDisk •xstdcmap widget は AsciiText widget に含まれた 標準カラーマップを操作するためのクライ ただし , コンパイルオプションにより , 図 oclock 68 CMAGAZINE 19 6
窓 (Windows) に LANGUAGE 提携記事 よじ登る方法 ( 0bi09 U? 0 Windows Mark 6 vidson/ 訳 : 岩 - 宏 (COMPUTER LANGUAGE/Nov. 1989) LANGCIAGE を MP 4 第 ) MULTITASKING WINOOWS CVS 既ー囲 ・京麑物 ・みー、物をヨ第 ェイス (Graphical User lnterface, 以下 た ( それまて、は SYMDEB の特別バージョ lcrosoft 社製の GUI と略称する ) は , ソフトウェア開発者 ンを使わなければなりませんてした ) 。 梯子の自作キットを にとって , 新しい大きなチャレンジて、す。 これらのデバッガは第 2 のモニタ , また GUI アプリケーションはユーザにとって はシリアルポートに接続した端末装置を使 使うのはたいへんだ はやさしいかもしれませんが , プログラマ います。 じゃあグリースを塗った の負担を増し , 同時にハードウェアの性能 しかし , C をベースとする Windows 棒に登って Windows を限界ぎりぎりまて、酷使するものて、す。 SDK が満足な回答てはないことは , Mi DOS から , この最新流行の環境への冒険旅 に届くだろう力。 ? ? crosoft て、さえ認めています。 Microsoft は 行を試みたプログラマは , 、、 He Ⅱ 0 world ′′ そのほかの , OOP (Object Oriented Pro を表示するプログラムが 100 行にもなると 良質なソフトウェアの構築は , つねに重 gramming, オプジェクト指向プログラミ か , 奇怪な名前のシステムコールが山ほど 労働て、す。 1 , 000 にものばる多数の要素を考 ング ) 支持者たちとともに , Windows とい ある , といった土産話をもち帰ります。 慮に入れなければなりません。 う苦悩の解決にはオプジェクト指向プログ 疑間の余地なく , プログラマを支援する ヘルプ機能はどうしようか ? この関数 ラミングしかない , と声高に主張しつづけ ものが必要て、す。 Windows 上て開発をす を起動するためには , どのキーとどのキー てきました。それても現時点て同社は , る人のための Microsoft からの , 目下のと を押すようにしようか ? このインタフェ Windows 開発用の OOP 言語を提供して ころのひとつの回答は , Windows Soft イスは十分にわかりやすいだろうか ? 入 いません。 Windows アプリケーションの ware DeveIopment Kit (Windows ソフト カデバイスを何にしようか ? マウスとキ 実体が , メッセージハンドラ以外の何もの ウェア開発キット , SDK) を MS-C コンパ ーポードの両方をサポートすべきだろうか ? てもない , という意味て , Windows はまさ イラとともに使うことて、す。 Pascal や こういった数多くの問いが , プログラマ にオプジェクト指向の環境なのてすから , MASM など , Microsoft のほかの言語も の肩に重くのしかかってきます。 この点は不思議てす。ューザプログラムは Windows をサポートしていますが , Mi Open LOOk , Presentation Manager , Windows からのメッセージを受け取り , crosoft Windows SDK はもつばら C プ Windows , Macintosh などによる , 標準化 Windows のオプジェクト ( ウインドウ , ポ ログラマが対象てす。 SDK は C の環境に されたグラフィカルユーザインタフェイス タン , チェック , ポックスなど ) にメッセー Windows ライプラリ , リソースコンパイ によって , これらの問いの多くが解決され ジを送るのて、す。 ラ , ダイアローグ , フォント , およびアイ ています。開発者は個々のアプリケーショ Windows SDK に代わるものが登場し コン用のエデイタ , そして Windows の開 ンごとに新たな解を考案する必要がなく , てきました。その最初のものが , Actor とい 発用のヘッダファイルを加えます。 Win そしてユーザはどのプログラムても一定の う OOP 言語て , Whitewater Group の製 dows SDK の最新の版に Microsoft は , 方法て制御てきるようになります。いや , 品てす。 Actor は Windows 開発者を対象 CodeView の , Windows アプリケーショ 少なくとも理論上はそうてす。 としています。つまりそれは , Windows の ンをデバッグてきるバージョンを加えまし 実際には , グラフィカルューザインタフ 下て走り , Windows アプリケーションを 窓 (Windows) によじ登る方法 17
五ロ ニ : ロ はじめて学ぶ 0 プロクラー ニンク インタになっています。実引数は , 順に somed ay. int 型変数 a の値 , b の値 , int 型変数 tashi のア そして以下のように入力する。 ドレス , hiki のアドレスとなります ( & はア grp language < test ドレス取得演算子て、したね ) 。関数 ca て、 このとき , 次のような出力が得られればよ は , x, Y という値の和を第 3 引数が指すアド ポインタとデータの授受その 1 レスに , 差を第 4 引数が指すアドレスに , そ れぞれ代入しています。呼び出し側に戻っ てみると ,tashi や hiki のアドレスには計算結 果が入っていることになります。したがっ て和と差のふたつの値を得ることがてきま この関数 ca の第 1 , 2 引数のような関数間 のデータの受け渡し方法を「値による受け渡 し (call by value) 」 , 第 3, 4 引数のようなポ インタを使った受け渡しを「参照による受け 渡し (call bY reference) 」と呼びます。参照 による受け渡しはこのような複数のデータ を受け取るときに便利て、すが , 関数間の独 立性は低下します。 参照による受け渡しの一種てすが , 引数 として配列を用いる場合があります (List2 の。関数間て、配列を受け渡すときには , void sort(int x ロ ) のように , 引数が配列てあることを明示し ます。配列のサイズはすて、に決まっている のて、 , とくに記述する必要はありません ( 配 列のサイズを記述してもかまいません ) 。あ るいは 9 ー 2 て、お話したようにポインタにして アクセスしてもかまいません。そのときには , VOid sort(int *x) という宣言にします。呼び出す側ては , sort(a) : と引数に配列名を書くだけてよいわけてす。 この配列名が , 配列の先頭アドレスを指す 定数てあることはすてに説明しました。 今月のクイズ 「標準入力から入力し , 第一引数で与え た文字列がある行を , 標準出力するプログ ラム grp を書きなさい ( これは , UNIX の grep のサプレットもどきである ) 」 たとえば , test という名のファイルの中身 が , 以下のようだったとする。 This is the C Magazine. lt seems to be difficult for me. But I will master the C language l'm studying the C language. But I will master the C language someday. List 1 9 い st19 ポインタとデータの授受その 1 2 : 4 : #include く stdio. h> 5 : 6 : VOid calc(int x, int y, int *wa, int *sa) 8 : 9 : 10 : } 12 : void main(void) 13 : { int a, b, tashi, h i k i : = 100 : a b = 300 : calc(a, &tashi, &hiki); printf("%d + Xd = %dYn%d ー 20 : 21 : } h i k i ) : a, b, tashi, ポインタとデータの授受その 2 LiSt 20 2 : い st20 ポインタとデータの授受その 2 4 : #include く stdio. h> 5 : #define NUMBER 10 6 : 7 : VOid swap(int *x. int *y) 9 : int work; work; 16 : void sort(int x ロ ) for (i = 0 : i く NUMBER-I; i 十十 ) for(j i 十 1 : j く NUMBER; j + + ) 22 : 24 : } 26 : void nain(void) int a [NUMBER] : 28 : 29 : int i; 30 : for (i = 0 : i く NUMBER; i + + ) 32 : 33 : 34 : for (i = 0 : i く NUMBER,• i + + ) printf("Xd ” , a[i]); printf("%n") : sort (a) : for (i = 0 : i く NUMBER,• i + + ) 39 : printf("Xd ” , a[i]); printf("%n つ : 40 : 42 : } work はじめて学ぶ C プログラミング 137